{"version":3,"file":"static/js/main.a4b30255.js","mappings":"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,IAAIvqC,EACPpoB,EAAA4yD,eAAeC,MACf,EACA,IACA,IACA,EACA,EACAF,EACAA,GACA,GACR,IAAK,+BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeE,MACf,EACA,KACA,IACA,GACA,EACAH,EACA,iCACA,GACR,IAAK,gCACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeE,MACf,EACA,KACA,IACA,GACA,EACAH,EACAA,GACA,GACR,IAAK,kCACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeG,IACf,EACA,KACA,KACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,mCACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeG,IACf,EACA,KACA,MACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,kCACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeG,IACf,EACA,KACA,KACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,kCACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeG,IACf,EACA,KACA,KACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,kCACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeG,IACf,EACA,KACA,MACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,mCACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeG,IACf,EACA,KACA,MACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,gCACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeI,UACf,EACA,KACA,KACA,EACA,GACAL,EACAA,GACA,GAER,IAAK,2BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeK,IACf,EACA,IACA,KACA,EACA,GACAN,EACA,2BACA,GACR,IAAK,4BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeK,IACf,EACA,KACA,KACA,EACA,GACAN,EACA,4BACA,GACR,IAAK,4BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeC,MACf,EACA,IACA,IACA,EACA,EACAF,EACA,4BACA,GACR,IAAK,2BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeK,IACf,EACA,KACA,KACA,EACA,GACAN,EACA,4BACA,GACR,IAAK,2BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeK,IACf,EACA,KACA,KACA,EACA,GACAN,EACA,4BACA,GACR,IAAK,0BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeK,IACf,EACA,IACA,KACA,EACA,GACAN,EACA,2BACA,GACR,IAAK,4BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeM,SACf,EACA,KACA,KACA,EACA,GACAP,EACAA,GACA,GACR,IAAK,4BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeM,SACf,EACA,KACA,KACA,EACA,GACAP,EACAA,GACA,GACR,IAAK,2BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeK,IACf,EACA,KACA,KACA,EACA,GACAN,EACA,4BACA,GACR,IAAK,4BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeK,IACf,EACA,KACA,KACA,EACA,GACAN,EACA,4BACA,GACR,IAAK,kCACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeG,IACf,EACA,KACA,MACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,mCACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeG,IACf,EACA,KACA,MACA,EACA,GACAJ,EACAA,GACA,GACR,IAAK,4BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeM,SACf,EACA,KACA,KACA,EACA,GACAP,EACAA,GACA,GACR,IAAK,6BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeO,UACf,EACA,KACA,IACA,EACA,GACAR,EACAA,GACA,GACR,IAAK,6BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeO,UACf,EACA,KACA,IACA,EACA,GACAR,EACAA,GACA,GACR,IAAK,oCACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeO,UACf,EACA,KACA,IACA,EACA,GACAR,EACAA,GACA,GACR,IAAK,qCACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeQ,KACf,EACA,KACA,IACA,EACA,GACAT,EACAA,GACA,GACR,IAAK,qCACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeQ,KACf,EACA,KACA,IACA,EACA,GACAT,EACAA,GACA,GACR,IAAK,qCACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeQ,KACf,EACA,KACA,IACA,EACA,GACAT,EACAA,GACA,GACR,IAAK,8BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeS,KACf,EACA,KACA,KACA,EACA,GACAV,EACAA,GACA,GACR,IAAK,8BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeS,KACf,EACA,KACA,IACA,EACA,GACAV,EACAA,GACA,GACR,IAAK,gCACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeI,UACf,EACA,KACA,KACA,EACA,GACAL,EACAA,GACA,GACR,IAAK,0BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeU,KACf,EACA,IACA,IACA,EACA,EACAX,EACAA,GACA,GACR,IAAK,2BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeU,KACf,EACA,IACA,IACA,EACA,EACAX,EACA,2BACA,GACR,IAAK,6BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeK,IACf,EACA,MACA,MACA,EACA,GACAN,EACAA,GACA,GACR,IAAK,8BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeK,IACf,EACA,MACA,MACA,EACA,GACAN,EACA,8BACA,GACR,IAAK,6BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeK,IACf,EACA,MACA,MACA,EACA,GACAN,EACAA,GACA,GACR,IAAK,8BACD,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeK,IACf,EACA,MACA,MACA,EACA,GACAN,EACA,8BACA,GAER,QACI,OAAO,IAAIvqC,EACPpoB,EAAA4yD,eAAeK,IACf,EACA,KACA,KACA,EACA,GACA,4BACA,4BACA,GAEhB,EAEc7qC,EAAAmC,uBAAd,WACI,OAAOnC,EAAsBC,sCACN,qBAAXpzE,OAA0B,kCAAoC,4BAC9E,EAgBAzE,OAAAgsB,eAAW4rD,EAAA33E,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKs8G,YAChB,kCAQA/hH,OAAAgsB,eAAW4rD,EAAA33E,UAAA,SAAM,KAAjB,WACI,GAAIwF,KAAKysF,UACL,OAAOzsF,KAAKs9G,UAGpB,kCASOnrC,EAAA33E,UAAAkyF,aAAP,SAAoBwpB,GAChB,GAAIl2G,KAAKs8G,aAAc,CACnB,IAAMpvD,EAAO,IAAIC,SAASntD,KAAKs9G,YAC/BpwD,EAAKqwD,UAAU,EAAGrH,EAAcl2G,KAAKs9G,WAAWlvD,WAAa,GAAG,GAChElB,EAAKqwD,UAAU,GAAIrH,GAAa,GAExC,EAQA37G,OAAAgsB,eAAW4rD,EAAA33E,UAAA,2BAAwB,KAAnC,WACI,OAAOwF,KAAKq8G,2BAChB,kCArkBclqC,EAAAsqC,sCAAmCriE,EAAA,IAC5C4hE,EAAAwB,4BAA4BC,sBAAuB,2BACpDrjE,EAAC4hE,EAAAwB,4BAA4BE,0BAA2B,+BACxDtjE,EAAC4hE,EAAAwB,4BAA4BG,2BAA4B,gCACzDvjE,EAAC4hE,EAAAwB,4BAA4BI,6BAA8B,kCAC3DxjE,EAAC4hE,EAAAwB,4BAA4BK,8BAA+B,mCAC5DzjE,EAAC4hE,EAAAwB,4BAA4BM,6BAA8B,kCAC3D1jE,EAAC4hE,EAAAwB,4BAA4BO,6BAA8B,kCAC3D3jE,EAAC4hE,EAAAwB,4BAA4BQ,6BAA8B,kCAC3D5jE,EAAC4hE,EAAAwB,4BAA4BS,8BAA+B,mCAC5D7jE,EAAC4hE,EAAAwB,4BAA4BU,2BAA4B,gCACzD9jE,EAAC4hE,EAAAwB,4BAA4BW,uBAAwB,4BACrD/jE,EAAC4hE,EAAAwB,4BAA4BY,sBAAuB,2BACpDhkE,EAAC4hE,EAAAwB,4BAA4Ba,uBAAwB,4BACrDjkE,EAAC4hE,EAAAwB,4BAA4Bc,uBAAwB,4BACrDlkE,EAAC4hE,EAAAwB,4BAA4Be,sBAAuB,2BACpDnkE,EAAC4hE,EAAAwB,4BAA4BgB,sBAAuB,2BACpDpkE,EAAC4hE,EAAAwB,4BAA4BiB,qBAAsB,0BACnDrkE,EAAC4hE,EAAAwB,4BAA4BkB,uBAAwB,4BACrDtkE,EAAC4hE,EAAAwB,4BAA4BmB,uBAAwB,4BACrDvkE,EAAC4hE,EAAAwB,4BAA4BoB,sBAAuB,2BACpDxkE,EAAC4hE,EAAAwB,4BAA4BqB,uBAAwB,4BACrDzkE,EAAC4hE,EAAAwB,4BAA4BsB,6BAA8B,kCAC3D1kE,EAAC4hE,EAAAwB,4BAA4BuB,8BAA+B,mCAC5D3kE,EAAC4hE,EAAAwB,4BAA4BwB,uBAAwB,4BACrD5kE,EAAC4hE,EAAAwB,4BAA4ByB,wBAAyB,6BACtD7kE,EAAC4hE,EAAAwB,4BAA4B0B,wBAAyB,6BACtD9kE,EAAC4hE,EAAAwB,4BAA4B2B,8BAA+B,oCAC5D/kE,EAAC4hE,EAAAwB,4BAA4B4B,2BAA4B,gCACzDhlE,EAAC4hE,EAAAwB,4BAA4B6B,qBAAsB,0BACnDjlE,EAAC4hE,EAAAwB,4BAA4B8B,sBAAuB,2BACpDllE,EAAC4hE,EAAAwB,4BAA4B+B,+BAAgC,qCAC7DnlE,EAAC4hE,EAAAwB,4BAA4BgC,+BAAgC,qCAC7DplE,EAAC4hE,EAAAwB,4BAA4BiC,+BAAgC,qCAC7DrlE,EAAC4hE,EAAAwB,4BAA4BkC,wBAAyB,6BACtDtlE,EAAC4hE,EAAAwB,4BAA4BmC,yBAA0B,8BACvDvlE,EAAC4hE,EAAAwB,4BAA4BoC,wBAAyB,6BACtDxlE,EAAC4hE,EAAAwB,4BAA4BqC,yBAA0B,8BAA6B,GAkiB5F1tC,EAxkBA,CAA2CpoB,EAAA6H,uBAA9Bv4D,EAAAA,sBAAA84E,47DCRb,IAAAjqB,EAAAzlC,EAAA,MAMAkmC,EAAAlmC,EAAA,OAKA0mD,EAAA1mD,EAAA,KAMA2xD,EAAA,WAMI,SAAAA,IAEA,CA2BJ,OAXkBA,EAAAC,iBAAd,WACI,OAAO4lC,EAAsB/sG,QACjC,EASJknE,CAAA,CAnCA,GAAsB/6E,EAAAA,kBAAA+6E,EAyCtB,IAAA6lC,EAAA,SAAAn0F,GAAA,SAAAm0F,kDA8BA,QA9BoDp2C,EAAAo2C,EAAAn0F,GASlCm0F,EAAA/sG,OAAd,WACI,OAAO,IAAIimF,CACf,EAmBJ8mB,CAAA,CA9BA,CAAoD7lC,GAA9B/6E,EAAAA,sBAAA4gH,EAqCtB,IAAA9mB,EAAA,SAAArtE,GAUI,SAAAqtE,IAAA,IAAAphF,EACI+T,EAAAprB,KAAA,OAAO,YACPqX,EAAKs4C,OAASnC,EAAAoC,mBACdv4C,EAAKqpG,WAAa,IAAIlzD,EAAAgkD,QAC1B,CA4GJ,OA1H+CroC,EAAAsvB,EAAArtE,GAoB3CvrB,OAAAgsB,eAAW4sE,EAAA34F,UAAA,SAAM,KAUjB,WACI,OAAOwF,KAAKm7G,UAChB,MAZA,SAAkB1qE,QACCn0C,IAAXm0C,GAAmC,OAAXA,IACxBzwC,KAAKm7G,WAAahyC,EAAAgJ,sBAAsBmC,0BAE5Ct0E,KAAKm7G,WAAa1qE,CACtB,kCAeAl2C,OAAAgsB,eAAW4sE,EAAA34F,UAAA,WAAQ,KAAnB,WACI,OAAOwF,KAAKo7G,WAAWnvD,QAC3B,kCAQOknC,EAAA34F,UAAAuR,GAAP,WACI,OAAO/L,KAAKqqD,MAChB,EAUa8oC,EAAA34F,UAAAuxD,KAAb,SAAkBsvD,yGAId,GAHMyE,EAAqB,IAAI/U,UAAUsQ,GACrCQ,EAAqB,OAEMv/G,IAA3B0D,KAAK+/G,kBAAiC,CACtC,GAAI//G,KAAK+/G,kBAAkBhmH,OAASshH,EAAWjtD,WAG3C,OAFA0xD,EAAQjtF,IAAI7yB,KAAK+/G,kBAAkB77G,MAAM,EAAGm3G,EAAWjtD,aACvDpuD,KAAK+/G,kBAAoB//G,KAAK+/G,kBAAkB77G,MAAMm3G,EAAWjtD,YAC1D,CAAP,EAAO/tC,QAAQC,QAAQ+6F,EAAWjtD,aAEtC0xD,EAAQjtF,IAAI7yB,KAAK+/G,mBACjBlE,EAAa77G,KAAK+/G,kBAAkBhmH,OACpCiG,KAAK+/G,uBAAoBzjH,0BAItBu/G,EAAaR,EAAWjtD,aAAepuD,KAAKo7G,WAAW4E,YACjB,GAAMhgH,KAAKo7G,WAAWrvD,QADM,yBAEvDzvD,KADRmyD,EAAmCrU,EAAApyB,SACbymC,EAAMI,MAW9B7uD,KAAKo7G,WAAWxvD,aAVZq0D,OAAS,EACTxxD,EAAMzoC,OAAOooC,WAAaitD,EAAWjtD,WAAaytD,GAClDoE,EAAYxxD,EAAMzoC,OAAO9hB,MAAM,EAAGm3G,EAAWjtD,WAAaytD,GAC1D77G,KAAK+/G,kBAAoB,IAAIhV,UAAUt8C,EAAMzoC,OAAO9hB,MAAMm3G,EAAWjtD,WAAaytD,KAElFoE,EAAYxxD,EAAMzoC,OAEtB85F,EAAQjtF,IAAI,IAAIk4E,UAAUkV,GAAYpE,GACtCA,GAAcoE,EAAU7xD,yBAKhC,MAAO,CAAP,EAAOytD,WAUJ1oB,EAAA34F,UAAAggC,MAAP,SAAa6gF,GACT1yD,EAAAO,UAAUC,uBAAuBnpD,KAAKo7G,WAAY,kCAClDp7G,KAAKo7G,WAAWxsD,iBAAiB,CAC7B5oC,OAAQq1F,EACRxsD,OAAO,EACPC,aAAc/uD,KAAKwX,OAE3B,EAQO47E,EAAA34F,UAAAigC,MAAP,WACIz6B,KAAKo7G,WAAW3gF,OACpB,EACJ04D,CAAA,CA1HA,CAA+C8mB,GAAlC5gH,EAAAA,0BAAA85F,EAgIb,IAAA6mB,EAAA,SAAAl0F,GAKI,SAAAk0F,WACIl0F,EAAAprB,KAAA,OAAO,IACX,CAwBJ,OA/BoDmpE,EAAAm2C,EAAAl0F,GAmBlCk0F,EAAA9sG,OAAd,SAAqB+yC,GACjB,OAAO,IAAI85D,EAA0B95D,EACzC,EAUJ+5D,CAAA,CA/BA,CAAoD5lC,GAA9B/6E,EAAAA,sBAAA2gH,EAsCtB,IAAAD,EAAA,SAAAj0F,GAWI,SAAAi0F,EAAmB95D,GAAnB,IAAAluC,EACI+T,EAAAprB,KAAA,OAAO,YACPqX,EAAKs4C,OAASnC,EAAAoC,mBACdv4C,EAAK0pG,aAAex7D,GACxB,CAoBJ,OAnC+C4jB,EAAAk2C,EAAAj0F,GAkB3CvrB,OAAAgsB,eAAWwzF,EAAAv/G,UAAA,SAAM,KAAjB,SAAkBi2C,GAA6B,kCAExCspE,EAAAv/G,UAAAggC,MAAP,SAAaxU,GACHhmB,KAAKy7G,aAAajhF,OACpBx6B,KAAKy7G,aAAajhF,MAAMxU,EAEhC,EAEO+zF,EAAAv/G,UAAAigC,MAAP,WACUz6B,KAAKy7G,aAAahhF,OACpBz6B,KAAKy7G,aAAahhF,OAE1B,EAEOs/E,EAAAv/G,UAAAuR,GAAP,WACI,OAAO/L,KAAKqqD,MAChB,EACJ0vD,CAAA,CAnCA,CAA+CC,GAAlC3gH,EAAAA,0BAAA0gH,uCCtQD4C,ydAAZ,SAAYA,GACRA,EAAAA,EAAA,aACAA,EAAAA,EAAA,iBACAA,EAAAA,EAAA,iBACAA,EAAAA,EAAA,aACAA,EAAAA,EAAA,yBACAA,EAAAA,EAAA,uBACAA,EAAAA,EAAA,yBACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,eACAA,EAAAA,EAAA,eACH,CAXD,CAAYA,EAAAtjH,EAAAsjH,iBAAAtjH,EAAAA,eAAc,KAiB1B,IAAAy0D,EAAA,oBAAAA,IAmDA,QA1CkBA,EAAAmE,sBAAd,WACI,OAAOL,EAAsBK,uBACjC,EAccnE,EAAAoyD,cAAd,SAA4BC,EAA0B/zD,EAAuBE,EAAkB7b,GAC3F,OAAO,IAAImhB,EAAsBuuD,EAAkB/zD,EAAeE,EAAU7b,EAChF,EAacqd,EAAAC,iBAAd,SAA+BoyD,EAA0B/zD,EAAuBE,GAC5E,OAAO,IAAIsF,EAAsBuuD,EAAkB/zD,EAAeE,EACtE,EASJwB,CAAA,CAnDA,GAAsBz0D,EAAAA,kBAAAy0D,EAyDtB,IAAA8D,EAAA,SAAA9rC,GAWI,SAAA8rC,EAAmBhF,EAA+BR,EAA4BE,EAAsB7b,QAAjF,IAAAmc,IAAAA,EAAA,WAA+B,IAAAR,IAAAA,EAAA,SAA4B,IAAAE,IAAAA,EAAA,QAAsB,IAAA7b,IAAAA,EAAyBksE,EAAeK,KAA5I,IAAAjrG,EACI+T,EAAAprB,KAAA,OAAO,KAEH0lH,GAAuB,EAE3B,OAAQ3vE,GACJ,KAAKksE,EAAeK,IAChBjrG,EAAKkqG,UAAY,EACjB,MACJ,KAAKU,EAAeU,KAChBtrG,EAAKkqG,UAAY,EACjB,MACJ,KAAKU,EAAeC,MAChB7qG,EAAKkqG,UAAY,EACjB,MACJ,QACImE,GAAc,EAQtB,GANAruG,EAAKq6C,cAAgBA,EACrBr6C,EAAK66C,cAAgBA,EACrB76C,EAAKu6C,SAAWA,EAChBv6C,EAAKy8C,eAAiBz8C,EAAK66C,cAAgB76C,EAAKu6C,UAAYv6C,EAAKq6C,cAAgB,GACjFr6C,EAAKmqG,WAAanqG,EAAKu6C,SAAWh8C,KAAKjV,IAAI0W,EAAKq6C,cAAe,GAE3Dg0D,EAAa,CACbruG,EAAKurG,WAAa,IAAIt4F,YAAY,IAGlC,IAAMkoC,EAAO,IAAIC,SAASp7C,EAAKurG,YAG/BvrG,EAAKqkG,UAAUlpD,EAAM,EAAG,QAExBA,EAAKqwD,UAAU,EAAG,GAAG,GAErBxrG,EAAKqkG,UAAUlpD,EAAM,EAAG,YAExBA,EAAKqwD,UAAU,GAAI,IAAI,GAEvBrwD,EAAKmzD,UAAU,GAAItuG,EAAKkqG,WAAW,GAEnC/uD,EAAKmzD,UAAU,GAAItuG,EAAKu6C,UAAU,GAElCY,EAAKqwD,UAAU,GAAIxrG,EAAK66C,eAAe,GAEvCM,EAAKqwD,UAAU,GAAIxrG,EAAKy8C,gBAAgB,GAExCtB,EAAKmzD,UAAU,GAAItuG,EAAKu6C,UAAYv6C,EAAKq6C,cAAgB,IAAI,GAE7Dc,EAAKmzD,UAAU,GAAItuG,EAAKq6C,eAAe,GAEvCr6C,EAAKqkG,UAAUlpD,EAAM,GAAI,QAEzBA,EAAKqwD,UAAU,GAAI,GAAG,WAE9B,CA2GJ,OA7K2C15C,EAAAjS,EAAA9rC,GA2EzB8rC,EAAAK,sBAAd,WACI,OAAO,IAAIL,CACf,EAUcA,EAAAC,gBAAd,SAA8BlE,GAE1B,IAAM2yD,EAAgBthH,OAAeshH,cAC7BthH,OAAeuhH,qBAChB,EAGP,GAAMD,EACF,YAAmBhkH,IAAfqxD,GAA4B99C,UAAUogD,aAAauwD,0BAA0B7yD,WACtE,IAAI2yD,EAAa,CAAE3yD,WAAUA,IAE7B,IAAI2yD,EAGf,MAAM,IAAIj9G,MAAM,0EAExB,EASOuuD,EAAAp3D,UAAAigC,MAAP,WAEA,EAkDAlgC,OAAAgsB,eAAWqrC,EAAAp3D,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKs9G,UAChB,kCAEU1rD,EAAAp3D,UAAA47G,UAAV,SAAoBlpD,EAAgB/jB,EAAgBroC,GAChD,IAAK,IAAIjH,EAAI,EAAGA,EAAIiH,EAAI/G,OAAQF,IAC5BqzD,EAAKm+C,SAASliE,EAAStvC,EAAGiH,EAAIujB,WAAWxqB,GAEjD,EACJ+3D,CAAA,CA7KA,CAA2C9D,GAA9Bz0D,EAAAA,sBAAAu4D,g/CC3Eb,IAAA8iB,EAAAjyD,EAAA,OACAylC,EAAAzlC,EAAA,MACAsnC,EAAAtnC,EAAA,MAQAg+F,EAAA,WAcI,SAAAA,EAAmBzsC,GAZX,KAAA0sC,aAA6B,KAC7B,KAAAC,SAAqB,KAErB,KAAAC,sBAA6B,OAUbtkH,IAAhB03E,IACAA,EAAc9rB,EAAA4F,kBAAkBmE,yBAEpCjyD,KAAK6gH,KAAK7sC,EACd,CA4IJ,OAtIWysC,EAAAjmH,UAAAsmH,gBAAP,SAAuBC,EAA2BzyG,EAAiBjI,GAC/D,IACIrG,KAAKghH,2BACL,IAAMC,EAAYjhH,KAAKkhH,gBAAgBH,GACjCI,EAAiB,IAAIvK,aAAa52G,KAAKohH,QAAQrnH,OAASknH,EAAUlnH,QACxEonH,EAAetuF,IAAI7yB,KAAKohH,QAAS,GACjCD,EAAetuF,IAAIouF,EAAWjhH,KAAKohH,QAAQrnH,QAC3CiG,KAAKohH,QAAUD,EACT7yG,GACFA,IAEN,MAAO3J,GACC0B,GACFA,EAAI1B,GAGhB,EAKO87G,EAAAjmH,UAAA6mH,UAAP,SAAiB/yG,EAAiBjI,GACJ,OAAtBrG,KAAK0gH,eACL1gH,KAAKohH,QAAU,IAAIxK,aAEnB0K,cAActhH,KAAK4gH,uBACnB5gH,KAAK0gH,aAAajmF,QAAQ3rB,MAAK,WACrBR,GACFA,GAER,IAAG,SAACxL,GACMuD,GACFA,EAAIvD,EAEZ,IACA9C,KAAK0gH,aAAe,KAE5B,EAEQD,EAAAjmH,UAAAqmH,KAAR,SAAa7sC,GACTh0E,KAAKg0E,YAAcA,EACnBh0E,KAAKohH,QAAU,IAAIxK,YACvB,EAEQ6J,EAAAjmH,UAAAwmH,yBAAR,eAAAjvG,EAAA,KACI,GAA0B,OAAtB/R,KAAK0gH,aAAuB,CAC5B1gH,KAAK2vD,qBAEL3vD,KAAK4gH,sBAAwBW,aAAY,WACrCxvG,EAAKyvG,mBACT,GAHoB,KAK5B,EAEQf,EAAAjmH,UAAAm1D,mBAAR,WAEI3vD,KAAK0gH,aAAe32D,EAAA6H,sBAAsBC,kBAI1C7xD,KAAK2gH,SAAW3gH,KAAK0gH,aAAae,aAClCzhH,KAAK2gH,SAASe,KAAKnmH,MAAQ,EAC3ByE,KAAK2gH,SAASvtD,QAAQpzD,KAAK0gH,aAAartD,aACxCrzD,KAAKyxG,UAAYzxG,KAAK0gH,aAAaiB,WACvC,EAEQlB,EAAAjmH,UAAA0mH,gBAAR,SAAwBD,GACpB,OAAQjhH,KAAKg0E,YAAY5nB,eACrB,KAAK,EACD,OAAOpsD,KAAK4hH,kBAAkB,IAAI7W,UAAUkW,GAAY,KAC5D,KAAK,GACD,OAAOjhH,KAAK4hH,kBAAkB,IAAIC,WAAWZ,GAAY,OAC7D,KAAK,GACD,OAAOjhH,KAAK4hH,kBAAkB,IAAIE,WAAWb,GAAY,YAC7D,QACI,MAAM,IAAIvsC,EAAAG,sBAAsB,oEAE5C,EAEQ4rC,EAAAjmH,UAAAonH,kBAAR,SAA0BX,EAAgCc,GAEtD,IADA,IAAMC,EAAc,IAAIpL,aAAaqK,EAAUlnH,QACtCF,EAAI,EAAGA,EAAIonH,EAAUlnH,OAAQF,IAClCmoH,EAAYnoH,GAAKonH,EAAUpnH,GAAKkoH,EAEpC,OAAOC,CACX,EAEQvB,EAAAjmH,UAAAgnH,kBAAR,WACI,GAA4B,IAAxBxhH,KAAKohH,QAAQrnH,OAAjB,CAUA,IANA,IAAM0zD,EAAeztD,KAAKg0E,YAAY1nB,SAChC21D,EAAejiH,KAAK0gH,aAAawB,qBACjCC,EAAaniH,KAAKohH,QAAQrnH,OAAS0zD,EACnCoiC,EAAc7vF,KAAK0gH,aAAa0B,aAAa30D,EAAc00D,EAAYniH,KAAKg0E,YAAYpnB,eAGrFzsB,EAAU,EAAGA,EAAUstB,EAActtB,IAI1C,IAFA,IAAIkiF,EAAgBliF,EACd8gF,EAAYpxB,EAAY38B,eAAe/yB,GACpCtmC,EAAI,EAAGA,EAAImG,KAAKohH,QAAQrnH,OAAQF,IAAKwoH,GAAiB50D,EAC3DwzD,EAAUpnH,GAAKmG,KAAKohH,QAAQiB,GAIhCriH,KAAKyxG,UAAYzxG,KAAK0gH,aAAaiB,cACnC3hH,KAAKyxG,UAAYzxG,KAAK0gH,aAAaiB,aAGvCM,EAAaj8F,OAAS6pE,EACtBoyB,EAAa7uD,QAAQpzD,KAAK2gH,UAC1BsB,EAAavmG,MAAM1b,KAAKyxG,WAGxBzxG,KAAKyxG,WAAa5hB,EAAYr4E,SAG9BxX,KAAKohH,QAAU,IAAIxK,aACvB,EAEc6J,EAAAjmH,UAAA8nH,UAAd,SAAwBrB,qGAMpB,OAL0B,OAAtBjhH,KAAK0gH,cACL1gH,KAAK2vD,qBAEH9wD,EAAgCmB,KAAK0gH,aAAawB,qBAClD7uD,EAAoCrzD,KAAK0gH,aAAartD,YAC5D,GAAMrzD,KAAK0gH,aAAa6B,gBAAgBtB,GAAW,SAACuB,GAChD3jH,EAAOmnB,OAASw8F,EAChB3jH,EAAOu0D,QAAQC,GACfx0D,EAAO6c,MAAM,EACjB,mBAJA0+B,EAAApyB,mBAMRy4F,CAAA,CA/JA,GAAapnH,EAAAA,gBAAAonH,yHCNb,IAAAvH,EAAA,WAoBA,EApBsB7/G,EAAAA,6BAAA6/G,4HCAtB,IAAAY,EAAA,WAkBA,EAlBsBzgH,EAAAA,8BAAAygH,0/CCJtB,IAAA5xD,EAAAzlC,EAAA,OACAqnC,EAAArnC,EAAA,MASA+wD,EAAA/wD,EAAA,OACAsnC,EAAAtnC,EAAA,MAIMggG,IAAqBroE,EAAA,IACtB2P,EAAA4yD,eAAeK,KAAM,YACtB5iE,EAAC2P,EAAA4yD,eAAeC,OAAQ,cACxBxiE,EAAC2P,EAAA4yD,eAAeG,KAAM,aACtB1iE,EAAC2P,EAAA4yD,eAAeM,UAAW,YAC3B7iE,EAAC2P,EAAA4yD,eAAeO,WAAY,0BAC5B9iE,EAAC2P,EAAA4yD,eAAeU,MAAO,cACvBjjE,EAAC2P,EAAA4yD,eAAeS,MAAO,aAAY,GAUvC5D,EAAA,WAeI,SAAAA,EAAmBkJ,GATX,KAAAC,qBAA+B,EAE/B,KAAAC,uBAAiC,EACjC,KAAAC,uBAAiC,EAIjC,KAAAxwB,kBAA4B,EAGhCryF,KAAKqqD,OAASq4D,GAA0C54D,EAAAQ,mBACxDtqD,KAAK8iH,cAAe,EACpB9iH,KAAK07G,cAAe,CACxB,CA4OJ,OA1OWlC,EAAAh/G,UAAAuR,GAAP,WACI,OAAO/L,KAAKqqD,MAChB,EAEOmvD,EAAAh/G,UAAAggC,MAAP,SAAaxU,EAAqB1X,EAAiBjI,QAClB/J,IAAzB0D,KAAK+iH,iBACL/iH,KAAK+iH,gBAAgB7nH,KAAK8qB,GAC1BhmB,KAAKgjH,qBAAqBl0G,MAAK,WACrBR,GACFA,GAER,IAAG,SAACxL,GACMuD,GACFA,EAAIvD,EAEZ,UACsCxG,IAA/B0D,KAAKkzF,wBACZlzF,KAAKkzF,sBAAsB14D,MAAMxU,GACjChmB,KAAKqyF,mBAAqBrsE,EAAOooC,WAEzC,EAEOorD,EAAAh/G,UAAAigC,MAAP,SAAansB,EAAiBjI,GAA9B,IAAA0L,EAAA,KAEI,GADA/R,KAAK07G,cAAe,OACUp/G,IAA1B0D,KAAKijH,iBACLjjH,KAAKkjH,8BAA8Bp0G,MAAK,WAC9BR,GACFA,GAER,IAAG,SAACxL,GACMuD,GACFA,EAAIvD,EAEZ,SACG,QAAmCxG,IAA/B0D,KAAKkzF,uBAAyD,qBAAXl0F,OAC1D,GAAKgB,KAAKm7G,WAAWc,YAAclyD,EAAA4yD,eAAeK,KAAOh9G,KAAKm7G,WAAWc,YAAclyD,EAAA4yD,eAAeC,OAC/F58G,KAAKm7G,WAAWc,YAAclyD,EAAA4yD,eAAeU,OAAuC,IAA9Br9G,KAAKm7G,WAAW1uB,UAMtE,CACH,IAAI02B,EAAgB,IAAIn+F,YAAYhlB,KAAKqyF,mBACzCryF,KAAKkzF,sBAAsBnnC,KAAKo3D,GAAer0G,MAAK,WAChDq0G,EAAgBj7D,EAAAqjC,qBAAqBiB,UAAU22B,EAAepxG,EAAKopG,YACnE,IAAMiI,EAAY,IAAI14D,KAAK,CAACy4D,GAAgB,CAAEtjH,KAAM4iH,EAAsB1wG,EAAKopG,WAAWc,aAC1FlqG,EAAKsxG,UAAUjoF,IAAMp8B,OAAOyoB,IAAIksC,gBAAgByvD,GAChDrxG,EAAKuxG,iBAAiBx0G,MAAK,WACjBR,GACFA,GAER,IAAG,SAACxL,GACMuD,GACFA,EAAIvD,EAEZ,GACJ,IAAG,SAACA,GACMuD,GACFA,EAAIvD,EAEZ,SAvBA1D,QAAQ8O,KAAK,gFACPlO,KAAKujH,YACPvjH,KAAKujH,WAAWvjH,WAyBlBA,KAAKujH,YACPvjH,KAAKujH,WAAWvjH,KAG5B,EAEAzF,OAAAgsB,eAAWizF,EAAAh/G,UAAA,SAAM,KAAjB,SAAkBi2C,GAAlB,IAAA1+B,EAAA,KAEI,GAA8B,qBAAlBuuG,cAAsD,qBAAZthH,QAA2E,qBAAvCA,OAAeuhH,mBAAsC,CAC3IvgH,KAAKm7G,WAAa1qE,EAClB,IAAM+yE,EAAmBf,EAAsBziH,KAAKm7G,WAAWc,gBAC9C3/G,IAAbknH,EAEApkH,QAAQ8O,KACJ,+BAA+B67C,EAAA4yD,eAAe38G,KAAKm7G,WAAWc,WAAU,gCAE5C,qBAAjBwH,aAAgCA,YAAYC,gBAAgBF,IAC3ExjH,KAAKqjH,UAAY,IAAIM,MACrB3jH,KAAK+iH,gBAAkB,GACvB/iH,KAAK4jH,gBAAkB,IAAIH,YAC3BzjH,KAAKqjH,UAAUjoF,IAAM3T,IAAIksC,gBAAgB3zD,KAAK4jH,iBAC9C5jH,KAAKqjH,UAAU/kH,OACf0B,KAAK4jH,gBAAgBC,aAAe,WAChC9xG,EAAK8wG,uBAAwB,EAC7B9wG,EAAK6xG,gBAAgBpsG,SAjID,KAkIpBzF,EAAKkxG,iBAAmBlxG,EAAK6xG,gBAAgBE,gBAAgBN,GAC7DzxG,EAAKkxG,iBAAiBc,SAAW,WAC7BhyG,EAAKixG,qBAAqB3yD,OAAM,SAACriD,GAC7B87C,EAAA3B,OAAOC,SAASkB,QAAQ,IAAIQ,EAAAgT,gBAAgB9uD,GAChD,GACJ,EACA+D,EAAKkxG,iBAAiBe,YAAc,WAChCjyG,EAAKmxG,8BAA8B7yD,OAAM,SAACriD,GACtC87C,EAAA3B,OAAOC,SAASkB,QAAQ,IAAIQ,EAAAgT,gBAAgB9uD,GAChD,GACJ,EACA+D,EAAKkxG,iBAAiBgB,cAAgB,WAClClyG,EAAK6wG,uBAAwB,CACjC,CACJ,EACA5iH,KAAKgjH,qBAAqB3yD,OAAM,SAACriD,GAC7B87C,EAAA3B,OAAOC,SAASkB,QAAQ,IAAIQ,EAAAgT,gBAAgB9uD,GAChD,MAIA5O,QAAQ8O,KACJ,UAAU67C,EAAA4yD,eAAe38G,KAAKm7G,WAAWc,WAAU,mEACvDj8G,KAAKkzF,sBAAwB,IAAI1f,EAAA2f,0BACjCnzF,KAAKkzF,sBAAsBziD,OAASzwC,KAAKm7G,WACzCn7G,KAAKqjH,UAAY,IAAIM,OAGjC,kCAEAppH,OAAAgsB,eAAWizF,EAAAh/G,UAAA,SAAM,KAAjB,mBACI,OAA6B,QAA7BggD,EAAqB,QAArBJ,EAAOp6C,KAAKqjH,iBAAS,IAAAjpE,OAAA,EAAAA,EAAE8pE,cAAM,IAAA1pE,EAAAA,GAAK,CACtC,MAEA,SAAkB0pE,GACRlkH,KAAKqjH,YACPrjH,KAAKqjH,UAAUa,OAASA,EAEhC,kCAEO1K,EAAAh/G,UAAA2pH,KAAP,WACUnkH,KAAKqjH,YACPrjH,KAAKqjH,UAAUe,OAAQ,EAE/B,EAEO5K,EAAAh/G,UAAA6pH,OAAP,WACUrkH,KAAKqjH,YACPrjH,KAAKqjH,UAAUe,OAAQ,EAE/B,EAEA7pH,OAAAgsB,eAAWizF,EAAAh/G,UAAA,WAAQ,KAAnB,WACI,OAAOwF,KAAK07G,YAChB,kCAEAnhH,OAAAgsB,eAAWizF,EAAAh/G,UAAA,cAAW,KAAtB,WACI,YAAuB8B,IAAnB0D,KAAKqjH,UACErjH,KAAKqjH,UAAU1B,aAElB,CACZ,kCAEOnI,EAAAh/G,UAAA8pH,MAAP,WACStkH,KAAK8iH,mBAAmCxmH,IAAnB0D,KAAKqjH,YAC3BrjH,KAAKqjH,UAAUiB,QACftkH,KAAK8iH,cAAe,EAE5B,EAEOtJ,EAAAh/G,UAAAk2D,OAAP,SAAcpiD,EAAiBjI,GACvBrG,KAAK8iH,mBAAmCxmH,IAAnB0D,KAAKqjH,YAC1BrjH,KAAKqjH,UAAUkB,OAAOz1G,MAAK,WACjBR,GACFA,GAER,IAAG,SAACxL,GACMuD,GACFA,EAAIvD,EAEZ,IACA9C,KAAK8iH,cAAe,EAE5B,EAMAvoH,OAAAgsB,eAAWizF,EAAAh/G,UAAA,gBAAa,KAAxB,WACI,OAAOwF,KAAKqjH,SAChB,kCAEc7J,EAAAh/G,UAAAwoH,mBAAd,qHACiC1mH,IAAzB0D,KAAK+iH,iBAAkC/iH,KAAK+iH,gBAAgBhpH,OAAS,GAAMiG,KAAKwkH,yBAAhF,YACAxkH,KAAK4iH,uBAAwB,EACvB6B,EAASzkH,KAAK+iH,gBAAgB59G,QACpC,IACInF,KAAKijH,iBAAiByB,aAAaD,GACrC,MAAO3hH,GAKL,OAJA9C,KAAK+iH,gBAAgBlU,QAAQ4V,GAE7BrlH,QAAQI,IACJ,mEACJ,IAEJ,SAAMQ,KAAKsjH,gCAAXlpE,EAAApyB,2BACOhoB,KAAK2kH,eACZ,GAAM3kH,KAAKkjH,+BADJ,aACP9oE,EAAApyB,0CAIMwxF,EAAAh/G,UAAA0oH,4BAAd,4GACQljH,KAAK2kH,gBAAkB3kH,KAAKwkH,yBAC5BxkH,KAAK4jH,gBAAgBgB,cACrB,GAAM5kH,KAAKsjH,mBAFX,aAEAlpE,EAAApyB,0CAIMwxF,EAAAh/G,UAAA8oH,eAAd,uHACStjH,KAAK2iH,0BAA0CrmH,IAAnB0D,KAAKqjH,UAAlC,OACArjH,KAAK2iH,qBAAsB,EACrB3iH,KAAK6kH,cACP7kH,KAAK6kH,aAAa7kH,MAEtBA,KAAKqjH,UAAUyB,QAAU,WACf/yG,EAAKwxG,YACPxxG,EAAKwxG,WAAWxxG,EAExB,EACK/R,KAAK8iH,aAAN,MACA,GAAM9iH,KAAKqjH,UAAUkB,gBAArBnqE,EAAApyB,0CAKJwxF,EAAAh/G,UAAAmqH,aAAR,WACI,OAAQ3kH,KAAKisD,eAAsC3vD,IAA1B0D,KAAKijH,kBAAmE,IAAhCjjH,KAAK+iH,gBAAgBhpH,QAC/EiG,KAAK6iH,wBAA0B7iH,KAAK4iH,uBAA6D,SAApC5iH,KAAK4jH,gBAAgB7sG,UAC7F,EAEQyiG,EAAAh/G,UAAAgqH,sBAAR,WACI,YAAkCloH,IAA1B0D,KAAKijH,mBAAmCjjH,KAAKijH,iBAAiB8B,QAC1E,EACJvL,CAAA,CA/PA,GAAangH,EAAAA,wBAAAmgH,+HChCb,IAAAtxD,EAAAzlC,EAAA,OACAkmC,EAAAlmC,EAAA,OACAqnC,EAAArnC,EAAA,MAKAuiG,EAAAviG,EAAA,OAOAwiG,EAAA,WAII,SAAAA,IACIjlH,KAAKsgG,eAAiB,IAAIx2C,EAAAib,mBAC1B/kE,KAAKsgG,eAAetvC,YAAYlH,EAAA+K,WAAWqmB,uCAAwC,WACnFl7E,KAAKi7E,mBAAqB+pC,EAAAE,eAAeC,OAC7C,CAsFJ,OA3EkBF,EAAAG,cAAd,WACI,IAAM7xG,EAAS,IAAI0xG,EAEnB,OADA1xG,EAAO25D,WAAWlc,YAAYlH,EAAA+K,WAAW0mB,kDAAmDrzB,EAAAm9D,8CACrF9xG,CACX,EAUc0xG,EAAAK,cAAd,SAA4B/6B,GACxB5hC,EAAAO,UAAUq8D,8BAA8Bh7B,EAAW,aACnD,IAAMh3E,EAAS,IAAI0xG,EAEnB,OADA1xG,EAAO25D,WAAWlc,YAAYlH,EAAA+K,WAAW0mB,kDAAmDgP,EAAU9sF,QAC/F8V,CACX,EAUc0xG,EAAAO,0BAAd,SAAwCC,GACpC,GAAIA,EAAQ1rH,OAAS,EACjB,MAAM,IAAIsJ,MAAM,kDAEpB,IAAMqiH,EAAa,IAAIT,EACjBU,EAAkB,GAUxB,OATAF,EAAQh9F,SAAQ,SAAClV,GAEb,GADAoyG,EAAMzqH,KAAKqY,EAAOiF,eACQlc,IAAtBiX,EAAOk1E,YAAkD,KAAtBl1E,EAAOk1E,WAAmB,CAC7D,IAAM7M,EAAiBroE,EAAOiF,SAAWsxC,EAAA+K,WAAWgnB,mCAAmCphF,WACvFirH,EAAWx4C,WAAWlc,YAAY4qB,EAAgBroE,EAAOk1E,YAEjE,IACAi9B,EAAWx4C,WAAWlc,YAAYlH,EAAA+K,WAAW0mB,kDAAmDoqC,EAAMloH,QAE/FioH,CACX,EASAnrH,OAAAgsB,eAAW0+F,EAAAzqH,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCASA/lG,OAAAgsB,eAAW0+F,EAAAzqH,UAAA,OAAI,KAAf,SAAgBykC,GACRA,IAAS+lF,EAAAE,eAAeU,YACxB5lH,KAAKsgG,eAAetvC,YAAYlH,EAAA+K,WAAW2mB,mDAAoD,KAC/Fx7E,KAAKsgG,eAAetvC,YAAYlH,EAAA+K,WAAWqmB,uCAAwC,gBAEnFl7E,KAAKsgG,eAAetvC,YAAYlH,EAAA+K,WAAW2mB,mDAAoD,KAC/Fx7E,KAAKsgG,eAAetvC,YAAYlH,EAAA+K,WAAWqmB,uCAAwC,YAEvFl7E,KAAKi7E,mBAAqBh8C,CAC9B,kCACJgmF,CAAA,CA9FA,GAAa5rH,EAAAA,+BAAA4rH,+HCdb,IAAAt8D,EAAAlmC,EAAA,OASAojG,EAAA,WAKI,SAAAA,EAAoBrtG,EAAkBstG,GAClCn9D,EAAAO,UAAUC,uBAAuB3wC,EAAU,YAC3CmwC,EAAAO,UAAUC,uBAAuB28D,EAA6B,+BAC9D9lH,KAAK+lH,aAAevtG,EACpBxY,KAAKgmH,gCAAkCF,CAC3C,CAqBJ,OAXkBD,EAAAI,WAAd,SAAyBjrH,GACrB,OAAO,IAAI6qH,EAA+B7qH,EAAOwd,SAAUxd,EAAO8qH,4BACtE,EAEAvrH,OAAAgsB,eAAWs/F,EAAArrH,UAAA,WAAQ,KAAnB,WACI,OAAOwF,KAAK+lH,YAChB,kCAEAxrH,OAAAgsB,eAAWs/F,EAAArrH,UAAA,8BAA2B,KAAtC,WACI,OAAOwF,KAAKgmH,+BAChB,kCACJH,CAAA,CA/BA,GAAaxsH,EAAAA,+BAAAwsH,ydCTb,IAAAl9D,EAAAlmC,EAAA,OACAyjG,EAAAzjG,EAAA,MACAylC,EAAAzlC,EAAA,MAMA0jG,EAAA,SAAArgG,GAKI,SAAAqgG,WACIrgG,EAAAprB,KAAA,OAAO,IACX,CA+IJ,OAtJwCmpE,EAAAsiD,EAAArgG,GAoBtBqgG,EAAAC,iBAAd,SAA+BC,EAAsB7kD,EAAgB8kD,GACjE39D,EAAAO,UAAUotC,wBAAwB+vB,EAAc,gBAChD19D,EAAAO,UAAUotC,wBAAwB90B,EAAQ,UAE1C,IAAM+kD,EAAyC,IAAIL,EAAAM,wBAWnD,OAVAD,EAAmBv1D,YACf9I,EAAA2M,WAAWgT,wBACXq+C,EAAA79C,oBAAoBC,YAAYI,cACpC69C,EAAmBv1D,YAAY9I,EAAA2M,WAAWoyB,4BAA6Bo/B,GACvEE,EAAmBv1D,YAAY9I,EAAA2M,WAAWiT,+BAAgCtG,GAEtE8kD,GACAC,EAAmBv1D,YAAY9I,EAAA2M,WAAW8S,2BAA4B2+C,GAGnEC,CACX,EAoBcJ,EAAAM,uBAAd,SACI7rB,EAA4Bp5B,EAAgB8kD,GAE5C39D,EAAAO,UAAUotC,wBAAwBsE,EAAoB,sBACtDjyC,EAAAO,UAAUotC,wBAAwB90B,EAAQ,UAE1C,IAAM+kD,EAAyC,IAAIL,EAAAM,wBAWnD,OAVAD,EAAmBv1D,YACf9I,EAAA2M,WAAWgT,wBACXq+C,EAAA79C,oBAAoBC,YAAYI,cACpC69C,EAAmBv1D,YAAY9I,EAAA2M,WAAWwhC,iCAAkCuE,GAC5E2rB,EAAmBv1D,YAAY9I,EAAA2M,WAAWiT,+BAAgCtG,GAEtE8kD,GACAC,EAAmBv1D,YAAY9I,EAAA2M,WAAW8S,2BAA4B2+C,GAGnEC,CACX,EAsBcJ,EAAAO,SAAd,SACIxnH,EACAo5D,EACAguD,GAGA39D,EAAAO,UAAUC,uBAAuBjqD,EAAM,QACvC,IAAMynH,EAAoBznH,aAAgBuoB,IAAMvoB,EAAO,IAAIuoB,IAAI,SAASvoB,EAAI,2BAC5EypD,EAAAO,UAAUC,uBAAuBw9D,EAAc,gBAE/C,IAAMJ,EAAyC,IAAIL,EAAAM,wBAUnD,OATAD,EAAmBv1D,YACf9I,EAAA2M,WAAWgT,wBACXq+C,EAAA79C,oBAAoBC,YAAYI,cACpC69C,EAAmBv1D,YAAY9I,EAAA2M,WAAWgU,6BAA8B89C,EAAalsH,iBAEjF6B,IAAcg8D,GACdiuD,EAAmBv1D,YAAY9I,EAAA2M,WAAWoyB,4BAA6B3uB,GAGpEiuD,CACX,EAkBcJ,EAAAS,aAAd,SAA2BvwG,EAAeiiD,GACtC3P,EAAAO,UAAUi3C,YAAY9pF,EAAU,YAEhC,IAAMkwG,EAAyC,IAAIL,EAAAM,wBAUnD,OATAD,EAAmBv1D,YACf9I,EAAA2M,WAAWgT,wBACXq+C,EAAA79C,oBAAoBC,YAAYI,cACpC69C,EAAmBv1D,YAAY9I,EAAA2M,WAAW8T,iCAAkCtyD,EAAS5b,iBAEjF6B,IAAcg8D,GACdiuD,EAAmBv1D,YAAY9I,EAAA2M,WAAWoyB,4BAA6B3uB,GAGpEiuD,CACX,EACJJ,CAAA,CAtJA,CAAwCD,EAAAM,yBAA3BntH,EAAAA,mBAAA8sH,0dCRb,IAAAj+D,EAAAzlC,EAAA,OACAokG,EAAApkG,EAAA,OACAqnC,EAAArnC,EAAA,MAWAqkG,EAAA,SAAAhhG,GAEI,SAAAghG,EAAoB94G,EAA4B0oE,EAAsBpS,UAClEx+C,EAAAprB,KAAA,KAAMsT,EAAQ0oE,EAAcpS,IAAU,IAC1C,CA0BJ,OA9ByCT,EAAAijD,EAAAhhG,GAcvBghG,EAAAb,WAAd,SAAyBjrH,GACrB,IAAIgT,EAAS87C,EAAAyhB,mBAAmBloE,MAC5BihE,EAAmCxa,EAAA0hB,sBAAsBC,QAE7D,GAAIzwE,aAAkB8uD,EAAAi9D,mBAAuB/rH,EAAOqrB,KAAM,CACtD,IAAM2gG,EAAmC9+D,EAAAsc,mBAAmBC,SAASzpE,EAAOqrB,MAC5ErY,EAASk6C,EAAAyc,gBAAgBe,0BAA0BshD,EAAaniD,mBAOpE,OAJM7pE,EAAOkyE,aACT5I,EAAYxa,EAAA0hB,sBAAsBxwE,EAAOkyE,WAAWtY,YAAY1M,EAAAilB,kCAAmCrjB,EAAA0hB,sBAAsB1hB,EAAA0hB,sBAAsBC,YAG5I,IAAIq7C,EAAoB94G,EAAQhT,EAAO07E,cAAgBxuB,EAAAyc,gBAAgBmB,0BAA0BxB,GAAYA,EACxH,EAEJwiD,CAAA,CA9BA,CAAyCD,EAAAI,yBAA5B5tH,EAAAA,oBAAAytH,sHCJb,IAAAG,EAAA,WAWI,SAAAA,EAAsBj5G,EAA4B0oE,EAAsBpS,GACpEtkE,KAAKssG,WAAat+F,EAClBhO,KAAKknH,iBAAmBxwC,EACxB12E,KAAKmnH,cAAgB7iD,CACzB,CAiCJ,OAxBI/pE,OAAAgsB,eAAW0gG,EAAAzsH,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKssG,UAChB,kCASA/xG,OAAAgsB,eAAW0gG,EAAAzsH,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKknH,gBAChB,kCAOA3sH,OAAAgsB,eAAW0gG,EAAAzsH,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKmnH,aAChB,kCAEJF,CAAA,CAhDA,GAAa5tH,EAAAA,wBAAA4tH,oHCLb,SAAYz7C,GAIRA,EAAAA,EAAA,qBAKAA,EAAAA,EAAA,iDAKAA,EAAAA,EAAA,+CAMAA,EAAAA,EAAA,qCAKAA,EAAAA,EAAA,yCAKAA,EAAAA,EAAA,mCAKAA,EAAAA,EAAA,+BAKAA,EAAAA,EAAA,+BAKAA,EAAAA,EAAA,wBACH,CA9CD,CAAYnyE,EAAAmyE,wBAAAnyE,EAAAA,sBAAqB,meCJjC,IAWA+tH,EAAA,SAAAthG,GAaI,SAAAshG,EAAmBp5G,EAA4B0oE,EAC5BpS,EAAkCn7B,EAAiB66B,GADtE,IAAAjyD,EAEI+T,EAAAprB,KAAA,KAAMyuC,EAAQ66B,IAAU,YAExBjyD,EAAKu6F,WAAat+F,EAClB+D,EAAKm1G,iBAAmBxwC,EACxB3kE,EAAKo1G,cAAgB7iD,GACzB,CA+BJ,OAnD+CT,EAAAujD,EAAAthG,GA6B3CvrB,OAAAgsB,eAAW6gG,EAAA5sH,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKssG,UAChB,kCAMA/xG,OAAAgsB,eAAW6gG,EAAA5sH,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKmnH,aAChB,kCASA5sH,OAAAgsB,eAAW6gG,EAAA5sH,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKknH,gBAChB,kCACJE,CAAA,CAnDA,CAXA3kG,EAAA,MAW+CgtD,sBAAlCp2E,EAAAA,0BAAA+tH,gHCPb,SAAY77C,GAKRA,EAAAA,EAAA,iBAMAA,EAAAA,EAAA,4BACH,CAZD,CAAYlyE,EAAAkyE,qBAAAlyE,EAAAA,mBAAkB,8GCF9B,IAAA6uD,EAAAzlC,EAAA,OAIAqnC,EAAArnC,EAAA,MAQAizF,EAAAjzF,EAAA,OAGAkmC,EAAAlmC,EAAA,OACA4kD,EAAA5kD,EAAA,MAsBAg+E,EAAA,oBAAAA,IA8JA,QApJkBA,EAAAC,eAAd,SAA6Bp9B,GACzB,IAAM+jD,EAAW/jD,EAAWgkD,aACtBz4G,EAAkB,IAAI4xF,EAI5B,OAFA5xF,EAAI04G,iBAAmBF,EACvBx4G,EAAI24G,cACG34G,CACX,EAOc4xF,EAAAgnB,gBAAd,SAA8BC,GAC1B,IAAMC,EAAkCD,EAAYJ,aAE9Cz4G,EAAkB,IAAI4xF,EAI5B,OAFA5xF,EAAI04G,iBAAmBI,EACvB94G,EAAI24G,cACG34G,CACX,EAUO4xF,EAAAjmG,UAAAotH,eAAP,SAAsBt5G,EAAiBjI,GACnCyjD,EAAAw5C,0BAA0BtjG,KAAKunH,iBAAiBn0D,UAAW9kD,EAAIjI,EACnE,EAQOo6F,EAAAjmG,UAAA2mG,gBAAP,SAAuB7yF,EAAiBjI,GACpC,GAAIrG,KAAKunH,4BAA4Br/D,EAAAqjC,qBACjC,MAAM,IAAIloF,MAAM,uEAEhBymD,EAAAw5C,0BAA0BtjG,KAAKunH,iBAAiBxzD,aAAczlD,EAAIjI,EAE1E,EASOo6F,EAAAjmG,UAAAqtH,mBAAP,SAA0BlhH,EAAcmhH,EAAsBC,GAG1D,GAFAp/D,EAAAO,UAAUotC,wBAAwBwxB,EAAc,gBAE5C9nH,KAAKunH,4BAA4Br/D,EAAAkf,sBAAuB,CACxD,GAA2B,mBAAvBzgE,EAAKG,cACL,MAAM,IAAIzD,MAAM,oFAEhBrD,KAAKunH,iBAAiBp0C,cAAcC,WAAW00C,EAAcC,QAE9D,GAAI/nH,KAAKunH,4BAA4Br/D,EAAAqjC,qBAAsB,CAC9D,GAA2B,sBAAvB5kF,EAAKG,cACL,MAAM,IAAIzD,MAAM,wFAEhBrD,KAAKunH,iBAAiBh7B,iBAAiBnZ,WAAW00C,EAAcC,GAG5E,EAUOtnB,EAAAjmG,UAAAm9F,iBAAP,SAAwBhxF,EAAc4O,EAA+ByyG,EAAsBllH,GACvFgnD,EAAAw5C,0BAA0BtjG,KAAKunH,iBAAiBlkC,mBAAmB18E,EAAM4O,GAAUyyG,EAASllH,EAChG,EAgCO29F,EAAAjmG,UAAAigC,MAAP,WACI,EAGIgmE,EAAAjmG,UAAAgtH,YAAR,eAAAz1G,EAAA,KACI/R,KAAKioH,kBAAoBjoH,KAAKunH,iBAAiB58C,iBAAiBvf,QAAO,SAACwf,GACvC,+BAAzBA,EAAgBnsE,KACVsT,EAAK6uF,WACP7uF,EAAK6uF,UAAU,IAAIv5B,EAAA6gD,oBAAoBt9C,EAAgBtQ,eAE3B,0BAAzBsQ,EAAgBnsE,KACjBsT,EAAK8uF,cACP9uF,EAAK8uF,aAAa,IAAIx5B,EAAA6gD,oBAAoBt9C,EAAgBtQ,eAE9B,+BAAzBsQ,EAAgBnsE,KACjBsT,EAAKo2G,aACPp2G,EAAKo2G,YAAY,IAAI9gD,EAAA+gD,2BAA2B,IAAI1S,EAAA2S,sBAAuBz9C,EAA+CzuE,WAE9F,mCAAzByuE,EAAgBnsE,MACjBsT,EAAKu2G,iBACPv2G,EAAKu2G,gBAAgB,IAAIjhD,EAAA+gD,2BAA2B,IAAI1S,EAAA2S,sBAAuBz9C,EAAmDzuE,UAG9I,IAEA6D,KAAKuoH,yBAA2BvoH,KAAKunH,iBAAiBn3C,cAAchlB,QAAO,SAACzmD,GAClEoN,EAAKy2G,wBACPz2G,EAAKy2G,uBAAuB,IAAInhD,EAAAohD,iBAAiB9jH,EAAE+jH,WAAY/jH,EAAElG,MAEzE,GACJ,EACJgiG,CAAA,CA9JA,GAAapnG,EAAAA,WAAAonG,ydCtCb,IAMAynB,EAAA,SAAApiG,GAAA,SAAAoiG,kDACA,QADyCrkD,EAAAqkD,EAAApiG,GACzCoiG,CAAA,CADA,CANAzlG,EAAA,MAMyCgsD,kBAA5Bp1E,EAAAA,oBAAA6uH,0ICLb,IAAA7sD,EAAA54C,EAAA,OACAylC,EAAAzlC,EAAA,MAIAkmG,EAAAlmG,EAAA,OAGAmmG,EAAAnmG,EAAA,MAUA2mE,EAAA,WAwCA,EAxCsB/vF,EAAAA,kBAAA+vF,EA0CtB,IAAAi/B,EAAA,WAKI,SAAAA,EAAmBlsH,GAAnB,IAAA4V,EAAA,KACI/R,KAAK6oH,sBAAwB1sH,EAC7B6D,KAAKsgG,eAAiB,IAAIqoB,EAAA5jD,mBACpB/kE,KAAK6oH,sBAAsBriG,QAAQ60C,EAAAM,YAAYC,eACjD57D,KAAKsgG,eAAetvC,YAAY43D,EAAA/zD,WAAW+Y,iBAAkB5tE,KAAK6oH,sBAAsBriG,QAAQ60C,EAAAM,YAAYC,eAGhHrhE,OAAO8wB,KAAKrrB,KAAK6oH,sBAAsBriG,SAASiC,SAAQ,SAACqkC,GACrD/6C,EAAKuuF,eAAetvC,YAAYlE,EAAQ/6C,EAAK82G,sBAAsBriG,QAAQsmC,GAC/E,GACJ,CAuDJ,OAlDIvyD,OAAAgsB,eAAW8hG,EAAA7tH,UAAA,OAAI,KAAf,WACI,OAAOwF,KAAK6oH,sBAAsBriG,QAAQjsB,OAAO8wB,KAAKrrB,KAAK6oH,sBAAsBriG,SAASlgB,MAAK,SAACzI,GAAyB,OAAAA,EAAIiJ,gBAAkB,OAAOA,aAA7B,IAC7H,kCAMAvM,OAAAgsB,eAAW8hG,EAAA7tH,UAAA,gBAAa,KAAxB,WACI,OAAOwF,KAAK6oH,sBAAsBn9C,cAAgBxjB,EAAA2V,YAAYK,IAClE,kCAMA3jE,OAAAgsB,eAAW8hG,EAAA7tH,UAAA,kBAAe,KAA1B,WACI,OAAOwF,KAAK6oH,sBAAsBn9C,cAAgBxjB,EAAA2V,YAAYC,MAClE,kCAOAvjE,OAAAgsB,eAAW8hG,EAAA7tH,UAAA,cAAW,KAAtB,WACI,OAAOwF,KAAK6oH,sBAAsBrlD,QACtC,kCAKAjpE,OAAAgsB,eAAW8hG,EAAA7tH,UAAA,gBAAa,KAAxB,WACI,OAAOwF,KAAK6oH,sBAAsBn8C,UACtC,kCAMAnyE,OAAAgsB,eAAW8hG,EAAA7tH,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCAKO+nB,EAAA7tH,UAAAC,SAAP,WACI,MAAO,EACX,EACJ4tH,CAAA,CAtEA,GAAahvH,EAAAA,sBAAAgvH,yHCzDb,IAAAD,EAAA,WAII,SAAAA,EAAmBjsH,GACf6D,KAAK6oH,sBAAwB1sH,CACjC,CAeJ,OAVI5B,OAAAgsB,eAAW6hG,EAAA5tH,UAAA,UAAO,KAAlB,WACI,OAAOwF,KAAK6oH,qBAChB,kCAKOT,EAAA5tH,UAAAC,SAAP,WACI,MAAO,YAAcuF,KAAK6oH,sBAAsBpuH,UACpD,EACJ2tH,CAAA,CArBA,GAAa/uH,EAAAA,2BAAA+uH,wGCFb,IAAAl/D,EAAA,oBAAAA,IAkEA,QAjEkBA,EAAAC,uBAAd,SAAqC2/D,EAAYrqH,GAC7C,QAAcnC,IAAVwsH,GAAiC,OAAVA,EACvB,MAAM,IAAIzlH,MAAM,0BAA4B5E,EAEpD,EAEcyqD,EAAAi3C,YAAd,SAA0B2oB,EAAYrqH,GAClC,GAAc,OAAVqqH,EACA,MAAM,IAAIzlH,MAAM,eAAiB5E,EAEzC,EAEcyqD,EAAAotC,wBAAd,SAAsCwyB,EAAerqH,GAGjD,GAFAyqD,EAAUC,uBAAuB2/D,EAAOrqH,IAEnC,GAAKqqH,GAAO3vD,OAAOp/D,OAAS,EAC7B,MAAM,IAAIsJ,MAAM,2BAA6B5E,EAErD,EAEcyqD,EAAA6/D,qBAAd,SAAmCD,EAAerqH,EAAcuqH,GAG5D,GAFA9/D,EAAUC,uBAAuB2/D,EAAOrqH,IAEnC,GAAKqqH,GAAO/uH,OAASivH,EACtB,MAAM,IAAI3lH,MAAM,wBAA0B5E,EAAO,eAAiBuqH,EAAUvuH,WAAa,eAEjG,EAEcyuD,EAAA+/D,sBAAd,SAAoCH,EAAerqH,EAAcyqH,GAG7D,GAFAhgE,EAAUC,uBAAuB2/D,EAAOrqH,IAEnC,GAAKqqH,GAAO/uH,OAASmvH,EACtB,MAAM,IAAI7lH,MAAM,yBAA2B5E,EAAO,eAAiByqH,EAAUzuH,WAAa,eAElG,EAEcyuD,EAAA63C,gBAAd,SAA8BhmC,GAC1B,GAAIA,EACA,MAAM,IAAI13D,MAAM,iCAExB,EAEc6lD,EAAAq8D,8BAAd,SAA4CxxE,EAAiBt1C,GAGzD,GAFAyqD,EAAUC,uBAAuBpV,EAAOt1C,GAEnB,IAAjBs1C,EAAMh6C,OACN,MAAM,IAAIsJ,MAAM,iCAAmC5E,GAGvD,IAAmB,IAAAw/C,EAAA,EAAAkrE,EAAAp1E,EAAAkK,EAAAkrE,EAAApvH,OAAAkkD,IAAO,CAArB,IAAMhkD,EAAIkvH,EAAAlrE,GACXiL,EAAUotC,wBAAwBr8F,EAAMwE,GAEhD,EAEcyqD,EAAAkgE,wBAAd,SAAsCN,EAAerqH,GACjDyqD,EAAUotC,wBAAwBwyB,EAAOrqH,EAG7C,EAEcyqD,EAAAmxD,oBAAd,SAAkCyO,EAAYrqH,GAC1C,QAAcnC,IAAVwsH,EACA,MAAM,IAAIzlH,MAAM,uBAAyB5E,EAEjD,EACJyqD,CAAA,CAlEA,GAAa7vD,EAAAA,UAAA6vD,ifCJb,IAQAw7C,EAAA,SAAA5+E,GAAA,SAAA4+E,kDACA,QADgE7gC,EAAA6gC,EAAA5+E,GAChE4+E,CAAA,CADA,CARAjiF,EAAA,OAQgE2kG,2BAAnD/tH,EAAAA,2CAAAqrG,2dCRb,IAAA/7C,EAAAlmC,EAAA,OACAyjG,EAAAzjG,EAAA,MACAylC,EAAAzlC,EAAA,MAMA4mG,EAAA,SAAAvjG,GAKI,SAAAujG,WACIvjG,EAAAprB,KAAA,OAAO,IACX,CA2EJ,OAlF0CmpE,EAAAwlD,EAAAvjG,GAmBxBujG,EAAAjD,iBAAd,SAA+B1+C,EAAuB2+C,EAAsB7kD,GACxE7Y,EAAAO,UAAUotC,wBAAwB5uB,EAAe,iBACjD/e,EAAAO,UAAUotC,wBAAwB+vB,EAAc,gBAChD19D,EAAAO,UAAUotC,wBAAwB90B,EAAQ,UAE1C,IAAM8nD,EAA6C,IAAIpD,EAAAM,wBAKvD,OAJA8C,EAAqBt4D,YAAY9I,EAAA2M,WAAWgT,wBAAyBq+C,EAAA79C,oBAAoBC,YAAYC,gBACrG+gD,EAAqBt4D,YAAY9I,EAAA2M,WAAW8S,2BAA4BD,GACxE4hD,EAAqBt4D,YAAY9I,EAAA2M,WAAWoyB,4BAA6Bo/B,GACzEiD,EAAqBt4D,YAAY9I,EAAA2M,WAAWiT,+BAAgCtG,GACrE8nD,CACX,EAiBcD,EAAA5C,uBAAd,SAAqC/+C,EAAuBkzB,EAA4Bp5B,GACpF7Y,EAAAO,UAAUotC,wBAAwB5uB,EAAe,iBACjD/e,EAAAO,UAAUotC,wBAAwBsE,EAAoB,sBACtDjyC,EAAAO,UAAUotC,wBAAwB90B,EAAQ,UAE1C,IAAM8nD,EAA6C,IAAIpD,EAAAM,wBAKvD,OAJA8C,EAAqBt4D,YAAY9I,EAAA2M,WAAWgT,wBAAyBq+C,EAAA79C,oBAAoBC,YAAYC,gBACrG+gD,EAAqBt4D,YAAY9I,EAAA2M,WAAW8S,2BAA4BD,GACxE4hD,EAAqBt4D,YAAY9I,EAAA2M,WAAWwhC,iCAAkCuE,GAC9E0uB,EAAqBt4D,YAAY9I,EAAA2M,WAAWiT,+BAAgCtG,GACrE8nD,CACX,EASA/uH,OAAAgsB,eAAW8iG,EAAA7uH,UAAA,gBAAa,KAYxB,WACI,OAAOwF,KAAK40D,YAAY1M,EAAA2M,WAAW8S,2BACvC,MAdA,SAAyBpsE,GACrBotD,EAAAO,UAAUotC,wBAAwB/6F,EAAO,SACzCyE,KAAKgxD,YAAY9I,EAAA2M,WAAW8S,2BAA4BpsE,EAC5D,kCAYJ8tH,CAAA,CAlFA,CAA0CnD,EAAAM,yBAA7BntH,EAAAA,qBAAAgwH,4GCNb,IAAAnhE,EAAAzlC,EAAA,OACAqnC,EAAArnC,EAAA,MAOA8mG,EAAA,oBAAAA,IA8BA,QA3BkBA,EAAAC,gBAAd,SAA8BC,GAC1BzpH,KAAK0pH,aAAe,IAAIxhE,EAAAI,uBAAuBmhE,GAC/C3/D,EAAA3B,OAAOC,SAASC,sBAAsBroD,KAAK0pH,aAC/C,EAEcH,EAAAI,mBAAd,WACU3pH,KAAK0pH,eACP1pH,KAAK0pH,aAAaE,qBAAsB,EAEhD,EAEcL,EAAAM,kBAAd,WACU7pH,KAAK0pH,eACP1pH,KAAK0pH,aAAaE,qBAAsB,EAEhD,EAEcL,EAAAO,iBAAd,SAA+BnjH,GAC3B,GAAsB,qBAAX3H,OAKP,MAAM,IAAIqE,MAAM,iDAJVrD,KAAK0pH,eACP1pH,KAAK0pH,aAAaK,QAAUpjH,EAKxC,EA3Be4iH,EAAAG,kBAAuCptH,EA6B1DitH,EA9BA,GAAalwH,EAAAA,YAAAkwH,mfCTb,IAAA5gE,EAAAlmC,EAAA,OACAylC,EAAAzlC,EAAA,MAOA4lD,EAAA,WAMI,SAAAA,IAEA,CAuFJ,OARI9tE,OAAAgsB,eAAW8hD,EAAA7tE,UAAA,gBAAa,KAAxB,SAAyBe,GAAiB,kCAE1ChB,OAAAgsB,eAAkB8hD,EAAA,cAAW,KAA7B,WACI,MAAO,CACHK,aAAc,gBACdH,eAAgB,kBAExB,kCACJF,CAAA,CA/FA,GAAsBhvE,EAAAA,oBAAAgvE,EAqGtB,IAAAm+C,EAAA,SAAA1gG,GAOI,SAAA0gG,IAAA,IAAAz0G,EACI+T,EAAAprB,KAAA,OAAO,YACPqX,EAAKi4G,iBAAmB,IAAI9hE,EAAA+hE,kBAChC,CAuGJ,OAjH6CpmD,EAAA2iD,EAAA1gG,GAmBzCvrB,OAAAgsB,eAAWigG,EAAAhsH,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKgqH,iBAAiB98C,UACjC,kCAQA3yE,OAAAgsB,eAAWigG,EAAAhsH,UAAA,4BAAyB,KAApC,WACI,OAAOwF,KAAKgqH,iBAAiB/mB,yBACjC,MASA,SAAqC1nG,GACjCotD,EAAAO,UAAUotC,wBAAwB/6F,EAAO,SACzCyE,KAAKgqH,iBAAiB/mB,0BAA4B1nG,CACtD,kCAEAhB,OAAAgsB,eAAWigG,EAAAhsH,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKgqH,iBAAiBj5B,YACjC,MAEA,SAAwBx1F,GACpByE,KAAKgqH,iBAAiBj5B,aAAex1F,CACzC,kCAUOirH,EAAAhsH,UAAAw2D,YAAP,SAAmBvyD,EAA2BlD,GAC1CyE,KAAKgqH,iBAAiBh5D,YAAYvyD,EAAMlD,EAC5C,EAWOirH,EAAAhsH,UAAAo6D,YAAP,SAAmBn2D,EAA2By7G,GAE1C,OAAOl6G,KAAKgqH,iBAAiBp1D,YAAYn2D,EAC7C,EAWO+nH,EAAAhsH,UAAA0vH,SAAP,SAAgBh2D,EAAuBC,EAAmBC,EAAwBC,GAC9Er0D,KAAKgxD,YAAY9I,EAAA2M,WAAWC,sCAAuCZ,GACnEl0D,KAAKgxD,YAAY9I,EAAA2M,WAAWE,kCAAmC,GAAGZ,GAC9DC,GACAp0D,KAAKgxD,YAAY9I,EAAA2M,WAAWG,sCAAuCZ,GAEnEC,GACAr0D,KAAKgxD,YAAY9I,EAAA2M,WAAWI,sCAAuCZ,EAE3E,EAEOmyD,EAAAhsH,UAAA2vH,mBAAP,SAA0B1rH,EAAclD,EAAe4kC,GAEnDngC,KAAKgqH,iBAAiBG,mBAAmB1rH,EAAMlD,EACnD,EAQOirH,EAAAhsH,UAAAigC,MAAP,WAEA,EACJ+rF,CAAA,CAjHA,CAA6Cn+C,GAAhChvE,EAAAA,wBAAAmtH,y1DC9Gb,IAAA4D,EAAA3nG,EAAA,OACAylC,EAAAzlC,EAAA,OAUAqnC,EAAArnC,EAAA,MAMAkmC,EAAAlmC,EAAA,OAEA4kD,EAAA5kD,EAAA,MAQAmmG,EAAAnmG,EAAA,MAOA4nG,EAAA,SAAAvkG,GAUI,SAAAukG,EAAmBC,EAAmCtqB,GAAtD,IAAAjuF,EAAA,KACUw4G,EAA0BD,EAChC3hE,EAAAO,UAAUi3C,YAAYmqB,EAAc,iBAEpCv4G,EAAA+T,EAAAprB,KAAA,KAAMslG,EAAauqB,EAAwBr9C,WAAY,IAAIk9C,EAAA5iD,0BAA0B,MAEhFgjD,gBAAiB,EACtBz4G,EAAKwoD,gBAAiB,EACtBxoD,EAAKuuF,eAAiBiqB,EAAwBr9C,WAAWqzB,QAEzD,IAAMzvB,EAAc/+D,EAAK04G,0BACzB14G,EAAKivF,SAASlwB,YAAYj+C,IAAIi+C,IAClC,CA0NJ,OAhP4CjN,EAAAwmD,EAAAvkG,GA6EjCukG,EAAA7vH,UAAA44D,QAAP,SAAe9kD,EAAiBjI,GAC5ByjD,EAAAw5C,0BAA0BtjG,KAAKghG,SAAS5tC,UAAW9kD,EAAIjI,EAC3D,EAQOgkH,EAAA7vH,UAAAu5D,WAAP,SAAkBzlD,EAAiBjI,GAC/ByjD,EAAAw5C,0BAA0BtjG,KAAKghG,SAASjtC,aAAczlD,EAAIjI,EAC9D,EASA9L,OAAAgsB,eAAW8jG,EAAA7vH,UAAA,qBAAkB,KAA7B,WACI,OAAOwF,KAAKktE,WAAWtY,YAAYg0D,EAAA/zD,WAAWwhC,iCAClD,MASA,SAA8BxsD,GAC1B8e,EAAAO,UAAUotC,wBAAwBzsD,EAAO,SACzC7pC,KAAKktE,WAAWlc,YAAY43D,EAAA/zD,WAAWwhC,iCAAkCxsD,EAC7E,kCASAtvC,OAAAgsB,eAAW8jG,EAAA7vH,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCAMA/lG,OAAAgsB,eAAW8jG,EAAA7vH,UAAA,yBAAsB,KAAjC,WACI,OAAOwF,KAAKktE,WAAWtY,YAAYg0D,EAAA/zD,WAAWwc,sCAClD,MAOA,SAAkCD,GAC9BpxE,KAAKktE,WAAWlc,YAAY43D,EAAA/zD,WAAWwc,sCAAuCD,EAClF,kCAUOi5C,EAAA7vH,UAAAkwH,gBAAP,SAAuBp8G,EAA2CjI,GAAlE,IAAA0L,EAAA,KACI,GAAI/R,KAAKwqH,eAAgB,CACrB7hE,EAAAO,UAAU63C,gBAAgB/gG,KAAKu6D,gBAC/B,IAcMowD,EAdiBh/D,EAAA55C,OAAA,+EACnB,SAAM/R,KAAKghG,SAAS5tC,kBACpB,OADAhZ,EAAApyB,OACA,GAAMhoB,KAAKmkG,6BAIX,OAJA/pD,EAAApyB,OACAhoB,KAAKwqH,gBAAiB,EAEhB37G,EAAyC,IAAIi7C,EAAAkD,SACnD,GAAMhtD,KAAKghG,SAASre,UAAUz6B,EAAAwyB,gBAAgBgO,aAAc75E,EAAIyR,QAASzR,EAAI0R,gBAE1C,OAFnC65B,EAAApyB,OAEmC,GAAMnZ,EAAImT,gBAC7C,OADMrd,EAA6By1C,EAAApyB,OACnC,GAAMhoB,KAAKmkG,6BAEX,OAFA/pD,EAAApyB,OAEO,CAAP,EAAOrjB,UAKXgmH,EAAWt6D,OAAM,WAIbt+C,EAAK+oD,SAAQ,GAAMzK,OAAM,WAAc,GAC3C,IAEAvG,EAAAw5C,0BAA0BqnB,EAAWrV,SAAQ,WACzCvjG,EAAKy4G,gBAAiB,CAC1B,IAAIl8G,EAAIjI,GAEhB,EAEOgkH,EAAA7vH,UAAAowH,kBAAP,SAAyBt4C,EAAkBhkE,EAAiBu8G,GACxD/gE,EAAAw5C,0BAA2BtjG,KAAKghG,SAAkCl2B,YAAYwH,GAAWhkE,EAAIu8G,EACjG,EAQOR,EAAA7vH,UAAAigC,MAAP,SAAansB,EAAiBjI,GAC1BsiD,EAAAO,UAAU63C,gBAAgB/gG,KAAKu6D,gBAE/BzQ,EAAAw5C,0BAA0BtjG,KAAK86D,SAAQ,GAAOxsD,EAAIjI,EACtD,EAEgBgkH,EAAA7vH,UAAAsgE,QAAhB,SAAwBsmC,6FACpB,OAAIphG,KAAKu6D,eACL,IAGA6mC,GACAphG,KAAKu6D,gBAAiB,EACtB,GAAMv6D,KAAKmkG,uBAFX,aAGA,OADA/pD,EAAApyB,OACA,GAAMlC,EAAAtrB,UAAMsgE,QAAOpgE,KAAC,KAAA0mG,WAApBhnD,EAAApyB,0CAIEqiG,EAAA7vH,UAAA6mG,uBAAV,SAAiCtB,GAC7B,OAAO,IAAI73C,EAAA0yB,iBAAiBmlB,EAAc//F,KAAKsgG,eACnD,EAEU+pB,EAAA7vH,UAAA8mG,wBAAV,SACIn+B,EACAC,EACA48B,EACA38B,GAEA,IAAMjO,EAA+B4qC,EAErC,OAAO,IAAI93C,EAAAqhB,qBAAqBpG,EAAgBC,EAAmBhO,EAAaiO,EAAkBrjE,KACtG,EAEQqqH,EAAA7vH,UAAAiwH,iBAAR,WAGI,MAAO,CACH15C,QAAS,CACL+5C,SAJkB9qH,KAAKktE,WAAWtY,YAAY,kCAAmC,WAKjFoc,qBAAiB10E,EACjBg+D,aAAct6D,KAAKktE,WAAWtY,YAAYg0D,EAAA/zD,WAAWk2D,kCACrDh5C,eAAgB/xE,KAAKktE,WAAWtY,YAAYg0D,EAAA/zD,WAAWm2D,kCAA8B1uH,GACrF2uH,OAAQjrH,KAAKktE,WAAWtY,YAAYg0D,EAAA/zD,WAAWq2D,0BAAsB5uH,GACrE6uH,eAAgBnrH,KAAKktE,WAAWtY,YAAYg0D,EAAA/zD,WAAWwd,+CAA2C/1E,IAEtGuX,QAAS,GAEjB,EACJw2G,CAAA,CAhPA,CAA4ChjD,EAAAo6B,YAA/BpoG,EAAAA,uBAAAgxH,sFClCb,IAAAe,EAAA3oG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,cAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAiiH,EAAAzS,WAAW,IACpB,IAAA5uD,EAAAtnC,EAAA,MAASloB,OAAAA,eAAAA,EAAAA,oBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA4gD,EAAA+D,iBAAiB,IAAEvzD,OAAAA,eAAAA,EAAAA,iBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA4gD,EAAA4yD,cAAc,IAC1C,IAAAjE,EAAAj2F,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,mBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAuvG,EAAAU,gBAAgB,IAAE7+G,OAAAA,eAAAA,EAAAA,uBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAuvG,EAAAuC,oBAAoB,IAAE1gH,OAAAA,eAAAA,EAAAA,uBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAuvG,EAAAsC,oBAAoB,IACrE,IAAAxnC,EAAA/wD,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,oBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAqqE,EAAAY,iBAAiB,IAAE75E,OAAAA,eAAAA,EAAAA,wBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAqqE,EAAAymC,qBAAqB,IAAE1/G,OAAAA,eAAAA,EAAAA,wBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAqqE,EAAAwmC,qBAAqB,IACxE,IAAAqR,EAAA5oG,EAAA,MAASloB,OAAAA,eAAAA,EAAAA,qBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAkiH,EAAA9/C,kBAAkB,IAC3B,IAAA+/C,EAAA7oG,EAAA,KAASloB,OAAAA,eAAAA,EAAAA,+BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAmiH,EAAApS,4BAA4B,IACrC,IAAAqS,EAAA9oG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,gCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAoiH,EAAAzR,6BAA6B,IACtC,IAAA0R,EAAA/oG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,0BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAqiH,EAAAC,uBAAuB,IAChC,IAAAC,EAAAjpG,EAAA,MAASloB,OAAAA,eAAAA,EAAAA,mBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAuiH,EAAAj9C,gBAAgB,IACzB,IAAAk9C,EAAAlpG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,uBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAwiH,EAAAl8C,oBAAoB,IAC7B,IAAAm8C,EAAAnpG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,eAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAyiH,EAAAxlD,YAAY,IACrB,IAAAylD,EAAAppG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,6BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA0iH,EAAA1zC,0BAA0B,IACnC,IAAA2zC,EAAArpG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,oBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA2iH,EAAA/E,iBAAiB,IAC1B,IAAAgF,EAAAtpG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,0BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA4iH,EAAAzlD,uBAAuB,IAChC,IAAA0lD,EAAAvpG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,0BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA6iH,EAAA/zC,uBAAuB,IAChC,IAAAg0C,EAAAxpG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,6BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA8iH,EAAAC,0BAA0B,IACnC,IAAAC,EAAA1pG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,6BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAgjH,EAAApgD,0BAA0B,IAAExxE,OAAAA,eAAAA,EAAAA,qCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAgjH,EAAAC,kCAAkC,IACvE,IAAAC,EAAA5pG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,qCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAkjH,EAAAh/C,kCAAkC,IAC3C,IAAAi/C,EAAA7pG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,kCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAmjH,EAAAvmB,+BAA+B,IACxC,IAAAwmB,EAAA9pG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,gCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAojH,EAAAlmB,6BAA6B,IACtC,IAAAmmB,EAAA/pG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,+BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAqjH,EAAA1mB,4BAA4B,IACrC,IAAA2mB,EAAAhqG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,6BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAsjH,EAAAtmB,0BAA0B,IACnC,IAAAumB,EAAAjqG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,eAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAujH,EAAAnnD,YAAY,IACrB,IAAAonD,EAAAlqG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,eAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAwjH,EAAAC,YAAY,IAAEryH,OAAAA,eAAAA,EAAAA,mBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAwjH,EAAA1C,gBAAgB,IACvC,IAAA4C,EAAApqG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,0BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA0jH,EAAAC,uBAAuB,IAAEvyH,OAAAA,eAAAA,EAAAA,8BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA0jH,EAAAE,2BAA2B,IAC7D,IAAApE,EAAAlmG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,qBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAw/G,EAAA5jD,kBAAkB,IAC3B,IAAA6jD,EAAAnmG,EAAA,MAASloB,OAAAA,eAAAA,EAAAA,aAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAy/G,EAAA/zD,UAAU,IACnB,IAAAm4D,EAAAvqG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,aAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA6jH,EAAAvrB,UAAU,IACnB,IAAAwrB,EAAAxqG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,mBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA8jH,EAAAC,gBAAgB,IACzB,IAAAC,EAAA1qG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,mBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAgkH,EAAAC,gBAAgB,IACzB,IAAAC,EAAA5qG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,mBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAkkH,EAAArkB,gBAAgB,IACzB,IAAAskB,EAAA7qG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,wBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAmkH,EAAAC,qBAAqB,IAC9B,IAAAC,EAAA/qG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,eAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAqkH,EAAAxxB,YAAY,IACrB,IAAAyxB,EAAAhrG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,gBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAskH,EAAAC,aAAa,IACtB,IAAAC,EAAAlrG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,iBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAwkH,EAAAC,cAAc,IACvB,IAAAC,EAAAprG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,0CAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA0kH,EAAAtnB,uCAAuC,IAChD,IAAAunB,EAAArrG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,qCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA2kH,EAAAj1C,kCAAkC,IAC3C,IAAAguC,EAAApkG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,0BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA09G,EAAAI,uBAAuB,IAChC,IAAA8G,EAAAtrG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,sBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA4kH,EAAAjH,mBAAmB,IAC5B,IAAAkH,EAAAvrG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,wBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA6kH,EAAAxiD,qBAAqB,IAC9B,IAAAyiD,EAAAxrG,EAAA,MAASloB,OAAAA,eAAAA,EAAAA,sBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA8kH,EAAA/F,mBAAmB,IAC5B,IAAAgG,EAAAzrG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,mBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA+kH,EAAAzF,gBAAgB,IACzB,IAAA0F,EAAA1rG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,aAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAglH,EAAA1tB,UAAU,IACnB,IAAA2tB,EAAA3rG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,oBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAilH,EAAAC,iBAAiB,IAC1B,IAAAnI,EAAAzjG,EAAA,MAASloB,OAAAA,eAAAA,EAAAA,sBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA+8G,EAAA79C,mBAAmB,IAC5B,IAAAimD,EAAA7rG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,qBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAmlH,EAAAnI,kBAAkB,IAC3B,IAAAoI,EAAA9rG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,uBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAolH,EAAAlF,oBAAoB,IAC7B,IAAAmF,EAAA/rG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,yBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAqlH,EAAAnE,sBAAsB,IAC/B,IAAAoE,EAAAhsG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,4BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAslH,EAAAl8C,yBAAyB,IAClC,IAAAm8C,EAAAjsG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,8BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAulH,EAAAh8C,2BAA2B,IACpC,IAAAi8C,EAAAlsG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,yBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAwlH,EAAAC,sBAAsB,IAC/B,IAAAC,GAAApsG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,kBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA0lH,GAAAC,eAAe,IACxB,IAAAC,GAAAtsG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,kBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA4lH,GAAAtO,eAAe,IACxB,IAAAuO,GAAAvsG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,6BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA6lH,GAAA5G,0BAA0B,IACnC,IAAA1S,GAAAjzF,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,oBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAusG,GAAAtsB,iBAAiB,IAC1B,IAAA6lC,GAAAxsG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,eAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA8lH,GAAAC,YAAY,IACrB,IAAAC,GAAA1sG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,+BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAgmH,GAAA7nB,4BAA4B,IAAE/sG,OAAAA,eAAAA,EAAAA,4CAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAgmH,GAAAC,yCAAyC,IAChF,IAAAC,GAAA5sG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,qBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAkmH,GAAAxlB,kBAAkB,IAAEtvG,OAAAA,eAAAA,EAAAA,kCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAkmH,GAAAC,+BAA+B,IAC5D,IAAAC,GAAA9sG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,2BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAomH,GAAAlmB,wBAAwB,IACjC,IAAAmmB,GAAA/sG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,qBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAqmH,GAAAC,kBAAkB,IAC3B,IAAAC,GAAAjtG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,oBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAumH,GAAAC,iBAAiB,IAC1B,IAAAC,GAAAntG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,6BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAymH,GAAAC,0BAA0B,IACnC,IAAAC,GAAArtG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,2BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA2mH,GAAAC,wBAAwB,IACjC,IAAAC,GAAAvtG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,iCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA6mH,GAAA/K,8BAA8B,IACvC,IAAAgL,GAAAxtG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,iCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA8mH,GAAApK,8BAA8B,IACvC,IAAAqK,GAAAztG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,uBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA+mH,GAAAC,oBAAoB,IAC7B,IAAAC,GAAA3tG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,2BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAinH,GAAA5oC,wBAAwB,IAAEjtF,OAAAA,eAAAA,EAAAA,+BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAinH,GAAAC,4BAA4B,IAAE91H,OAAAA,eAAAA,EAAAA,wCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAinH,GAAAE,qCAAqC,IACtG,IAAApoE,GAAAzlC,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,eAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA++C,GAAAwgC,YAAY,IACjBnuF,OAAAA,eAAAA,EAAAA,kCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA++C,GAAA8xC,+BAA+B,IAE/Bz/F,OAAAA,eAAAA,EAAAA,2CAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA++C,GAAAqoE,wCAAwC,IACxCh2H,OAAAA,eAAAA,EAAAA,2CAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA++C,GAAA0vC,wCAAwC,IACxCr9F,OAAAA,eAAAA,EAAAA,mCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA++C,GAAAsoE,gCAAgC,IAChCj2H,OAAAA,eAAAA,EAAAA,gCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA++C,GAAA8yC,6BAA6B,IAC7BzgG,OAAAA,eAAAA,EAAAA,yBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA++C,GAAAuoE,sBAAsB,IACtBl2H,OAAAA,eAAAA,EAAAA,0BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA++C,GAAAwoE,uBAAuB,IAEvBn2H,OAAAA,eAAAA,EAAAA,cAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA++C,GAAAyoE,WAAW,IACXp2H,OAAAA,eAAAA,EAAAA,2BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA++C,GAAA0oE,wBAAwB,IACxBr2H,OAAAA,eAAAA,EAAAA,OAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA++C,GAAA2oE,IAAI,IAGR,IAAA7U,GAAAv5F,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,8BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA6yG,GAAAwB,2BAA2B,IACpC,IAAAsT,GAAAruG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,oBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA2nH,GAAAC,iBAAiB,IAC1B,IAAAC,GAAAvuG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,kBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA6nH,GAAAC,eAAe,IACxB,IAAAC,GAAAzuG,EAAA,MAASloB,OAAAA,eAAAA,EAAAA,wBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA+nH,GAAA7jC,qBAAqB,IAC9B,IAAA8jC,GAAA1uG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,2BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAgoH,GAAA/jC,wBAAwB,IACjC,IAAAgkC,GAAA3uG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,uCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAioH,GAAA7iC,oCAAoC,IAC7C,IAAA8iC,GAAA5uG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,mCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAkoH,GAAAriC,gCAAgC,IACzC,IAAAsiC,GAAA7uG,EAAA,MAASloB,OAAAA,eAAAA,EAAAA,iCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAmoH,GAAAhiC,8BAA8B,IACvC,IAAAiiC,GAAA9uG,EAAA,KAASloB,OAAAA,eAAAA,EAAAA,8BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAooH,GAAAC,2BAA2B,IACpC,IAAAC,GAAAhvG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,wBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAsoH,GAAAC,qBAAqB,IAC9B,IAAAC,GAAAlvG,EAAA,MAASloB,OAAAA,eAAAA,EAAAA,YAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAwoH,GAAAC,SAAS,IAElB,IAAAC,GAAApvG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,0BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA0oH,GAAArY,uBAAuB,IAEhC,IAAAsY,GAAArvG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,6CAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA2oH,GAAAptB,0CAA0C,IACnD,IAAAqtB,GAAAtvG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,uCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA4oH,GAAAC,oCAAoC,IAC7C,IAAAC,GAAAxvG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,qCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA8oH,GAAAC,kCAAkC,IAC3C,IAAAC,GAAA1vG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,gCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAgpH,GAAAC,6BAA6B,IACtC,IAAAC,GAAA5vG,EAAA,MAASloB,OAAAA,eAAAA,EAAAA,gCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAkpH,GAAAC,6BAA6B,IACtC,IAAAtN,GAAAviG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,iBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA67G,GAAAE,cAAc,IACvB,IAAAqN,GAAA9vG,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,cAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAopH,GAAAhJ,WAAW,IACpB,IAAA7gE,GAAAjmC,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,WAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAu/C,GAAAG,QAAQ,2eCtGjB,IAMAgwB,EAAA,SAAA/yD,GAYI,SAAA+yD,EACI7qE,EACA0oE,EACApS,EACAtpE,EACAmuC,EACA66B,GANJ,IAAAjyD,EAOI+T,EAAAprB,KAAA,KAAMM,EAAQmuC,EAAQ66B,IAAU,YAEhCjyD,EAAKu6F,WAAat+F,EAClB+D,EAAKm1G,iBAAmBxwC,EACxB3kE,EAAKo1G,cAAgB7iD,GACzB,CAgCJ,OAxDwDT,EAAAgV,EAAA/yD,GAiCpDvrB,OAAAgsB,eAAWsyD,EAAAr+E,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKssG,UAChB,kCAOA/xG,OAAAgsB,eAAWsyD,EAAAr+E,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKmnH,aAChB,kCASA5sH,OAAAgsB,eAAWsyD,EAAAr+E,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKknH,gBAChB,kCACJruC,CAAA,CAxDA,CANAp2D,EAAA,MAMwD01D,4BAA3C9+E,EAAAA,mCAAAw/E,ieCPb,IAMAV,EAAA,SAAAryD,GAUI,SAAAqyD,EAAmBn9E,EAAiCmuC,EAAiB66B,GAArE,IAAAjyD,EACI+T,EAAAprB,KAAA,KAAMyuC,EAAQ66B,IAAU,YAExBjyD,EAAK+gG,WAAa93G,GACtB,CAYJ,OA1BgD6oE,EAAAsU,EAAAryD,GAuB5CvrB,OAAAgsB,eAAW4xD,EAAA39E,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAK8yG,UAChB,kCACJ36B,CAAA,CA1BA,CANA11D,EAAA,MAMgDgtD,sBAAnCp2E,EAAAA,2BAAA8+E,8dCNb,IAMAF,EAAA,SAAAnyD,GAkBI,SAAAmyD,EAAmBS,EAAmBpM,EAAmBt+D,EAAuBmP,EACpE3F,EAAmB2xB,EAAiB3wB,EAAmBstG,EACvDpvC,EAAuBrwD,EAAe6mD,GAFlD,IAAAn7D,EAGI+T,EAAAprB,KAAA,KAAM4xE,EAAUt+D,EAAQmP,EAAM3F,EAAU2xB,EAAQ3wB,EAAUstG,OAA6BxpH,EAAWo6E,EAAcrwD,EAAM6mD,IAAW,YAEjIn7D,EAAKygH,aAAe95C,GACxB,CAYJ,OApC6C7U,EAAAoU,EAAAnyD,GAiCzCvrB,OAAAgsB,eAAW0xD,EAAAz9E,UAAA,WAAQ,KAAnB,WACI,OAAOwF,KAAKwyH,YAChB,kCACJv6C,CAAA,CApCA,CANAx1D,EAAA,MAM6C6jD,yBAAhCjtE,EAAAA,wBAAA4+E,m1DCNb,IAAA/vB,EAAAzlC,EAAA,OAWAqnC,EAAArnC,EAAA,MAEAkmC,EAAAlmC,EAAA,OACA4kD,EAAA5kD,EAAA,MAmBA2qG,EAAA,SAAAtnG,GAYI,SAAAsnG,EAAmBrtB,EAA4BC,GAA/C,IAAAjuF,EAAA,KACI42C,EAAAO,UAAUC,uBAAuB42C,EAAc,gBAC/C,IAAMqE,EAA+BrE,SACrCp3C,EAAAO,UAAUC,uBAAuBi7C,EAAY,iBAE7CryF,EAAA+T,EAAAprB,KAAA,KAAMslG,EAAaoE,EAAWl3B,WAAY,IAAIhlB,EAAAivB,0BAA0B,MACnEs7C,iBAAmB,GACxB1gH,EAAK+lE,mBAAqB,CAAC,EAE3B/lE,EAAK2gH,8BAA+B,EACpC3gH,EAAKuuF,eAAiB8D,EAAWl3B,WAEjCvkB,EAAAO,UAAUotC,wBAAwBvkF,EAAKm7D,WAAWtY,YAAYyS,EAAAxS,WAAWkT,sCAAuCV,EAAAxS,WAAWwS,EAAAxS,WAAWkT,wCAC1I,CAkUJ,OA3VsClE,EAAAupD,EAAAtnG,GA0DlCvrB,OAAAgsB,eAAW6mG,EAAA5yH,UAAA,4BAAyB,KAApC,WAGI,OAFAmuD,EAAAO,UAAU63C,gBAAgB/gG,KAAK0yH,8BAExB1yH,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWkT,qCAClD,kCASAxtE,OAAAgsB,eAAW6mG,EAAA5yH,UAAA,qBAAkB,KAA7B,WACI,OAAOwF,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWwhC,iCAClD,MAUA,SAA8B96F,GAC1ByE,KAAKktE,WAAWlc,YAAYqW,EAAAxS,WAAWwhC,iCAAkC96F,EAC7E,kCAUAhB,OAAAgsB,eAAW6mG,EAAA5yH,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCAcO8sB,EAAA5yH,UAAAm4H,mBAAP,SAA0BrkH,EAA2CjI,GAGjE,GAFAsiD,EAAAO,UAAU63C,gBAAgB/gG,KAAK0yH,8BAEqB,IAAhDn4H,OAAO8wB,KAAKrrB,KAAK83E,oBAAoB/9E,aAAgBuC,IAAc0D,KAAK+3E,mBAAoB,CAC5F,IAAMp6E,EAA0BqC,KAAK4yH,qBAErC5yH,KAAKghG,SAAS7tB,cAAcC,WAAW,SAAUz1E,EAAQk1H,QACzD7yH,KAAKghG,SAAS3X,eAAehU,oBAAoB13E,EAAQg4E,mBAEb31E,KAAKghG,SACtCrpB,WAAW33E,KAAK83E,mBAAoB93E,KAAK+3E,oBAGxDjuB,EAAAw5C,0BAA0BtjG,KAAK8yH,uBAAuB5qE,EAAAwyB,gBAAgBW,aAAc/sE,EAAIjI,EAC5F,EAWO+mH,EAAA5yH,UAAA6oG,gCAAP,SAAuC/0F,EAAiBjI,GACpD,GAAoD,IAAhD9L,OAAO8wB,KAAKrrB,KAAK83E,oBAAoB/9E,aAAgBuC,IAAc0D,KAAK+3E,mBAAoB,CAC5F,IAAMp6E,EAA0BqC,KAAK4yH,qBAErC5yH,KAAKghG,SAAS7tB,cAAcC,WAAW,SAAUz1E,EAAQk1H,QACzD7yH,KAAKghG,SAAS3X,eAAehU,oBAAoB13E,EAAQg4E,mBAEb31E,KAAKghG,SACtCrpB,WAAW33E,KAAK83E,mBAAoB93E,KAAK+3E,oBAGxDjuB,EAAAw5C,0BAA0BtjG,KAAKujG,oCAAoCr7C,EAAAwyB,gBAAgBgO,cAAep6E,EAAIjI,EAC1G,EAUO+mH,EAAA5yH,UAAAgpG,+BAAP,SAAsCl1F,EAAiBjI,GACnDyjD,EAAAw5C,0BAA0BtjG,KAAKyjG,qCAAsCn1F,EAAIjI,EAC7E,EAcO+mH,EAAA5yH,UAAAu4H,6BAAP,SAAoCrmE,EAAgCp+C,EAAiBjI,GACjFsiD,EAAAO,UAAUi3C,YAAYzzC,EAAO,SAEvBrmD,GACFA,EAAI,uBAEZ,EAYO+mH,EAAA5yH,UAAAw4H,4BAAP,SAAmC1kH,EAAiBjI,GAChD,GAAMiI,EACF,IACIA,IACF,MAAO3J,GACC0B,GACFA,EAAI1B,GAIpB,EAUOyoH,EAAA5yH,UAAAy4H,UAAP,SAAiBC,EAAsBx6C,GACnC/vB,EAAAO,UAAU63C,gBAAgB/gG,KAAK0yH,8BAC/B/pE,EAAAO,UAAUotC,wBAAwB5d,EAAU,YAC5C/vB,EAAAO,UAAUotC,wBAAwB48B,EAAc,gBAEhDlzH,KAAKyyH,iBAAiBv3H,KAAK,CAACw9E,EAAUw6C,GAC1C,EAaO9F,EAAA5yH,UAAA24H,2BAAP,SAAkCz6C,EAAkBhsB,EAAmC0T,GACnFzX,EAAAO,UAAU63C,gBAAgB/gG,KAAK0yH,8BAC/B/pE,EAAAO,UAAUotC,wBAAwB5d,EAAU,YAC5C/vB,EAAAO,UAAUi3C,YAAYzzC,EAAO,SAE7B,IAAMyT,EAA4CzT,EAClD/D,EAAAO,UAAUotC,wBAAwBn2B,EAAUizD,MAAO,eAEnDpzH,KAAK83E,mBAAmBY,GAAY,IAAIxwB,EAAAgY,cAAcC,EAAWC,EACrE,EAYOgtD,EAAA5yH,UAAA64H,cAAP,SAAqB3mE,EAAmCgsB,GACpD/vB,EAAAO,UAAUi3C,YAAYzzC,EAAO,SAE7B,IAAMyT,EAA4CzT,EAClD/D,EAAAO,UAAUotC,wBAAwBn2B,EAAUizD,MAAO,eAEnDpzH,KAAK+3E,mBAAqB,IAAI7vB,EAAAgY,cAAcC,EAAWuY,EAC3D,EAQO00C,EAAA5yH,UAAAigC,MAAP,SAAansB,EAAiBglH,GAC1B3qE,EAAAO,UAAU63C,gBAAgB/gG,KAAK0yH,8BAE/B5oE,EAAAw5C,0BAA0BtjG,KAAK86D,SAAQ,GAAOxsD,EAAIglH,EACtD,EAEUlG,EAAA5yH,UAAA6mG,uBAAV,SAAiCtB,GAC7B,OAAO,IAAI73C,EAAA0yB,iBAAiBmlB,EAAc//F,KAAKsgG,eACnD,EAEU8sB,EAAA5yH,UAAA8mG,wBAAV,SAAkCn+B,EAAiCC,EAAuC48B,EAA0B38B,GAChI,IAAMkwD,EAA6BvzB,EACnC,OAAO,IAAI93C,EAAAsvB,wBAAwBrU,EAAgBC,EAAmBmwD,EAAWlwD,EAAkBrjE,KACvG,EAEgBotH,EAAA5yH,UAAAsgE,QAAhB,SAAwBsmC,6FACpB,OAAIphG,KAAK0yH,6BACL,IAGAtxB,GACAphG,KAAK0yH,8BAA+B,EACpC,GAAM5sG,EAAAtrB,UAAMsgE,QAAOpgE,KAAC,KAAA0mG,KAFpB,aAEAhnD,EAAApyB,0CAIAolG,EAAA5yH,UAAAo4H,mBAAR,WACI,IAAIQ,EACA5xD,EACAlJ,EACEk7D,EAAwB,QAE1Bl3H,IAAc0D,KAAK+3E,qBACnBq7C,EAAQpzH,KAAK+3E,mBAAmB5X,UAAUizD,MAC1C5xD,EAASxhE,KAAK+3E,mBAAmB5X,UAAUqB,OAC3ClJ,EAAkBt4D,KAAK+3E,mBAAmB5X,UAAU7H,iBAIxD,IAAuB,IAAAra,EAAA,EAAA7D,EAAA7/C,OAAO8wB,KAAKrrB,KAAK83E,oBAAjB75B,EAAA7D,EAAArgD,OAAAkkD,IAAsC,CAAxD,IAAMy6B,EAAQt+B,EAAA6D,GACTw1E,EAA+BzzH,KAAK83E,mBAAmBY,GAG7D,QAAcp8E,IAAV82H,EACAA,EAAQK,EAActzD,UAAUizD,WAEhC,GAAIA,IAAUK,EAActzD,UAAUizD,MAClC,MAAM,IAAI/vH,MAAM,gDAIxB,QAAe/G,IAAXklE,EACAA,EAASiyD,EAActzD,UAAUqB,YAEjC,GAAIA,IAAWiyD,EAActzD,UAAUqB,OACnC,MAAM,IAAIn+D,MAAM,mEAIxB,QAAwB/G,IAApBg8D,EACAA,EAAkBm7D,EAActzD,UAAU7H,qBAE1C,GAAIA,IAAoBm7D,EAActzD,UAAU7H,gBAC5C,MAAM,IAAIj1D,MAAM,kDAIxB,IAAMqwH,EAAkB,QAAUN,EAAQ,eAAiB16C,EAC3D86C,EAAYt4H,KAAKw4H,GAGrB,MAAO,CACHb,OAAQ,CACJ9mH,GAAIqnH,EACJv1H,SAA0BvB,IAApBg8D,EAAiCt4D,KAAKsgG,eAAe1rC,YAAYyS,EAAAxS,WAAWwS,EAAAxS,WAAWoyB,8BAAgC3uB,EAC7Hq7D,SAAU,QAEdh+C,uBAAoBr5E,IAAc0D,KAAK+3E,mBAAsBy7C,EAAc,CAAC,QAAUJ,EAAQ,eAEtG,EACJhG,CAAA,CA3VA,CAAsC/lD,EAAAo6B,YAAzBpoG,EAAAA,iBAAA+zH,wHCjCb,IAAAzkE,EAAAlmC,EAAA,OAOAgpG,EAAA,WAOI,SAAAA,IANQ,KAAAmI,cAAwB,CAQhC,CA8CJ,OAlCkBnI,EAAAoI,SAAd,SAAuBvvH,GAGnB,MAFAqkD,EAAAO,UAAUkgE,wBAAwB9kH,EAAU,YAEtC,IAAIjB,MAAM,uBACpB,EAWcooH,EAAAqI,WAAd,SAAyBtnH,GAGrB,MAFAm8C,EAAAO,UAAUi3C,YAAY3zF,EAAM,QAEtB,IAAInJ,MAAM,uBACpB,EAQOooH,EAAAjxH,UAAAigC,MAAP,WACQz6B,KAAK4zH,eAIT5zH,KAAK4zH,cAAe,EACxB,EACJnI,CAAA,CAvDA,GAAapyH,EAAAA,wBAAAoyH,6GCHb,SAAYvG,GAMRA,EAAAA,EAAA,qBAMAA,EAAAA,EAAA,0BACH,CAbD,CAAY7rH,EAAA6rH,iBAAA7rH,EAAAA,eAAc,qgBCH1B,IAAAsvD,EAAAlmC,EAAA,OAMAypG,EAAA,WAKI,SAAAA,IAEA,CAsFJ,OA5EkBA,EAAAtF,aAAd,SAA2BttD,GACvB3Q,EAAAO,UAAUi3C,YAAY7mC,EAAK,OAC3B3Q,EAAAO,UAAUotC,wBAAwBh9B,EAAIy6D,SAAU,OAEhD,IAAMC,EAA+C,IAAIC,EAOnDC,EAAmB56D,EAAIp6D,KAAKsE,QAAQ,KAC1C,IAAK,IAAM0wH,EACP,MAAM,IAAI7wH,MAAM,4CAEpB2wH,EAAaxyD,OAASlI,EAAIp6D,KAAKsQ,OAAO,EAAG0kH,GAIzC,IAAMC,EAAsB76D,EAAI5hD,SAASqzC,YAAY,KAAO,EAC5D,IAAK,IAAMopE,EACP,MAAM,IAAI9wH,MAAM,2CAOpB,GAJA2wH,EAAaZ,MAAQ95D,EAAI5hD,SAASlI,OAAO2kH,GAGzCH,EAAa17D,gBAAkBgB,EAAI0jC,aAAa7zF,IAAI,yBAChD7M,IAAc03H,EAAa17D,gBAC3B,MAAM,IAAIj1D,MAAM,sDAGpB,OAAO2wH,CACX,EAUc9H,EAAAkI,UAAd,SAAwBhB,GACpBzqE,EAAAO,UAAUotC,wBAAwB88B,EAAO,SAEzC,IAAMY,EAA+C,IAAIC,EAEzD,OADAD,EAAaZ,MAAQA,EACdY,CACX,EAgBc9H,EAAA9F,iBAAd,SAA+B9tD,EAAyB86D,EAAe5xD,GACnE7Y,EAAAO,UAAUotC,wBAAwBh+B,EAAiB,mBACnD3P,EAAAO,UAAUotC,wBAAwB88B,EAAO,SACzCzqE,EAAAO,UAAUotC,wBAAwB90B,EAAQ,UAE1C,IAAMwyD,EAA+C,IAAIC,EAIzD,OAHAD,EAAaZ,MAAQA,EACrBY,EAAaxyD,OAASA,EACtBwyD,EAAa17D,gBAAkBA,EACxB07D,CACX,EACJ9H,CAAA,CA7FA,GAAa7yH,EAAAA,2BAAA6yH,EAmGb,IAAA+H,EAAA,SAAAnuG,GAAA,SAAAmuG,kDAIA,QAJoDpwD,EAAAowD,EAAAnuG,GAIpDmuG,CAAA,CAJA,CAAoD/H,GAAvC7yH,EAAAA,+BAAA46H,yGC1Gb,IAAA/rE,EAAAzlC,EAAA,MAOsBloB,OAAAA,eAAAA,EAAAA,WAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAPb++C,EAAAsxB,SAAS,iHCAlB,IAAAtxB,EAAAzlC,EAAA,OACAqnC,EAAArnC,EAAA,MAMAmrG,EAAA,WAQI,SAAAA,EAAoB5/G,GAChBhO,KAAKssG,WAAat+F,CACtB,CAyCJ,OA9BkB4/G,EAAA3H,WAAd,SAAyBjrH,GACrB,IAAMgsH,EAAmC9+D,EAAAsc,mBAAmBC,SAASzpE,EAAOqrB,MAExErY,EAAwB87C,EAAA4jE,cAAc2G,cAE1C,OAAQrN,EAAaniD,mBACjB,KAAK3c,EAAA2c,kBAAkBsR,cACnBnoE,EAAS87C,EAAA4jE,cAAc4G,qBACvB,MACJ,KAAKpsE,EAAA2c,kBAAkBoB,sBACnBj4D,EAAS87C,EAAA4jE,cAAcznD,sBACvB,MACJ,QACIj4D,EAAS87C,EAAA4jE,cAAc2G,cAI/B,OAAO,IAAIzG,EAAe5/G,EAC9B,EASAzT,OAAAgsB,eAAWqnG,EAAApzH,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKssG,UAChB,kCACJshB,CAAA,CAnDA,GAAav0H,EAAAA,eAAAu0H,4GCHb,SAAYF,GAMRA,EAAAA,EAAA,iCAOAA,EAAAA,EAAA,iDAOAA,EAAAA,EAAA,8CACH,CArBD,CAAYr0H,EAAAq0H,gBAAAr0H,EAAAA,cAAa,8GCAzB,SAAY+sE,GAIRA,EAAAA,EAAA,mBAKAA,EAAAA,EAAA,sBACH,CAVD,CAAY/sE,EAAA+sE,eAAA/sE,EAAAA,aAAY,mHCWxB,IAAAg1H,EAAA,WAGI,SAAAA,EAAoBkG,GAChBv0H,KAAKw0H,mBAAqBD,EAAUlrC,cACxC,CAiCJ,OA3BkBglC,EAAA3tB,eAAd,SAA6Bp9B,GAEzB,OAAO,IAAI+qD,EADM/qD,EAAWgkD,aAEhC,EAMO+G,EAAA7zH,UAAAy6E,UAAP,SAAiBC,GACbl1E,KAAKw0H,mBAAmBv/C,UAAUC,EACtC,EAMOm5C,EAAA7zH,UAAAi6H,WAAP,SAAkBlrB,GACdvpG,KAAKw0H,mBAAmBv/C,UAAUs0B,EACtC,EAKO8kB,EAAA7zH,UAAA2N,MAAP,WACInI,KAAKw0H,mBAAmBp/C,cAC5B,EACJi5C,CAAA,CAtCA,GAAah1H,EAAAA,kBAAAg1H,8GCXb,SAAYS,GACRA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,qBACAA,EAAAA,EAAA,YACH,CAJD,CAAYz1H,EAAAy1H,kBAAAz1H,EAAAA,gBAAe,iICH3B,IAAAsvD,EAAAlmC,EAAA,OACAylC,EAAAzlC,EAAA,MAuBA2vG,EAAA,WAaI,SAAAA,EAAmBsC,EACAC,EACAC,EACAC,QAFA,IAAAF,IAAAA,EAAsDzsE,EAAA8pE,qCAAqC8C,gBAC3F,IAAAF,IAAAA,EAAkD1sE,EAAAgqE,mCAAmC6C,cACrF,IAAAF,IAAAA,GAAA,GACflsE,EAAAO,UAAUC,uBAAuBurE,EAAe,iBAChD10H,KAAKsgG,eAAiB,IAAIp4C,EAAA6c,mBAC1B/kE,KAAKsgG,eAAetvC,YAAY9I,EAAA2M,WAAWmgE,sCAAuCN,GAClF10H,KAAKsgG,eAAetvC,YAAY9I,EAAA2M,WAAWogE,sCAAuC/sE,EAAA8pE,qCAAqC2C,IACvH30H,KAAKsgG,eAAetvC,YAAY9I,EAAA2M,WAAWqgE,oCAAqChtE,EAAAgqE,mCAAmC0C,IACnH50H,KAAKsgG,eAAetvC,YAAY9I,EAAA2M,WAAWsgE,qCAAsC5yH,OAAOsyH,GAC5F,CAqJJ,OA3IkBzC,EAAA3tD,SAAd,SAAuBp+C,GACnBsiC,EAAAO,UAAUC,uBAAuB9iC,EAAM,QACvC,IAAM9S,EAAS,IAAI6+G,EAA8B,IAGjD,OAFA7+G,EAAO+sF,eAAiB,IAAIp4C,EAAA6c,mBAC5BxxD,EAAO25D,WAAWlc,YAAY9I,EAAA2M,WAAWugE,6BAA8B/uG,GAChE9S,CACX,EAEO6+G,EAAA53H,UAAAyF,OAAP,WAEI,OADAD,KAAKq1H,aACEr1H,KAAKsgG,eAAe1rC,YAAY1M,EAAA2M,WAAWygE,+BACtD,EAEOlD,EAAA53H,UAAA+6H,QAAP,SAAejyD,GACXtjE,KAAKq1H,aACY/xD,EAAWgkD,aACnBn0C,cAAcqW,iCAAiCxpF,KAAKktE,WAAWtY,YAAY1M,EAAA2M,WAAWygE,gCACnG,EASA/6H,OAAAgsB,eAAW6rG,EAAA53H,UAAA,gBAAa,KAAxB,WACI,OAAOwF,KAAKktE,WAAWtY,YAAY1M,EAAA2M,WAAWmgE,sCAClD,MASA,SAAyBN,GACrB/rE,EAAAO,UAAUotC,wBAAwBo+B,EAAe,iBACjD10H,KAAKktE,WAAWlc,YAAY9I,EAAA2M,WAAWmgE,sCAAuCN,EAClF,kCAWAn6H,OAAAgsB,eAAW6rG,EAAA53H,UAAA,kBAAe,KAA1B,SAA2Bg7H,GACvB7sE,EAAAO,UAAUotC,wBAAwBk/B,EAAiB,mBACnDx1H,KAAKy1H,oBAAsBD,CAC/B,kCAUAj7H,OAAAgsB,eAAW6rG,EAAA53H,UAAA,eAAY,KAavB,WAEI,MAA6C,SADlBwF,KAAKktE,WAAWtY,YAAY1M,EAAA2M,WAAWsgE,qCAAsC,SAC7EruH,aAC/B,MAhBA,SAAwB+tH,GACpB,IAAMa,EAAqBb,EAAe,OAAS,QACnD70H,KAAKktE,WAAWlc,YAAY9I,EAAA2M,WAAWsgE,qCAAsCO,EACjF,kCAuBAn7H,OAAAgsB,eAAW6rG,EAAA53H,UAAA,oBAAiB,KAA5B,SAA6Bm7H,GACzB31H,KAAK41H,sBAAwBD,CACjC,kCASAp7H,OAAAgsB,eAAW6rG,EAAA53H,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCAEQ8xB,EAAA53H,UAAA66H,WAAR,WACI,IAAM3M,EAAa1oH,KAAKsgG,eAAe1rC,YAAY1M,EAAA2M,WAAWugE,6BAA8B,MACtFS,EAA0ClwH,KAAK9C,MAAM6lH,GAErDgM,EAAgB10H,KAAKsgG,eAAe1rC,YAAY1M,EAAA2M,WAAWmgE,uCAC7DN,IACAmB,EAAWnB,cAAgBA,GAG/B,IAAMC,EAAgB30H,KAAKsgG,eAAe1rC,YAAY1M,EAAA2M,WAAWogE,uCAC7DN,IACAkB,EAAWlB,cAAgBA,GAG/B,IAAMC,EAAc50H,KAAKsgG,eAAe1rC,YAAY1M,EAAA2M,WAAWqgE,qCAC3DN,IACAiB,EAAWjB,YAAcA,GAGzB50H,KAAKy1H,sBACLI,EAAWL,gBAAkBx1H,KAAKy1H,qBAGlCz1H,KAAK41H,wBACLC,EAAWF,kBAAoB31H,KAAK41H,uBAIxCC,EAAWC,UAAY,gBACvBD,EAAWhB,aAAe70H,KAAK60H,aAE/B70H,KAAKsgG,eAAetvC,YAAY9I,EAAA2M,WAAWygE,+BAAgC3vH,KAAKC,UAAUiwH,GAC9F,EAEJzD,CAAA,CA5KA,GAAa/4H,EAAAA,8BAAA+4H,mICpBb,SAAYJ,GAKRA,EAAAA,EAAA,yBAMAA,EAAAA,EAAA,4BACH,CAZD,CAAY34H,EAAA24H,uCAAA34H,EAAAA,qCAAoC,oICAhD,SAAY64H,GAKRA,EAAAA,EAAA,qBAMAA,EAAAA,EAAA,eAMAA,EAAAA,EAAA,sBACH,CAlBD,CAAY74H,EAAA64H,qCAAA74H,EAAAA,mCAAkC,gICL9C,IAAAsvD,EAAAlmC,EAAA,OACAylC,EAAAzlC,EAAA,MAoCA6vG,EAAA,WAGI,SAAAA,EAAoB5J,GAChB,IAAMrmH,EAAIsD,KAAK9C,MAAM6lH,GACrB//D,EAAAO,UAAUC,uBAAuB9mD,EAAEw8E,MAAM,GAAI,SAC7C7+E,KAAK+1H,aAAe1zH,EAAEw8E,MAAM,EAChC,CAyEJ,OA/DkByzC,EAAArM,WAAd,SAAyBjrH,GACrB2tD,EAAAO,UAAUC,uBAAuBnuD,EAAQ,UACzC,IAAMqrB,EAAerrB,EAAOkyE,WAAWtY,YAAY1M,EAAA2M,WAAWmQ,kCAE9D,OADArc,EAAAO,UAAUC,uBAAuB9iC,EAAM,QAChC,IAAIisG,EAA8BjsG,EAC7C,EASA9rB,OAAAgsB,eAAW+rG,EAAA93H,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAK+1H,YAChB,kCAUAx7H,OAAAgsB,eAAW+rG,EAAA93H,UAAA,gBAAa,KAAxB,WACI,OAAOwF,KAAKg2H,aAAaC,wBAAwBC,aACrD,kCAUA37H,OAAAgsB,eAAW+rG,EAAA93H,UAAA,qBAAkB,KAA7B,WACI,OAAOwF,KAAKg2H,aAAaC,wBAAwBE,SACrD,kCASA57H,OAAAgsB,eAAW+rG,EAAA93H,UAAA,oBAAiB,KAA5B,WACI,OAAOwF,KAAKg2H,aAAaC,wBAAwBG,iBACrD,kCASA77H,OAAAgsB,eAAW+rG,EAAA93H,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKg2H,aAAaC,wBAAwBI,YACrD,kCACJ/D,CAAA,CAhFA,GAAaj5H,EAAAA,8BAAAi5H,mHCrCb,IAAApqE,EAAAzlC,EAAA,MAMAsiD,EAAA,oBAAAA,IACY,KAAAuxD,SAAqB,GACrB,KAAAC,WAAuB,EA4GnC,QA9FWxxD,EAAAvqE,UAAAo6D,YAAP,SAAmB/2D,EAA0Bq8G,GACzC,IAAIsc,EAGAA,EADe,kBAAR34H,EACIA,EAEAqqD,EAAA2M,WAAWh3D,GAG1B,IAAK,IAAI4C,EAAI,EAAGA,EAAIT,KAAKs2H,SAASv8H,OAAQ0G,IACtC,GAAIT,KAAKs2H,SAAS71H,KAAO+1H,EACrB,OAAOx2H,KAAKu2H,WAAW91H,GAI/B,QAAYnE,IAAR49G,EAIJ,OAAO33G,OAAO23G,EAClB,EAUOn1C,EAAAvqE,UAAAw2D,YAAP,SAAmBnzD,EAA0BtC,GACzC,IAAIi7H,EAGAA,EADe,kBAAR34H,EACIA,EAEAqqD,EAAA2M,WAAWh3D,GAG1B,IAAK,IAAI4C,EAAI,EAAGA,EAAIT,KAAKs2H,SAASv8H,OAAQ0G,IACtC,GAAIT,KAAKs2H,SAAS71H,KAAO+1H,EAErB,YADAx2H,KAAKu2H,WAAW91H,GAAKlF,GAK7ByE,KAAKs2H,SAASp7H,KAAKs7H,GACnBx2H,KAAKu2H,WAAWr7H,KAAKK,EACzB,EASOwpE,EAAAvqE,UAAA+lG,MAAP,WAGI,IAFA,IAAMk2B,EAAY,IAAI1xD,EAEbtkE,EAAI,EAAGA,EAAIT,KAAKs2H,SAASv8H,OAAQ0G,IACtCg2H,EAAUH,SAASp7H,KAAK8E,KAAKs2H,SAAS71H,IACtCg2H,EAAUF,WAAWr7H,KAAK8E,KAAKu2H,WAAW91H,IAG9C,OAAOg2H,CACX,EASO1xD,EAAAvqE,UAAAk8H,QAAP,SAAeC,GAAf,IAAA5kH,EAAA,KACI/R,KAAKs2H,SAAS7tG,SAAQ,SAAC5qB,GACnB,QAA0DvB,IAAtDq6H,EAAsB/hE,YAAY/2D,OAAKvB,GAA0B,CACjE,IAAMf,EAAQwW,EAAK6iD,YAAY/2D,GAC/B84H,EAAsB3lE,YAAYnzD,EAAKtC,GAE/C,GACJ,EASAhB,OAAAgsB,eAAWw+C,EAAAvqE,UAAA,OAAI,KAAf,WACI,OAAOwF,KAAKs2H,QAChB,kCACJvxD,CAAA,CA9GA,GAAa1rE,EAAAA,mBAAA0rE,wGCFb,SAAYlQ,GASRA,EAAAA,EAAA,6DASAA,EAAAA,EAAA,uEAQAA,EAAAA,EAAA,mEASAA,EAAAA,EAAA,uEAMAA,EAAAA,EAAA,qEASAA,EAAAA,EAAA,2EASAA,EAAAA,EAAA,mGASAA,EAAAA,EAAA,uFAMAA,EAAAA,EAAA,6FAOAA,EAAAA,EAAA,+EAQAA,EAAAA,EAAA,kFAQAA,EAAAA,EAAA,0EAQAA,EAAAA,EAAA,kFAQAA,EAAAA,EAAA,kFAOAA,EAAAA,EAAA,wEAQAA,EAAAA,EAAA,gFASAA,EAAAA,EAAA,wCAMAA,EAAAA,EAAA,kFAMAA,EAAAA,EAAA,4EAMAA,EAAAA,EAAA,0FAOAA,EAAAA,EAAA,0GAQAA,EAAAA,EAAA,gHAMAA,EAAAA,EAAA,kHAMAA,EAAAA,EAAA,wEAOAA,EAAAA,EAAA,oFAMAA,EAAAA,EAAA,4DAMAA,EAAAA,EAAA,oEAMAA,EAAAA,EAAA,oFAMAA,EAAAA,EAAA,sGAOAA,EAAAA,EAAA,8DAMAA,EAAAA,EAAA,sGAMAA,EAAAA,EAAA,8FAeAA,EAAAA,EAAA,8EASAA,EAAAA,EAAA,4FASAA,EAAAA,EAAA,oFAMAA,EAAAA,EAAA,4GAOAA,EAAAA,EAAA,kFAOAA,EAAAA,EAAA,kFAOAA,EAAAA,EAAA,4FAMAA,EAAAA,EAAA,wGAMAA,EAAAA,EAAA,4GAMAA,EAAAA,EAAA,wFAMAA,EAAAA,EAAA,8HAOAA,EAAAA,EAAA,0FAOAA,EAAAA,EAAA,wGAOAA,EAAAA,EAAA,kGAMAA,EAAAA,EAAA,4DAMAA,EAAAA,EAAA,sDAMAA,EAAAA,EAAA,gFAMAA,EAAAA,EAAA,gDAMAA,EAAAA,EAAA,gEAMAA,EAAAA,EAAA,wFAOAA,EAAAA,EAAA,kFAOAA,EAAAA,EAAA,wFAOAA,EAAAA,EAAA,wEAMAA,EAAAA,EAAA,gEAKAA,EAAAA,EAAA,8DAMAA,EAAAA,EAAA,8DAMAA,EAAAA,EAAA,gFAOAA,EAAAA,EAAA,gEASAA,EAAAA,EAAA,kFAOAA,EAAAA,EAAA,kFAOAA,EAAAA,EAAA,8EASAA,EAAAA,EAAA,gFAOAA,EAAAA,EAAA,gEAOAA,EAAAA,EAAA,oEAMAA,EAAAA,EAAA,mEACH,CA7dD,CAAYx7D,EAAAw7D,aAAAx7D,EAAAA,WAAU,8dCJtB,IAMAo2E,EAAA,SAAA3pD,GASI,SAAA2pD,EAAmBtmC,EAAgB66B,GAAnC,IAAAjyD,EACI+T,EAAAprB,KAAA,KAAMspE,IAAU,YAEhBjyD,EAAK6kH,WAAaztF,GACtB,CAWJ,OAxB0C06B,EAAA4L,EAAA3pD,GAqBtCvrB,OAAAgsB,eAAWkpD,EAAAj1E,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAK42H,UAChB,kCACJnnD,CAAA,CAxBA,CANAhtD,EAAA,MAM0CgsD,kBAA7Bp1E,EAAAA,qBAAAo2E,gHCAb,IAAAs3C,EAAA,WA0BI,SAAAA,EAAmBz6C,EAAmBt+D,EAAuBmP,EAAe3F,EAChE2xB,EAAiB3wB,EAAmBstG,EAAsCpvC,EAAuBrwD,EAAe6mD,GACxHltE,KAAK62H,aAAevqD,EACpBtsE,KAAKssG,WAAat+F,EAClBhO,KAAK82H,SAAW35G,EAChBnd,KAAK+2H,aAAev/G,EACpBxX,KAAK42H,WAAaztF,EAClBnpC,KAAK+lH,aAAevtG,EACpBxY,KAAKgmH,gCAAkCF,EACvC9lH,KAAKknH,iBAAmBxwC,EACxB12E,KAAKg3H,SAAW3wG,EAChBrmB,KAAKsgG,eAAiBpzB,CAC1B,CA+GJ,OAtGI3yE,OAAAgsB,eAAWwgG,EAAAvsH,UAAA,WAAQ,KAAnB,WACI,OAAOwF,KAAK62H,YAChB,kCASAt8H,OAAAgsB,eAAWwgG,EAAAvsH,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKssG,UAChB,kCASA/xG,OAAAgsB,eAAWwgG,EAAAvsH,UAAA,OAAI,KAAf,WACI,OAAOwF,KAAK82H,QAChB,kCASAv8H,OAAAgsB,eAAWwgG,EAAAvsH,UAAA,WAAQ,KAAnB,WACI,OAAOwF,KAAK+2H,YAChB,kCASAx8H,OAAAgsB,eAAWwgG,EAAAvsH,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAK42H,UAChB,kCASAr8H,OAAAgsB,eAAWwgG,EAAAvsH,UAAA,WAAQ,KAAnB,WACI,OAAOwF,KAAK+lH,YAChB,kCASAxrH,OAAAgsB,eAAWwgG,EAAAvsH,UAAA,8BAA2B,KAAtC,WACI,OAAOwF,KAAKgmH,+BAChB,kCASAzrH,OAAAgsB,eAAWwgG,EAAAvsH,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKknH,gBAChB,kCASA3sH,OAAAgsB,eAAWwgG,EAAAvsH,UAAA,OAAI,KAAf,WACI,OAAOwF,KAAKg3H,QAChB,kCASAz8H,OAAAgsB,eAAWwgG,EAAAvsH,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCACJymB,CAAA,CArJA,GAAa1tH,EAAAA,kBAAA0tH,2+CCNb,IAAA7+D,EAAAzlC,EAAA,OAYAqnC,EAAArnC,EAAA,MAIAkmC,EAAAlmC,EAAA,OAGA4kD,EAAA5kD,EAAA,MAaAg/E,EAAA,WAYI,SAAAA,EAAsBzB,EAA0B9yB,EAAgC9J,GAC5EpjE,KAAKggG,iBAA+B1jG,IAAhB0jG,EAA6BA,EAAc34B,EAAAsxC,YAAYC,6BAC3E54G,KAAK4zH,cAAe,EACpB5zH,KAAKsgG,eAAiBpzB,EAAWqzB,QACjCvgG,KAAK4hF,sBAAwBxe,EAC7BpjE,KAAKi3H,2BACT,CA+LJ,OAvJWx1B,EAAAjnG,UAAAigC,MAAP,SAAansB,EAAiBglH,GAC1B3qE,EAAAO,UAAU63C,gBAAgB/gG,KAAK4zH,cAC/B9pE,EAAAw5C,0BAA0BtjG,KAAK86D,SAAQ,GAAOxsD,EAAIglH,EACtD,EAOA/4H,OAAAgsB,eAAWk7E,EAAAjnG,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKghG,QAChB,kCAYgBS,EAAAjnG,UAAAsgE,QAAhB,SAAwBsmC,6FACpB,OAAIphG,KAAK4zH,aACL,KAGJ5zH,KAAK4zH,cAAe,EAEhBxyB,GACIphG,KAAKghG,SACL,GAAMhhG,KAAKghG,SAAS5rC,YAAYtJ,WAFpC,cAGI,OADA1R,EAAApyB,OACA,GAAMhoB,KAAKghG,SAASlmC,kBAApB1gB,EAAApyB,0CAYZztB,OAAAgsB,eAAkBk7E,EAAA,mBAAgB,KAAlC,WACI,OAAOv5C,EAAAkf,sBAAsBsc,oBACjC,kCAYc+d,EAAAy1B,gBAAd,SAA8BC,GAC1BjvE,EAAAkf,sBAAsBsc,qBAAuByzC,CACjD,EAkBU11B,EAAAjnG,UAAAy8H,0BAAV,WAEI,IAAIG,EAAgC,qBAAXp4H,OAA0B,UAAY,OAC3Dq4H,EAAS,UACTC,EAAY,UAES,qBAAdznH,YACPunH,EAAaA,EAAa,IAAMvnH,UAAUysE,SAC1C+6C,EAASxnH,UAAUG,UACnBsnH,EAAYznH,UAAUxT,YAG1B,IAAMgnE,EAAmBrjE,KAAKqhG,uBAC1B,IAAIn5C,EAAAkmB,oBACA,IAAIlmB,EAAAmmB,QAAQ,IAAInmB,EAAAm0B,GAAG+6C,EAAYC,EAAQC,MAE/Ct3H,KAAKghG,SAAWhhG,KAAKshG,wBACjBG,EAAW81B,sBAAsBv3H,KAAKsgG,gBACtCtgG,KAAK4hF,sBACL5hF,KAAKggG,YACL38B,EACR,EAEgBo+B,EAAAjnG,UAAAs4H,uBAAhB,SAAuCtlD,qGAInC,OAHA7kB,EAAAO,UAAU63C,gBAAgB/gG,KAAK4zH,cACzB/kH,EAAyC,IAAIi7C,EAAAkD,SAEnD,GAAMhtD,KAAKmkG,6BACX,OADA/pD,EAAApyB,OACA,GAAMhoB,KAAKghG,SAASre,UAAUnV,EAAiB3+D,EAAIyR,QAASzR,EAAI0R,gBACxB,OADxC65B,EAAApyB,OACwC,GAAMnZ,EAAImT,gBAClD,OADMhnB,EAAkCo/C,EAAApyB,OACxC,GAAMhoB,KAAKmkG,6BAEX,OAFA/pD,EAAApyB,OAEO,CAAP,EAAOhtB,WAIKymG,EAAAjnG,UAAA+oG,oCAAhB,SAAoD/1B,6FAGhD,OAFA7kB,EAAAO,UAAU63C,gBAAgB/gG,KAAK4zH,cAE/B,GAAM5zH,KAAKmkG,6BACX,OADA/pD,EAAApyB,OACA,GAAMhoB,KAAKghG,SAASre,UAAUnV,OAAiBlxE,OAAWA,kBAA1D89C,EAAApyB,mBAGYy5E,EAAAjnG,UAAAipG,mCAAhB,qGAEI,OADA96C,EAAAO,UAAU63C,gBAAgB/gG,KAAK4zH,cAC/B,GAAM5zH,KAAKmkG,oCAAX/pD,EAAApyB,mBAGYy5E,EAAAjnG,UAAA2pG,mBAAhB,4GACQnkG,KAAKghG,SACL,GAAMhhG,KAAKghG,SAAS/d,mBADpB,aACA7oC,EAAApyB,wBAEJ,kBAGay5E,EAAA81B,sBAAjB,SAAuCrqD,GACnC,IAAM5U,EAAkB4U,EAAWtY,YAAYyS,EAAAxS,WAAWoyB,iCAA6B3qF,GAavF,OAZwBg8D,GAAuC,KAApBA,EACvC,IAAIpQ,EAAAuY,uCAAuCnI,GAC3C,IAAIpQ,EAAA6Y,8BACA,WACI,IAAM65B,EAAqB1tB,EAAWtY,YAAYyS,EAAAxS,WAAWwhC,sCAAkC/5F,GAC/F,OAAO+jB,QAAQC,QAAQs6E,EAC3B,IACA,WACI,IAAMA,EAAqB1tB,EAAWtY,YAAYyS,EAAAxS,WAAWwhC,sCAAkC/5F,GAC/F,OAAO+jB,QAAQC,QAAQs6E,EAC3B,GAGZ,EACJ6G,CAAA,CAjNA,GAAsBpoG,EAAAA,WAAAooG,2GC5BtB,SAAYl8B,GAMRA,EAAAA,EAAA,qBAOAA,EAAAA,EAAA,uBAMAA,EAAAA,EAAA,yCAOAA,EAAAA,EAAA,uCAOAA,EAAAA,EAAA,yCAMAA,EAAAA,EAAA,yCAOAA,EAAAA,EAAA,uCAMAA,EAAAA,EAAA,yCAOAA,EAAAA,EAAA,uCAMAA,EAAAA,EAAA,yCAMAA,EAAAA,EAAA,4DAMAA,EAAAA,EAAA,wDAMAA,EAAAA,EAAA,kDAMAA,EAAAA,EAAA,gDAMAA,EAAAA,EAAA,4CAMAA,EAAAA,EAAA,0CAMAA,EAAAA,EAAA,0CAMAA,EAAAA,EAAA,8CAMAA,EAAAA,EAAA,6CACH,CAxHD,CAAYlsE,EAAAksE,eAAAlsE,EAAAA,aAAY,0dCFxB,IAOAovH,EAAA,SAAA3iG,GASI,SAAA2iG,EAAmBpiG,EAAe5nB,EAAculE,GAAhD,IAAAjyD,EACI+T,EAAAprB,KAAA,KAAMspE,IAAU,YAChBjyD,EAAKq6F,eAAiB/lF,EACtBtU,EAAKylH,cAAgB/4H,GACzB,CASJ,OAtBsColE,EAAA4kD,EAAA3iG,GAelCvrB,OAAAgsB,eAAWkiG,EAAAjuH,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKosG,cAChB,kCAEA7xG,OAAAgsB,eAAWkiG,EAAAjuH,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKw3H,aAChB,kCACJ/O,CAAA,CAtBA,CAPAhmG,EAAA,MAOsCgsD,kBAAzBp1E,EAAAA,iBAAAovH,qHCLb,SAAYmG,GAIRA,EAAAA,EAAA,wCACH,CALD,CAAYv1H,EAAAu1H,yBAAAv1H,EAAAA,uBAAsB,iHCAlC,IAAAo1E,EAAA,WAQI,SAAAA,EAAmBzK,GACfhkE,KAAKy5E,cAAgBzV,CACzB,CAYJ,OAHIzpE,OAAAgsB,eAAWkoD,EAAAj0E,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKy5E,aAChB,kCACJhL,CAAA,CAtBA,GAAap1E,EAAAA,iBAAAo1E,qHCJb,IAAA9lB,EAAAlmC,EAAA,OAMA0tG,EAAA,WAII,SAAAA,EAAoB33G,EAAkBiwE,GAClC9/B,EAAAO,UAAUC,uBAAuB3wC,EAAU,YAC3CxY,KAAK+lH,aAAevtG,EACpBxY,KAAKy3H,eAAiBhvC,CAC1B,CAuBJ,OAXkB0nC,EAAAuH,aAAd,SAA2Bl/G,EAAkBiwE,GACzC,OAAO,IAAI0nC,EAAqB33G,EAAUiwE,EAC9C,EAEAluF,OAAAgsB,eAAW4pG,EAAA31H,UAAA,WAAQ,KAAnB,WACI,OAAOwF,KAAK+lH,YAChB,kCAEAxrH,OAAAgsB,eAAW4pG,EAAA31H,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKy3H,cAChB,kCACJtH,CAAA,CA/BA,GAAa92H,EAAAA,qBAAA82H,2HCNb,IAAAxnE,EAAAlmC,EAAA,OAEAylC,EAAAzlC,EAAA,MAUAotG,EAAA,WAII,SAAAA,EAAoBpmB,GAEhB,GALI,KAAAkuB,kBAAoC,GACpC,KAAAC,eAA2B,GAG/BjvE,EAAAO,UAAUC,uBAAuBsgD,EAAU,iBACnB,IAApBA,EAAS1vG,OACT,MAAM,IAAIsJ,MAAM,8BAEpB,IAAsB,IAAA46C,EAAA,EAAA45E,EAAApuB,EAAAxrD,EAAA45E,EAAA99H,OAAAkkD,IAAU,CAA3B,IAAM+pD,EAAO6vB,EAAA55E,GACd,GAAI+pD,EAAQJ,cAAgB1/C,EAAA8gD,iBAAiBC,8BACzC,MAAM,IAAI5lG,MAAM,yEAA2E2kG,EAAQK,WAEvGroG,KAAK23H,kBAAkBz8H,KAAK8sG,GAC5BhoG,KAAK43H,eAAe18H,KAAK8sG,EAAQK,WAEzC,CAgBJ,OAfkBwnB,EAAAiI,aAAd,SAA2BruB,GACvB,OAAO,IAAIomB,EAA2BpmB,EAC1C,EAEAlvG,OAAAgsB,eAAWspG,EAAAr1H,UAAA,kBAAe,KAA1B,WACI,OAAOwF,KAAK43H,eAAen6H,KAAK,IACpC,kCAEAlD,OAAAgsB,eAAWspG,EAAAr1H,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAK43H,cAChB,kCAEAr9H,OAAAgsB,eAAWspG,EAAAr1H,UAAA,WAAQ,KAAnB,WACI,MAAO,+BACX,kCACJq1H,CAAA,CAhCA,GAAax2H,EAAAA,2BAAAw2H,siBCXb,IAUYQ,EAVZnoE,EAAAzlC,EAAA,OACAqnC,EAAArnC,EAAA,OASA,SAAY4tG,GACRA,EAAAA,EAAA,mBACAA,EAAAA,EAAA,sBACH,CAHD,CAAYA,EAAAh3H,EAAAg3H,+BAAAh3H,EAAAA,6BAA4B,KASxC,IAAAmuF,EAAA,WAOI,SAAAA,EAAmBhoE,EAA2BklD,EAA6DiB,EAA8E+Q,QAA3I,IAAAhS,IAAAA,EAA6B5a,EAAAyb,aAAakiB,wBAAmB,IAAA9hB,IAAAA,EAA+C7b,EAAA0hB,sBAAsBC,cAAS,IAAAiL,IAAAA,EAAA,IACrL12E,KAAKsgG,eAAiB,IAAIx2C,EAAAib,mBAC1B,IAAM4lB,EAAmC,kCAAtBnrE,EAASunE,SAA+CspC,EAA6B0H,SAAW1H,EAA6B2H,OAChJh4H,KAAKssG,WAAa5nC,EACd1kE,KAAKssG,aAAexiD,EAAAyb,aAAaC,SAC7BmlB,IAAe0lC,EAA6B0H,UAC5C/3H,KAAKi4H,cAAgBz4G,EAAS04G,qBAAqBC,kBAAkB9vB,UACrEroG,KAAKo4H,UAAY54G,EAAS04G,qBAAqBC,kBAAkBE,MACjEr4H,KAAKssG,WAAaxiD,EAAAyb,aAAa+yD,qBAE/Bt4H,KAAKo4H,UAAY54G,EAAS+4G,mBAAmBF,MACuB,WAAhE74G,EAAS+4G,mBAAmBC,kBAAkB1xH,gBAC9C9G,KAAKssG,WAAaxiD,EAAAyb,aAAaS,cAEW1pE,IAA1CkjB,EAAS+4G,mBAAmBlwB,WAAqE,KAA1C7oF,EAAS+4G,mBAAmBlwB,YACnFroG,KAAKi4H,cAAgBz4G,EAAS+4G,mBAAmBlwB,aAIzDroG,KAAKknH,iBAAmBxwC,EACxB12E,KAAKsgG,eAAetvC,YAAY9I,EAAAilB,kCAAmCrjB,EAAA0hB,sBAAsB7F,KAE7F3lE,KAAKsgG,eAAetvC,YAAYlH,EAAA+K,WAAWmQ,iCAAkCr/D,KAAKC,UAAU4Z,GAChG,CAqBJ,OAnBIjlB,OAAAgsB,eAAWihE,EAAAhtF,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCAEA/lG,OAAAgsB,eAAWihE,EAAAhtF,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKssG,UAChB,kCAEA/xG,OAAAgsB,eAAWihE,EAAAhtF,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKi4H,aAChB,kCAEA19H,OAAAgsB,eAAWihE,EAAAhtF,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKknH,gBAChB,kCAEA3sH,OAAAgsB,eAAWihE,EAAAhtF,UAAA,QAAK,KAAhB,WACI,OAAOwF,KAAKo4H,SAChB,kCACJ5wC,CAAA,CAnDA,GAAanuF,EAAAA,yBAAAmuF,EAwDb,IAAA8oC,EAAA,SAAAxqG,GAEI,SAAAwqG,EAAoBtiH,EAA4B0oE,EAAsBpS,UAClEx+C,EAAAprB,KAAA,KAAMsT,EAAQ0oE,EAAcpS,IAAU,IAC1C,CAoBJ,OAxB2DT,EAAAysD,EAAAxqG,GAczCwqG,EAAArK,WAAd,SAAyBjrH,GACrB,IAAMgT,EAAS87C,EAAAyhB,mBAAmBloE,MAC9BihE,EAAmCxa,EAAA0hB,sBAAsBC,QAM7D,OAJMzwE,EAAOkyE,aACT5I,EAAYxa,EAAA0hB,sBAAsBxwE,EAAOkyE,WAAWtY,YAAY1M,EAAAilB,kCAAmCrjB,EAAA0hB,sBAAsB1hB,EAAA0hB,sBAAsBC,YAG5I,IAAI6kD,EAAsCtiH,EAAQhT,EAAO07E,aAAcpS,EAClF,EACJgsD,CAAA,CAxBA,CAA2DxmE,EAAAm9D,yBAA9C5tH,EAAAA,sCAAAi3H,o1DC5Eb,IAAApoE,EAAAzlC,EAAA,OAWAkmC,EAAAlmC,EAAA,OACAqnC,EAAArnC,EAAA,MAeAktG,EAAA,SAAA7pG,GAUI,SAAA6pG,EAAmB5vB,EAA4BC,GAA/C,IAAAjuF,EAAA,KACI42C,EAAAO,UAAUC,uBAAuB42C,EAAc,gBAC/C,IAAMqE,EAA+BrE,SACrCp3C,EAAAO,UAAUC,uBAAuBi7C,EAAY,iBAE7CryF,EAAA+T,EAAAprB,KAAA,KAAMslG,EAAaoE,EAAWl3B,WAAY,IAAIhlB,EAAAg/B,sCAAsC,MAC/EuxC,oBAAsBz4B,EAC3Br3C,EAAAO,UAAUi3C,YAAYpuF,EAAK0mH,oBAAqB,eAEhD1mH,EAAK2mH,+BAAgC,EACrC3mH,EAAKuuF,eAAiB8D,EAAWl3B,YACrC,CAoGJ,OAzHuCrJ,EAAA8rD,EAAA7pG,GA8BnCvrB,OAAAgsB,eAAWopG,EAAAn1H,UAAA,qBAAkB,KAA7B,WACI,OAAOwF,KAAKktE,WAAWtY,YAAY9K,EAAA+K,WAAWwhC,iCAClD,MASA,SAA8BxsD,GAC1B8e,EAAAO,UAAUotC,wBAAwBzsD,EAAO,SACzC7pC,KAAKktE,WAAWlc,YAAYlH,EAAA+K,WAAWwhC,iCAAkCxsD,EAC7E,kCASAtvC,OAAAgsB,eAAWopG,EAAAn1H,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCAYaqvB,EAAAn1H,UAAAm4H,mBAAb,SAAgCjmE,sEAG5B,OAFA/D,EAAAO,UAAU63C,gBAAgB/gG,KAAK04H,+BAExB,CAAP,EAAO14H,KAAK24H,8BAA8BjsE,WAUjCijE,EAAAn1H,UAAAigC,MAAb,qGAEI,OADAkuB,EAAAO,UAAU63C,gBAAgB/gG,KAAK04H,+BAC/B,GAAM14H,KAAK86D,SAAQ,kBAAnB1gB,EAAApyB,mBAGY2nG,EAAAn1H,UAAAm+H,8BAAhB,SAA8CjsE,mGAG1C,OAFA/D,EAAAO,UAAU63C,gBAAgB/gG,KAAK04H,+BAE/B,GAAM14H,KAAKmkG,6BAC8B,OADzC/pD,EAAApyB,OACyC,GAAMhoB,KAAKghG,SAASxf,iBAAiB90B,WAC9E,OADM1xD,EAAmCo/C,EAAApyB,OACzC,GAAMhoB,KAAKmkG,6BAEX,OAFA/pD,EAAApyB,OAEO,CAAP,EAAOhtB,WAGK20H,EAAAn1H,UAAA2pG,mBAAhB,4GACQnkG,KAAKghG,SACL,GAAMhhG,KAAKghG,SAAS/d,mBADpB,aACA7oC,EAAApyB,wBAEJ,kBAGM2nG,EAAAn1H,UAAA6mG,uBAAV,SAAiCtB,GAC7B,OAAO,IAAI73C,EAAA0yB,iBAAiBmlB,EAAc//F,KAAKsgG,eACnD,EAEUqvB,EAAAn1H,UAAA8mG,wBAAV,SAAkCn+B,EAAiCC,EAAuC48B,EAA0B38B,GAChI,IAAMkwD,EAA6BvzB,EACnC,OAAO,IAAI93C,EAAAk/B,yBAAyBjkB,EAAgBC,EAAmBmwD,EAAWlwD,EAAkBrjE,KACxG,EAEgB2vH,EAAAn1H,UAAAsgE,QAAhB,SAAwBsmC,6FACpB,OAAIphG,KAAK04H,8BACL,IAGAt3B,GACAphG,KAAK04H,+BAAgC,EACrC,GAAM5yG,EAAAtrB,UAAMsgE,QAAOpgE,KAAC,KAAA0mG,KAFpB,aAEAhnD,EAAApyB,0CAGZ2nG,CAAA,CAzHA,CAAuC7lE,EAAA23C,YAA1BpoG,EAAAA,kBAAAs2H,yHC3Bb,IAAAhnE,EAAAlmC,EAAA,OAEAylC,EAAAzlC,EAAA,MAUAstG,EAAA,WAGI,SAAAA,EAAoB/nB,GAEhB,GADAr/C,EAAAO,UAAUC,uBAAuB6+C,EAAS,gBACtCA,EAAQJ,cAAgB1/C,EAAA8gD,iBAAiBC,8BACzC,MAAM,IAAI5lG,MAAM,oEAEpBrD,KAAK44H,iBAAmB5wB,CAC5B,CAqBJ,OAnBkB+nB,EAAA8I,YAAd,SAA0B7wB,GACtB,OAAO,IAAI+nB,EAAyB/nB,EACxC,EAEAztG,OAAAgsB,eAAWwpG,EAAAv1H,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAK44H,gBAChB,kCAEAr+H,OAAAgsB,eAAWwpG,EAAAv1H,UAAA,aAAU,KAArB,WACI,MAAO,CAAEwF,KAAK84H,aAAazwB,UAC/B,kCAEA9tG,OAAAgsB,eAAWwpG,EAAAv1H,UAAA,WAAQ,KAAnB,WACI,OAAIwF,KAAK84H,aAAalxB,cAAgB1/C,EAAA8gD,iBAAiB+vB,0BAC5C,4BAEA,6BAEf,kCACJhJ,CAAA,CA9BA,GAAa12H,EAAAA,yBAAA02H,seCXb,IAAA7nE,EAAAzlC,EAAA,OAMAkmC,EAAAlmC,EAAA,OACAqnC,EAAArnC,EAAA,MAaAmqG,EAAA,WAKI,SAAAA,IAEA,CAuWJ,OA3VkBA,EAAAxG,iBAAd,SAA+B9tD,EAAyBkJ,GACpD7Y,EAAAO,UAAUotC,wBAAwBh+B,EAAiB,mBACnD3P,EAAAO,UAAUotC,wBAAwB90B,EAAQ,UAE1C,IAAMw3D,EAA+B,IAAI/O,EAKzC,OAJA+O,EAAWhoE,YAAYlH,EAAA+K,WAAWiT,+BAAgCtG,GAClEw3D,EAAWhoE,YAAYlH,EAAA+K,WAAWuiB,qCAAsC5V,GACxEw3D,EAAWhoE,YAAYlH,EAAA+K,WAAWoyB,4BAA6B3uB,GAExD0gE,CACX,EAqBcpM,EAAAhG,aAAd,SAA2BvwG,EAAeiiD,GACtC3P,EAAAO,UAAUi3C,YAAY9pF,EAAU,YAEhC,IAAM2iH,EAA+B,IAAI/O,EAMzC,OALA+O,EAAWhoE,YAAYlH,EAAA+K,WAAW8T,iCAAkCtyD,EAASgD,WAEzE/c,IAAcg8D,GACd0gE,EAAWhoE,YAAYlH,EAAA+K,WAAWoyB,4BAA6B3uB,GAE5D0gE,CACX,EAiBcpM,EAAAlG,SAAd,SAAuBuS,EAAe3gE,GAClC3P,EAAAO,UAAUi3C,YAAY84B,EAAU,YAEhC,IAAMD,EAA+B,IAAI/O,EAMzC,OALA+O,EAAWhoE,YAAYlH,EAAA+K,WAAWgU,6BAA8BowD,EAASziH,SAAW,KAAOyiH,EAASlF,UAA8B,KAAlBkF,EAAS74F,KAAc,GAAK,IAAM64F,EAAS74F,YAEvJ9jC,IAAcg8D,GACd0gE,EAAWhoE,YAAYlH,EAAA+K,WAAWoyB,4BAA6B3uB,GAE5D0gE,CACX,EAkBcpM,EAAAnG,uBAAd,SAAqC7rB,EAA4Bp5B,GAC7D7Y,EAAAO,UAAUi3C,YAAYvF,EAAoB,sBAC1CjyC,EAAAO,UAAUotC,wBAAwB90B,EAAQ,UAE1C,IAAMw3D,EAA+B,IAAI/O,EAIzC,OAHA+O,EAAWhoE,YAAYlH,EAAA+K,WAAWiT,+BAAgCtG,GAClEw3D,EAAWhoE,YAAYlH,EAAA+K,WAAWuiB,qCAAsC5V,GACxEw3D,EAAWp+B,mBAAqBA,EACzBo+B,CACX,EA6HOpM,EAAApyH,UAAAigC,MAAP,WAAuB,EA+H3BmyF,CAAA,CA9WA,GAAsBvzH,EAAAA,aAAAuzH,EAoXtB,IAAA3C,EAAA,SAAAnkG,GAII,SAAAmkG,IAAA,IAAAl4G,EACI+T,EAAAprB,KAAA,OAAO,YACPqX,EAAKuuF,eAAiB,IAAIx2C,EAAAib,mBAC1BhzD,EAAKkxF,0BAA4B,QACjClxF,EAAKg/E,aAAejnC,EAAAsc,aAAaC,QACrC,CAiIJ,OA1IsCxC,EAAAomD,EAAAnkG,GAWlCvrB,OAAAgsB,eAAW0jG,EAAAzvH,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCAEA/lG,OAAAgsB,eAAW0jG,EAAAzvH,UAAA,WAAQ,KAAnB,WACI,OAAO,IAAIitB,IAAIznB,KAAKsgG,eAAe1rC,YAAY9K,EAAA+K,WAAW8T,kCAC9D,kCAEApuE,OAAAgsB,eAAW0jG,EAAAzvH,UAAA,kBAAe,KAA1B,WACI,OAAOwF,KAAKsgG,eAAe1rC,YAAY9K,EAAA+K,WAAWoyB,4BACtD,kCAEA1sF,OAAAgsB,eAAW0jG,EAAAzvH,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKsgG,eAAe1rC,YAAY9K,EAAA+K,WAAWiT,+BACtD,kCAEAvtE,OAAAgsB,eAAW0jG,EAAAzvH,UAAA,qBAAkB,KAA7B,WACI,OAAOwF,KAAKsgG,eAAe1rC,YAAY9K,EAAA+K,WAAWwhC,iCACtD,MAEA,SAA8B96F,GAC1ByE,KAAKsgG,eAAetvC,YAAYlH,EAAA+K,WAAWwhC,iCAAkC96F,EACjF,kCAEAhB,OAAAgsB,eAAW0jG,EAAAzvH,UAAA,4BAAyB,KAApC,WACI,OAAOwF,KAAKsgG,eAAe1rC,YAAY9K,EAAA+K,WAAWkT,qCACtD,MAEA,SAAqCxsE,GACjCyE,KAAKsgG,eAAetvC,YAAYlH,EAAA+K,WAAWkT,qCAAsCxsE,EACrF,kCAEAhB,OAAAgsB,eAAW0jG,EAAAzvH,UAAA,4BAAyB,KAApC,WACI,OAAOwF,KAAKsgG,eAAe1rC,YAAY9K,EAAA+K,WAAW0mB,kDACtD,MAEA,SAAqChgF,GACjCyE,KAAKsgG,eAAetvC,YAAYlH,EAAA+K,WAAW0mB,kDAAmDhgF,EAClG,kCAEAhB,OAAAgsB,eAAW0jG,EAAAzvH,UAAA,eAAY,KAAvB,WACI,OAAOsvD,EAAAsc,aAAapmE,KAAKsgG,eAAe1rC,YAAY1M,EAAAie,8BAA0B7pE,GAClF,MAEA,SAAwBf,GACpByE,KAAKsgG,eAAetvC,YAAY9I,EAAAie,yBAA0Brc,EAAAsc,aAAa7qE,GAC3E,kCAEAhB,OAAAgsB,eAAW0jG,EAAAzvH,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,eAAe1rC,YAAY9K,EAAA+K,WAAWgnB,mCACtD,MAEA,SAAsBtgF,GAClByE,KAAKsgG,eAAetvC,YAAYlH,EAAA+K,WAAWgnB,mCAAoCtgF,EACnF,kCAEO0uH,EAAAzvH,UAAAw2D,YAAP,SAAmBvyD,EAA2BlD,GAC1CotD,EAAAO,UAAUi3C,YAAY5kG,EAAO,SAE7ByE,KAAKsgG,eAAetvC,YAAYvyD,EAAMlD,EAC1C,EAEO0uH,EAAAzvH,UAAAo6D,YAAP,SAAmBn2D,EAA2By7G,GAE1C,OAAOl6G,KAAKsgG,eAAe1rC,YAAYn2D,EAAMy7G,EACjD,EAIO+P,EAAAzvH,UAAA0vH,SAAP,SAAgBh2D,EAAoBC,EAAgBC,EAAqBC,GACrEr0D,KAAKgxD,YAAYlH,EAAA+K,WAAW/K,EAAA+K,WAAWC,uCAAwCZ,GAC/El0D,KAAKgxD,YAAYlH,EAAA+K,WAAW/K,EAAA+K,WAAWE,mCAAoCZ,GAC3En0D,KAAKgxD,YAAYlH,EAAA+K,WAAW/K,EAAA+K,WAAWG,uCAAwCZ,GAC/Ep0D,KAAKgxD,YAAYlH,EAAA+K,WAAW/K,EAAA+K,WAAWI,uCAAwCZ,EACnF,EAEO41D,EAAAzvH,UAAA2vH,mBAAP,SAA0B1rH,EAAclD,GACpC,IAAM29H,EAA+CvzH,KAAK9C,MAAM7C,KAAKsgG,eAAe1rC,YAAY1M,EAAA8a,8BAA+B,OAE/Hk2D,EAAkBz6H,GAAQlD,EAE1ByE,KAAKsgG,eAAetvC,YAAY9I,EAAA8a,8BAA+Br9D,KAAKC,UAAUszH,GAClF,EAEOjP,EAAAzvH,UAAA2+H,aAAP,SAAoBjhE,GAChBl4D,KAAKsgG,eAAetvC,YAAYlH,EAAA+K,WAAWyN,sCAAuCxY,EAAAglE,gBAAgB52D,GACtG,EAEO+xD,EAAAzvH,UAAA4+H,mBAAP,WACIp5H,KAAKsgG,eAAetvC,YAAYlH,EAAA+K,WAAWiN,2CAA4C,OAC3F,EACOmoD,EAAAzvH,UAAA6+H,2BAAP,WACIr5H,KAAKsgG,eAAetvC,YAAYlH,EAAA+K,WAAW2N,iDAAkD,OACjG,EACOynD,EAAAzvH,UAAA8+H,gBAAP,WACIt5H,KAAKsgG,eAAetvC,YAAY9I,EAAAygC,2BAA4B,OAChE,EAEOshC,EAAAzvH,UAAA+lG,MAAP,WACI,IAAM1xF,EAAwB,IAAIo7G,EAElC,OADAp7G,EAAIyxF,eAAiBtgG,KAAKsgG,eAAeC,QAClC1xF,CACX,EAEAtU,OAAAgsB,eAAW0jG,EAAAzvH,UAAA,0BAAuB,KAAlC,WACI,OAAOwF,KAAKsgG,eAAe1rC,YAAY9K,EAAA+K,WAAW0kE,sCACtD,MAEA,SAAmC/gH,GAC/BxY,KAAKsgG,eAAetvC,YAAYlH,EAAA+K,WAAW0kE,sCAAuC/gH,EACtF,kCAEAje,OAAAgsB,eAAW0jG,EAAAzvH,UAAA,2BAAwB,KAAnC,WACI,OAAOwF,KAAKsgG,eAAe1rC,YAAY9K,EAAA+K,WAAW2kE,mCACtD,MAEA,SAAoCl0B,GAChCtlG,KAAKsgG,eAAetvC,YAAYlH,EAAA+K,WAAW2kE,mCAAoCl0B,EACnF,kCAEA/qG,OAAAgsB,eAAW0jG,EAAAzvH,UAAA,8BAA2B,KAAtC,WACI,OAAOsvD,EAAA0zD,4BAA4Bx9G,KAAKsgG,eAAe1rC,YAAY9K,EAAA+K,WAAWwd,+CAA2C/1E,GAC7H,MAEA,SAAuCm0C,GACnCzwC,KAAKsgG,eAAetvC,YAAYlH,EAAA+K,WAAWwd,0CAA2CvoB,EAAA0zD,4BAA4B/sE,GACtH,kCACJw5E,CAAA,CA1IA,CAAsC2C,GAAzBvzH,EAAAA,iBAAA4wH,yeCzYb,IAIA58C,EAAA,SAAAvnD,GAAA,SAAAunD,kDACA,QADwDxJ,EAAAwJ,EAAAvnD,GACxDunD,CAAA,CADA,CAJA5qD,EAAA,OAIwD2kG,2BAA3C/tH,EAAAA,mCAAAg0E,sgBCHb,IAMAtB,EAAA,SAAAjmD,GAUI,SAAAimD,EAAmB/wE,EAAiCmuC,EAAiB66B,GAArE,IAAAjyD,EACI+T,EAAAprB,KAAA,KAAMyuC,EAAQ66B,IAAU,YAExBjyD,EAAK+gG,WAAa93G,GACtB,CAYJ,OA1BgD6oE,EAAAkI,EAAAjmD,GAuB5CvrB,OAAAgsB,eAAWwlD,EAAAvxE,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAK8yG,UAChB,kCACJ/mC,CAAA,CA1BA,CANAtpD,EAAA,MAMgDgtD,sBAAnCp2E,EAAAA,2BAAA0yE,EAgCb,IAAAqgD,EAAA,SAAAtmG,GAAA,SAAAsmG,kDACA,QADwDvoD,EAAAuoD,EAAAtmG,GACxDsmG,CAAA,CADA,CAAwDrgD,GAA3C1yE,EAAAA,mCAAA+yH,8dCvCb,IAMA9lD,EAAA,SAAAxgD,GAkBI,SAAAwgD,EAAmBgG,EAAmBt+D,EAAuBmP,EAC1C3F,EAAmB2xB,EAAiB3wB,EACpCstG,EAAsC2T,EAAoB/iD,EAC1DrwD,EAAe6mD,GAHlC,IAAAn7D,EAII+T,EAAAprB,KAAA,KAAM4xE,EAAUt+D,EAAQmP,EAAM3F,EAAU2xB,EAAQ3wB,EAAUstG,EAA6BpvC,EAAcrwD,EAAM6mD,IAAW,YACtHn7D,EAAK2nH,cAAgBD,GACzB,CAaJ,OArC6C51D,EAAAyC,EAAAxgD,GAiCzCvrB,OAAAgsB,eAAW+/C,EAAA9rE,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAK05H,aAChB,kCAEJpzD,CAAA,CArCA,CANA7jD,EAAA,MAM6CskG,mBAAhC1tH,EAAAA,wBAAAitE,m1DCNb,IAAApe,EAAAzlC,EAAA,OAWAqnC,EAAArnC,EAAA,MAEAkmC,EAAAlmC,EAAA,OACA4kD,EAAA5kD,EAAA,MAkBAyqG,EAAA,SAAApnG,GASI,SAAAonG,EAAmBntB,EAA4BC,GAA/C,IAAAjuF,EAAA,KACU4nH,EAAqC55B,SAC3Cp3C,EAAAO,UAAUi3C,YAAYw5B,EAAkB,gBAExChxE,EAAAO,UAAUotC,wBACNqjC,EAAiBzsD,WAAWtY,YAAYyS,EAAAxS,WAAWkT,sCACnDV,EAAAxS,WAAWwS,EAAAxS,WAAWkT,wCAE1Bh2D,EAAA+T,EAAAprB,KAAA,KAAMslG,EAAa25B,EAAiBzsD,WAAY,IAAIhlB,EAAAkgC,0BAA0B,MACzE8a,wBAAyB,GAClC,CA+OJ,OAlQsCr/B,EAAAqpD,EAAApnG,GA4BpBonG,EAAA0M,WAAd,SAAyB75B,EAA4B85B,EAAgE75B,GACjH,IAAM25B,EAAqC55B,EAG3C,OAFA85B,EAA+B3sD,WAAWwpD,QAAQiD,EAAiBzsD,YAChD,IAAIggD,EAAiBntB,EAAcC,EAE1D,EAiCAzlG,OAAAgsB,eAAW2mG,EAAA1yH,UAAA,aAAU,KAArB,WAGI,OAFAmuD,EAAAO,UAAU63C,gBAAgB/gG,KAAKkjG,wBAExBljG,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWgnB,mCAAoC,uCACtF,kCASAthF,OAAAgsB,eAAW2mG,EAAA1yH,UAAA,qBAAkB,KAA7B,WACI,OAAOwF,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWwhC,iCAClD,MASA,SAA8BxsD,GAC1B8e,EAAAO,UAAUotC,wBAAwBzsD,EAAO,SACzC7pC,KAAKktE,WAAWlc,YAAYqW,EAAAxS,WAAWwhC,iCAAkCxsD,EAC7E,kCASAtvC,OAAAgsB,eAAW2mG,EAAA1yH,UAAA,4BAAyB,KAApC,WAGI,OAFAmuD,EAAAO,UAAU63C,gBAAgB/gG,KAAKkjG,wBAExBljG,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWkT,qCAClD,kCASAxtE,OAAAgsB,eAAW2mG,EAAA1yH,UAAA,eAAY,KAAvB,WAGI,OAFAmuD,EAAAO,UAAU63C,gBAAgB/gG,KAAKkjG,wBAE3BljG,KAAKktE,WAAWtY,YAAY1M,EAAAie,yBAA0BkB,EAAAjB,aAAaiB,EAAAjB,aAAaC,WAAagB,EAAAjB,aAAaiB,EAAAjB,aAAaC,QAChHgB,EAAAjB,aAAaC,OAEbgB,EAAAjB,aAAaouB,QAE5B,kCASAj6F,OAAAgsB,eAAW2mG,EAAA1yH,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCAcO4sB,EAAA1yH,UAAAm4H,mBAAP,SAA0BrkH,EAA2CjI,GACjEyjD,EAAAw5C,0BAA0BtjG,KAAK8yH,uBAAuB5qE,EAAAwyB,gBAAgBW,aAAc/sE,EAAIjI,EAC5F,EAWO6mH,EAAA1yH,UAAA6oG,gCAAP,SAAuC/0F,EAAiBjI,GACpDyjD,EAAAw5C,0BAA0BtjG,KAAKujG,oCAAoCr7C,EAAAwyB,gBAAgBgO,cAAep6E,EAAIjI,EAC1G,EAUO6mH,EAAA1yH,UAAAgpG,+BAAP,SAAsCl1F,EAAiBjI,GACnDyjD,EAAAw5C,0BAA0BtjG,KAAKyjG,qCAAsCn1F,EAAIjI,EAC7E,EAgBO6mH,EAAA1yH,UAAAu4H,6BAAP,SAAoCrmE,EAAgCp+C,EAAiBjI,GACjFsiD,EAAAO,UAAUi3C,YAAYzzC,EAAO,SAEvBrmD,GACFA,EAAI,uBAEZ,EAYO6mH,EAAA1yH,UAAAw4H,4BAAP,SAAmC1kH,GACzBA,GACFA,GAER,EAQO4+G,EAAA1yH,UAAAigC,MAAP,SAAansB,EAAiBglH,GAC1B3qE,EAAAO,UAAU63C,gBAAgB/gG,KAAKkjG,wBAC/Bp5C,EAAAw5C,0BAA0BtjG,KAAK86D,SAAQ,GAAOxsD,EAAIglH,EACtD,EASgBpG,EAAA1yH,UAAAsgE,QAAhB,SAAwBsmC,6FACpB,OAAIphG,KAAKkjG,uBACL,IAGA9B,GACAphG,KAAKkjG,wBAAyB,EAC9B,GAAMljG,KAAKmkG,uBAFX,aAEA/pD,EAAApyB,wBAGJ,SAAMlC,EAAAtrB,UAAMsgE,QAAOpgE,KAAC,KAAA0mG,kBAApBhnD,EAAApyB,mBAGMklG,EAAA1yH,UAAA6mG,uBAAV,SAAiCtB,GAC7B,OAAO,IAAI73C,EAAA0yB,iBAAiBmlB,EAAc//F,KAAKsgG,eACnD,EAEU4sB,EAAA1yH,UAAA8mG,wBAAV,SACIn+B,EACAC,EACA48B,EACA38B,GACA,IAAM+gC,EAA8BpE,EACpC,OAAO,IAAI93C,EAAA8hC,wBAAwB7mB,EAAgBC,EAAmBghC,EAAY/gC,EAAkBrjE,KACxG,EACJktH,CAAA,CAlQA,CAAsC7lD,EAAAo6B,YAAzBpoG,EAAAA,iBAAA6zH,+HC3Bb,IAAAl+B,EAAA,WAUI,SAAAA,EAAmB8qC,EAAqB38G,GACpCnd,KAAK+5H,gBAAkBD,EACvB95H,KAAK82H,SAAW35G,CACpB,CAuBJ,OAdI5iB,OAAAgsB,eAAWyoE,EAAAx0F,UAAA,cAAW,KAAtB,WACI,OAAOwF,KAAK+5H,eAChB,kCASAx/H,OAAAgsB,eAAWyoE,EAAAx0F,UAAA,OAAI,KAAf,WACI,OAAOwF,KAAK82H,QAChB,kCACJ9nC,CAAA,CApCA,GAAa31F,EAAAA,iCAAA21F,wHCAb,SAAYwiC,GAKRA,EAAA,oBAMAA,EAAA,kCAMAA,EAAA,2BACH,CAlBD,CAAYn4H,EAAAm4H,8BAAAn4H,EAAAA,4BAA2B,0HCEvC,IAAA+zF,EAAA,WAQI,SAAAA,EAAmBpyF,GACfgF,KAAK8yG,WAAa93G,CACtB,CAYJ,OAHIT,OAAAgsB,eAAW6mE,EAAA5yF,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAK8yG,UAChB,kCACJ1lB,CAAA,CAtBA,GAAa/zF,EAAAA,yBAAA+zF,0HCFb,SAAYowB,GAKRA,EAAAA,EAAA,+CAOAA,EAAAA,EAAA,uDAOAA,EAAAA,EAAA,yDAMAA,EAAAA,EAAA,6DAMAA,EAAAA,EAAA,+DAMAA,EAAAA,EAAA,6DAMAA,EAAAA,EAAA,6DAMAA,EAAAA,EAAA,6DAMAA,EAAAA,EAAA,+DAMAA,EAAAA,EAAA,yDAMAA,EAAAA,EAAA,kDAMAA,EAAAA,EAAA,gDAMAA,EAAAA,EAAA,kDAMAA,EAAAA,EAAA,kDAMAA,EAAAA,EAAA,gDAMAA,EAAAA,EAAA,gDAMAA,EAAAA,EAAA,8CAMAA,EAAAA,EAAA,kDAMAA,EAAAA,EAAA,kDAMAA,EAAAA,EAAA,gDAOAA,EAAAA,EAAA,kDAKAA,EAAAA,EAAA,8DAMAA,EAAAA,EAAA,gEAOAA,EAAAA,EAAA,kDAOAA,EAAAA,EAAA,oDAOAA,EAAAA,EAAA,oDAOCA,EAAAA,EAAA,0DAOAA,EAAAA,EAAA,8CAOAA,EAAAA,EAAA,gDAQDA,EAAAA,EAAA,gEAQAA,EAAAA,EAAA,kEAQAA,EAAAA,EAAA,kEAQAA,EAAAA,EAAA,kEAQAA,EAAAA,EAAA,oDAQAA,EAAAA,EAAA,sDAQAA,EAAAA,EAAA,oDAQAA,EAAAA,EAAA,qDACH,CAtPD,CAAYnkH,EAAAmkH,8BAAAnkH,EAAAA,4BAA2B,8dCLvC,IAWAg0F,EAAA,SAAAvnE,GAcI,SAAAunE,EAAmB/gB,EAAmBt+D,EAAuBizG,EACjDvqC,EAAuBxJ,EAAiC6iB,GADpE,IAAAh+E,EAEI+T,EAAAprB,KAAA,KAAM4xE,EAAUt+D,EAAQ0oE,EAAcxJ,IAAW,YACjDn7D,EAAKioH,cAAgB/Y,EACrBlvG,EAAK2gF,kBAAoB3C,GAC7B,CAuBJ,OA1C2ClsB,EAAAwpB,EAAAvnE,GA4BvCvrB,OAAAgsB,eAAW8mE,EAAA7yF,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKg6H,aAChB,kCASAz/H,OAAAgsB,eAAW8mE,EAAA7yF,UAAA,gBAAa,KAAxB,WACI,OAAOwF,KAAK0yF,iBAChB,kCACJrF,CAAA,CA1CA,CAXA5qE,EAAA,MAW2CwuG,iBAA9B53H,EAAAA,sBAAAg0F,4HCNb,IAAAiC,EAAA,WAYI,SAAAA,EAAmBwqC,EAAqBG,EAAkBxmC,GACtDzzF,KAAK+5H,gBAAkBD,EACvB95H,KAAKk6H,aAAeD,EACpBj6H,KAAKm6H,cAAgB1mC,CACzB,CAkCJ,OAzBIl5F,OAAAgsB,eAAW+oE,EAAA90F,UAAA,cAAW,KAAtB,WACI,OAAOwF,KAAK+5H,eAChB,kCASAx/H,OAAAgsB,eAAW+oE,EAAA90F,UAAA,WAAQ,KAAnB,WACI,OAAOwF,KAAKk6H,YAChB,kCASA3/H,OAAAgsB,eAAW+oE,EAAA90F,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKm6H,aAChB,kCACJ7qC,CAAA,CAlDA,GAAaj2F,EAAAA,+BAAAi2F,mICEb,IAAAf,EAAA,WAkBI,SAAAA,EAAmBurC,EAAqBtiH,EAAkB2F,EAAci9G,EACrDC,EAAoBC,GACnCt6H,KAAK+5H,gBAAkBD,EACvB95H,KAAK+2H,aAAev/G,EACpBxX,KAAK82H,SAAW35G,EAChBnd,KAAKu6H,eAAiBH,EACtBp6H,KAAKsyF,eAAiB+nC,EACtBr6H,KAAKw6H,iBAAmBF,CAC5B,CAmEJ,OA1DI//H,OAAAgsB,eAAWgoE,EAAA/zF,UAAA,cAAW,KAAtB,WACI,OAAOwF,KAAK+5H,eAChB,kCASAx/H,OAAAgsB,eAAWgoE,EAAA/zF,UAAA,WAAQ,KAAnB,WACI,OAAOwF,KAAK+2H,YAChB,kCASAx8H,OAAAgsB,eAAWgoE,EAAA/zF,UAAA,OAAI,KAAf,WACI,OAAOwF,KAAK82H,QAChB,kCASAv8H,OAAAgsB,eAAWgoE,EAAA/zF,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKu6H,cAChB,kCASAhgI,OAAAgsB,eAAWgoE,EAAA/zF,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsyF,cAChB,kCASA/3F,OAAAgsB,eAAWgoE,EAAA/zF,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKw6H,gBAChB,kCACJjsC,CAAA,CA7FA,GAAal1F,EAAAA,qCAAAk1F,qgDCFb,IAAArmC,EAAAzlC,EAAA,OAcAqnC,EAAArnC,EAAA,MAQAg2F,EAAAh2F,EAAA,OACA0mD,EAAA1mD,EAAA,KACA+wD,EAAA/wD,EAAA,OAIAkmC,EAAAlmC,EAAA,OACA4kD,EAAA5kD,EAAA,MAwBAsuG,EAAA,WAwHI,SAAAA,EAAmBhxB,EAA4BC,GAC3C,IAAM25B,EAAqC55B,EAC3Cp3C,EAAAO,UAAUi3C,YAAYw5B,EAAkB,gBAEpB,OAAhB35B,IAEIhgG,KAAKggG,iBADW1jG,IAAhB0jG,EACsC,qBAAXhhG,YAA0B1C,EAAY+qE,EAAAsxC,YAAYW,2BAE1DtZ,GAI3BhgG,KAAKsgG,eAAiBq5B,EAAiBzsD,WAAWqzB,QAClDvgG,KAAK4zH,cAAe,EACpB5zH,KAAKy6H,kBAAmB,EACxBz6H,KAAK4hF,sBAAwB,IAAI15B,EAAAkjC,iCACjCprF,KAAK06H,sBAAwB,IAAI5wE,EAAAxxB,MACjCt4B,KAAK26H,2BACT,CA8YJ,OAhdIpgI,OAAAgsB,eAAWwqG,EAAAv2H,UAAA,qBAAkB,KAA7B,WACI,OAAOwF,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWwhC,iCAClD,MASA,SAA8BxsD,GAC1B8e,EAAAO,UAAUotC,wBAAwBzsD,EAAO,SACzC7pC,KAAKktE,WAAWlc,YAAYqW,EAAAxS,WAAWwhC,iCAAkCxsD,EAC7E,kCASAtvC,OAAAgsB,eAAWwqG,EAAAv2H,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCASA/lG,OAAAgsB,eAAWwqG,EAAAv2H,UAAA,2BAAwB,KAAnC,WACI,OAAOwF,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAW0mB,qDAAuDrzB,EAAAm9D,4CACzG,kCAuCc0L,EAAA6I,WAAd,SAAyB75B,EAA4B85B,EAAgE75B,GACjH,IAAM25B,EAAqC55B,EAE3C,OADA85B,EAA+B3sD,WAAWwpD,QAAQiD,EAAiBzsD,YAC5D,IAAI6jD,EAAkBhxB,EAAcC,EAC/C,EAEO+wB,EAAAv2H,UAAAuyF,UAAP,SAAiB5vE,SACPy9G,IAAsBxgF,EAAA,IACvB,SAAU,mBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,kBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,mBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,mBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,mBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,mBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,uBACXA,EAAC,SAAU,uBACXA,EAAC,SAAU,sBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,sBACXA,EAAC,SAAU,mBACXA,EAAC,SAAU,uBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,kBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,sBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,kBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,mBACXA,EAAC,SAAU,uBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,mBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,mBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,sBACXA,EAAC,SAAU,uBACXA,EAAC,SAAU,sBACXA,EAAC,SAAU,mBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,uBACXA,EAAC,SAAU,wBACXA,EAAC,SAAU,mBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,kBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,oBACXA,EAAC,UAAW,sBACZA,EAAC,SAAU,uBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,mBACXA,EAAC,SAAU,kBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,mBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,wBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,mBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,uBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,0BACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,sBACXA,EAAC,SAAU,yBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,uBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,sBACXA,EAAC,SAAU,wBACXA,EAAC,SAAU,uBACXA,EAAC,SAAU,wBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,uBACXA,EAAC,SAAU,sBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,uBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,sBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,mBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,wBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,oBACXA,EAAC,SAAU,kBACXA,EAAC,SAAU,mBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,qBACXA,EAAC,SAAU,uBACXA,EAAC,SAAU,sBACXA,EAAC,SAAU,wBACXA,EAAC,SAAU,qBAAoB,GAG/B5hC,EAAWxY,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAW0kE,sCAAuC,SACzFj0B,EAAQtlG,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAW2kE,mCAAoC,IACnF1sC,EAAeikC,EAAkB8J,UAAU19G,GAU/C,OATInd,KAAKkxF,yBACL14E,EAAW,QAEX8sF,EAAQA,GAASs1B,EAAuBpiH,GAExC8sF,IACAxY,EAAO,gBAAgBwY,EAAK,KAAKxY,EAAI,YAEzCA,EAAO,yKAAyKt0E,EAAQ,KAAKs0E,EAAI,UAErM,EAaOikC,EAAAv2H,UAAAsgI,eAAP,SAAsB39G,EAAc7O,EAAyCjI,EAA2BmlD,GACpGxrD,KAAK+6H,UAAU59G,GAAM,EAAO7O,EAAIjI,EAAKmlD,EACzC,EAaOulE,EAAAv2H,UAAAwgI,eAAP,SAAsBluC,EAAcx+E,EAAyCjI,EAA2BmlD,GACpGxrD,KAAK+6H,UAAUjuC,GAAM,EAAMx+E,EAAIjI,EAAKmlD,EACxC,EAYaulE,EAAAv2H,UAAAygI,eAAb,SAA4B7iH,eAAA,IAAAA,IAAAA,EAAA,gEACxB,MAAO,CAAP,EAAOpY,KAAKk7H,UAAU9iH,WASnB24G,EAAAv2H,UAAAigC,MAAP,SAAansB,EAAiBjI,GAC1BsiD,EAAAO,UAAU63C,gBAAgB/gG,KAAK4zH,cAE/B9pE,EAAAw5C,0BAA0BtjG,KAAK86D,SAAQ,GAAOxsD,EAAIjI,EACtD,EAMA9L,OAAAgsB,eAAWwqG,EAAAv2H,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKm7H,WAChB,kCAYgBpK,EAAAv2H,UAAAsgE,QAAhB,SAAwBsmC,6FACpB,OAAIphG,KAAK4zH,aACL,IAGAxyB,GACIphG,KAAKm7H,YACL,GAAMn7H,KAAKm7H,YAAYrgE,WAF3B,aAEI1gB,EAAApyB,+BAIRhoB,KAAK4zH,cAAe,cASd7C,EAAAv2H,UAAA4gI,wBAAV,SAAkCr7B,GAC9B,OAAO,IAAI73C,EAAA6rC,kBACPgM,EACA//F,KAAKsgG,eACb,EAGUywB,EAAAv2H,UAAA6gI,uBAAV,SACIl4D,EACAC,EACA48B,EACAxU,GACA,OAAO,IAAItjC,EAAAqjC,qBAAqBpoB,EAAgBC,EAC5CooB,EAAmBxrF,KAAMA,KAAKggG,YACtC,EAEU+wB,EAAAv2H,UAAAmgI,0BAAV,eAAA5oH,EAAA,KAEQqlH,EAAgC,qBAAXp4H,OAA0B,UAAY,OAC3Dq4H,EAAS,UACTC,EAAY,UAES,qBAAdznH,YACPunH,EAAaA,EAAa,IAAMvnH,UAAUysE,SAC1C+6C,EAASxnH,UAAUG,UACnBsnH,EAAYznH,UAAUxT,YAG1B,IAAMmvF,EAAoBxrF,KAAKo7H,wBAC3B,IAAIlzE,EAAAkmB,oBACA,IAAIlmB,EAAAmmB,QAAQ,IAAInmB,EAAAm0B,GAAG+6C,EAAYC,EAAQC,MAEzCh/D,EAAkBt4D,KAAKsgG,eAAe1rC,YAAYyS,EAAAxS,WAAWoyB,iCAA6B3qF,GAC1F6mE,EAAkB7K,GAAuC,KAApBA,EACvC,IAAIpQ,EAAAuY,uCAAuCnI,GAC3C,IAAIpQ,EAAA6Y,8BACA,WACI,IAAM65B,EAAqB7oF,EAAKuuF,eAAe1rC,YAAYyS,EAAAxS,WAAWwhC,sCAAkC/5F,GACxG,OAAO+jB,QAAQC,QAAQs6E,EAC3B,IACA,WACI,IAAMA,EAAqB7oF,EAAKuuF,eAAe1rC,YAAYyS,EAAAxS,WAAWwhC,sCAAkC/5F,GACxG,OAAO+jB,QAAQC,QAAQs6E,EAC3B,IAER56F,KAAKm7H,YAAcn7H,KAAKq7H,uBACpBl4D,EACAnjE,KAAK4hF,sBACL5hF,KAAKggG,YACLxU,GAEJxrF,KAAKm7H,YAAY7uC,kBAAoBnjB,EAAAgJ,sBAAsBoqC,gCACvDl1C,EAAAm2C,4BAA4Bx9G,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWwd,+CAA2C/1E,KAGlH0D,KAAK6xF,gBAAkB,IAAI3pC,EAAAypC,qBAAqBnG,EAAmBroB,EACvE,EAEU4tD,EAAAv2H,UAAAugI,UAAV,SAAoB59G,EAAcm+G,EAAiBhtH,EAAyCjI,EAA2Bk1H,GAAvH,IAAAxpH,EAAA,KACI,IACI42C,EAAAO,UAAU63C,gBAAgB/gG,KAAK4zH,cAC/B,IAAMz7D,EAAYrO,EAAAQ,mBACdohC,OAAgB,EAEhBA,EADA6vC,aAAsBl0D,EAAAyyC,8BACH,IAAItmC,EAAAumC,0BAA0BwhB,GAC1CA,aAAsBl0D,EAAA4yC,sBACVshB,OACGj/H,IAAfi/H,EACY,IAAI9iB,EAAAmB,gBAAgB2hB,QAEpBj/H,EAEvB0D,KAAK06H,sBAAsB7lB,QAAQ,IAAI2mB,EAAiBrjE,EAAWh7C,EAAMm+G,GAAQ,SAAC32H,GAE9E,GADAoN,EAAK0oH,kBAAmB,EAClBnsH,EACF,IACIA,EAAG3J,GACL,MAAOA,GACC0B,GACFA,EAAI1B,GAIhB2J,OAAKhS,EAELyV,EAAK0pH,eAAeprE,OAAM,WAAc,GAE5C,IAAG,SAAC1rD,GACM0B,GACFA,EAAI1B,EAEZ,GAAG+mF,IAGH1rF,KAAKy7H,eAAeprE,OAAM,WAAc,IAE1C,MAAOvtD,GACL,GAAMuD,EACF,GAAIvD,aAAiBO,MAAO,CACxB,IAAMusD,EAAoB9sD,EAC1BuD,EAAIupD,EAAWnxD,KAAO,KAAOmxD,EAAWzzD,cAExCkK,EAAIvD,GAMZ9C,KAAK86D,SAAQ,GAAMzK,OAAM,WAAc,IAE/C,EAEgB0gE,EAAAv2H,UAAA0gI,UAAhB,SAA0B9iH,uGAEU,OAD1B+/C,EAAYrO,EAAAQ,mBACc,GAAMtqD,KAAK6xF,gBAAgBC,cAAc35B,WACzE,OADM34C,EAA0B46B,EAAApyB,QACnBie,IAAMv8B,MAAMkf,QAAQpJ,EAAS6G,OAClCA,EAAO7G,EAAS6G,KACdjO,GAAUA,EAAOre,OAAS,IAC5BssB,EAAOA,EAAKxiB,QAAO,SAAC5J,GAAsC,QAAEA,EAAKyhI,QAAUzhI,EAAKyhI,OAAO50H,gBAAkBsR,EAAOtR,aAAtD,KAEvD,CAAP,EAAO,IAAIugE,EAAAqqD,sBAAsBv5D,EAAW9xC,OAAM/pB,KAE3C,CAAP,EAAO,IAAI+qE,EAAAqqD,sBAAsBv5D,OAAW77D,EAAW,UAAUkjB,EAASvI,OAAM,KAAKuI,EAASo6C,qBAItFm3D,EAAAv2H,UAAAihI,aAAhB,kHACSz7H,KAAK4zH,cAAiB5zH,KAAKy6H,iBAA5B,OACAz6H,KAAKy6H,kBAAmB,EACU,GAAMz6H,KAAK06H,sBAAsBl8D,mBACnE,OADM9zD,EAA4B0vC,EAAApyB,OAC3B,CAAP,EAAOhoB,KAAKm7H,YAAYvuC,MAAMliF,EAAQyS,KAAMzS,EAAQmiF,OAAQniF,EAAQytD,UAAWztD,EAAQ4D,GAAI5D,EAAQrE,IAAKqE,EAAQ6wH,sCAIzGxK,EAAA8J,UAAf,SAAyB19G,GACrB,OAAOA,EAAKxZ,QAAQ,KAAM,SACrBA,QAAQ,KAAM,QACdA,QAAQ,KAAM,QACdA,QAAQ,KAAM,UACdA,QAAQ,KAAM,SACvB,EACJotH,CAAA,CAxhBA,GAAa13H,EAAAA,kBAAA03H,EA0hBb,IAAAyK,EAQI,SAAmBrjE,EAAmBh7C,EAAc0vE,EAAiBv+E,EAAyCjI,EAA2Bk1H,GACrIv7H,KAAKm4D,UAAYA,EACjBn4D,KAAKmd,KAAOA,EACZnd,KAAK6sF,OAASA,EACd7sF,KAAKsO,GAAKA,EACVtO,KAAKqG,IAAMA,EACXrG,KAAKu7H,WAAaA,CACtB,EAfSliI,EAAAA,iBAAAmiI,4fCnlBb,IAAAtzE,EAAAzlC,EAAA,OAMAkmC,EAAAlmC,EAAA,OACAqnC,EAAArnC,EAAA,MAaAqqG,EAAA,SAAAhnG,GAKI,SAAAgnG,WACIhnG,EAAAprB,KAAA,OAAO,IACX,CAgLJ,OAvLsDmpE,EAAAipD,EAAAhnG,GAkBpCgnG,EAAA1G,iBAAd,SAA+B9tD,EAAyBkJ,GACpD7Y,EAAAO,UAAUotC,wBAAwBh+B,EAAiB,mBACnD3P,EAAAO,UAAUotC,wBAAwB90B,EAAQ,UAE1C,IAAM3yD,EAAmC,IAAIk+G,EAG7C,OAFAl+G,EAAIq+D,WAAWlc,YAAYlH,EAAA+K,WAAWoyB,4BAA6B3uB,GACnEzpD,EAAIq+D,WAAWlc,YAAYlH,EAAA+K,WAAWiT,+BAAgCtG,GAC/D3yD,CACX,EAmBci+G,EAAArG,uBAAd,SAAqC7rB,EAA4Bp5B,GAC7D7Y,EAAAO,UAAUotC,wBAAwBsE,EAAoB,sBACtDjyC,EAAAO,UAAUotC,wBAAwB90B,EAAQ,UAE1C,IAAM3yD,EAAmC,IAAIk+G,EAG7C,OAFAl+G,EAAIq+D,WAAWlc,YAAYlH,EAAA+K,WAAWwhC,iCAAkCuE,GACxE/rF,EAAIq+D,WAAWlc,YAAYlH,EAAA+K,WAAWiT,+BAAgCtG,GAC/D3yD,CACX,EAiBci+G,EAAApG,SAAd,SAAuBuS,EAAe3gE,GAClC3P,EAAAO,UAAUi3C,YAAY84B,EAAU,YAEhC,IAAMD,EAA0C,IAAIjM,EAMpD,OALAiM,EAAWhoE,YAAYlH,EAAA+K,WAAWgU,6BAA8BowD,EAASziH,SAAW,KAAOyiH,EAASlF,UAA8B,KAAlBkF,EAAS74F,KAAc,GAAK,IAAM64F,EAAS74F,YAEvJ9jC,IAAcg8D,GACd0gE,EAAWhoE,YAAYlH,EAAA+K,WAAWoyB,4BAA6B3uB,GAE5D0gE,CACX,EAoBclM,EAAAlG,aAAd,SAA2BvwG,EAAeiiD,GACtC3P,EAAAO,UAAUi3C,YAAY9pF,EAAU,YAChCsyC,EAAAO,UAAUi3C,YAAY7nC,EAAiB,mBAEvC,IAAMzpD,EAAmC,IAAIk+G,EAG7C,OAFAl+G,EAAIq+D,WAAWlc,YAAYlH,EAAA+K,WAAW8T,iCAAkCtyD,EAASgD,MACjFxK,EAAIq+D,WAAWlc,YAAYlH,EAAA+K,WAAWoyB,4BAA6B3uB,GAC5DzpD,CACX,EA2EJi+G,CAAA,CAvLA,CAAsDhjE,EAAA8iE,cAAhCvzH,EAAAA,wBAAAyzH,EA6LtB,IAAAC,EAAA,SAAAjnG,GAII,SAAAinG,IAAA,IAAAh7G,EACI+T,EAAAprB,KAAA,OAAO,YACPqX,EAAK4pH,qBAAuB,IAAI7xE,EAAAib,mBAChChzD,EAAKg/E,aAAejnC,EAAAsc,aAAaC,QACrC,CAgQJ,OAxQiDxC,EAAAkpD,EAAAjnG,GAkB7CvrB,OAAAgsB,eAAWwmG,EAAAvyH,UAAA,qBAAkB,KAA7B,SAA8Be,GAC1BotD,EAAAO,UAAUotC,wBAAwB/6F,EAAO,SAEzCyE,KAAK27H,qBAAqB3qE,YAAYlH,EAAA+K,WAAWwhC,iCAAkC96F,EACvF,kCASAhB,OAAAgsB,eAAWwmG,EAAAvyH,UAAA,4BAAyB,KAYpC,WACI,OAAOwF,KAAK27H,qBAAqB/mE,YAAY9K,EAAA+K,WAAW/K,EAAA+K,WAAWkT,sCACvE,MAdA,SAAqCxsE,GACjCotD,EAAAO,UAAUotC,wBAAwB/6F,EAAO,SACzCyE,KAAK27H,qBAAqB3qE,YAAYlH,EAAA+K,WAAWkT,qCAAsCxsE,EAC3F,kCAkBAhB,OAAAgsB,eAAWwmG,EAAAvyH,UAAA,kBAAe,KAA1B,WACI,OAAOwF,KAAK27H,qBAAqB/mE,YAAY9K,EAAA+K,WAAW/K,EAAA+K,WAAWoyB,6BACvE,kCAQA1sF,OAAAgsB,eAAWwmG,EAAAvyH,UAAA,eAAY,KAAvB,WAEI,OAAQsvD,EAAAsc,aAAqBpmE,KAAK27H,qBAAqB/mE,YAAY1M,EAAAie,8BAA0B7pE,GACjG,MAQA,SAAwBf,GACpByE,KAAK27H,qBAAqB3qE,YAAY9I,EAAAie,yBAA0Brc,EAAAsc,aAAa7qE,GACjF,kCAQAhB,OAAAgsB,eAAWwmG,EAAAvyH,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAK27H,qBAAqB/mE,YAAY9K,EAAA+K,WAAWgnB,mCAC5D,MAQA,SAAsBtgF,GAClByE,KAAK27H,qBAAqB3qE,YAAYlH,EAAA+K,WAAWgnB,mCAAoCtgF,EACzF,kCASOwxH,EAAAvyH,UAAAohI,kBAAP,SAAyBrgI,GACrBotD,EAAAO,UAAUotC,wBAAwB/6F,EAAO,SAEzC,IAAMgvF,EAAsBvqF,KAAK67H,gBACjCtxC,EAAUrvF,KAAKK,GACfyE,KAAK27H,qBAAqB3qE,YAAYlH,EAAA+K,WAAWqwC,+CAAgD3a,EAAU9sF,KAAK,KACpH,EASAlD,OAAAgsB,eAAWwmG,EAAAvyH,UAAA,kBAAe,KAA1B,WAEI,YAAoH8B,IAAhH0D,KAAK27H,qBAAqB/mE,YAAY9K,EAAA+K,WAAWqwC,oDAAgD5oG,GAC1F0D,KAAK27H,qBAAqB/mE,YAAY9K,EAAA+K,WAAWqwC,gDAAgDthG,MAAM,KAEvG,EAGf,kCAQArJ,OAAAgsB,eAAWwmG,EAAAvyH,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAK40D,YAAY9K,EAAA+K,WAAW/K,EAAA+K,WAAWwwC,0CAClD,MASA,SAAqB9pG,GACjBotD,EAAAO,UAAUotC,wBAAwB/6F,EAAO,SAEzCyE,KAAK27H,qBAAqB3qE,YAAYlH,EAAA+K,WAAWwwC,yCAA0C9pG,EAC/F,kCASAhB,OAAAgsB,eAAWwmG,EAAAvyH,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAK27H,qBAAqB/mE,YAAY9K,EAAA+K,WAAWiT,+BAC5D,kCAIOilD,EAAAvyH,UAAA0vH,SAAP,SAAgBh2D,EAAoBC,EAAgBC,EAAqBC,GACrEr0D,KAAKgxD,YAAYlH,EAAA+K,WAAW/K,EAAA+K,WAAWC,uCAAwCZ,GAC/El0D,KAAKgxD,YAAYlH,EAAA+K,WAAW/K,EAAA+K,WAAWE,mCAAoCZ,GAC3En0D,KAAKgxD,YAAYlH,EAAA+K,WAAW/K,EAAA+K,WAAWG,uCAAwCZ,GAC/Ep0D,KAAKgxD,YAAYlH,EAAA+K,WAAW/K,EAAA+K,WAAWI,uCAAwCZ,EACnF,EAWO04D,EAAAvyH,UAAAo6D,YAAP,SAAmBn2D,EAAcy7G,GAC7B,OAAOl6G,KAAK27H,qBAAqB/mE,YAAYn2D,EAAMy7G,EACvD,EAUO6S,EAAAvyH,UAAAw2D,YAAP,SAAmBvyD,EAA2BlD,GAC1CyE,KAAK27H,qBAAqB3qE,YAAYvyD,EAAMlD,EAChD,EASAhB,OAAAgsB,eAAWwmG,EAAAvyH,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAK27H,oBAChB,kCAQO5O,EAAAvyH,UAAAigC,MAAP,WAEA,EAEOsyF,EAAAvyH,UAAA2vH,mBAAP,SAA0B1rH,EAAclD,GACpC,IAAM29H,EAA+CvzH,KAAK9C,MAAM7C,KAAK27H,qBAAqB/mE,YAAY1M,EAAA8a,8BAA+B,OAErIk2D,EAAkBz6H,GAAQlD,EAE1ByE,KAAK27H,qBAAqB3qE,YAAY9I,EAAA8a,8BAA+Br9D,KAAKC,UAAUszH,GACxF,EAEOnM,EAAAvyH,UAAA2+H,aAAP,SAAoBjhE,GAChBl4D,KAAK27H,qBAAqB3qE,YAAYlH,EAAA+K,WAAWyN,sCAAuCxY,EAAAglE,gBAAgB52D,GAC5G,EAEO60D,EAAAvyH,UAAA4+H,mBAAP,WACIp5H,KAAK27H,qBAAqB3qE,YAAYlH,EAAA+K,WAAWiN,2CAA4C,OACjG,EACOirD,EAAAvyH,UAAA6+H,2BAAP,WACIr5H,KAAK27H,qBAAqB3qE,YAAYlH,EAAA+K,WAAW2N,iDAAkD,OACvG,EACOuqD,EAAAvyH,UAAA8+H,gBAAP,WACIt5H,KAAK27H,qBAAqB3qE,YAAY9I,EAAAygC,2BAA4B,OACtE,EAEApuF,OAAAgsB,eAAWwmG,EAAAvyH,UAAA,0BAAuB,KAAlC,WACI,OAAOwF,KAAK27H,qBAAqB/mE,YAAY9K,EAAA+K,WAAW0kE,sCAC5D,MAEA,SAAmC/gH,GAC/BxY,KAAK27H,qBAAqB3qE,YAAYlH,EAAA+K,WAAW0kE,sCAAuC/gH,EAC5F,kCAEAje,OAAAgsB,eAAWwmG,EAAAvyH,UAAA,2BAAwB,KAAnC,WACI,OAAOwF,KAAK27H,qBAAqB/mE,YAAY9K,EAAA+K,WAAW2kE,mCAC5D,MAEA,SAAoCl0B,GAChCtlG,KAAK27H,qBAAqB3qE,YAAYlH,EAAA+K,WAAW2kE,mCAAoCl0B,EACzF,kCAEA/qG,OAAAgsB,eAAWwmG,EAAAvyH,UAAA,8BAA2B,KAAtC,WAEI,OAAQsvD,EAAA0zD,4BAAoCx9G,KAAK27H,qBAAqB/mE,YAAY9K,EAAA+K,WAAWwd,+CAA2C/1E,GAC5I,MAEA,SAAuCm0C,GACnCzwC,KAAK27H,qBAAqB3qE,YAAYlH,EAAA+K,WAAWwd,0CAA2CvoB,EAAA0zD,4BAA4B/sE,GAC5H,kCACJs8E,CAAA,CAxQA,CAAiDD,GAApCzzH,EAAAA,4BAAA0zH,8GC3Mb,IAAAkE,EAAA,WAcI,SAAAA,EAAmB3kD,EAAmBt+D,EAAuB0oE,EAAuBxJ,GAChFltE,KAAK62H,aAAevqD,EACpBtsE,KAAKssG,WAAat+F,EAClBhO,KAAKknH,iBAAmBxwC,EACxB12E,KAAKsgG,eAAiBpzB,CAC1B,CA6CJ,OApCI3yE,OAAAgsB,eAAW0qG,EAAAz2H,UAAA,WAAQ,KAAnB,WACI,OAAOwF,KAAK62H,YAChB,kCASAt8H,OAAAgsB,eAAW0qG,EAAAz2H,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKssG,UAChB,kCASA/xG,OAAAgsB,eAAW0qG,EAAAz2H,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKknH,gBAChB,kCASA3sH,OAAAgsB,eAAW0qG,EAAAz2H,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCACJ2wB,CAAA,CAhEA,GAAa53H,EAAAA,gBAAA43H,4dCPb,IAAA/oE,EAAAzlC,EAAA,MAOAivG,EAAA,SAAA5rG,GASI,SAAA4rG,EAAmBv5D,EAAmB9xC,EAAWqwD,GAAjD,IAAA3kE,EAAA,KACI,GAAIrI,MAAMkf,QAAQvC,GAAO,EACrBtU,EAAA+T,EAAAprB,KAAA,KAAMy9D,EAAWjQ,EAAAqd,aAAau2D,yBAAqBx/H,EAAW,IAAI4rD,EAAA6c,qBAAqB,MAClFg3D,WAAa,GAClB,IAAmB,IAAA99E,EAAA,EAAA+9E,EAAA31G,EAAA43B,EAAA+9E,EAAAjiI,OAAAkkD,IAAM,CAApB,IAAMhkD,EAAI+hI,EAAA/9E,GACXlsC,EAAKgqH,WAAW7gI,KAAK,IAAIgtD,EAAA0pE,UAAU33H,UAGvC8X,EAAA+T,EAAAprB,KAAA,KAAMy9D,EAAWjQ,EAAAqd,aAAaC,SAAUkR,GAA8B,gCAAiC,IAAIxuB,EAAA6c,qBAAqB,aAExI,CAYJ,OA/B2ClB,EAAA6tD,EAAA5rG,GA4BvCvrB,OAAAgsB,eAAWmrG,EAAAl3H,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAK+7H,UAChB,kCACJrK,CAAA,CA/BA,CAA2CxpE,EAAA+oE,iBAA9B53H,EAAAA,sBAAAq4H,qjECJb,IAAAxpE,EAAAzlC,EAAA,OAiBAqnC,EAAArnC,EAAA,MAKAkmC,EAAAlmC,EAAA,OACA4kD,EAAA5kD,EAAA,MAkBAimE,EAAA,WAEI,SAAAA,IAEA,CAiGJ,OA7EkBA,EAAAuzC,wBAAd,SAAsCl8B,EAAuCm8B,EAA0BC,EAAiBC,GAAxH,IAMQh8B,EACA9xF,EACAjI,EARR0L,EAAA,KA6BI,OA5BA42C,EAAAO,UAAUC,uBAAuB42C,EAAc73C,EAAAusC,6BAA6BqB,WAAW3+B,YAAYxzD,QAAQ,QAAS,WACpHglD,EAAAO,UAAUC,uBAAuB42C,EAAav+B,OAAQtZ,EAAAusC,6BAA6BqB,WAAW3+B,YAAYxzD,QAAQ,QAAS,mCACtHo8F,EAAaznC,iBAAoBynC,EAAanrC,YAAYyS,EAAAxS,WAAWwS,EAAAxS,WAAWwhC,oCACjF1tC,EAAAO,UAAUC,uBAAuB42C,EAAaznC,gBAAiBpQ,EAAAusC,6BAA6BqB,WAAW3+B,YAAYxzD,QAAQ,QAAS,gCAKpH,kBAATu4H,GACP97B,EAAmB,IAAIi8B,EAAiBt8B,EAAcm8B,GAEtDpyE,EAAAw5C,0BAA2B33C,EAAA55C,OAAA,4BAAA0xD,EAAA,eAAArpB,mBAAkC+hF,EAAMC,KAEnEh8B,EAAmB,IAAIi8B,EAAiBt8B,GACxCzxF,EAAK4tH,EACL71H,EAAM81H,EACN/7B,EAAiB67B,yBACZ,WACS3tH,GACFA,GAER,IACA,SAACxL,GACSuD,GACFA,EAAIvD,EAEZ,KAEDs9F,CAEX,EA8CJ1X,CAAA,CArGA,GAAsBrvF,EAAAA,aAAAqvF,EAuGtB,IAAA2zC,EAAA,SAAAv2G,GAwBI,SAAAu2G,EAAmBt8B,EAAuCh0F,GAA1D,IAAAgG,EACI+T,EAAAprB,KAAA,OAAO,KAcP,GAxBIqX,EAAA8jF,WAA6B3tC,EAAAusC,6BAA6BqB,WAmqB1D/jF,EAAAuqH,YAAc,SAAC33H,SACnBoN,EAAKwqH,iBAAkB,EACvB,KACyC,QAAhCniF,EAACroC,EAAKyqH,kCAA0B,IAAApiF,OAAA,EAAAA,EAAEu0B,iBACnC58D,EAAKyqH,2BAA2B7tD,eAAe58D,EAAKyqH,2BAA4B73H,GAEtF,MAAOA,GACL,CAER,EAEQoN,EAAA0qH,eAAiB,SAAC93H,SACtB,KACyC,QAAhCy1C,EAACroC,EAAKyqH,kCAA0B,IAAApiF,OAAA,EAAAA,EAAE+1B,iBACnCp+D,EAAKyqH,2BAA2BrsD,eAAep+D,EAAKyqH,2BAA4B73H,GAEtF,MAAOA,GACL,CACF,QACOoN,EAAK0oB,OAAM,GAExB,EAEQ1oB,EAAA2qH,WAAa,SAACp1F,EAA2B3iC,SAC7C,KACyC,QAAhCy1C,EAACroC,EAAKyqH,kCAA0B,IAAApiF,OAAA,EAAAA,EAAE6yB,WACnCl7D,EAAKyqH,2BAA2BvvD,SAASl7D,EAAKyqH,2BAA4B73H,GAEhF,MAAOA,GACL,CAER,EAEQoN,EAAA4qH,mCAAqC,SAACr1F,EAA2B3iC,GACrE,IACI,IAAMi4H,EAA2C7qH,EAAKqsF,iBAAiBS,eAAel6F,EAAEoH,IACxF,QAA2BzP,IAAvBsgI,EAAkC,CAElC,OAAQj4H,EAAE9G,KACN,KAAKqqD,EAAAuxC,mCAAmCW,eACpCwiC,EAAmB34E,YAAct/C,EAAEpJ,MACnC,MACJ,KAAK2sD,EAAAuxC,mCAAmCQ,UACpC2iC,EAAmBhkC,WAAaj0F,EAAEpJ,MAClC,MACJ,KAAK2sD,EAAAuxC,mCAAmCE,sBACpCijC,EAAmB1kE,UAAYvzD,EAAEpJ,MACjC,MACJ,KAAK2sD,EAAAuxC,mCAAmCG,QACpCgjC,EAAmBlkC,QAAU/zF,EAAEpJ,MAC/B,MACJ,KAAK2sD,EAAAuxC,mCAAmCC,wBACpCkjC,EAAmBC,qBAAuBl4H,EAAEpJ,MAGpDwW,EAAKqsF,iBAAiBM,uBAAuBk+B,GAEvC7qH,EAAKyqH,4BACPzqH,EAAKyqH,2BAA2BM,oBAC5B/qH,EAAKyqH,2BACL,IAAIn1D,EAAAkpD,yCAAyClpD,EAAAupD,yBAAyBmM,QAClE,CAAChrH,EAAKirH,cAAcJ,IAAsBj4H,EAAEq/D,aAG9D,MAAOr/D,GACL,CAER,EAEQoN,EAAAkrH,0BAA4B,WAChC,EAGIlrH,EAAAmrH,yBAA2B,SAAC51F,EAA2B3iC,GAC3D,IACIoN,EAAKqsF,iBAAiB/F,aAAa5vE,SAAQ,SAACpqB,GAAqC,OAAAA,EAAEq6F,SAAWr6F,EAAEm6F,QAAiB7zF,EAAE+zF,OAAlC,IAC3E3mF,EAAKyqH,4BACPzqH,EAAKyqH,2BAA2BM,oBAC5B/qH,EAAKyqH,2BACL,IAAIn1D,EAAAkpD,yCAAyClpD,EAAAupD,yBAAyBmM,QAClEhrH,EAAKorH,gBAAe,GAAQx4H,EAAEq/D,YAE5C,MAAOr/D,GACL,CAER,EAEQoN,EAAAqrH,iCAAmC,SAAC91F,EAA2B3iC,GACnE,IACI,IAAM04H,EAAuCtrH,EAAKqsF,iBAAiBM,uBAAuB/5F,EAAE44F,kBACrEjhG,IAAnB+gI,GACMtrH,EAAKyqH,4BACPzqH,EAAKyqH,2BAA2BM,oBAC5B/qH,EAAKyqH,2BACL,IAAIn1D,EAAAkpD,yCAAyClpD,EAAAupD,yBAAyB0M,mBAClE,CAACvrH,EAAKirH,cAAcK,IAAkB14H,EAAEq/D,YAG1D,MAAOr/D,GACL,CAER,EAEQoN,EAAAwrH,kCAAoC,SAACj2F,EAA2B3iC,GACpE,IACI,IAAM64H,EAA2CzrH,EAAKqsF,iBAAiBS,eAAel6F,EAAE44F,YAAYxxF,SACzEzP,IAAvBkhI,IAEAzrH,EAAKqsF,iBAAiBU,kBAAkBn6F,EAAE44F,YAAYxxF,IAChDgG,EAAKyqH,4BAEPzqH,EAAKyqH,2BAA2BM,oBAC5B/qH,EAAKyqH,2BACL,IAAIn1D,EAAAkpD,yCAAyClpD,EAAAupD,yBAAyB6M,iBAClE,CAAC1rH,EAAKirH,cAAcQ,IAAsB74H,EAAEq/D,aAG9D,MAAOr/D,GACL,CAER,EAEQoN,EAAA2rH,sBAAwB,SAACp2F,EAA2B3iC,GACxD,IACI,OAAQA,EAAEszF,SACN,KAAK/vC,EAAAozC,mCAAmCC,MAC9BxpF,EAAKyqH,4BACPzqH,EAAKyqH,2BAA2Bv4B,YAC5BlyF,EAAKyqH,2BACL,IAAIn1D,EAAAmpD,iCAAiC7rH,EAAE4Q,aAASjZ,EAAWqI,EAAEq/D,YAErE,MACJ,KAAK9b,EAAAozC,mCAAmCE,QAC9BzpF,EAAKyqH,4BACPzqH,EAAKyqH,2BAA2Bx4B,aAC5BjyF,EAAKyqH,2BACL,IAAIn1D,EAAAmpD,iCAAiC7rH,EAAE4Q,aAASjZ,EAAWqI,EAAEq/D,YAErE,MACJ,KAAK9b,EAAAozC,mCAAmCO,eAC9B9pF,EAAKyqH,4BACPzqH,EAAKyqH,2BAA2BmB,oBAC5B5rH,EAAKyqH,2BACL,IAAIn1D,EAAAmpD,iCAAiC7rH,EAAE4Q,aAASjZ,EAAWqI,EAAEq/D,aAI/E,MAAOr/D,GACL,CAER,EAEQoN,EAAA6rH,2BAA6B,SAACt2F,EAA2B3iC,SAC7D,IAiBI,QAfuBrI,IAAnBqI,EAAE0zD,cAAiD,OAAnB1zD,EAAE0zD,eAClCtmD,EAAK8rH,SAASh0F,MAAQllC,EAAE0zD,cAG5BtmD,EAAKqsF,iBAAiB/F,aAAYylC,EAAOn5H,EAAE0zF,mBAEV/7F,IAA7ByV,EAAKqsF,iBAAiB2/B,KACtBhsH,EAAKisH,aAAc,GAEjBjsH,EAAKyqH,4BACPzqH,EAAKyqH,2BAA2BM,oBAC5B/qH,EAAKyqH,2BACL,IAAIn1D,EAAAkpD,yCAAyClpD,EAAAupD,yBAAyB0M,mBAAoBvrH,EAAKorH,gBAAe,GAAOx4H,EAAEq/D,YAG3HjyD,EAAKgsH,GAAGvlC,OAAQ,CAChB,IAAMvgC,EAAkD,QAA1C7d,EAAWroC,EAAKyqH,kCAA0B,IAAApiF,OAAA,EAAAA,EAAE8yB,WAAWtY,YAAYyS,EAAAxS,WAAWshC,kCAC3E75F,IAAb27D,GAA0BA,EAASl+D,OAAS,GAAKk+D,IAAalmD,EAAKgsH,GAAG95E,aAEtElyC,EAAKksH,oBAAoBhmE,IAGnC,MAAOtzD,GACL,CAER,EAEQoN,EAAAmsH,yBAA2B,SAAC52F,EAA2B3iC,GAC3D,IACUoN,EAAKyqH,4BACPzqH,EAAKyqH,2BAA2BziC,uBAAuBhoF,EAAKyqH,2BAA4B73H,GAE9F,MAAOA,GACL,CAER,EAt1BIoN,EAAKwqH,iBAAkB,EACvBxqH,EAAKwoD,gBAAiB,EACtBxoD,EAAKosH,mBAAqB,GAC1BpsH,EAAKuuF,eAAiB,IAAIj5B,EAAAtC,mBAC1BhzD,EAAKqsH,YAAc,IAAIl2E,EAAAytC,oBAGEoK,EAAanrC,YAAYyS,EAAAxS,WAAWwS,EAAAxS,WAAWkT,wCAEpEg4B,EAAa/uC,YAAYqW,EAAAxS,WAAWwS,EAAAxS,WAAWkT,sCAAuC7f,EAAAusC,6BAA6ByB,qBAEvHnkF,EAAKg0G,aAAehmB,EAAanrC,YAAYyS,EAAAxS,WAAWwS,EAAAxS,WAAWkT,uCAE9Dh8D,EAuBDgG,EAAKosH,mBAAqBpyH,MAvBrB,CAEuC,IAAxCg0F,EAAa87B,gBAAgB9hI,QAC7BgmG,EAAa67B,kBAAkB7pH,EAAKg0G,cAIdhmB,EAAanrC,YAAYyS,EAAAxS,WAAWwS,EAAAxS,WAAWyN,yCAErEy9B,EAAao5B,aAAa9xD,EAAAynD,gBAAgBuP,QAK9C,IAAIC,EAAuBv+B,EAAanrC,YAAYyS,EAAAxS,WAAWwS,EAAAxS,WAAWshC,mCACrD75F,IAAjBgiI,GAA+C,OAAjBA,IAC9BA,EAAe,QAEnB31E,EAAAO,UAAU6/D,qBAAqBuV,EAAc,WAAY,IACzD31E,EAAAO,UAAU+/D,sBAAsBqV,EAAc,WAAY,GAC1Dv+B,EAAa/uC,YAAYqW,EAAAxS,WAAWwS,EAAAxS,WAAWshC,6BAA8BmoC,GAOjFvsH,EAAKwsH,WAAax+B,EAGlB,IAAMqE,EAAarE,SACnBp3C,EAAAO,UAAUi3C,YAAYiE,EAAY,gBAClCryF,EAAKuuF,eAAiB8D,EAAWl3B,WAAWqzB,QAC5CxuF,EAAKwqH,iBAAkB,EACvBxqH,EAAKqsF,iBAAmB,IAAIl2C,EAAAs2C,qBAC5BzsF,EAAKisH,aAAc,EACnBjsH,EAAKysH,yBAA2B,KACpC,CAi9BJ,OA7hCsC36D,EAAAw4D,EAAAv2G,GA+ElCvrB,OAAAgsB,eAAW81G,EAAA7hI,UAAA,OAAI,KAAf,WACI,OAAOwF,KAAK69H,QAChB,kCAGAtjI,OAAAgsB,eAAW81G,EAAA7hI,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKy+H,0BAChB,kCAGAlkI,OAAAgsB,eAAW81G,EAAA7hI,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKu+H,UAChB,kCAGAhkI,OAAAgsB,eAAW81G,EAAA7hI,UAAA,iBAAc,KAAzB,WACI,OAAOwF,KAAK69H,SAAW79H,KAAK69H,SAASzlE,OAASp4D,KAAKm+H,kBACvD,kCAGA5jI,OAAAgsB,eAAW81G,EAAA7hI,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCAGA/lG,OAAAgsB,eAAW81G,EAAA7hI,UAAA,4BAAyB,KAApC,WACI,OAAOwF,KAAK+lH,YAChB,kCAEAxrH,OAAAgsB,eAAW81G,EAAA7hI,UAAA,gBAAa,KAAxB,mBACI,QAA+B,QAAxB4/C,EAAAp6C,KAAKo+F,iBAAiB2/B,UAAE,IAAA3jF,OAAA,EAAAA,EAAEo+C,UAAyC,QAAzBh+C,EAACx6C,KAAKo+F,iBAAiB2/B,UAAE,IAAAvjF,OAAA,EAAAA,EAAEk+C,QAChF,kCAEAn+F,OAAAgsB,eAAW81G,EAAA7hI,UAAA,cAAW,KAAtB,WACI,OAAOwF,KAAKu8H,iBAAmBv8H,KAAKg+H,WACxC,kCAEAzjI,OAAAgsB,eAAW81G,EAAA7hI,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKm9H,gBAAe,EAC/B,kCAEA5iI,OAAAgsB,eAAW81G,EAAA7hI,UAAA,KAAE,KAAb,WACI,OAAOwF,KAAKg9H,cAAch9H,KAAKo+F,iBAAiB2/B,GACpD,kCAEAxjI,OAAAgsB,eAAW81G,EAAA7hI,UAAA,OAAI,KAAf,WACI,OAAOwF,KAAKg9H,cAAch9H,KAAKo+F,iBAAiBl/F,KACpD,kCAEA3E,OAAAgsB,eAAW81G,EAAA7hI,UAAA,wBAAqB,KAAhC,WACI,OAAOwF,KAAKskG,yBAChB,kCAEA/pG,OAAAgsB,eAAW81G,EAAA7hI,UAAA,mBAAgB,KAA3B,WAUI,IATA,IAAMkkI,EAAiB1+H,KAAK+xE,eACtB1zE,EAAgC2B,KAAKq4F,aAAat0F,KAAI,SAAC46H,GAAgD,MACzG,CACI5yH,GAAI4yH,EAAK5yH,GACT+sF,kBAAmB6lC,EAAK7lC,kBACxBwM,MAAOq5B,EAAKr5B,MAJyF,IAOvG/jG,EAAgC,CAAC,EACrB08C,EAAA,EAAA7D,EAAA8N,EAAAusC,6BAA6BmqC,uBAA7B3gF,EAAA7D,EAAArgD,OAAAkkD,IAAqD,CAAlE,IAAMpgD,EAAGu8C,EAAA6D,GACJrkD,EAAcoG,KAAKktE,WAAWtY,YAAY/2D,EAAK,IACzC,KAARjE,IACA2H,EAAM1D,GAAOjE,GAIrB,MAD+B,CAAEmS,GAAI2yH,EAAQrmC,aAAch6F,EAAGymG,uBAAwBvjG,EAE1F,kCAEAhH,OAAAgsB,eAAY81G,EAAA7hI,UAAA,UAAO,KAAnB,iBACI,OAAOwF,KAAKu8H,mBAA4C,QAAzBniF,EAACp6C,KAAKo+F,iBAAiB2/B,UAAE,IAAA3jF,OAAA,EAAAA,EAAEs+C,QAC9D,kCAEAn+F,OAAAgsB,eAAY81G,EAAA7hI,UAAA,gBAAa,KAAzB,iBACI,OAAOwF,KAAKu8H,kBAA2C,QAA5BniF,EAAIp6C,KAAKo+F,iBAAiB2/B,UAAE,IAAA3jF,OAAA,EAAAA,EAAEo+C,OAC7D,kCAIAj+F,OAAAgsB,eAAW81G,EAAA7hI,UAAA,qBAAkB,KAA7B,WACI,OAAOwF,KAAKk3E,SAChB,MAEA,SAA8B37E,GAC1BotD,EAAAO,UAAUotC,wBAAwB/6F,EAAO,sBACzCyE,KAAKk3E,UAAY37E,CACrB,kCAEAhB,OAAAgsB,eAAW81G,EAAA7hI,UAAA,yBAAsB,KAAjC,SAAkCqkI,GAC9B7+H,KAAKw8H,2BAA6BqC,CACtC,kCAQOxC,EAAA7hI,UAAAyhI,wBAAP,SAA+B3tH,EAAejI,GAA9C,IAAA0L,EAAA,KACI,IACU/R,KAAKy+H,4BACPz+H,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWn+B,uBAAwBrxD,GAEvErG,KAAKo+H,YAAYpoC,aAAah2F,KAAKsgG,oBAAgBhkG,GAC9C,SAACmgG,GACOA,GACD1qF,EAAK+sH,YAAY,IAAIz7H,MAAM0O,EAAK8jF,WAAWv+B,yBAA0BjxD,GAEzE0L,EAAK8rH,SAAWphC,EAChB1qF,EAAKgtH,eAAezwH,EAAIjI,EAC5B,IACC,SAACvD,GACEiP,EAAK+sH,YAAYh8H,EAAOuD,EAC5B,IACN,MAAOvD,GACL9C,KAAK8+H,YAAYh8H,EAAOuD,GAEhC,EAOOg2H,EAAA7hI,UAAAwkI,uBAAP,SAA8B1wH,EAAejI,GAA7C,IAAA0L,EAAA,KACI,IAEU/R,KAAKy+H,4BACPz+H,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWn+B,uBAAwBrxD,GAGvEsiD,EAAAO,UAAUC,uBAAuBnpD,KAAK69H,SAAU79H,KAAK61F,WAAWv+B,yBAEhEt3D,KAAKo+F,iBAAiBK,KAAOz+F,KAAK69H,SAAStlC,cAC3Cv4F,KAAKy+H,2BAA6Bv2E,EAAA23C,8BAA8BC,WAAW9/F,KAAMA,KAAKu+H,YAItFv+H,KAAKy+H,2BAA2B79B,UAAY5gG,KAAKs8H,YACjDt8H,KAAKy+H,2BAA2B59B,aAAe7gG,KAAKy8H,eACpDz8H,KAAKy+H,2BAA2BxxD,SAAWjtE,KAAK08H,WAEhD18H,KAAKy+H,2BAA2BllC,iCAAmCv5F,KAAK28H,mCACxE38H,KAAKy+H,2BAA2BvkC,wBAA0Bl6F,KAAKi9H,0BAC/Dj9H,KAAKy+H,2BAA2B5kC,uBAAyB75F,KAAKk9H,yBAC9Dl9H,KAAKy+H,2BAA2BjkC,+BAAiCx6F,KAAKo9H,iCACtEp9H,KAAKy+H,2BAA2B9jC,gCAAkC36F,KAAKu9H,kCACvEv9H,KAAKy+H,2BAA2BrjC,oBAAsBp7F,KAAK09H,sBAC3D19H,KAAKy+H,2BAA2B1lC,yBAA2B/4F,KAAK49H,2BAChE59H,KAAKy+H,2BAA2B1kC,uBAAyB/5F,KAAKk+H,yBAE9Dl+H,KAAKy+H,2BAA2BrrE,QAAQpzD,KAAK69H,SAASh0F,OACjD,WACG93B,EAAKgtH,eAAezwH,EAAIjI,EAC5B,IACC,SAACvD,GACEiP,EAAK+sH,YAAYh8H,EAAOuD,EAC5B,IACN,MAAOvD,GACL9C,KAAK8+H,YAAYh8H,EAAOuD,GAEhC,EAQOg2H,EAAA7hI,UAAAykI,oBAAP,SAA2B1hC,EAA2BjvF,EAAejI,GACjEsiD,EAAAO,UAAUC,uBAAuBo0C,EAAa,eAC9CzzC,EAAAw5C,0BAA0BtjG,KAAKk/H,wBAAwB3hC,GAAcjvF,EAAIjI,EAC7E,EAUOg2H,EAAA7hI,UAAA2kI,sBAAP,SAA6BptD,EAAwB9Z,EAAkBmkB,EAAc9tE,EAAejI,GAApG,IAAA0L,EAAA,KACI,IAKI42C,EAAAO,UAAUotC,wBAAwBvkB,EAAgB/xE,KAAK61F,WAAW1+B,YAAYxzD,QAAQ,QAAS,mBAC/FglD,EAAAO,UAAUotC,wBAAwBr+B,EAAUj4D,KAAK61F,WAAW1+B,YAAYxzD,QAAQ,QAAS,aACzFglD,EAAAO,UAAUotC,wBAAwBla,EAAMp8E,KAAK61F,WAAW1+B,YAAYxzD,QAAQ,QAAS,aAErF3D,KAAKo+H,YAAYpoC,aAAah2F,KAAKsgG,eAAgBvuB,GAC9C,SAAC0qB,GACE9zC,EAAAO,UAAUC,uBAAuBszC,EAAM1qF,EAAK8jF,WAAWv+B,yBACvDvlD,EAAK8rH,SAAWphC,EAChB1qF,EAAKwsH,WAAW3jC,mBAAqB6B,EAAK2iC,yBAEpC9wH,GACFA,EAAGmuF,EAAK2iC,yBAEhB,IACC,SAACt8H,GACEiP,EAAK+sH,YAAYh8H,EAAOuD,EAC5B,IACN,MAAOvD,GACL9C,KAAK8+H,YAAYh8H,EAAOuD,GAEhC,EAOOg2H,EAAA7hI,UAAA6kI,wBAAP,SAA+B/wH,EAAejI,GAC1CyjD,EAAAw5C,0BAA0BtjG,KAAKs/H,8BAA+BhxH,EAAIjI,EACtE,EAEag2H,EAAA7hI,UAAA8kI,4BAAb,qGAGQ,OAFA32E,EAAAO,UAAUC,uBAAuBnpD,KAAKsgG,eAAgBtgG,KAAK61F,WAAWv+B,yBACtE3O,EAAAO,UAAUotC,wBAAwBt2F,KAAK69H,SAASh0F,MAAO7pC,KAAK61F,WAAWv+B,yBACvE,GAAMt3D,KAAKo+H,YAAY3nC,MAAMz2F,KAAKsgG,eAAgBtgG,KAAK69H,SAASh0F,sBAAhEuQ,EAAApyB,OAEAhoB,KAAK86D,sBAQNuhE,EAAA7hI,UAAA+kI,qBAAP,SAA4BjxH,EAAejI,GACvCyjD,EAAAw5C,0BAA0BtjG,KAAKw/H,2BAA4BlxH,EAAIjI,EACnE,EAEOg2H,EAAA7hI,UAAAglI,yBAAP,WACI,OAAOx/H,KAAKy6B,OAAM,EACtB,EAOO4hG,EAAA7hI,UAAAilI,sBAAP,SAA6BnxH,EAAejI,GAA5C,IAAA0L,EAAA,KACI,IACI42C,EAAAO,UAAU63C,gBAAgB/gG,KAAKu6D,gBAC/B5R,EAAAO,UAAU63C,gBAAgB/gG,KAAKy+H,2BAA2B1jE,cAC1DpS,EAAAO,UAAUC,uBAAuBnpD,KAAK69H,SAAU79H,KAAK61F,WAAWp+B,sBAC3Dz3D,KAAK0/H,eACN1/H,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWt+B,6BAA6B5zD,QAAQ,YAAa,SAAU0C,GAErGrG,KAAKy+H,4BACPz+H,KAAKy+H,2BAA2B3kE,YAAY95D,KAAK2/H,gBAAe,IAC3D,WACG5tH,EAAKgtH,eAAezwH,EAAIjI,EAC5B,IACC,SAACvD,GACEiP,EAAK+sH,YAAYh8H,EAAOuD,EAC5B,IAEV,MAAOvD,GACL9C,KAAK8+H,YAAYh8H,EAAOuD,GAEhC,EAOOg2H,EAAA7hI,UAAAolI,yBAAP,SAAgCtxH,EAAejI,GAA/C,IAAA0L,EAAA,KACI,IACI42C,EAAAO,UAAU63C,gBAAgB/gG,KAAKu6D,gBAC/B5R,EAAAO,UAAU63C,gBAAgB/gG,KAAKy+H,2BAA2B1jE,cAC1DpS,EAAAO,UAAUC,uBAAuBnpD,KAAKy+H,2BAA4Bz+H,KAAK61F,WAAWp+B,sBAClF9O,EAAAO,UAAUC,uBAAuBnpD,KAAK69H,SAAU79H,KAAK61F,WAAWp+B,sBAE3Dz3D,KAAK0/H,eACN1/H,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWt+B,6BAA6B5zD,QAAQ,YAAa,SAAU0C,GAErGrG,KAAKy+H,4BACPz+H,KAAKy+H,2BAA2B3kE,YAAY95D,KAAK6/H,mBAAkB,IAC9D,WACG9tH,EAAKgtH,eAAezwH,EAAIjI,EAC5B,IACC,SAACvD,GACEiP,EAAK+sH,YAAYh8H,EAAOuD,EAC5B,IAEV,MAAOvD,GACL9C,KAAK8+H,YAAYh8H,EAAOuD,GAEhC,EAQOg2H,EAAA7hI,UAAAslI,qBAAP,SAA4BC,EAAgBzxH,EAAejI,GAA3D,IAAA0L,EAAA,KACI,IACI42C,EAAAO,UAAU63C,gBAAgB/gG,KAAKu6D,gBAC/B5R,EAAAO,UAAU63C,gBAAgB/gG,KAAKy+H,2BAA2B1jE,cAC1DpS,EAAAO,UAAUotC,wBAAwBypC,EAAQ//H,KAAK61F,WAAW1+B,YAAYxzD,QAAQ,QAAS,WACvFglD,EAAAO,UAAUC,uBAAuBnpD,KAAK69H,SAAU79H,KAAK61F,WAAWp+B,sBAE3Dz3D,KAAKggI,SACNhgI,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWp+B,sBAAuBpxD,GAGjErG,KAAK+9H,GAAGvlC,QAAUx4F,KAAK+9H,GAAGhyH,KAAOg0H,GAClC//H,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWr+B,4BAA4B7zD,QAAQ,YAAa,SAAU0C,IAI1F,IADOrG,KAAKo+F,iBAAiBQ,oBAAoBmhC,IAE7D//H,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWx+B,2BAA4BhxD,GAErErG,KAAKy+H,4BACPz+H,KAAKy+H,2BAA2B3kE,YAAY95D,KAAKigI,eAAeF,GAAQ,IAAQ,WACxEhuH,EAAKgtH,eAAezwH,EAAIjI,EAC5B,IACC,SAACvD,GACEiP,EAAK+sH,YAAYh8H,EAAOuD,EAC5B,IAEV,MAAOvD,GACL9C,KAAK8+H,YAAYh8H,EAAOuD,GAEhC,EAQOg2H,EAAA7hI,UAAA0lI,uBAAP,SAA8BH,EAAuCzxH,EAAejI,GAApF,IAAA0L,EAAA,KACI,IAEI,GADA42C,EAAAO,UAAU63C,gBAAgB/gG,KAAKu6D,gBACzBv6D,KAAKskG,2BAA6By7B,EAAO9kI,eAAe,MAE1D6uD,EAAAw5C,0BAA0BtjG,KAAKmgI,2BAA2BJ,GAAyBzxH,EAAIjI,OACpF,CACHsiD,EAAAO,UAAU63C,gBAAgB/gG,KAAKy+H,2BAA2B1jE,cAC1DpS,EAAAO,UAAUC,uBAAuBnpD,KAAK69H,SAAU79H,KAAK61F,WAAWp+B,sBAC3Dz3D,KAAK0/H,eACN1/H,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWr+B,4BAA4B7zD,QAAQ,YAAa,WAAY0C,GAE5G,IAAI+5H,EAAgB,GACpB,GAAsB,kBAAXL,EACPK,EAAgBL,OACb,GAAIA,EAAO9kI,eAAe,MAAO,CAEpCmlI,EADkCL,EACNh0H,QACzB,GAAIg0H,EAAO9kI,eAAe,UAAW,CAExCmlI,EADoBL,EACCA,OAEzBp3E,EAAAO,UAAUotC,wBAAwB8pC,EAAepgI,KAAK61F,WAAW1+B,YAAYxzD,QAAQ,QAAS,YAG/E,IADO3D,KAAKq4F,aAAapkD,WAAU,SAAC51C,GAA4B,OAAAA,EAAE0N,KAAOq0H,CAAT,KAE3EpgI,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWx+B,2BAA4BhxD,GAErErG,KAAKy+H,4BACPz+H,KAAKy+H,2BAA2B3kE,YAAY95D,KAAKqgI,gBAAgBD,IAAiB,WAC9EruH,EAAKgtH,eAAezwH,EAAIjI,EAC5B,IACK,SAACvD,GACEiP,EAAK+sH,YAAYh8H,EAAOuD,EAC5B,KAGd,MAAOvD,GACL9C,KAAK8+H,YAAYh8H,EAAOuD,GAEhC,EAOOg2H,EAAA7hI,UAAA8lI,wBAAP,SAA+BhyH,EAAejI,GAA9C,IAAA0L,EAAA,KACI,IACI42C,EAAAO,UAAU63C,gBAAgB/gG,KAAKu6D,gBAC/B5R,EAAAO,UAAU63C,gBAAgB/gG,KAAKy+H,2BAA2B1jE,cAC1DpS,EAAAO,UAAUC,uBAAuBnpD,KAAK69H,SAAU79H,KAAK61F,WAAWp+B,sBAC3Dz3D,KAAK0/H,eACN1/H,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWt+B,6BAA6B5zD,QAAQ,YAAa,WAAY0C,GAEvGrG,KAAKy+H,4BACPz+H,KAAKy+H,2BAA2B3kE,YAAY95D,KAAK2/H,gBAAe,IAAS,WACrE5tH,EAAKgtH,eAAezwH,EAAIjI,EAC5B,IACK,SAACvD,GACEiP,EAAK+sH,YAAYh8H,EAAOuD,EAC5B,IAEV,MAAOvD,GACL9C,KAAK8+H,YAAYh8H,EAAOuD,GAEhC,EAOOg2H,EAAA7hI,UAAA+lI,2BAAP,SAAkCjyH,EAAejI,GAAjD,IAAA0L,EAAA,KACI,IACI42C,EAAAO,UAAU63C,gBAAgB/gG,KAAKu6D,gBAC/B5R,EAAAO,UAAU63C,gBAAgB/gG,KAAKy+H,2BAA2B1jE,cAC1DpS,EAAAO,UAAUC,uBAAuBnpD,KAAK69H,SAAU79H,KAAK61F,WAAWp+B,sBAC3Dz3D,KAAK0/H,eACN1/H,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWt+B,6BAA6B5zD,QAAQ,YAAa,eAAgB0C,GAE3GrG,KAAKy+H,4BACPz+H,KAAKy+H,2BAA2B3kE,YAAY95D,KAAK6/H,mBAAkB,IAAS,WACxE9tH,EAAKgtH,eAAezwH,EAAIjI,EAC5B,IACK,SAACvD,GACEiP,EAAK+sH,YAAYh8H,EAAOuD,EAC5B,IAEV,MAAOvD,GACL9C,KAAK8+H,YAAYh8H,EAAOuD,GAEhC,EAQOg2H,EAAA7hI,UAAAgmI,uBAAP,SAA8BT,EAAgBzxH,EAAejI,GAA7D,IAAA0L,EAAA,KACI,IACI42C,EAAAO,UAAU63C,gBAAgB/gG,KAAKu6D,gBAC/B5R,EAAAO,UAAU63C,gBAAgB/gG,KAAKy+H,2BAA2B1jE,cAC1DpS,EAAAO,UAAUotC,wBAAwBypC,EAAQ//H,KAAK61F,WAAW1+B,YAAYxzD,QAAQ,QAAS,WACvFglD,EAAAO,UAAUC,uBAAuBnpD,KAAK69H,SAAU79H,KAAK61F,WAAWp+B,sBAE3Dz3D,KAAKggI,SACNhgI,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWp+B,sBAAuBpxD,GAGjErG,KAAK+9H,GAAGvlC,QAAUx4F,KAAK+9H,GAAGhyH,KAAOg0H,GAClC//H,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWr+B,4BAA4B7zD,QAAQ,YAAa,SAAU0C,IAI1F,IADOrG,KAAKo+F,iBAAiBQ,oBAAoBmhC,IAE7D//H,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWx+B,2BAA4BhxD,GAErErG,KAAKy+H,4BACPz+H,KAAKy+H,2BAA2B3kE,YAAY95D,KAAKigI,eAAeF,GAAQ,IAAS,WAC7EhuH,EAAKgtH,eAAezwH,EAAIjI,EAC5B,IACK,SAACvD,GACEiP,EAAK+sH,YAAYh8H,EAAOuD,EAC5B,IAEV,MAAOvD,GACL9C,KAAK8+H,YAAYh8H,EAAOuD,GAEhC,EAQOg2H,EAAA7hI,UAAAimI,qBAAP,SAA4BtkI,EAAiBmS,EAAejI,GAA5D,IAAA0L,EAAA,KACI,IACI42C,EAAAO,UAAU63C,gBAAgB/gG,KAAKu6D,gBAC/B5R,EAAAO,UAAU63C,gBAAgB/gG,KAAKy+H,2BAA2B1jE,cAC1DpS,EAAAO,UAAUotC,wBAAwBn6F,EAAS6D,KAAK61F,WAAW1+B,YAAYxzD,QAAQ,QAAS,YACxFglD,EAAAO,UAAUC,uBAAuBnpD,KAAK69H,SAAU79H,KAAK61F,WAAWp+B,sBAC3Dz3D,KAAKggI,SACNhgI,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWp+B,sBAAuBpxD,GAGlElK,EAAQpC,OAASiG,KAAKw+H,0BACtBx+H,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAW1+B,YAAYxzD,QAAQ,QAAS,mBAAoB0C,GAE1FrG,KAAKy+H,4BACPz+H,KAAKy+H,2BAA2B3kE,YAAY95D,KAAK0gI,kBAAkBvkI,IAAW,WAC1E4V,EAAKgtH,eAAezwH,EAAIjI,EAC5B,IACK,SAACvD,GACEiP,EAAK+sH,YAAYh8H,EAAOuD,EAC5B,IAEV,MAAOvD,GACL9C,KAAK8+H,YAAYh8H,EAAOuD,GAEhC,EAQOg2H,EAAA7hI,UAAAmmI,4BAAP,SAAmCp2C,EAAqBj8E,EAAejI,GAAvE,IAAA0L,EAAA,KACI,IACI42C,EAAAO,UAAU63C,gBAAgB/gG,KAAKu6D,gBAC/B5R,EAAAO,UAAU63C,gBAAgB/gG,KAAKy+H,2BAA2B1jE,cAC1DpS,EAAAO,UAAUq8D,8BAA8Bh7B,EAAWvqF,KAAK61F,WAAW1+B,YAAYxzD,QAAQ,QAAS,cAChGglD,EAAAO,UAAUC,uBAAuBnpD,KAAK69H,SAAU79H,KAAK61F,WAAWp+B,sBAC3Dz3D,KAAKggI,SACNhgI,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWp+B,sBAAuBpxD,GAEhErG,KAAKy+H,4BACPz+H,KAAKy+H,2BAA2B3kE,YAAY95D,KAAK4gI,kCAAkCr2C,IAC9E,WACGx4E,EAAKgtH,eAAezwH,EAAIjI,EAC5B,IACC,SAACvD,GACEiP,EAAK+sH,YAAYh8H,EAAOuD,EAC5B,IAEV,MAAOvD,GACL9C,KAAK8+H,YAAYh8H,EAAOuD,GAEhC,EAQOg2H,EAAA7hI,UAAAyjI,oBAAP,SAA2BhmE,EAAkB3pD,EAAejI,GAA5D,IAAA0L,EAAA,KACI,IACI42C,EAAAO,UAAU63C,gBAAgB/gG,KAAKu6D,gBAC/B5R,EAAAO,UAAU63C,gBAAgB/gG,KAAKy+H,2BAA2B1jE,cAC1DpS,EAAAO,UAAUotC,wBAAwBr+B,EAAUj4D,KAAK61F,WAAW1+B,YAAYxzD,QAAQ,QAAS,aACzFglD,EAAAO,UAAUC,uBAAuBnpD,KAAK69H,SAAU79H,KAAK61F,WAAWp+B,sBAC3Dz3D,KAAKggI,SACNhgI,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWp+B,sBAAuBpxD,GAEhErG,KAAKy+H,4BACPz+H,KAAKy+H,2BAA2B3kE,YAAY95D,KAAK6gI,yBAAyB5oE,IACrE,WACGlmD,EAAKgtH,eAAezwH,EAAIjI,EAC5B,IACC,SAACvD,GACEiP,EAAK+sH,YAAYh8H,EAAOuD,EAC5B,IAEV,MAAOvD,GACL9C,KAAK8+H,YAAYh8H,EAAOuD,GAEhC,EAEOg2H,EAAA7hI,UAAAugE,WAAP,WACI,OAAO/6D,KAAKu6D,cAChB,EAEO8hE,EAAA7hI,UAAAsgE,QAAP,WACQ96D,KAAK+6D,aAGT/6D,KAAKu6D,gBAAiB,EAChBv6D,KAAKuT,QACPvT,KAAKuT,OAAOknB,QAEhBz6B,KAAKu+H,gBAAajiI,EAClB0D,KAAK+lH,kBAAezpH,EACpB0D,KAAKsgG,oBAAiBhkG,EACtB0D,KAAK69H,cAAWvhI,EAChB0D,KAAKk3E,eAAY56E,EACjB0D,KAAKo+H,iBAAc9hI,EACnB0D,KAAKu8H,iBAAkB,EACvBv8H,KAAKg+H,aAAc,EACnBh+H,KAAKo+F,sBAAmB9hG,EAC5B,EAEa+/H,EAAA7hI,UAAAsmI,6BAAb,SAA0Cx9D,oGAChCtjE,KAAKskG,0BACP,GAAMtkG,KAAKskG,0BAA0B7pE,SADrC,aACA2f,EAAApyB,wBAEJ,SAAMs7C,EAAWugC,oCAAjBzpD,EAAApyB,OACAhoB,KAAKskG,0BAA4BhhC,EACjCtjE,KAAKskG,0BAA0B/N,aAAev2F,iBAG3Cq8H,EAAA7hI,UAAAgnG,aAAP,WACI,IAAMvpC,EAAsBj4D,KAAK+9H,GAAM/9H,KAAK+9H,GAAG95E,YAAc,mBAC7D,OAAOt+C,KAAKC,UAAU,CAClBmG,GAAI,IACJksD,SAAQA,EACRsgC,cAAev4F,KAAK69H,SAAStlC,cAC7BngC,OAAQp4D,KAAK69H,SAASzlE,OACtBv4D,KAAMqoD,EAAAozC,mCAAmCyD,WAEjD,EAqMQs9B,EAAA7hI,UAAA0kI,wBAAR,SAAgC3hC,GAE5B,QAAuBjhG,IADsB0D,KAAKo+F,iBAAiBM,uBAAuBnB,IAEhFv9F,KAAKskG,0BAA2B,CAClC,IAAMlB,EAAmBpjG,KAAKojG,iBAE9B,OADAA,EAAiB/K,aAAe,CAACkF,GAC1Bv9F,KAAKskG,0BAA0BZ,sBAAsBN,EAAkB,QAG1F,EAEQi5B,EAAA7hI,UAAA2lI,2BAAR,SAAmC5iC,GAC/Bv9F,KAAKo+F,iBAAiBU,kBAAkBvB,EAAYxxF,IACpD,IAAMq3F,EAAmBpjG,KAAKojG,iBAE9B,OADAA,EAAiB/K,aAAe,CAACkF,GAC1Bv9F,KAAKskG,0BAA0BZ,sBAAsBN,EAAkB,QAClF,EAEci5B,EAAA7hI,UAAAigC,MAAd,SAAoBqgC,mGAGZ,6BADA96D,KAAKu8H,iBAAkB,EACvB,GAAqC,QAArCniF,EAAMp6C,KAAKy+H,kCAA0B,IAAArkF,OAAA,EAAAA,EAAE3f,uBAAvC+f,EAAAxyB,OACAhoB,KAAKy+H,gCAA6BniI,EAC5B0D,KAAKw8H,4BACPx8H,KAAKw8H,2BAA2B1hE,uBAIpC,6BAEAA,GACA96D,KAAK86D,sBAKLuhE,EAAA7hI,UAAAukI,eAAR,SAAuBzwH,EAAgBjI,GACnC,GAAMiI,EAAI,CACN,IACIA,IACF,MAAO3J,GACC0B,GACFA,EAAI1B,GAGZ2J,OAAKhS,EAEb,EAEQ+/H,EAAA7hI,UAAAskI,YAAR,SAAoBh8H,EAAYuD,GAC5B,GAAMA,EACF,GAAIvD,aAAiBO,MAAO,CACxB,IAAMusD,EAAoB9sD,EAC1BuD,EAAIupD,EAAWnxD,KAAO,KAAOmxD,EAAWzzD,cAGxCkK,EAAIvD,EAGhB,EAGQu5H,EAAA7hI,UAAA2iI,eAAR,SAAuB4D,GAAvB,IAAAhvH,EAAA,KAEUsmF,EAA8Br4F,KAAKo+F,iBAAiB/F,aAAat0F,KAAI,SAAC1F,GAAyC,OAAE0T,EAAKirH,cAAc3+H,EAArB,IACrH,OAAK0iI,EAGM1oC,EAFAA,EAAax0F,QAAO,SAACxF,GAA4B,OAAa,IAAbA,EAAEm6F,MAAF,GAIhE,EAEQ6jC,EAAA7hI,UAAAwiI,cAAR,SAAsB3+H,GAClB,OAAO,IAAIgpE,EAAAspD,YAAYtyH,EAAE0N,GAAI1N,EAAEi6F,OAAQj6F,EAAE4lD,YAAa5lD,EAAEm6F,OAAQn6F,EAAEq6F,QAASr6F,EAAEu6F,WAAYv6F,EAAEy6F,kBAAmBz6F,EAAEinG,MACpH,EAEQ+2B,EAAA7hI,UAAAqlI,kBAAR,SAA0BnnC,GAItB,OAHA/vC,EAAAO,UAAUotC,wBAAwBt2F,KAAK69H,SAASzlE,OAAQ,kBACxDzP,EAAAO,UAAUotC,wBAAwBt2F,KAAK69H,SAAStlC,cAAe,iBAExD5yF,KAAKC,UAAU,CAClBqyF,QAAS/vC,EAAAuxC,mCAAmCiG,WAC5CnH,cAAev4F,KAAK69H,SAAStlC,cAC7BU,OAAQj5F,KAAK69H,SAASzlE,OACtBv4D,KAAMqoD,EAAAozC,mCAAmC0D,mBACzCzjG,MAAOm9F,GAEf,EAEQ2jC,EAAA7hI,UAAAylI,eAAR,SAAuB1nC,EAAuBG,GAI1C,OAHA/vC,EAAAO,UAAUotC,wBAAwBt2F,KAAK69H,SAASzlE,OAAQ,kBACxDzP,EAAAO,UAAUotC,wBAAwBiC,EAAe,iBAE1C5yF,KAAKC,UAAU,CAClBqyF,QAAS/vC,EAAAuxC,mCAAmCG,QAE5CrB,cAAeA,EACfU,OAAQj5F,KAAK69H,SAASzlE,OACtBv4D,KAAMqoD,EAAAozC,mCAAmC0D,mBACzCzjG,MAAOm9F,GAEf,EAEQ2jC,EAAA7hI,UAAAmlI,eAAR,SAAuBtiC,GAInB,OAHA10C,EAAAO,UAAUotC,wBAAwBt2F,KAAK69H,SAASzlE,OAAQ,kBACxDzP,EAAAO,UAAUotC,wBAAwBt2F,KAAK69H,SAAStlC,cAAe,iBAExD5yF,KAAKC,UAAU,CAClBqyF,QAAS/vC,EAAAuxC,mCAAmCgG,aAC5ClH,cAAev4F,KAAK69H,SAAStlC,cAC7BU,OAAQj5F,KAAK69H,SAASzlE,OACtBv4D,KAAMqoD,EAAAozC,mCAAmC0D,mBACzCzjG,MAAO8hG,GAEf,EAEQg/B,EAAA7hI,UAAA6lI,gBAAR,SAAwB9nC,GAIpB,OAHA5vC,EAAAO,UAAUotC,wBAAwBt2F,KAAK69H,SAASzlE,OAAQ,kBACxDzP,EAAAO,UAAUotC,wBAAwBiC,EAAe,iBAE1C5yF,KAAKC,UAAU,CAClBqyF,QAAS/vC,EAAAuxC,mCAAmC0F,iBAE5C5G,cAAeA,EACfU,OAAQj5F,KAAK69H,SAASzlE,OACtBv4D,KAAMqoD,EAAAozC,mCAAmC0D,oBAEjD,EAEQq9B,EAAA7hI,UAAAomI,kCAAR,SAA0Cr2C,GAItC,OAHA5hC,EAAAO,UAAUotC,wBAAwBt2F,KAAK69H,SAASzlE,OAAQ,kBACxDzP,EAAAO,UAAUotC,wBAAwBt2F,KAAK69H,SAAStlC,cAAe,iBAExD5yF,KAAKC,UAAU,CAClBqyF,QAAS/vC,EAAAuxC,mCAAmCC,wBAC5CnB,cAAev4F,KAAK69H,SAAStlC,cAC7BU,OAAQj5F,KAAK69H,SAASzlE,OACtBv4D,KAAMqoD,EAAAozC,mCAAmC0D,mBACzCzjG,MAAOgvF,GAEf,EAEQ8xC,EAAA7hI,UAAAqmI,yBAAR,SAAiC5oE,GAK7B,OAJAtP,EAAAO,UAAUotC,wBAAwBt2F,KAAK69H,SAASzlE,OAAQ,kBACxDzP,EAAAO,UAAUotC,wBAAwBr+B,EAAU,YAC5CtP,EAAAO,UAAUotC,wBAAwBt2F,KAAK69H,SAAStlC,cAAe,iBAExD5yF,KAAKC,UAAU,CAClBqyF,QAAS/vC,EAAAuxC,mCAAmCW,eAC5CniC,SAAQA,EACRsgC,cAAev4F,KAAK69H,SAAStlC,cAC7BU,OAAQj5F,KAAK69H,SAASzlE,OACtBv4D,KAAMqoD,EAAAozC,mCAAmC0D,mBACzCzjG,MAAO08D,GAEf,EAEQokE,EAAA7hI,UAAAkmI,kBAAR,SAA0BvkI,GAKtB,OAJAwsD,EAAAO,UAAUotC,wBAAwBt2F,KAAK69H,SAASzlE,OAAQ,kBACxDzP,EAAAO,UAAUotC,wBAAwBt2F,KAAK69H,SAAStlC,cAAe,iBAC/D5vC,EAAAO,UAAUotC,wBAAwBn6F,EAAS,WAEpCwJ,KAAKC,UAAU,CAClB2yF,cAAev4F,KAAK69H,SAAStlC,cAC7BngC,OAAQp4D,KAAK69H,SAASzlE,OACtBj7C,KAAMhhB,EACN0D,KAAMqoD,EAAAozC,mCAAmCO,gBAEjD,EAEJwgC,CAAA,CA7hCA,CAAsC3zC,GAAzBrvF,EAAAA,iBAAAgjI,iHC7Ib,IAAA2E,EAAA,WAKI,SAAAA,EAAmBhhC,GACfhgG,KAAKihI,gBAAkBjhC,CAC3B,CA0BJ,OAxBcghC,EAAAxmI,UAAAukI,eAAV,SAAyBzwH,EAAcjI,GACnC,GAAMiI,EAAI,CACN,IACIA,IACF,MAAO3J,GACC0B,GACFA,EAAI1B,GAGZ2J,OAAKhS,EAEb,EAEU0kI,EAAAxmI,UAAAskI,YAAV,SAAsBh8H,EAAYuD,GAC9B,GAAMA,EACF,GAAIvD,aAAiBO,MAAO,CACxB,IAAMusD,EAAoB9sD,EAC1BuD,EAAIupD,EAAWnxD,KAAO,KAAOmxD,EAAWzzD,cAGxCkK,EAAIvD,EAGhB,EACJk+H,CAAA,CAjCA,GAAa3nI,EAAAA,mBAAA2nI,seCLb,IAEAhnC,EAAA,SAAAl0E,GAGI,SAAAk0E,EAAmBknC,EAAwBl9D,GAA3C,IAAAjyD,EACI+T,EAAAprB,KAAA,KAAMspE,IAAU,YAChBjyD,EAAKovH,mBAAqBD,GAC9B,CAMJ,OAZqDr9D,EAAAm2B,EAAAl0E,GASjDvrB,OAAAgsB,eAAWyzE,EAAAx/F,UAAA,iBAAc,KAAzB,WACI,OAAOwF,KAAKmhI,kBAChB,kCACJnnC,CAAA,CAZA,CAFAv3E,EAAA,MAEqDgsD,kBAAxCp1E,EAAAA,gCAAA2gG,+eCFb,IAIAu2B,EAAA,SAAAzqG,GAII,SAAAyqG,EAAmBviH,EAAkCqqF,EAA8Br0B,GAAnF,IAAAjyD,EACI+T,EAAAprB,KAAA,KAAMspE,IAAU,YAChBjyD,EAAKu6F,WAAat+F,EAClB+D,EAAKyrF,gBAAkBnF,GAC3B,CASJ,OAjB8Dx0B,EAAA0sD,EAAAzqG,GAU1DvrB,OAAAgsB,eAAWgqG,EAAA/1H,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKssG,UAChB,kCAEA/xG,OAAAgsB,eAAWgqG,EAAA/1H,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKw9F,eAChB,kCACJ+yB,CAAA,CAjBA,CAJA9tG,EAAA,MAI8DgsD,kBAAjDp1E,EAAAA,yCAAAk3H,u/CCLb,IAAAroE,EAAAzlC,EAAA,OACAqnC,EAAArnC,EAAA,MACAkmC,EAAAlmC,EAAA,OACA4kD,EAAA5kD,EAAA,MAgBAiuG,EAAA,WA4EI,SAAAA,EAAmB1wB,GACfhgG,KAAKihI,gBAAkBjhC,EACvBhgG,KAAKsgG,eAAiB,IAAIj5B,EAAAtC,mBAC1B/kE,KAAK0uE,oBAAiBpyE,EACtB0D,KAAKkjG,wBAAyB,CAClC,CAoJJ,OA3II3oG,OAAAgsB,eAAWmqG,EAAAl2H,UAAA,4BAAyB,KAApC,WAGI,OAFAmuD,EAAAO,UAAU63C,gBAAgB/gG,KAAKkjG,wBAExBljG,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWkT,qCAClD,kCASAxtE,OAAAgsB,eAAWmqG,EAAAl2H,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCAOA/lG,OAAAgsB,eAAWmqG,EAAAl2H,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAK0uE,eAAe44C,YAC/B,kCAOA/sH,OAAAgsB,eAAWmqG,EAAAl2H,UAAA,aAAU,KAArB,WACI,OAAO6sE,EAAAo5B,WAAWC,eAAe1gG,KAAK0uE,eAC1C,kCASAn0E,OAAAgsB,eAAWmqG,EAAAl2H,UAAA,qBAAkB,KAA7B,WACI,OAAOwF,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWwhC,iCAClD,MASA,SAA8BxsD,GAC1B8e,EAAAO,UAAUotC,wBAAwBzsD,EAAO,SACzC7pC,KAAKktE,WAAWlc,YAAYqW,EAAAxS,WAAWwhC,iCAAkCxsD,EAC7E,kCAKO6mF,EAAAl2H,UAAA2kI,sBAAP,SAA6B5oC,EAA6BjoF,EAAejI,GACrE,IAAM+5F,EAAmB7J,EACzB5tC,EAAAO,UAAUC,uBAAuBi3C,EAAkB,gBAInDpgG,KAAK0uE,eAAiB,IAAIxmB,EAAA85C,sBAAsBzL,EAAahjF,OAAQvT,KAAKihI,iBAC1Et4E,EAAAO,UAAUC,uBAAuBnpD,KAAK0uE,eAAgB,cACtD1uE,KAAK0uE,eAAeo1B,iBAAiB9jG,MAErC8pD,EAAAw5C,0BAA0BlD,EAAiB0gC,6BAA6B9gI,KAAK0uE,gBAAiBpgE,EAAIjI,EACtG,EAWOqqH,EAAAl2H,UAAA4mI,uBAAP,SAA8B9yH,EAAejI,GACzCrG,KAAK0uE,eAAe20B,gCAAgC/0F,EAAIjI,EAC5D,EAWOqqH,EAAAl2H,UAAA6mI,sBAAP,SAA6B/yH,EAAejI,GACxCrG,KAAK0uE,eAAe80B,+BAA+Bl1F,EAAIjI,EAC3D,EAKOqqH,EAAAl2H,UAAA8mI,uBAAP,SAA8BhzH,EAAejI,GAA7C,IAAA0L,EAAA,KACI/R,KAAK0uE,eAAew1B,sBAEpBp6C,EAAAw5C,0BAA2B33C,EAAA55C,OAAA,4BAAA0xD,EAAA,eAAArpB,GAA6B,gBAAc9rC,EAAIjI,EAC9E,EAQOqqH,EAAAl2H,UAAAigC,MAAP,SAAansB,EAAiBglH,GAC1B3qE,EAAAO,UAAU63C,gBAAgB/gG,KAAKkjG,wBAC/Bp5C,EAAAw5C,0BAA0BtjG,KAAK86D,SAAQ,GAAOxsD,EAAIglH,EACtD,EASgB5C,EAAAl2H,UAAAsgE,QAAhB,SAAwBsmC,6FACpB,OAAIphG,KAAKkjG,uBACL,IAEEljG,KAAK0uE,eACP,GAAM1uE,KAAK0uE,eAAej0C,SAD1B,aACA2f,EAAApyB,OACAhoB,KAAK0uE,oBAAiBpyE,0BAEtB8kG,IACAphG,KAAKkjG,wBAAyB,eAG1CwtB,CAAA,CArOA,GAAar3H,EAAAA,wBAAAq3H,+eClBb,IAEA94B,EAAA,SAAA9xE,GAAA,SAAA8xE,kDACA,QAD8D/zB,EAAA+zB,EAAA9xE,GAC9D8xE,CAAA,CADA,CAFAn1E,EAAA,OAE8D2kG,2BAAjD/tH,EAAAA,yCAAAu+F,ueCFb,IAGA44B,EAAA,SAAA1qG,GAUI,SAAA0qG,EAAmBx1H,EAAuCmuC,EAAiB66B,GAA3E,IAAAjyD,EACI+T,EAAAprB,KAAA,KAAMyuC,EAAQ66B,IAAU,YACxBjyD,EAAK+gG,WAAa93G,GACtB,CASJ,OAtBsD6oE,EAAA2sD,EAAA1qG,GAmBlDvrB,OAAAgsB,eAAWiqG,EAAAh2H,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAK8yG,UAChB,kCACJ0d,CAAA,CAtBA,CAHA/tG,EAAA,MAGsDgtD,sBAAzCp2E,EAAAA,iCAAAm3H,oeCDb,IAGAx1B,EAAA,SAAAl1E,GAII,SAAAk1E,EAAmBzC,EACA2C,EACAqmC,EACAj1D,EACAt+D,EACAmP,EACA3F,EACA2xB,EACAutC,EACArwD,EACA6mD,GAVnB,IAAAn7D,EAWI+T,EAAAprB,KAAA,KAAMwgG,EAAc5uB,EAAUt+D,EAAQmP,EAAM3F,EAAU2xB,EAAQutC,EAAcrwD,EAAM6mD,IAAW,YAC7Fn7D,EAAKs4C,OAASkuC,EACdxmF,EAAKyvH,aAAeD,GACxB,CAeJ,OAjCmD19D,EAAAm3B,EAAAl1E,GAuB/CvrB,OAAAgsB,eAAWy0E,EAAAxgG,UAAA,gBAAa,KAAxB,WACI,OAAOwF,KAAKqqD,MAChB,kCAKA9vD,OAAAgsB,eAAWy0E,EAAAxgG,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKwhI,YAChB,kCACJxmC,CAAA,CAjCA,CAHAv4E,EAAA,OAGmDqjF,8BAAtCzsG,EAAAA,8BAAA2hG,u2DCHb,IAsCYymC,EAtCZv5E,EAAAzlC,EAAA,OAIAi/G,EAAAj/G,EAAA,OACAqnC,EAAArnC,EAAA,MAMAkmC,EAAAlmC,EAAA,OACA4kD,EAAA5kD,EAAA,MAaAk/G,EAAAl/G,EAAA,OACA8kD,EAAA9kD,EAAA,QAYA,SAAYg/G,GACRA,EAAAA,EAAA,uBAAUA,EAAAA,EAAA,2BAAYA,EAAAA,EAAA,wBACzB,CAFD,CAAYA,EAAApoI,EAAAooI,cAAApoI,EAAAA,YAAW,KAKvB,IAAAuoI,EAAA,SAAA97G,GAII,SAAA87G,EAAmB7hC,EAAuCC,EAA0B6hC,EAAoCxlC,GAAxH,IAAAtqF,EAEI+T,EAAAprB,KAAA,KAAMqlG,EAAcC,EAAa,IAAI0hC,EAAAtlC,wCAAwCC,KAAY,YAEzFtqF,EAAK+vH,gBAAkBL,EAAYM,SAC7BF,IACF9vH,EAAKiwH,eAAiBH,EACtB9vH,EAAK48D,eAAiB,WAClB58D,EAAK+vH,gBAAkBL,EAAYvkE,SACvC,EAEAnrD,EAAKo+D,eAAiB,WAClBp+D,EAAK+vH,gBAAkBL,EAAYM,QACvC,EAEAhwH,EAAKi6D,YAAc,SAACi2D,EAA2Bt9H,GACrCoN,EAAKiwH,eAAeh2D,aACtBj6D,EAAKiwH,eAAeh2D,YAAYj6D,EAAKiwH,eAAgBr9H,EAE7D,EAGAoN,EAAK+5D,WAAa,SAAOm2D,EAA2Bt9H,GAAkC,OAAAgnD,EAAA55C,OAAA,oFAEtE,UAARpN,EAAE3J,cAAM,IAAAo/C,OAAA,EAAAA,EAAEs8B,cACV,GAAM12E,KAAKkiI,gBADW,oBACtB1nF,EAAAxyB,OAEAhoB,KAAKmiI,gBAAgBx9H,EAAE3J,OAAO07E,2BAExB12E,KAAKgiI,eAAel2D,YACtB9rE,KAAKgiI,eAAel2D,WAAW9rE,KAAKgiI,eAAgBr9H,oBAG5D,kBAIJoN,EAAKk7D,SAAW,kBAAAthB,EAAA55C,OAAA,0EACR/R,KAAK8hI,kBAAoBL,EAAYM,SAArC,6BAEI,gCAAM/hI,KAAKkiI,8BAAX9nF,EAAApyB,oCAEAhoB,KAAK8hI,gBAAkBL,EAAYM,0CAKvD,CAgDJ,OAnGgDl+D,EAAA+9D,EAAA97G,GAqD5CvrB,OAAAgsB,eAAWq7G,EAAApnI,UAAA,QAAK,KAAhB,WACI,OAAOwF,KAAK8hI,eAChB,MAEA,SAAiBM,GACbpiI,KAAK8hI,gBAAkBM,CAC3B,kCAEOR,EAAApnI,UAAAkrG,aAAP,WACI1lG,KAAK8hI,gBAAkBL,EAAYvkE,SACvC,EAEa0kE,EAAApnI,UAAAmrG,gBAAb,qGAEI,OADA3lG,KAAK8hI,gBAAkBL,EAAYM,SACnC,GAAM/hI,KAAKkiI,8BAAX9nF,EAAApyB,mBAOI45G,EAAApnI,UAAA2nI,gBAAR,SAAwBr/H,GACpB,IACI,GAAM9C,KAAKgiI,eAAe/0D,SAAU,CAChC,IAAMG,EAAwD,IAAI7F,EAAAqwB,yCAC9DvwB,EAAAkE,mBAAmBloE,MACnBP,EACAukE,EAAAmE,sBAAsBqD,cAG1B7uE,KAAKgiI,eAAe/0D,SAASjtE,KAAKgiI,eAAgB50D,IAExD,MAAOzoE,GACL,CAER,EAEci9H,EAAApnI,UAAA0nI,aAAd,2GAGQ,6BADAliI,KAAKwjG,iCACL,GAAmB,QAAnBppD,EAAMp6C,KAAKghG,gBAAQ,IAAA5mD,OAAA,EAAAA,EAAE2Z,4BAArBvZ,EAAAxyB,OACAhoB,KAAK8hI,gBAAkBL,EAAYM,qEAK/CH,CAAA,CAnGA,CAAgDv6D,EAAAkmD,uBAwGhDkD,EAAA,SAAA3qG,GA2BI,SAAA2qG,EAAmBzwB,GAAnB,IAAAjuF,EACI+T,EAAAprB,KAAA,KAAMslG,IAAY,YALdjuF,EAAA8jF,WAA6B3tC,EAAAusC,6BAA6BqB,WAM9D/jF,EAAKwoD,gBAAiB,EACtBxoD,EAAKswH,gBAAiB,EACtBtwH,EAAKuwH,mBAAqB,mCAC1BvwH,EAAKwwH,sBAAwB,SAC7BxwH,EAAKuuF,eAAiB,IAAIj5B,EAAAtC,oBAC9B,CA0UJ,OA5W4ClB,EAAA4sD,EAAA3qG,GAoCxCvrB,OAAAgsB,eAAWkqG,EAAAj2H,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCAEA/lG,OAAAgsB,eAAWkqG,EAAAj2H,UAAA,4BAAyB,KAApC,WACI,OAAOwF,KAAK8gG,6BAChB,kCAEAvmG,OAAAgsB,eAAWkqG,EAAAj2H,UAAA,eAAY,KAAvB,iBACI,OAA4B,QAA5B4/C,EAAOp6C,KAAKqgG,wBAAgB,IAAAjmD,OAAA,EAAAA,EAAEi+C,YAClC,kCAEA99F,OAAAgsB,eAAYkqG,EAAAj2H,UAAA,WAAQ,KAApB,WAGI,SAAKwF,KAAKqgG,iBAAiBmiC,cAAgBxiI,KAAKyiI,qBAK5CziI,KAAKqiI,gBAAkBriI,KAAKyiI,iBAAiB95H,QAAU84H,EAAYvkE,WAAal9D,KAAKyiI,iBAAiB95H,QAAU84H,EAAYxlE,aAK5Hj8D,KAAKqgG,iBAAiBqiC,cAK9B,kCAEOjS,EAAAj2H,UAAA2vH,mBAAP,SAA0B1rH,EAAclD,GACpC,IAAM29H,EAA+CvzH,KAAK9C,MAAM7C,KAAKsgG,eAAe1rC,YAAY1M,EAAA8a,8BAA+B,OAE/Hk2D,EAAkBz6H,GAAQlD,EAE1ByE,KAAKsgG,eAAetvC,YAAY9I,EAAA8a,8BAA+Br9D,KAAKC,UAAUszH,GAClF,EAYOzI,EAAAj2H,UAAA2kI,sBAAP,SAA6B5oC,EAAsCt+B,EAAkB0qE,EAA4BC,EAAmBC,GAApI,IAAA9wH,EAAA,KAEI,IAEI,GAA4B,kBAAjBwkF,EAA2B,CAElC5tC,EAAAO,UAAUC,uBAAuBotC,EAAcv2F,KAAK61F,WAAW1+B,YAAYxzD,QAAQ,QAAS,oBAC5FglD,EAAAO,UAAUotC,wBAAwBr+B,EAAUj4D,KAAK61F,WAAW1+B,YAAYxzD,QAAQ,QAAS,aAEnF3D,KAAKqgG,kBACPrgG,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWn+B,uBAAwBmrE,GAGvE,IAAIzmD,EAAeumD,OACNrmI,IAAT8/E,GAA+B,OAATA,GAA0B,KAATA,IACvCA,EAAOl0B,EAAAusC,6BAA6ByB,qBAIxCl2F,KAAK8iI,4BAA8Bz7D,EAAAylD,wBAAwB1G,iBACvDpmH,KAAKsiI,mBACLtiI,KAAKuiI,uBACTviI,KAAK8iI,4BAA4B3J,aAAa9xD,EAAAynD,gBAAgBuP,QAC9Dr+H,KAAK8iI,4BAA4BlH,kBAAkBx/C,GACnDp8E,KAAK8iI,4BAA4B9xE,YAAYqW,EAAAxS,WAAWwS,EAAAxS,WAAWkT,sCAAuCqU,GAC1Gp8E,KAAK8iI,4BAA4B9xE,YAAYqW,EAAAxS,WAAWwS,EAAAxS,WAAWshC,6BAA8Bl+B,GAcjG,IAZA,IAAM8qE,EAA6C,CAC/C17D,EAAAxS,WAAWgU,6BACXxB,EAAAxS,WAAWwgC,4BACXhuB,EAAAxS,WAAW8T,iCACXtB,EAAAxS,WAAWC,sCACXuS,EAAAxS,WAAWI,sCACXoS,EAAAxS,WAAWE,kCACXsS,EAAAxS,WAAWG,sCACX,2CACA,iCAGe/W,EAAA,EAAA+kF,EAAAD,EAAA9kF,EAAA+kF,EAAAjpI,OAAAkkD,IAAmB,CAAjC,IAAMljD,EAAIioI,EAAA/kF,GACL1iD,EAAQyE,KAAKsgG,eAAe1rC,YAAY75D,GAC9C,GAAIQ,EAAO,CACP,IAAMsC,EAAsB,kBAAT9C,EAAoBA,EAAOssE,EAAAxS,WAAW95D,GACzDiF,KAAK8iI,4BAA4B9xE,YAAYnzD,EAAKtC,IAK1D,IADA,IAAM29H,EAAqBvzH,KAAK9C,MAAM7C,KAAKsgG,eAAe1rC,YAAY1M,EAAA8a,8BAA+B,OAClF5oB,EAAA,EAAAI,EAAAjgD,OAAO8wB,KAAK6tG,GAAZ9+E,EAAAI,EAAAzgD,OAAAqgD,IAAgC,CAAxCr/C,EAAIy/C,EAAAJ,GACXp6C,KAAK8iI,4BAA4B3Y,mBAAmBpvH,EAAMm+H,EAAkBn+H,GAAOssE,EAAAunD,uBAAuBqU,mBAI9GjjI,KAAKqgG,iBAAmB,IAAIshC,EAAAtF,iBAAiBr8H,KAAK8iI,6BAClD9iI,KAAKqgG,iBAAiBw+B,uBAAyB7+H,KAE/CA,KAAKqgG,iBAAiB8+B,sBAClB5oC,EACAt+B,EACAmkB,GACC,SAACphF,GAEOA,GACD+W,EAAK+sH,YAAY,IAAIz7H,MAAM0O,EAAK8jF,WAAWv+B,yBAA0BurE,GAGzE9wH,EAAK+wH,4BAA4BloC,mBAAqB5/F,EACtD+W,EAAKsuF,iBAAiB5D,KAAKjE,QAAS,EAGpCzmF,EAAKsuF,iBAAiB2+B,wBACjB,WACGjtH,EAAKgtH,eAAe6D,EAAQC,EAChC,IACC,SAAC//H,GACEiP,EAAK+sH,YAAYh8H,EAAO+/H,EAC5B,GAER,IACC,SAAC//H,GACEiP,EAAK+sH,YAAYh8H,EAAO+/H,EAC5B,QAE2B,kBAAjBtsC,GAEd5tC,EAAAO,UAAUC,uBAAuBotC,EAAcv2F,KAAK61F,WAAW1+B,YAAYxzD,QAAQ,QAAS,oBAC5FglD,EAAAO,UAAUotC,wBAAwBr+B,EAAUj4D,KAAK61F,WAAW1+B,YAAYxzD,QAAQ,QAAS,aAGzF3D,KAAKsgG,eAAetvC,YAAYqW,EAAAxS,WAAWshC,4BAA6Bl+B,GAExEj4D,KAAKqgG,iBAAmB9J,EAExBv2F,KAAKqgG,iBAAiBw+B,uBAAyB7+H,KAC/CA,KAAKqgG,iBAAiB5D,KAAKjE,QAAS,EAEpC7vC,EAAAO,UAAUC,uBAAuBnpD,KAAKqgG,iBAAkBrgG,KAAK61F,WAAWv+B,yBACxE3O,EAAAO,UAAUC,uBAAuBnpD,KAAKqgG,iBAAiB5D,KAAK5yD,MAAO7pC,KAAK61F,WAAWv+B,yBAEnFt3D,KAAK8iI,4BAA8BvsC,EAAahjF,OAEhDvT,KAAK++H,eAAe4D,EAAoBC,IAExC5iI,KAAK8+H,YACD,IAAIz7H,MAAMrD,KAAK61F,WAAW1+B,YAAYxzD,QAAQ,QAAS,8BACvDi/H,GAGV,MAAO9/H,GACL9C,KAAK8+H,YAAYh8H,EAAyB,kBAAX6/H,EAAsBE,EAASD,GAEtE,EAOOnS,EAAAj2H,UAAA8mI,uBAAP,SAA8BhzH,EAAejI,GAA7C,IAAA0L,EAAA,KAEI+3C,EAAAw5C,0BAA2B33C,EAAA55C,OAAA,uEAGvB,SAAM/R,KAAKkiI,uBAEX,OAFA9nF,EAAApyB,OAEA,GAAMhoB,KAAKqgG,iBAAiBm/B,mCAE5B,OAFAplF,EAAApyB,OAEA,GAAMhoB,KAAKqgG,iBAAiBi/B,6CAA5BllF,EAAApyB,OACAhoB,KAAK86D,qBAEHxsD,EAAIjI,EACd,EAQOoqH,EAAAj2H,UAAAimI,qBAAP,SAA4BtkI,EAAiBmS,EAAejI,GAExD,IACIsiD,EAAAO,UAAUC,uBAAuBnpD,KAAKqgG,iBAAkBrgG,KAAK61F,WAAWp+B,sBACxE9O,EAAAO,UAAUotC,wBAAwBn6F,EAAS6D,KAAK61F,WAAW1+B,YAAYxzD,QAAQ,QAASxH,IAExF6D,KAAKqgG,iBAAiBogC,qBAAqBtkI,EAASmS,EAAIjI,GAC1D,MAAOvD,GAEL9C,KAAK8+H,YAAYh8H,EAAOuD,GAEhC,EAOOoqH,EAAAj2H,UAAA4mI,uBAAP,SAA8B9yH,EAAejI,GAA7C,IAAA0L,EAAA,KACI+3C,EAAAw5C,0BAA2B33C,EAAA55C,OAAA,0GAEnB42C,EAAAO,UAAUC,uBAAuBnpD,KAAKqgG,iBAAkBrgG,KAAK61F,WAAWp+B,sBACxE9O,EAAAO,UAAUC,uBAAuBnpD,KAAKqgG,iBAAiB5D,KAAK5yD,MAAO7pC,KAAK61F,WAAWv+B,8BAErDh7D,IAA1B0D,KAAKyiI,iBAAL,MACA,GAAMziI,KAAKkjI,sCAAX9oF,EAAApyB,wBAQJ,OANA2gC,EAAAO,UAAUC,uBAAuBnpD,KAAKyiI,iBAAkBziI,KAAK61F,WAAWp+B,sBAEnEz3D,KAAKmjI,UACNnjI,KAAK8+H,YAAY,IAAIz7H,MAAMrD,KAAK61F,WAAWp+B,sBAAuBpxD,GAGtE,GAAMrG,KAAKojI,4CAAXhpF,EAAApyB,OAEAhoB,KAAKqiI,gBAAiB,eAGtB,kBADAriI,KAAKqiI,gBAAiB,EACtB,GAAMriI,KAAKkiI,uBACX,MADA9nF,EAAApyB,OACM+6D,0BAERz0E,EAAIjI,EACd,EAOOoqH,EAAAj2H,UAAA6mI,sBAAP,SAA6B/yH,EAAejI,GAA5C,IAAA0L,EAAA,KACI+3C,EAAAw5C,0BAA2B33C,EAAA55C,OAAA,+GAEd/R,KAAKqiI,eAAN,MAEA,GAAMriI,KAAKkiI,uBACX,OADA9nF,EAAApyB,OACA,WAKJ,OADAhoB,KAAKqiI,gBAAiB,EACtB,GAAM,IAAIhiH,SAAQ,SAACC,EAAqBC,GACpCxO,EAAK0wH,iBAAiBj/B,+BAA+BljF,EAASC,EAClE,0BAGA65B,EAAApyB,oBAAA,mBAAMhoB,KAAKkiI,wCAEb5zH,EAAIjI,EACd,EAEOoqH,EAAAj2H,UAAAugE,WAAP,WACI,OAAO/6D,KAAKu6D,cAChB,EAEOk2D,EAAAj2H,UAAAsgE,QAAP,SAAe9sD,EAAiBg6G,EAAsB3hH,GAAtD,IAAA0L,EAAA,KACI+3C,EAAAw5C,0BAA2B33C,EAAA55C,OAAA,uEACvB,OAAI/R,KAAK+6D,aAAe/6D,KAAKqiI,eACzB,IAEJ,GAAMriI,KAAKkiI,8BAAX9nF,EAAApyB,OACAhoB,KAAKu6D,gBAAiB,EACtBv6D,KAAK8iI,4BAA4BroG,QACjCz6B,KAAK8gG,mCAAgCxkG,EACrC0D,KAAKsgG,oBAAiBhkG,EACtB0D,KAAKihI,qBAAkB3kI,EACvB0D,KAAK8iI,iCAA8BxmI,EACnC0D,KAAKqgG,iBAAiBvlC,UACtB96D,KAAKqgG,sBAAmB/jG,aACtB0rH,EAAS3hH,EACnB,EAKcoqH,EAAAj2H,UAAA0nI,aAAd,2GAGQ,6BADAliI,KAAKqiI,gBAAiB,EACtB,GAA2B,QAA3BjoF,EAAMp6C,KAAKyiI,wBAAgB,IAAAroF,OAAA,EAAAA,EAAEurD,iCAA7BnrD,EAAAxyB,OACAhoB,KAAKyiI,sBAAmBnmI,8DAYlBm0H,EAAAj2H,UAAA0oI,4BAAd,sJAGqC5mI,IAAzB0D,KAAKihI,kBACLjhI,KAAKihI,gBAAkB55D,EAAAsxC,YAAYC,8BAInC54G,KAAK8iI,4BAA4BluE,YAAYyS,EAAAxS,WAAWwS,EAAAxS,WAAWoyB,gCAC/DjnF,KAAKsiI,oBACTtiI,KAAK8iI,4BAA4B9xE,YAAYqW,EAAAxS,WAAWwS,EAAAxS,WAAWoyB,6BAA8B,IAG/FoV,EAAa,WAAwB,OAAAtqF,EAAKsuF,gBAAL,EAC3CrgG,KAAKyiI,iBAAmB,IAAIb,EAAkC5hI,KAAK8iI,4BAA6B9iI,KAAKihI,gBAAiBjhI,KAAMq8F,gBAE5H,qBAAMr8F,KAAKkiI,uBACX,MADA9nF,EAAApyB,OACMq7G,2BAON5S,EAAAj2H,UAAA4oI,2BAAR,eAAArxH,EAAA,KACI,OAAO,IAAIsO,SAAQ,SAACC,EAAqBC,GACrCxO,EAAK0wH,iBAAiBp/B,gCAAgC/iF,EAASC,EACnE,GACJ,EACJkwG,CAAA,CA5WA,CAA4ClpD,EAAAy5D,oBAA/B3nI,EAAAA,uBAAAo3H,uFCrJb,IAAAkR,EAAAl/G,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,eAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAw4H,EAAAj5C,YAAY,IAAEnuF,OAAAA,eAAAA,EAAAA,mBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAw4H,EAAAtF,gBAAgB,IAEvC,IAAAiH,EAAA7gH,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,qBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAm6H,EAAAtC,kBAAkB,IAC3B,IAAAuC,EAAA9gH,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,kCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAo6H,EAAAvpC,+BAA+B,IACxC,IAAAwpC,EAAA/gH,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,2CAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAq6H,EAAAjT,wCAAwC,IACjD,IAAAkT,EAAAhhH,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,2CAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAs6H,EAAA7rC,wCAAwC,IACjD,IAAA8rC,EAAAjhH,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,mCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAu6H,EAAAlT,gCAAgC,IACzC,IAAAmT,EAAAlhH,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,gCAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAw6H,EAAA3oC,6BAA6B,IACtC,IAAA4oC,EAAAnhH,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,yBAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAAy6H,EAAAnT,sBAAsB,IAC/B,IAAAoT,EAAAphH,EAAA,MAASloB,OAAAA,eAAAA,EAAAA,0BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA06H,EAAAnT,uBAAuB,IAChC,IAAAoT,EAAArhH,EAAA,OAAuBloB,OAAAA,eAAAA,EAAAA,cAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA26H,EAAAnT,WAAW,IAAEp2H,OAAAA,eAAAA,EAAAA,OAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA26H,EAAAjT,IAAI,IACxC,IAAAkT,EAAAthH,EAAA,OAASloB,OAAAA,eAAAA,EAAAA,2BAAAA,CAAAuxB,YAAA,EAAA3iB,IAAA,kBAAA46H,EAAAnT,wBAAwB,qHCVjC,IAAA1oE,EAAAzlC,EAAA,MAWAouG,EAAA,WAGI,SAAAA,EAAmBkP,GACf//H,KAAKgkI,WAAajE,CACtB,CAKJ,OAHIxlI,OAAAgsB,eAAWsqG,EAAAr2H,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKgkI,UAChB,kCACJnT,CAAA,CAVA,GAAax3H,EAAAA,KAAAw3H,EAiDb,IAAAF,EAAA,WAWI,SAAAA,EAAmB5kH,EAAYusF,EAAgBr0C,EAAqBu0C,EAAiBE,EAAkBE,EAAqBE,EAA2BwM,GACnJtlG,KAAKqqD,OAASt+C,EACd/L,KAAKikI,WAAa3rC,EAClBt4F,KAAKkkI,gBAAkBjgF,EACvBjkD,KAAKmkI,WAAa3rC,EAClBx4F,KAAKo9F,YAAc1E,EACnB14F,KAAKokI,eAAiBxrC,EACtB54F,KAAKqkI,sBAAwBvrC,EAC7B94F,KAAKskI,UAAYh/B,EACjBtlG,KAAKsgG,eAAiB,IAAIp4C,EAAA6c,kBAC9B,CAyCJ,OAvCIxqE,OAAAgsB,eAAWoqG,EAAAn2H,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKikI,UAChB,kCAEA1pI,OAAAgsB,eAAWoqG,EAAAn2H,UAAA,cAAW,KAAtB,WACI,OAAOwF,KAAKkkI,eAChB,kCAEA3pI,OAAAgsB,eAAWoqG,EAAAn2H,UAAA,KAAE,KAAb,WACI,OAAOwF,KAAKqqD,MAChB,kCAEA9vD,OAAAgsB,eAAWoqG,EAAAn2H,UAAA,oBAAiB,KAA5B,WACI,OAAOwF,KAAKqkI,qBAChB,kCAEA9pI,OAAAgsB,eAAWoqG,EAAAn2H,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKmkI,UAChB,kCAEA5pI,OAAAgsB,eAAWoqG,EAAAn2H,UAAA,UAAO,KAAlB,WACI,OAAOwF,KAAKo9F,WAChB,kCAEA7iG,OAAAgsB,eAAWoqG,EAAAn2H,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKokI,cAChB,kCAEA7pI,OAAAgsB,eAAWoqG,EAAAn2H,UAAA,QAAK,KAAhB,WACI,OAAOwF,KAAKskI,SAChB,kCAEA/pI,OAAAgsB,eAAWoqG,EAAAn2H,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCAEcqwB,EAAA4T,KAAd,SAAmBx4H,EAAYyM,EAAkB8sF,GAC7C,OAAO,IAAIqrB,EAAY5kH,EAAI,GAAIA,GAAI,GAAO,GAAO,EAAOyM,EAAU8sF,EACtE,EACJqrB,CAAA,CA9DA,GAAat3H,EAAAA,YAAAs3H,uHC7Db,SAAYC,GAERA,EAAAA,EAAA,2CAKAA,EAAAA,EAAA,uCAGAA,EAAAA,EAAA,oBACH,CAXD,CAAYv3H,EAAAu3H,2BAAAv3H,EAAAA,yBAAwB,yICKpC,IAAAktG,EAAA,WAeI,SAAAA,EACIi+B,EACAngE,EACAqS,EACApS,EACAtpE,GACAgF,KAAKykI,iBAAmBpgE,EACxBrkE,KAAKknH,iBAAmBxwC,EACxB12E,KAAK8yG,WAAa93G,EAClBgF,KAAKy5E,cAAgB+qD,EACrBxkI,KAAKmnH,cAAgB7iD,CACzB,CAsDJ,OA7CI/pE,OAAAgsB,eAAWggF,EAAA/rG,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAK8yG,UAChB,kCASAv4G,OAAAgsB,eAAWggF,EAAA/rG,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKy5E,aAChB,kCASAl/E,OAAAgsB,eAAWggF,EAAA/rG,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKykI,gBAChB,kCAOAlqI,OAAAgsB,eAAWggF,EAAA/rG,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKmnH,aAChB,kCASA5sH,OAAAgsB,eAAWggF,EAAA/rG,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKknH,gBAChB,kCACJ3gB,CAAA,CAhFA,GAAaltG,EAAAA,wCAAAktG,seCNb,IAMAR,EAAA,SAAAjgF,GAUI,SAAAigF,EAAmB/qG,EAAsCmuC,EAAiB66B,GAA1E,IAAAjyD,EACI+T,EAAAprB,KAAA,KAAMyuC,EAAQ66B,IAAU,YAExBjyD,EAAK+gG,WAAa93G,GACtB,CAYJ,OA1BqD6oE,EAAAkiC,EAAAjgF,GAuBjDvrB,OAAAgsB,eAAWw/E,EAAAvrG,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAK8yG,UAChB,kCACJ/M,CAAA,CA1BA,CANAtjF,EAAA,MAMqDgtD,sBAAxCp2E,EAAAA,gCAAA0sG,meCNb,IAMAD,EAAA,SAAAhgF,GAgBI,SAAAggF,EAAmB5K,EAA4B5uB,EAAmBt+D,EAC/CmP,EAAe3F,EAAmB2xB,EAAiButC,EACnDrwD,EAAe6mD,GAFlC,IAAAn7D,EAGI+T,EAAAprB,KAAA,KAAM4xE,EAAUt+D,EAAQmP,EAAM3F,EAAU2xB,OAAQ7sC,OAAWA,OAAWA,EAAWo6E,EAAcrwD,EAAM6mD,IAAW,YAEhHn7D,EAAK2yH,iBAAmBxpC,GAC5B,CAmBJ,OAzCkDr3B,EAAAiiC,EAAAhgF,GAwBhCggF,EAAAU,4BAAd,SAA0CxrG,GACtC,OAAO,IAAI8qG,OAA6BxpG,EAAWtB,EAAOsxE,SAAUtxE,EAAOgT,OAAQhT,EAAOmiB,KAAMniB,EAAOwc,SAAUxc,EAAOmuC,OAAQnuC,EAAO07E,aAAc17E,EAAOqrB,KAAMrrB,EAAOkyE,WAC7K,EAYA3yE,OAAAgsB,eAAWu/E,EAAAtrG,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAK0kI,gBAChB,kCACJ5+B,CAAA,CAzCA,CANArjF,EAAA,MAMkD6jD,yBAArCjtE,EAAAA,6BAAAysG,w1DCNb,IAAA59C,EAAAzlC,EAAA,OAUAqnC,EAAArnC,EAAA,MAEA0rG,EAAA1rG,EAAA,OACAkmC,EAAAlmC,EAAA,OACA4kD,EAAA5kD,EAAA,MAgBA8qG,EAAA,SAAAznG,GA0CI,SAAAynG,EAAmBxtB,EAAuCC,EAA2B58B,GAArF,IAAArxD,EAAA,KACUqyF,EAAarE,SACnBp3C,EAAAO,UAAUi3C,YAAYiE,EAAY,iBAElCryF,EAAA+T,EAAAprB,KAAA,KAAMslG,EAAaoE,EAAWl3B,WAAY9J,GAAqB,IAAIlb,EAAAg1C,+BAA+B,MAE7FynC,mCAAoC,OAE2DroI,IAAhGyV,EAAKm7D,WAAWtY,YAAYyS,EAAAxS,WAAWwwC,8CAA0C/oG,IACjFqsD,EAAAO,UAAUotC,wBACNvkF,EAAKm7D,WAAWtY,YAAYyS,EAAAxS,WAAWwwC,0CACvCh+B,EAAAxS,WAAWwS,EAAAxS,WAAWwwC,2CAG9B18C,EAAAO,UAAUotC,wBACNvkF,EAAKm7D,WAAWtY,YAAYyS,EAAAxS,WAAWqwC,gDACvC79B,EAAAxS,WAAWwS,EAAAxS,WAAWqwC,iDAE1Bv8C,EAAAO,UAAUotC,wBAAwBvkF,EAAKm7D,WAAWtY,YAC9CyS,EAAAxS,WAAWkT,sCACXV,EAAAxS,WAAWwS,EAAAxS,WAAWkT,wCAE9B,CAwOJ,OAxS2ClE,EAAA0pD,EAAAznG,GAyEvCvrB,OAAAgsB,eAAWgnG,EAAA/yH,UAAA,4BAAyB,KAApC,WAGI,OAFAmuD,EAAAO,UAAU63C,gBAAgB/gG,KAAK2kI,mCAExB3kI,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWkT,qCAClD,kCAUAxtE,OAAAgsB,eAAWgnG,EAAA/yH,UAAA,kBAAe,KAA1B,WAGI,OAFAmuD,EAAAO,UAAU63C,gBAAgB/gG,KAAK2kI,mCAExB3kI,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWqwC,gDAAgDthG,MAAM,IACxG,kCASArJ,OAAAgsB,eAAWgnG,EAAA/yH,UAAA,YAAS,KAApB,WAGI,OAFAmuD,EAAAO,UAAU63C,gBAAgB/gG,KAAK2kI,mCAExB3kI,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWwwC,8CAA0C/oG,EAC5F,kCASA/B,OAAAgsB,eAAWgnG,EAAA/yH,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCASA/lG,OAAAgsB,eAAWgnG,EAAA/yH,UAAA,qBAAkB,KAA7B,WACI,OAAOwF,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWwhC,iCAClD,MASA,SAA8B96F,GAC1ByE,KAAKktE,WAAWlc,YAAYqW,EAAAxS,WAAWwhC,iCAAkC96F,EAC7E,kCAcOgyH,EAAA/yH,UAAAm4H,mBAAP,SAA0BrkH,EAAgDjI,GACtEsiD,EAAAO,UAAU63C,gBAAgB/gG,KAAK2kI,mCAC/B76E,EAAAw5C,0BAA0BtjG,KAAK8yH,uBAAuB5qE,EAAAwyB,gBAAgBgO,cAAep6E,EAAIjI,EAC7F,EAWOknH,EAAA/yH,UAAA6oG,gCAAP,SAAuC/0F,EAAiBjI,GACpDyjD,EAAAw5C,0BAA0BtjG,KAAKujG,oCAAoCr7C,EAAAwyB,gBAAgBgO,cAAep6E,EAAIjI,EAC1G,EAUOknH,EAAA/yH,UAAAgpG,+BAAP,SAAsCl1F,EAAiBjI,GACnDyjD,EAAAw5C,0BAA0BtjG,KAAKyjG,qCAAsCn1F,EAAIjI,EAC7E,EAUOknH,EAAA/yH,UAAAoqI,qBAAP,SAA4BxoD,GAExB,GADAzzB,EAAAO,UAAUC,uBAAuBizB,EAAM,+BACmE9/E,IAAtG0D,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWqwC,oDAAgD5oG,GAA0B,CACjH,IAAMiuF,EAAsBvqF,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWqwC,gDAAgDthG,MAAM,KACnH2K,EAAgBg8E,EAAU/mF,QAAQ44E,GACpC7tE,GAAS,IACTg8E,EAAUjpC,OAAO/yC,EAAO,GACxBvO,KAAKktE,WAAWlc,YAAYqW,EAAAxS,WAAWqwC,+CAAgD3a,EAAU9sF,KAAK,MACtGuC,KAAK6kI,gBAAgBt6C,IAGjC,EAUOgjC,EAAA/yH,UAAAohI,kBAAP,SAAyBx/C,GACrBzzB,EAAAO,UAAUC,uBAAuBizB,EAAM,wBACvC,IAAImO,EAAsB,QACgFjuF,IAAtG0D,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWqwC,oDAAgD5oG,IACvFiuF,EAAYvqF,KAAKktE,WAAWtY,YAAYyS,EAAAxS,WAAWqwC,gDAAgDthG,MAAM,MAC1FmmB,SAASqyD,KACpBmO,EAAUrvF,KAAKkhF,GACfp8E,KAAKktE,WAAWlc,YAAYqW,EAAAxS,WAAWqwC,+CAAgD3a,EAAU9sF,KAAK,QAG1GuC,KAAKktE,WAAWlc,YAAYqW,EAAAxS,WAAWqwC,+CAAgD9oB,GACvFmO,EAAY,CAACnO,IAEjBp8E,KAAK6kI,gBAAgBt6C,EACzB,EAQOgjC,EAAA/yH,UAAAigC,MAAP,SAAansB,EAAiBglH,GAC1B3qE,EAAAO,UAAU63C,gBAAgB/gG,KAAK2kI,mCAC/B76E,EAAAw5C,0BAA0BtjG,KAAK86D,SAAQ,GAAOxsD,EAAIglH,EACtD,EASO/F,EAAA/yH,UAAAkrG,aAAP,WAA8B,EASjB6nB,EAAA/yH,UAAAmrG,gBAAb,+FAEgB4nB,EAAA/yH,UAAAsgE,QAAhB,SAAwBsmC,6FACpB,OAAIphG,KAAK2kI,kCACL,KAGJ3kI,KAAK2kI,mCAAoC,EAErCvjC,EACA,GAAMphG,KAAKmkG,sBADX,cAEA,OADA/pD,EAAApyB,OACA,GAAMlC,EAAAtrB,UAAMsgE,QAAOpgE,KAAC,KAAA0mG,WAApBhnD,EAAApyB,0CAKEulG,EAAA/yH,UAAA6mG,uBAAV,SAAiCtB,GAC7B,OAAO,IAAI73C,EAAA0yB,iBAAiBmlB,EAAc//F,KAAKsgG,eACnD,EAEUitB,EAAA/yH,UAAA8mG,wBAAV,SACIn+B,EACAC,EACA48B,EACA38B,GAEA,IAAM+gC,EAA8BpE,EAEpC,OAAO,IAAI93C,EAAAq9C,6BAA6BpiC,EAAgBC,EAAmBghC,EAAY/gC,EAAkBrjE,KAC7G,EAEQutH,EAAA/yH,UAAAqqI,gBAAR,SAAwBt6C,GACpB,IAAMu6C,EAAmB3W,EAAA1tB,WAAWC,eAAe1gG,MAC7C8kI,IACFA,EAAKjd,mBAAmB,iBAAkB,qBAAsB,CAAC7pG,GAAIusE,IACrEu6C,EAAKntC,iBAAiB,QAAShyF,KAAKC,UAAU,CAC1CmG,GAAI,cACJtN,KAAM,iBACNuf,GAAIusE,KAGhB,EAEJgjC,CAAA,CAxSA,CAA2ClmD,EAAAo6B,YAA9BpoG,EAAAA,sBAAAk0H,oeC9Bb,IAMAlnB,EAAA,SAAAvgF,GASI,SAAAugF,EAAmBrrG,EAAoCgpE,GAAvD,IAAAjyD,EACI+T,EAAAprB,KAAA,KAAMspE,IAAU,YAEhBjyD,EAAK+gG,WAAa93G,GACtB,CAYJ,OAzBmD6oE,EAAAwiC,EAAAvgF,GAsB/CvrB,OAAAgsB,eAAW8/E,EAAA7rG,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAK8yG,UAChB,kCACJzM,CAAA,CAzBA,CANA5jF,EAAA,MAMmDgsD,kBAAtCp1E,EAAAA,8BAAAgtG,yHCCb,IAAAF,EAAA,WAUI,SAAAA,EAAmBn4F,EAAsBuiD,GACrCvwD,KAAKssG,WAAat+F,EAClBhO,KAAKqjH,UAAY9yD,CACrB,CAuBJ,OAdIh2D,OAAAgsB,eAAW4/E,EAAA3rG,UAAA,QAAK,KAAhB,WACI,OAAOwF,KAAKqjH,SAChB,kCASA9oH,OAAAgsB,eAAW4/E,EAAA3rG,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKssG,UAChB,kCACJnG,CAAA,CApCA,GAAa9sG,EAAAA,2BAAA8sG,6GCPb,IAAAj+C,EAAAzlC,EAAA,MAMAu5E,EAAA,oBAAAA,IAEY,KAAAmR,QAA8B,IAAIjlD,EAAA6c,kBAuC9C,QA9BIxqE,OAAAgsB,eAAWy1E,EAAAxhG,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKmtG,QAAQ9hF,IACxB,kCAaO2wE,EAAAxhG,UAAA2O,IAAP,SAAWtL,EAAaq8G,GACpB,OAAOl6G,KAAKmtG,QAAQv4C,YAAY/2D,EAAKq8G,EACzC,EAUOle,EAAAxhG,UAAAq4B,IAAP,SAAWh1B,EAAatC,GACpByE,KAAKmtG,QAAQn8C,YAAYnzD,EAAKtC,EAClC,EACJygG,CAAA,CAzCA,GAAa3iG,EAAAA,aAAA2iG,4HCNb,IAAA+oC,EAAAtiH,EAAA,OASAiwD,EAAA,WAQI,SAAAA,EAAmBsyD,GACfhlI,KAAKilI,eAAiBF,EAAA7jD,0BAA0Bzc,SAASugE,EAC7D,CAkCJ,OAzBIzqI,OAAAgsB,eAAWmsD,EAAAl4E,UAAA,gBAAa,KAAxB,WACI,OAAOwF,KAAKilI,eAAe/5D,aAC/B,kCASA3wE,OAAAgsB,eAAWmsD,EAAAl4E,UAAA,iBAAc,KAAzB,WACI,OAAOwF,KAAKilI,eAAelzD,cAC/B,kCASAx3E,OAAAgsB,eAAWmsD,EAAAl4E,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKilI,eAAe7+G,UAC/B,kCACJssD,CAAA,CA5CA,GAAar5E,EAAAA,4BAAAq5E,mCCLb,IAAYwyD,EAYAC,kHAZZ,SAAYD,GAGRA,EAAAA,EAAA,qBAGAA,EAAAA,EAAA,mBAGAA,EAAAA,EAAA,cACH,CAVD,CAAYA,EAAA7rI,EAAA6rI,uBAAA7rI,EAAAA,qBAAoB,KAYhC,SAAY8rI,GACRA,EAAAA,EAAA,+BACAA,EAAAA,EAAA,mCACAA,EAAAA,EAAA,iCACAA,EAAAA,EAAA,oCACH,CALD,CAAYA,EAAA9rI,EAAA8rI,qBAAA9rI,EAAAA,mBAAkB,KAY9B,IAAAu4H,EAAA,WAUI,SAAAA,EAAmBvrG,GAEf,GALI,KAAA++G,cAA0B,GAI9BplI,KAAKqlI,cAAgB,GACfh/G,IACFrmB,KAAKoyG,SAAW/rF,EAAK0/D,KACrB/lF,KAAKslI,WAAaj/G,EAAKq1G,OACvB17H,KAAKulI,cAAgBl/G,EAAKm/G,UAC1BxlI,KAAKylI,cAAgBp/G,EAAKq/G,UAC1B1lI,KAAK2lI,cAAgBt/G,EAAKu/G,UAAU78D,SAAS,YAAco8D,EAAmBU,eAAiBV,EAAmBW,aAClH9lI,KAAK+lI,WAA6B,SAAhB1/G,EAAK2/G,OAAoBd,EAAqBe,KAAuB,WAAhB5/G,EAAK2/G,OAAsBd,EAAqBgB,OAAShB,EAAqB14E,QAC/InmC,EAAK8/G,WAAaz8H,MAAMkf,QAAQvC,EAAK8/G,YACvC,IAAoB,IAAAloF,EAAA,EAAA7D,EAAA/zB,EAAK8/G,UAALloF,EAAA7D,EAAArgD,OAAAkkD,IAAgB,CAA/B,IAAMhjB,EAAKmf,EAAA6D,GACZj+C,KAAKolI,cAAclqI,KAAK+/B,GAIxC,CAiCJ,OA/BI1gC,OAAAgsB,eAAWqrG,EAAAp3H,UAAA,OAAI,KAAf,WACI,OAAOwF,KAAKoyG,QAChB,kCAEA73G,OAAAgsB,eAAWqrG,EAAAp3H,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKslI,UAChB,kCAEA/qI,OAAAgsB,eAAWqrG,EAAAp3H,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKulI,aAChB,kCAEAhrI,OAAAgsB,eAAWqrG,EAAAp3H,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKylI,aAChB,kCAEAlrI,OAAAgsB,eAAWqrG,EAAAp3H,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAK+lI,UAChB,kCAEAxrI,OAAAgsB,eAAWqrG,EAAAp3H,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAK2lI,aAChB,kCAEAprI,OAAAgsB,eAAWqrG,EAAAp3H,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKolI,aAChB,kCAEA7qI,OAAAgsB,eAAWqrG,EAAAp3H,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKqlI,aAChB,kCACJzT,CAAA,CA1DA,GAAav4H,EAAAA,UAAAu4H,2GCtBb,IAAA1C,EAAA,WAUI,SAAAA,EAAmB7mB,EAAmBT,GAClC5nG,KAAKqqD,OAASg+C,EACdroG,KAAKomI,gBAAkBx+B,CAC3B,CAwBJ,OAfIrtG,OAAAgsB,eAAW2oG,EAAA10H,UAAA,YAAS,KAApB,WACI,OAAOwF,KAAKqqD,MAChB,kCASA9vD,OAAAgsB,eAAW2oG,EAAA10H,UAAA,cAAW,KAAtB,WACI,OAAOwF,KAAKomI,eAChB,kCAEJlX,CAAA,CArCA,GAAa71H,EAAAA,aAAA61H,q1DCHb,IAAAhnE,EAAAzlC,EAAA,OASA2oG,EAAA3oG,EAAA,OACAkmC,EAAAlmC,EAAA,OACAqnC,EAAArnC,EAAA,MAmBAgtG,EAAA,SAAA3pG,GAUI,SAAA2pG,EAAmB1vB,GAAnB,IAAAhuF,EAAA,KACI42C,EAAAO,UAAUC,uBAAuB42C,EAAc,gBAC/C,IAAM45B,EAAqC55B,SAC3Cp3C,EAAAO,UAAUi3C,YAAYw5B,EAAkB,iBAExC5nH,EAAA+T,EAAAprB,KAAA,KAAM0wH,EAAAzS,YAAYM,gBAAgBnvD,EAAAsvD,iBAAiB2B,oBAAqB4e,EAAiBzsD,WAAY,IAAIhlB,EAAAi/B,gCAAgC,MAEpImZ,eAAiBq5B,EAAiBzsD,WAAWqzB,QAClDxuF,EAAKs0H,iBAAmBt0H,EAAKivF,SAC7BjvF,EAAKu0H,0BAA2B,GACpC,CAsLJ,OA1MwCziE,EAAA4rD,EAAA3pG,GA6BpCvrB,OAAAgsB,eAAWkpG,EAAAj1H,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCASA/lG,OAAAgsB,eAAWkpG,EAAAj1H,UAAA,qBAAkB,KAA7B,WACI,OAAOwF,KAAKktE,WAAWtY,YAAY9K,EAAA+K,WAAWwhC,iCAClD,MASA,SAA8BxsD,GAC1B8e,EAAAO,UAAUotC,wBAAwBzsD,EAAO,SACzC7pC,KAAKktE,WAAWlc,YAAYlH,EAAA+K,WAAWwhC,iCAAkCxsD,EAC7E,kCAYa4lF,EAAAj1H,UAAA+rI,mBAAb,SAAgC3+B,EAA+BxrB,mGAC9B,SAAMp8E,KAAKqmI,iBAAiB1+B,cAAcC,EAAaxrB,WACpF,OADM+L,EAAuB/tC,EAAApyB,OACtB,CAAP,EAAO,IAAI8hC,EAAAolE,aAAa/mC,EAAW,GAAIyf,YAY9B6nB,EAAAj1H,UAAAgsI,8BAAb,SAA2Cx+B,sEACvC,MAAO,CAAP,EAAOhoG,KAAKqmI,iBAAiBl+B,yBAAyBH,WAY7CynB,EAAAj1H,UAAAisI,oBAAb,SAAiC7+B,sEAC7B,MAAO,CAAP,EAAO5nG,KAAKqmI,iBAAiB/9B,eAAeV,WAmBnC6nB,EAAAj1H,UAAAksI,0BAAb,SAAuC9+B,EAA+BxrB,sEAClE,MAAO,CAAP,EAAOp8E,KAAKqmI,iBAAiB99B,qBAAqBX,EAAaxrB,WAatDqzC,EAAAj1H,UAAAmsI,mBAAb,SAAgC3+B,EAAuBhI,4EAMnD,OALMoE,EAA8BpE,EACpCr3C,EAAAO,UAAUC,uBAAuBi7C,EAAY,eAC7CpkG,KAAKggG,YAAcA,EACnBhgG,KAAKqmI,iBAAiBO,mBAAqBxiC,EAEpC,CAAP,EAAOpkG,KAAKqmI,iBAAiB39B,cAAcV,WAYlCynB,EAAAj1H,UAAAqsI,mBAAb,SAAgC7+B,sEAC5B,MAAO,CAAP,EAAOhoG,KAAKqmI,iBAAiBn+B,cAAcF,WAYlCynB,EAAAj1H,UAAAssI,kBAAb,SAA+B9+B,sEAC3B,MAAO,CAAP,EAAOhoG,KAAKqmI,iBAAiBt+B,aAAaC,WAUjCynB,EAAAj1H,UAAAigC,MAAb,qGACI,SAAMz6B,KAAK86D,SAAQ,kBAAnB1gB,EAAApyB,mBAGMynG,EAAAj1H,UAAA8mG,wBAAV,SAAkCn+B,EAAiCC,EAAuC48B,EAA0B38B,GAChI,IAAMkwD,EAA6BvzB,EACnC,OAAO,IAAI93C,EAAAy+C,uBAAuBxjC,EAAgBC,EAAmBmwD,EAAWlwD,EAAkBrjE,KACtG,EAEgByvH,EAAAj1H,UAAAsgE,QAAhB,SAAwBsmC,6FACpB,OAAIphG,KAAKsmI,yBACL,KAGJtmI,KAAKsmI,0BAA2B,EAE5BllC,EACA,GAAMt7E,EAAAtrB,UAAMsgE,QAAOpgE,KAAC,KAAA0mG,IADpB,cACAhnD,EAAApyB,0CAIEynG,EAAAj1H,UAAA6mG,uBAAV,SAAiCtB,GAC7B,OAAO,IAAI73C,EAAA0yB,iBAAiBmlB,EAAc//F,KAAKktE,WACnD,EAEQuiD,EAAAj1H,UAAAusI,UAAR,SAAkB/rI,EAAuB0uG,GAMrC,OAJI,IAAI5/C,EAAA+/C,mBACA7uG,EAAOirC,GAAKyjE,EAAgB5/C,EAAAyb,aAAaC,SACzCxqE,EAAO4+D,WAGnB,EACJ61D,CAAA,CA1MA,CAAwC3lE,EAAA23C,YAA3BpoG,EAAAA,mBAAAo2H,+gBChCb,IAAAvnE,EAAAzlC,EAAA,OACAqnC,EAAArnC,EAAA,MAuCA6kF,EAAA,WAMI,SAAAA,EAAmBt5F,EAAsBqY,EAAcuzC,GACnD55D,KAAKssG,WAAat+F,EAClBhO,KAAKsgG,eAAiB,IAAIx2C,EAAAib,mBACtB/kE,KAAKssG,aAAexiD,EAAAyb,aAAaC,SAC3Bn/C,IACFrmB,KAAKgnI,YAAcrhI,KAAK9C,MAAMwjB,GAC0B,cAApDrmB,KAAKgnI,YAAYv/B,iBAAiB3gG,gBAClC9G,KAAKssG,WAAaxiD,EAAAyb,aAAaikC,yBAIvCxpG,KAAKknH,iBAAmBttD,EACxB55D,KAAKsgG,eAAetvC,YAAY9I,EAAAilB,kCAAmCrjB,EAAA0hB,sBAAsB1hB,EAAA0hB,sBAAsBgL,eAEvH,CA8EJ,OA5EIj8E,OAAAgsB,eAAW+gF,EAAA9sG,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKssG,UAChB,kCAEA/xG,OAAAgsB,eAAW+gF,EAAA9sG,UAAA,mBAAgB,KAA3B,WACI,OAAOwF,KAAKgnI,YAAYC,gBAC5B,kCAEA1sI,OAAAgsB,eAAW+gF,EAAA9sG,UAAA,oBAAiB,KAA5B,WACI,OAAOwF,KAAKgnI,YAAYE,iBAC5B,kCAEA3sI,OAAAgsB,eAAW+gF,EAAA9sG,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCAEA/lG,OAAAgsB,eAAW+gF,EAAA9sG,UAAA,0BAAuB,KAAlC,WACI,OAAOwF,KAAKgnI,WAChB,kCAEAzsI,OAAAgsB,eAAW+gF,EAAA9sG,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKknH,gBAChB,kCAEc5f,EAAA6/B,8BAAd,SAA4C9gH,GAExC,IADA,IAAM+gH,EAA0C,GAC7BnpF,EAAA,EAAA7D,EAAA/zB,EAAK9qB,MAAL0iD,EAAA7D,EAAArgD,OAAAkkD,IAAY,CAA1B,IAAMhkD,EAAImgD,EAAA6D,GAILjjD,EAAS,IAAIssG,EAHkD,cAAxCrtG,EAAKwtG,iBAAiB3gG,cAC/CgjD,EAAAyb,aAAaikC,sBAAgE,aAAxCvvG,EAAKwtG,iBAAiB3gG,cAC3DgjD,EAAAyb,aAAa0kC,qBAAuBngD,EAAAyb,aAAaC,SACG,KAAM,MAC9DxqE,EAAOgsI,YAAchnI,KAAKqnI,yBAAyBptI,GACnDmtI,EAAQlsI,KAAKF,GAEjB,OAAOosI,CACX,EAEc9/B,EAAAggC,4BAAd,SAA0CjhH,GAEtC,IADA,IAAM+gH,EAA0C,GAC7BnpF,EAAA,EAAA7D,EAAA/zB,EAAK9qB,MAAL0iD,EAAA7D,EAAArgD,OAAAkkD,IAAY,CAA1B,IAAMhkD,EAAImgD,EAAA6D,GAILjjD,EAAS,IAAIssG,EAHkD,cAAxCrtG,EAAKwtG,iBAAiB3gG,cAC/CgjD,EAAAyb,aAAaikC,sBAAgE,aAAxCvvG,EAAKwtG,iBAAiB3gG,cAC3DgjD,EAAAyb,aAAa0kC,qBAAuBngD,EAAAyb,aAAaC,SACG,KAAM,MAC9DxqE,EAAOgsI,YAAchnI,KAAKunI,uBAAuBttI,GACjDmtI,EAAQlsI,KAAKF,GAEjB,OAAOosI,CACX,EAEe9/B,EAAA+/B,yBAAf,SAAwChhH,GACpC,MAAO,CACH6vF,YAAa7vF,EAAK6vF,YAAcv1G,WAAW0lB,EAAK6vF,aAAe,EAC/DsxB,kBAAmBnhH,EAAKmhH,kBAAoB7mI,WAAW0lB,EAAKmhH,mBAAqB,EACjF//B,iBAAkBphF,EAAKohF,iBACvBw/B,iBAAkB5gH,EAAK4gH,kBAAoB,EAC3CC,kBAAmB7gH,EAAK6gH,kBAAoBvmI,WAAW0lB,EAAK6gH,mBAAqB,EACjFO,wBAAyBphH,EAAKohH,wBAA0B9mI,WAAW0lB,EAAKohH,yBAA2B,EACnGp/B,UAAWhiF,EAAKgiF,WAAahiF,EAAKqhH,wBAClCC,iCAAkCthH,EAAKshH,iCAAmChnI,WAAW0lB,EAAKshH,kCAAoC,EAEtI,EAEergC,EAAAigC,uBAAf,SAAsClhH,GAClC,MAAO,CACH6vF,YAAa7vF,EAAK6vF,YAAcv1G,WAAW0lB,EAAK6vF,aAAe,EAC/DsxB,kBAAmBnhH,EAAKmhH,kBAAoB7mI,WAAW0lB,EAAKmhH,mBAAqB,EACjF//B,iBAAkBphF,EAAKohF,iBACvBw/B,iBAAkB5gH,EAAK4gH,iBACvBC,kBAAmB7gH,EAAK6gH,kBAAoBvmI,WAAW0lB,EAAK6gH,mBAAqB,EACjFO,wBAAyBphH,EAAKohH,wBAA0B9mI,WAAW0lB,EAAKohH,yBAA2B,EACnGp/B,UAAWhiF,EAAKgiF,WAAahiF,EAAKuhH,sBAClCC,0BAA2BxhH,EAAKyhH,sBAAwBzhH,EAAKwhH,0BAC7DF,iCAAkCthH,EAAKshH,iCAAmChnI,WAAW0lB,EAAKshH,kCAAoC,EAEtI,EACJrgC,CAAA,CAlGA,GAAajuG,EAAAA,6BAAAiuG,EAuGb,IAAA8nB,EAAA,SAAAtpG,GAEI,SAAAspG,EAAoBphH,EAA4B0oE,EAAsBpS,UAClEx+C,EAAAprB,KAAA,KAAMsT,EAAQ0oE,EAAcpS,IAAU,IAC1C,CAoBJ,OAxB+DT,EAAAurD,EAAAtpG,GAc7CspG,EAAAnJ,WAAd,SAAyBjrH,GACrB,IAAMgT,EAAS87C,EAAAyhB,mBAAmBloE,MAC9BihE,EAAmCxa,EAAA0hB,sBAAsBC,QAM7D,OAJMzwE,EAAOkyE,aACT5I,EAAaxa,EAAA0hB,sBAA8BxwE,EAAOkyE,WAAWtY,YAAY1M,EAAAilB,kCAAmCrjB,EAAA0hB,sBAAsB1hB,EAAA0hB,sBAAsBC,YAGrJ,IAAI2jD,EAA0CphH,EAAQhT,EAAO07E,aAAcpS,EACtF,EACJ8qD,CAAA,CAxBA,CAA+DtlE,EAAAm9D,yBAAlD5tH,EAAAA,0CAAA+1H,+dChJb,IAAAzmE,EAAAlmC,EAAA,OAUA4mF,EAAA,SAAAvjF,GAII,SAAAujF,EAAmBr7F,EAAsB4rD,EAAoB/5D,EAAckoI,GAA3E,IAAAh2H,EACI+T,EAAAprB,KAAA,KAAMsT,EAAQ4rD,IAAW,YAJrB7nD,EAAAojE,YAAwB,GAK5BxsB,EAAAO,UAAUC,uBAAuB4+E,EAAa,gBAC9Ch2H,EAAK06F,SAAW5sG,EACVkoI,GAAiBA,EAAY,KAC/Bh2H,EAAKojE,YAAc4yD,IAE3B,CASJ,OApB8ClkE,EAAAwlC,EAAAvjF,GAa1CvrB,OAAAgsB,eAAW8iF,EAAA7uG,UAAA,UAAO,KAAlB,WACI,OAAOwF,KAAKm1E,WAChB,kCAEA56E,OAAAgsB,eAAW8iF,EAAA7uG,UAAA,OAAI,KAAf,WACI,OAAOwF,KAAKysG,QAChB,kCACJpD,CAAA,CApBA,CATA5mF,EAAA,MAS8ConF,oBAAjCxwG,EAAAA,yBAAAgwG,2fCTb,IAAAnhD,EAAAzlC,EAAA,OACAkmC,EAAAlmC,EAAA,OACAqnC,EAAArnC,EAAA,MAYAonF,EAAA,WAKI,SAAAA,EAAmB77F,EAAsB4rD,GACrC55D,KAAKssG,WAAat+F,EAClBhO,KAAKsgG,eAAiB,IAAIx2C,EAAAib,mBACtB/2D,IAAW87C,EAAAyb,aAAaC,WACxB7c,EAAAO,UAAUC,uBAAuByQ,EAAY,cAC7C55D,KAAKknH,iBAAmBttD,EACxB55D,KAAKsgG,eAAetvC,YAAY9I,EAAAilB,kCAAmCrjB,EAAA0hB,sBAAsB1hB,EAAA0hB,sBAAsBgL,eAEvH,CAaJ,OAXIj8E,OAAAgsB,eAAWsjF,EAAArvG,UAAA,SAAM,KAAjB,WACI,OAAOwF,KAAKssG,UAChB,kCAEA/xG,OAAAgsB,eAAWsjF,EAAArvG,UAAA,aAAU,KAArB,WACI,OAAOwF,KAAKsgG,cAChB,kCAEA/lG,OAAAgsB,eAAWsjF,EAAArvG,UAAA,eAAY,KAAvB,WACI,OAAOwF,KAAKknH,gBAChB,kCACJrd,CAAA,CA1BA,GAAaxwG,EAAAA,mBAAAwwG,EA+Bb,IAAAylB,EAAA,SAAAxpG,GAEI,SAAAwpG,EAAoBthH,EAA4B0oE,EAAsBpS,UAClEx+C,EAAAprB,KAAA,KAAMsT,EAAQ0oE,EAAcpS,IAAU,IAC1C,CAoBJ,OAxBqDT,EAAAyrD,EAAAxpG,GAcnCwpG,EAAArJ,WAAd,SAAyBjrH,GACrB,IAAMgT,EAAS87C,EAAAyhB,mBAAmBloE,MAC9BihE,EAAmCxa,EAAA0hB,sBAAsBC,QAM7D,OAJMzwE,EAAOkyE,aACT5I,EAAaxa,EAAA0hB,sBAA8BxwE,EAAOkyE,WAAWtY,YAAY1M,EAAAilB,kCAAmCrjB,EAAA0hB,sBAAsB1hB,EAAA0hB,sBAAsBC,YAGrJ,IAAI6jD,EAAgCthH,EAAQhT,EAAO07E,aAAcpS,EAC5E,EACJgrD,CAAA,CAxBA,CAAqDxlE,EAAAm9D,yBAAxC5tH,EAAAA,gCAAAi2H,+GC1Cb,SAAYtmB,GAMRA,EAAAA,EAAA,iEAMAA,EAAAA,EAAA,yDAMAA,EAAAA,EAAA,4DACH,CAnBD,CAAY3vG,EAAA2vG,mBAAA3vG,EAAAA,iBAAgB,yCCL5BkB,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAEThB,OAAOgsB,eAAeltB,EAAS,MAAO,CACpCyyB,YAAY,EACZ3iB,IAAK,WACH,OAAO6+H,EAAK7/F,OACd,IAEF5tC,OAAOgsB,eAAeltB,EAAS,QAAS,CACtCyyB,YAAY,EACZ3iB,IAAK,WACH,OAAO8+H,EAAO9/F,OAChB,IAEF5tC,OAAOgsB,eAAeltB,EAAS,YAAa,CAC1CyyB,YAAY,EACZ3iB,IAAK,WACH,OAAO++H,EAAW//F,OACpB,IAEF5tC,OAAOgsB,eAAeltB,EAAS,KAAM,CACnCyyB,YAAY,EACZ3iB,IAAK,WACH,OAAOg/H,EAAGhgG,OACZ,IAEF5tC,OAAOgsB,eAAeltB,EAAS,KAAM,CACnCyyB,YAAY,EACZ3iB,IAAK,WACH,OAAOi/H,EAAIjgG,OACb,IAEF5tC,OAAOgsB,eAAeltB,EAAS,KAAM,CACnCyyB,YAAY,EACZ3iB,IAAK,WACH,OAAOk/H,EAAIlgG,OACb,IAEF5tC,OAAOgsB,eAAeltB,EAAS,KAAM,CACnCyyB,YAAY,EACZ3iB,IAAK,WACH,OAAOm/H,EAAIngG,OACb,IAEF5tC,OAAOgsB,eAAeltB,EAAS,WAAY,CACzCyyB,YAAY,EACZ3iB,IAAK,WACH,OAAOo/H,EAAUpgG,OACnB,IAEF5tC,OAAOgsB,eAAeltB,EAAS,UAAW,CACxCyyB,YAAY,EACZ3iB,IAAK,WACH,OAAOq/H,EAASrgG,OAClB,IAGF,IAAIggG,EAAK//F,EAAuB3lB,EAAQ,QAEpC2lH,EAAMhgG,EAAuB3lB,EAAQ,QAErC4lH,EAAMjgG,EAAuB3lB,EAAQ,QAErC6lH,EAAMlgG,EAAuB3lB,EAAQ,QAErCulH,EAAO5/F,EAAuB3lB,EAAQ,OAEtC+lH,EAAWpgG,EAAuB3lB,EAAQ,QAE1C8lH,EAAYngG,EAAuB3lB,EAAQ,QAE3CylH,EAAa9/F,EAAuB3lB,EAAQ,QAE5CwlH,EAAS7/F,EAAuB3lB,EAAQ,QAE5C,SAAS2lB,EAAuB9tC,GAAO,OAAOA,GAAOA,EAAImuI,WAAanuI,EAAM,CAAE6tC,QAAS7tC,EAAO,oCCf9F,SAASouI,EAAgBC,GACvB,OAAwC,IAAhCA,EAAe,KAAO,GAAK,GAAU,CAC/C,CAsHA,SAASC,EAAQxuI,EAAG8vC,GAClB,IAAM2+F,GAAW,MAAJzuI,IAAmB,MAAJ8vC,GAE5B,OADa9vC,GAAK,KAAO8vC,GAAK,KAAO2+F,GAAO,KAC9B,GAAW,MAANA,CACrB,CAcA,SAASC,EAAO79F,EAAG1sB,EAAG1L,EAAGzY,EAAG8D,EAAGgvC,GAC7B,OAAO07F,GATct5H,EASQs5H,EAAQA,EAAQrqH,EAAG0sB,GAAI29F,EAAQxuI,EAAG8yC,OATrC67F,EAS0C7qI,GARhDoR,IAAQ,GAAKy5H,EAQuCl2H,GAT1E,IAAuBvD,EAAKy5H,CAU5B,CAEA,SAASC,EAAMzqH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAG8D,EAAGgvC,GAC/B,OAAO47F,EAAOj2H,EAAI3C,GAAK2C,EAAIc,EAAG4K,EAAG1L,EAAGzY,EAAG8D,EAAGgvC,EAC5C,CAEA,SAAS+7F,EAAM1qH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAG8D,EAAGgvC,GAC/B,OAAO47F,EAAOj2H,EAAIc,EAAIzD,GAAKyD,EAAG4K,EAAG1L,EAAGzY,EAAG8D,EAAGgvC,EAC5C,CAEA,SAASg8F,EAAM3qH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAG8D,EAAGgvC,GAC/B,OAAO47F,EAAOj2H,EAAI3C,EAAIyD,EAAG4K,EAAG1L,EAAGzY,EAAG8D,EAAGgvC,EACvC,CAEA,SAASi8F,EAAM5qH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAG8D,EAAGgvC,GAC/B,OAAO47F,EAAO54H,GAAK2C,GAAKc,GAAI4K,EAAG1L,EAAGzY,EAAG8D,EAAGgvC,EAC1C,CAzNA3yC,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAAA,aAAkB,EAwNlB,IAAIgvC,EAlMJ,SAAa7jB,GACX,GAAqB,kBAAVA,EAAoB,CAC7B,IAAMkE,EAAM0gH,SAAS3yH,mBAAmB+N,IAExCA,EAAQ,IAAIJ,WAAWsE,EAAI3uB,QAE3B,IAAK,IAAIF,EAAI,EAAGA,EAAI6uB,EAAI3uB,SAAUF,EAChC2qB,EAAM3qB,GAAK6uB,EAAIrE,WAAWxqB,EAE9B,CAEA,OAOF,SAA8BojC,GAK5B,IAJA,IAAMgL,EAAS,GACTohG,EAA0B,GAAfpsG,EAAMljC,OACjBuvI,EAAS,mBAENzvI,EAAI,EAAGA,EAAIwvI,EAAUxvI,GAAK,EAAG,CACpC,IAAMO,EAAI6iC,EAAMpjC,GAAK,KAAOA,EAAI,GAAK,IAC/B0vI,EAAM/tI,SAAS8tI,EAAOvoI,OAAO3G,IAAM,EAAI,IAAQkvI,EAAOvoI,OAAW,GAAJ3G,GAAW,IAC9E6tC,EAAO/sC,KAAKquI,EACd,CAEA,OAAOthG,CACT,CAnBSuhG,CAiCT,SAAoBpvI,EAAGN,GAErBM,EAAEN,GAAO,IAAM,KAAQA,EAAM,GAC7BM,EAAEsuI,EAAgB5uI,GAAO,GAAKA,EAM9B,IALA,IAAIykB,EAAI,WACJ1L,GAAK,UACL3C,GAAK,WACLyD,EAAI,UAEC9Z,EAAI,EAAGA,EAAIO,EAAEL,OAAQF,GAAK,GAAI,CACrC,IAAM4vI,EAAOlrH,EACPmrH,EAAO72H,EACP82H,EAAOz5H,EACP05H,EAAOj2H,EACb4K,EAAIyqH,EAAMzqH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAEP,GAAI,GAAI,WAChC8Z,EAAIq1H,EAAMr1H,EAAG4K,EAAG1L,EAAG3C,EAAG9V,EAAEP,EAAI,GAAI,IAAK,WACrCqW,EAAI84H,EAAM94H,EAAGyD,EAAG4K,EAAG1L,EAAGzY,EAAEP,EAAI,GAAI,GAAI,WACpCgZ,EAAIm2H,EAAMn2H,EAAG3C,EAAGyD,EAAG4K,EAAGnkB,EAAEP,EAAI,GAAI,IAAK,YACrC0kB,EAAIyqH,EAAMzqH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAEP,EAAI,GAAI,GAAI,WACpC8Z,EAAIq1H,EAAMr1H,EAAG4K,EAAG1L,EAAG3C,EAAG9V,EAAEP,EAAI,GAAI,GAAI,YACpCqW,EAAI84H,EAAM94H,EAAGyD,EAAG4K,EAAG1L,EAAGzY,EAAEP,EAAI,GAAI,IAAK,YACrCgZ,EAAIm2H,EAAMn2H,EAAG3C,EAAGyD,EAAG4K,EAAGnkB,EAAEP,EAAI,GAAI,IAAK,UACrC0kB,EAAIyqH,EAAMzqH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAEP,EAAI,GAAI,EAAG,YACnC8Z,EAAIq1H,EAAMr1H,EAAG4K,EAAG1L,EAAG3C,EAAG9V,EAAEP,EAAI,GAAI,IAAK,YACrCqW,EAAI84H,EAAM94H,EAAGyD,EAAG4K,EAAG1L,EAAGzY,EAAEP,EAAI,IAAK,IAAK,OACtCgZ,EAAIm2H,EAAMn2H,EAAG3C,EAAGyD,EAAG4K,EAAGnkB,EAAEP,EAAI,IAAK,IAAK,YACtC0kB,EAAIyqH,EAAMzqH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAEP,EAAI,IAAK,EAAG,YACpC8Z,EAAIq1H,EAAMr1H,EAAG4K,EAAG1L,EAAG3C,EAAG9V,EAAEP,EAAI,IAAK,IAAK,UACtCqW,EAAI84H,EAAM94H,EAAGyD,EAAG4K,EAAG1L,EAAGzY,EAAEP,EAAI,IAAK,IAAK,YAEtC0kB,EAAI0qH,EAAM1qH,EADV1L,EAAIm2H,EAAMn2H,EAAG3C,EAAGyD,EAAG4K,EAAGnkB,EAAEP,EAAI,IAAK,GAAI,YACrBqW,EAAGyD,EAAGvZ,EAAEP,EAAI,GAAI,GAAI,WACpC8Z,EAAIs1H,EAAMt1H,EAAG4K,EAAG1L,EAAG3C,EAAG9V,EAAEP,EAAI,GAAI,GAAI,YACpCqW,EAAI+4H,EAAM/4H,EAAGyD,EAAG4K,EAAG1L,EAAGzY,EAAEP,EAAI,IAAK,GAAI,WACrCgZ,EAAIo2H,EAAMp2H,EAAG3C,EAAGyD,EAAG4K,EAAGnkB,EAAEP,GAAI,IAAK,WACjC0kB,EAAI0qH,EAAM1qH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAEP,EAAI,GAAI,GAAI,WACpC8Z,EAAIs1H,EAAMt1H,EAAG4K,EAAG1L,EAAG3C,EAAG9V,EAAEP,EAAI,IAAK,EAAG,UACpCqW,EAAI+4H,EAAM/4H,EAAGyD,EAAG4K,EAAG1L,EAAGzY,EAAEP,EAAI,IAAK,IAAK,WACtCgZ,EAAIo2H,EAAMp2H,EAAG3C,EAAGyD,EAAG4K,EAAGnkB,EAAEP,EAAI,GAAI,IAAK,WACrC0kB,EAAI0qH,EAAM1qH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAEP,EAAI,GAAI,EAAG,WACnC8Z,EAAIs1H,EAAMt1H,EAAG4K,EAAG1L,EAAG3C,EAAG9V,EAAEP,EAAI,IAAK,GAAI,YACrCqW,EAAI+4H,EAAM/4H,EAAGyD,EAAG4K,EAAG1L,EAAGzY,EAAEP,EAAI,GAAI,IAAK,WACrCgZ,EAAIo2H,EAAMp2H,EAAG3C,EAAGyD,EAAG4K,EAAGnkB,EAAEP,EAAI,GAAI,GAAI,YACpC0kB,EAAI0qH,EAAM1qH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAEP,EAAI,IAAK,GAAI,YACrC8Z,EAAIs1H,EAAMt1H,EAAG4K,EAAG1L,EAAG3C,EAAG9V,EAAEP,EAAI,GAAI,GAAI,UACpCqW,EAAI+4H,EAAM/4H,EAAGyD,EAAG4K,EAAG1L,EAAGzY,EAAEP,EAAI,GAAI,GAAI,YAEpC0kB,EAAI2qH,EAAM3qH,EADV1L,EAAIo2H,EAAMp2H,EAAG3C,EAAGyD,EAAG4K,EAAGnkB,EAAEP,EAAI,IAAK,IAAK,YACtBqW,EAAGyD,EAAGvZ,EAAEP,EAAI,GAAI,GAAI,QACpC8Z,EAAIu1H,EAAMv1H,EAAG4K,EAAG1L,EAAG3C,EAAG9V,EAAEP,EAAI,GAAI,IAAK,YACrCqW,EAAIg5H,EAAMh5H,EAAGyD,EAAG4K,EAAG1L,EAAGzY,EAAEP,EAAI,IAAK,GAAI,YACrCgZ,EAAIq2H,EAAMr2H,EAAG3C,EAAGyD,EAAG4K,EAAGnkB,EAAEP,EAAI,IAAK,IAAK,UACtC0kB,EAAI2qH,EAAM3qH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAEP,EAAI,GAAI,GAAI,YACpC8Z,EAAIu1H,EAAMv1H,EAAG4K,EAAG1L,EAAG3C,EAAG9V,EAAEP,EAAI,GAAI,GAAI,YACpCqW,EAAIg5H,EAAMh5H,EAAGyD,EAAG4K,EAAG1L,EAAGzY,EAAEP,EAAI,GAAI,IAAK,WACrCgZ,EAAIq2H,EAAMr2H,EAAG3C,EAAGyD,EAAG4K,EAAGnkB,EAAEP,EAAI,IAAK,IAAK,YACtC0kB,EAAI2qH,EAAM3qH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAEP,EAAI,IAAK,EAAG,WACpC8Z,EAAIu1H,EAAMv1H,EAAG4K,EAAG1L,EAAG3C,EAAG9V,EAAEP,GAAI,IAAK,WACjCqW,EAAIg5H,EAAMh5H,EAAGyD,EAAG4K,EAAG1L,EAAGzY,EAAEP,EAAI,GAAI,IAAK,WACrCgZ,EAAIq2H,EAAMr2H,EAAG3C,EAAGyD,EAAG4K,EAAGnkB,EAAEP,EAAI,GAAI,GAAI,UACpC0kB,EAAI2qH,EAAM3qH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAEP,EAAI,GAAI,GAAI,WACpC8Z,EAAIu1H,EAAMv1H,EAAG4K,EAAG1L,EAAG3C,EAAG9V,EAAEP,EAAI,IAAK,IAAK,WACtCqW,EAAIg5H,EAAMh5H,EAAGyD,EAAG4K,EAAG1L,EAAGzY,EAAEP,EAAI,IAAK,GAAI,WAErC0kB,EAAI4qH,EAAM5qH,EADV1L,EAAIq2H,EAAMr2H,EAAG3C,EAAGyD,EAAG4K,EAAGnkB,EAAEP,EAAI,GAAI,IAAK,WACrBqW,EAAGyD,EAAGvZ,EAAEP,GAAI,GAAI,WAChC8Z,EAAIw1H,EAAMx1H,EAAG4K,EAAG1L,EAAG3C,EAAG9V,EAAEP,EAAI,GAAI,GAAI,YACpCqW,EAAIi5H,EAAMj5H,EAAGyD,EAAG4K,EAAG1L,EAAGzY,EAAEP,EAAI,IAAK,IAAK,YACtCgZ,EAAIs2H,EAAMt2H,EAAG3C,EAAGyD,EAAG4K,EAAGnkB,EAAEP,EAAI,GAAI,IAAK,UACrC0kB,EAAI4qH,EAAM5qH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAEP,EAAI,IAAK,EAAG,YACpC8Z,EAAIw1H,EAAMx1H,EAAG4K,EAAG1L,EAAG3C,EAAG9V,EAAEP,EAAI,GAAI,IAAK,YACrCqW,EAAIi5H,EAAMj5H,EAAGyD,EAAG4K,EAAG1L,EAAGzY,EAAEP,EAAI,IAAK,IAAK,SACtCgZ,EAAIs2H,EAAMt2H,EAAG3C,EAAGyD,EAAG4K,EAAGnkB,EAAEP,EAAI,GAAI,IAAK,YACrC0kB,EAAI4qH,EAAM5qH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAEP,EAAI,GAAI,EAAG,YACnC8Z,EAAIw1H,EAAMx1H,EAAG4K,EAAG1L,EAAG3C,EAAG9V,EAAEP,EAAI,IAAK,IAAK,UACtCqW,EAAIi5H,EAAMj5H,EAAGyD,EAAG4K,EAAG1L,EAAGzY,EAAEP,EAAI,GAAI,IAAK,YACrCgZ,EAAIs2H,EAAMt2H,EAAG3C,EAAGyD,EAAG4K,EAAGnkB,EAAEP,EAAI,IAAK,GAAI,YACrC0kB,EAAI4qH,EAAM5qH,EAAG1L,EAAG3C,EAAGyD,EAAGvZ,EAAEP,EAAI,GAAI,GAAI,WACpC8Z,EAAIw1H,EAAMx1H,EAAG4K,EAAG1L,EAAG3C,EAAG9V,EAAEP,EAAI,IAAK,IAAK,YACtCqW,EAAIi5H,EAAMj5H,EAAGyD,EAAG4K,EAAG1L,EAAGzY,EAAEP,EAAI,GAAI,GAAI,WACpCgZ,EAAIs2H,EAAMt2H,EAAG3C,EAAGyD,EAAG4K,EAAGnkB,EAAEP,EAAI,GAAI,IAAK,WACrC0kB,EAAIqqH,EAAQrqH,EAAGkrH,GACf52H,EAAI+1H,EAAQ/1H,EAAG62H,GACfx5H,EAAI04H,EAAQ14H,EAAGy5H,GACfh2H,EAAIi1H,EAAQj1H,EAAGi2H,EACjB,CAEA,MAAO,CAACrrH,EAAG1L,EAAG3C,EAAGyD,EACnB,CAtH8Bk2H,CA6H9B,SAAsB5sG,GACpB,GAAqB,IAAjBA,EAAMljC,OACR,MAAO,GAMT,IAHA,IAAM+vI,EAAyB,EAAf7sG,EAAMljC,OAChBkuC,EAAS,IAAI8hG,YAAYrB,EAAgBoB,IAEtCjwI,EAAI,EAAGA,EAAIiwI,EAASjwI,GAAK,EAChCouC,EAAOpuC,GAAK,KAAsB,IAAfojC,EAAMpjC,EAAI,KAAcA,EAAI,GAGjD,OAAOouC,CACT,CA1IyC+hG,CAAaxlH,GAAuB,EAAfA,EAAMzqB,QACpE,EAuLAV,EAAAA,QAAkBgvC,oCC5NlB9tC,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAAA,aAAkB,EAClB,IACIgvC,EAAW,CACb4hG,WAFmC,qBAAXC,QAA0BA,OAAOD,YAAcC,OAAOD,WAAWvqI,KAAKwqI,SAIhG7wI,EAAAA,QAAkBgvC,mCCRlB9tC,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAAA,aAAkB,EAElBA,EAAAA,QADe,2ECJfkB,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAAA,aAAkB,EAElB,IAEgCiB,EAF5BiuI,GAE4BjuI,EAFOmoB,EAAQ,SAEMnoB,EAAImuI,WAAanuI,EAAM,CAAE6tC,QAAS7tC,GAkCvF,IAAI+tC,EAhCJ,SAAe8hG,GACb,KAAK,EAAI5B,EAAUpgG,SAASgiG,GAC1B,MAAMvoI,UAAU,gBAGlB,IAAID,EACElI,EAAM,IAAI2qB,WAAW,IAuB3B,OArBA3qB,EAAI,IAAMkI,EAAInG,SAAS2uI,EAAKjmI,MAAM,EAAG,GAAI,OAAS,GAClDzK,EAAI,GAAKkI,IAAM,GAAK,IACpBlI,EAAI,GAAKkI,IAAM,EAAI,IACnBlI,EAAI,GAAS,IAAJkI,EAETlI,EAAI,IAAMkI,EAAInG,SAAS2uI,EAAKjmI,MAAM,EAAG,IAAK,OAAS,EACnDzK,EAAI,GAAS,IAAJkI,EAETlI,EAAI,IAAMkI,EAAInG,SAAS2uI,EAAKjmI,MAAM,GAAI,IAAK,OAAS,EACpDzK,EAAI,GAAS,IAAJkI,EAETlI,EAAI,IAAMkI,EAAInG,SAAS2uI,EAAKjmI,MAAM,GAAI,IAAK,OAAS,EACpDzK,EAAI,GAAS,IAAJkI,EAGTlI,EAAI,KAAOkI,EAAInG,SAAS2uI,EAAKjmI,MAAM,GAAI,IAAK,KAAO,cAAgB,IACnEzK,EAAI,IAAMkI,EAAI,WAAc,IAC5BlI,EAAI,IAAMkI,IAAM,GAAK,IACrBlI,EAAI,IAAMkI,IAAM,GAAK,IACrBlI,EAAI,IAAMkI,IAAM,EAAI,IACpBlI,EAAI,IAAU,IAAJkI,EACHlI,CACT,EAGAJ,EAAAA,QAAkBgvC,oCC1ClB9tC,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAAA,aAAkB,EAElBA,EAAAA,QADe,wJCGf,IAAI+wI,EAPJ7vI,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAAA,QAOA,WAEE,IAAK+wI,KAEHA,EAAoC,qBAAXF,QAA0BA,OAAOE,iBAAmBF,OAAOE,gBAAgB1qI,KAAKwqI,SAGvG,MAAM,IAAI7mI,MAAM,4GAIpB,OAAO+mI,EAAgBC,EACzB,EAdA,IAAMA,EAAQ,IAAIjmH,WAAW,sCCD7B,SAAS1oB,EAAEwC,EAAG9D,EAAG8vC,EAAG+C,GAClB,OAAQ/uC,GACN,KAAK,EACH,OAAO9D,EAAI8vC,GAAK9vC,EAAI6yC,EAEtB,KAAK,EAML,KAAK,EACH,OAAO7yC,EAAI8vC,EAAI+C,EAJjB,KAAK,EACH,OAAO7yC,EAAI8vC,EAAI9vC,EAAI6yC,EAAI/C,EAAI+C,EAKjC,CAEA,SAASq9F,EAAKlwI,EAAGqG,GACf,OAAOrG,GAAKqG,EAAIrG,IAAM,GAAKqG,CAC7B,CAzBAlG,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAAA,aAAkB,EAiGlB,IAAIgvC,EAzEJ,SAAc7jB,GACZ,IAAMioB,EAAI,CAAC,WAAY,WAAY,WAAY,YACzCD,EAAI,CAAC,WAAY,WAAY,WAAY,UAAY,YAE3D,GAAqB,kBAAVhoB,EAAoB,CAC7B,IAAMkE,EAAM0gH,SAAS3yH,mBAAmB+N,IAExCA,EAAQ,GAER,IAAK,IAAI3qB,EAAI,EAAGA,EAAI6uB,EAAI3uB,SAAUF,EAChC2qB,EAAMtpB,KAAKwtB,EAAIrE,WAAWxqB,GAE9B,MAAY6P,MAAMkf,QAAQpE,KAExBA,EAAQ9a,MAAMlP,UAAU0J,MAAMxJ,KAAK8pB,IAGrCA,EAAMtpB,KAAK,KAKX,IAJA,IAAMuqD,EAAIjhC,EAAMzqB,OAAS,EAAI,EACvBwwI,EAAIj6H,KAAK0nB,KAAKytB,EAAI,IAClBva,EAAI,IAAIxhC,MAAM6gI,GAEX1wI,EAAI,EAAGA,EAAI0wI,IAAK1wI,EAAG,CAG1B,IAFA,IAAMJ,EAAM,IAAIswI,YAAY,IAEnB1nI,EAAI,EAAGA,EAAI,KAAMA,EACxB5I,EAAI4I,GAAKmiB,EAAU,GAAJ3qB,EAAa,EAAJwI,IAAU,GAAKmiB,EAAU,GAAJ3qB,EAAa,EAAJwI,EAAQ,IAAM,GAAKmiB,EAAU,GAAJ3qB,EAAa,EAAJwI,EAAQ,IAAM,EAAImiB,EAAU,GAAJ3qB,EAAa,EAAJwI,EAAQ,GAGnI6oC,EAAErxC,GAAKJ,CACT,CAEAyxC,EAAEq/F,EAAI,GAAG,IAA2B,GAApB/lH,EAAMzqB,OAAS,GAASuW,KAAKC,IAAI,EAAG,IACpD26B,EAAEq/F,EAAI,GAAG,IAAMj6H,KAAK2nB,MAAMiT,EAAEq/F,EAAI,GAAG,KACnCr/F,EAAEq/F,EAAI,GAAG,IAA2B,GAApB/lH,EAAMzqB,OAAS,GAAS,WAExC,IAAK,IAAIF,EAAI,EAAGA,EAAI0wI,IAAK1wI,EAAG,CAG1B,IAFA,IAAM2wI,EAAI,IAAIT,YAAY,IAEjB78F,EAAI,EAAGA,EAAI,KAAMA,EACxBs9F,EAAEt9F,GAAKhC,EAAErxC,GAAGqzC,GAGd,IAAK,IAAIA,EAAI,GAAIA,EAAI,KAAMA,EACzBs9F,EAAEt9F,GAAKo9F,EAAKE,EAAEt9F,EAAI,GAAKs9F,EAAEt9F,EAAI,GAAKs9F,EAAEt9F,EAAI,IAAMs9F,EAAEt9F,EAAI,IAAK,GAS3D,IANA,IAAI3uB,EAAIiuB,EAAE,GACN35B,EAAI25B,EAAE,GACNt8B,EAAIs8B,EAAE,GACN74B,EAAI64B,EAAE,GACN7nC,EAAI6nC,EAAE,GAEDU,EAAI,EAAGA,EAAI,KAAMA,EAAG,CAC3B,IAAMhvC,EAAIoS,KAAK2nB,MAAMiV,EAAI,IACnBE,EAAIk9F,EAAK/rH,EAAG,GAAK7iB,EAAEwC,EAAG2U,EAAG3C,EAAGyD,GAAKhP,EAAI8nC,EAAEvuC,GAAKssI,EAAEt9F,KAAO,EAC3DvoC,EAAIgP,EACJA,EAAIzD,EACJA,EAAIo6H,EAAKz3H,EAAG,MAAQ,EACpBA,EAAI0L,EACJA,EAAI6uB,CACN,CAEAZ,EAAE,GAAKA,EAAE,GAAKjuB,IAAM,EACpBiuB,EAAE,GAAKA,EAAE,GAAK35B,IAAM,EACpB25B,EAAE,GAAKA,EAAE,GAAKt8B,IAAM,EACpBs8B,EAAE,GAAKA,EAAE,GAAK74B,IAAM,EACpB64B,EAAE,GAAKA,EAAE,GAAK7nC,IAAM,CACtB,CAEA,MAAO,CAAC6nC,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GAAWA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,GAAK,IAAMA,EAAE,IAAM,EAAI,IAAa,IAAPA,EAAE,GACxV,EAGAnzC,EAAAA,QAAkBgvC,sCCrGlB9tC,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAAA,aAAkB,EAClBA,EAAQoxI,gBAAkBA,EAE1B,IAEgCnwI,EAF5BiuI,GAE4BjuI,EAFOmoB,EAAQ,SAEMnoB,EAAImuI,WAAanuI,EAAM,CAAE6tC,QAAS7tC,GAQvF,IAFA,IAAMowI,EAAY,GAET7wI,EAAI,EAAGA,EAAI,MAAOA,EACzB6wI,EAAUxvI,MAAMrB,EAAI,KAAOY,SAAS,IAAIyJ,MAAM,IAGhD,SAASumI,EAAgBhxI,GAAiB,IAAZ0vC,EAAMvqC,UAAA7E,OAAA,QAAAuC,IAAAsC,UAAA,GAAAA,UAAA,GAAG,EAGrC,OAAQ8rI,EAAUjxI,EAAI0vC,EAAS,IAAMuhG,EAAUjxI,EAAI0vC,EAAS,IAAMuhG,EAAUjxI,EAAI0vC,EAAS,IAAMuhG,EAAUjxI,EAAI0vC,EAAS,IAAM,IAAMuhG,EAAUjxI,EAAI0vC,EAAS,IAAMuhG,EAAUjxI,EAAI0vC,EAAS,IAAM,IAAMuhG,EAAUjxI,EAAI0vC,EAAS,IAAMuhG,EAAUjxI,EAAI0vC,EAAS,IAAM,IAAMuhG,EAAUjxI,EAAI0vC,EAAS,IAAMuhG,EAAUjxI,EAAI0vC,EAAS,IAAM,IAAMuhG,EAAUjxI,EAAI0vC,EAAS,KAAOuhG,EAAUjxI,EAAI0vC,EAAS,KAAOuhG,EAAUjxI,EAAI0vC,EAAS,KAAOuhG,EAAUjxI,EAAI0vC,EAAS,KAAOuhG,EAAUjxI,EAAI0vC,EAAS,KAAOuhG,EAAUjxI,EAAI0vC,EAAS,MAAMriC,aACvf,CAgBA,IAAIuhC,EAdJ,SAAmB5uC,GAAiB,IAC5B0wI,EAAOM,EAAgBhxI,EADDmF,UAAA7E,OAAA,QAAAuC,IAAAsC,UAAA,GAAAA,UAAA,GAAG,GAO/B,KAAK,EAAI2pI,EAAUpgG,SAASgiG,GAC1B,MAAMvoI,UAAU,+BAGlB,OAAOuoI,CACT,EAGA9wI,EAAAA,QAAkBgvC,sCCzClB9tC,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAAA,aAAkB,EAElB,IAIgCiB,EAM5BqwI,EAEAC,EAZAC,GAI4BvwI,EAJEmoB,EAAQ,SAIWnoB,EAAImuI,WAAanuI,EAAM,CAAE6tC,QAAS7tC,GAFnF4tI,EAAazlH,EAAQ,OAazB,IAAIqoH,EAAa,EACbC,EAAa,EAkFjB,IAAI1iG,EAhFJ,SAAYjoB,EAASm7F,EAAKpyE,GACxB,IAAItvC,EAAI0hH,GAAOpyE,GAAU,EACnBt2B,EAAI0oG,GAAO,IAAI7xG,MAAM,IAEvB0uB,GADJhY,EAAUA,GAAW,CAAC,GACHgY,MAAQuyG,EACvBK,OAAgC1uI,IAArB8jB,EAAQ4qH,SAAyB5qH,EAAQ4qH,SAAWJ,EAInE,GAAY,MAARxyG,GAA4B,MAAZ4yG,EAAkB,CACpC,IAAMC,EAAY7qH,EAAQ3P,SAAW2P,EAAQ8qH,KAAOL,EAAK1iG,WAE7C,MAAR/P,IAEFA,EAAOuyG,EAAU,CAAgB,EAAfM,EAAU,GAAWA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,GAAIA,EAAU,KAG3F,MAAZD,IAEFA,EAAWJ,EAAiD,OAApCK,EAAU,IAAM,EAAIA,EAAU,IAE1D,CAMA,IAAIE,OAA0B7uI,IAAlB8jB,EAAQ+qH,MAAsB/qH,EAAQ+qH,MAAQprI,KAAKwX,MAG3D6zH,OAA0B9uI,IAAlB8jB,EAAQgrH,MAAsBhrH,EAAQgrH,MAAQL,EAAa,EAEjEM,EAAKF,EAAQL,GAAcM,EAAQL,GAAc,IAavD,GAXIM,EAAK,QAA0B/uI,IAArB8jB,EAAQ4qH,WACpBA,EAAWA,EAAW,EAAI,QAKvBK,EAAK,GAAKF,EAAQL,SAAiCxuI,IAAlB8jB,EAAQgrH,QAC5CA,EAAQ,GAINA,GAAS,IACX,MAAM,IAAI/nI,MAAM,mDAGlBynI,EAAaK,EACbJ,EAAaK,EACbR,EAAYI,EAIZ,IAAMM,GAA4B,KAAb,WAFrBH,GAAS,cAEiCC,GAAS,WACnDv4H,EAAEhZ,KAAOyxI,IAAO,GAAK,IACrBz4H,EAAEhZ,KAAOyxI,IAAO,GAAK,IACrBz4H,EAAEhZ,KAAOyxI,IAAO,EAAI,IACpBz4H,EAAEhZ,KAAY,IAALyxI,EAET,IAAMC,EAAMJ,EAAQ,WAAc,IAAQ,UAC1Ct4H,EAAEhZ,KAAO0xI,IAAQ,EAAI,IACrB14H,EAAEhZ,KAAa,IAAN0xI,EAET14H,EAAEhZ,KAAO0xI,IAAQ,GAAK,GAAM,GAE5B14H,EAAEhZ,KAAO0xI,IAAQ,GAAK,IAEtB14H,EAAEhZ,KAAOmxI,IAAa,EAAI,IAE1Bn4H,EAAEhZ,KAAkB,IAAXmxI,EAET,IAAK,IAAIvqI,EAAI,EAAGA,EAAI,IAAKA,EACvBoS,EAAEhZ,EAAI4G,GAAK23B,EAAK33B,GAGlB,OAAO86G,IAAO,EAAI2sB,EAAWuC,iBAAiB53H,EAChD,EAGAxZ,EAAAA,QAAkBgvC,sCCxGlB9tC,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAAA,aAAkB,EAElB,IAAI8uI,EAAK//F,EAAuB3lB,EAAQ,QAEpC+oH,EAAMpjG,EAAuB3lB,EAAQ,QAEzC,SAAS2lB,EAAuB9tC,GAAO,OAAOA,GAAOA,EAAImuI,WAAanuI,EAAM,CAAE6tC,QAAS7tC,EAAO,CAE9F,IACI+tC,GADO,EAAI8/F,EAAGhgG,SAAS,KAAM,GAAMqjG,EAAIrjG,SAE3C9uC,EAAAA,QAAkBgvC,sCCblB9tC,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAQouB,IAAMpuB,EAAQoyI,SAAM,EAC5BpyI,EAAAA,QAyBA,SAAaoF,EAAMoV,EAAS63H,GAC1B,SAASC,EAAapwI,EAAOo2B,EAAW4pF,EAAKpyE,GAC3C,IAAIyiG,EAUJ,GARqB,kBAAVrwI,IACTA,EAtBN,SAAuBuF,GACrBA,EAAMsoI,SAAS3yH,mBAAmB3V,IAIlC,IAFA,IAAM0jB,EAAQ,GAEL3qB,EAAI,EAAGA,EAAIiH,EAAI/G,SAAUF,EAChC2qB,EAAMtpB,KAAK4F,EAAIujB,WAAWxqB,IAG5B,OAAO2qB,CACT,CAYcqnH,CAActwI,IAGC,kBAAdo2B,IACTA,GAAY,EAAIs2G,EAAO9/F,SAASxW,IAGgE,MAAhE,QAA5Bi6G,EAAaj6G,SAAsC,IAAfi6G,OAAwB,EAASA,EAAW7xI,QACpF,MAAM6H,UAAU,oEAMlB,IAAI4iB,EAAQ,IAAIJ,WAAW,GAAK7oB,EAAMxB,QAOtC,GANAyqB,EAAMqO,IAAIlB,GACVnN,EAAMqO,IAAIt3B,EAAOo2B,EAAU53B,SAC3ByqB,EAAQknH,EAASlnH,IACX,GAAgB,GAAXA,EAAM,GAAY3Q,EAC7B2Q,EAAM,GAAgB,GAAXA,EAAM,GAAY,IAEzB+2F,EAAK,CACPpyE,EAASA,GAAU,EAEnB,IAAK,IAAItvC,EAAI,EAAGA,EAAI,KAAMA,EACxB0hH,EAAIpyE,EAAStvC,GAAK2qB,EAAM3qB,GAG1B,OAAO0hH,CACT,CAEA,OAAO,EAAI2sB,EAAWuC,iBAAiBjmH,EACzC,CAGA,IACEmnH,EAAaltI,KAAOA,CACtB,CAAE,MAAO4H,GAAM,CAKf,OAFAslI,EAAaF,IAAMA,EACnBE,EAAalkH,IAAMA,EACZkkH,CACT,EAvEA,IAIgCrxI,EAJ5B4tI,EAAazlH,EAAQ,OAErBwlH,GAE4B3tI,EAFImoB,EAAQ,SAESnoB,EAAImuI,WAAanuI,EAAM,CAAE6tC,QAAS7tC,GAcvF,IAAMmxI,EAAM,uCACZpyI,EAAQoyI,IAAMA,EACd,IAAMhkH,EAAM,uCACZpuB,EAAQouB,IAAMA,sCC3BdltB,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAAA,aAAkB,EAElB,IAAIyyI,EAAU1jG,EAAuB3lB,EAAQ,QAEzCooH,EAAOziG,EAAuB3lB,EAAQ,QAEtCylH,EAAazlH,EAAQ,OAEzB,SAAS2lB,EAAuB9tC,GAAO,OAAOA,GAAOA,EAAImuI,WAAanuI,EAAM,CAAE6tC,QAAS7tC,EAAO,CA4B9F,IAAI+tC,EA1BJ,SAAYjoB,EAASm7F,EAAKpyE,GACxB,GAAI2iG,EAAQ3jG,QAAQ8hG,aAAe1uB,IAAQn7F,EACzC,OAAO0rH,EAAQ3jG,QAAQ8hG,aAKzB,IAAM8B,GAFN3rH,EAAUA,GAAW,CAAC,GAED3P,SAAW2P,EAAQ8qH,KAAOL,EAAK1iG,WAMpD,GAHA4jG,EAAK,GAAe,GAAVA,EAAK,GAAY,GAC3BA,EAAK,GAAe,GAAVA,EAAK,GAAY,IAEvBxwB,EAAK,CACPpyE,EAASA,GAAU,EAEnB,IAAK,IAAItvC,EAAI,EAAGA,EAAI,KAAMA,EACxB0hH,EAAIpyE,EAAStvC,GAAKkyI,EAAKlyI,GAGzB,OAAO0hH,CACT,CAEA,OAAO,EAAI2sB,EAAWuC,iBAAiBsB,EACzC,EAGA1yI,EAAAA,QAAkBgvC,sCCxClB9tC,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAAA,aAAkB,EAElB,IAAI8uI,EAAK//F,EAAuB3lB,EAAQ,QAEpCupH,EAAO5jG,EAAuB3lB,EAAQ,QAE1C,SAAS2lB,EAAuB9tC,GAAO,OAAOA,GAAOA,EAAImuI,WAAanuI,EAAM,CAAE6tC,QAAS7tC,EAAO,CAE9F,IACI+tC,GADO,EAAI8/F,EAAGhgG,SAAS,KAAM,GAAM6jG,EAAK7jG,SAE5C9uC,EAAAA,QAAkBgvC,sCCblB9tC,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAAA,aAAkB,EAElB,IAEgCiB,EAF5B2xI,GAE4B3xI,EAFImoB,EAAQ,SAESnoB,EAAImuI,WAAanuI,EAAM,CAAE6tC,QAAS7tC,GAMvF,IAAI+tC,EAJJ,SAAkB8hG,GAChB,MAAuB,kBAATA,GAAqB8B,EAAO9jG,QAAQhqC,KAAKgsI,EACzD,EAGA9wI,EAAAA,QAAkBgvC,sCCdlB9tC,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAAA,aAAkB,EAElB,IAEgCiB,EAF5BiuI,GAE4BjuI,EAFOmoB,EAAQ,SAEMnoB,EAAImuI,WAAanuI,EAAM,CAAE6tC,QAAS7tC,GAUvF,IAAI+tC,EARJ,SAAiB8hG,GACf,KAAK,EAAI5B,EAAUpgG,SAASgiG,GAC1B,MAAMvoI,UAAU,gBAGlB,OAAOpG,SAAS2uI,EAAKjmI,MAAM,GAAI,IAAK,GACtC,EAGA7K,EAAAA,QAAkBgvC,oCClBlB9tC,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAAA,QAEA,SAA2BK,GACzB,IAAIiE,EAAUiB,UAAU7E,OAAS,QAAsBuC,IAAjBsC,UAAU,GAAmBA,UAAU,GAAK,KAElF,IACE,IAAI5D,EAAStB,EAAGgB,KAAKiD,GAErB,MAA2B,oBAAhB3C,EAAO8T,KACT,IAAIuR,SAAQ,SAAUC,GAC3BtlB,EAAO8T,KAAKwR,GAAS,WACnB,OAAOA,GACT,GACF,IAEOtlB,CAEX,CAAE,MAAOqL,GAAM,CACjB,EAEAjN,EAAOC,QAAUA,EAAQ8uC,QACzB/uC,EAAOC,QAAPD,QAAyBC,EAAQ8uC,0CCxBjC,IACI+jG,GAAW9jG,EADc3lB,EAAAA,OAAAA,SACSA,EAAQ,OAY9CrpB,EAAOC,QAVP,WACE,IAAI0+C,EAAW,CAAC,EAKhB,OAJAA,EAAS/1B,QAAU,IAAIkqH,EAAS/jG,SAAQ,SAAU7nB,EAASC,GACzDw3B,EAASz3B,QAAUA,EACnBy3B,EAASx3B,OAASA,CACpB,IACOw3B,CACT,sCCHA,IAAIo0F,EAAuB1pH,EAAQ,OAEnC,SAAS2pH,IAAiB,CAC1B,SAASC,IAA0B,CACnCA,EAAuBC,kBAAoBF,EAE3ChzI,EAAOC,QAAU,WACf,SAASkzI,EAAKhrI,EAAOirI,EAAUC,EAAextI,EAAUytI,EAAcC,GACpE,GAAIA,IAAWR,EAAf,CAIA,IAAI9lI,EAAM,IAAIhD,MACZ,mLAKF,MADAgD,EAAI5H,KAAO,sBACL4H,CAPN,CAQF,CAEA,SAASumI,IACP,OAAOL,CACT,CAHAA,EAAKM,WAAaN,EAMlB,IAAIO,EAAiB,CACnB/4F,MAAOw4F,EACPQ,OAAQR,EACRS,KAAMT,EACNl6G,KAAMk6G,EACN7qG,OAAQ6qG,EACR/hH,OAAQ+hH,EACRl4G,OAAQk4G,EACRxsG,OAAQwsG,EAERloG,IAAKkoG,EACLU,QAASL,EACTM,QAASX,EACTY,YAAaZ,EACba,WAAYR,EACZx0G,KAAMm0G,EACNc,SAAUT,EACVU,MAAOV,EACPW,UAAWX,EACXY,MAAOZ,EACPa,MAAOb,EAEPc,eAAgBrB,EAChBC,kBAAmBF,GAKrB,OAFAU,EAAea,UAAYb,EAEpBA,CACT,yBC/CE1zI,EAAOC,QAAUopB,EAAQ,MAARA,mCCNnBrpB,EAAOC,QAFoB,mFCF3B,IAIIu0I,EAAQC,EAJR1uI,EAAW5E,OAAOuzI,QAAU,SAAUnvI,GAAU,IAAK,IAAI9E,EAAI,EAAGA,EAAI+E,UAAU7E,OAAQF,IAAK,CAAE,IAAIgF,EAASD,UAAU/E,GAAI,IAAK,IAAIgE,KAAOgB,EAActE,OAAOC,UAAUS,eAAeP,KAAKmE,EAAQhB,KAAQc,EAAOd,GAAOgB,EAAOhB,GAAU,CAAE,OAAOc,CAAQ,EAE3P2mB,EAAe,WAAc,SAASoW,EAAiB/8B,EAAQ4C,GAAS,IAAK,IAAI1H,EAAI,EAAGA,EAAI0H,EAAMxH,OAAQF,IAAK,CAAE,IAAIoyB,EAAa1qB,EAAM1H,GAAIoyB,EAAWH,WAAaG,EAAWH,aAAc,EAAOG,EAAWF,cAAe,EAAU,UAAWE,IAAYA,EAAWD,UAAW,GAAMzxB,OAAOgsB,eAAe5nB,EAAQstB,EAAWpuB,IAAKouB,EAAa,CAAE,CAAE,OAAO,SAAU0S,EAAaovG,EAAYC,GAAiJ,OAA9HD,GAAYryG,EAAiBiD,EAAYnkC,UAAWuzI,GAAiBC,GAAatyG,EAAiBiD,EAAaqvG,GAAqBrvG,CAAa,CAAG,CAA7hB,GAInBtlC,EAAQ,GAwRR,SAAsB6zE,GAPpBv0D,SAAS9C,KAAKo4H,UAAUzmI,IAAI,oCAzD9B,WAGE,GADUmR,SAASu1H,eAAe,gCACzB,OACT,IAAIC,EAAQ,6BACRC,EAAiBz1H,SAAS01H,gBAAgBF,EAAO,kBACrDC,EAAeE,aAAa,eAAgB,OAE5C,IAAIzqI,EAAS8U,SAAS01H,gBAAgBF,EAAO,UAC7CtqI,EAAOyqI,aAAa,KAAM,iBAC1BzqI,EAAOs3B,YAAYizG,GAEnB,IAAIG,EAAU51H,SAAS01H,gBAAgBF,EAAO,OAC9CI,EAAQD,aAAa,KAAM,gCAC3BC,EAAQD,aAAa,QAAS,2BAC9BC,EAAQpzG,YAAYt3B,GAEpB8U,SAAS9C,KAAKslB,YAAYozG,EAC5B,CAgDEC,GArCF,SAAgCthE,GAC9B,IAAIuhE,EAAY91H,SAASu1H,eAAehhE,EAAWwhE,UAAYA,GAE3DxhE,EAAWwhE,WAAaD,GAC1BrvI,QAAQ0D,MAAM,uBAAwB,4BAA8BoqE,EAAWwhE,SAAW,KAGxFD,IAIF91H,SAAS9C,KAAKmO,SAAS,GAAGiqH,UAAUzmI,IAAI,6BACxCinI,EAAY91H,SAAS6F,cAAc,QACzBzS,GAAK2iI,EACf/1H,SAAS9C,KAAKslB,YAAYszG,KAN1BtuI,GAAO,EAAIgiB,EAAQwsH,YAAYF,IAC1B5qH,OAAO+qH,EAAQzmG,QAAQ3pB,cAAcqwH,EAAmB3hE,GASjE,CAoBE4hE,CAAuB5hE,EACzB,EA1RA,IAAI6hE,EAAStsH,EAAQ,OAEjBmsH,EAAUxmG,EAAuB2mG,GAIjCC,EAAc5mG,EAFD3lB,EAAQ,QAIrBN,EAAUM,EAAQ,MAEtB,SAAS2lB,EAAuB9tC,GAAO,OAAOA,GAAOA,EAAImuI,WAAanuI,EAAM,CAAE6tC,QAAS7tC,EAAO,CAI9F,SAAS69C,EAA2BzoC,EAAMhV,GAAQ,IAAKgV,EAAQ,MAAM,IAAIu/H,eAAe,6DAAgE,OAAOv0I,GAAyB,kBAATA,GAAqC,oBAATA,EAA8BgV,EAAPhV,CAAa,CAI/O,IAAIm0I,GAAqBhB,EAASD,EAAS,SAAUsB,GAGnD,SAASL,IACP,IAAI7mI,EAEAmnI,EAAOp9H,GAZf,SAAyBq2C,EAAUzpB,GAAe,KAAMypB,aAAoBzpB,GAAgB,MAAM,IAAI/8B,UAAU,oCAAwC,CAcpJ2jB,CAAgBvlB,KAAM6uI,GAEtB,IAAK,IAAI90H,EAAOnb,UAAU7E,OAAQ0H,EAAOiI,MAAMqQ,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC3EvY,EAAKuY,GAAQpb,UAAUob,GAGzB,OAAem1H,EAASp9H,EAAQomC,EAA2Bn4C,MAAOgI,EAAO6mI,EAAkB7xG,WAAaziC,OAAOmxB,eAAemjH,IAAoBn0I,KAAKoT,MAAM9F,EAAM,CAAChI,MAAM9F,OAAOuH,KAAiBsQ,EAAMq9H,kBAAoB,SAAUC,GAChOA,EAAOC,SAASD,EAAOC,UAC3Bv9H,EAAM0oB,OACR,EAAG1oB,EAAMw9H,mBAAqB,SAAU5qI,GACtC,IAAI6qI,EAAcz9H,EAAMxQ,MACpBkuI,EAAsBD,EAAYC,oBAClCC,EAAiBF,EAAYE,eAE7BC,EAAiBhrI,EAAEhG,SAAWoT,EAAM69H,QAEpCH,GAAuBE,IACzBD,IACA39H,EAAM0oB,SAGR91B,EAAEm6C,iBACJ,EAAG/sC,EAAM0oB,MAAQ,WACf,IAAIo1G,EAAa99H,EAAMxQ,MAAMsuI,WAkOjCl3H,SAAS9C,KAAKo4H,UAAU/+B,OAAO,oCAZjC,SAAgChiC,GAC9B,IAAIvuE,EAASga,SAASu1H,eAAehhE,EAAWwhE,UAAYA,GACxD/vI,GACFwB,EAAK2vI,QAAQnxI,EAEjB,CAxNMoxI,CAAuBh+H,EAAMxQ,OAsLnC,SAAgCsuI,GAC9B,IAAIG,EAAMr3H,SAASu1H,eAAe,gCAC9B8B,GACFA,EAAIvyH,WAAW8jB,YAAYyuG,GAE7Br3H,SAAS9C,KAAKmO,SAAS,GAAGiqH,UAAU/+B,OAAO,4BAC3C2gC,GACF,CA5LMI,CAAuBJ,EACzB,EAAG99H,EAAMm+H,SAAW,SAAU5iI,GAC5B,IAAI6iI,EAAep+H,EAAMxQ,MACrB6uI,EAAgBD,EAAaC,cAC7BC,EAAmBF,EAAaE,iBAChCC,EAAaH,EAAaG,WAC1BC,EAAkBJ,EAAaI,gBAE/BC,EAAUljI,EAAMkjI,QAChBC,EAA8B,KAAZD,EAElBD,EAAgBxmH,SAASymH,IAC3Bz+H,EAAM0oB,QAGJ21G,GAAiBK,IACnBJ,EAAiB/iI,GACjByE,EAAM0oB,SAGJ61G,GACFA,GAEJ,EAAGv+H,EAAM2+H,kBAAoB,WAC3B/3H,SAASgE,iBAAiB,UAAW5K,EAAMm+H,UAAU,EACvD,EAAGn+H,EAAM4+H,qBAAuB,WAC9Bh4H,SAASmH,oBAAoB,UAAW/N,EAAMm+H,UAAU,GACxDn+H,EAAMxQ,MAAMqvI,aACd,EAAG7+H,EAAM8+H,eAAiB,WACxB,IAAIC,EAAe/+H,EAAMxQ,MACrBqd,EAAQkyH,EAAalyH,MACrBziB,EAAU20I,EAAa30I,QACvB40I,EAAUD,EAAaC,QAU3B,OAAOC,EATQF,EAAaE,UAET,CACjBpyH,MAAOA,EACPziB,QAASA,EACT40I,QAASA,EACTxzE,QAASxrD,EAAM0oB,OAInB,EAAW0d,EAA2BpmC,EAAnCo9H,EACL,CA8DA,OA/IF,SAAmB8B,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAItvI,UAAU,kEAAoEsvI,GAAeD,EAASz2I,UAAYD,OAAO2S,OAAOgkI,GAAcA,EAAW12I,UAAW,CAAEixB,YAAa,CAAElwB,MAAO01I,EAAUnlH,YAAY,EAAOE,UAAU,EAAMD,cAAc,KAAemlH,IAAY32I,OAAO+7B,eAAiB/7B,OAAO+7B,eAAe26G,EAAUC,GAAcD,EAASj0G,UAAYk0G,EAAY,CAG3e1rH,CAAUqpH,EAAmBK,GAgF7B5pH,EAAaupH,EAAmB,CAAC,CAC/BhxI,IAAK,SACLtC,MAAO,WACL,IAAIwZ,EAAS/U,KAETmxI,EAASnxI,KAAKuB,MACdqd,EAAQuyH,EAAOvyH,MACfziB,EAAUg1I,EAAOh1I,QACjB40I,EAAUI,EAAOJ,QACjBK,EAAkBD,EAAOC,gBACzBJ,EAAWG,EAAOH,SAClBK,EAAmBF,EAAOE,iBAG9B,OAAOzC,EAAQzmG,QAAQ3pB,cACrB,MACA,CACEjB,UAAW,+BAAiC8zH,EAC5CC,IAAK,SAAaC,GAChB,OAAOx8H,EAAO66H,QAAU2B,CAC1B,EACAjC,QAAStvI,KAAKuvI,oBAEhBX,EAAQzmG,QAAQ3pB,cACd,MACA,CAAEjB,UAAW,uBACbyzH,EAAWhxI,KAAK6wI,iBAAmBjC,EAAQzmG,QAAQ3pB,cACjD,MACA,CAAEjB,UAAW,4BACbqB,GAASgwH,EAAQzmG,QAAQ3pB,cACvB,KACA,KACAI,GAEFziB,EACAi1I,IACAxC,EAAQzmG,QAAQ3pB,cACd,MACA,CAAEjB,UAAW,oCACbwzH,EAAQhtI,KAAI,SAAUsrI,EAAQx1I,GAC5B,OAAO+0I,EAAQzmG,QAAQ3pB,cACrB,SACArf,EAAS,CACPtB,IAAKhE,EACL0jB,UAAW8xH,EAAO9xH,WACjB8xH,EAAQ,CACTC,QAAS,SAAiB3qI,GACxB,OAAOoQ,EAAOq6H,kBAAkBC,EAClC,IAEFA,EAAOv+E,MAEX,OAKV,KAGK+9E,CACT,CA9I2C,CA8IzCE,EAAO9qH,WAAY2pH,EAAOtpF,UAAY,CACtC1lC,MAAOowH,EAAY7mG,QAAQ9T,OAC3Bl4B,QAAS6yI,EAAY7mG,QAAQ9T,OAC7B08G,QAAS/B,EAAY7mG,QAAQ4L,MAAM84F,WACnCuE,gBAAiBpC,EAAY7mG,QAAQ9V,KACrC2+G,SAAUhC,EAAY7mG,QAAQ9V,KAC9Bo9G,oBAAqBT,EAAY7mG,QAAQ6kG,KACzCoD,cAAepB,EAAY7mG,QAAQ6kG,KACnCuD,gBAAiBvB,EAAY7mG,QAAQ8kG,QAAQ+B,EAAY7mG,QAAQzG,QACjEkvG,YAAa5B,EAAY7mG,QAAQ9V,KACjCw9G,WAAYb,EAAY7mG,QAAQ9V,KAChCq9G,eAAgBV,EAAY7mG,QAAQ9V,KACpCg+G,iBAAkBrB,EAAY7mG,QAAQ9V,KACtCi+G,WAAYtB,EAAY7mG,QAAQ9V,KAChCg/G,iBAAkBrC,EAAY7mG,QAAQ9T,QACrCu5G,EAAO5pF,aAAe,CACvB+sF,QAAS,CAAC,CACRjgF,MAAO,SACPw+E,QAAS,WACP,OAAO,IACT,EACA/xH,UAAW,MACV,CACDuzC,MAAO,UACPw+E,QAAS,WACP,OAAO,IACT,EACA/xH,UAAW,OAEb6zH,gBAAiB,WACf,OAAO,IACT,EACA3B,qBAAqB,EACrBW,eAAe,EACfG,gBAAiB,GACjBK,YAAa,WACX,OAAO,IACT,EACAf,WAAY,WACV,OAAO,IACT,EACAH,eAAgB,WACd,OAAO,IACT,EACAW,iBAAkB,WAChB,OAAO,IACT,GACCxC,GAIH,IAAI1tI,EAAO,KACPuuI,EAAW,0DCvNF,IAAI8C,EAAG/uH,EAAQ,OAASgvH,EAAGhvH,EAAQ,OAAa,SAASpkB,EAAEkgB,GAAG,IAAI,IAAI1L,EAAE,yDAAyD0L,EAAErO,EAAE,EAAEA,EAAEtR,UAAU7E,OAAOmW,IAAI2C,GAAG,WAAW4D,mBAAmB7X,UAAUsR,IAAI,MAAM,yBAAyBqO,EAAE,WAAW1L,EAAE,gHAAgH,CAAC,IAAI6+H,EAAG,IAAInpH,IAAIopH,EAAG,CAAC,EAAE,SAASC,EAAGrzH,EAAE1L,GAAGg/H,EAAGtzH,EAAE1L,GAAGg/H,EAAGtzH,EAAE,UAAU1L,EAAE,CACxb,SAASg/H,EAAGtzH,EAAE1L,GAAW,IAAR8+H,EAAGpzH,GAAG1L,EAAM0L,EAAE,EAAEA,EAAE1L,EAAE9Y,OAAOwkB,IAAImzH,EAAGlqI,IAAIqL,EAAE0L,GAAG,CAC5D,IAAIuzH,IAAK,qBAAqB9yI,QAAQ,qBAAqBA,OAAO2Z,UAAU,qBAAqB3Z,OAAO2Z,SAAS6F,eAAeuzH,EAAGx3I,OAAOC,UAAUS,eAAe+2I,EAAG,8VAA8VC,EACpgB,CAAC,EAAEC,EAAG,CAAC,EACiN,SAASvwI,EAAE4c,EAAE1L,EAAE3C,EAAEyD,EAAEhP,EAAEjJ,EAAE8pD,GAAGxlD,KAAKmyI,gBAAgB,IAAIt/H,GAAG,IAAIA,GAAG,IAAIA,EAAE7S,KAAKoyI,cAAcz+H,EAAE3T,KAAKqyI,mBAAmB1tI,EAAE3E,KAAKsyI,gBAAgBpiI,EAAElQ,KAAK8nH,aAAavpG,EAAEve,KAAKH,KAAKgT,EAAE7S,KAAKuyI,YAAY72I,EAAEsE,KAAKwyI,kBAAkBhtF,CAAC,CAAC,IAAIvY,EAAE,CAAC,EACpb,uIAAuIrpC,MAAM,KAAK6kB,SAAQ,SAASlK,GAAG0uB,EAAE1uB,GAAG,IAAI5c,EAAE4c,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,CAAC,gBAAgB,kBAAkB,CAAC,YAAY,SAAS,CAAC,UAAU,OAAO,CAAC,YAAY,eAAekK,SAAQ,SAASlK,GAAG,IAAI1L,EAAE0L,EAAE,GAAG0uB,EAAEp6B,GAAG,IAAIlR,EAAEkR,EAAE,GAAE,EAAG0L,EAAE,GAAG,MAAK,GAAG,EAAG,IAAG,CAAC,kBAAkB,YAAY,aAAa,SAASkK,SAAQ,SAASlK,GAAG0uB,EAAE1uB,GAAG,IAAI5c,EAAE4c,EAAE,GAAE,EAAGA,EAAEzX,cAAc,MAAK,GAAG,EAAG,IAC1e,CAAC,cAAc,4BAA4B,YAAY,iBAAiB2hB,SAAQ,SAASlK,GAAG0uB,EAAE1uB,GAAG,IAAI5c,EAAE4c,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,8OAA8O3a,MAAM,KAAK6kB,SAAQ,SAASlK,GAAG0uB,EAAE1uB,GAAG,IAAI5c,EAAE4c,EAAE,GAAE,EAAGA,EAAEzX,cAAc,MAAK,GAAG,EAAG,IACxb,CAAC,UAAU,WAAW,QAAQ,YAAY2hB,SAAQ,SAASlK,GAAG0uB,EAAE1uB,GAAG,IAAI5c,EAAE4c,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,YAAYkK,SAAQ,SAASlK,GAAG0uB,EAAE1uB,GAAG,IAAI5c,EAAE4c,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,OAAO,OAAO,OAAO,QAAQkK,SAAQ,SAASlK,GAAG0uB,EAAE1uB,GAAG,IAAI5c,EAAE4c,EAAE,GAAE,EAAGA,EAAE,MAAK,GAAG,EAAG,IAAG,CAAC,UAAU,SAASkK,SAAQ,SAASlK,GAAG0uB,EAAE1uB,GAAG,IAAI5c,EAAE4c,EAAE,GAAE,EAAGA,EAAEzX,cAAc,MAAK,GAAG,EAAG,IAAG,IAAI2rI,EAAG,gBAAgB,SAASC,EAAGn0H,GAAG,OAAOA,EAAE,GAAGvd,aAAa,CAIxZ,SAAS2xI,EAAGp0H,EAAE1L,EAAE3C,EAAEyD,GAAG,IAAIhP,EAAEsoC,EAAEhyC,eAAe4X,GAAGo6B,EAAEp6B,GAAG,MAAQ,OAAOlO,EAAE,IAAIA,EAAE9E,KAAK8T,KAAK,EAAEd,EAAE9Y,SAAS,MAAM8Y,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,IAAI,MAAMA,EAAE,MAP9I,SAAY0L,EAAE1L,EAAE3C,EAAEyD,GAAG,GAAG,OAAOd,GAAG,qBAAqBA,GADqE,SAAY0L,EAAE1L,EAAE3C,EAAEyD,GAAG,GAAG,OAAOzD,GAAG,IAAIA,EAAErQ,KAAK,OAAM,EAAG,cAAcgT,GAAG,IAAK,WAAW,IAAK,SAAS,OAAM,EAAG,IAAK,UAAU,OAAGc,IAAc,OAAOzD,GAASA,EAAEiiI,gBAAmD,WAAnC5zH,EAAEA,EAAEzX,cAAc5C,MAAM,EAAE,KAAsB,UAAUqa,GAAE,QAAQ,OAAM,EAAG,CAC/Tq0H,CAAGr0H,EAAE1L,EAAE3C,EAAEyD,GAAG,OAAM,EAAG,GAAGA,EAAE,OAAM,EAAG,GAAG,OAAOzD,EAAE,OAAOA,EAAErQ,MAAM,KAAK,EAAE,OAAOgT,EAAE,KAAK,EAAE,OAAM,IAAKA,EAAE,KAAK,EAAE,OAAOnS,MAAMmS,GAAG,KAAK,EAAE,OAAOnS,MAAMmS,IAAI,EAAEA,EAAE,OAAM,CAAE,CAOtEggI,CAAGhgI,EAAE3C,EAAEvL,EAAEgP,KAAKzD,EAAE,MAAMyD,GAAG,OAAOhP,EARxK,SAAY4Z,GAAG,QAAGwzH,EAAGr3I,KAAKw3I,EAAG3zH,KAAewzH,EAAGr3I,KAAKu3I,EAAG1zH,KAAeyzH,EAAG7zI,KAAKogB,GAAU2zH,EAAG3zH,IAAG,GAAG0zH,EAAG1zH,IAAG,GAAS,GAAE,CAQwDu0H,CAAGjgI,KAAK,OAAO3C,EAAEqO,EAAEw0H,gBAAgBlgI,GAAG0L,EAAE+vH,aAAaz7H,EAAE,GAAG3C,IAAIvL,EAAE2tI,gBAAgB/zH,EAAE5Z,EAAEmjH,cAAc,OAAO53G,EAAE,IAAIvL,EAAE9E,MAAQ,GAAGqQ,GAAG2C,EAAElO,EAAEytI,cAAcz+H,EAAEhP,EAAE0tI,mBAAmB,OAAOniI,EAAEqO,EAAEw0H,gBAAgBlgI,IAAa3C,EAAE,KAAXvL,EAAEA,EAAE9E,OAAc,IAAI8E,IAAG,IAAKuL,EAAE,GAAG,GAAGA,EAAEyD,EAAE4K,EAAEy0H,eAAer/H,EAAEd,EAAE3C,GAAGqO,EAAE+vH,aAAaz7H,EAAE3C,KAAI,CAHjd,0jCAA0jCtM,MAAM,KAAK6kB,SAAQ,SAASlK,GAAG,IAAI1L,EAAE0L,EAAE5a,QAAQ8uI,EACzmCC,GAAIzlG,EAAEp6B,GAAG,IAAIlR,EAAEkR,EAAE,GAAE,EAAG0L,EAAE,MAAK,GAAG,EAAG,IAAG,2EAA2E3a,MAAM,KAAK6kB,SAAQ,SAASlK,GAAG,IAAI1L,EAAE0L,EAAE5a,QAAQ8uI,EAAGC,GAAIzlG,EAAEp6B,GAAG,IAAIlR,EAAEkR,EAAE,GAAE,EAAG0L,EAAE,gCAA+B,GAAG,EAAG,IAAG,CAAC,WAAW,WAAW,aAAakK,SAAQ,SAASlK,GAAG,IAAI1L,EAAE0L,EAAE5a,QAAQ8uI,EAAGC,GAAIzlG,EAAEp6B,GAAG,IAAIlR,EAAEkR,EAAE,GAAE,EAAG0L,EAAE,wCAAuC,GAAG,EAAG,IAAG,CAAC,WAAW,eAAekK,SAAQ,SAASlK,GAAG0uB,EAAE1uB,GAAG,IAAI5c,EAAE4c,EAAE,GAAE,EAAGA,EAAEzX,cAAc,MAAK,GAAG,EAAG,IACldmmC,EAAEgmG,UAAU,IAAItxI,EAAE,YAAY,GAAE,EAAG,aAAa,gCAA+B,GAAG,GAAI,CAAC,MAAM,OAAO,SAAS,cAAc8mB,SAAQ,SAASlK,GAAG0uB,EAAE1uB,GAAG,IAAI5c,EAAE4c,EAAE,GAAE,EAAGA,EAAEzX,cAAc,MAAK,GAAG,EAAG,IAE5L,IAAIosI,EAAG1B,EAAG2B,mDAAmDC,EAAGpzG,OAAOulB,IAAI,iBAAiB8tF,EAAGrzG,OAAOulB,IAAI,gBAAgB+tF,EAAGtzG,OAAOulB,IAAI,kBAAkBguF,EAAGvzG,OAAOulB,IAAI,qBAAqBiuF,EAAGxzG,OAAOulB,IAAI,kBAAkBkuF,EAAGzzG,OAAOulB,IAAI,kBAAkBmuF,EAAG1zG,OAAOulB,IAAI,iBAAiBouF,EAAG3zG,OAAOulB,IAAI,qBAAqBquF,EAAG5zG,OAAOulB,IAAI,kBAAkBsuF,EAAG7zG,OAAOulB,IAAI,uBAAuBuuF,EAAG9zG,OAAOulB,IAAI,cAAcwuF,EAAG/zG,OAAOulB,IAAI,cAAcvlB,OAAOulB,IAAI,eAAevlB,OAAOulB,IAAI,0BACje,IAAIyuF,EAAGh0G,OAAOulB,IAAI,mBAAmBvlB,OAAOulB,IAAI,uBAAuBvlB,OAAOulB,IAAI,eAAevlB,OAAOulB,IAAI,wBAAwB,IAAI0uF,EAAGj0G,OAAOhL,SAAS,SAASk/G,EAAG31H,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAwC,oBAAnCA,EAAE01H,GAAI11H,EAAE01H,IAAK11H,EAAE,eAA0CA,EAAE,IAAI,CAAC,IAAoB41H,EAAhBxuF,EAAEprD,OAAOuzI,OAAU,SAASsG,EAAG71H,GAAG,QAAG,IAAS41H,EAAG,IAAI,MAAM9wI,OAAQ,CAAC,MAAM6M,GAAG,IAAI2C,EAAE3C,EAAEjN,MAAMk2D,OAAOj2D,MAAM,gBAAgBixI,EAAGthI,GAAGA,EAAE,IAAI,EAAE,CAAC,MAAM,KAAKshI,EAAG51H,CAAC,CAAC,IAAI81H,GAAG,EACzb,SAASC,EAAG/1H,EAAE1L,GAAG,IAAI0L,GAAG81H,EAAG,MAAM,GAAGA,GAAG,EAAG,IAAInkI,EAAE7M,MAAM+rB,kBAAkB/rB,MAAM+rB,uBAAkB,EAAO,IAAI,GAAGvc,EAAE,GAAGA,EAAE,WAAW,MAAMxP,OAAQ,EAAE9I,OAAOgsB,eAAe1T,EAAErY,UAAU,QAAQ,CAACq4B,IAAI,WAAW,MAAMxvB,OAAQ,IAAI,kBAAkB6tB,SAASA,QAAQ0C,UAAU,CAAC,IAAI1C,QAAQ0C,UAAU/gB,EAAE,GAAG,CAAC,MAAM4yC,GAAG,IAAI9xC,EAAE8xC,CAAC,CAACv0B,QAAQ0C,UAAUrV,EAAE,GAAG1L,EAAE,KAAK,CAAC,IAAIA,EAAEnY,MAAM,CAAC,MAAM+qD,GAAG9xC,EAAE8xC,CAAC,CAAClnC,EAAE7jB,KAAKmY,EAAErY,UAAU,KAAK,CAAC,IAAI,MAAM6I,OAAQ,CAAC,MAAMoiD,GAAG9xC,EAAE8xC,CAAC,CAAClnC,GAAG,CAAC,CAAC,MAAMknC,GAAG,GAAGA,GAAG9xC,GAAG,kBAAkB8xC,EAAExiD,MAAM,CAAC,IAAI,IAAI0B,EAAE8gD,EAAExiD,MAAMW,MAAM,MACnflI,EAAEiY,EAAE1Q,MAAMW,MAAM,MAAM4hD,EAAE7gD,EAAE5K,OAAO,EAAEwyC,EAAE7wC,EAAE3B,OAAO,EAAE,GAAGyrD,GAAG,GAAGjZ,GAAG5nC,EAAE6gD,KAAK9pD,EAAE6wC,IAAIA,IAAI,KAAK,GAAGiZ,GAAG,GAAGjZ,EAAEiZ,IAAIjZ,IAAI,GAAG5nC,EAAE6gD,KAAK9pD,EAAE6wC,GAAG,CAAC,GAAG,IAAIiZ,GAAG,IAAIjZ,EAAG,MAAMiZ,IAAQ,IAAJjZ,GAAS5nC,EAAE6gD,KAAK9pD,EAAE6wC,GAAG,CAAC,IAAI1vC,EAAE,KAAK8H,EAAE6gD,GAAG7hD,QAAQ,WAAW,QAA6F,OAArF4a,EAAE0lC,aAAapnD,EAAEktB,SAAS,iBAAiBltB,EAAEA,EAAE8G,QAAQ,cAAc4a,EAAE0lC,cAAqBpnD,CAAC,QAAO,GAAG2oD,GAAG,GAAGjZ,GAAG,KAAK,CAAC,CAAC,CAAC,QAAQ8nG,GAAG,EAAGhxI,MAAM+rB,kBAAkBlf,CAAC,CAAC,OAAOqO,EAAEA,EAAEA,EAAE0lC,aAAa1lC,EAAE9f,KAAK,IAAI21I,EAAG71H,GAAG,EAAE,CAC9Z,SAASg2H,EAAGh2H,GAAG,OAAOA,EAAEwM,KAAK,KAAK,EAAE,OAAOqpH,EAAG71H,EAAE1e,MAAM,KAAK,GAAG,OAAOu0I,EAAG,QAAQ,KAAK,GAAG,OAAOA,EAAG,YAAY,KAAK,GAAG,OAAOA,EAAG,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,OAAO71H,EAAE+1H,EAAG/1H,EAAE1e,MAAK,GAAM,KAAK,GAAG,OAAO0e,EAAE+1H,EAAG/1H,EAAE1e,KAAKgkB,QAAO,GAAM,KAAK,EAAE,OAAOtF,EAAE+1H,EAAG/1H,EAAE1e,MAAK,GAAM,QAAQ,MAAM,GAAG,CACxR,SAAS20I,EAAGj2H,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,oBAAoBA,EAAE,OAAOA,EAAE0lC,aAAa1lC,EAAE9f,MAAM,KAAK,GAAG,kBAAkB8f,EAAE,OAAOA,EAAE,OAAOA,GAAG,KAAK+0H,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,SAAS,KAAKG,EAAG,MAAM,WAAW,KAAKD,EAAG,MAAM,aAAa,KAAKK,EAAG,MAAM,WAAW,KAAKC,EAAG,MAAM,eAAe,GAAG,kBAAkBt1H,EAAE,OAAOA,EAAEmnC,UAAU,KAAKguF,EAAG,OAAOn1H,EAAE0lC,aAAa,WAAW,YAAY,KAAKwvF,EAAG,OAAOl1H,EAAE7L,SAASuxC,aAAa,WAAW,YAAY,KAAK0vF,EAAG,IAAI9gI,EAAE0L,EAAEsF,OAC7Z,OADoatF,EAAEA,EAAE0lC,eACnd1lC,EAAE,MADieA,EAAE1L,EAAEoxC,aAClfpxC,EAAEpU,MAAM,IAAY,cAAc8f,EAAE,IAAI,cAAqBA,EAAE,KAAKu1H,EAAG,OAA6B,QAAtBjhI,EAAE0L,EAAE0lC,aAAa,MAAcpxC,EAAE2hI,EAAGj2H,EAAE1e,OAAO,OAAO,KAAKk0I,EAAGlhI,EAAE0L,EAAEk2H,SAASl2H,EAAEA,EAAEm2H,MAAM,IAAI,OAAOF,EAAGj2H,EAAE1L,GAAG,CAAC,MAAM3C,GAAG,EAAE,OAAO,IAAI,CAC3M,SAASykI,EAAGp2H,GAAG,IAAI1L,EAAE0L,EAAE1e,KAAK,OAAO0e,EAAEwM,KAAK,KAAK,GAAG,MAAM,QAAQ,KAAK,EAAE,OAAOlY,EAAEoxC,aAAa,WAAW,YAAY,KAAK,GAAG,OAAOpxC,EAAEH,SAASuxC,aAAa,WAAW,YAAY,KAAK,GAAG,MAAM,qBAAqB,KAAK,GAAG,OAAkB1lC,GAAXA,EAAE1L,EAAEgR,QAAWogC,aAAa1lC,EAAE9f,MAAM,GAAGoU,EAAEoxC,cAAc,KAAK1lC,EAAE,cAAcA,EAAE,IAAI,cAAc,KAAK,EAAE,MAAM,WAAW,KAAK,EAAE,OAAO1L,EAAE,KAAK,EAAE,MAAM,SAAS,KAAK,EAAE,MAAM,OAAO,KAAK,EAAE,MAAM,OAAO,KAAK,GAAG,OAAO2hI,EAAG3hI,GAAG,KAAK,EAAE,OAAOA,IAAI0gI,EAAG,aAAa,OAAO,KAAK,GAAG,MAAM,YACtf,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,QAAQ,KAAK,GAAG,MAAM,WAAW,KAAK,GAAG,MAAM,eAAe,KAAK,GAAG,MAAM,gBAAgB,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,GAAG,oBAAoB1gI,EAAE,OAAOA,EAAEoxC,aAAapxC,EAAEpU,MAAM,KAAK,GAAG,kBAAkBoU,EAAE,OAAOA,EAAE,OAAO,IAAI,CAAC,SAAS+hI,EAAGr2H,GAAG,cAAcA,GAAG,IAAK,UAAU,IAAK,SAAS,IAAK,SAAS,IAAK,YAAqB,IAAK,SAAS,OAAOA,EAAE,QAAQ,MAAM,GAAG,CACra,SAASs2H,EAAGt2H,GAAG,IAAI1L,EAAE0L,EAAE1e,KAAK,OAAO0e,EAAEA,EAAEu2H,WAAW,UAAUv2H,EAAEzX,gBAAgB,aAAa+L,GAAG,UAAUA,EAAE,CAEtF,SAASkiI,EAAGx2H,GAAGA,EAAEy2H,gBAAgBz2H,EAAEy2H,cADvD,SAAYz2H,GAAG,IAAI1L,EAAEgiI,EAAGt2H,GAAG,UAAU,QAAQrO,EAAE3V,OAAO+wB,yBAAyB/M,EAAEkN,YAAYjxB,UAAUqY,GAAGc,EAAE,GAAG4K,EAAE1L,GAAG,IAAI0L,EAAEtjB,eAAe4X,IAAI,qBAAqB3C,GAAG,oBAAoBA,EAAE/G,KAAK,oBAAoB+G,EAAE2iB,IAAI,CAAC,IAAIluB,EAAEuL,EAAE/G,IAAIzN,EAAEwU,EAAE2iB,IAAiL,OAA7Kt4B,OAAOgsB,eAAehI,EAAE1L,EAAE,CAACkZ,cAAa,EAAG5iB,IAAI,WAAW,OAAOxE,EAAEjK,KAAKsF,KAAK,EAAE6yB,IAAI,SAAStU,GAAG5K,EAAE,GAAG4K,EAAE7iB,EAAEhB,KAAKsF,KAAKue,EAAE,IAAIhkB,OAAOgsB,eAAehI,EAAE1L,EAAE,CAACiZ,WAAW5b,EAAE4b,aAAmB,CAACmpH,SAAS,WAAW,OAAOthI,CAAC,EAAEuhI,SAAS,SAAS32H,GAAG5K,EAAE,GAAG4K,CAAC,EAAE42H,aAAa,WAAW52H,EAAEy2H,cACxf,YAAYz2H,EAAE1L,EAAE,EAAE,CAAC,CAAkDuiI,CAAG72H,GAAG,CAAC,SAAS82H,EAAG92H,GAAG,IAAIA,EAAE,OAAM,EAAG,IAAI1L,EAAE0L,EAAEy2H,cAAc,IAAIniI,EAAE,OAAM,EAAG,IAAI3C,EAAE2C,EAAEoiI,WAAethI,EAAE,GAAqD,OAAlD4K,IAAI5K,EAAEkhI,EAAGt2H,GAAGA,EAAE+2H,QAAQ,OAAO,QAAQ/2H,EAAEhjB,QAAOgjB,EAAE5K,KAAazD,IAAG2C,EAAEqiI,SAAS32H,IAAG,EAAM,CAAC,SAASg3H,EAAGh3H,GAAwD,GAAG,qBAAxDA,EAAEA,IAAI,qBAAqB5F,SAASA,cAAS,IAAkC,OAAO,KAAK,IAAI,OAAO4F,EAAEi3H,eAAej3H,EAAE1I,IAAI,CAAC,MAAMhD,GAAG,OAAO0L,EAAE1I,IAAI,CAAC,CACpa,SAAS4/H,EAAGl3H,EAAE1L,GAAG,IAAI3C,EAAE2C,EAAEyiI,QAAQ,OAAO3vF,EAAE,CAAC,EAAE9yC,EAAE,CAAC6iI,oBAAe,EAAOx5I,kBAAa,EAAOX,WAAM,EAAO+5I,QAAQ,MAAMplI,EAAEA,EAAEqO,EAAEo3H,cAAcC,gBAAgB,CAAC,SAASC,EAAGt3H,EAAE1L,GAAG,IAAI3C,EAAE,MAAM2C,EAAE3W,aAAa,GAAG2W,EAAE3W,aAAayX,EAAE,MAAMd,EAAEyiI,QAAQziI,EAAEyiI,QAAQziI,EAAE6iI,eAAexlI,EAAE0kI,EAAG,MAAM/hI,EAAEtX,MAAMsX,EAAEtX,MAAM2U,GAAGqO,EAAEo3H,cAAc,CAACC,eAAejiI,EAAEmiI,aAAa5lI,EAAE6lI,WAAW,aAAaljI,EAAEhT,MAAM,UAAUgT,EAAEhT,KAAK,MAAMgT,EAAEyiI,QAAQ,MAAMziI,EAAEtX,MAAM,CAAC,SAASy6I,EAAGz3H,EAAE1L,GAAe,OAAZA,EAAEA,EAAEyiI,UAAiB3C,EAAGp0H,EAAE,UAAU1L,GAAE,EAAG,CAC9d,SAASojI,EAAG13H,EAAE1L,GAAGmjI,EAAGz3H,EAAE1L,GAAG,IAAI3C,EAAE0kI,EAAG/hI,EAAEtX,OAAOoY,EAAEd,EAAEhT,KAAK,GAAG,MAAMqQ,EAAK,WAAWyD,GAAM,IAAIzD,GAAG,KAAKqO,EAAEhjB,OAAOgjB,EAAEhjB,OAAO2U,KAAEqO,EAAEhjB,MAAM,GAAG2U,GAAOqO,EAAEhjB,QAAQ,GAAG2U,IAAIqO,EAAEhjB,MAAM,GAAG2U,QAAQ,GAAG,WAAWyD,GAAG,UAAUA,EAA8B,YAA3B4K,EAAEw0H,gBAAgB,SAAgBlgI,EAAE5X,eAAe,SAASqT,GAAGiQ,EAAE1L,EAAEhT,KAAKqQ,GAAG2C,EAAE5X,eAAe,iBAAiBqT,GAAGiQ,EAAE1L,EAAEhT,KAAK+0I,EAAG/hI,EAAE3W,eAAe,MAAM2W,EAAEyiI,SAAS,MAAMziI,EAAE6iI,iBAAiBn3H,EAAEm3H,iBAAiB7iI,EAAE6iI,eAAe,CACla,SAASQ,EAAG33H,EAAE1L,EAAE3C,GAAG,GAAG2C,EAAE5X,eAAe,UAAU4X,EAAE5X,eAAe,gBAAgB,CAAC,IAAI0Y,EAAEd,EAAEhT,KAAK,KAAK,WAAW8T,GAAG,UAAUA,QAAG,IAASd,EAAEtX,OAAO,OAAOsX,EAAEtX,OAAO,OAAOsX,EAAE,GAAG0L,EAAEo3H,cAAcG,aAAa5lI,GAAG2C,IAAI0L,EAAEhjB,QAAQgjB,EAAEhjB,MAAMsX,GAAG0L,EAAEriB,aAAa2W,CAAC,CAAU,MAAT3C,EAAEqO,EAAE9f,QAAc8f,EAAE9f,KAAK,IAAI8f,EAAEm3H,iBAAiBn3H,EAAEo3H,cAAcC,eAAe,KAAK1lI,IAAIqO,EAAE9f,KAAKyR,EAAE,CACzV,SAAS5B,GAAGiQ,EAAE1L,EAAE3C,GAAM,WAAW2C,GAAG0iI,EAAGh3H,EAAE43H,iBAAiB53H,IAAE,MAAMrO,EAAEqO,EAAEriB,aAAa,GAAGqiB,EAAEo3H,cAAcG,aAAav3H,EAAEriB,eAAe,GAAGgU,IAAIqO,EAAEriB,aAAa,GAAGgU,GAAE,CAAC,IAAIkmI,GAAG1sI,MAAMkf,QAC7K,SAASytH,GAAG93H,EAAE1L,EAAE3C,EAAEyD,GAAe,GAAZ4K,EAAEA,EAAE6B,QAAWvN,EAAE,CAACA,EAAE,CAAC,EAAE,IAAI,IAAIlO,EAAE,EAAEA,EAAEuL,EAAEnW,OAAO4K,IAAIkO,EAAE,IAAI3C,EAAEvL,KAAI,EAAG,IAAIuL,EAAE,EAAEA,EAAEqO,EAAExkB,OAAOmW,IAAIvL,EAAEkO,EAAE5X,eAAe,IAAIsjB,EAAErO,GAAG3U,OAAOgjB,EAAErO,GAAGomI,WAAW3xI,IAAI4Z,EAAErO,GAAGomI,SAAS3xI,GAAGA,GAAGgP,IAAI4K,EAAErO,GAAGqmI,iBAAgB,EAAG,KAAK,CAAmB,IAAlBrmI,EAAE,GAAG0kI,EAAG1kI,GAAG2C,EAAE,KAASlO,EAAE,EAAEA,EAAE4Z,EAAExkB,OAAO4K,IAAI,CAAC,GAAG4Z,EAAE5Z,GAAGpJ,QAAQ2U,EAAiD,OAA9CqO,EAAE5Z,GAAG2xI,UAAS,OAAG3iI,IAAI4K,EAAE5Z,GAAG4xI,iBAAgB,IAAW,OAAO1jI,GAAG0L,EAAE5Z,GAAG6xI,WAAW3jI,EAAE0L,EAAE5Z,GAAG,CAAC,OAAOkO,IAAIA,EAAEyjI,UAAS,EAAG,CAAC,CACxY,SAASG,GAAGl4H,EAAE1L,GAAG,GAAG,MAAMA,EAAE6jI,wBAAwB,MAAMrzI,MAAMhF,EAAE,KAAK,OAAOsnD,EAAE,CAAC,EAAE9yC,EAAE,CAACtX,WAAM,EAAOW,kBAAa,EAAO8nB,SAAS,GAAGzF,EAAEo3H,cAAcG,cAAc,CAAC,SAASa,GAAGp4H,EAAE1L,GAAG,IAAI3C,EAAE2C,EAAEtX,MAAM,GAAG,MAAM2U,EAAE,CAA+B,GAA9BA,EAAE2C,EAAEmR,SAASnR,EAAEA,EAAE3W,aAAgB,MAAMgU,EAAE,CAAC,GAAG,MAAM2C,EAAE,MAAMxP,MAAMhF,EAAE,KAAK,GAAG+3I,GAAGlmI,GAAG,CAAC,GAAG,EAAEA,EAAEnW,OAAO,MAAMsJ,MAAMhF,EAAE,KAAK6R,EAAEA,EAAE,EAAE,CAAC2C,EAAE3C,CAAC,CAAC,MAAM2C,IAAIA,EAAE,IAAI3C,EAAE2C,CAAC,CAAC0L,EAAEo3H,cAAc,CAACG,aAAalB,EAAG1kI,GAAG,CACnY,SAAS0mI,GAAGr4H,EAAE1L,GAAG,IAAI3C,EAAE0kI,EAAG/hI,EAAEtX,OAAOoY,EAAEihI,EAAG/hI,EAAE3W,cAAc,MAAMgU,KAAIA,EAAE,GAAGA,KAAMqO,EAAEhjB,QAAQgjB,EAAEhjB,MAAM2U,GAAG,MAAM2C,EAAE3W,cAAcqiB,EAAEriB,eAAegU,IAAIqO,EAAEriB,aAAagU,IAAI,MAAMyD,IAAI4K,EAAEriB,aAAa,GAAGyX,EAAE,CAAC,SAASkjI,GAAGt4H,GAAG,IAAI1L,EAAE0L,EAAEnB,YAAYvK,IAAI0L,EAAEo3H,cAAcG,cAAc,KAAKjjI,GAAG,OAAOA,IAAI0L,EAAEhjB,MAAMsX,EAAE,CAAC,SAASikI,GAAGv4H,GAAG,OAAOA,GAAG,IAAK,MAAM,MAAM,6BAA6B,IAAK,OAAO,MAAM,qCAAqC,QAAQ,MAAM,+BAA+B,CAC7c,SAASw4H,GAAGx4H,EAAE1L,GAAG,OAAO,MAAM0L,GAAG,iCAAiCA,EAAEu4H,GAAGjkI,GAAG,+BAA+B0L,GAAG,kBAAkB1L,EAAE,+BAA+B0L,CAAC,CAChK,IAAIy4H,GAAez4H,GAAZ04H,IAAY14H,GAAsJ,SAASA,EAAE1L,GAAG,GAAG,+BAA+B0L,EAAE24H,cAAc,cAAc34H,EAAEA,EAAEzC,UAAUjJ,MAAM,CAA2F,KAA1FmkI,GAAGA,IAAIr+H,SAAS6F,cAAc,QAAU1C,UAAU,QAAQjJ,EAAEsqB,UAAU1iC,WAAW,SAAaoY,EAAEmkI,GAAGG,WAAW54H,EAAE44H,YAAY54H,EAAEgjB,YAAYhjB,EAAE44H,YAAY,KAAKtkI,EAAEskI,YAAY54H,EAAE4c,YAAYtoB,EAAEskI,WAAW,CAAC,EAAvb,qBAAqBC,OAAOA,MAAMC,wBAAwB,SAASxkI,EAAE3C,EAAEyD,EAAEhP,GAAGyyI,MAAMC,yBAAwB,WAAW,OAAO94H,GAAE1L,EAAE3C,EAAM,GAAE,EAAEqO,IACtK,SAAS+4H,GAAG/4H,EAAE1L,GAAG,GAAGA,EAAE,CAAC,IAAI3C,EAAEqO,EAAE44H,WAAW,GAAGjnI,GAAGA,IAAIqO,EAAEg5H,WAAW,IAAIrnI,EAAEsnI,SAAwB,YAAdtnI,EAAEunI,UAAU5kI,EAAS,CAAC0L,EAAEnB,YAAYvK,CAAC,CACtH,IAAI6kI,GAAG,CAACC,yBAAwB,EAAGC,aAAY,EAAGC,mBAAkB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,SAAQ,EAAGC,cAAa,EAAGC,iBAAgB,EAAGC,aAAY,EAAGC,SAAQ,EAAGC,MAAK,EAAGC,UAAS,EAAGC,cAAa,EAAGC,YAAW,EAAGC,cAAa,EAAGC,WAAU,EAAGC,UAAS,EAAGC,SAAQ,EAAGC,YAAW,EAAGC,aAAY,EAAGC,cAAa,EAAGC,YAAW,EAAGC,eAAc,EAAGC,gBAAe,EAAGC,iBAAgB,EAAGC,YAAW,EAAGC,WAAU,EAAGC,YAAW,EAAGC,SAAQ,EAAGC,OAAM,EAAGC,SAAQ,EAAGC,SAAQ,EAAGC,QAAO,EAAGC,QAAO,EAClfC,MAAK,EAAGC,aAAY,EAAGC,cAAa,EAAGC,aAAY,EAAGC,iBAAgB,EAAGC,kBAAiB,EAAGC,kBAAiB,EAAGC,eAAc,EAAGC,aAAY,GAAIC,GAAG,CAAC,SAAS,KAAK,MAAM,KAA6H,SAASC,GAAGh8H,EAAE1L,EAAE3C,GAAG,OAAO,MAAM2C,GAAG,mBAAmBA,GAAG,KAAKA,EAAE,GAAG3C,GAAG,kBAAkB2C,GAAG,IAAIA,GAAG6kI,GAAGz8I,eAAesjB,IAAIm5H,GAAGn5H,IAAI,GAAG1L,GAAGsmD,OAAOtmD,EAAE,IAAI,CACzb,SAAS2nI,GAAGj8H,EAAE1L,GAAa,IAAI,IAAI3C,KAAlBqO,EAAEA,EAAE0c,MAAmBpoB,EAAE,GAAGA,EAAE5X,eAAeiV,GAAG,CAAC,IAAIyD,EAAE,IAAIzD,EAAE1M,QAAQ,MAAMmB,EAAE41I,GAAGrqI,EAAE2C,EAAE3C,GAAGyD,GAAG,UAAUzD,IAAIA,EAAE,YAAYyD,EAAE4K,EAAEyyC,YAAY9gD,EAAEvL,GAAG4Z,EAAErO,GAAGvL,CAAC,CAAC,CADYpK,OAAO8wB,KAAKqsH,IAAIjvH,SAAQ,SAASlK,GAAG+7H,GAAG7xH,SAAQ,SAAS5V,GAAGA,EAAEA,EAAE0L,EAAExd,OAAO,GAAGC,cAAcud,EAAEtd,UAAU,GAAGy2I,GAAG7kI,GAAG6kI,GAAGn5H,EAAE,GAAE,IAChI,IAAIk8H,GAAG90F,EAAE,CAAC+0F,UAAS,GAAI,CAACC,MAAK,EAAGvqI,MAAK,EAAGwqI,IAAG,EAAGC,KAAI,EAAGC,OAAM,EAAGC,IAAG,EAAGC,KAAI,EAAG/9G,OAAM,EAAGg+G,QAAO,EAAGC,MAAK,EAAGC,MAAK,EAAGryB,OAAM,EAAGjqH,QAAO,EAAGm1D,OAAM,EAAGonF,KAAI,IAClT,SAASC,GAAG98H,EAAE1L,GAAG,GAAGA,EAAE,CAAC,GAAG4nI,GAAGl8H,KAAK,MAAM1L,EAAEmR,UAAU,MAAMnR,EAAE6jI,yBAAyB,MAAMrzI,MAAMhF,EAAE,IAAIkgB,IAAI,GAAG,MAAM1L,EAAE6jI,wBAAwB,CAAC,GAAG,MAAM7jI,EAAEmR,SAAS,MAAM3gB,MAAMhF,EAAE,KAAK,GAAG,kBAAkBwU,EAAE6jI,2BAA2B,WAAW7jI,EAAE6jI,yBAAyB,MAAMrzI,MAAMhF,EAAE,IAAK,CAAC,GAAG,MAAMwU,EAAEooB,OAAO,kBAAkBpoB,EAAEooB,MAAM,MAAM53B,MAAMhF,EAAE,IAAK,CAAC,CAClW,SAASi9I,GAAG/8H,EAAE1L,GAAG,IAAI,IAAI0L,EAAE/a,QAAQ,KAAK,MAAM,kBAAkBqP,EAAE0oI,GAAG,OAAOh9H,GAAG,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,YAAY,IAAK,gBAAgB,IAAK,gBAAgB,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,gBAAgB,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,IAAIi9H,GAAG,KAAK,SAASC,GAAGl9H,GAA6F,OAA1FA,EAAEA,EAAE5f,QAAQ4f,EAAEm9H,YAAY18I,QAAS28I,0BAA0Bp9H,EAAEA,EAAEo9H,yBAAgC,IAAIp9H,EAAEi5H,SAASj5H,EAAEd,WAAWc,CAAC,CAAC,IAAIq9H,GAAG,KAAKC,GAAG,KAAKC,GAAG,KACpc,SAASC,GAAGx9H,GAAG,GAAGA,EAAEy9H,GAAGz9H,GAAG,CAAC,GAAG,oBAAoBq9H,GAAG,MAAMv4I,MAAMhF,EAAE,MAAM,IAAIwU,EAAE0L,EAAE09H,UAAUppI,IAAIA,EAAEqpI,GAAGrpI,GAAG+oI,GAAGr9H,EAAE09H,UAAU19H,EAAE1e,KAAKgT,GAAG,CAAC,CAAC,SAASspI,GAAG59H,GAAGs9H,GAAGC,GAAGA,GAAG5gJ,KAAKqjB,GAAGu9H,GAAG,CAACv9H,GAAGs9H,GAAGt9H,CAAC,CAAC,SAAS69H,KAAK,GAAGP,GAAG,CAAC,IAAIt9H,EAAEs9H,GAAGhpI,EAAEipI,GAAoB,GAAjBA,GAAGD,GAAG,KAAKE,GAAGx9H,GAAM1L,EAAE,IAAI0L,EAAE,EAAEA,EAAE1L,EAAE9Y,OAAOwkB,IAAIw9H,GAAGlpI,EAAE0L,GAAG,CAAC,CAAC,SAAS89H,GAAG99H,EAAE1L,GAAG,OAAO0L,EAAE1L,EAAE,CAAC,SAASypI,KAAK,CAAC,IAAIC,IAAG,EAAG,SAASC,GAAGj+H,EAAE1L,EAAE3C,GAAG,GAAGqsI,GAAG,OAAOh+H,EAAE1L,EAAE3C,GAAGqsI,IAAG,EAAG,IAAI,OAAOF,GAAG99H,EAAE1L,EAAE3C,EAAE,CAAC,QAAWqsI,IAAG,GAAG,OAAOV,IAAI,OAAOC,MAAGQ,KAAKF,KAAI,CAAC,CAChb,SAASK,GAAGl+H,EAAE1L,GAAG,IAAI3C,EAAEqO,EAAE09H,UAAU,GAAG,OAAO/rI,EAAE,OAAO,KAAK,IAAIyD,EAAEuoI,GAAGhsI,GAAG,GAAG,OAAOyD,EAAE,OAAO,KAAKzD,EAAEyD,EAAEd,GAAG0L,EAAE,OAAO1L,GAAG,IAAK,UAAU,IAAK,iBAAiB,IAAK,gBAAgB,IAAK,uBAAuB,IAAK,cAAc,IAAK,qBAAqB,IAAK,cAAc,IAAK,qBAAqB,IAAK,YAAY,IAAK,mBAAmB,IAAK,gBAAgBc,GAAGA,EAAE6iI,YAAqB7iI,IAAI,YAAb4K,EAAEA,EAAE1e,OAAuB,UAAU0e,GAAG,WAAWA,GAAG,aAAaA,IAAIA,GAAG5K,EAAE,MAAM4K,EAAE,QAAQA,GAAE,EAAG,GAAGA,EAAE,OAAO,KAAK,GAAGrO,GAAG,oBACleA,EAAE,MAAM7M,MAAMhF,EAAE,IAAIwU,SAAS3C,IAAI,OAAOA,CAAC,CAAC,IAAIwsI,IAAG,EAAG,GAAG5K,EAAG,IAAI,IAAI6K,GAAG,CAAC,EAAEpiJ,OAAOgsB,eAAeo2H,GAAG,UAAU,CAACxzI,IAAI,WAAWuzI,IAAG,CAAE,IAAI19I,OAAO2d,iBAAiB,OAAOggI,GAAGA,IAAI39I,OAAO8gB,oBAAoB,OAAO68H,GAAGA,GAAG,CAAC,MAAMp+H,IAAGm+H,IAAG,CAAE,CAAC,SAASE,GAAGr+H,EAAE1L,EAAE3C,EAAEyD,EAAEhP,EAAEjJ,EAAE8pD,EAAEjZ,EAAE1vC,GAAG,IAAI4oD,EAAE/7C,MAAMlP,UAAU0J,MAAMxJ,KAAKkE,UAAU,GAAG,IAAIiU,EAAE/E,MAAMoC,EAAEu1C,EAAE,CAAC,MAAMljC,GAAGviB,KAAKlD,QAAQylB,EAAE,CAAC,CAAC,IAAIs6H,IAAG,EAAGC,GAAG,KAAKC,IAAG,EAAGC,GAAG,KAAKC,GAAG,CAACngJ,QAAQ,SAASyhB,GAAGs+H,IAAG,EAAGC,GAAGv+H,CAAC,GAAG,SAAS2+H,GAAG3+H,EAAE1L,EAAE3C,EAAEyD,EAAEhP,EAAEjJ,EAAE8pD,EAAEjZ,EAAE1vC,GAAGggJ,IAAG,EAAGC,GAAG,KAAKF,GAAG9uI,MAAMmvI,GAAGr+I,UAAU,CACjW,SAASu+I,GAAG5+H,GAAG,IAAI1L,EAAE0L,EAAErO,EAAEqO,EAAE,GAAGA,EAAE6+H,UAAU,KAAKvqI,EAAEwqI,QAAQxqI,EAAEA,EAAEwqI,WAAW,CAAC9+H,EAAE1L,EAAE,GAAO,KAAa,MAAjBA,EAAE0L,GAASqhC,SAAc1vC,EAAE2C,EAAEwqI,QAAQ9+H,EAAE1L,EAAEwqI,aAAa9+H,EAAE,CAAC,OAAO,IAAI1L,EAAEkY,IAAI7a,EAAE,IAAI,CAAC,SAASotI,GAAG/+H,GAAG,GAAG,KAAKA,EAAEwM,IAAI,CAAC,IAAIlY,EAAE0L,EAAEg/H,cAAsE,GAAxD,OAAO1qI,IAAkB,QAAd0L,EAAEA,EAAE6+H,aAAqBvqI,EAAE0L,EAAEg/H,gBAAmB,OAAO1qI,EAAE,OAAOA,EAAE2qI,UAAU,CAAC,OAAO,IAAI,CAAC,SAASC,GAAGl/H,GAAG,GAAG4+H,GAAG5+H,KAAKA,EAAE,MAAMlb,MAAMhF,EAAE,KAAM,CAE1S,SAASq/I,GAAGn/H,GAAW,OAAO,QAAfA,EADtN,SAAYA,GAAG,IAAI1L,EAAE0L,EAAE6+H,UAAU,IAAIvqI,EAAE,CAAS,GAAG,QAAXA,EAAEsqI,GAAG5+H,IAAe,MAAMlb,MAAMhF,EAAE,MAAM,OAAOwU,IAAI0L,EAAE,KAAKA,CAAC,CAAC,IAAI,IAAIrO,EAAEqO,EAAE5K,EAAEd,IAAI,CAAC,IAAIlO,EAAEuL,EAAEmtI,OAAO,GAAG,OAAO14I,EAAE,MAAM,IAAIjJ,EAAEiJ,EAAEy4I,UAAU,GAAG,OAAO1hJ,EAAE,CAAY,GAAG,QAAdiY,EAAEhP,EAAE04I,QAAmB,CAACntI,EAAEyD,EAAE,QAAQ,CAAC,KAAK,CAAC,GAAGhP,EAAEg5I,QAAQjiJ,EAAEiiJ,MAAM,CAAC,IAAIjiJ,EAAEiJ,EAAEg5I,MAAMjiJ,GAAG,CAAC,GAAGA,IAAIwU,EAAE,OAAOutI,GAAG94I,GAAG4Z,EAAE,GAAG7iB,IAAIiY,EAAE,OAAO8pI,GAAG94I,GAAGkO,EAAEnX,EAAEA,EAAEkiJ,OAAO,CAAC,MAAMv6I,MAAMhF,EAAE,KAAM,CAAC,GAAG6R,EAAEmtI,SAAS1pI,EAAE0pI,OAAOntI,EAAEvL,EAAEgP,EAAEjY,MAAM,CAAC,IAAI,IAAI8pD,GAAE,EAAGjZ,EAAE5nC,EAAEg5I,MAAMpxG,GAAG,CAAC,GAAGA,IAAIr8B,EAAE,CAACs1C,GAAE,EAAGt1C,EAAEvL,EAAEgP,EAAEjY,EAAE,KAAK,CAAC,GAAG6wC,IAAI54B,EAAE,CAAC6xC,GAAE,EAAG7xC,EAAEhP,EAAEuL,EAAExU,EAAE,KAAK,CAAC6wC,EAAEA,EAAEqxG,OAAO,CAAC,IAAIp4F,EAAE,CAAC,IAAIjZ,EAAE7wC,EAAEiiJ,MAAMpxG,GAAG,CAAC,GAAGA,IAC5fr8B,EAAE,CAACs1C,GAAE,EAAGt1C,EAAExU,EAAEiY,EAAEhP,EAAE,KAAK,CAAC,GAAG4nC,IAAI54B,EAAE,CAAC6xC,GAAE,EAAG7xC,EAAEjY,EAAEwU,EAAEvL,EAAE,KAAK,CAAC4nC,EAAEA,EAAEqxG,OAAO,CAAC,IAAIp4F,EAAE,MAAMniD,MAAMhF,EAAE,KAAM,CAAC,CAAC,GAAG6R,EAAEktI,YAAYzpI,EAAE,MAAMtQ,MAAMhF,EAAE,KAAM,CAAC,GAAG,IAAI6R,EAAE6a,IAAI,MAAM1nB,MAAMhF,EAAE,MAAM,OAAO6R,EAAE+rI,UAAU//G,UAAUhsB,EAAEqO,EAAE1L,CAAC,CAAkBgrI,CAAGt/H,IAAmBu/H,GAAGv/H,GAAG,IAAI,CAAC,SAASu/H,GAAGv/H,GAAG,GAAG,IAAIA,EAAEwM,KAAK,IAAIxM,EAAEwM,IAAI,OAAOxM,EAAE,IAAIA,EAAEA,EAAEo/H,MAAM,OAAOp/H,GAAG,CAAC,IAAI1L,EAAEirI,GAAGv/H,GAAG,GAAG,OAAO1L,EAAE,OAAOA,EAAE0L,EAAEA,EAAEq/H,OAAO,CAAC,OAAO,IAAI,CAC1X,IAAIG,GAAGtM,EAAGuM,0BAA0BC,GAAGxM,EAAGyM,wBAAwBC,GAAG1M,EAAG2M,qBAAqBC,GAAG5M,EAAG6M,sBAAsBhyG,GAAEmlG,EAAG8M,aAAaC,GAAG/M,EAAGgN,iCAAiCC,GAAGjN,EAAGkN,2BAA2BC,GAAGnN,EAAGoN,8BAA8BC,GAAGrN,EAAGsN,wBAAwBC,GAAGvN,EAAGwN,qBAAqBC,GAAGzN,EAAG0N,sBAAsBC,GAAG,KAAKC,GAAG,KACvV,IAAIC,GAAGhvI,KAAKivI,MAAMjvI,KAAKivI,MAAiC,SAAYhhI,GAAU,OAAPA,KAAK,EAAS,IAAIA,EAAE,GAAG,IAAIihI,GAAGjhI,GAAGkhI,GAAG,GAAG,CAAC,EAA/ED,GAAGlvI,KAAK9Q,IAAIigJ,GAAGnvI,KAAKovI,IAA4D,IAAIC,GAAG,GAAGC,GAAG,QAC7H,SAASC,GAAGthI,GAAG,OAAOA,GAAGA,GAAG,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,OAAO,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAS,QAAFA,EAAU,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAAS,OAAS,UAAFA,EAAY,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,UAAU,OAAO,UAAU,KAAK,WAAW,OAAO,WACzgB,QAAQ,OAAOA,EAAE,CAAC,SAASuhI,GAAGvhI,EAAE1L,GAAG,IAAI3C,EAAEqO,EAAEwhI,aAAa,GAAG,IAAI7vI,EAAE,OAAO,EAAE,IAAIyD,EAAE,EAAEhP,EAAE4Z,EAAEyhI,eAAetkJ,EAAE6iB,EAAE0hI,YAAYz6F,EAAI,UAAFt1C,EAAY,GAAG,IAAIs1C,EAAE,CAAC,IAAIjZ,EAAEiZ,GAAG7gD,EAAE,IAAI4nC,EAAE54B,EAAEksI,GAAGtzG,GAAS,KAAL7wC,GAAG8pD,KAAU7xC,EAAEksI,GAAGnkJ,GAAI,MAAa,KAAP8pD,EAAEt1C,GAAGvL,GAAQgP,EAAEksI,GAAGr6F,GAAG,IAAI9pD,IAAIiY,EAAEksI,GAAGnkJ,IAAI,GAAG,IAAIiY,EAAE,OAAO,EAAE,GAAG,IAAId,GAAGA,IAAIc,GAAG,KAAKd,EAAElO,MAAKA,EAAEgP,GAAGA,KAAEjY,EAAEmX,GAAGA,IAAQ,KAAKlO,GAAG,KAAO,QAAFjJ,IAAY,OAAOmX,EAA0C,GAAxC,KAAO,EAAFc,KAAOA,GAAK,GAAFzD,GAA4B,KAAtB2C,EAAE0L,EAAE2hI,gBAAwB,IAAI3hI,EAAEA,EAAE4hI,cAActtI,GAAGc,EAAE,EAAEd,GAAclO,EAAE,IAAbuL,EAAE,GAAGovI,GAAGzsI,IAAUc,GAAG4K,EAAErO,GAAG2C,IAAIlO,EAAE,OAAOgP,CAAC,CACvc,SAASysI,GAAG7hI,EAAE1L,GAAG,OAAO0L,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,OAAO1L,EAAE,IAAI,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,OAAOA,EAAE,IAAuJ,QAAQ,OAAO,EAAE,CACrN,SAASwtI,GAAG9hI,GAAgC,OAAO,KAApCA,GAAkB,WAAhBA,EAAEwhI,cAAsCxhI,EAAI,WAAFA,EAAa,WAAW,CAAC,CAAC,SAAS+hI,KAAK,IAAI/hI,EAAEohI,GAAoC,OAA1B,KAAQ,SAAfA,KAAK,MAAqBA,GAAG,IAAWphI,CAAC,CAAC,SAASgiI,GAAGhiI,GAAG,IAAI,IAAI1L,EAAE,GAAG3C,EAAE,EAAE,GAAGA,EAAEA,IAAI2C,EAAE3X,KAAKqjB,GAAG,OAAO1L,CAAC,CAC3a,SAAS2tI,GAAGjiI,EAAE1L,EAAE3C,GAAGqO,EAAEwhI,cAAcltI,EAAE,YAAYA,IAAI0L,EAAEyhI,eAAe,EAAEzhI,EAAE0hI,YAAY,IAAG1hI,EAAEA,EAAEkiI,YAAW5tI,EAAE,GAAGysI,GAAGzsI,IAAQ3C,CAAC,CACzH,SAASwwI,GAAGniI,EAAE1L,GAAG,IAAI3C,EAAEqO,EAAE2hI,gBAAgBrtI,EAAE,IAAI0L,EAAEA,EAAE4hI,cAAcjwI,GAAG,CAAC,IAAIyD,EAAE,GAAG2rI,GAAGpvI,GAAGvL,EAAE,GAAGgP,EAAEhP,EAAEkO,EAAE0L,EAAE5K,GAAGd,IAAI0L,EAAE5K,IAAId,GAAG3C,IAAIvL,CAAC,CAAC,CAAC,IAAI4qB,GAAE,EAAE,SAASoxH,GAAGpiI,GAAS,OAAO,GAAbA,IAAIA,GAAa,EAAEA,EAAE,KAAO,UAAFA,GAAa,GAAG,UAAU,EAAE,CAAC,CAAC,IAAIqiI,GAAGC,GAAGC,GAAGC,GAAGC,GAAGC,IAAG,EAAGC,GAAG,GAAGC,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,GAAG,IAAI5/E,IAAI6/E,GAAG,IAAI7/E,IAAI8/E,GAAG,GAAGC,GAAG,6PAA6P79I,MAAM,KAChiB,SAAS89I,GAAGnjI,EAAE1L,GAAG,OAAO0L,GAAG,IAAK,UAAU,IAAK,WAAW4iI,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,YAAYC,GAAG,KAAK,MAAM,IAAK,YAAY,IAAK,WAAWC,GAAG,KAAK,MAAM,IAAK,cAAc,IAAK,aAAaC,GAAGvsE,OAAOliE,EAAE8uI,WAAW,MAAM,IAAK,oBAAoB,IAAK,qBAAqBJ,GAAGxsE,OAAOliE,EAAE8uI,WAAW,CACnT,SAASC,GAAGrjI,EAAE1L,EAAE3C,EAAEyD,EAAEhP,EAAEjJ,GAAG,OAAG,OAAO6iB,GAAGA,EAAEsjI,cAAcnmJ,GAAS6iB,EAAE,CAACujI,UAAUjvI,EAAEkvI,aAAa7xI,EAAE8xI,iBAAiBruI,EAAEkuI,YAAYnmJ,EAAEumJ,iBAAiB,CAACt9I,IAAI,OAAOkO,IAAY,QAARA,EAAEmpI,GAAGnpI,KAAaguI,GAAGhuI,IAAI0L,IAAEA,EAAEyjI,kBAAkBruI,EAAEd,EAAE0L,EAAE0jI,iBAAiB,OAAOt9I,IAAI,IAAIkO,EAAErP,QAAQmB,IAAIkO,EAAE3X,KAAKyJ,GAAU4Z,EAAC,CAEpR,SAAS2jI,GAAG3jI,GAAG,IAAI1L,EAAEsvI,GAAG5jI,EAAE5f,QAAQ,GAAG,OAAOkU,EAAE,CAAC,IAAI3C,EAAEitI,GAAGtqI,GAAG,GAAG,OAAO3C,EAAE,GAAW,MAAR2C,EAAE3C,EAAE6a,MAAY,GAAW,QAARlY,EAAEyqI,GAAGptI,IAA4D,OAA/CqO,EAAEujI,UAAUjvI,OAAEmuI,GAAGziI,EAAE6jI,UAAS,WAAWtB,GAAG5wI,EAAE,SAAgB,GAAG,IAAI2C,GAAG3C,EAAE+rI,UAAU//G,QAAQqhH,cAAc8E,aAAmE,YAArD9jI,EAAEujI,UAAU,IAAI5xI,EAAE6a,IAAI7a,EAAE+rI,UAAUqG,cAAc,KAAY,CAAC/jI,EAAEujI,UAAU,IAAI,CAClT,SAASS,GAAGhkI,GAAG,GAAG,OAAOA,EAAEujI,UAAU,OAAM,EAAG,IAAI,IAAIjvI,EAAE0L,EAAE0jI,iBAAiB,EAAEpvI,EAAE9Y,QAAQ,CAAC,IAAImW,EAAEsyI,GAAGjkI,EAAEwjI,aAAaxjI,EAAEyjI,iBAAiBnvI,EAAE,GAAG0L,EAAEsjI,aAAa,GAAG,OAAO3xI,EAAiG,OAAe,QAAR2C,EAAEmpI,GAAG9rI,KAAa2wI,GAAGhuI,GAAG0L,EAAEujI,UAAU5xI,GAAE,EAA3H,IAAIyD,EAAE,IAAtBzD,EAAEqO,EAAEsjI,aAAwBp2H,YAAYvb,EAAErQ,KAAKqQ,GAAGsrI,GAAG7nI,EAAEzD,EAAEvR,OAAOgnC,cAAchyB,GAAG6nI,GAAG,KAA0D3oI,EAAE1N,OAAO,CAAC,OAAM,CAAE,CAAC,SAASs9I,GAAGlkI,EAAE1L,EAAE3C,GAAGqyI,GAAGhkI,IAAIrO,EAAE6kE,OAAOliE,EAAE,CAAC,SAAS6vI,KAAKzB,IAAG,EAAG,OAAOE,IAAIoB,GAAGpB,MAAMA,GAAG,MAAM,OAAOC,IAAImB,GAAGnB,MAAMA,GAAG,MAAM,OAAOC,IAAIkB,GAAGlB,MAAMA,GAAG,MAAMC,GAAG74H,QAAQg6H,IAAIlB,GAAG94H,QAAQg6H,GAAG,CACnf,SAASE,GAAGpkI,EAAE1L,GAAG0L,EAAEujI,YAAYjvI,IAAI0L,EAAEujI,UAAU,KAAKb,KAAKA,IAAG,EAAGxP,EAAGuM,0BAA0BvM,EAAGsN,wBAAwB2D,KAAK,CAC5H,SAASE,GAAGrkI,GAAG,SAAS1L,EAAEA,GAAG,OAAO8vI,GAAG9vI,EAAE0L,EAAE,CAAC,GAAG,EAAE2iI,GAAGnnJ,OAAO,CAAC4oJ,GAAGzB,GAAG,GAAG3iI,GAAG,IAAI,IAAIrO,EAAE,EAAEA,EAAEgxI,GAAGnnJ,OAAOmW,IAAI,CAAC,IAAIyD,EAAEutI,GAAGhxI,GAAGyD,EAAEmuI,YAAYvjI,IAAI5K,EAAEmuI,UAAU,KAAK,CAAC,CAAyF,IAAxF,OAAOX,IAAIwB,GAAGxB,GAAG5iI,GAAG,OAAO6iI,IAAIuB,GAAGvB,GAAG7iI,GAAG,OAAO8iI,IAAIsB,GAAGtB,GAAG9iI,GAAG+iI,GAAG74H,QAAQ5V,GAAG0uI,GAAG94H,QAAQ5V,GAAO3C,EAAE,EAAEA,EAAEsxI,GAAGznJ,OAAOmW,KAAIyD,EAAE6tI,GAAGtxI,IAAK4xI,YAAYvjI,IAAI5K,EAAEmuI,UAAU,MAAM,KAAK,EAAEN,GAAGznJ,QAAiB,QAARmW,EAAEsxI,GAAG,IAAYM,WAAYI,GAAGhyI,GAAG,OAAOA,EAAE4xI,WAAWN,GAAGr8I,OAAO,CAAC,IAAI09I,GAAG3P,EAAG4P,wBAAwBC,IAAG,EAC5a,SAASC,GAAGzkI,EAAE1L,EAAE3C,EAAEyD,GAAG,IAAIhP,EAAE4qB,GAAE7zB,EAAEmnJ,GAAGI,WAAWJ,GAAGI,WAAW,KAAK,IAAI1zH,GAAE,EAAEmrF,GAAGn8F,EAAE1L,EAAE3C,EAAEyD,EAAE,CAAC,QAAQ4b,GAAE5qB,EAAEk+I,GAAGI,WAAWvnJ,CAAC,CAAC,CAAC,SAASwnJ,GAAG3kI,EAAE1L,EAAE3C,EAAEyD,GAAG,IAAIhP,EAAE4qB,GAAE7zB,EAAEmnJ,GAAGI,WAAWJ,GAAGI,WAAW,KAAK,IAAI1zH,GAAE,EAAEmrF,GAAGn8F,EAAE1L,EAAE3C,EAAEyD,EAAE,CAAC,QAAQ4b,GAAE5qB,EAAEk+I,GAAGI,WAAWvnJ,CAAC,CAAC,CACjO,SAASg/G,GAAGn8F,EAAE1L,EAAE3C,EAAEyD,GAAG,GAAGovI,GAAG,CAAC,IAAIp+I,EAAE69I,GAAGjkI,EAAE1L,EAAE3C,EAAEyD,GAAG,GAAG,OAAOhP,EAAEw+I,GAAG5kI,EAAE1L,EAAEc,EAAE5H,GAAGmE,GAAGwxI,GAAGnjI,EAAE5K,QAAQ,GANtF,SAAY4K,EAAE1L,EAAE3C,EAAEyD,EAAEhP,GAAG,OAAOkO,GAAG,IAAK,UAAU,OAAOsuI,GAAGS,GAAGT,GAAG5iI,EAAE1L,EAAE3C,EAAEyD,EAAEhP,IAAG,EAAG,IAAK,YAAY,OAAOy8I,GAAGQ,GAAGR,GAAG7iI,EAAE1L,EAAE3C,EAAEyD,EAAEhP,IAAG,EAAG,IAAK,YAAY,OAAO08I,GAAGO,GAAGP,GAAG9iI,EAAE1L,EAAE3C,EAAEyD,EAAEhP,IAAG,EAAG,IAAK,cAAc,IAAIjJ,EAAEiJ,EAAEg9I,UAAkD,OAAxCL,GAAGzuH,IAAIn3B,EAAEkmJ,GAAGN,GAAGn4I,IAAIzN,IAAI,KAAK6iB,EAAE1L,EAAE3C,EAAEyD,EAAEhP,KAAU,EAAG,IAAK,oBAAoB,OAAOjJ,EAAEiJ,EAAEg9I,UAAUJ,GAAG1uH,IAAIn3B,EAAEkmJ,GAAGL,GAAGp4I,IAAIzN,IAAI,KAAK6iB,EAAE1L,EAAE3C,EAAEyD,EAAEhP,KAAI,EAAG,OAAM,CAAE,CAM1Qy+I,CAAGz+I,EAAE4Z,EAAE1L,EAAE3C,EAAEyD,GAAGA,EAAEmrC,uBAAuB,GAAG4iG,GAAGnjI,EAAE5K,GAAK,EAAFd,IAAM,EAAE4uI,GAAGj+I,QAAQ+a,GAAG,CAAC,KAAK,OAAO5Z,GAAG,CAAC,IAAIjJ,EAAEsgJ,GAAGr3I,GAA0D,GAAvD,OAAOjJ,GAAGklJ,GAAGllJ,GAAiB,QAAdA,EAAE8mJ,GAAGjkI,EAAE1L,EAAE3C,EAAEyD,KAAawvI,GAAG5kI,EAAE1L,EAAEc,EAAE5H,GAAGmE,GAAMxU,IAAIiJ,EAAE,MAAMA,EAAEjJ,CAAC,CAAC,OAAOiJ,GAAGgP,EAAEmrC,iBAAiB,MAAMqkG,GAAG5kI,EAAE1L,EAAEc,EAAE,KAAKzD,EAAE,CAAC,CAAC,IAAInE,GAAG,KACpU,SAASy2I,GAAGjkI,EAAE1L,EAAE3C,EAAEyD,GAA2B,GAAxB5H,GAAG,KAAwB,QAAXwS,EAAE4jI,GAAV5jI,EAAEk9H,GAAG9nI,KAAuB,GAAW,QAARd,EAAEsqI,GAAG5+H,IAAYA,EAAE,UAAU,GAAW,MAARrO,EAAE2C,EAAEkY,KAAW,CAAS,GAAG,QAAXxM,EAAE++H,GAAGzqI,IAAe,OAAO0L,EAAEA,EAAE,IAAI,MAAM,GAAG,IAAIrO,EAAE,CAAC,GAAG2C,EAAEopI,UAAU//G,QAAQqhH,cAAc8E,aAAa,OAAO,IAAIxvI,EAAEkY,IAAIlY,EAAEopI,UAAUqG,cAAc,KAAK/jI,EAAE,IAAI,MAAM1L,IAAI0L,IAAIA,EAAE,MAAW,OAALxS,GAAGwS,EAAS,IAAI,CAC7S,SAAS8kI,GAAG9kI,GAAG,OAAOA,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,QAAQ,IAAK,cAAc,IAAK,OAAO,IAAK,MAAM,IAAK,WAAW,IAAK,WAAW,IAAK,UAAU,IAAK,YAAY,IAAK,OAAO,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,UAAU,IAAK,UAAU,IAAK,WAAW,IAAK,QAAQ,IAAK,YAAY,IAAK,UAAU,IAAK,QAAQ,IAAK,QAAQ,IAAK,OAAO,IAAK,gBAAgB,IAAK,cAAc,IAAK,YAAY,IAAK,aAAa,IAAK,QAAQ,IAAK,SAAS,IAAK,SAAS,IAAK,SAAS,IAAK,cAAc,IAAK,WAAW,IAAK,aAAa,IAAK,eAAe,IAAK,SAAS,IAAK,kBAAkB,IAAK,YAAY,IAAK,mBAAmB,IAAK,iBAAiB,IAAK,oBAAoB,IAAK,aAAa,IAAK,YAAY,IAAK,cAAc,IAAK,OAAO,IAAK,mBAAmB,IAAK,QAAQ,IAAK,aAAa,IAAK,WAAW,IAAK,SAAS,IAAK,cAAc,OAAO,EAAE,IAAK,OAAO,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,SAAS,IAAK,SAAS,IAAK,YAAY,IAAK,QAAQ,IAAK,aAAa,IAAK,aAAa,IAAK,eAAe,IAAK,eAAe,OAAO,EACpqC,IAAK,UAAU,OAAOigI,MAAM,KAAKE,GAAG,OAAO,EAAE,KAAKE,GAAG,OAAO,EAAE,KAAKE,GAAG,KAAKE,GAAG,OAAO,GAAG,KAAKE,GAAG,OAAO,UAAU,QAAQ,OAAO,GAAG,QAAQ,OAAO,GAAG,CAAC,IAAIoE,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAK,GAAGD,GAAG,OAAOA,GAAG,IAAIjlI,EAAkB5K,EAAhBd,EAAE0wI,GAAGrzI,EAAE2C,EAAE9Y,OAAS4K,EAAE,UAAU2+I,GAAGA,GAAG/nJ,MAAM+nJ,GAAGlmI,YAAY1hB,EAAEiJ,EAAE5K,OAAO,IAAIwkB,EAAE,EAAEA,EAAErO,GAAG2C,EAAE0L,KAAK5Z,EAAE4Z,GAAGA,KAAK,IAAIinC,EAAEt1C,EAAEqO,EAAE,IAAI5K,EAAE,EAAEA,GAAG6xC,GAAG3yC,EAAE3C,EAAEyD,KAAKhP,EAAEjJ,EAAEiY,GAAGA,KAAK,OAAO6vI,GAAG7+I,EAAET,MAAMqa,EAAE,EAAE5K,EAAE,EAAEA,OAAE,EAAO,CACxY,SAAS+vI,GAAGnlI,GAAG,IAAI1L,EAAE0L,EAAEiyH,QAA+E,MAAvE,aAAajyH,EAAgB,KAAbA,EAAEA,EAAEolI,WAAgB,KAAK9wI,IAAI0L,EAAE,IAAKA,EAAE1L,EAAE,KAAK0L,IAAIA,EAAE,IAAW,IAAIA,GAAG,KAAKA,EAAEA,EAAE,CAAC,CAAC,SAASqlI,KAAK,OAAM,CAAE,CAAC,SAASC,KAAK,OAAM,CAAE,CAC5K,SAASC,GAAGvlI,GAAG,SAAS1L,EAAEA,EAAEc,EAAEhP,EAAEjJ,EAAE8pD,GAA6G,IAAI,IAAIt1C,KAAlHlQ,KAAK+jJ,WAAWlxI,EAAE7S,KAAKgkJ,YAAYr/I,EAAE3E,KAAKH,KAAK8T,EAAE3T,KAAK6hJ,YAAYnmJ,EAAEsE,KAAKrB,OAAO6mD,EAAExlD,KAAKu7C,cAAc,KAAkBh9B,EAAEA,EAAEtjB,eAAeiV,KAAK2C,EAAE0L,EAAErO,GAAGlQ,KAAKkQ,GAAG2C,EAAEA,EAAEnX,GAAGA,EAAEwU,IAAgI,OAA5HlQ,KAAKikJ,oBAAoB,MAAMvoJ,EAAE8iD,iBAAiB9iD,EAAE8iD,kBAAiB,IAAK9iD,EAAEujD,aAAa2kG,GAAGC,GAAG7jJ,KAAKkkJ,qBAAqBL,GAAU7jJ,IAAI,CAC9E,OAD+E2lD,EAAE9yC,EAAErY,UAAU,CAACwkD,eAAe,WAAWh/C,KAAKw+C,kBAAiB,EAAG,IAAIjgC,EAAEve,KAAK6hJ,YAAYtjI,IAAIA,EAAEygC,eAAezgC,EAAEygC,iBAAiB,mBAAmBzgC,EAAE0gC,cAC7e1gC,EAAE0gC,aAAY,GAAIj/C,KAAKikJ,mBAAmBL,GAAG,EAAE9kG,gBAAgB,WAAW,IAAIvgC,EAAEve,KAAK6hJ,YAAYtjI,IAAIA,EAAEugC,gBAAgBvgC,EAAEugC,kBAAkB,mBAAmBvgC,EAAEggC,eAAehgC,EAAEggC,cAAa,GAAIv+C,KAAKkkJ,qBAAqBN,GAAG,EAAEO,QAAQ,WAAW,EAAEC,aAAaR,KAAY/wI,CAAC,CACjR,IAAoLwxI,GAAGC,GAAGC,GAAtLC,GAAG,CAACC,WAAW,EAAErpG,QAAQ,EAAEC,WAAW,EAAEQ,UAAU,SAASt9B,GAAG,OAAOA,EAAEs9B,WAAW97C,KAAKwX,KAAK,EAAEinC,iBAAiB,EAAEkmG,UAAU,GAAGC,GAAGb,GAAGU,IAAII,GAAGj/F,EAAE,CAAC,EAAE6+F,GAAG,CAACt3F,KAAK,EAAE9rC,OAAO,IAAIyjI,GAAGf,GAAGc,IAAaE,GAAGn/F,EAAE,CAAC,EAAEi/F,GAAG,CAACG,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,QAAQ,EAAEC,MAAM,EAAEC,MAAM,EAAEC,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAEC,iBAAiBC,GAAGrW,OAAO,EAAE0B,QAAQ,EAAE4U,cAAc,SAASpnI,GAAG,YAAO,IAASA,EAAEonI,cAAcpnI,EAAEqnI,cAAcrnI,EAAEm9H,WAAWn9H,EAAEsnI,UAAUtnI,EAAEqnI,YAAYrnI,EAAEonI,aAAa,EAAEG,UAAU,SAASvnI,GAAG,MAAG,cAC3eA,EAASA,EAAEunI,WAAUvnI,IAAIgmI,KAAKA,IAAI,cAAchmI,EAAE1e,MAAMwkJ,GAAG9lI,EAAEwmI,QAAQR,GAAGQ,QAAQT,GAAG/lI,EAAEymI,QAAQT,GAAGS,SAASV,GAAGD,GAAG,EAAEE,GAAGhmI,GAAU8lI,GAAE,EAAE0B,UAAU,SAASxnI,GAAG,MAAM,cAAcA,EAAEA,EAAEwnI,UAAUzB,EAAE,IAAI0B,GAAGlC,GAAGgB,IAAiCmB,GAAGnC,GAA7Bn+F,EAAE,CAAC,EAAEm/F,GAAG,CAACoB,aAAa,KAA4CC,GAAGrC,GAA9Bn+F,EAAE,CAAC,EAAEi/F,GAAG,CAACe,cAAc,KAA0ES,GAAGtC,GAA5Dn+F,EAAE,CAAC,EAAE6+F,GAAG,CAAC6B,cAAc,EAAEC,YAAY,EAAEC,cAAc,KAAcpgE,GAAGxgC,EAAE,CAAC,EAAE6+F,GAAG,CAACgC,cAAc,SAASjoI,GAAG,MAAM,kBAAkBA,EAAEA,EAAEioI,cAAcxnJ,OAAOwnJ,aAAa,IAAIC,GAAG3C,GAAG39D,IAAyBugE,GAAG5C,GAArBn+F,EAAE,CAAC,EAAE6+F,GAAG,CAACl/I,KAAK,KAAcqhJ,GAAG,CAACC,IAAI,SACxfC,SAAS,IAAIC,KAAK,YAAYC,GAAG,UAAUC,MAAM,aAAaC,KAAK,YAAYC,IAAI,SAASC,IAAI,KAAKC,KAAK,cAAcC,KAAK,cAAcC,OAAO,aAAaC,gBAAgB,gBAAgBC,GAAG,CAAC,EAAE,YAAY,EAAE,MAAM,GAAG,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,UAAU,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,SAAS,GAAG,IAAI,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,GAAG,OAAO,GAAG,YAAY,GAAG,UAAU,GAAG,aAAa,GAAG,YAAY,GAAG,SAAS,GAAG,SAAS,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KACtf,IAAI,KAAK,IAAI,KAAK,IAAI,MAAM,IAAI,MAAM,IAAI,MAAM,IAAI,UAAU,IAAI,aAAa,IAAI,QAAQC,GAAG,CAACC,IAAI,SAASC,QAAQ,UAAUC,KAAK,UAAUC,MAAM,YAAY,SAASC,GAAGvpI,GAAG,IAAI1L,EAAE7S,KAAK6hJ,YAAY,OAAOhvI,EAAE4yI,iBAAiB5yI,EAAE4yI,iBAAiBlnI,MAAIA,EAAEkpI,GAAGlpI,OAAM1L,EAAE0L,EAAK,CAAC,SAASmnI,KAAK,OAAOoC,EAAE,CAChS,IAAIC,GAAGpiG,EAAE,CAAC,EAAEi/F,GAAG,CAAC/mJ,IAAI,SAAS0gB,GAAG,GAAGA,EAAE1gB,IAAI,CAAC,IAAIgV,EAAE8zI,GAAGpoI,EAAE1gB,MAAM0gB,EAAE1gB,IAAI,GAAG,iBAAiBgV,EAAE,OAAOA,CAAC,CAAC,MAAM,aAAa0L,EAAE1e,KAAc,MAAR0e,EAAEmlI,GAAGnlI,IAAU,QAAQhc,OAAO8qD,aAAa9uC,GAAI,YAAYA,EAAE1e,MAAM,UAAU0e,EAAE1e,KAAK2nJ,GAAGjpI,EAAEiyH,UAAU,eAAe,EAAE,EAAE9jI,KAAK,EAAEzN,SAAS,EAAEomJ,QAAQ,EAAEC,SAAS,EAAEC,OAAO,EAAEC,QAAQ,EAAEwC,OAAO,EAAE5vI,OAAO,EAAEqtI,iBAAiBC,GAAG/B,SAAS,SAASplI,GAAG,MAAM,aAAaA,EAAE1e,KAAK6jJ,GAAGnlI,GAAG,CAAC,EAAEiyH,QAAQ,SAASjyH,GAAG,MAAM,YAAYA,EAAE1e,MAAM,UAAU0e,EAAE1e,KAAK0e,EAAEiyH,QAAQ,CAAC,EAAEyX,MAAM,SAAS1pI,GAAG,MAAM,aAC7eA,EAAE1e,KAAK6jJ,GAAGnlI,GAAG,YAAYA,EAAE1e,MAAM,UAAU0e,EAAE1e,KAAK0e,EAAEiyH,QAAQ,CAAC,IAAI0X,GAAGpE,GAAGiE,IAAiII,GAAGrE,GAA7Hn+F,EAAE,CAAC,EAAEm/F,GAAG,CAACnD,UAAU,EAAE13G,MAAM,EAAEm+G,OAAO,EAAEC,SAAS,EAAEC,mBAAmB,EAAEC,MAAM,EAAEC,MAAM,EAAEC,MAAM,EAAEC,YAAY,EAAEC,UAAU,KAAmIC,GAAG9E,GAArHn+F,EAAE,CAAC,EAAEi/F,GAAG,CAACiE,QAAQ,EAAEC,cAAc,EAAEC,eAAe,EAAExD,OAAO,EAAEC,QAAQ,EAAEH,QAAQ,EAAEC,SAAS,EAAEG,iBAAiBC,MAA0EsD,GAAGlF,GAA3Dn+F,EAAE,CAAC,EAAE6+F,GAAG,CAAC18B,aAAa,EAAEw+B,YAAY,EAAEC,cAAc,KAAc0C,GAAGtjG,EAAE,CAAC,EAAEm/F,GAAG,CAACoE,OAAO,SAAS3qI,GAAG,MAAM,WAAWA,EAAEA,EAAE2qI,OAAO,gBAAgB3qI,GAAGA,EAAE4qI,YAAY,CAAC,EACnfC,OAAO,SAAS7qI,GAAG,MAAM,WAAWA,EAAEA,EAAE6qI,OAAO,gBAAgB7qI,GAAGA,EAAE8qI,YAAY,eAAe9qI,GAAGA,EAAE+qI,WAAW,CAAC,EAAEC,OAAO,EAAEC,UAAU,IAAIC,GAAG3F,GAAGmF,IAAIS,GAAG,CAAC,EAAE,GAAG,GAAG,IAAIC,GAAG7X,GAAI,qBAAqB9yI,OAAO4qJ,GAAG,KAAK9X,GAAI,iBAAiBn5H,WAAWixI,GAAGjxI,SAASkxI,cAAc,IAAIC,GAAGhY,GAAI,cAAc9yI,SAAS4qJ,GAAGG,GAAGjY,KAAM6X,IAAIC,IAAI,EAAEA,IAAI,IAAIA,IAAII,GAAGznJ,OAAO8qD,aAAa,IAAI48F,IAAG,EAC1W,SAASC,GAAG3rI,EAAE1L,GAAG,OAAO0L,GAAG,IAAK,QAAQ,OAAO,IAAImrI,GAAGlmJ,QAAQqP,EAAE29H,SAAS,IAAK,UAAU,OAAO,MAAM39H,EAAE29H,QAAQ,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,OAAM,EAAG,QAAQ,OAAM,EAAG,CAAC,SAAS2Z,GAAG5rI,GAAc,MAAM,kBAAjBA,EAAEA,EAAE6C,SAAkC,SAAS7C,EAAEA,EAAEjZ,KAAK,IAAI,CAAC,IAAI8kJ,IAAG,EAE9Q,IAAIC,GAAG,CAACC,OAAM,EAAG1gH,MAAK,EAAG2gH,UAAS,EAAG,kBAAiB,EAAGv+I,OAAM,EAAGm/B,OAAM,EAAGzJ,QAAO,EAAG7Z,UAAS,EAAG2iI,OAAM,EAAG/rI,QAAO,EAAGgsI,KAAI,EAAGttI,MAAK,EAAGjE,MAAK,EAAGvD,KAAI,EAAG21B,MAAK,GAAI,SAASyyF,GAAGx/G,GAAG,IAAI1L,EAAE0L,GAAGA,EAAEu2H,UAAUv2H,EAAEu2H,SAAShuI,cAAc,MAAM,UAAU+L,IAAIw3I,GAAG9rI,EAAE1e,MAAM,aAAagT,CAAO,CAAC,SAAS63I,GAAGnsI,EAAE1L,EAAE3C,EAAEyD,GAAGwoI,GAAGxoI,GAAsB,GAAnBd,EAAE83I,GAAG93I,EAAE,aAAgB9Y,SAASmW,EAAE,IAAIy0I,GAAG,WAAW,SAAS,KAAKz0I,EAAEyD,GAAG4K,EAAErjB,KAAK,CAACoS,MAAM4C,EAAEqwC,UAAU1tC,IAAI,CAAC,IAAI+3I,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAGvsI,GAAGwsI,GAAGxsI,EAAE,EAAE,CAAC,SAASysI,GAAGzsI,GAAe,GAAG82H,EAAT4V,GAAG1sI,IAAY,OAAOA,CAAC,CACpe,SAAS2sI,GAAG3sI,EAAE1L,GAAG,GAAG,WAAW0L,EAAE,OAAO1L,CAAC,CAAC,IAAIs4I,IAAG,EAAG,GAAGrZ,EAAG,CAAC,IAAIsZ,GAAG,GAAGtZ,EAAG,CAAC,IAAIuZ,GAAG,YAAY1yI,SAAS,IAAI0yI,GAAG,CAAC,IAAIC,GAAG3yI,SAAS6F,cAAc,OAAO8sI,GAAGhd,aAAa,UAAU,WAAW+c,GAAG,oBAAoBC,GAAGC,OAAO,CAACH,GAAGC,EAAE,MAAMD,IAAG,EAAGD,GAAGC,MAAMzyI,SAASkxI,cAAc,EAAElxI,SAASkxI,aAAa,CAAC,SAAS2B,KAAKZ,KAAKA,GAAGa,YAAY,mBAAmBC,IAAIb,GAAGD,GAAG,KAAK,CAAC,SAASc,GAAGntI,GAAG,GAAG,UAAUA,EAAEupG,cAAckjC,GAAGH,IAAI,CAAC,IAAIh4I,EAAE,GAAG63I,GAAG73I,EAAEg4I,GAAGtsI,EAAEk9H,GAAGl9H,IAAIi+H,GAAGsO,GAAGj4I,EAAE,CAAC,CAC/b,SAAS84I,GAAGptI,EAAE1L,EAAE3C,GAAG,YAAYqO,GAAGitI,KAAUX,GAAG36I,GAAR06I,GAAG/3I,GAAU+H,YAAY,mBAAmB8wI,KAAK,aAAantI,GAAGitI,IAAI,CAAC,SAASI,GAAGrtI,GAAG,GAAG,oBAAoBA,GAAG,UAAUA,GAAG,YAAYA,EAAE,OAAOysI,GAAGH,GAAG,CAAC,SAASgB,GAAGttI,EAAE1L,GAAG,GAAG,UAAU0L,EAAE,OAAOysI,GAAGn4I,EAAE,CAAC,SAASi5I,GAAGvtI,EAAE1L,GAAG,GAAG,UAAU0L,GAAG,WAAWA,EAAE,OAAOysI,GAAGn4I,EAAE,CAAiE,IAAIk5I,GAAG,oBAAoBxxJ,OAAOghJ,GAAGhhJ,OAAOghJ,GAA5G,SAAYh9H,EAAE1L,GAAG,OAAO0L,IAAI1L,IAAI,IAAI0L,GAAG,EAAEA,IAAI,EAAE1L,IAAI0L,IAAIA,GAAG1L,IAAIA,CAAC,EACtW,SAASm5I,GAAGztI,EAAE1L,GAAG,GAAGk5I,GAAGxtI,EAAE1L,GAAG,OAAM,EAAG,GAAG,kBAAkB0L,GAAG,OAAOA,GAAG,kBAAkB1L,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI3C,EAAE3V,OAAO8wB,KAAK9M,GAAG5K,EAAEpZ,OAAO8wB,KAAKxY,GAAG,GAAG3C,EAAEnW,SAAS4Z,EAAE5Z,OAAO,OAAM,EAAG,IAAI4Z,EAAE,EAAEA,EAAEzD,EAAEnW,OAAO4Z,IAAI,CAAC,IAAIhP,EAAEuL,EAAEyD,GAAG,IAAIo+H,EAAGr3I,KAAKmY,EAAElO,KAAKonJ,GAAGxtI,EAAE5Z,GAAGkO,EAAElO,IAAI,OAAM,CAAE,CAAC,OAAM,CAAE,CAAC,SAASsnJ,GAAG1tI,GAAG,KAAKA,GAAGA,EAAE44H,YAAY54H,EAAEA,EAAE44H,WAAW,OAAO54H,CAAC,CACtU,SAAS2tI,GAAG3tI,EAAE1L,GAAG,IAAwBc,EAApBzD,EAAE+7I,GAAG1tI,GAAO,IAAJA,EAAE,EAAYrO,GAAG,CAAC,GAAG,IAAIA,EAAEsnI,SAAS,CAA0B,GAAzB7jI,EAAE4K,EAAErO,EAAEkN,YAAYrjB,OAAUwkB,GAAG1L,GAAGc,GAAGd,EAAE,MAAM,CAACulB,KAAKloB,EAAEi5B,OAAOt2B,EAAE0L,GAAGA,EAAE5K,CAAC,CAAC4K,EAAE,CAAC,KAAKrO,GAAG,CAAC,GAAGA,EAAEi8I,YAAY,CAACj8I,EAAEA,EAAEi8I,YAAY,MAAM5tI,CAAC,CAACrO,EAAEA,EAAEuN,UAAU,CAACvN,OAAE,CAAM,CAACA,EAAE+7I,GAAG/7I,EAAE,CAAC,CAAC,SAASk8I,GAAG7tI,EAAE1L,GAAG,SAAO0L,IAAG1L,KAAE0L,IAAI1L,KAAK0L,GAAG,IAAIA,EAAEi5H,YAAY3kI,GAAG,IAAIA,EAAE2kI,SAAS4U,GAAG7tI,EAAE1L,EAAE4K,YAAY,aAAac,EAAEA,EAAE8tI,SAASx5I,KAAG0L,EAAE+tI,4BAAwD,GAA7B/tI,EAAE+tI,wBAAwBz5I,KAAY,CAC9Z,SAAS05I,KAAK,IAAI,IAAIhuI,EAAEvf,OAAO6T,EAAE0iI,IAAK1iI,aAAa0L,EAAEiuI,mBAAmB,CAAC,IAAI,IAAIt8I,EAAE,kBAAkB2C,EAAEwoB,cAAcp8B,SAASoa,IAAI,CAAC,MAAM1F,GAAGzD,GAAE,CAAE,CAAC,IAAGA,EAAyB,MAAM2C,EAAE0iI,GAA/Bh3H,EAAE1L,EAAEwoB,eAAgC1iB,SAAS,CAAC,OAAO9F,CAAC,CAAC,SAAS45I,GAAGluI,GAAG,IAAI1L,EAAE0L,GAAGA,EAAEu2H,UAAUv2H,EAAEu2H,SAAShuI,cAAc,OAAO+L,IAAI,UAAUA,IAAI,SAAS0L,EAAE1e,MAAM,WAAW0e,EAAE1e,MAAM,QAAQ0e,EAAE1e,MAAM,QAAQ0e,EAAE1e,MAAM,aAAa0e,EAAE1e,OAAO,aAAagT,GAAG,SAAS0L,EAAEmuI,gBAAgB,CACxa,SAASC,GAAGpuI,GAAG,IAAI1L,EAAE05I,KAAKr8I,EAAEqO,EAAEquI,YAAYj5I,EAAE4K,EAAEsuI,eAAe,GAAGh6I,IAAI3C,GAAGA,GAAGA,EAAEimI,eAAeiW,GAAGl8I,EAAEimI,cAAcv9H,gBAAgB1I,GAAG,CAAC,GAAG,OAAOyD,GAAG84I,GAAGv8I,GAAG,GAAG2C,EAAEc,EAAE+H,WAAc,KAAR6C,EAAE5K,EAAEgI,OAAiB4C,EAAE1L,GAAG,mBAAmB3C,EAAEA,EAAE48I,eAAej6I,EAAE3C,EAAE68I,aAAaz8I,KAAKlV,IAAImjB,EAAErO,EAAE3U,MAAMxB,aAAa,IAAGwkB,GAAG1L,EAAE3C,EAAEimI,eAAex9H,WAAW9F,EAAEm6I,aAAahuJ,QAASiuJ,aAAa,CAAC1uI,EAAEA,EAAE0uI,eAAe,IAAItoJ,EAAEuL,EAAEkN,YAAYrjB,OAAO2B,EAAE4U,KAAKlV,IAAIuY,EAAE+H,MAAM/W,GAAGgP,OAAE,IAASA,EAAEgI,IAAIjgB,EAAE4U,KAAKlV,IAAIuY,EAAEgI,IAAIhX,IAAI4Z,EAAE2uI,QAAQxxJ,EAAEiY,IAAIhP,EAAEgP,EAAEA,EAAEjY,EAAEA,EAAEiJ,GAAGA,EAAEunJ,GAAGh8I,EAAExU,GAAG,IAAI8pD,EAAE0mG,GAAGh8I,EACvfyD,GAAGhP,GAAG6gD,IAAI,IAAIjnC,EAAE4uI,YAAY5uI,EAAE6uI,aAAazoJ,EAAEyzB,MAAM7Z,EAAE8uI,eAAe1oJ,EAAEwkC,QAAQ5qB,EAAE+uI,YAAY9nG,EAAEptB,MAAM7Z,EAAEgvI,cAAc/nG,EAAErc,WAAUt2B,EAAEA,EAAE26I,eAAgBC,SAAS9oJ,EAAEyzB,KAAKzzB,EAAEwkC,QAAQ5qB,EAAEmvI,kBAAkBhyJ,EAAEiY,GAAG4K,EAAEovI,SAAS96I,GAAG0L,EAAE2uI,OAAO1nG,EAAEptB,KAAKotB,EAAErc,UAAUt2B,EAAE+6I,OAAOpoG,EAAEptB,KAAKotB,EAAErc,QAAQ5qB,EAAEovI,SAAS96I,IAAI,CAAM,IAALA,EAAE,GAAO0L,EAAErO,EAAEqO,EAAEA,EAAEd,YAAY,IAAIc,EAAEi5H,UAAU3kI,EAAE3X,KAAK,CAACgyI,QAAQ3uH,EAAEsvI,KAAKtvI,EAAEuvI,WAAWC,IAAIxvI,EAAEyvI,YAAmD,IAAvC,oBAAoB99I,EAAE+9I,OAAO/9I,EAAE+9I,QAAY/9I,EAAE,EAAEA,EAAE2C,EAAE9Y,OAAOmW,KAAIqO,EAAE1L,EAAE3C,IAAKg9H,QAAQ4gB,WAAWvvI,EAAEsvI,KAAKtvI,EAAE2uH,QAAQ8gB,UAAUzvI,EAAEwvI,GAAG,CAAC,CACzf,IAAIG,GAAGpc,GAAI,iBAAiBn5H,UAAU,IAAIA,SAASkxI,aAAasE,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAKC,IAAG,EAC3F,SAASC,GAAGhwI,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAEzD,EAAElR,SAASkR,EAAEA,EAAEyI,SAAS,IAAIzI,EAAEsnI,SAAStnI,EAAEA,EAAEimI,cAAcmY,IAAI,MAAMH,IAAIA,KAAK5Y,EAAG5hI,KAAU,mBAALA,EAAEw6I,KAAyB1B,GAAG94I,GAAGA,EAAE,CAAC+H,MAAM/H,EAAEm5I,eAAenxI,IAAIhI,EAAEo5I,cAAuFp5I,EAAE,CAACy5I,YAA3Ez5I,GAAGA,EAAEwiI,eAAexiI,EAAEwiI,cAAc6W,aAAahuJ,QAAQiuJ,gBAA+BG,WAAWC,aAAa15I,EAAE05I,aAAaC,UAAU35I,EAAE25I,UAAUC,YAAY55I,EAAE45I,aAAcc,IAAIrC,GAAGqC,GAAG16I,KAAK06I,GAAG16I,EAAsB,GAApBA,EAAEg3I,GAAGyD,GAAG,aAAgBr0J,SAAS8Y,EAAE,IAAI8xI,GAAG,WAAW,SAAS,KAAK9xI,EAAE3C,GAAGqO,EAAErjB,KAAK,CAACoS,MAAMuF,EAAE0tC,UAAU5sC,IAAId,EAAElU,OAAOwvJ,KAAK,CACtf,SAASK,GAAGjwI,EAAE1L,GAAG,IAAI3C,EAAE,CAAC,EAAiF,OAA/EA,EAAEqO,EAAEzX,eAAe+L,EAAE/L,cAAcoJ,EAAE,SAASqO,GAAG,SAAS1L,EAAE3C,EAAE,MAAMqO,GAAG,MAAM1L,EAAS3C,CAAC,CAAC,IAAIu+I,GAAG,CAACC,aAAaF,GAAG,YAAY,gBAAgBG,mBAAmBH,GAAG,YAAY,sBAAsBI,eAAeJ,GAAG,YAAY,kBAAkBK,cAAcL,GAAG,aAAa,kBAAkBM,GAAG,CAAC,EAAEC,GAAG,CAAC,EACpF,SAASC,GAAGzwI,GAAG,GAAGuwI,GAAGvwI,GAAG,OAAOuwI,GAAGvwI,GAAG,IAAIkwI,GAAGlwI,GAAG,OAAOA,EAAE,IAAYrO,EAAR2C,EAAE47I,GAAGlwI,GAAK,IAAIrO,KAAK2C,EAAE,GAAGA,EAAE5X,eAAeiV,IAAIA,KAAK6+I,GAAG,OAAOD,GAAGvwI,GAAG1L,EAAE3C,GAAG,OAAOqO,CAAC,CAA/XuzH,IAAKid,GAAGp2I,SAAS6F,cAAc,OAAOyc,MAAM,mBAAmBj8B,gBAAgByvJ,GAAGC,aAAaj7D,iBAAiBg7D,GAAGE,mBAAmBl7D,iBAAiBg7D,GAAGG,eAAen7D,WAAW,oBAAoBz0F,eAAeyvJ,GAAGI,cAAc5L,YAAwJ,IAAIgM,GAAGD,GAAG,gBAAgBE,GAAGF,GAAG,sBAAsBG,GAAGH,GAAG,kBAAkBI,GAAGJ,GAAG,iBAAiBK,GAAG,IAAI3tF,IAAI4tF,GAAG,smBAAsmB1rJ,MAAM,KAC/lC,SAAS2rJ,GAAGhxI,EAAE1L,GAAGw8I,GAAGx8H,IAAItU,EAAE1L,GAAG++H,EAAG/+H,EAAE,CAAC0L,GAAG,CAAC,IAAI,IAAIixI,GAAG,EAAEA,GAAGF,GAAGv1J,OAAOy1J,KAAK,CAAC,IAAIC,GAAGH,GAAGE,IAA2DD,GAApDE,GAAG3oJ,cAAuD,MAAtC2oJ,GAAG,GAAGzuJ,cAAcyuJ,GAAGvrJ,MAAM,IAAiB,CAACqrJ,GAAGN,GAAG,kBAAkBM,GAAGL,GAAG,wBAAwBK,GAAGJ,GAAG,oBAAoBI,GAAG,WAAW,iBAAiBA,GAAG,UAAU,WAAWA,GAAG,WAAW,UAAUA,GAAGH,GAAG,mBAAmBvd,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,eAAe,CAAC,WAAW,cAAcA,EAAG,iBAAiB,CAAC,aAAa,gBAC7cA,EAAG,iBAAiB,CAAC,aAAa,gBAAgBD,EAAG,WAAW,oEAAoEhuI,MAAM,MAAMguI,EAAG,WAAW,uFAAuFhuI,MAAM,MAAMguI,EAAG,gBAAgB,CAAC,iBAAiB,WAAW,YAAY,UAAUA,EAAG,mBAAmB,2DAA2DhuI,MAAM,MAAMguI,EAAG,qBAAqB,6DAA6DhuI,MAAM,MAC/fguI,EAAG,sBAAsB,8DAA8DhuI,MAAM,MAAM,IAAI8rJ,GAAG,6NAA6N9rJ,MAAM,KAAK+rJ,GAAG,IAAIpnI,IAAI,0CAA0C3kB,MAAM,KAAK1J,OAAOw1J,KACzZ,SAASE,GAAGrxI,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAE4K,EAAE1e,MAAM,gBAAgB0e,EAAEg9B,cAAcrrC,EAlDjE,SAAYqO,EAAE1L,EAAE3C,EAAEyD,EAAEhP,EAAEjJ,EAAE8pD,EAAEjZ,EAAE1vC,GAA4B,GAAzBqgJ,GAAGpvI,MAAM9N,KAAKpB,WAAci+I,GAAG,CAAC,IAAGA,GAAgC,MAAMx5I,MAAMhF,EAAE,MAA1C,IAAIonD,EAAEq3F,GAAGD,IAAG,EAAGC,GAAG,KAA8BC,KAAKA,IAAG,EAAGC,GAAGv3F,EAAE,CAAC,CAkDpEoqG,CAAGl8I,EAAEd,OAAE,EAAO0L,GAAGA,EAAEg9B,cAAc,IAAI,CACxG,SAASwvG,GAAGxsI,EAAE1L,GAAGA,EAAE,KAAO,EAAFA,GAAK,IAAI,IAAI3C,EAAE,EAAEA,EAAEqO,EAAExkB,OAAOmW,IAAI,CAAC,IAAIyD,EAAE4K,EAAErO,GAAGvL,EAAEgP,EAAErG,MAAMqG,EAAEA,EAAE4sC,UAAUhiC,EAAE,CAAC,IAAI7iB,OAAE,EAAO,GAAGmX,EAAE,IAAI,IAAI2yC,EAAE7xC,EAAE5Z,OAAO,EAAE,GAAGyrD,EAAEA,IAAI,CAAC,IAAIjZ,EAAE54B,EAAE6xC,GAAG3oD,EAAE0vC,EAAE6b,SAAS3C,EAAElZ,EAAEgP,cAA2B,GAAbhP,EAAEA,EAAE7qB,SAAY7kB,IAAInB,GAAGiJ,EAAEu/I,uBAAuB,MAAM3lI,EAAEqxI,GAAGjrJ,EAAE4nC,EAAEkZ,GAAG/pD,EAAEmB,CAAC,MAAM,IAAI2oD,EAAE,EAAEA,EAAE7xC,EAAE5Z,OAAOyrD,IAAI,CAAoD,GAA5C3oD,GAAP0vC,EAAE54B,EAAE6xC,IAAO4C,SAAS3C,EAAElZ,EAAEgP,cAAchP,EAAEA,EAAE7qB,SAAY7kB,IAAInB,GAAGiJ,EAAEu/I,uBAAuB,MAAM3lI,EAAEqxI,GAAGjrJ,EAAE4nC,EAAEkZ,GAAG/pD,EAAEmB,CAAC,CAAC,CAAC,CAAC,GAAGkgJ,GAAG,MAAMx+H,EAAEy+H,GAAGD,IAAG,EAAGC,GAAG,KAAKz+H,CAAE,CAC5a,SAASmtB,GAAEntB,EAAE1L,GAAG,IAAI3C,EAAE2C,EAAEi9I,SAAI,IAAS5/I,IAAIA,EAAE2C,EAAEi9I,IAAI,IAAIvnI,KAAK,IAAI5U,EAAE4K,EAAE,WAAWrO,EAAE+X,IAAItU,KAAKo8I,GAAGl9I,EAAE0L,EAAE,GAAE,GAAIrO,EAAE1I,IAAImM,GAAG,CAAC,SAASq8I,GAAGzxI,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAE,EAAEd,IAAIc,GAAG,GAAGo8I,GAAG7/I,EAAEqO,EAAE5K,EAAEd,EAAE,CAAC,IAAIo9I,GAAG,kBAAkB3/I,KAAKG,SAAShW,SAAS,IAAIyJ,MAAM,GAAG,SAASgsJ,GAAG3xI,GAAG,IAAIA,EAAE0xI,IAAI,CAAC1xI,EAAE0xI,KAAI,EAAGve,EAAGjpH,SAAQ,SAAS5V,GAAG,oBAAoBA,IAAI88I,GAAG1nI,IAAIpV,IAAIm9I,GAAGn9I,GAAE,EAAG0L,GAAGyxI,GAAGn9I,GAAE,EAAG0L,GAAG,IAAG,IAAI1L,EAAE,IAAI0L,EAAEi5H,SAASj5H,EAAEA,EAAE43H,cAAc,OAAOtjI,GAAGA,EAAEo9I,MAAMp9I,EAAEo9I,KAAI,EAAGD,GAAG,mBAAkB,EAAGn9I,GAAG,CAAC,CACjb,SAASk9I,GAAGxxI,EAAE1L,EAAE3C,EAAEyD,GAAG,OAAO0vI,GAAGxwI,IAAI,KAAK,EAAE,IAAIlO,EAAEq+I,GAAG,MAAM,KAAK,EAAEr+I,EAAEu+I,GAAG,MAAM,QAAQv+I,EAAE+1G,GAAGxqG,EAAEvL,EAAEjF,KAAK,KAAKmT,EAAE3C,EAAEqO,GAAG5Z,OAAE,GAAQ+3I,IAAI,eAAe7pI,GAAG,cAAcA,GAAG,UAAUA,IAAIlO,GAAE,GAAIgP,OAAE,IAAShP,EAAE4Z,EAAE5B,iBAAiB9J,EAAE3C,EAAE,CAACowC,SAAQ,EAAGK,QAAQh8C,IAAI4Z,EAAE5B,iBAAiB9J,EAAE3C,GAAE,QAAI,IAASvL,EAAE4Z,EAAE5B,iBAAiB9J,EAAE3C,EAAE,CAACywC,QAAQh8C,IAAI4Z,EAAE5B,iBAAiB9J,EAAE3C,GAAE,EAAG,CAClV,SAASizI,GAAG5kI,EAAE1L,EAAE3C,EAAEyD,EAAEhP,GAAG,IAAIjJ,EAAEiY,EAAE,GAAG,KAAO,EAAFd,IAAM,KAAO,EAAFA,IAAM,OAAOc,EAAE4K,EAAE,OAAO,CAAC,GAAG,OAAO5K,EAAE,OAAO,IAAI6xC,EAAE7xC,EAAEoX,IAAI,GAAG,IAAIy6B,GAAG,IAAIA,EAAE,CAAC,IAAIjZ,EAAE54B,EAAEsoI,UAAUqG,cAAc,GAAG/1G,IAAI5nC,GAAG,IAAI4nC,EAAEirG,UAAUjrG,EAAE9uB,aAAa9Y,EAAE,MAAM,GAAG,IAAI6gD,EAAE,IAAIA,EAAE7xC,EAAE0pI,OAAO,OAAO73F,GAAG,CAAC,IAAI3oD,EAAE2oD,EAAEz6B,IAAI,IAAG,IAAIluB,GAAG,IAAIA,MAAKA,EAAE2oD,EAAEy2F,UAAUqG,iBAAkB39I,GAAG,IAAI9H,EAAE26I,UAAU36I,EAAE4gB,aAAa9Y,GAAE,OAAO6gD,EAAEA,EAAE63F,MAAM,CAAC,KAAK,OAAO9wG,GAAG,CAAS,GAAG,QAAXiZ,EAAE28F,GAAG51G,IAAe,OAAe,GAAG,KAAX1vC,EAAE2oD,EAAEz6B,MAAc,IAAIluB,EAAE,CAAC8W,EAAEjY,EAAE8pD,EAAE,SAASjnC,CAAC,CAACguB,EAAEA,EAAE9uB,UAAU,CAAC,CAAC9J,EAAEA,EAAE0pI,MAAM,CAACb,IAAG,WAAW,IAAI7oI,EAAEjY,EAAEiJ,EAAE82I,GAAGvrI,GAAGs1C,EAAE,GACpfjnC,EAAE,CAAC,IAAIguB,EAAE8iH,GAAGlmJ,IAAIoV,GAAG,QAAG,IAASguB,EAAE,CAAC,IAAI1vC,EAAE8nJ,GAAGlkJ,EAAE8d,EAAE,OAAOA,GAAG,IAAK,WAAW,GAAG,IAAImlI,GAAGxzI,GAAG,MAAMqO,EAAE,IAAK,UAAU,IAAK,QAAQ1hB,EAAEqrJ,GAAG,MAAM,IAAK,UAAUznJ,EAAE,QAAQ5D,EAAEspJ,GAAG,MAAM,IAAK,WAAW1lJ,EAAE,OAAO5D,EAAEspJ,GAAG,MAAM,IAAK,aAAa,IAAK,YAAYtpJ,EAAEspJ,GAAG,MAAM,IAAK,QAAQ,GAAG,IAAIj2I,EAAEm/H,OAAO,MAAM9wH,EAAE,IAAK,WAAW,IAAK,WAAW,IAAK,YAAY,IAAK,YAAY,IAAK,UAAU,IAAK,WAAW,IAAK,YAAY,IAAK,cAAc1hB,EAAEmpJ,GAAG,MAAM,IAAK,OAAO,IAAK,UAAU,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,WAAW,IAAK,YAAY,IAAK,OAAOnpJ,EAC1iBopJ,GAAG,MAAM,IAAK,cAAc,IAAK,WAAW,IAAK,YAAY,IAAK,aAAappJ,EAAE+rJ,GAAG,MAAM,KAAKqG,GAAG,KAAKC,GAAG,KAAKC,GAAGtyJ,EAAEupJ,GAAG,MAAM,KAAKgJ,GAAGvyJ,EAAEmsJ,GAAG,MAAM,IAAK,SAASnsJ,EAAEgoJ,GAAG,MAAM,IAAK,QAAQhoJ,EAAE4sJ,GAAG,MAAM,IAAK,OAAO,IAAK,MAAM,IAAK,QAAQ5sJ,EAAE4pJ,GAAG,MAAM,IAAK,oBAAoB,IAAK,qBAAqB,IAAK,gBAAgB,IAAK,cAAc,IAAK,cAAc,IAAK,aAAa,IAAK,cAAc,IAAK,YAAY5pJ,EAAEsrJ,GAAG,IAAIj7G,EAAE,KAAO,EAAFr6B,GAAKs9I,GAAGjjH,GAAG,WAAW3uB,EAAEnkB,EAAE8yC,EAAE,OAAOX,EAAEA,EAAE,UAAU,KAAKA,EAAEW,EAAE,GAAG,IAAI,IAAQrC,EAAJQ,EAAE13B,EAAI,OAC/e03B,GAAG,CAAK,IAAI7f,GAARqf,EAAEQ,GAAU4wG,UAAsF,GAA5E,IAAIpxG,EAAE9f,KAAK,OAAOS,IAAIqf,EAAErf,EAAE,OAAOpxB,IAAc,OAAVoxB,EAAEixH,GAAGpxG,EAAEjxC,KAAY8yC,EAAEhyC,KAAKk1J,GAAG/kH,EAAE7f,EAAEqf,MAASslH,EAAE,MAAM9kH,EAAEA,EAAEgyG,MAAM,CAAC,EAAEnwG,EAAEnzC,SAASwyC,EAAE,IAAI1vC,EAAE0vC,EAAE9rC,EAAE,KAAKyP,EAAEvL,GAAG6gD,EAAEtqD,KAAK,CAACoS,MAAMi/B,EAAEgU,UAAUrT,IAAI,CAAC,CAAC,GAAG,KAAO,EAAFr6B,GAAK,CAA4E,GAAnChW,EAAE,aAAa0hB,GAAG,eAAeA,KAAtEguB,EAAE,cAAchuB,GAAG,gBAAgBA,IAA2CrO,IAAIsrI,MAAK/6I,EAAEyP,EAAEy1I,eAAez1I,EAAE01I,eAAezD,GAAG1hJ,KAAIA,EAAE4vJ,OAAgBxzJ,GAAG0vC,KAAGA,EAAE5nC,EAAE3F,SAAS2F,EAAEA,GAAG4nC,EAAE5nC,EAAEwxI,eAAe5pG,EAAEygH,aAAazgH,EAAE5R,aAAa37B,OAAUnC,GAAqCA,EAAE8W,EAAiB,QAAflT,GAAnCA,EAAEyP,EAAEy1I,eAAez1I,EAAE21I,WAAkB1D,GAAG1hJ,GAAG,QAC9dA,KAAR0vJ,EAAEhT,GAAG18I,KAAU,IAAIA,EAAEsqB,KAAK,IAAItqB,EAAEsqB,OAAKtqB,EAAE,QAAU5D,EAAE,KAAK4D,EAAEkT,GAAK9W,IAAI4D,GAAE,CAAgU,GAA/TysC,EAAE84G,GAAGx6H,EAAE,eAAepxB,EAAE,eAAeixC,EAAE,QAAW,eAAe9sB,GAAG,gBAAgBA,IAAE2uB,EAAEi7G,GAAG38H,EAAE,iBAAiBpxB,EAAE,iBAAiBixC,EAAE,WAAU8kH,EAAE,MAAMtzJ,EAAE0vC,EAAE0+G,GAAGpuJ,GAAGguC,EAAE,MAAMpqC,EAAE8rC,EAAE0+G,GAAGxqJ,IAAG8rC,EAAE,IAAIW,EAAE1hB,EAAE6f,EAAE,QAAQxuC,EAAEqT,EAAEvL,IAAKhG,OAAOwxJ,EAAE5jH,EAAEo5G,cAAc96G,EAAErf,EAAE,KAAK22H,GAAGx9I,KAAKgP,KAAIu5B,EAAE,IAAIA,EAAE9yC,EAAEixC,EAAE,QAAQ5qC,EAAEyP,EAAEvL,IAAKhG,OAAOksC,EAAEqC,EAAEy4G,cAAcwK,EAAE3kI,EAAE0hB,GAAGijH,EAAE3kI,EAAK3uB,GAAG4D,EAAEoS,EAAE,CAAa,IAARzY,EAAEqG,EAAE4qC,EAAE,EAAMR,EAAhBqC,EAAErwC,EAAkBguC,EAAEA,EAAEylH,GAAGzlH,GAAGQ,IAAQ,IAAJR,EAAE,EAAMrf,EAAEpxB,EAAEoxB,EAAEA,EAAE8kI,GAAG9kI,GAAGqf,IAAI,KAAK,EAAEQ,EAAER,GAAGqC,EAAEojH,GAAGpjH,GAAG7B,IAAI,KAAK,EAAER,EAAEQ,GAAGjxC,EACpfk2J,GAAGl2J,GAAGywC,IAAI,KAAKQ,KAAK,CAAC,GAAG6B,IAAI9yC,GAAG,OAAOA,GAAG8yC,IAAI9yC,EAAEgjJ,UAAU,MAAMvqI,EAAEq6B,EAAEojH,GAAGpjH,GAAG9yC,EAAEk2J,GAAGl2J,EAAE,CAAC8yC,EAAE,IAAI,MAAMA,EAAE,KAAK,OAAOrwC,GAAG0zJ,GAAG/qG,EAAEjZ,EAAE1vC,EAAEqwC,GAAE,GAAI,OAAOzsC,GAAG,OAAO0vJ,GAAGI,GAAG/qG,EAAE2qG,EAAE1vJ,EAAEysC,GAAE,EAAG,CAA8D,GAAG,YAA1CrwC,GAAjB0vC,EAAE54B,EAAEs3I,GAAGt3I,GAAG3U,QAAW81I,UAAUvoG,EAAEuoG,SAAShuI,gBAA+B,UAAUjK,GAAG,SAAS0vC,EAAE1sC,KAAK,IAAI2wJ,EAAGtF,QAAQ,GAAGntB,GAAGxxF,GAAG,GAAG4+G,GAAGqF,EAAG1E,OAAO,CAAC0E,EAAG5E,GAAG,IAAI6E,EAAG9E,EAAE,MAAM9uJ,EAAE0vC,EAAEuoG,WAAW,UAAUj4I,EAAEiK,gBAAgB,aAAaylC,EAAE1sC,MAAM,UAAU0sC,EAAE1sC,QAAQ2wJ,EAAG3E,IACrV,OAD4V2E,IAAKA,EAAGA,EAAGjyI,EAAE5K,IAAK+2I,GAAGllG,EAAEgrG,EAAGtgJ,EAAEvL,IAAW8rJ,GAAIA,EAAGlyI,EAAEguB,EAAE54B,GAAG,aAAa4K,IAAIkyI,EAAGlkH,EAAEopG,gBAClf8a,EAAG1a,YAAY,WAAWxpG,EAAE1sC,MAAMyO,GAAGi+B,EAAE,SAASA,EAAEhxC,QAAOk1J,EAAG98I,EAAEs3I,GAAGt3I,GAAG3U,OAAcuf,GAAG,IAAK,WAAaw/G,GAAG0yB,IAAK,SAASA,EAAG/D,mBAAgByB,GAAGsC,EAAGrC,GAAGz6I,EAAE06I,GAAG,MAAK,MAAM,IAAK,WAAWA,GAAGD,GAAGD,GAAG,KAAK,MAAM,IAAK,YAAYG,IAAG,EAAG,MAAM,IAAK,cAAc,IAAK,UAAU,IAAK,UAAUA,IAAG,EAAGC,GAAG/oG,EAAEt1C,EAAEvL,GAAG,MAAM,IAAK,kBAAkB,GAAGupJ,GAAG,MAAM,IAAK,UAAU,IAAK,QAAQK,GAAG/oG,EAAEt1C,EAAEvL,GAAG,IAAI+rJ,EAAG,GAAG/G,GAAG92I,EAAE,CAAC,OAAO0L,GAAG,IAAK,mBAAmB,IAAIoyI,EAAG,qBAAqB,MAAM99I,EAAE,IAAK,iBAAiB89I,EAAG,mBACpe,MAAM99I,EAAE,IAAK,oBAAoB89I,EAAG,sBAAsB,MAAM99I,EAAE89I,OAAG,CAAM,MAAMvG,GAAGF,GAAG3rI,EAAErO,KAAKygJ,EAAG,oBAAoB,YAAYpyI,GAAG,MAAMrO,EAAEsgI,UAAUmgB,EAAG,sBAAsBA,IAAK5G,IAAI,OAAO75I,EAAEkI,SAASgyI,IAAI,uBAAuBuG,EAAG,qBAAqBA,GAAIvG,KAAKsG,EAAGjN,OAAYF,GAAG,UAARD,GAAG3+I,GAAkB2+I,GAAG/nJ,MAAM+nJ,GAAGlmI,YAAYgtI,IAAG,IAAiB,GAAZqG,EAAG9F,GAAGh3I,EAAEg9I,IAAS52J,SAAS42J,EAAG,IAAIjK,GAAGiK,EAAGpyI,EAAE,KAAKrO,EAAEvL,GAAG6gD,EAAEtqD,KAAK,CAACoS,MAAMqjJ,EAAGpwG,UAAUkwG,IAAKC,EAAGC,EAAGrrJ,KAAKorJ,EAAa,QAATA,EAAGvG,GAAGj6I,MAAeygJ,EAAGrrJ,KAAKorJ,MAAUA,EAAG5G,GA5BhM,SAAYvrI,EAAE1L,GAAG,OAAO0L,GAAG,IAAK,iBAAiB,OAAO4rI,GAAGt3I,GAAG,IAAK,WAAW,OAAG,KAAKA,EAAEo1I,MAAa,MAAKgC,IAAG,EAAUD,IAAG,IAAK,YAAY,OAAOzrI,EAAE1L,EAAEvN,QAAS0kJ,IAAIC,GAAG,KAAK1rI,EAAE,QAAQ,OAAO,KAAK,CA4BEqyI,CAAGryI,EAAErO,GA3Bzd,SAAYqO,EAAE1L,GAAG,GAAGu3I,GAAG,MAAM,mBAAmB7rI,IAAIorI,IAAIO,GAAG3rI,EAAE1L,IAAI0L,EAAEklI,KAAKD,GAAGD,GAAGD,GAAG,KAAK8G,IAAG,EAAG7rI,GAAG,KAAK,OAAOA,GAAG,IAAK,QAAgQ,QAAQ,OAAO,KAA3P,IAAK,WAAW,KAAK1L,EAAEwyI,SAASxyI,EAAE0yI,QAAQ1yI,EAAE2yI,UAAU3yI,EAAEwyI,SAASxyI,EAAE0yI,OAAO,CAAC,GAAG1yI,EAAEg+I,MAAM,EAAEh+I,EAAEg+I,KAAK92J,OAAO,OAAO8Y,EAAEg+I,KAAK,GAAGh+I,EAAEo1I,MAAM,OAAO1lJ,OAAO8qD,aAAax6C,EAAEo1I,MAAM,CAAC,OAAO,KAAK,IAAK,iBAAiB,OAAO8B,IAAI,OAAOl3I,EAAEuF,OAAO,KAAKvF,EAAEvN,KAAyB,CA2BqFwrJ,CAAGvyI,EAAErO,MACje,GADoeyD,EAAEg3I,GAAGh3I,EAAE,kBACve5Z,SAAS4K,EAAE,IAAI+hJ,GAAG,gBAAgB,cAAc,KAAKx2I,EAAEvL,GAAG6gD,EAAEtqD,KAAK,CAACoS,MAAM3I,EAAE47C,UAAU5sC,IAAIhP,EAAEW,KAAKorJ,GAAG,CAAC3F,GAAGvlG,EAAE3yC,EAAE,GAAE,CAAC,SAASu9I,GAAG7xI,EAAE1L,EAAE3C,GAAG,MAAM,CAACk4C,SAAS7pC,EAAEmD,SAAS7O,EAAE0oC,cAAcrrC,EAAE,CAAC,SAASy6I,GAAGpsI,EAAE1L,GAAG,IAAI,IAAI3C,EAAE2C,EAAE,UAAUc,EAAE,GAAG,OAAO4K,GAAG,CAAC,IAAI5Z,EAAE4Z,EAAE7iB,EAAEiJ,EAAEs3I,UAAU,IAAIt3I,EAAEomB,KAAK,OAAOrvB,IAAIiJ,EAAEjJ,EAAY,OAAVA,EAAE+gJ,GAAGl+H,EAAErO,KAAYyD,EAAEk7F,QAAQuhD,GAAG7xI,EAAE7iB,EAAEiJ,IAAc,OAAVjJ,EAAE+gJ,GAAGl+H,EAAE1L,KAAYc,EAAEzY,KAAKk1J,GAAG7xI,EAAE7iB,EAAEiJ,KAAK4Z,EAAEA,EAAE8+H,MAAM,CAAC,OAAO1pI,CAAC,CAAC,SAAS28I,GAAG/xI,GAAG,GAAG,OAAOA,EAAE,OAAO,KAAK,GAAGA,EAAEA,EAAE8+H,aAAa9+H,GAAG,IAAIA,EAAEwM,KAAK,OAAOxM,GAAI,IAAI,CACnd,SAASgyI,GAAGhyI,EAAE1L,EAAE3C,EAAEyD,EAAEhP,GAAG,IAAI,IAAIjJ,EAAEmX,EAAEkxI,WAAWv+F,EAAE,GAAG,OAAOt1C,GAAGA,IAAIyD,GAAG,CAAC,IAAI44B,EAAEr8B,EAAErT,EAAE0vC,EAAE6wG,UAAU33F,EAAElZ,EAAE0vG,UAAU,GAAG,OAAOp/I,GAAGA,IAAI8W,EAAE,MAAM,IAAI44B,EAAExhB,KAAK,OAAO06B,IAAIlZ,EAAEkZ,EAAE9gD,EAAa,OAAV9H,EAAE4/I,GAAGvsI,EAAExU,KAAY8pD,EAAEqpD,QAAQuhD,GAAGlgJ,EAAErT,EAAE0vC,IAAK5nC,GAAc,OAAV9H,EAAE4/I,GAAGvsI,EAAExU,KAAY8pD,EAAEtqD,KAAKk1J,GAAGlgJ,EAAErT,EAAE0vC,KAAMr8B,EAAEA,EAAEmtI,MAAM,CAAC,IAAI73F,EAAEzrD,QAAQwkB,EAAErjB,KAAK,CAACoS,MAAMuF,EAAE0tC,UAAUiF,GAAG,CAAC,IAAIurG,GAAG,SAASC,GAAG,iBAAiB,SAASC,GAAG1yI,GAAG,OAAO,kBAAkBA,EAAEA,EAAE,GAAGA,GAAG5a,QAAQotJ,GAAG,MAAMptJ,QAAQqtJ,GAAG,GAAG,CAAC,SAASE,GAAG3yI,EAAE1L,EAAE3C,GAAW,GAAR2C,EAAEo+I,GAAGp+I,GAAMo+I,GAAG1yI,KAAK1L,GAAG3C,EAAE,MAAM7M,MAAMhF,EAAE,KAAM,CAAC,SAAS8yJ,KAAK,CAC9e,IAAIC,GAAG,KAAKC,GAAG,KAAK,SAASC,GAAG/yI,EAAE1L,GAAG,MAAM,aAAa0L,GAAG,aAAaA,GAAG,kBAAkB1L,EAAEmR,UAAU,kBAAkBnR,EAAEmR,UAAU,kBAAkBnR,EAAE6jI,yBAAyB,OAAO7jI,EAAE6jI,yBAAyB,MAAM7jI,EAAE6jI,wBAAwB6a,MAAM,CAC5P,IAAIC,GAAG,oBAAoBziJ,WAAWA,gBAAW,EAAO0iJ,GAAG,oBAAoBh9E,aAAaA,kBAAa,EAAOi9E,GAAG,oBAAoBrxI,QAAQA,aAAQ,EAAOsxI,GAAG,oBAAoBC,eAAeA,eAAe,qBAAqBF,GAAG,SAASnzI,GAAG,OAAOmzI,GAAGpxI,QAAQ,MAAMxR,KAAKyP,GAAG8xC,MAAMwhG,GAAG,EAAEL,GAAG,SAASK,GAAGtzI,GAAGxP,YAAW,WAAW,MAAMwP,CAAE,GAAE,CACpV,SAASuzI,GAAGvzI,EAAE1L,GAAG,IAAI3C,EAAE2C,EAAEc,EAAE,EAAE,EAAE,CAAC,IAAIhP,EAAEuL,EAAEi8I,YAA6B,GAAjB5tI,EAAEgjB,YAAYrxB,GAAMvL,GAAG,IAAIA,EAAE6yI,SAAS,GAAY,QAATtnI,EAAEvL,EAAEW,MAAc,CAAC,GAAG,IAAIqO,EAA0B,OAAvB4K,EAAEgjB,YAAY58B,QAAGi+I,GAAG/vI,GAAUc,GAAG,KAAK,MAAMzD,GAAG,OAAOA,GAAG,OAAOA,GAAGyD,IAAIzD,EAAEvL,CAAC,OAAOuL,GAAG0yI,GAAG/vI,EAAE,CAAC,SAASk/I,GAAGxzI,GAAG,KAAK,MAAMA,EAAEA,EAAEA,EAAE4tI,YAAY,CAAC,IAAIt5I,EAAE0L,EAAEi5H,SAAS,GAAG,IAAI3kI,GAAG,IAAIA,EAAE,MAAM,GAAG,IAAIA,EAAE,CAAU,GAAG,OAAZA,EAAE0L,EAAEjZ,OAAiB,OAAOuN,GAAG,OAAOA,EAAE,MAAM,GAAG,OAAOA,EAAE,OAAO,IAAI,CAAC,CAAC,OAAO0L,CAAC,CACjY,SAASyzI,GAAGzzI,GAAGA,EAAEA,EAAE0zI,gBAAgB,IAAI,IAAIp/I,EAAE,EAAE0L,GAAG,CAAC,GAAG,IAAIA,EAAEi5H,SAAS,CAAC,IAAItnI,EAAEqO,EAAEjZ,KAAK,GAAG,MAAM4K,GAAG,OAAOA,GAAG,OAAOA,EAAE,CAAC,GAAG,IAAI2C,EAAE,OAAO0L,EAAE1L,GAAG,KAAK,OAAO3C,GAAG2C,GAAG,CAAC0L,EAAEA,EAAE0zI,eAAe,CAAC,OAAO,IAAI,CAAC,IAAIC,GAAG5hJ,KAAKG,SAAShW,SAAS,IAAIyJ,MAAM,GAAGiuJ,GAAG,gBAAgBD,GAAGE,GAAG,gBAAgBF,GAAG7B,GAAG,oBAAoB6B,GAAGpC,GAAG,iBAAiBoC,GAAGG,GAAG,oBAAoBH,GAAGI,GAAG,kBAAkBJ,GAClX,SAAS/P,GAAG5jI,GAAG,IAAI1L,EAAE0L,EAAE4zI,IAAI,GAAGt/I,EAAE,OAAOA,EAAE,IAAI,IAAI3C,EAAEqO,EAAEd,WAAWvN,GAAG,CAAC,GAAG2C,EAAE3C,EAAEmgJ,KAAKngJ,EAAEiiJ,IAAI,CAAe,GAAdjiJ,EAAE2C,EAAEuqI,UAAa,OAAOvqI,EAAE8qI,OAAO,OAAOztI,GAAG,OAAOA,EAAEytI,MAAM,IAAIp/H,EAAEyzI,GAAGzzI,GAAG,OAAOA,GAAG,CAAC,GAAGrO,EAAEqO,EAAE4zI,IAAI,OAAOjiJ,EAAEqO,EAAEyzI,GAAGzzI,EAAE,CAAC,OAAO1L,CAAC,CAAK3C,GAAJqO,EAAErO,GAAMuN,UAAU,CAAC,OAAO,IAAI,CAAC,SAASu+H,GAAGz9H,GAAkB,QAAfA,EAAEA,EAAE4zI,KAAK5zI,EAAE8xI,MAAc,IAAI9xI,EAAEwM,KAAK,IAAIxM,EAAEwM,KAAK,KAAKxM,EAAEwM,KAAK,IAAIxM,EAAEwM,IAAI,KAAKxM,CAAC,CAAC,SAAS0sI,GAAG1sI,GAAG,GAAG,IAAIA,EAAEwM,KAAK,IAAIxM,EAAEwM,IAAI,OAAOxM,EAAE09H,UAAU,MAAM54I,MAAMhF,EAAE,IAAK,CAAC,SAAS69I,GAAG39H,GAAG,OAAOA,EAAE6zI,KAAK,IAAI,CAAC,IAAIG,GAAG,GAAGC,IAAI,EAAE,SAASC,GAAGl0I,GAAG,MAAM,CAAC2d,QAAQ3d,EAAE,CACve,SAASqtB,GAAErtB,GAAG,EAAEi0I,KAAKj0I,EAAE2d,QAAQq2H,GAAGC,IAAID,GAAGC,IAAI,KAAKA,KAAK,CAAC,SAAS7oH,GAAEprB,EAAE1L,GAAG2/I,KAAKD,GAAGC,IAAIj0I,EAAE2d,QAAQ3d,EAAE2d,QAAQrpB,CAAC,CAAC,IAAI6/I,GAAG,CAAC,EAAElmH,GAAEimH,GAAGC,IAAIC,GAAGF,IAAG,GAAIG,GAAGF,GAAG,SAASG,GAAGt0I,EAAE1L,GAAG,IAAI3C,EAAEqO,EAAE1e,KAAKkkD,aAAa,IAAI7zC,EAAE,OAAOwiJ,GAAG,IAAI/+I,EAAE4K,EAAE09H,UAAU,GAAGtoI,GAAGA,EAAEm/I,8CAA8CjgJ,EAAE,OAAOc,EAAEo/I,0CAA0C,IAASr3J,EAALiJ,EAAE,CAAC,EAAI,IAAIjJ,KAAKwU,EAAEvL,EAAEjJ,GAAGmX,EAAEnX,GAAoH,OAAjHiY,KAAI4K,EAAEA,EAAE09H,WAAY6W,4CAA4CjgJ,EAAE0L,EAAEw0I,0CAA0CpuJ,GAAUA,CAAC,CAC9d,SAASquJ,GAAGz0I,GAAyB,OAAO,QAA7BA,EAAEA,EAAEslC,yBAAmC,IAAStlC,CAAC,CAAC,SAAS00I,KAAKrnH,GAAE+mH,IAAI/mH,GAAEY,GAAE,CAAC,SAAS0mH,GAAG30I,EAAE1L,EAAE3C,GAAG,GAAGs8B,GAAEtQ,UAAUw2H,GAAG,MAAMrvJ,MAAMhF,EAAE,MAAMsrC,GAAE6C,GAAE35B,GAAG82B,GAAEgpH,GAAGziJ,EAAE,CAAC,SAASijJ,GAAG50I,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAE4K,EAAE09H,UAAgC,GAAtBppI,EAAEA,EAAEgxC,kBAAqB,oBAAoBlwC,EAAEy/I,gBAAgB,OAAOljJ,EAAwB,IAAI,IAAIvL,KAA9BgP,EAAEA,EAAEy/I,kBAAiC,KAAKzuJ,KAAKkO,GAAG,MAAMxP,MAAMhF,EAAE,IAAIs2I,EAAGp2H,IAAI,UAAU5Z,IAAI,OAAOghD,EAAE,CAAC,EAAEz1C,EAAEyD,EAAE,CACxX,SAAS0/I,GAAG90I,GAA2G,OAAxGA,GAAGA,EAAEA,EAAE09H,YAAY19H,EAAE+0I,2CAA2CZ,GAAGE,GAAGpmH,GAAEtQ,QAAQyN,GAAE6C,GAAEjuB,GAAGorB,GAAEgpH,GAAGA,GAAGz2H,UAAe,CAAE,CAAC,SAASq3H,GAAGh1I,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAE4K,EAAE09H,UAAU,IAAItoI,EAAE,MAAMtQ,MAAMhF,EAAE,MAAM6R,GAAGqO,EAAE40I,GAAG50I,EAAE1L,EAAE+/I,IAAIj/I,EAAE2/I,0CAA0C/0I,EAAEqtB,GAAE+mH,IAAI/mH,GAAEY,IAAG7C,GAAE6C,GAAEjuB,IAAIqtB,GAAE+mH,IAAIhpH,GAAEgpH,GAAGziJ,EAAE,CAAC,IAAIsjJ,GAAG,KAAKC,IAAG,EAAGC,IAAG,EAAG,SAASC,GAAGp1I,GAAG,OAAOi1I,GAAGA,GAAG,CAACj1I,GAAGi1I,GAAGt4J,KAAKqjB,EAAE,CAChW,SAASq1I,KAAK,IAAIF,IAAI,OAAOF,GAAG,CAACE,IAAG,EAAG,IAAIn1I,EAAE,EAAE1L,EAAE0c,GAAE,IAAI,IAAIrf,EAAEsjJ,GAAG,IAAIjkI,GAAE,EAAEhR,EAAErO,EAAEnW,OAAOwkB,IAAI,CAAC,IAAI5K,EAAEzD,EAAEqO,GAAG,GAAG5K,EAAEA,GAAE,SAAU,OAAOA,EAAE,CAAC6/I,GAAG,KAAKC,IAAG,CAAE,CAAC,MAAM9uJ,GAAG,MAAM,OAAO6uJ,KAAKA,GAAGA,GAAGtvJ,MAAMqa,EAAE,IAAIw/H,GAAGW,GAAGkV,IAAIjvJ,CAAE,CAAC,QAAQ4qB,GAAE1c,EAAE6gJ,IAAG,CAAE,CAAC,CAAC,OAAO,IAAI,CAAC,IAAIG,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAGC,GAAG,EAAEC,GAAG,KAAKC,GAAG,EAAEC,GAAG,GAAG,SAASC,GAAG/1I,EAAE1L,GAAGghJ,GAAGC,MAAME,GAAGH,GAAGC,MAAMC,GAAGA,GAAGx1I,EAAEy1I,GAAGnhJ,CAAC,CACjV,SAAS0hJ,GAAGh2I,EAAE1L,EAAE3C,GAAG+jJ,GAAGC,MAAME,GAAGH,GAAGC,MAAMG,GAAGJ,GAAGC,MAAMC,GAAGA,GAAG51I,EAAE,IAAI5K,EAAEygJ,GAAG71I,EAAE81I,GAAG,IAAI1vJ,EAAE,GAAG26I,GAAG3rI,GAAG,EAAEA,KAAK,GAAGhP,GAAGuL,GAAG,EAAE,IAAIxU,EAAE,GAAG4jJ,GAAGzsI,GAAGlO,EAAE,GAAG,GAAGjJ,EAAE,CAAC,IAAI8pD,EAAE7gD,EAAEA,EAAE,EAAEjJ,GAAGiY,GAAG,GAAG6xC,GAAG,GAAG/qD,SAAS,IAAIkZ,IAAI6xC,EAAE7gD,GAAG6gD,EAAE4uG,GAAG,GAAG,GAAG9U,GAAGzsI,GAAGlO,EAAEuL,GAAGvL,EAAEgP,EAAE0gJ,GAAG34J,EAAE6iB,CAAC,MAAM61I,GAAG,GAAG14J,EAAEwU,GAAGvL,EAAEgP,EAAE0gJ,GAAG91I,CAAC,CAAC,SAASi2I,GAAGj2I,GAAG,OAAOA,EAAE8+H,SAASiX,GAAG/1I,EAAE,GAAGg2I,GAAGh2I,EAAE,EAAE,GAAG,CAAC,SAASk2I,GAAGl2I,GAAG,KAAKA,IAAIw1I,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,KAAK,KAAKv1I,IAAI41I,IAAIA,GAAGF,KAAKC,IAAID,GAAGC,IAAI,KAAKG,GAAGJ,KAAKC,IAAID,GAAGC,IAAI,KAAKE,GAAGH,KAAKC,IAAID,GAAGC,IAAI,IAAI,CAAC,IAAIQ,GAAG,KAAKC,GAAG,KAAKppH,IAAE,EAAGqpH,GAAG,KACje,SAASC,GAAGt2I,EAAE1L,GAAG,IAAI3C,EAAE4kJ,GAAG,EAAE,KAAK,KAAK,GAAG5kJ,EAAEi9H,YAAY,UAAUj9H,EAAE+rI,UAAUppI,EAAE3C,EAAEmtI,OAAO9+H,EAAgB,QAAd1L,EAAE0L,EAAEw2I,YAAoBx2I,EAAEw2I,UAAU,CAAC7kJ,GAAGqO,EAAEqhC,OAAO,IAAI/sC,EAAE3X,KAAKgV,EAAE,CACxJ,SAAS8kJ,GAAGz2I,EAAE1L,GAAG,OAAO0L,EAAEwM,KAAK,KAAK,EAAE,IAAI7a,EAAEqO,EAAE1e,KAAyE,OAAO,QAA3EgT,EAAE,IAAIA,EAAE2kI,UAAUtnI,EAAEpJ,gBAAgB+L,EAAEiiI,SAAShuI,cAAc,KAAK+L,KAAmB0L,EAAE09H,UAAUppI,EAAE6hJ,GAAGn2I,EAAEo2I,GAAG5C,GAAGl/I,EAAEskI,aAAY,GAAO,KAAK,EAAE,OAAoD,QAA7CtkI,EAAE,KAAK0L,EAAE02I,cAAc,IAAIpiJ,EAAE2kI,SAAS,KAAK3kI,KAAY0L,EAAE09H,UAAUppI,EAAE6hJ,GAAGn2I,EAAEo2I,GAAG,MAAK,GAAO,KAAK,GAAG,OAA+B,QAAxB9hJ,EAAE,IAAIA,EAAE2kI,SAAS,KAAK3kI,KAAY3C,EAAE,OAAOikJ,GAAG,CAACpoJ,GAAGqoJ,GAAGc,SAASb,IAAI,KAAK91I,EAAEg/H,cAAc,CAACC,WAAW3qI,EAAEsiJ,YAAYjlJ,EAAEklJ,UAAU,aAAYllJ,EAAE4kJ,GAAG,GAAG,KAAK,KAAK,IAAK7Y,UAAUppI,EAAE3C,EAAEmtI,OAAO9+H,EAAEA,EAAEo/H,MAAMztI,EAAEwkJ,GAAGn2I,EAAEo2I,GAClf,MAAK,GAAO,QAAQ,OAAM,EAAG,CAAC,SAASU,GAAG92I,GAAG,OAAO,KAAY,EAAPA,EAAE0gB,OAAS,KAAa,IAAR1gB,EAAEqhC,MAAU,CAAC,SAAS01G,GAAG/2I,GAAG,GAAGgtB,GAAE,CAAC,IAAI14B,EAAE8hJ,GAAG,GAAG9hJ,EAAE,CAAC,IAAI3C,EAAE2C,EAAE,IAAImiJ,GAAGz2I,EAAE1L,GAAG,CAAC,GAAGwiJ,GAAG92I,GAAG,MAAMlb,MAAMhF,EAAE,MAAMwU,EAAEk/I,GAAG7hJ,EAAEi8I,aAAa,IAAIx4I,EAAE+gJ,GAAG7hJ,GAAGmiJ,GAAGz2I,EAAE1L,GAAGgiJ,GAAGlhJ,EAAEzD,IAAIqO,EAAEqhC,OAAe,KAATrhC,EAAEqhC,MAAY,EAAErU,IAAE,EAAGmpH,GAAGn2I,EAAE,CAAC,KAAK,CAAC,GAAG82I,GAAG92I,GAAG,MAAMlb,MAAMhF,EAAE,MAAMkgB,EAAEqhC,OAAe,KAATrhC,EAAEqhC,MAAY,EAAErU,IAAE,EAAGmpH,GAAGn2I,CAAC,CAAC,CAAC,CAAC,SAASg3I,GAAGh3I,GAAG,IAAIA,EAAEA,EAAE8+H,OAAO,OAAO9+H,GAAG,IAAIA,EAAEwM,KAAK,IAAIxM,EAAEwM,KAAK,KAAKxM,EAAEwM,KAAKxM,EAAEA,EAAE8+H,OAAOqX,GAAGn2I,CAAC,CACha,SAASi3I,GAAGj3I,GAAG,GAAGA,IAAIm2I,GAAG,OAAM,EAAG,IAAInpH,GAAE,OAAOgqH,GAAGh3I,GAAGgtB,IAAE,GAAG,EAAG,IAAI14B,EAAkG,IAA/FA,EAAE,IAAI0L,EAAEwM,QAAQlY,EAAE,IAAI0L,EAAEwM,OAAgBlY,EAAE,UAAXA,EAAE0L,EAAE1e,OAAmB,SAASgT,IAAIy+I,GAAG/yI,EAAE1e,KAAK0e,EAAEk3I,gBAAmB5iJ,IAAIA,EAAE8hJ,IAAI,CAAC,GAAGU,GAAG92I,GAAG,MAAMm3I,KAAKryJ,MAAMhF,EAAE,MAAM,KAAKwU,GAAGgiJ,GAAGt2I,EAAE1L,GAAGA,EAAEk/I,GAAGl/I,EAAEs5I,YAAY,CAAO,GAANoJ,GAAGh3I,GAAM,KAAKA,EAAEwM,IAAI,CAAgD,KAA7BxM,EAAE,QAApBA,EAAEA,EAAEg/H,eAAyBh/H,EAAEi/H,WAAW,MAAW,MAAMn6I,MAAMhF,EAAE,MAAMkgB,EAAE,CAAiB,IAAhBA,EAAEA,EAAE4tI,YAAgBt5I,EAAE,EAAE0L,GAAG,CAAC,GAAG,IAAIA,EAAEi5H,SAAS,CAAC,IAAItnI,EAAEqO,EAAEjZ,KAAK,GAAG,OAAO4K,EAAE,CAAC,GAAG,IAAI2C,EAAE,CAAC8hJ,GAAG5C,GAAGxzI,EAAE4tI,aAAa,MAAM5tI,CAAC,CAAC1L,GAAG,KAAK,MAAM3C,GAAG,OAAOA,GAAG,OAAOA,GAAG2C,GAAG,CAAC0L,EAAEA,EAAE4tI,WAAW,CAACwI,GACjgB,IAAI,CAAC,MAAMA,GAAGD,GAAG3C,GAAGxzI,EAAE09H,UAAUkQ,aAAa,KAAK,OAAM,CAAE,CAAC,SAASuJ,KAAK,IAAI,IAAIn3I,EAAEo2I,GAAGp2I,GAAGA,EAAEwzI,GAAGxzI,EAAE4tI,YAAY,CAAC,SAASwJ,KAAKhB,GAAGD,GAAG,KAAKnpH,IAAE,CAAE,CAAC,SAASqqH,GAAGr3I,GAAG,OAAOq2I,GAAGA,GAAG,CAACr2I,GAAGq2I,GAAG15J,KAAKqjB,EAAE,CAAC,IAAIs3I,GAAG3iB,EAAG4P,wBAAwB,SAASgT,GAAGv3I,EAAE1L,GAAG,GAAG0L,GAAGA,EAAEylC,aAAa,CAA4B,IAAI,IAAI9zC,KAAnC2C,EAAE8yC,EAAE,CAAC,EAAE9yC,GAAG0L,EAAEA,EAAEylC,kBAA4B,IAASnxC,EAAE3C,KAAK2C,EAAE3C,GAAGqO,EAAErO,IAAI,OAAO2C,CAAC,CAAC,OAAOA,CAAC,CAAC,IAAIkjJ,GAAGtD,GAAG,MAAMuD,GAAG,KAAKC,GAAG,KAAKC,GAAG,KAAK,SAASC,KAAKD,GAAGD,GAAGD,GAAG,IAAI,CAAC,SAASI,GAAG73I,GAAG,IAAI1L,EAAEkjJ,GAAG75H,QAAQ0P,GAAEmqH,IAAIx3I,EAAE83I,cAAcxjJ,CAAC,CACjd,SAASyjJ,GAAG/3I,EAAE1L,EAAE3C,GAAG,KAAK,OAAOqO,GAAG,CAAC,IAAI5K,EAAE4K,EAAE6+H,UAA+H,IAApH7+H,EAAEg4I,WAAW1jJ,KAAKA,GAAG0L,EAAEg4I,YAAY1jJ,EAAE,OAAOc,IAAIA,EAAE4iJ,YAAY1jJ,IAAI,OAAOc,IAAIA,EAAE4iJ,WAAW1jJ,KAAKA,IAAIc,EAAE4iJ,YAAY1jJ,GAAM0L,IAAIrO,EAAE,MAAMqO,EAAEA,EAAE8+H,MAAM,CAAC,CAAC,SAASmZ,GAAGj4I,EAAE1L,GAAGmjJ,GAAGz3I,EAAE23I,GAAGD,GAAG,KAAsB,QAAjB13I,EAAEA,EAAEk4I,eAAuB,OAAOl4I,EAAEm4I,eAAe,KAAKn4I,EAAEo4I,MAAM9jJ,KAAK+jJ,IAAG,GAAIr4I,EAAEm4I,aAAa,KAAK,CACtU,SAASG,GAAGt4I,GAAG,IAAI1L,EAAE0L,EAAE83I,cAAc,GAAGH,KAAK33I,EAAE,GAAGA,EAAE,CAAC5gB,QAAQ4gB,EAAEu4I,cAAcjkJ,EAAErE,KAAK,MAAM,OAAOynJ,GAAG,CAAC,GAAG,OAAOD,GAAG,MAAM3yJ,MAAMhF,EAAE,MAAM43J,GAAG13I,EAAEy3I,GAAGS,aAAa,CAACE,MAAM,EAAED,aAAan4I,EAAE,MAAM03I,GAAGA,GAAGznJ,KAAK+P,EAAE,OAAO1L,CAAC,CAAC,IAAIkkJ,GAAG,KAAK,SAASC,GAAGz4I,GAAG,OAAOw4I,GAAGA,GAAG,CAACx4I,GAAGw4I,GAAG77J,KAAKqjB,EAAE,CAAC,SAAS04I,GAAG14I,EAAE1L,EAAE3C,EAAEyD,GAAG,IAAIhP,EAAEkO,EAAEqkJ,YAA+E,OAAnE,OAAOvyJ,GAAGuL,EAAE1B,KAAK0B,EAAE8mJ,GAAGnkJ,KAAK3C,EAAE1B,KAAK7J,EAAE6J,KAAK7J,EAAE6J,KAAK0B,GAAG2C,EAAEqkJ,YAAYhnJ,EAASinJ,GAAG54I,EAAE5K,EAAE,CAChY,SAASwjJ,GAAG54I,EAAE1L,GAAG0L,EAAEo4I,OAAO9jJ,EAAE,IAAI3C,EAAEqO,EAAE6+H,UAAqC,IAA3B,OAAOltI,IAAIA,EAAEymJ,OAAO9jJ,GAAG3C,EAAEqO,EAAMA,EAAEA,EAAE8+H,OAAO,OAAO9+H,GAAGA,EAAEg4I,YAAY1jJ,EAAgB,QAAd3C,EAAEqO,EAAE6+H,aAAqBltI,EAAEqmJ,YAAY1jJ,GAAG3C,EAAEqO,EAAEA,EAAEA,EAAE8+H,OAAO,OAAO,IAAIntI,EAAE6a,IAAI7a,EAAE+rI,UAAU,IAAI,CAAC,IAAImb,IAAG,EAAG,SAASC,GAAG94I,GAAGA,EAAE+4I,YAAY,CAACC,UAAUh5I,EAAEg/H,cAAcia,gBAAgB,KAAKC,eAAe,KAAK1kI,OAAO,CAAC2kI,QAAQ,KAAKR,YAAY,KAAKP,MAAM,GAAGgB,QAAQ,KAAK,CACpX,SAASC,GAAGr5I,EAAE1L,GAAG0L,EAAEA,EAAE+4I,YAAYzkJ,EAAEykJ,cAAc/4I,IAAI1L,EAAEykJ,YAAY,CAACC,UAAUh5I,EAAEg5I,UAAUC,gBAAgBj5I,EAAEi5I,gBAAgBC,eAAel5I,EAAEk5I,eAAe1kI,OAAOxU,EAAEwU,OAAO4kI,QAAQp5I,EAAEo5I,SAAS,CAAC,SAASE,GAAGt5I,EAAE1L,GAAG,MAAM,CAAC+2C,UAAUrrC,EAAEu5I,KAAKjlJ,EAAEkY,IAAI,EAAExV,QAAQ,KAAK0qC,SAAS,KAAKzxC,KAAK,KAAK,CACtR,SAASupJ,GAAGx5I,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAE4K,EAAE+4I,YAAY,GAAG,OAAO3jJ,EAAE,OAAO,KAAgB,GAAXA,EAAEA,EAAEof,OAAU,KAAO,EAAF0Z,IAAK,CAAC,IAAI9nC,EAAEgP,EAAE+jJ,QAA+D,OAAvD,OAAO/yJ,EAAEkO,EAAErE,KAAKqE,GAAGA,EAAErE,KAAK7J,EAAE6J,KAAK7J,EAAE6J,KAAKqE,GAAGc,EAAE+jJ,QAAQ7kJ,EAASskJ,GAAG54I,EAAErO,EAAE,CAAoF,OAAnE,QAAhBvL,EAAEgP,EAAEujJ,cAAsBrkJ,EAAErE,KAAKqE,EAAEmkJ,GAAGrjJ,KAAKd,EAAErE,KAAK7J,EAAE6J,KAAK7J,EAAE6J,KAAKqE,GAAGc,EAAEujJ,YAAYrkJ,EAASskJ,GAAG54I,EAAErO,EAAE,CAAC,SAAS8nJ,GAAGz5I,EAAE1L,EAAE3C,GAAmB,GAAG,QAAnB2C,EAAEA,EAAEykJ,eAA0BzkJ,EAAEA,EAAEkgB,OAAO,KAAO,QAAF7iB,IAAY,CAAC,IAAIyD,EAAEd,EAAE8jJ,MAAwBzmJ,GAAlByD,GAAG4K,EAAEwhI,aAAkBltI,EAAE8jJ,MAAMzmJ,EAAEwwI,GAAGniI,EAAErO,EAAE,CAAC,CACrZ,SAAS+nJ,GAAG15I,EAAE1L,GAAG,IAAI3C,EAAEqO,EAAE+4I,YAAY3jJ,EAAE4K,EAAE6+H,UAAU,GAAG,OAAOzpI,GAAoBzD,KAAhByD,EAAEA,EAAE2jJ,aAAmB,CAAC,IAAI3yJ,EAAE,KAAKjJ,EAAE,KAAyB,GAAG,QAAvBwU,EAAEA,EAAEsnJ,iBAA4B,CAAC,EAAE,CAAC,IAAIhyG,EAAE,CAACoE,UAAU15C,EAAE05C,UAAUkuG,KAAK5nJ,EAAE4nJ,KAAK/sI,IAAI7a,EAAE6a,IAAIxV,QAAQrF,EAAEqF,QAAQ0qC,SAAS/vC,EAAE+vC,SAASzxC,KAAK,MAAM,OAAO9S,EAAEiJ,EAAEjJ,EAAE8pD,EAAE9pD,EAAEA,EAAE8S,KAAKg3C,EAAEt1C,EAAEA,EAAE1B,IAAI,OAAO,OAAO0B,GAAG,OAAOxU,EAAEiJ,EAAEjJ,EAAEmX,EAAEnX,EAAEA,EAAE8S,KAAKqE,CAAC,MAAMlO,EAAEjJ,EAAEmX,EAAiH,OAA/G3C,EAAE,CAACqnJ,UAAU5jJ,EAAE4jJ,UAAUC,gBAAgB7yJ,EAAE8yJ,eAAe/7J,EAAEq3B,OAAOpf,EAAEof,OAAO4kI,QAAQhkJ,EAAEgkJ,cAASp5I,EAAE+4I,YAAYpnJ,EAAQ,CAAoB,QAAnBqO,EAAErO,EAAEunJ,gBAAwBvnJ,EAAEsnJ,gBAAgB3kJ,EAAE0L,EAAE/P,KACnfqE,EAAE3C,EAAEunJ,eAAe5kJ,CAAC,CACpB,SAASqlJ,GAAG35I,EAAE1L,EAAE3C,EAAEyD,GAAG,IAAIhP,EAAE4Z,EAAE+4I,YAAYF,IAAG,EAAG,IAAI17J,EAAEiJ,EAAE6yJ,gBAAgBhyG,EAAE7gD,EAAE8yJ,eAAelrH,EAAE5nC,EAAEouB,OAAO2kI,QAAQ,GAAG,OAAOnrH,EAAE,CAAC5nC,EAAEouB,OAAO2kI,QAAQ,KAAK,IAAI76J,EAAE0vC,EAAEkZ,EAAE5oD,EAAE2R,KAAK3R,EAAE2R,KAAK,KAAK,OAAOg3C,EAAE9pD,EAAE+pD,EAAED,EAAEh3C,KAAKi3C,EAAED,EAAE3oD,EAAE,IAAI0lB,EAAEhE,EAAE6+H,UAAU,OAAO76H,KAAoBgqB,GAAhBhqB,EAAEA,EAAE+0I,aAAgBG,kBAAmBjyG,IAAI,OAAOjZ,EAAEhqB,EAAEi1I,gBAAgB/xG,EAAElZ,EAAE/9B,KAAKi3C,EAAEljC,EAAEk1I,eAAe56J,GAAG,CAAC,GAAG,OAAOnB,EAAE,CAAC,IAAIuvC,EAAEtmC,EAAE4yJ,UAA6B,IAAnB/xG,EAAE,EAAEjjC,EAAEkjC,EAAE5oD,EAAE,KAAK0vC,EAAE7wC,IAAI,CAAC,IAAI4rC,EAAEiF,EAAEurH,KAAK5tH,EAAEqC,EAAEqd,UAAU,IAAIj2C,EAAE2zB,KAAKA,EAAE,CAAC,OAAO/kB,IAAIA,EAAEA,EAAE/T,KAAK,CAACo7C,UAAU1f,EAAE4tH,KAAK,EAAE/sI,IAAIwhB,EAAExhB,IAAIxV,QAAQg3B,EAAEh3B,QAAQ0qC,SAAS1T,EAAE0T,SACvfzxC,KAAK,OAAO+P,EAAE,CAAC,IAAI9d,EAAE8d,EAAE2uB,EAAEX,EAAU,OAARjF,EAAEz0B,EAAEq3B,EAAEh6B,EAASg9B,EAAEniB,KAAK,KAAK,EAAc,GAAG,oBAAftqB,EAAEysC,EAAE33B,SAAiC,CAAC01B,EAAExqC,EAAE/F,KAAKwvC,EAAEe,EAAE3D,GAAG,MAAM/oB,CAAC,CAAC0sB,EAAExqC,EAAE,MAAM8d,EAAE,KAAK,EAAE9d,EAAEm/C,OAAe,MAATn/C,EAAEm/C,MAAa,IAAI,KAAK,EAAsD,GAAG,QAA3CtY,EAAE,oBAAd7mC,EAAEysC,EAAE33B,SAAgC9U,EAAE/F,KAAKwvC,EAAEe,EAAE3D,GAAG7mC,SAAe,IAAS6mC,EAAE,MAAM/oB,EAAE0sB,EAAE0a,EAAE,CAAC,EAAE1a,EAAE3D,GAAG,MAAM/oB,EAAE,KAAK,EAAE64I,IAAG,EAAG,CAAC,OAAO7qH,EAAE0T,UAAU,IAAI1T,EAAEurH,OAAOv5I,EAAEqhC,OAAO,GAAe,QAAZtY,EAAE3iC,EAAEgzJ,SAAiBhzJ,EAAEgzJ,QAAQ,CAACprH,GAAGjF,EAAEpsC,KAAKqxC,GAAG,MAAMrC,EAAE,CAAC0f,UAAU1f,EAAE4tH,KAAKxwH,EAAEvc,IAAIwhB,EAAExhB,IAAIxV,QAAQg3B,EAAEh3B,QAAQ0qC,SAAS1T,EAAE0T,SAASzxC,KAAK,MAAM,OAAO+T,GAAGkjC,EAAEljC,EAAE2nB,EAAErtC,EAAEouC,GAAG1oB,EAAEA,EAAE/T,KAAK07B,EAAEsb,GAAGle,EAC3e,GAAG,QAAZiF,EAAEA,EAAE/9B,MAAiB,IAAsB,QAAnB+9B,EAAE5nC,EAAEouB,OAAO2kI,SAAiB,MAAenrH,GAAJjF,EAAEiF,GAAM/9B,KAAK84B,EAAE94B,KAAK,KAAK7J,EAAE8yJ,eAAenwH,EAAE3iC,EAAEouB,OAAO2kI,QAAQ,IAAI,EAAsG,GAA5F,OAAOn1I,IAAI1lB,EAAEouC,GAAGtmC,EAAE4yJ,UAAU16J,EAAE8H,EAAE6yJ,gBAAgB/xG,EAAE9gD,EAAE8yJ,eAAel1I,EAA4B,QAA1B1P,EAAElO,EAAEouB,OAAOmkI,aAAwB,CAACvyJ,EAAEkO,EAAE,GAAG2yC,GAAG7gD,EAAEmzJ,KAAKnzJ,EAAEA,EAAE6J,WAAW7J,IAAIkO,EAAE,MAAM,OAAOnX,IAAIiJ,EAAEouB,OAAO4jI,MAAM,GAAGwB,IAAI3yG,EAAEjnC,EAAEo4I,MAAMnxG,EAAEjnC,EAAEg/H,cAActyG,CAAC,CAAC,CAC9V,SAASmtH,GAAG75I,EAAE1L,EAAE3C,GAA8B,GAA3BqO,EAAE1L,EAAE8kJ,QAAQ9kJ,EAAE8kJ,QAAQ,KAAQ,OAAOp5I,EAAE,IAAI1L,EAAE,EAAEA,EAAE0L,EAAExkB,OAAO8Y,IAAI,CAAC,IAAIc,EAAE4K,EAAE1L,GAAGlO,EAAEgP,EAAEssC,SAAS,GAAG,OAAOt7C,EAAE,CAAqB,GAApBgP,EAAEssC,SAAS,KAAKtsC,EAAEzD,EAAK,oBAAoBvL,EAAE,MAAMtB,MAAMhF,EAAE,IAAIsG,IAAIA,EAAEjK,KAAKiZ,EAAE,CAAC,CAAC,CAAC,IAAI0kJ,IAAI,IAAI7mB,EAAGvtH,WAAWq0I,KAAK,SAASC,GAAGh6I,EAAE1L,EAAE3C,EAAEyD,GAA8BzD,EAAE,QAAXA,EAAEA,EAAEyD,EAAtBd,EAAE0L,EAAEg/H,sBAAmC,IAASrtI,EAAE2C,EAAE8yC,EAAE,CAAC,EAAE9yC,EAAE3C,GAAGqO,EAAEg/H,cAAcrtI,EAAE,IAAIqO,EAAEo4I,QAAQp4I,EAAE+4I,YAAYC,UAAUrnJ,EAAE,CAClX,IAAIsoJ,GAAG,CAACC,UAAU,SAASl6I,GAAG,SAAOA,EAAEA,EAAEm6I,kBAAiBvb,GAAG5+H,KAAKA,CAAI,EAAEo6I,gBAAgB,SAASp6I,EAAE1L,EAAE3C,GAAGqO,EAAEA,EAAEm6I,gBAAgB,IAAI/kJ,EAAEy3B,KAAIzmC,EAAEi0J,GAAGr6I,GAAG7iB,EAAEm8J,GAAGlkJ,EAAEhP,GAAGjJ,EAAE6Z,QAAQ1C,OAAE,IAAS3C,GAAG,OAAOA,IAAIxU,EAAEukD,SAAS/vC,GAAe,QAAZ2C,EAAEklJ,GAAGx5I,EAAE7iB,EAAEiJ,MAAck0J,GAAGhmJ,EAAE0L,EAAE5Z,EAAEgP,GAAGqkJ,GAAGnlJ,EAAE0L,EAAE5Z,GAAG,EAAEm0J,oBAAoB,SAASv6I,EAAE1L,EAAE3C,GAAGqO,EAAEA,EAAEm6I,gBAAgB,IAAI/kJ,EAAEy3B,KAAIzmC,EAAEi0J,GAAGr6I,GAAG7iB,EAAEm8J,GAAGlkJ,EAAEhP,GAAGjJ,EAAEqvB,IAAI,EAAErvB,EAAE6Z,QAAQ1C,OAAE,IAAS3C,GAAG,OAAOA,IAAIxU,EAAEukD,SAAS/vC,GAAe,QAAZ2C,EAAEklJ,GAAGx5I,EAAE7iB,EAAEiJ,MAAck0J,GAAGhmJ,EAAE0L,EAAE5Z,EAAEgP,GAAGqkJ,GAAGnlJ,EAAE0L,EAAE5Z,GAAG,EAAEo0J,mBAAmB,SAASx6I,EAAE1L,GAAG0L,EAAEA,EAAEm6I,gBAAgB,IAAIxoJ,EAAEk7B,KAAIz3B,EACnfilJ,GAAGr6I,GAAG5Z,EAAEkzJ,GAAG3nJ,EAAEyD,GAAGhP,EAAEomB,IAAI,OAAE,IAASlY,GAAG,OAAOA,IAAIlO,EAAEs7C,SAASptC,GAAe,QAAZA,EAAEklJ,GAAGx5I,EAAE5Z,EAAEgP,MAAcklJ,GAAGhmJ,EAAE0L,EAAE5K,EAAEzD,GAAG8nJ,GAAGnlJ,EAAE0L,EAAE5K,GAAG,GAAG,SAASqlJ,GAAGz6I,EAAE1L,EAAE3C,EAAEyD,EAAEhP,EAAEjJ,EAAE8pD,GAAiB,MAAM,oBAApBjnC,EAAEA,EAAE09H,WAAsCgd,sBAAsB16I,EAAE06I,sBAAsBtlJ,EAAEjY,EAAE8pD,IAAG3yC,EAAErY,YAAWqY,EAAErY,UAAU0+J,wBAAsBlN,GAAG97I,EAAEyD,KAAKq4I,GAAGrnJ,EAAEjJ,GAAK,CAC1S,SAASy9J,GAAG56I,EAAE1L,EAAE3C,GAAG,IAAIyD,GAAE,EAAGhP,EAAE+tJ,GAAOh3J,EAAEmX,EAAEixC,YAA2W,MAA/V,kBAAkBpoD,GAAG,OAAOA,EAAEA,EAAEm7J,GAAGn7J,IAAIiJ,EAAEquJ,GAAGngJ,GAAG+/I,GAAGpmH,GAAEtQ,QAAyBxgC,GAAGiY,EAAE,QAAtBA,EAAEd,EAAEkxC,oBAA4B,IAASpwC,GAAGk/I,GAAGt0I,EAAE5Z,GAAG+tJ,IAAI7/I,EAAE,IAAIA,EAAE3C,EAAExU,GAAG6iB,EAAEg/H,cAAc,OAAO1qI,EAAElK,YAAO,IAASkK,EAAElK,MAAMkK,EAAElK,MAAM,KAAKkK,EAAEumJ,QAAQZ,GAAGj6I,EAAE09H,UAAUppI,EAAEA,EAAE6lJ,gBAAgBn6I,EAAE5K,KAAI4K,EAAEA,EAAE09H,WAAY6W,4CAA4CnuJ,EAAE4Z,EAAEw0I,0CAA0Cr3J,GAAUmX,CAAC,CAC5Z,SAASwmJ,GAAG96I,EAAE1L,EAAE3C,EAAEyD,GAAG4K,EAAE1L,EAAElK,MAAM,oBAAoBkK,EAAEymJ,2BAA2BzmJ,EAAEymJ,0BAA0BppJ,EAAEyD,GAAG,oBAAoBd,EAAE0mJ,kCAAkC1mJ,EAAE0mJ,iCAAiCrpJ,EAAEyD,GAAGd,EAAElK,QAAQ4V,GAAGi6I,GAAGM,oBAAoBjmJ,EAAEA,EAAElK,MAAM,KAAK,CACpQ,SAAS6wJ,GAAGj7I,EAAE1L,EAAE3C,EAAEyD,GAAG,IAAIhP,EAAE4Z,EAAE09H,UAAUt3I,EAAEpD,MAAM2O,EAAEvL,EAAEgE,MAAM4V,EAAEg/H,cAAc54I,EAAE2zJ,KAAKD,GAAGhB,GAAG94I,GAAG,IAAI7iB,EAAEmX,EAAEixC,YAAY,kBAAkBpoD,GAAG,OAAOA,EAAEiJ,EAAEhH,QAAQk5J,GAAGn7J,IAAIA,EAAEs3J,GAAGngJ,GAAG+/I,GAAGpmH,GAAEtQ,QAAQv3B,EAAEhH,QAAQk1J,GAAGt0I,EAAE7iB,IAAIiJ,EAAEgE,MAAM4V,EAAEg/H,cAA2C,oBAA7B7hJ,EAAEmX,EAAEuxC,4BAAiDm0G,GAAGh6I,EAAE1L,EAAEnX,EAAEwU,GAAGvL,EAAEgE,MAAM4V,EAAEg/H,eAAe,oBAAoB1qI,EAAEuxC,0BAA0B,oBAAoBz/C,EAAE80J,yBAAyB,oBAAoB90J,EAAE+0J,2BAA2B,oBAAoB/0J,EAAEg1J,qBAAqB9mJ,EAAElO,EAAEgE,MACrf,oBAAoBhE,EAAEg1J,oBAAoBh1J,EAAEg1J,qBAAqB,oBAAoBh1J,EAAE+0J,2BAA2B/0J,EAAE+0J,4BAA4B7mJ,IAAIlO,EAAEgE,OAAO6vJ,GAAGM,oBAAoBn0J,EAAEA,EAAEgE,MAAM,MAAMuvJ,GAAG35I,EAAErO,EAAEvL,EAAEgP,GAAGhP,EAAEgE,MAAM4V,EAAEg/H,eAAe,oBAAoB54I,EAAE+rI,oBAAoBnyH,EAAEqhC,OAAO,QAAQ,CACpS,SAASg6G,GAAGr7I,EAAE1L,EAAE3C,GAAW,GAAG,QAAXqO,EAAErO,EAAEohI,MAAiB,oBAAoB/yH,GAAG,kBAAkBA,EAAE,CAAC,GAAGrO,EAAE2pJ,OAAO,CAAY,GAAX3pJ,EAAEA,EAAE2pJ,OAAY,CAAC,GAAG,IAAI3pJ,EAAE6a,IAAI,MAAM1nB,MAAMhF,EAAE,MAAM,IAAIsV,EAAEzD,EAAE+rI,SAAS,CAAC,IAAItoI,EAAE,MAAMtQ,MAAMhF,EAAE,IAAIkgB,IAAI,IAAI5Z,EAAEgP,EAAEjY,EAAE,GAAG6iB,EAAE,OAAG,OAAO1L,GAAG,OAAOA,EAAEy+H,KAAK,oBAAoBz+H,EAAEy+H,KAAKz+H,EAAEy+H,IAAIwoB,aAAap+J,EAASmX,EAAEy+H,KAAIz+H,EAAE,SAAS0L,GAAG,IAAI1L,EAAElO,EAAE2zJ,KAAKzlJ,IAAIwlJ,KAAKxlJ,EAAElO,EAAE2zJ,KAAK,CAAC,GAAG,OAAO/5I,SAAS1L,EAAEnX,GAAGmX,EAAEnX,GAAG6iB,CAAC,EAAE1L,EAAEinJ,WAAWp+J,EAASmX,EAAC,CAAC,GAAG,kBAAkB0L,EAAE,MAAMlb,MAAMhF,EAAE,MAAM,IAAI6R,EAAE2pJ,OAAO,MAAMx2J,MAAMhF,EAAE,IAAIkgB,GAAI,CAAC,OAAOA,CAAC,CACre,SAASw7I,GAAGx7I,EAAE1L,GAAuC,MAApC0L,EAAEhkB,OAAOC,UAAUC,SAASC,KAAKmY,GAASxP,MAAMhF,EAAE,GAAG,oBAAoBkgB,EAAE,qBAAqBhkB,OAAO8wB,KAAKxY,GAAGpV,KAAK,MAAM,IAAI8gB,GAAI,CAAC,SAASy7I,GAAGz7I,GAAiB,OAAO1L,EAAf0L,EAAEm2H,OAAen2H,EAAEk2H,SAAS,CACrM,SAASwlB,GAAG17I,GAAG,SAAS1L,EAAEA,EAAE3C,GAAG,GAAGqO,EAAE,CAAC,IAAI5K,EAAEd,EAAEkiJ,UAAU,OAAOphJ,GAAGd,EAAEkiJ,UAAU,CAAC7kJ,GAAG2C,EAAE+sC,OAAO,IAAIjsC,EAAEzY,KAAKgV,EAAE,CAAC,CAAC,SAASA,EAAEA,EAAEyD,GAAG,IAAI4K,EAAE,OAAO,KAAK,KAAK,OAAO5K,GAAGd,EAAE3C,EAAEyD,GAAGA,EAAEA,EAAEiqI,QAAQ,OAAO,IAAI,CAAC,SAASjqI,EAAE4K,EAAE1L,GAAG,IAAI0L,EAAE,IAAImjD,IAAI,OAAO7uD,GAAG,OAAOA,EAAEhV,IAAI0gB,EAAEsU,IAAIhgB,EAAEhV,IAAIgV,GAAG0L,EAAEsU,IAAIhgB,EAAEtE,MAAMsE,GAAGA,EAAEA,EAAE+qI,QAAQ,OAAOr/H,CAAC,CAAC,SAAS5Z,EAAE4Z,EAAE1L,GAAsC,OAAnC0L,EAAE27I,GAAG37I,EAAE1L,IAAKtE,MAAM,EAAEgQ,EAAEq/H,QAAQ,KAAYr/H,CAAC,CAAC,SAAS7iB,EAAEmX,EAAE3C,EAAEyD,GAAa,OAAVd,EAAEtE,MAAMoF,EAAM4K,EAA6C,QAAjB5K,EAAEd,EAAEuqI,YAA6BzpI,EAAEA,EAAEpF,OAAQ2B,GAAG2C,EAAE+sC,OAAO,EAAE1vC,GAAGyD,GAAEd,EAAE+sC,OAAO,EAAS1vC,IAArG2C,EAAE+sC,OAAO,QAAQ1vC,EAAqF,CAAC,SAASs1C,EAAE3yC,GACzd,OAD4d0L,GAC7f,OAAO1L,EAAEuqI,YAAYvqI,EAAE+sC,OAAO,GAAU/sC,CAAC,CAAC,SAAS05B,EAAEhuB,EAAE1L,EAAE3C,EAAEyD,GAAG,OAAG,OAAOd,GAAG,IAAIA,EAAEkY,MAAWlY,EAAEsnJ,GAAGjqJ,EAAEqO,EAAE0gB,KAAKtrB,IAAK0pI,OAAO9+H,EAAE1L,KAAEA,EAAElO,EAAEkO,EAAE3C,IAAKmtI,OAAO9+H,EAAS1L,EAAC,CAAC,SAAShW,EAAE0hB,EAAE1L,EAAE3C,EAAEyD,GAAG,IAAIjY,EAAEwU,EAAErQ,KAAK,OAAGnE,IAAI43I,EAAU/wH,EAAEhE,EAAE1L,EAAE3C,EAAE3O,MAAMyiB,SAASrQ,EAAEzD,EAAErS,KAAQ,OAAOgV,IAAIA,EAAEs6H,cAAczxI,GAAG,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEgqD,WAAWquF,GAAIimB,GAAGt+J,KAAKmX,EAAEhT,QAAa8T,EAAEhP,EAAEkO,EAAE3C,EAAE3O,QAAS+vI,IAAIsoB,GAAGr7I,EAAE1L,EAAE3C,GAAGyD,EAAE0pI,OAAO9+H,EAAE5K,KAAEA,EAAEymJ,GAAGlqJ,EAAErQ,KAAKqQ,EAAErS,IAAIqS,EAAE3O,MAAM,KAAKgd,EAAE0gB,KAAKtrB,IAAK29H,IAAIsoB,GAAGr7I,EAAE1L,EAAE3C,GAAGyD,EAAE0pI,OAAO9+H,EAAS5K,EAAC,CAAC,SAAS8xC,EAAElnC,EAAE1L,EAAE3C,EAAEyD,GAAG,OAAG,OAAOd,GAAG,IAAIA,EAAEkY,KACjflY,EAAEopI,UAAUqG,gBAAgBpyI,EAAEoyI,eAAezvI,EAAEopI,UAAUoe,iBAAiBnqJ,EAAEmqJ,iBAAsBxnJ,EAAEynJ,GAAGpqJ,EAAEqO,EAAE0gB,KAAKtrB,IAAK0pI,OAAO9+H,EAAE1L,KAAEA,EAAElO,EAAEkO,EAAE3C,EAAE8T,UAAU,KAAMq5H,OAAO9+H,EAAS1L,EAAC,CAAC,SAAS0P,EAAEhE,EAAE1L,EAAE3C,EAAEyD,EAAEjY,GAAG,OAAG,OAAOmX,GAAG,IAAIA,EAAEkY,MAAWlY,EAAE0nJ,GAAGrqJ,EAAEqO,EAAE0gB,KAAKtrB,EAAEjY,IAAK2hJ,OAAO9+H,EAAE1L,KAAEA,EAAElO,EAAEkO,EAAE3C,IAAKmtI,OAAO9+H,EAAS1L,EAAC,CAAC,SAASo4B,EAAE1sB,EAAE1L,EAAE3C,GAAG,GAAG,kBAAkB2C,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAOA,EAAEsnJ,GAAG,GAAGtnJ,EAAE0L,EAAE0gB,KAAK/uB,IAAKmtI,OAAO9+H,EAAE1L,EAAE,GAAG,kBAAkBA,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE6yC,UAAU,KAAK0tF,EAAG,OAAOljI,EAAEkqJ,GAAGvnJ,EAAEhT,KAAKgT,EAAEhV,IAAIgV,EAAEtR,MAAM,KAAKgd,EAAE0gB,KAAK/uB,IACjfohI,IAAIsoB,GAAGr7I,EAAE,KAAK1L,GAAG3C,EAAEmtI,OAAO9+H,EAAErO,EAAE,KAAKmjI,EAAG,OAAOxgI,EAAEynJ,GAAGznJ,EAAE0L,EAAE0gB,KAAK/uB,IAAKmtI,OAAO9+H,EAAE1L,EAAE,KAAKkhI,EAAiB,OAAO9oG,EAAE1sB,GAAE5K,EAAnBd,EAAE6hI,OAAmB7hI,EAAE4hI,UAAUvkI,GAAG,GAAGkmI,GAAGvjI,IAAIqhI,EAAGrhI,GAAG,OAAOA,EAAE0nJ,GAAG1nJ,EAAE0L,EAAE0gB,KAAK/uB,EAAE,OAAQmtI,OAAO9+H,EAAE1L,EAAEknJ,GAAGx7I,EAAE1L,EAAE,CAAC,OAAO,IAAI,CAAC,SAASy0B,EAAE/oB,EAAE1L,EAAE3C,EAAEyD,GAAG,IAAIhP,EAAE,OAAOkO,EAAEA,EAAEhV,IAAI,KAAK,GAAG,kBAAkBqS,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAO,OAAOvL,EAAE,KAAK4nC,EAAEhuB,EAAE1L,EAAE,GAAG3C,EAAEyD,GAAG,GAAG,kBAAkBzD,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEw1C,UAAU,KAAK0tF,EAAG,OAAOljI,EAAErS,MAAM8G,EAAE9H,EAAE0hB,EAAE1L,EAAE3C,EAAEyD,GAAG,KAAK,KAAK0/H,EAAG,OAAOnjI,EAAErS,MAAM8G,EAAE8gD,EAAElnC,EAAE1L,EAAE3C,EAAEyD,GAAG,KAAK,KAAKogI,EAAG,OAAiBzsG,EAAE/oB,EACpf1L,GADwelO,EAAEuL,EAAEwkI,OACxexkI,EAAEukI,UAAU9gI,GAAG,GAAGyiI,GAAGlmI,IAAIgkI,EAAGhkI,GAAG,OAAO,OAAOvL,EAAE,KAAK4d,EAAEhE,EAAE1L,EAAE3C,EAAEyD,EAAE,MAAMomJ,GAAGx7I,EAAErO,EAAE,CAAC,OAAO,IAAI,CAAC,SAASg6B,EAAE3rB,EAAE1L,EAAE3C,EAAEyD,EAAEhP,GAAG,GAAG,kBAAkBgP,GAAG,KAAKA,GAAG,kBAAkBA,EAAE,OAAwB44B,EAAE15B,EAAnB0L,EAAEA,EAAEpV,IAAI+G,IAAI,KAAW,GAAGyD,EAAEhP,GAAG,GAAG,kBAAkBgP,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAE+xC,UAAU,KAAK0tF,EAAG,OAA2Cv2I,EAAEgW,EAAtC0L,EAAEA,EAAEpV,IAAI,OAAOwK,EAAE9V,IAAIqS,EAAEyD,EAAE9V,MAAM,KAAW8V,EAAEhP,GAAG,KAAK0uI,EAAG,OAA2C5tF,EAAE5yC,EAAtC0L,EAAEA,EAAEpV,IAAI,OAAOwK,EAAE9V,IAAIqS,EAAEyD,EAAE9V,MAAM,KAAW8V,EAAEhP,GAAG,KAAKovI,EAAiB,OAAO7pG,EAAE3rB,EAAE1L,EAAE3C,GAAExU,EAAvBiY,EAAE+gI,OAAuB/gI,EAAE8gI,UAAU9vI,GAAG,GAAGyxI,GAAGziI,IAAIugI,EAAGvgI,GAAG,OAAwB4O,EAAE1P,EAAnB0L,EAAEA,EAAEpV,IAAI+G,IAAI,KAAWyD,EAAEhP,EAAE,MAAMo1J,GAAGlnJ,EAAEc,EAAE,CAAC,OAAO,IAAI,CAC9f,SAASlT,EAAEkE,EAAE6gD,EAAEjZ,EAAE1vC,GAAG,IAAI,IAAI4oD,EAAE,KAAKljC,EAAE,KAAKsoB,EAAE2a,EAAEna,EAAEma,EAAE,EAAEprD,EAAE,KAAK,OAAOywC,GAAGQ,EAAEkB,EAAExyC,OAAOsxC,IAAI,CAACR,EAAEt8B,MAAM88B,GAAGjxC,EAAEywC,EAAEA,EAAE,MAAMzwC,EAAEywC,EAAE+yG,QAAQ,IAAIn9I,EAAE6mC,EAAE3iC,EAAEkmC,EAAE0B,EAAElB,GAAGxuC,GAAG,GAAG,OAAO4D,EAAE,CAAC,OAAOoqC,IAAIA,EAAEzwC,GAAG,KAAK,CAACmkB,GAAGssB,GAAG,OAAOpqC,EAAE28I,WAAWvqI,EAAElO,EAAEkmC,GAAG2a,EAAE9pD,EAAE+E,EAAE+kD,EAAEna,GAAG,OAAO9oB,EAAEkjC,EAAEhlD,EAAE8hB,EAAEq7H,QAAQn9I,EAAE8hB,EAAE9hB,EAAEoqC,EAAEzwC,CAAC,CAAC,GAAGixC,IAAIkB,EAAExyC,OAAO,OAAOmW,EAAEvL,EAAEkmC,GAAGU,IAAG+oH,GAAG3vJ,EAAE0mC,GAAGoa,EAAE,GAAG,OAAO5a,EAAE,CAAC,KAAKQ,EAAEkB,EAAExyC,OAAOsxC,IAAkB,QAAdR,EAAEI,EAAEtmC,EAAE4nC,EAAElB,GAAGxuC,MAAc2oD,EAAE9pD,EAAEmvC,EAAE2a,EAAEna,GAAG,OAAO9oB,EAAEkjC,EAAE5a,EAAEtoB,EAAEq7H,QAAQ/yG,EAAEtoB,EAAEsoB,GAAc,OAAXU,IAAG+oH,GAAG3vJ,EAAE0mC,GAAUoa,CAAC,CAAC,IAAI5a,EAAEl3B,EAAEhP,EAAEkmC,GAAGQ,EAAEkB,EAAExyC,OAAOsxC,IAAsB,QAAlBjxC,EAAE8vC,EAAEW,EAAElmC,EAAE0mC,EAAEkB,EAAElB,GAAGxuC,MAAc0hB,GAAG,OAAOnkB,EAAEgjJ,WAAWvyG,EAAEkqC,OAAO,OACvf36E,EAAEyD,IAAIwtC,EAAEjxC,EAAEyD,KAAK2nD,EAAE9pD,EAAEtB,EAAEorD,EAAEna,GAAG,OAAO9oB,EAAEkjC,EAAErrD,EAAEmoB,EAAEq7H,QAAQxjJ,EAAEmoB,EAAEnoB,GAAuD,OAApDmkB,GAAGssB,EAAEpiB,SAAQ,SAASlK,GAAG,OAAO1L,EAAElO,EAAE4Z,EAAE,IAAGgtB,IAAG+oH,GAAG3vJ,EAAE0mC,GAAUoa,CAAC,CAAC,SAASvY,EAAEvoC,EAAE6gD,EAAEjZ,EAAE1vC,GAAG,IAAI4oD,EAAEyuF,EAAG3nG,GAAG,GAAG,oBAAoBkZ,EAAE,MAAMpiD,MAAMhF,EAAE,MAAkB,GAAG,OAAfkuC,EAAEkZ,EAAE/qD,KAAK6xC,IAAc,MAAMlpC,MAAMhF,EAAE,MAAM,IAAI,IAAIwsC,EAAE4a,EAAE,KAAKljC,EAAEijC,EAAEna,EAAEma,EAAE,EAAEprD,EAAE,KAAKqG,EAAE8rC,EAAE/9B,OAAO,OAAO+T,IAAI9hB,EAAEmmB,KAAKykB,IAAI5qC,EAAE8rC,EAAE/9B,OAAO,CAAC+T,EAAEhU,MAAM88B,GAAGjxC,EAAEmoB,EAAEA,EAAE,MAAMnoB,EAAEmoB,EAAEq7H,QAAQ,IAAI1wG,EAAE5F,EAAE3iC,EAAE4d,EAAE9hB,EAAElF,MAAMsB,GAAG,GAAG,OAAOqwC,EAAE,CAAC,OAAO3qB,IAAIA,EAAEnoB,GAAG,KAAK,CAACmkB,GAAGgE,GAAG,OAAO2qB,EAAEkwG,WAAWvqI,EAAElO,EAAE4d,GAAGijC,EAAE9pD,EAAEwxC,EAAEsY,EAAEna,GAAG,OAAOR,EAAE4a,EAAEvY,EAAErC,EAAE+yG,QAAQ1wG,EAAErC,EAAEqC,EAAE3qB,EAAEnoB,CAAC,CAAC,GAAGqG,EAAEmmB,KAAK,OAAO1W,EAAEvL,EACzf4d,GAAGgpB,IAAG+oH,GAAG3vJ,EAAE0mC,GAAGoa,EAAE,GAAG,OAAOljC,EAAE,CAAC,MAAM9hB,EAAEmmB,KAAKykB,IAAI5qC,EAAE8rC,EAAE/9B,OAAwB,QAAjB/N,EAAEwqC,EAAEtmC,EAAElE,EAAElF,MAAMsB,MAAc2oD,EAAE9pD,EAAE+E,EAAE+kD,EAAEna,GAAG,OAAOR,EAAE4a,EAAEhlD,EAAEoqC,EAAE+yG,QAAQn9I,EAAEoqC,EAAEpqC,GAAc,OAAX8qC,IAAG+oH,GAAG3vJ,EAAE0mC,GAAUoa,CAAC,CAAC,IAAIljC,EAAE5O,EAAEhP,EAAE4d,IAAI9hB,EAAEmmB,KAAKykB,IAAI5qC,EAAE8rC,EAAE/9B,OAA4B,QAArB/N,EAAEypC,EAAE3nB,EAAE5d,EAAE0mC,EAAE5qC,EAAElF,MAAMsB,MAAc0hB,GAAG,OAAO9d,EAAE28I,WAAW76H,EAAEwyD,OAAO,OAAOt0E,EAAE5C,IAAIwtC,EAAE5qC,EAAE5C,KAAK2nD,EAAE9pD,EAAE+E,EAAE+kD,EAAEna,GAAG,OAAOR,EAAE4a,EAAEhlD,EAAEoqC,EAAE+yG,QAAQn9I,EAAEoqC,EAAEpqC,GAAuD,OAApD8d,GAAGgE,EAAEkG,SAAQ,SAASlK,GAAG,OAAO1L,EAAElO,EAAE4Z,EAAE,IAAGgtB,IAAG+oH,GAAG3vJ,EAAE0mC,GAAUoa,CAAC,CAG3T,OAH4T,SAAS0qG,EAAE5xI,EAAE5K,EAAEjY,EAAE6wC,GAAkF,GAA/E,kBAAkB7wC,GAAG,OAAOA,GAAGA,EAAEmE,OAAOyzI,GAAI,OAAO53I,EAAEmC,MAAMnC,EAAEA,EAAE6F,MAAMyiB,UAAa,kBAAkBtoB,GAAG,OAAOA,EAAE,CAAC,OAAOA,EAAEgqD,UAAU,KAAK0tF,EAAG70H,EAAE,CAAC,IAAI,IAAI1hB,EAC7hBnB,EAAEmC,IAAI4nD,EAAE9xC,EAAE,OAAO8xC,GAAG,CAAC,GAAGA,EAAE5nD,MAAMhB,EAAE,CAAU,IAATA,EAAEnB,EAAEmE,QAAYyzI,GAAI,GAAG,IAAI7tF,EAAE16B,IAAI,CAAC7a,EAAEqO,EAAEknC,EAAEm4F,UAASjqI,EAAEhP,EAAE8gD,EAAE/pD,EAAE6F,MAAMyiB,WAAYq5H,OAAO9+H,EAAEA,EAAE5K,EAAE,MAAM4K,CAAC,OAAO,GAAGknC,EAAE0nF,cAActwI,GAAG,kBAAkBA,GAAG,OAAOA,GAAGA,EAAE6oD,WAAWquF,GAAIimB,GAAGn9J,KAAK4oD,EAAE5lD,KAAK,CAACqQ,EAAEqO,EAAEknC,EAAEm4F,UAASjqI,EAAEhP,EAAE8gD,EAAE/pD,EAAE6F,QAAS+vI,IAAIsoB,GAAGr7I,EAAEknC,EAAE/pD,GAAGiY,EAAE0pI,OAAO9+H,EAAEA,EAAE5K,EAAE,MAAM4K,CAAC,CAACrO,EAAEqO,EAAEknC,GAAG,KAAK,CAAM5yC,EAAE0L,EAAEknC,GAAGA,EAAEA,EAAEm4F,OAAO,CAACliJ,EAAEmE,OAAOyzI,IAAI3/H,EAAE4mJ,GAAG7+J,EAAE6F,MAAMyiB,SAASzF,EAAE0gB,KAAKsN,EAAE7wC,EAAEmC,MAAOw/I,OAAO9+H,EAAEA,EAAE5K,KAAI44B,EAAE6tH,GAAG1+J,EAAEmE,KAAKnE,EAAEmC,IAAInC,EAAE6F,MAAM,KAAKgd,EAAE0gB,KAAKsN,IAAK+kG,IAAIsoB,GAAGr7I,EAAE5K,EAAEjY,GAAG6wC,EAAE8wG,OAAO9+H,EAAEA,EAAEguB,EAAE,CAAC,OAAOiZ,EAAEjnC,GAAG,KAAK80H,EAAG90H,EAAE,CAAC,IAAIknC,EAAE/pD,EAAEmC,IAAI,OACzf8V,GAAG,CAAC,GAAGA,EAAE9V,MAAM4nD,EAAC,CAAC,GAAG,IAAI9xC,EAAEoX,KAAKpX,EAAEsoI,UAAUqG,gBAAgB5mJ,EAAE4mJ,eAAe3uI,EAAEsoI,UAAUoe,iBAAiB3+J,EAAE2+J,eAAe,CAACnqJ,EAAEqO,EAAE5K,EAAEiqI,UAASjqI,EAAEhP,EAAEgP,EAAEjY,EAAEsoB,UAAU,KAAMq5H,OAAO9+H,EAAEA,EAAE5K,EAAE,MAAM4K,CAAC,CAAMrO,EAAEqO,EAAE5K,GAAG,KAAM,CAAKd,EAAE0L,EAAE5K,GAAGA,EAAEA,EAAEiqI,OAAO,EAACjqI,EAAE2mJ,GAAG5+J,EAAE6iB,EAAE0gB,KAAKsN,IAAK8wG,OAAO9+H,EAAEA,EAAE5K,CAAC,CAAC,OAAO6xC,EAAEjnC,GAAG,KAAKw1H,EAAG,OAAiBoc,EAAE5xI,EAAE5K,GAAd8xC,EAAE/pD,EAAEg5I,OAAch5I,EAAE+4I,UAAUloG,GAAG,GAAG6pG,GAAG16I,GAAG,OAAO+E,EAAE8d,EAAE5K,EAAEjY,EAAE6wC,GAAG,GAAG2nG,EAAGx4I,GAAG,OAAOwxC,EAAE3uB,EAAE5K,EAAEjY,EAAE6wC,GAAGwtH,GAAGx7I,EAAE7iB,EAAE,CAAC,MAAM,kBAAkBA,GAAG,KAAKA,GAAG,kBAAkBA,GAAGA,EAAE,GAAGA,EAAE,OAAOiY,GAAG,IAAIA,EAAEoX,KAAK7a,EAAEqO,EAAE5K,EAAEiqI,UAASjqI,EAAEhP,EAAEgP,EAAEjY,IAAK2hJ,OAAO9+H,EAAEA,EAAE5K,IACnfzD,EAAEqO,EAAE5K,IAAGA,EAAEwmJ,GAAGz+J,EAAE6iB,EAAE0gB,KAAKsN,IAAK8wG,OAAO9+H,EAAEA,EAAE5K,GAAG6xC,EAAEjnC,IAAIrO,EAAEqO,EAAE5K,EAAE,CAAS,CAAC,IAAI6mJ,GAAGP,IAAG,GAAIQ,GAAGR,IAAG,GAAIS,GAAG,CAAC,EAAEC,GAAGlI,GAAGiI,IAAIE,GAAGnI,GAAGiI,IAAIG,GAAGpI,GAAGiI,IAAI,SAASI,GAAGv8I,GAAG,GAAGA,IAAIm8I,GAAG,MAAMr3J,MAAMhF,EAAE,MAAM,OAAOkgB,CAAC,CAAC,SAASw8I,GAAGx8I,EAAE1L,GAAyC,OAAtC82B,GAAEkxH,GAAGhoJ,GAAG82B,GAAEixH,GAAGr8I,GAAGorB,GAAEgxH,GAAGD,IAAIn8I,EAAE1L,EAAE2kI,UAAmB,KAAK,EAAE,KAAK,GAAG3kI,GAAGA,EAAEA,EAAE+F,iBAAiB/F,EAAEqkI,aAAaH,GAAG,KAAK,IAAI,MAAM,QAAkElkI,EAAEkkI,GAArClkI,GAAvB0L,EAAE,IAAIA,EAAE1L,EAAE4K,WAAW5K,GAAMqkI,cAAc,KAAK34H,EAAEA,EAAEjB,SAAkBsuB,GAAE+uH,IAAIhxH,GAAEgxH,GAAG9nJ,EAAE,CAAC,SAASmoJ,KAAKpvH,GAAE+uH,IAAI/uH,GAAEgvH,IAAIhvH,GAAEivH,GAAG,CACnb,SAASI,GAAG18I,GAAGu8I,GAAGD,GAAG3+H,SAAS,IAAIrpB,EAAEioJ,GAAGH,GAAGz+H,SAAahsB,EAAE6mI,GAAGlkI,EAAE0L,EAAE1e,MAAMgT,IAAI3C,IAAIy5B,GAAEixH,GAAGr8I,GAAGorB,GAAEgxH,GAAGzqJ,GAAG,CAAC,SAASgrJ,GAAG38I,GAAGq8I,GAAG1+H,UAAU3d,IAAIqtB,GAAE+uH,IAAI/uH,GAAEgvH,IAAI,CAAC,IAAI1vH,GAAEunH,GAAG,GACrJ,SAAS0I,GAAG58I,GAAG,IAAI,IAAI1L,EAAE0L,EAAE,OAAO1L,GAAG,CAAC,GAAG,KAAKA,EAAEkY,IAAI,CAAC,IAAI7a,EAAE2C,EAAE0qI,cAAc,GAAG,OAAOrtI,IAAmB,QAAfA,EAAEA,EAAEstI,aAAqB,OAAOttI,EAAE5K,MAAM,OAAO4K,EAAE5K,MAAM,OAAOuN,CAAC,MAAM,GAAG,KAAKA,EAAEkY,UAAK,IAASlY,EAAE4iJ,cAAc2F,aAAa,GAAG,KAAa,IAARvoJ,EAAE+sC,OAAW,OAAO/sC,OAAO,GAAG,OAAOA,EAAE8qI,MAAM,CAAC9qI,EAAE8qI,MAAMN,OAAOxqI,EAAEA,EAAEA,EAAE8qI,MAAM,QAAQ,CAAC,GAAG9qI,IAAI0L,EAAE,MAAM,KAAK,OAAO1L,EAAE+qI,SAAS,CAAC,GAAG,OAAO/qI,EAAEwqI,QAAQxqI,EAAEwqI,SAAS9+H,EAAE,OAAO,KAAK1L,EAAEA,EAAEwqI,MAAM,CAACxqI,EAAE+qI,QAAQP,OAAOxqI,EAAEwqI,OAAOxqI,EAAEA,EAAE+qI,OAAO,CAAC,OAAO,IAAI,CAAC,IAAIyd,GAAG,GACrc,SAASC,KAAK,IAAI,IAAI/8I,EAAE,EAAEA,EAAE88I,GAAGthK,OAAOwkB,IAAI88I,GAAG98I,GAAGg9I,8BAA8B,KAAKF,GAAGthK,OAAO,CAAC,CAAC,IAAIyhK,GAAGtoB,EAAGuoB,uBAAuBC,GAAGxoB,EAAG4P,wBAAwB6Y,GAAG,EAAEpxB,GAAE,KAAKzgH,GAAE,KAAKsI,GAAE,KAAKwpI,IAAG,EAAGC,IAAG,EAAGC,GAAG,EAAEC,GAAG,EAAE,SAASjxH,KAAI,MAAMznC,MAAMhF,EAAE,KAAM,CAAC,SAAS29J,GAAGz9I,EAAE1L,GAAG,GAAG,OAAOA,EAAE,OAAM,EAAG,IAAI,IAAI3C,EAAE,EAAEA,EAAE2C,EAAE9Y,QAAQmW,EAAEqO,EAAExkB,OAAOmW,IAAI,IAAI67I,GAAGxtI,EAAErO,GAAG2C,EAAE3C,IAAI,OAAM,EAAG,OAAM,CAAE,CAChW,SAAS+rJ,GAAG19I,EAAE1L,EAAE3C,EAAEyD,EAAEhP,EAAEjJ,GAAyH,GAAtHigK,GAAGjgK,EAAE6uI,GAAE13H,EAAEA,EAAE0qI,cAAc,KAAK1qI,EAAEykJ,YAAY,KAAKzkJ,EAAE8jJ,MAAM,EAAE6E,GAAGt/H,QAAQ,OAAO3d,GAAG,OAAOA,EAAEg/H,cAAc2e,GAAGC,GAAG59I,EAAErO,EAAEyD,EAAEhP,GAAMk3J,GAAG,CAACngK,EAAE,EAAE,EAAE,CAAY,GAAXmgK,IAAG,EAAGC,GAAG,EAAK,IAAIpgK,EAAE,MAAM2H,MAAMhF,EAAE,MAAM3C,GAAG,EAAE02B,GAAEtI,GAAE,KAAKjX,EAAEykJ,YAAY,KAAKkE,GAAGt/H,QAAQkgI,GAAG79I,EAAErO,EAAEyD,EAAEhP,EAAE,OAAOk3J,GAAG,CAA+D,GAA9DL,GAAGt/H,QAAQmgI,GAAGxpJ,EAAE,OAAOiX,IAAG,OAAOA,GAAEtb,KAAKmtJ,GAAG,EAAEvpI,GAAEtI,GAAEygH,GAAE,KAAKqxB,IAAG,EAAM/oJ,EAAE,MAAMxP,MAAMhF,EAAE,MAAM,OAAOkgB,CAAC,CAAC,SAAS+9I,KAAK,IAAI/9I,EAAE,IAAIu9I,GAAQ,OAALA,GAAG,EAASv9I,CAAC,CAC/Y,SAASg+I,KAAK,IAAIh+I,EAAE,CAACg/H,cAAc,KAAKga,UAAU,KAAKiF,UAAU,KAAK1jI,MAAM,KAAKtqB,KAAK,MAA8C,OAAxC,OAAO4jB,GAAEm4G,GAAEgT,cAAcnrH,GAAE7T,EAAE6T,GAAEA,GAAE5jB,KAAK+P,EAAS6T,EAAC,CAAC,SAASqqI,KAAK,GAAG,OAAO3yI,GAAE,CAAC,IAAIvL,EAAEgsH,GAAE6S,UAAU7+H,EAAE,OAAOA,EAAEA,EAAEg/H,cAAc,IAAI,MAAMh/H,EAAEuL,GAAEtb,KAAK,IAAIqE,EAAE,OAAOuf,GAAEm4G,GAAEgT,cAAcnrH,GAAE5jB,KAAK,GAAG,OAAOqE,EAAEuf,GAAEvf,EAAEiX,GAAEvL,MAAM,CAAC,GAAG,OAAOA,EAAE,MAAMlb,MAAMhF,EAAE,MAAUkgB,EAAE,CAACg/H,eAAPzzH,GAAEvL,GAAqBg/H,cAAcga,UAAUztI,GAAEytI,UAAUiF,UAAU1yI,GAAE0yI,UAAU1jI,MAAMhP,GAAEgP,MAAMtqB,KAAK,MAAM,OAAO4jB,GAAEm4G,GAAEgT,cAAcnrH,GAAE7T,EAAE6T,GAAEA,GAAE5jB,KAAK+P,CAAC,CAAC,OAAO6T,EAAC,CACje,SAASsqI,GAAGn+I,EAAE1L,GAAG,MAAM,oBAAoBA,EAAEA,EAAE0L,GAAG1L,CAAC,CACnD,SAAS8pJ,GAAGp+I,GAAG,IAAI1L,EAAE4pJ,KAAKvsJ,EAAE2C,EAAEimB,MAAM,GAAG,OAAO5oB,EAAE,MAAM7M,MAAMhF,EAAE,MAAM6R,EAAE0sJ,oBAAoBr+I,EAAE,IAAI5K,EAAEmW,GAAEnlB,EAAEgP,EAAE6oJ,UAAU9gK,EAAEwU,EAAEwnJ,QAAQ,GAAG,OAAOh8J,EAAE,CAAC,GAAG,OAAOiJ,EAAE,CAAC,IAAI6gD,EAAE7gD,EAAE6J,KAAK7J,EAAE6J,KAAK9S,EAAE8S,KAAK9S,EAAE8S,KAAKg3C,CAAC,CAAC7xC,EAAE6oJ,UAAU73J,EAAEjJ,EAAEwU,EAAEwnJ,QAAQ,IAAI,CAAC,GAAG,OAAO/yJ,EAAE,CAACjJ,EAAEiJ,EAAE6J,KAAKmF,EAAEA,EAAE4jJ,UAAU,IAAIhrH,EAAEiZ,EAAE,KAAK3oD,EAAE,KAAK4oD,EAAE/pD,EAAE,EAAE,CAAC,IAAI6mB,EAAEkjC,EAAEqyG,KAAK,IAAI6D,GAAGp5I,KAAKA,EAAE,OAAO1lB,IAAIA,EAAEA,EAAE2R,KAAK,CAACspJ,KAAK,EAAEvkF,OAAO9tB,EAAE8tB,OAAOspF,cAAcp3G,EAAEo3G,cAAcC,WAAWr3G,EAAEq3G,WAAWtuJ,KAAK,OAAOmF,EAAE8xC,EAAEo3G,cAAcp3G,EAAEq3G,WAAWv+I,EAAE5K,EAAE8xC,EAAE8tB,YAAY,CAAC,IAAItoC,EAAE,CAAC6sH,KAAKv1I,EAAEgxD,OAAO9tB,EAAE8tB,OAAOspF,cAAcp3G,EAAEo3G,cACngBC,WAAWr3G,EAAEq3G,WAAWtuJ,KAAK,MAAM,OAAO3R,GAAG0vC,EAAE1vC,EAAEouC,EAAEua,EAAE7xC,GAAG9W,EAAEA,EAAE2R,KAAKy8B,EAAEs/F,GAAEosB,OAAOp0I,EAAE41I,IAAI51I,CAAC,CAACkjC,EAAEA,EAAEj3C,IAAI,OAAO,OAAOi3C,GAAGA,IAAI/pD,GAAG,OAAOmB,EAAE2oD,EAAE7xC,EAAE9W,EAAE2R,KAAK+9B,EAAEw/G,GAAGp4I,EAAEd,EAAE0qI,iBAAiBqZ,IAAG,GAAI/jJ,EAAE0qI,cAAc5pI,EAAEd,EAAE0kJ,UAAU/xG,EAAE3yC,EAAE2pJ,UAAU3/J,EAAEqT,EAAE6sJ,kBAAkBppJ,CAAC,CAAiB,GAAG,QAAnB4K,EAAErO,EAAEgnJ,aAAwB,CAACvyJ,EAAE4Z,EAAE,GAAG7iB,EAAEiJ,EAAEmzJ,KAAKvtB,GAAEosB,OAAOj7J,EAAEy8J,IAAIz8J,EAAEiJ,EAAEA,EAAE6J,WAAW7J,IAAI4Z,EAAE,MAAM,OAAO5Z,IAAIuL,EAAEymJ,MAAM,GAAG,MAAM,CAAC9jJ,EAAE0qI,cAAcrtI,EAAE8sJ,SAAS,CAC9X,SAASC,GAAG1+I,GAAG,IAAI1L,EAAE4pJ,KAAKvsJ,EAAE2C,EAAEimB,MAAM,GAAG,OAAO5oB,EAAE,MAAM7M,MAAMhF,EAAE,MAAM6R,EAAE0sJ,oBAAoBr+I,EAAE,IAAI5K,EAAEzD,EAAE8sJ,SAASr4J,EAAEuL,EAAEwnJ,QAAQh8J,EAAEmX,EAAE0qI,cAAc,GAAG,OAAO54I,EAAE,CAACuL,EAAEwnJ,QAAQ,KAAK,IAAIlyG,EAAE7gD,EAAEA,EAAE6J,KAAK,GAAG9S,EAAE6iB,EAAE7iB,EAAE8pD,EAAE+tB,QAAQ/tB,EAAEA,EAAEh3C,WAAWg3C,IAAI7gD,GAAGonJ,GAAGrwJ,EAAEmX,EAAE0qI,iBAAiBqZ,IAAG,GAAI/jJ,EAAE0qI,cAAc7hJ,EAAE,OAAOmX,EAAE2pJ,YAAY3pJ,EAAE0kJ,UAAU77J,GAAGwU,EAAE6sJ,kBAAkBrhK,CAAC,CAAC,MAAM,CAACA,EAAEiY,EAAE,CAAC,SAASupJ,KAAK,CACpW,SAASC,GAAG5+I,EAAE1L,GAAG,IAAI3C,EAAEq6H,GAAE52H,EAAE8oJ,KAAK93J,EAAEkO,IAAInX,GAAGqwJ,GAAGp4I,EAAE4pI,cAAc54I,GAAsE,GAAnEjJ,IAAIiY,EAAE4pI,cAAc54I,EAAEiyJ,IAAG,GAAIjjJ,EAAEA,EAAEmlB,MAAMskI,GAAGC,GAAG39J,KAAK,KAAKwQ,EAAEyD,EAAE4K,GAAG,CAACA,IAAO5K,EAAE2pJ,cAAczqJ,GAAGnX,GAAG,OAAO02B,IAAuB,EAApBA,GAAEmrH,cAAcxyH,IAAM,CAAuD,GAAtD7a,EAAE0vC,OAAO,KAAK29G,GAAG,EAAEC,GAAG99J,KAAK,KAAKwQ,EAAEyD,EAAEhP,EAAEkO,QAAG,EAAO,MAAS,OAAO83B,GAAE,MAAMtnC,MAAMhF,EAAE,MAAM,KAAQ,GAAHs9J,KAAQ8B,GAAGvtJ,EAAE2C,EAAElO,EAAE,CAAC,OAAOA,CAAC,CAAC,SAAS84J,GAAGl/I,EAAE1L,EAAE3C,GAAGqO,EAAEqhC,OAAO,MAAMrhC,EAAE,CAAC++I,YAAYzqJ,EAAEtX,MAAM2U,GAAmB,QAAhB2C,EAAE03H,GAAE+sB,cAAsBzkJ,EAAE,CAAC6qJ,WAAW,KAAKC,OAAO,MAAMpzB,GAAE+sB,YAAYzkJ,EAAEA,EAAE8qJ,OAAO,CAACp/I,IAAgB,QAAXrO,EAAE2C,EAAE8qJ,QAAgB9qJ,EAAE8qJ,OAAO,CAACp/I,GAAGrO,EAAEhV,KAAKqjB,EAAG,CAClf,SAASi/I,GAAGj/I,EAAE1L,EAAE3C,EAAEyD,GAAGd,EAAEtX,MAAM2U,EAAE2C,EAAEyqJ,YAAY3pJ,EAAEiqJ,GAAG/qJ,IAAIgrJ,GAAGt/I,EAAE,CAAC,SAAS8+I,GAAG9+I,EAAE1L,EAAE3C,GAAG,OAAOA,GAAE,WAAW0tJ,GAAG/qJ,IAAIgrJ,GAAGt/I,EAAE,GAAE,CAAC,SAASq/I,GAAGr/I,GAAG,IAAI1L,EAAE0L,EAAE++I,YAAY/+I,EAAEA,EAAEhjB,MAAM,IAAI,IAAI2U,EAAE2C,IAAI,OAAOk5I,GAAGxtI,EAAErO,EAAE,CAAC,MAAMyD,GAAG,OAAM,CAAE,CAAC,CAAC,SAASkqJ,GAAGt/I,GAAG,IAAI1L,EAAEskJ,GAAG54I,EAAE,GAAG,OAAO1L,GAAGgmJ,GAAGhmJ,EAAE0L,EAAE,GAAG,EAAE,CAClQ,SAASu/I,GAAGv/I,GAAG,IAAI1L,EAAE0pJ,KAA8M,MAAzM,oBAAoBh+I,IAAIA,EAAEA,KAAK1L,EAAE0qI,cAAc1qI,EAAE0kJ,UAAUh5I,EAAEA,EAAE,CAACm5I,QAAQ,KAAKR,YAAY,KAAKP,MAAM,EAAEqG,SAAS,KAAKJ,oBAAoBF,GAAGK,kBAAkBx+I,GAAG1L,EAAEimB,MAAMva,EAAEA,EAAEA,EAAEy+I,SAASe,GAAGr+J,KAAK,KAAK6qI,GAAEhsH,GAAS,CAAC1L,EAAE0qI,cAAch/H,EAAE,CAC5P,SAASg/I,GAAGh/I,EAAE1L,EAAE3C,EAAEyD,GAA8O,OAA3O4K,EAAE,CAACwM,IAAIxM,EAAErR,OAAO2F,EAAEmrJ,QAAQ9tJ,EAAE+tJ,KAAKtqJ,EAAEnF,KAAK,MAAsB,QAAhBqE,EAAE03H,GAAE+sB,cAAsBzkJ,EAAE,CAAC6qJ,WAAW,KAAKC,OAAO,MAAMpzB,GAAE+sB,YAAYzkJ,EAAEA,EAAE6qJ,WAAWn/I,EAAE/P,KAAK+P,GAAmB,QAAfrO,EAAE2C,EAAE6qJ,YAAoB7qJ,EAAE6qJ,WAAWn/I,EAAE/P,KAAK+P,GAAG5K,EAAEzD,EAAE1B,KAAK0B,EAAE1B,KAAK+P,EAAEA,EAAE/P,KAAKmF,EAAEd,EAAE6qJ,WAAWn/I,GAAWA,CAAC,CAAC,SAAS2/I,KAAK,OAAOzB,KAAKlf,aAAa,CAAC,SAAS4gB,GAAG5/I,EAAE1L,EAAE3C,EAAEyD,GAAG,IAAIhP,EAAE43J,KAAKhyB,GAAE3qF,OAAOrhC,EAAE5Z,EAAE44I,cAAcggB,GAAG,EAAE1qJ,EAAE3C,OAAE,OAAO,IAASyD,EAAE,KAAKA,EAAE,CAC9Y,SAASyqJ,GAAG7/I,EAAE1L,EAAE3C,EAAEyD,GAAG,IAAIhP,EAAE83J,KAAK9oJ,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIjY,OAAE,EAAO,GAAG,OAAOouB,GAAE,CAAC,IAAI07B,EAAE17B,GAAEyzH,cAA0B,GAAZ7hJ,EAAE8pD,EAAEw4G,QAAW,OAAOrqJ,GAAGqoJ,GAAGroJ,EAAE6xC,EAAEy4G,MAAmC,YAA5Bt5J,EAAE44I,cAAcggB,GAAG1qJ,EAAE3C,EAAExU,EAAEiY,GAAU,CAAC42H,GAAE3qF,OAAOrhC,EAAE5Z,EAAE44I,cAAcggB,GAAG,EAAE1qJ,EAAE3C,EAAExU,EAAEiY,EAAE,CAAC,SAAS0qJ,GAAG9/I,EAAE1L,GAAG,OAAOsrJ,GAAG,QAAQ,EAAE5/I,EAAE1L,EAAE,CAAC,SAASuqJ,GAAG7+I,EAAE1L,GAAG,OAAOurJ,GAAG,KAAK,EAAE7/I,EAAE1L,EAAE,CAAC,SAASyrJ,GAAG//I,EAAE1L,GAAG,OAAOurJ,GAAG,EAAE,EAAE7/I,EAAE1L,EAAE,CAAC,SAAS0rJ,GAAGhgJ,EAAE1L,GAAG,OAAOurJ,GAAG,EAAE,EAAE7/I,EAAE1L,EAAE,CAChX,SAAS2rJ,GAAGjgJ,EAAE1L,GAAG,MAAG,oBAAoBA,GAAS0L,EAAEA,IAAI1L,EAAE0L,GAAG,WAAW1L,EAAE,KAAK,GAAK,OAAOA,QAAG,IAASA,GAAS0L,EAAEA,IAAI1L,EAAEqpB,QAAQ3d,EAAE,WAAW1L,EAAEqpB,QAAQ,IAAI,QAA1E,CAA2E,CAAC,SAASuiI,GAAGlgJ,EAAE1L,EAAE3C,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAEhW,OAAO,CAACqkB,IAAI,KAAY6/I,GAAG,EAAE,EAAEI,GAAG9+J,KAAK,KAAKmT,EAAE0L,GAAGrO,EAAE,CAAC,SAASwuJ,KAAK,CAAC,SAASC,GAAGpgJ,EAAE1L,GAAG,IAAI3C,EAAEusJ,KAAK5pJ,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIc,EAAEzD,EAAEqtI,cAAc,OAAG,OAAO5pI,GAAG,OAAOd,GAAGmpJ,GAAGnpJ,EAAEc,EAAE,IAAWA,EAAE,IAAGzD,EAAEqtI,cAAc,CAACh/H,EAAE1L,GAAU0L,EAAC,CAC7Z,SAASqgJ,GAAGrgJ,EAAE1L,GAAG,IAAI3C,EAAEusJ,KAAK5pJ,OAAE,IAASA,EAAE,KAAKA,EAAE,IAAIc,EAAEzD,EAAEqtI,cAAc,OAAG,OAAO5pI,GAAG,OAAOd,GAAGmpJ,GAAGnpJ,EAAEc,EAAE,IAAWA,EAAE,IAAG4K,EAAEA,IAAIrO,EAAEqtI,cAAc,CAACh/H,EAAE1L,GAAU0L,EAAC,CAAC,SAASsgJ,GAAGtgJ,EAAE1L,EAAE3C,GAAG,OAAG,KAAQ,GAAHyrJ,KAAcp9I,EAAEg5I,YAAYh5I,EAAEg5I,WAAU,EAAGX,IAAG,GAAIr4I,EAAEg/H,cAAcrtI,IAAE67I,GAAG77I,EAAE2C,KAAK3C,EAAEowI,KAAK/V,GAAEosB,OAAOzmJ,EAAEioJ,IAAIjoJ,EAAEqO,EAAEg5I,WAAU,GAAW1kJ,EAAC,CAAC,SAASisJ,GAAGvgJ,EAAE1L,GAAG,IAAI3C,EAAEqf,GAAEA,GAAE,IAAIrf,GAAG,EAAEA,EAAEA,EAAE,EAAEqO,GAAE,GAAI,IAAI5K,EAAE+nJ,GAAGzY,WAAWyY,GAAGzY,WAAW,CAAC,EAAE,IAAI1kI,GAAE,GAAI1L,GAAG,CAAC,QAAQ0c,GAAErf,EAAEwrJ,GAAGzY,WAAWtvI,CAAC,CAAC,CAAC,SAASorJ,KAAK,OAAOtC,KAAKlf,aAAa,CAC1d,SAASyhB,GAAGzgJ,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAEilJ,GAAGr6I,GAAkE,GAA/DrO,EAAE,CAAC4nJ,KAAKnkJ,EAAE4/D,OAAOrjE,EAAE2sJ,eAAc,EAAGC,WAAW,KAAKtuJ,KAAK,MAASywJ,GAAG1gJ,GAAG2gJ,GAAGrsJ,EAAE3C,QAAQ,GAAiB,QAAdA,EAAE+mJ,GAAG14I,EAAE1L,EAAE3C,EAAEyD,IAAY,CAAWklJ,GAAG3oJ,EAAEqO,EAAE5K,EAAXy3B,MAAgB+zH,GAAGjvJ,EAAE2C,EAAEc,EAAE,CAAC,CAC/K,SAASoqJ,GAAGx/I,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAEilJ,GAAGr6I,GAAG5Z,EAAE,CAACmzJ,KAAKnkJ,EAAE4/D,OAAOrjE,EAAE2sJ,eAAc,EAAGC,WAAW,KAAKtuJ,KAAK,MAAM,GAAGywJ,GAAG1gJ,GAAG2gJ,GAAGrsJ,EAAElO,OAAO,CAAC,IAAIjJ,EAAE6iB,EAAE6+H,UAAU,GAAG,IAAI7+H,EAAEo4I,QAAQ,OAAOj7J,GAAG,IAAIA,EAAEi7J,QAAiC,QAAxBj7J,EAAEmX,EAAE+pJ,qBAA8B,IAAI,IAAIp3G,EAAE3yC,EAAEkqJ,kBAAkBxwH,EAAE7wC,EAAE8pD,EAAEt1C,GAAqC,GAAlCvL,EAAEk4J,eAAc,EAAGl4J,EAAEm4J,WAAWvwH,EAAKw/G,GAAGx/G,EAAEiZ,GAAG,CAAC,IAAI3oD,EAAEgW,EAAEqkJ,YAA+E,OAAnE,OAAOr6J,GAAG8H,EAAE6J,KAAK7J,EAAEqyJ,GAAGnkJ,KAAKlO,EAAE6J,KAAK3R,EAAE2R,KAAK3R,EAAE2R,KAAK7J,QAAGkO,EAAEqkJ,YAAYvyJ,EAAQ,CAAC,CAAC,MAAM8gD,GAAG,CAAwB,QAAdv1C,EAAE+mJ,GAAG14I,EAAE1L,EAAElO,EAAEgP,MAAoBklJ,GAAG3oJ,EAAEqO,EAAE5K,EAAbhP,EAAEymC,MAAgB+zH,GAAGjvJ,EAAE2C,EAAEc,GAAG,CAAC,CAC/c,SAASsrJ,GAAG1gJ,GAAG,IAAI1L,EAAE0L,EAAE6+H,UAAU,OAAO7+H,IAAIgsH,IAAG,OAAO13H,GAAGA,IAAI03H,EAAC,CAAC,SAAS20B,GAAG3gJ,EAAE1L,GAAGgpJ,GAAGD,IAAG,EAAG,IAAI1rJ,EAAEqO,EAAEm5I,QAAQ,OAAOxnJ,EAAE2C,EAAErE,KAAKqE,GAAGA,EAAErE,KAAK0B,EAAE1B,KAAK0B,EAAE1B,KAAKqE,GAAG0L,EAAEm5I,QAAQ7kJ,CAAC,CAAC,SAASssJ,GAAG5gJ,EAAE1L,EAAE3C,GAAG,GAAG,KAAO,QAAFA,GAAW,CAAC,IAAIyD,EAAEd,EAAE8jJ,MAAwBzmJ,GAAlByD,GAAG4K,EAAEwhI,aAAkBltI,EAAE8jJ,MAAMzmJ,EAAEwwI,GAAGniI,EAAErO,EAAE,CAAC,CAC9P,IAAImsJ,GAAG,CAAC+C,YAAYvI,GAAGwI,YAAYv0H,GAAEw0H,WAAWx0H,GAAEy0H,UAAUz0H,GAAE00H,oBAAoB10H,GAAE20H,mBAAmB30H,GAAE40H,gBAAgB50H,GAAE60H,QAAQ70H,GAAE80H,WAAW90H,GAAE+0H,OAAO/0H,GAAEg1H,SAASh1H,GAAEi1H,cAAcj1H,GAAEk1H,iBAAiBl1H,GAAEm1H,cAAcn1H,GAAEo1H,iBAAiBp1H,GAAEq1H,qBAAqBr1H,GAAEs1H,MAAMt1H,GAAEu1H,0BAAyB,GAAInE,GAAG,CAACkD,YAAYvI,GAAGwI,YAAY,SAAS9gJ,EAAE1L,GAA4C,OAAzC0pJ,KAAKhf,cAAc,CAACh/H,OAAE,IAAS1L,EAAE,KAAKA,GAAU0L,CAAC,EAAE+gJ,WAAWzI,GAAG0I,UAAUlB,GAAGmB,oBAAoB,SAASjhJ,EAAE1L,EAAE3C,GAA6C,OAA1CA,EAAE,OAAOA,QAAG,IAASA,EAAEA,EAAEhW,OAAO,CAACqkB,IAAI,KAAY4/I,GAAG,QAC3f,EAAEK,GAAG9+J,KAAK,KAAKmT,EAAE0L,GAAGrO,EAAE,EAAEwvJ,gBAAgB,SAASnhJ,EAAE1L,GAAG,OAAOsrJ,GAAG,QAAQ,EAAE5/I,EAAE1L,EAAE,EAAE4sJ,mBAAmB,SAASlhJ,EAAE1L,GAAG,OAAOsrJ,GAAG,EAAE,EAAE5/I,EAAE1L,EAAE,EAAE8sJ,QAAQ,SAASphJ,EAAE1L,GAAG,IAAI3C,EAAEqsJ,KAAqD,OAAhD1pJ,OAAE,IAASA,EAAE,KAAKA,EAAE0L,EAAEA,IAAIrO,EAAEqtI,cAAc,CAACh/H,EAAE1L,GAAU0L,CAAC,EAAEqhJ,WAAW,SAASrhJ,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAE4oJ,KAAkM,OAA7L1pJ,OAAE,IAAS3C,EAAEA,EAAE2C,GAAGA,EAAEc,EAAE4pI,cAAc5pI,EAAE4jJ,UAAU1kJ,EAAE0L,EAAE,CAACm5I,QAAQ,KAAKR,YAAY,KAAKP,MAAM,EAAEqG,SAAS,KAAKJ,oBAAoBr+I,EAAEw+I,kBAAkBlqJ,GAAGc,EAAEmlB,MAAMva,EAAEA,EAAEA,EAAEy+I,SAASgC,GAAGt/J,KAAK,KAAK6qI,GAAEhsH,GAAS,CAAC5K,EAAE4pI,cAAch/H,EAAE,EAAEshJ,OAAO,SAASthJ,GAC3d,OAAdA,EAAE,CAAC2d,QAAQ3d,GAAhBg+I,KAA4Bhf,cAAch/H,CAAC,EAAEuhJ,SAAShC,GAAGiC,cAAcrB,GAAGsB,iBAAiB,SAASzhJ,GAAG,OAAOg+I,KAAKhf,cAAch/H,CAAC,EAAE0hJ,cAAc,WAAW,IAAI1hJ,EAAEu/I,IAAG,GAAIjrJ,EAAE0L,EAAE,GAA6C,OAA1CA,EAAEugJ,GAAGp/J,KAAK,KAAK6e,EAAE,IAAIg+I,KAAKhf,cAAch/H,EAAQ,CAAC1L,EAAE0L,EAAE,EAAE2hJ,iBAAiB,WAAW,EAAEC,qBAAqB,SAAS5hJ,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAE42H,GAAE5lI,EAAE43J,KAAK,GAAGhxH,GAAE,CAAC,QAAG,IAASr7B,EAAE,MAAM7M,MAAMhF,EAAE,MAAM6R,EAAEA,GAAG,KAAK,CAAO,GAANA,EAAE2C,IAAO,OAAO83B,GAAE,MAAMtnC,MAAMhF,EAAE,MAAM,KAAQ,GAAHs9J,KAAQ8B,GAAG9pJ,EAAEd,EAAE3C,EAAE,CAACvL,EAAE44I,cAAcrtI,EAAE,IAAIxU,EAAE,CAACH,MAAM2U,EAAEotJ,YAAYzqJ,GACvZ,OAD0ZlO,EAAEm0B,MAAMp9B,EAAE2iK,GAAGhB,GAAG39J,KAAK,KAAKiU,EACpfjY,EAAE6iB,GAAG,CAACA,IAAI5K,EAAEisC,OAAO,KAAK29G,GAAG,EAAEC,GAAG99J,KAAK,KAAKiU,EAAEjY,EAAEwU,EAAE2C,QAAG,EAAO,MAAa3C,CAAC,EAAEkwJ,MAAM,WAAW,IAAI7hJ,EAAEg+I,KAAK1pJ,EAAE83B,GAAE21H,iBAAiB,GAAG/0H,GAAE,CAAC,IAAIr7B,EAAEmkJ,GAAkDxhJ,EAAE,IAAIA,EAAE,KAA9C3C,GAAHkkJ,KAAU,GAAG,GAAG9U,GAAhB8U,IAAsB,IAAI35J,SAAS,IAAIyV,GAAuB,GAAPA,EAAE4rJ,QAAWjpJ,GAAG,IAAI3C,EAAEzV,SAAS,KAAKoY,GAAG,GAAG,MAAaA,EAAE,IAAIA,EAAE,KAAf3C,EAAE6rJ,MAAmBthK,SAAS,IAAI,IAAI,OAAO8jB,EAAEg/H,cAAc1qI,CAAC,EAAEwtJ,0BAAyB,GAAIlE,GAAG,CAACiD,YAAYvI,GAAGwI,YAAYV,GAAGW,WAAWzI,GAAG0I,UAAUnC,GAAGoC,oBAAoBf,GAAGgB,mBAAmBnB,GAAGoB,gBAAgBnB,GAAGoB,QAAQf,GAAGgB,WAAWjD,GAAGkD,OAAO3B,GAAG4B,SAAS,WAAW,OAAOnD,GAAGD,GAAG,EACrhBqD,cAAcrB,GAAGsB,iBAAiB,SAASzhJ,GAAc,OAAOsgJ,GAAZpC,KAAiB3yI,GAAEyzH,cAAch/H,EAAE,EAAE0hJ,cAAc,WAAgD,MAAM,CAArCtD,GAAGD,IAAI,GAAKD,KAAKlf,cAAyB,EAAE2iB,iBAAiBhD,GAAGiD,qBAAqBhD,GAAGiD,MAAMrB,GAAGsB,0BAAyB,GAAIjE,GAAG,CAACgD,YAAYvI,GAAGwI,YAAYV,GAAGW,WAAWzI,GAAG0I,UAAUnC,GAAGoC,oBAAoBf,GAAGgB,mBAAmBnB,GAAGoB,gBAAgBnB,GAAGoB,QAAQf,GAAGgB,WAAW3C,GAAG4C,OAAO3B,GAAG4B,SAAS,WAAW,OAAO7C,GAAGP,GAAG,EAAEqD,cAAcrB,GAAGsB,iBAAiB,SAASzhJ,GAAG,IAAI1L,EAAE4pJ,KAAK,OAAO,OACzf3yI,GAAEjX,EAAE0qI,cAAch/H,EAAEsgJ,GAAGhsJ,EAAEiX,GAAEyzH,cAAch/H,EAAE,EAAE0hJ,cAAc,WAAgD,MAAM,CAArChD,GAAGP,IAAI,GAAKD,KAAKlf,cAAyB,EAAE2iB,iBAAiBhD,GAAGiD,qBAAqBhD,GAAGiD,MAAMrB,GAAGsB,0BAAyB,GAAI,SAASE,GAAGhiJ,EAAE1L,GAAG,IAAI,IAAI3C,EAAE,GAAGyD,EAAEd,EAAE,GAAG3C,GAAGqkI,EAAG5gI,GAAGA,EAAEA,EAAE0pI,aAAa1pI,GAAG,IAAIhP,EAAEuL,CAAC,CAAC,MAAMxU,GAAGiJ,EAAE,6BAA6BjJ,EAAES,QAAQ,KAAKT,EAAEuH,KAAK,CAAC,MAAM,CAAC1H,MAAMgjB,EAAE1f,OAAOgU,EAAE5P,MAAM0B,EAAE67J,OAAO,KAAK,CAAC,SAASC,GAAGliJ,EAAE1L,EAAE3C,GAAG,MAAM,CAAC3U,MAAMgjB,EAAE1f,OAAO,KAAKoE,MAAM,MAAMiN,EAAEA,EAAE,KAAKswJ,OAAO,MAAM3tJ,EAAEA,EAAE,KAAK,CACzd,SAAS6tJ,GAAGniJ,EAAE1L,GAAG,IAAIzT,QAAQ0D,MAAM+P,EAAEtX,MAAM,CAAC,MAAM2U,GAAGnB,YAAW,WAAW,MAAMmB,CAAE,GAAE,CAAC,CAAC,IAAIywJ,GAAG,oBAAoBxtI,QAAQA,QAAQuuC,IAAI,SAASk/F,GAAGriJ,EAAE1L,EAAE3C,IAAGA,EAAE2nJ,IAAI,EAAE3nJ,IAAK6a,IAAI,EAAE7a,EAAEqF,QAAQ,CAAC23H,QAAQ,MAAM,IAAIv5H,EAAEd,EAAEtX,MAAsD,OAAhD2U,EAAE+vC,SAAS,WAAW4gH,KAAKA,IAAG,EAAGC,GAAGntJ,GAAG+sJ,GAAGniJ,EAAE1L,EAAE,EAAS3C,CAAC,CAC3Q,SAAS6wJ,GAAGxiJ,EAAE1L,EAAE3C,IAAGA,EAAE2nJ,IAAI,EAAE3nJ,IAAK6a,IAAI,EAAE,IAAIpX,EAAE4K,EAAE1e,KAAKskD,yBAAyB,GAAG,oBAAoBxwC,EAAE,CAAC,IAAIhP,EAAEkO,EAAEtX,MAAM2U,EAAEqF,QAAQ,WAAW,OAAO5B,EAAEhP,EAAE,EAAEuL,EAAE+vC,SAAS,WAAWygH,GAAGniJ,EAAE1L,EAAE,CAAC,CAAC,IAAInX,EAAE6iB,EAAE09H,UAA8O,OAApO,OAAOvgJ,GAAG,oBAAoBA,EAAEioB,oBAAoBzT,EAAE+vC,SAAS,WAAWygH,GAAGniJ,EAAE1L,GAAG,oBAAoBc,IAAI,OAAOqtJ,GAAGA,GAAG,IAAIz4I,IAAI,CAACvoB,OAAOghK,GAAGx5J,IAAIxH,OAAO,IAAIkQ,EAAE2C,EAAE5P,MAAMjD,KAAK2jB,kBAAkB9Q,EAAEtX,MAAM,CAACqoB,eAAe,OAAO1T,EAAEA,EAAE,IAAI,GAAUA,CAAC,CACnb,SAAS+wJ,GAAG1iJ,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAE4K,EAAE2iJ,UAAU,GAAG,OAAOvtJ,EAAE,CAACA,EAAE4K,EAAE2iJ,UAAU,IAAIP,GAAG,IAAIh8J,EAAE,IAAI4jB,IAAI5U,EAAEkf,IAAIhgB,EAAElO,EAAE,WAAiB,KAAXA,EAAEgP,EAAExK,IAAI0J,MAAgBlO,EAAE,IAAI4jB,IAAI5U,EAAEkf,IAAIhgB,EAAElO,IAAIA,EAAEsjB,IAAI/X,KAAKvL,EAAE6C,IAAI0I,GAAGqO,EAAE4iJ,GAAGzhK,KAAK,KAAK6e,EAAE1L,EAAE3C,GAAG2C,EAAE/D,KAAKyP,EAAEA,GAAG,CAAC,SAAS6iJ,GAAG7iJ,GAAG,EAAE,CAAC,IAAI1L,EAA4E,IAAvEA,EAAE,KAAK0L,EAAEwM,OAAsBlY,EAAE,QAApBA,EAAE0L,EAAEg/H,gBAAyB,OAAO1qI,EAAE2qI,YAAuB3qI,EAAE,OAAO0L,EAAEA,EAAEA,EAAE8+H,MAAM,OAAO,OAAO9+H,GAAG,OAAO,IAAI,CAChW,SAAS8iJ,GAAG9iJ,EAAE1L,EAAE3C,EAAEyD,EAAEhP,GAAG,OAAG,KAAY,EAAP4Z,EAAE0gB,OAAe1gB,IAAI1L,EAAE0L,EAAEqhC,OAAO,OAAOrhC,EAAEqhC,OAAO,IAAI1vC,EAAE0vC,OAAO,OAAO1vC,EAAE0vC,QAAQ,MAAM,IAAI1vC,EAAE6a,MAAM,OAAO7a,EAAEktI,UAAUltI,EAAE6a,IAAI,KAAIlY,EAAEglJ,IAAI,EAAE,IAAK9sI,IAAI,EAAEgtI,GAAG7nJ,EAAE2C,EAAE,KAAK3C,EAAEymJ,OAAO,GAAGp4I,IAAEA,EAAEqhC,OAAO,MAAMrhC,EAAEo4I,MAAMhyJ,EAAS4Z,EAAC,CAAC,IAAI+iJ,GAAGpuB,EAAGquB,kBAAkB3K,IAAG,EAAG,SAAS4K,GAAGjjJ,EAAE1L,EAAE3C,EAAEyD,GAAGd,EAAE8qI,MAAM,OAAOp/H,EAAEk8I,GAAG5nJ,EAAE,KAAK3C,EAAEyD,GAAG6mJ,GAAG3nJ,EAAE0L,EAAEo/H,MAAMztI,EAAEyD,EAAE,CACnV,SAAS8tJ,GAAGljJ,EAAE1L,EAAE3C,EAAEyD,EAAEhP,GAAGuL,EAAEA,EAAE2T,OAAO,IAAInoB,EAAEmX,EAAEy+H,IAAqC,OAAjCklB,GAAG3jJ,EAAElO,GAAGgP,EAAEsoJ,GAAG19I,EAAE1L,EAAE3C,EAAEyD,EAAEjY,EAAEiJ,GAAGuL,EAAEosJ,KAAQ,OAAO/9I,GAAIq4I,IAA2ErrH,IAAGr7B,GAAGskJ,GAAG3hJ,GAAGA,EAAE+sC,OAAO,EAAE4hH,GAAGjjJ,EAAE1L,EAAEc,EAAEhP,GAAUkO,EAAE8qI,QAA7G9qI,EAAEykJ,YAAY/4I,EAAE+4I,YAAYzkJ,EAAE+sC,QAAQ,KAAKrhC,EAAEo4I,QAAQhyJ,EAAE+8J,GAAGnjJ,EAAE1L,EAAElO,GAAoD,CACzN,SAASg9J,GAAGpjJ,EAAE1L,EAAE3C,EAAEyD,EAAEhP,GAAG,GAAG,OAAO4Z,EAAE,CAAC,IAAI7iB,EAAEwU,EAAErQ,KAAK,MAAG,oBAAoBnE,GAAIkmK,GAAGlmK,SAAI,IAASA,EAAEsoD,cAAc,OAAO9zC,EAAEu0C,cAAS,IAASv0C,EAAE8zC,eAAoDzlC,EAAE67I,GAAGlqJ,EAAErQ,KAAK,KAAK8T,EAAEd,EAAEA,EAAEosB,KAAKt6B,IAAK2sI,IAAIz+H,EAAEy+H,IAAI/yH,EAAE8+H,OAAOxqI,EAASA,EAAE8qI,MAAMp/H,IAArG1L,EAAEkY,IAAI,GAAGlY,EAAEhT,KAAKnE,EAAEmmK,GAAGtjJ,EAAE1L,EAAEnX,EAAEiY,EAAEhP,GAAyE,CAAW,GAAVjJ,EAAE6iB,EAAEo/H,MAAS,KAAKp/H,EAAEo4I,MAAMhyJ,GAAG,CAAC,IAAI6gD,EAAE9pD,EAAE+5J,cAA0C,IAAhBvlJ,EAAE,QAAdA,EAAEA,EAAEu0C,SAAmBv0C,EAAE87I,IAAQxmG,EAAE7xC,IAAI4K,EAAE+yH,MAAMz+H,EAAEy+H,IAAI,OAAOowB,GAAGnjJ,EAAE1L,EAAElO,EAAE,CAA6C,OAA5CkO,EAAE+sC,OAAO,GAAErhC,EAAE27I,GAAGx+J,EAAEiY,IAAK29H,IAAIz+H,EAAEy+H,IAAI/yH,EAAE8+H,OAAOxqI,EAASA,EAAE8qI,MAAMp/H,CAAC,CAC1b,SAASsjJ,GAAGtjJ,EAAE1L,EAAE3C,EAAEyD,EAAEhP,GAAG,GAAG,OAAO4Z,EAAE,CAAC,IAAI7iB,EAAE6iB,EAAEk3I,cAAc,GAAGzJ,GAAGtwJ,EAAEiY,IAAI4K,EAAE+yH,MAAMz+H,EAAEy+H,IAAI,IAAGslB,IAAG,EAAG/jJ,EAAEoiJ,aAAathJ,EAAEjY,EAAE,KAAK6iB,EAAEo4I,MAAMhyJ,GAAsC,OAAOkO,EAAE8jJ,MAAMp4I,EAAEo4I,MAAM+K,GAAGnjJ,EAAE1L,EAAElO,GAAjE,KAAa,OAAR4Z,EAAEqhC,SAAgBg3G,IAAG,EAAyC,EAAC,OAAOkL,GAAGvjJ,EAAE1L,EAAE3C,EAAEyD,EAAEhP,EAAE,CACxN,SAASo9J,GAAGxjJ,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAEd,EAAEoiJ,aAAatwJ,EAAEgP,EAAEqQ,SAAStoB,EAAE,OAAO6iB,EAAEA,EAAEg/H,cAAc,KAAK,GAAG,WAAW5pI,EAAEsrB,KAAK,GAAG,KAAY,EAAPpsB,EAAEosB,MAAQpsB,EAAE0qI,cAAc,CAACykB,UAAU,EAAEC,UAAU,KAAKC,YAAY,MAAMv4H,GAAEw4H,GAAGC,IAAIA,IAAIlyJ,MAAM,CAAC,GAAG,KAAO,WAAFA,GAAc,OAAOqO,EAAE,OAAO7iB,EAAEA,EAAEsmK,UAAU9xJ,EAAEA,EAAE2C,EAAE8jJ,MAAM9jJ,EAAE0jJ,WAAW,WAAW1jJ,EAAE0qI,cAAc,CAACykB,UAAUzjJ,EAAE0jJ,UAAU,KAAKC,YAAY,MAAMrvJ,EAAEykJ,YAAY,KAAK3tH,GAAEw4H,GAAGC,IAAIA,IAAI7jJ,EAAE,KAAK1L,EAAE0qI,cAAc,CAACykB,UAAU,EAAEC,UAAU,KAAKC,YAAY,MAAMvuJ,EAAE,OAAOjY,EAAEA,EAAEsmK,UAAU9xJ,EAAEy5B,GAAEw4H,GAAGC,IAAIA,IAAIzuJ,CAAC,MAAM,OACtfjY,GAAGiY,EAAEjY,EAAEsmK,UAAU9xJ,EAAE2C,EAAE0qI,cAAc,MAAM5pI,EAAEzD,EAAEy5B,GAAEw4H,GAAGC,IAAIA,IAAIzuJ,EAAc,OAAZ6tJ,GAAGjjJ,EAAE1L,EAAElO,EAAEuL,GAAU2C,EAAE8qI,KAAK,CAAC,SAAS0kB,GAAG9jJ,EAAE1L,GAAG,IAAI3C,EAAE2C,EAAEy+H,KAAO,OAAO/yH,GAAG,OAAOrO,GAAG,OAAOqO,GAAGA,EAAE+yH,MAAMphI,KAAE2C,EAAE+sC,OAAO,IAAI/sC,EAAE+sC,OAAO,QAAO,CAAC,SAASkiH,GAAGvjJ,EAAE1L,EAAE3C,EAAEyD,EAAEhP,GAAG,IAAIjJ,EAAEs3J,GAAG9iJ,GAAG0iJ,GAAGpmH,GAAEtQ,QAAmD,OAA3CxgC,EAAEm3J,GAAGhgJ,EAAEnX,GAAG86J,GAAG3jJ,EAAElO,GAAGuL,EAAE+rJ,GAAG19I,EAAE1L,EAAE3C,EAAEyD,EAAEjY,EAAEiJ,GAAGgP,EAAE2oJ,KAAQ,OAAO/9I,GAAIq4I,IAA2ErrH,IAAG53B,GAAG6gJ,GAAG3hJ,GAAGA,EAAE+sC,OAAO,EAAE4hH,GAAGjjJ,EAAE1L,EAAE3C,EAAEvL,GAAUkO,EAAE8qI,QAA7G9qI,EAAEykJ,YAAY/4I,EAAE+4I,YAAYzkJ,EAAE+sC,QAAQ,KAAKrhC,EAAEo4I,QAAQhyJ,EAAE+8J,GAAGnjJ,EAAE1L,EAAElO,GAAoD,CACla,SAAS29J,GAAG/jJ,EAAE1L,EAAE3C,EAAEyD,EAAEhP,GAAG,GAAGquJ,GAAG9iJ,GAAG,CAAC,IAAIxU,GAAE,EAAG23J,GAAGxgJ,EAAE,MAAMnX,GAAE,EAAW,GAAR86J,GAAG3jJ,EAAElO,GAAM,OAAOkO,EAAEopI,UAAUsmB,GAAGhkJ,EAAE1L,GAAGsmJ,GAAGtmJ,EAAE3C,EAAEyD,GAAG6lJ,GAAG3mJ,EAAE3C,EAAEyD,EAAEhP,GAAGgP,GAAE,OAAQ,GAAG,OAAO4K,EAAE,CAAC,IAAIinC,EAAE3yC,EAAEopI,UAAU1vG,EAAE15B,EAAE4iJ,cAAcjwG,EAAEjkD,MAAMgrC,EAAE,IAAI1vC,EAAE2oD,EAAE7nD,QAAQ8nD,EAAEv1C,EAAE4zC,YAAY,kBAAkB2B,GAAG,OAAOA,EAAEA,EAAEoxG,GAAGpxG,GAAyBA,EAAEotG,GAAGhgJ,EAA1B4yC,EAAEutG,GAAG9iJ,GAAG0iJ,GAAGpmH,GAAEtQ,SAAmB,IAAI3Z,EAAErS,EAAEk0C,yBAAyBnZ,EAAE,oBAAoB1oB,GAAG,oBAAoBijC,EAAEi0G,wBAAwBxuH,GAAG,oBAAoBua,EAAE+zG,kCAAkC,oBAAoB/zG,EAAE8zG,4BAC1d/sH,IAAI54B,GAAG9W,IAAI4oD,IAAI4zG,GAAGxmJ,EAAE2yC,EAAE7xC,EAAE8xC,GAAG2xG,IAAG,EAAG,IAAI9vH,EAAEz0B,EAAE0qI,cAAc/3F,EAAE78C,MAAM2+B,EAAE4wH,GAAGrlJ,EAAEc,EAAE6xC,EAAE7gD,GAAG9H,EAAEgW,EAAE0qI,cAAchxG,IAAI54B,GAAG2zB,IAAIzqC,GAAG81J,GAAGz2H,SAASk7H,IAAI,oBAAoB70I,IAAIg2I,GAAG1lJ,EAAE3C,EAAEqS,EAAE5O,GAAG9W,EAAEgW,EAAE0qI,gBAAgBhxG,EAAE6qH,IAAI4B,GAAGnmJ,EAAE3C,EAAEq8B,EAAE54B,EAAE2zB,EAAEzqC,EAAE4oD,KAAKxa,GAAG,oBAAoBua,EAAEk0G,2BAA2B,oBAAoBl0G,EAAEm0G,qBAAqB,oBAAoBn0G,EAAEm0G,oBAAoBn0G,EAAEm0G,qBAAqB,oBAAoBn0G,EAAEk0G,2BAA2Bl0G,EAAEk0G,6BAA6B,oBAAoBl0G,EAAEkrF,oBAAoB79H,EAAE+sC,OAAO,WAClf,oBAAoB4F,EAAEkrF,oBAAoB79H,EAAE+sC,OAAO,SAAS/sC,EAAE4iJ,cAAc9hJ,EAAEd,EAAE0qI,cAAc1gJ,GAAG2oD,EAAEjkD,MAAMoS,EAAE6xC,EAAE78C,MAAM9L,EAAE2oD,EAAE7nD,QAAQ8nD,EAAE9xC,EAAE44B,IAAI,oBAAoBiZ,EAAEkrF,oBAAoB79H,EAAE+sC,OAAO,SAASjsC,GAAE,EAAG,KAAK,CAAC6xC,EAAE3yC,EAAEopI,UAAU2b,GAAGr5I,EAAE1L,GAAG05B,EAAE15B,EAAE4iJ,cAAchwG,EAAE5yC,EAAEhT,OAAOgT,EAAEs6H,YAAY5gG,EAAEupH,GAAGjjJ,EAAEhT,KAAK0sC,GAAGiZ,EAAEjkD,MAAMkkD,EAAExa,EAAEp4B,EAAEoiJ,aAAa3tH,EAAEke,EAAE7nD,QAAwB,kBAAhBd,EAAEqT,EAAE4zC,cAAiC,OAAOjnD,EAAEA,EAAEg6J,GAAGh6J,GAAyBA,EAAEg2J,GAAGhgJ,EAA1BhW,EAAEm2J,GAAG9iJ,GAAG0iJ,GAAGpmH,GAAEtQ,SAAmB,IAAIgO,EAAEh6B,EAAEk0C,0BAA0B7hC,EAAE,oBAAoB2nB,GAAG,oBAAoBsb,EAAEi0G,0BAC9e,oBAAoBj0G,EAAE+zG,kCAAkC,oBAAoB/zG,EAAE8zG,4BAA4B/sH,IAAItB,GAAG3D,IAAIzqC,IAAIw8J,GAAGxmJ,EAAE2yC,EAAE7xC,EAAE9W,GAAGu6J,IAAG,EAAG9vH,EAAEz0B,EAAE0qI,cAAc/3F,EAAE78C,MAAM2+B,EAAE4wH,GAAGrlJ,EAAEc,EAAE6xC,EAAE7gD,GAAG,IAAIlE,EAAEoS,EAAE0qI,cAAchxG,IAAItB,GAAG3D,IAAI7mC,GAAGkyJ,GAAGz2H,SAASk7H,IAAI,oBAAoBltH,IAAIquH,GAAG1lJ,EAAE3C,EAAEg6B,EAAEv2B,GAAGlT,EAAEoS,EAAE0qI,gBAAgB93F,EAAE2xG,IAAI4B,GAAGnmJ,EAAE3C,EAAEu1C,EAAE9xC,EAAE2zB,EAAE7mC,EAAE5D,KAAI,IAAK0lB,GAAG,oBAAoBijC,EAAEg9G,4BAA4B,oBAAoBh9G,EAAEi9G,sBAAsB,oBAAoBj9G,EAAEi9G,qBAAqBj9G,EAAEi9G,oBAAoB9uJ,EAAElT,EAAE5D,GAAG,oBAAoB2oD,EAAEg9G,4BAC5fh9G,EAAEg9G,2BAA2B7uJ,EAAElT,EAAE5D,IAAI,oBAAoB2oD,EAAEk9G,qBAAqB7vJ,EAAE+sC,OAAO,GAAG,oBAAoB4F,EAAEi0G,0BAA0B5mJ,EAAE+sC,OAAO,QAAQ,oBAAoB4F,EAAEk9G,oBAAoBn2H,IAAIhuB,EAAEk3I,eAAenuH,IAAI/oB,EAAEg/H,gBAAgB1qI,EAAE+sC,OAAO,GAAG,oBAAoB4F,EAAEi0G,yBAAyBltH,IAAIhuB,EAAEk3I,eAAenuH,IAAI/oB,EAAEg/H,gBAAgB1qI,EAAE+sC,OAAO,MAAM/sC,EAAE4iJ,cAAc9hJ,EAAEd,EAAE0qI,cAAc98I,GAAG+kD,EAAEjkD,MAAMoS,EAAE6xC,EAAE78C,MAAMlI,EAAE+kD,EAAE7nD,QAAQd,EAAE8W,EAAE8xC,IAAI,oBAAoBD,EAAEk9G,oBAAoBn2H,IAAIhuB,EAAEk3I,eAAenuH,IACjf/oB,EAAEg/H,gBAAgB1qI,EAAE+sC,OAAO,GAAG,oBAAoB4F,EAAEi0G,yBAAyBltH,IAAIhuB,EAAEk3I,eAAenuH,IAAI/oB,EAAEg/H,gBAAgB1qI,EAAE+sC,OAAO,MAAMjsC,GAAE,EAAG,CAAC,OAAOgvJ,GAAGpkJ,EAAE1L,EAAE3C,EAAEyD,EAAEjY,EAAEiJ,EAAE,CACnK,SAASg+J,GAAGpkJ,EAAE1L,EAAE3C,EAAEyD,EAAEhP,EAAEjJ,GAAG2mK,GAAG9jJ,EAAE1L,GAAG,IAAI2yC,EAAE,KAAa,IAAR3yC,EAAE+sC,OAAW,IAAIjsC,IAAI6xC,EAAE,OAAO7gD,GAAG4uJ,GAAG1gJ,EAAE3C,GAAE,GAAIwxJ,GAAGnjJ,EAAE1L,EAAEnX,GAAGiY,EAAEd,EAAEopI,UAAUqlB,GAAGplI,QAAQrpB,EAAE,IAAI05B,EAAEiZ,GAAG,oBAAoBt1C,EAAEi0C,yBAAyB,KAAKxwC,EAAEkQ,SAAwI,OAA/HhR,EAAE+sC,OAAO,EAAE,OAAOrhC,GAAGinC,GAAG3yC,EAAE8qI,MAAM6c,GAAG3nJ,EAAE0L,EAAEo/H,MAAM,KAAKjiJ,GAAGmX,EAAE8qI,MAAM6c,GAAG3nJ,EAAE,KAAK05B,EAAE7wC,IAAI8lK,GAAGjjJ,EAAE1L,EAAE05B,EAAE7wC,GAAGmX,EAAE0qI,cAAc5pI,EAAEhL,MAAMhE,GAAG4uJ,GAAG1gJ,EAAE3C,GAAE,GAAW2C,EAAE8qI,KAAK,CAAC,SAASilB,GAAGrkJ,GAAG,IAAI1L,EAAE0L,EAAE09H,UAAUppI,EAAEgwJ,eAAe3P,GAAG30I,EAAE1L,EAAEgwJ,eAAehwJ,EAAEgwJ,iBAAiBhwJ,EAAElV,SAASkV,EAAElV,SAASu1J,GAAG30I,EAAE1L,EAAElV,SAAQ,GAAIo9J,GAAGx8I,EAAE1L,EAAEyvI,cAAc,CAC5e,SAASwgB,GAAGvkJ,EAAE1L,EAAE3C,EAAEyD,EAAEhP,GAAuC,OAApCgxJ,KAAKC,GAAGjxJ,GAAGkO,EAAE+sC,OAAO,IAAI4hH,GAAGjjJ,EAAE1L,EAAE3C,EAAEyD,GAAUd,EAAE8qI,KAAK,CAAC,IAaqLolB,GAAGC,GAAGC,GAAGC,GAb1LC,GAAG,CAAC3lB,WAAW,KAAK2X,YAAY,KAAKC,UAAU,GAAG,SAASgO,GAAG7kJ,GAAG,MAAM,CAACyjJ,UAAUzjJ,EAAE0jJ,UAAU,KAAKC,YAAY,KAAK,CAClM,SAASmB,GAAG9kJ,EAAE1L,EAAE3C,GAAG,IAA0Dq8B,EAAtD54B,EAAEd,EAAEoiJ,aAAatwJ,EAAEumC,GAAEhP,QAAQxgC,GAAE,EAAG8pD,EAAE,KAAa,IAAR3yC,EAAE+sC,OAAqJ,IAAvIrT,EAAEiZ,KAAKjZ,GAAE,OAAOhuB,GAAG,OAAOA,EAAEg/H,gBAAiB,KAAO,EAAF54I,IAAS4nC,GAAE7wC,GAAE,EAAGmX,EAAE+sC,QAAQ,KAAY,OAAOrhC,GAAG,OAAOA,EAAEg/H,gBAAc54I,GAAG,GAAEglC,GAAEuB,GAAI,EAAFvmC,GAAQ,OAAO4Z,EAA2B,OAAxB+2I,GAAGziJ,GAAwB,QAArB0L,EAAE1L,EAAE0qI,gBAA2C,QAAfh/H,EAAEA,EAAEi/H,aAA4B,KAAY,EAAP3qI,EAAEosB,MAAQpsB,EAAE8jJ,MAAM,EAAE,OAAOp4I,EAAEjZ,KAAKuN,EAAE8jJ,MAAM,EAAE9jJ,EAAE8jJ,MAAM,WAAW,OAAKnxG,EAAE7xC,EAAEqQ,SAASzF,EAAE5K,EAAE2vJ,SAAgB5nK,GAAGiY,EAAEd,EAAEosB,KAAKvjC,EAAEmX,EAAE8qI,MAAMn4F,EAAE,CAACvmB,KAAK,SAASjb,SAASwhC,GAAG,KAAO,EAAF7xC,IAAM,OAAOjY,GAAGA,EAAE66J,WAAW,EAAE76J,EAAEu5J,aAC7ezvG,GAAG9pD,EAAE6nK,GAAG/9G,EAAE7xC,EAAE,EAAE,MAAM4K,EAAEg8I,GAAGh8I,EAAE5K,EAAEzD,EAAE,MAAMxU,EAAE2hJ,OAAOxqI,EAAE0L,EAAE8+H,OAAOxqI,EAAEnX,EAAEkiJ,QAAQr/H,EAAE1L,EAAE8qI,MAAMjiJ,EAAEmX,EAAE8qI,MAAMJ,cAAc6lB,GAAGlzJ,GAAG2C,EAAE0qI,cAAc4lB,GAAG5kJ,GAAGilJ,GAAG3wJ,EAAE2yC,IAAqB,GAAG,QAArB7gD,EAAE4Z,EAAEg/H,gBAA2C,QAAfhxG,EAAE5nC,EAAE64I,YAAqB,OAGpM,SAAYj/H,EAAE1L,EAAE3C,EAAEyD,EAAEhP,EAAEjJ,EAAE8pD,GAAG,GAAGt1C,EAAG,OAAW,IAAR2C,EAAE+sC,OAAiB/sC,EAAE+sC,QAAQ,IAAwB6jH,GAAGllJ,EAAE1L,EAAE2yC,EAA3B7xC,EAAE8sJ,GAAGp9J,MAAMhF,EAAE,SAAsB,OAAOwU,EAAE0qI,eAAqB1qI,EAAE8qI,MAAMp/H,EAAEo/H,MAAM9qI,EAAE+sC,OAAO,IAAI,OAAKlkD,EAAEiY,EAAE2vJ,SAAS3+J,EAAEkO,EAAEosB,KAAKtrB,EAAE4vJ,GAAG,CAACtkI,KAAK,UAAUjb,SAASrQ,EAAEqQ,UAAUrf,EAAE,EAAE,OAAMjJ,EAAE6+J,GAAG7+J,EAAEiJ,EAAE6gD,EAAE,OAAQ5F,OAAO,EAAEjsC,EAAE0pI,OAAOxqI,EAAEnX,EAAE2hJ,OAAOxqI,EAAEc,EAAEiqI,QAAQliJ,EAAEmX,EAAE8qI,MAAMhqI,EAAE,KAAY,EAAPd,EAAEosB,OAASu7H,GAAG3nJ,EAAE0L,EAAEo/H,MAAM,KAAKn4F,GAAG3yC,EAAE8qI,MAAMJ,cAAc6lB,GAAG59G,GAAG3yC,EAAE0qI,cAAc4lB,GAAUznK,GAAE,GAAG,KAAY,EAAPmX,EAAEosB,MAAQ,OAAOwkI,GAAGllJ,EAAE1L,EAAE2yC,EAAE,MAAM,GAAG,OAAO7gD,EAAEW,KAAK,CAChd,GADidqO,EAAEhP,EAAEwnJ,aAAaxnJ,EAAEwnJ,YAAYuX,QAC3e,IAAIn3H,EAAE54B,EAAEgwJ,KAA0C,OAArChwJ,EAAE44B,EAA0Ck3H,GAAGllJ,EAAE1L,EAAE2yC,EAA/B7xC,EAAE8sJ,GAAlB/kK,EAAE2H,MAAMhF,EAAE,MAAasV,OAAE,GAA0B,CAAwB,GAAvB44B,EAAE,KAAKiZ,EAAEjnC,EAAEg4I,YAAeK,IAAIrqH,EAAE,CAAK,GAAG,QAAP54B,EAAEg3B,IAAc,CAAC,OAAO6a,GAAGA,GAAG,KAAK,EAAE7gD,EAAE,EAAE,MAAM,KAAK,GAAGA,EAAE,EAAE,MAAM,KAAK,GAAG,KAAK,IAAI,KAAK,IAAI,KAAK,IAAI,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,KAAK,MAAM,KAAK,MAAM,KAAK,MAAM,KAAK,OAAO,KAAK,OAAO,KAAK,OAAO,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,QAAQ,KAAK,SAAS,KAAK,SAAS,KAAK,SAASA,EAAE,GAAG,MAAM,KAAK,UAAUA,EAAE,UAAU,MAAM,QAAQA,EAAE,EAChd,KADkdA,EAAE,KAAKA,GAAGgP,EAAEqsI,eAAex6F,IAAI,EAAE7gD,IAC5eA,IAAIjJ,EAAE05J,YAAY15J,EAAE05J,UAAUzwJ,EAAEwyJ,GAAG54I,EAAE5Z,GAAGk0J,GAAGllJ,EAAE4K,EAAE5Z,GAAG,GAAG,CAA0B,OAAzBi/J,KAAgCH,GAAGllJ,EAAE1L,EAAE2yC,EAAlC7xC,EAAE8sJ,GAAGp9J,MAAMhF,EAAE,OAAyB,CAAC,MAAG,OAAOsG,EAAEW,MAAYuN,EAAE+sC,OAAO,IAAI/sC,EAAE8qI,MAAMp/H,EAAEo/H,MAAM9qI,EAAEgxJ,GAAGnkK,KAAK,KAAK6e,GAAG5Z,EAAEm/J,YAAYjxJ,EAAE,OAAK0L,EAAE7iB,EAAEy5J,YAAYR,GAAG5C,GAAGptJ,EAAEwnJ,aAAauI,GAAG7hJ,EAAE04B,IAAE,EAAGqpH,GAAG,KAAK,OAAOr2I,IAAI01I,GAAGC,MAAME,GAAGH,GAAGC,MAAMG,GAAGJ,GAAGC,MAAMC,GAAGC,GAAG71I,EAAExS,GAAGsoJ,GAAG91I,EAAE22I,SAASf,GAAGthJ,GAAGA,EAAE2wJ,GAAG3wJ,EAAEc,EAAEqQ,UAAUnR,EAAE+sC,OAAO,KAAY/sC,EAAC,CALrKkxJ,CAAGxlJ,EAAE1L,EAAE2yC,EAAE7xC,EAAE44B,EAAE5nC,EAAEuL,GAAG,GAAGxU,EAAE,CAACA,EAAEiY,EAAE2vJ,SAAS99G,EAAE3yC,EAAEosB,KAAesN,GAAV5nC,EAAE4Z,EAAEo/H,OAAUC,QAAQ,IAAI/gJ,EAAE,CAACoiC,KAAK,SAASjb,SAASrQ,EAAEqQ,UAChF,OAD0F,KAAO,EAAFwhC,IAAM3yC,EAAE8qI,QAAQh5I,IAAGgP,EAAEd,EAAE8qI,OAAQ4Y,WAAW,EAAE5iJ,EAAEshJ,aAAap4J,EAAEgW,EAAEkiJ,UAAU,OAAOphJ,EAAEumJ,GAAGv1J,EAAE9H,IAAKmnK,aAA4B,SAAfr/J,EAAEq/J,aAAuB,OAAOz3H,EAAE7wC,EAAEw+J,GAAG3tH,EAAE7wC,IAAIA,EAAE6+J,GAAG7+J,EAAE8pD,EAAEt1C,EAAE,OAAQ0vC,OAAO,EAAGlkD,EAAE2hJ,OACnfxqI,EAAEc,EAAE0pI,OAAOxqI,EAAEc,EAAEiqI,QAAQliJ,EAAEmX,EAAE8qI,MAAMhqI,EAAEA,EAAEjY,EAAEA,EAAEmX,EAAE8qI,MAA8Bn4F,EAAE,QAA1BA,EAAEjnC,EAAEo/H,MAAMJ,eAAyB6lB,GAAGlzJ,GAAG,CAAC8xJ,UAAUx8G,EAAEw8G,UAAU9xJ,EAAE+xJ,UAAU,KAAKC,YAAY18G,EAAE08G,aAAaxmK,EAAE6hJ,cAAc/3F,EAAE9pD,EAAE66J,WAAWh4I,EAAEg4I,YAAYrmJ,EAAE2C,EAAE0qI,cAAc4lB,GAAUxvJ,CAAC,CAAoO,OAAzN4K,GAAV7iB,EAAE6iB,EAAEo/H,OAAUC,QAAQjqI,EAAEumJ,GAAGx+J,EAAE,CAACujC,KAAK,UAAUjb,SAASrQ,EAAEqQ,WAAW,KAAY,EAAPnR,EAAEosB,QAAUtrB,EAAEgjJ,MAAMzmJ,GAAGyD,EAAE0pI,OAAOxqI,EAAEc,EAAEiqI,QAAQ,KAAK,OAAOr/H,IAAkB,QAAdrO,EAAE2C,EAAEkiJ,YAAoBliJ,EAAEkiJ,UAAU,CAACx2I,GAAG1L,EAAE+sC,OAAO,IAAI1vC,EAAEhV,KAAKqjB,IAAI1L,EAAE8qI,MAAMhqI,EAAEd,EAAE0qI,cAAc,KAAY5pI,CAAC,CACnd,SAAS6vJ,GAAGjlJ,EAAE1L,GAA8D,OAA3DA,EAAE0wJ,GAAG,CAACtkI,KAAK,UAAUjb,SAASnR,GAAG0L,EAAE0gB,KAAK,EAAE,OAAQo+G,OAAO9+H,EAASA,EAAEo/H,MAAM9qI,CAAC,CAAC,SAAS4wJ,GAAGllJ,EAAE1L,EAAE3C,EAAEyD,GAAwG,OAArG,OAAOA,GAAGiiJ,GAAGjiJ,GAAG6mJ,GAAG3nJ,EAAE0L,EAAEo/H,MAAM,KAAKztI,IAAGqO,EAAEilJ,GAAG3wJ,EAAEA,EAAEoiJ,aAAajxI,WAAY47B,OAAO,EAAE/sC,EAAE0qI,cAAc,KAAYh/H,CAAC,CAGkJ,SAAS0lJ,GAAG1lJ,EAAE1L,EAAE3C,GAAGqO,EAAEo4I,OAAO9jJ,EAAE,IAAIc,EAAE4K,EAAE6+H,UAAU,OAAOzpI,IAAIA,EAAEgjJ,OAAO9jJ,GAAGyjJ,GAAG/3I,EAAE8+H,OAAOxqI,EAAE3C,EAAE,CACxc,SAASg0J,GAAG3lJ,EAAE1L,EAAE3C,EAAEyD,EAAEhP,GAAG,IAAIjJ,EAAE6iB,EAAEg/H,cAAc,OAAO7hJ,EAAE6iB,EAAEg/H,cAAc,CAAC4mB,YAAYtxJ,EAAEuxJ,UAAU,KAAKC,mBAAmB,EAAE11D,KAAKh7F,EAAE4qB,KAAKruB,EAAEo0J,SAAS3/J,IAAIjJ,EAAEyoK,YAAYtxJ,EAAEnX,EAAE0oK,UAAU,KAAK1oK,EAAE2oK,mBAAmB,EAAE3oK,EAAEizG,KAAKh7F,EAAEjY,EAAE6iC,KAAKruB,EAAExU,EAAE4oK,SAAS3/J,EAAE,CAC3O,SAAS4/J,GAAGhmJ,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAEd,EAAEoiJ,aAAatwJ,EAAEgP,EAAEynJ,YAAY1/J,EAAEiY,EAAE4qB,KAAsC,GAAjCijI,GAAGjjJ,EAAE1L,EAAEc,EAAEqQ,SAAS9T,GAAkB,KAAO,GAAtByD,EAAEu3B,GAAEhP,UAAqBvoB,EAAI,EAAFA,EAAI,EAAEd,EAAE+sC,OAAO,QAAQ,CAAC,GAAG,OAAOrhC,GAAG,KAAa,IAARA,EAAEqhC,OAAWrhC,EAAE,IAAIA,EAAE1L,EAAE8qI,MAAM,OAAOp/H,GAAG,CAAC,GAAG,KAAKA,EAAEwM,IAAI,OAAOxM,EAAEg/H,eAAe0mB,GAAG1lJ,EAAErO,EAAE2C,QAAQ,GAAG,KAAK0L,EAAEwM,IAAIk5I,GAAG1lJ,EAAErO,EAAE2C,QAAQ,GAAG,OAAO0L,EAAEo/H,MAAM,CAACp/H,EAAEo/H,MAAMN,OAAO9+H,EAAEA,EAAEA,EAAEo/H,MAAM,QAAQ,CAAC,GAAGp/H,IAAI1L,EAAE,MAAM0L,EAAE,KAAK,OAAOA,EAAEq/H,SAAS,CAAC,GAAG,OAAOr/H,EAAE8+H,QAAQ9+H,EAAE8+H,SAASxqI,EAAE,MAAM0L,EAAEA,EAAEA,EAAE8+H,MAAM,CAAC9+H,EAAEq/H,QAAQP,OAAO9+H,EAAE8+H,OAAO9+H,EAAEA,EAAEq/H,OAAO,CAACjqI,GAAG,CAAC,CAAQ,GAAPg2B,GAAEuB,GAAEv3B,GAAM,KAAY,EAAPd,EAAEosB,MAAQpsB,EAAE0qI,cAC/e,UAAU,OAAO54I,GAAG,IAAK,WAAqB,IAAVuL,EAAE2C,EAAE8qI,MAAUh5I,EAAE,KAAK,OAAOuL,GAAiB,QAAdqO,EAAErO,EAAEktI,YAAoB,OAAO+d,GAAG58I,KAAK5Z,EAAEuL,GAAGA,EAAEA,EAAE0tI,QAAY,QAAJ1tI,EAAEvL,IAAYA,EAAEkO,EAAE8qI,MAAM9qI,EAAE8qI,MAAM,OAAOh5I,EAAEuL,EAAE0tI,QAAQ1tI,EAAE0tI,QAAQ,MAAMsmB,GAAGrxJ,GAAE,EAAGlO,EAAEuL,EAAExU,GAAG,MAAM,IAAK,YAA6B,IAAjBwU,EAAE,KAAKvL,EAAEkO,EAAE8qI,MAAU9qI,EAAE8qI,MAAM,KAAK,OAAOh5I,GAAG,CAAe,GAAG,QAAjB4Z,EAAE5Z,EAAEy4I,YAAuB,OAAO+d,GAAG58I,GAAG,CAAC1L,EAAE8qI,MAAMh5I,EAAE,KAAK,CAAC4Z,EAAE5Z,EAAEi5I,QAAQj5I,EAAEi5I,QAAQ1tI,EAAEA,EAAEvL,EAAEA,EAAE4Z,CAAC,CAAC2lJ,GAAGrxJ,GAAE,EAAG3C,EAAE,KAAKxU,GAAG,MAAM,IAAK,WAAWwoK,GAAGrxJ,GAAE,EAAG,KAAK,UAAK,GAAQ,MAAM,QAAQA,EAAE0qI,cAAc,KAAK,OAAO1qI,EAAE8qI,KAAK,CAC7d,SAAS4kB,GAAGhkJ,EAAE1L,GAAG,KAAY,EAAPA,EAAEosB,OAAS,OAAO1gB,IAAIA,EAAE6+H,UAAU,KAAKvqI,EAAEuqI,UAAU,KAAKvqI,EAAE+sC,OAAO,EAAE,CAAC,SAAS8hH,GAAGnjJ,EAAE1L,EAAE3C,GAAyD,GAAtD,OAAOqO,IAAI1L,EAAE4jJ,aAAal4I,EAAEk4I,cAAc0B,IAAItlJ,EAAE8jJ,MAAS,KAAKzmJ,EAAE2C,EAAE0jJ,YAAY,OAAO,KAAK,GAAG,OAAOh4I,GAAG1L,EAAE8qI,QAAQp/H,EAAEo/H,MAAM,MAAMt6I,MAAMhF,EAAE,MAAM,GAAG,OAAOwU,EAAE8qI,MAAM,CAA4C,IAAjCztI,EAAEgqJ,GAAZ37I,EAAE1L,EAAE8qI,MAAap/H,EAAE02I,cAAcpiJ,EAAE8qI,MAAMztI,EAAMA,EAAEmtI,OAAOxqI,EAAE,OAAO0L,EAAEq/H,SAASr/H,EAAEA,EAAEq/H,SAAQ1tI,EAAEA,EAAE0tI,QAAQsc,GAAG37I,EAAEA,EAAE02I,eAAgB5X,OAAOxqI,EAAE3C,EAAE0tI,QAAQ,IAAI,CAAC,OAAO/qI,EAAE8qI,KAAK,CAO9a,SAAS6mB,GAAGjmJ,EAAE1L,GAAG,IAAI04B,GAAE,OAAOhtB,EAAE+lJ,UAAU,IAAK,SAASzxJ,EAAE0L,EAAEggB,KAAK,IAAI,IAAIruB,EAAE,KAAK,OAAO2C,GAAG,OAAOA,EAAEuqI,YAAYltI,EAAE2C,GAAGA,EAAEA,EAAE+qI,QAAQ,OAAO1tI,EAAEqO,EAAEggB,KAAK,KAAKruB,EAAE0tI,QAAQ,KAAK,MAAM,IAAK,YAAY1tI,EAAEqO,EAAEggB,KAAK,IAAI,IAAI5qB,EAAE,KAAK,OAAOzD,GAAG,OAAOA,EAAEktI,YAAYzpI,EAAEzD,GAAGA,EAAEA,EAAE0tI,QAAQ,OAAOjqI,EAAEd,GAAG,OAAO0L,EAAEggB,KAAKhgB,EAAEggB,KAAK,KAAKhgB,EAAEggB,KAAKq/G,QAAQ,KAAKjqI,EAAEiqI,QAAQ,KAAK,CAC5U,SAASt+G,GAAE/gB,GAAG,IAAI1L,EAAE,OAAO0L,EAAE6+H,WAAW7+H,EAAE6+H,UAAUO,QAAQp/H,EAAEo/H,MAAMztI,EAAE,EAAEyD,EAAE,EAAE,GAAGd,EAAE,IAAI,IAAIlO,EAAE4Z,EAAEo/H,MAAM,OAAOh5I,GAAGuL,GAAGvL,EAAEgyJ,MAAMhyJ,EAAE4xJ,WAAW5iJ,GAAkB,SAAfhP,EAAEq/J,aAAsBrwJ,GAAW,SAARhP,EAAEi7C,MAAej7C,EAAE04I,OAAO9+H,EAAE5Z,EAAEA,EAAEi5I,aAAa,IAAIj5I,EAAE4Z,EAAEo/H,MAAM,OAAOh5I,GAAGuL,GAAGvL,EAAEgyJ,MAAMhyJ,EAAE4xJ,WAAW5iJ,GAAGhP,EAAEq/J,aAAarwJ,GAAGhP,EAAEi7C,MAAMj7C,EAAE04I,OAAO9+H,EAAE5Z,EAAEA,EAAEi5I,QAAyC,OAAjCr/H,EAAEylJ,cAAcrwJ,EAAE4K,EAAEg4I,WAAWrmJ,EAAS2C,CAAC,CAC7V,SAAS4xJ,GAAGlmJ,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAEd,EAAEoiJ,aAAmB,OAANR,GAAG5hJ,GAAUA,EAAEkY,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,KAAK,EAAE,KAAK,GAAG,OAAOuU,GAAEzsB,GAAG,KAAK,KAAK,EAUtD,KAAK,GAAG,OAAOmgJ,GAAGngJ,EAAEhT,OAAOozJ,KAAK3zH,GAAEzsB,GAAG,KAVqD,KAAK,EAA2Q,OAAzQc,EAAEd,EAAEopI,UAAU+e,KAAKpvH,GAAE+mH,IAAI/mH,GAAEY,IAAG8uH,KAAK3nJ,EAAEkvJ,iBAAiBlvJ,EAAEhW,QAAQgW,EAAEkvJ,eAAelvJ,EAAEkvJ,eAAe,MAAS,OAAOtkJ,GAAG,OAAOA,EAAEo/H,QAAM6X,GAAG3iJ,GAAGA,EAAE+sC,OAAO,EAAE,OAAOrhC,GAAGA,EAAEg/H,cAAc8E,cAAc,KAAa,IAARxvI,EAAE+sC,SAAa/sC,EAAE+sC,OAAO,KAAK,OAAOg1G,KAAK8P,GAAG9P,IAAIA,GAAG,QAAOoO,GAAGzkJ,EAAE1L,GAAGysB,GAAEzsB,GAAU,KAAK,KAAK,EAAEqoJ,GAAGroJ,GAAG,IAAIlO,EAAEm2J,GAAGD,GAAG3+H,SAC7e,GAAThsB,EAAE2C,EAAEhT,KAAQ,OAAO0e,GAAG,MAAM1L,EAAEopI,UAAUgnB,GAAG1kJ,EAAE1L,EAAE3C,EAAEyD,EAAEhP,GAAG4Z,EAAE+yH,MAAMz+H,EAAEy+H,MAAMz+H,EAAE+sC,OAAO,IAAI/sC,EAAE+sC,OAAO,aAAa,CAAC,IAAIjsC,EAAE,CAAC,GAAG,OAAOd,EAAEopI,UAAU,MAAM54I,MAAMhF,EAAE,MAAW,OAALihC,GAAEzsB,GAAU,IAAI,CAAkB,GAAjB0L,EAAEu8I,GAAGH,GAAGz+H,SAAYs5H,GAAG3iJ,GAAG,CAACc,EAAEd,EAAEopI,UAAU/rI,EAAE2C,EAAEhT,KAAK,IAAInE,EAAEmX,EAAE4iJ,cAA+C,OAAjC9hJ,EAAEw+I,IAAIt/I,EAAEc,EAAEy+I,IAAI12J,EAAE6iB,EAAE,KAAY,EAAP1L,EAAEosB,MAAe/uB,GAAG,IAAK,SAASw7B,GAAE,SAAS/3B,GAAG+3B,GAAE,QAAQ/3B,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQ+3B,GAAE,OAAO/3B,GAAG,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIhP,EAAE,EAAEA,EAAE+qJ,GAAG31J,OAAO4K,IAAI+mC,GAAEgkH,GAAG/qJ,GAAGgP,GAAG,MAAM,IAAK,SAAS+3B,GAAE,QAAQ/3B,GAAG,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAO+3B,GAAE,QACnhB/3B,GAAG+3B,GAAE,OAAO/3B,GAAG,MAAM,IAAK,UAAU+3B,GAAE,SAAS/3B,GAAG,MAAM,IAAK,QAAQkiI,EAAGliI,EAAEjY,GAAGgwC,GAAE,UAAU/3B,GAAG,MAAM,IAAK,SAASA,EAAEgiI,cAAc,CAACgvB,cAAcjpK,EAAEkpK,UAAUl5H,GAAE,UAAU/3B,GAAG,MAAM,IAAK,WAAWgjI,GAAGhjI,EAAEjY,GAAGgwC,GAAE,UAAU/3B,GAAkB,IAAI,IAAI6xC,KAAvB61F,GAAGnrI,EAAExU,GAAGiJ,EAAE,KAAkBjJ,EAAE,GAAGA,EAAET,eAAeuqD,GAAG,CAAC,IAAIjZ,EAAE7wC,EAAE8pD,GAAG,aAAaA,EAAE,kBAAkBjZ,EAAE54B,EAAEyJ,cAAcmvB,KAAI,IAAK7wC,EAAEmpK,0BAA0B3T,GAAGv9I,EAAEyJ,YAAYmvB,EAAEhuB,GAAG5Z,EAAE,CAAC,WAAW4nC,IAAI,kBAAkBA,GAAG54B,EAAEyJ,cAAc,GAAGmvB,KAAI,IAAK7wC,EAAEmpK,0BAA0B3T,GAAGv9I,EAAEyJ,YAC1emvB,EAAEhuB,GAAG5Z,EAAE,CAAC,WAAW,GAAG4nC,IAAIolG,EAAG12I,eAAeuqD,IAAI,MAAMjZ,GAAG,aAAaiZ,GAAG9Z,GAAE,SAAS/3B,EAAE,CAAC,OAAOzD,GAAG,IAAK,QAAQ6kI,EAAGphI,GAAGuiI,EAAGviI,EAAEjY,GAAE,GAAI,MAAM,IAAK,WAAWq5I,EAAGphI,GAAGkjI,GAAGljI,GAAG,MAAM,IAAK,SAAS,IAAK,SAAS,MAAM,QAAQ,oBAAoBjY,EAAE4zI,UAAU37H,EAAEmxJ,QAAQ3T,IAAIx9I,EAAEhP,EAAEkO,EAAEykJ,YAAY3jJ,EAAE,OAAOA,IAAId,EAAE+sC,OAAO,EAAE,KAAK,CAAC4F,EAAE,IAAI7gD,EAAE6yI,SAAS7yI,EAAEA,EAAEwxI,cAAc,iCAAiC53H,IAAIA,EAAEu4H,GAAG5mI,IAAI,iCAAiCqO,EAAE,WAAWrO,IAAGqO,EAAEinC,EAAEhnC,cAAc,QAAS1C,UAAU,qBAAuByC,EAAEA,EAAEgjB,YAAYhjB,EAAE44H,aAC/f,kBAAkBxjI,EAAE4nI,GAAGh9H,EAAEinC,EAAEhnC,cAActO,EAAE,CAACqrI,GAAG5nI,EAAE4nI,MAAMh9H,EAAEinC,EAAEhnC,cAActO,GAAG,WAAWA,IAAIs1C,EAAEjnC,EAAE5K,EAAEixJ,SAASp/G,EAAEo/G,UAAS,EAAGjxJ,EAAEpE,OAAOi2C,EAAEj2C,KAAKoE,EAAEpE,QAAQgP,EAAEinC,EAAE6oF,gBAAgB9vH,EAAErO,GAAGqO,EAAE4zI,IAAIt/I,EAAE0L,EAAE6zI,IAAIz+I,EAAEovJ,GAAGxkJ,EAAE1L,GAAE,GAAG,GAAIA,EAAEopI,UAAU19H,EAAEA,EAAE,CAAW,OAAVinC,EAAE81F,GAAGprI,EAAEyD,GAAUzD,GAAG,IAAK,SAASw7B,GAAE,SAASntB,GAAGmtB,GAAE,QAAQntB,GAAG5Z,EAAEgP,EAAE,MAAM,IAAK,SAAS,IAAK,SAAS,IAAK,QAAQ+3B,GAAE,OAAOntB,GAAG5Z,EAAEgP,EAAE,MAAM,IAAK,QAAQ,IAAK,QAAQ,IAAIhP,EAAE,EAAEA,EAAE+qJ,GAAG31J,OAAO4K,IAAI+mC,GAAEgkH,GAAG/qJ,GAAG4Z,GAAG5Z,EAAEgP,EAAE,MAAM,IAAK,SAAS+3B,GAAE,QAAQntB,GAAG5Z,EAAEgP,EAAE,MAAM,IAAK,MAAM,IAAK,QAAQ,IAAK,OAAO+3B,GAAE,QAClfntB,GAAGmtB,GAAE,OAAOntB,GAAG5Z,EAAEgP,EAAE,MAAM,IAAK,UAAU+3B,GAAE,SAASntB,GAAG5Z,EAAEgP,EAAE,MAAM,IAAK,QAAQkiI,EAAGt3H,EAAE5K,GAAGhP,EAAE8wI,EAAGl3H,EAAE5K,GAAG+3B,GAAE,UAAUntB,GAAG,MAAM,IAAK,SAAiL,QAAQ5Z,EAAEgP,QAAxK,IAAK,SAAS4K,EAAEo3H,cAAc,CAACgvB,cAAchxJ,EAAEixJ,UAAUjgK,EAAEghD,EAAE,CAAC,EAAEhyC,EAAE,CAACpY,WAAM,IAASmwC,GAAE,UAAUntB,GAAG,MAAM,IAAK,WAAWo4H,GAAGp4H,EAAE5K,GAAGhP,EAAE8xI,GAAGl4H,EAAE5K,GAAG+3B,GAAE,UAAUntB,GAAiC,IAAI7iB,KAAhB2/I,GAAGnrI,EAAEvL,GAAG4nC,EAAE5nC,EAAa,GAAG4nC,EAAEtxC,eAAeS,GAAG,CAAC,IAAImB,EAAE0vC,EAAE7wC,GAAG,UAAUA,EAAE8+I,GAAGj8H,EAAE1hB,GAAG,4BAA4BnB,EAAuB,OAApBmB,EAAEA,EAAEA,EAAE00J,YAAO,IAAgBta,GAAG14H,EAAE1hB,GAAI,aAAanB,EAAE,kBAAkBmB,GAAG,aAC7eqT,GAAG,KAAKrT,IAAIy6I,GAAG/4H,EAAE1hB,GAAG,kBAAkBA,GAAGy6I,GAAG/4H,EAAE,GAAG1hB,GAAG,mCAAmCnB,GAAG,6BAA6BA,GAAG,cAAcA,IAAIi2I,EAAG12I,eAAeS,GAAG,MAAMmB,GAAG,aAAanB,GAAGgwC,GAAE,SAASntB,GAAG,MAAM1hB,GAAG81I,EAAGp0H,EAAE7iB,EAAEmB,EAAE2oD,GAAG,CAAC,OAAOt1C,GAAG,IAAK,QAAQ6kI,EAAGx2H,GAAG23H,EAAG33H,EAAE5K,GAAE,GAAI,MAAM,IAAK,WAAWohI,EAAGx2H,GAAGs4H,GAAGt4H,GAAG,MAAM,IAAK,SAAS,MAAM5K,EAAEpY,OAAOgjB,EAAE+vH,aAAa,QAAQ,GAAGsG,EAAGjhI,EAAEpY,QAAQ,MAAM,IAAK,SAASgjB,EAAEqmJ,WAAWjxJ,EAAEixJ,SAAmB,OAAVlpK,EAAEiY,EAAEpY,OAAc86I,GAAG93H,IAAI5K,EAAEixJ,SAASlpK,GAAE,GAAI,MAAMiY,EAAEzX,cAAcm6I,GAAG93H,IAAI5K,EAAEixJ,SAASjxJ,EAAEzX,cAClf,GAAI,MAAM,QAAQ,oBAAoByI,EAAE2qI,UAAU/wH,EAAEumJ,QAAQ3T,IAAI,OAAOjhJ,GAAG,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAWyD,IAAIA,EAAEoxJ,UAAU,MAAMxmJ,EAAE,IAAK,MAAM5K,GAAE,EAAG,MAAM4K,EAAE,QAAQ5K,GAAE,EAAG,CAACA,IAAId,EAAE+sC,OAAO,EAAE,CAAC,OAAO/sC,EAAEy+H,MAAMz+H,EAAE+sC,OAAO,IAAI/sC,EAAE+sC,OAAO,QAAQ,CAAM,OAALtgB,GAAEzsB,GAAU,KAAK,KAAK,EAAE,GAAG0L,GAAG,MAAM1L,EAAEopI,UAAUinB,GAAG3kJ,EAAE1L,EAAE0L,EAAEk3I,cAAc9hJ,OAAO,CAAC,GAAG,kBAAkBA,GAAG,OAAOd,EAAEopI,UAAU,MAAM54I,MAAMhF,EAAE,MAAsC,GAAhC6R,EAAE4qJ,GAAGD,GAAG3+H,SAAS4+H,GAAGH,GAAGz+H,SAAYs5H,GAAG3iJ,GAAG,CAAyC,GAAxCc,EAAEd,EAAEopI,UAAU/rI,EAAE2C,EAAE4iJ,cAAc9hJ,EAAEw+I,IAAIt/I,GAAKnX,EAAEiY,EAAE8jI,YAAYvnI,IAC/e,QADofqO,EACvfm2I,IAAY,OAAOn2I,EAAEwM,KAAK,KAAK,EAAEmmI,GAAGv9I,EAAE8jI,UAAUvnI,EAAE,KAAY,EAAPqO,EAAE0gB,OAAS,MAAM,KAAK,GAAE,IAAK1gB,EAAEk3I,cAAcoP,0BAA0B3T,GAAGv9I,EAAE8jI,UAAUvnI,EAAE,KAAY,EAAPqO,EAAE0gB,OAASvjC,IAAImX,EAAE+sC,OAAO,EAAE,MAAMjsC,GAAG,IAAIzD,EAAEsnI,SAAStnI,EAAEA,EAAEimI,eAAe78G,eAAe3lB,IAAKw+I,IAAIt/I,EAAEA,EAAEopI,UAAUtoI,CAAC,CAAM,OAAL2rB,GAAEzsB,GAAU,KAAK,KAAK,GAA0B,GAAvB+4B,GAAEV,IAAGv3B,EAAEd,EAAE0qI,cAAiB,OAAOh/H,GAAG,OAAOA,EAAEg/H,eAAe,OAAOh/H,EAAEg/H,cAAcC,WAAW,CAAC,GAAGjyG,IAAG,OAAOopH,IAAI,KAAY,EAAP9hJ,EAAEosB,OAAS,KAAa,IAARpsB,EAAE+sC,OAAW81G,KAAKC,KAAK9iJ,EAAE+sC,OAAO,MAAMlkD,GAAE,OAAQ,GAAGA,EAAE85J,GAAG3iJ,GAAG,OAAOc,GAAG,OAAOA,EAAE6pI,WAAW,CAAC,GAAG,OAC5fj/H,EAAE,CAAC,IAAI7iB,EAAE,MAAM2H,MAAMhF,EAAE,MAAqD,KAA7B3C,EAAE,QAApBA,EAAEmX,EAAE0qI,eAAyB7hJ,EAAE8hJ,WAAW,MAAW,MAAMn6I,MAAMhF,EAAE,MAAM3C,EAAEy2J,IAAIt/I,CAAC,MAAM8iJ,KAAK,KAAa,IAAR9iJ,EAAE+sC,SAAa/sC,EAAE0qI,cAAc,MAAM1qI,EAAE+sC,OAAO,EAAEtgB,GAAEzsB,GAAGnX,GAAE,CAAE,MAAM,OAAOk5J,KAAK8P,GAAG9P,IAAIA,GAAG,MAAMl5J,GAAE,EAAG,IAAIA,EAAE,OAAe,MAARmX,EAAE+sC,MAAY/sC,EAAE,IAAI,CAAC,OAAG,KAAa,IAARA,EAAE+sC,QAAkB/sC,EAAE8jJ,MAAMzmJ,EAAE2C,KAAEc,EAAE,OAAOA,MAAO,OAAO4K,GAAG,OAAOA,EAAEg/H,gBAAgB5pI,IAAId,EAAE8qI,MAAM/9F,OAAO,KAAK,KAAY,EAAP/sC,EAAEosB,QAAU,OAAO1gB,GAAG,KAAe,EAAV2sB,GAAEhP,SAAW,IAAIkR,KAAIA,GAAE,GAAGw2H,OAAO,OAAO/wJ,EAAEykJ,cAAczkJ,EAAE+sC,OAAO,GAAGtgB,GAAEzsB,GAAU,MAAK,KAAK,EAAE,OAAOmoJ,KACrfgI,GAAGzkJ,EAAE1L,GAAG,OAAO0L,GAAG2xI,GAAGr9I,EAAEopI,UAAUqG,eAAehjH,GAAEzsB,GAAG,KAAK,KAAK,GAAG,OAAOujJ,GAAGvjJ,EAAEhT,KAAK6S,UAAU4sB,GAAEzsB,GAAG,KAA+C,KAAK,GAA0B,GAAvB+4B,GAAEV,IAAwB,QAArBxvC,EAAEmX,EAAE0qI,eAA0B,OAAOj+G,GAAEzsB,GAAG,KAAuC,GAAlCc,EAAE,KAAa,IAARd,EAAE+sC,OAA4B,QAAjB4F,EAAE9pD,EAAE0oK,WAAsB,GAAGzwJ,EAAE6wJ,GAAG9oK,GAAE,OAAQ,CAAC,GAAG,IAAI0xC,IAAG,OAAO7uB,GAAG,KAAa,IAARA,EAAEqhC,OAAW,IAAIrhC,EAAE1L,EAAE8qI,MAAM,OAAOp/H,GAAG,CAAS,GAAG,QAAXinC,EAAE21G,GAAG58I,IAAe,CAAmG,IAAlG1L,EAAE+sC,OAAO,IAAI4kH,GAAG9oK,GAAE,GAAoB,QAAhBiY,EAAE6xC,EAAE8xG,eAAuBzkJ,EAAEykJ,YAAY3jJ,EAAEd,EAAE+sC,OAAO,GAAG/sC,EAAEmxJ,aAAa,EAAErwJ,EAAEzD,EAAMA,EAAE2C,EAAE8qI,MAAM,OAAOztI,GAAOqO,EAAE5K,GAANjY,EAAEwU,GAAQ0vC,OAAO,SAC/d,QAAd4F,EAAE9pD,EAAE0hJ,YAAoB1hJ,EAAE66J,WAAW,EAAE76J,EAAEi7J,MAAMp4I,EAAE7iB,EAAEiiJ,MAAM,KAAKjiJ,EAAEsoK,aAAa,EAAEtoK,EAAE+5J,cAAc,KAAK/5J,EAAE6hJ,cAAc,KAAK7hJ,EAAE47J,YAAY,KAAK57J,EAAE+6J,aAAa,KAAK/6J,EAAEugJ,UAAU,OAAOvgJ,EAAE66J,WAAW/wG,EAAE+wG,WAAW76J,EAAEi7J,MAAMnxG,EAAEmxG,MAAMj7J,EAAEiiJ,MAAMn4F,EAAEm4F,MAAMjiJ,EAAEsoK,aAAa,EAAEtoK,EAAEq5J,UAAU,KAAKr5J,EAAE+5J,cAAcjwG,EAAEiwG,cAAc/5J,EAAE6hJ,cAAc/3F,EAAE+3F,cAAc7hJ,EAAE47J,YAAY9xG,EAAE8xG,YAAY57J,EAAEmE,KAAK2lD,EAAE3lD,KAAK0e,EAAEinC,EAAEixG,aAAa/6J,EAAE+6J,aAAa,OAAOl4I,EAAE,KAAK,CAACo4I,MAAMp4I,EAAEo4I,MAAMD,aAAan4I,EAAEm4I,eAAexmJ,EAAEA,EAAE0tI,QAA2B,OAAnBj0G,GAAEuB,GAAY,EAAVA,GAAEhP,QAAU,GAAUrpB,EAAE8qI,KAAK,CAACp/H,EAClgBA,EAAEq/H,OAAO,CAAC,OAAOliJ,EAAE6iC,MAAM+N,KAAI04H,KAAKnyJ,EAAE+sC,OAAO,IAAIjsC,GAAE,EAAG6wJ,GAAG9oK,GAAE,GAAImX,EAAE8jJ,MAAM,QAAQ,KAAK,CAAC,IAAIhjJ,EAAE,GAAW,QAAR4K,EAAE48I,GAAG31G,KAAa,GAAG3yC,EAAE+sC,OAAO,IAAIjsC,GAAE,EAAmB,QAAhBzD,EAAEqO,EAAE+4I,eAAuBzkJ,EAAEykJ,YAAYpnJ,EAAE2C,EAAE+sC,OAAO,GAAG4kH,GAAG9oK,GAAE,GAAI,OAAOA,EAAE6iC,MAAM,WAAW7iC,EAAE4oK,WAAW9+G,EAAE43F,YAAY7xG,GAAE,OAAOjM,GAAEzsB,GAAG,UAAU,EAAEy5B,KAAI5wC,EAAE2oK,mBAAmBW,IAAI,aAAa90J,IAAI2C,EAAE+sC,OAAO,IAAIjsC,GAAE,EAAG6wJ,GAAG9oK,GAAE,GAAImX,EAAE8jJ,MAAM,SAASj7J,EAAEyoK,aAAa3+G,EAAEo4F,QAAQ/qI,EAAE8qI,MAAM9qI,EAAE8qI,MAAMn4F,IAAa,QAATt1C,EAAExU,EAAEizG,MAAcz+F,EAAE0tI,QAAQp4F,EAAE3yC,EAAE8qI,MAAMn4F,EAAE9pD,EAAEizG,KAAKnpD,EAAE,CAAC,OAAG,OAAO9pD,EAAE6iC,MAAY1rB,EAAEnX,EAAE6iC,KAAK7iC,EAAE0oK,UAC9evxJ,EAAEnX,EAAE6iC,KAAK1rB,EAAE+qI,QAAQliJ,EAAE2oK,mBAAmB/3H,KAAIz5B,EAAE+qI,QAAQ,KAAK1tI,EAAEg7B,GAAEhP,QAAQyN,GAAEuB,GAAEv3B,EAAI,EAAFzD,EAAI,EAAI,EAAFA,GAAK2C,IAAEysB,GAAEzsB,GAAU,MAAK,KAAK,GAAG,KAAK,GAAG,OAAOoyJ,KAAKtxJ,EAAE,OAAOd,EAAE0qI,cAAc,OAAOh/H,GAAG,OAAOA,EAAEg/H,gBAAgB5pI,IAAId,EAAE+sC,OAAO,MAAMjsC,GAAG,KAAY,EAAPd,EAAEosB,MAAQ,KAAQ,WAAHmjI,MAAiB9iI,GAAEzsB,GAAkB,EAAfA,EAAEmxJ,eAAiBnxJ,EAAE+sC,OAAO,OAAOtgB,GAAEzsB,GAAG,KAAK,KAAK,GAAe,KAAK,GAAG,OAAO,KAAK,MAAMxP,MAAMhF,EAAE,IAAIwU,EAAEkY,KAAM,CAClX,SAASm6I,GAAG3mJ,EAAE1L,GAAS,OAAN4hJ,GAAG5hJ,GAAUA,EAAEkY,KAAK,KAAK,EAAE,OAAOioI,GAAGngJ,EAAEhT,OAAOozJ,KAAiB,OAAZ10I,EAAE1L,EAAE+sC,QAAe/sC,EAAE+sC,OAAS,MAAHrhC,EAAS,IAAI1L,GAAG,KAAK,KAAK,EAAE,OAAOmoJ,KAAKpvH,GAAE+mH,IAAI/mH,GAAEY,IAAG8uH,KAAe,KAAO,OAAjB/8I,EAAE1L,EAAE+sC,SAAqB,KAAO,IAAFrhC,IAAQ1L,EAAE+sC,OAAS,MAAHrhC,EAAS,IAAI1L,GAAG,KAAK,KAAK,EAAE,OAAOqoJ,GAAGroJ,GAAG,KAAK,KAAK,GAA0B,GAAvB+4B,GAAEV,IAAwB,QAArB3sB,EAAE1L,EAAE0qI,gBAA2B,OAAOh/H,EAAEi/H,WAAW,CAAC,GAAG,OAAO3qI,EAAEuqI,UAAU,MAAM/5I,MAAMhF,EAAE,MAAMs3J,IAAI,CAAW,OAAS,OAAnBp3I,EAAE1L,EAAE+sC,QAAsB/sC,EAAE+sC,OAAS,MAAHrhC,EAAS,IAAI1L,GAAG,KAAK,KAAK,GAAG,OAAO+4B,GAAEV,IAAG,KAAK,KAAK,EAAE,OAAO8vH,KAAK,KAAK,KAAK,GAAG,OAAO5E,GAAGvjJ,EAAEhT,KAAK6S,UAAU,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOuyJ,KAC1gB,KAAyB,QAAQ,OAAO,KAAK,CArB7ClC,GAAG,SAASxkJ,EAAE1L,GAAG,IAAI,IAAI3C,EAAE2C,EAAE8qI,MAAM,OAAOztI,GAAG,CAAC,GAAG,IAAIA,EAAE6a,KAAK,IAAI7a,EAAE6a,IAAIxM,EAAE4c,YAAYjrB,EAAE+rI,gBAAgB,GAAG,IAAI/rI,EAAE6a,KAAK,OAAO7a,EAAEytI,MAAM,CAACztI,EAAEytI,MAAMN,OAAOntI,EAAEA,EAAEA,EAAEytI,MAAM,QAAQ,CAAC,GAAGztI,IAAI2C,EAAE,MAAM,KAAK,OAAO3C,EAAE0tI,SAAS,CAAC,GAAG,OAAO1tI,EAAEmtI,QAAQntI,EAAEmtI,SAASxqI,EAAE,OAAO3C,EAAEA,EAAEmtI,MAAM,CAACntI,EAAE0tI,QAAQP,OAAOntI,EAAEmtI,OAAOntI,EAAEA,EAAE0tI,OAAO,CAAC,EAAEolB,GAAG,WAAW,EACxTC,GAAG,SAAS1kJ,EAAE1L,EAAE3C,EAAEyD,GAAG,IAAIhP,EAAE4Z,EAAEk3I,cAAc,GAAG9wJ,IAAIgP,EAAE,CAAC4K,EAAE1L,EAAEopI,UAAU6e,GAAGH,GAAGz+H,SAAS,IAA4RspB,EAAxR9pD,EAAE,KAAK,OAAOwU,GAAG,IAAK,QAAQvL,EAAE8wI,EAAGl3H,EAAE5Z,GAAGgP,EAAE8hI,EAAGl3H,EAAE5K,GAAGjY,EAAE,GAAG,MAAM,IAAK,SAASiJ,EAAEghD,EAAE,CAAC,EAAEhhD,EAAE,CAACpJ,WAAM,IAASoY,EAAEgyC,EAAE,CAAC,EAAEhyC,EAAE,CAACpY,WAAM,IAASG,EAAE,GAAG,MAAM,IAAK,WAAWiJ,EAAE8xI,GAAGl4H,EAAE5Z,GAAGgP,EAAE8iI,GAAGl4H,EAAE5K,GAAGjY,EAAE,GAAG,MAAM,QAAQ,oBAAoBiJ,EAAE2qI,SAAS,oBAAoB37H,EAAE27H,UAAU/wH,EAAEumJ,QAAQ3T,IAAyB,IAAI1rG,KAAzB41F,GAAGnrI,EAAEyD,GAASzD,EAAE,KAAcvL,EAAE,IAAIgP,EAAE1Y,eAAewqD,IAAI9gD,EAAE1J,eAAewqD,IAAI,MAAM9gD,EAAE8gD,GAAG,GAAG,UAAUA,EAAE,CAAC,IAAIlZ,EAAE5nC,EAAE8gD,GAAG,IAAID,KAAKjZ,EAAEA,EAAEtxC,eAAeuqD,KACjft1C,IAAIA,EAAE,CAAC,GAAGA,EAAEs1C,GAAG,GAAG,KAAK,4BAA4BC,GAAG,aAAaA,GAAG,mCAAmCA,GAAG,6BAA6BA,GAAG,cAAcA,IAAIksF,EAAG12I,eAAewqD,GAAG/pD,IAAIA,EAAE,KAAKA,EAAEA,GAAG,IAAIR,KAAKuqD,EAAE,OAAO,IAAIA,KAAK9xC,EAAE,CAAC,IAAI9W,EAAE8W,EAAE8xC,GAAyB,GAAtBlZ,EAAE,MAAM5nC,EAAEA,EAAE8gD,QAAG,EAAU9xC,EAAE1Y,eAAewqD,IAAI5oD,IAAI0vC,IAAI,MAAM1vC,GAAG,MAAM0vC,GAAG,GAAG,UAAUkZ,EAAE,GAAGlZ,EAAE,CAAC,IAAIiZ,KAAKjZ,GAAGA,EAAEtxC,eAAeuqD,IAAI3oD,GAAGA,EAAE5B,eAAeuqD,KAAKt1C,IAAIA,EAAE,CAAC,GAAGA,EAAEs1C,GAAG,IAAI,IAAIA,KAAK3oD,EAAEA,EAAE5B,eAAeuqD,IAAIjZ,EAAEiZ,KAAK3oD,EAAE2oD,KAAKt1C,IAAIA,EAAE,CAAC,GAAGA,EAAEs1C,GAAG3oD,EAAE2oD,GAAG,MAAMt1C,IAAIxU,IAAIA,EAAE,IAAIA,EAAER,KAAKuqD,EACpfv1C,IAAIA,EAAErT,MAAM,4BAA4B4oD,GAAG5oD,EAAEA,EAAEA,EAAE00J,YAAO,EAAOhlH,EAAEA,EAAEA,EAAEglH,YAAO,EAAO,MAAM10J,GAAG0vC,IAAI1vC,IAAInB,EAAEA,GAAG,IAAIR,KAAKuqD,EAAE5oD,IAAI,aAAa4oD,EAAE,kBAAkB5oD,GAAG,kBAAkBA,IAAInB,EAAEA,GAAG,IAAIR,KAAKuqD,EAAE,GAAG5oD,GAAG,mCAAmC4oD,GAAG,6BAA6BA,IAAIksF,EAAG12I,eAAewqD,IAAI,MAAM5oD,GAAG,aAAa4oD,GAAG/Z,GAAE,SAASntB,GAAG7iB,GAAG6wC,IAAI1vC,IAAInB,EAAE,MAAMA,EAAEA,GAAG,IAAIR,KAAKuqD,EAAE5oD,GAAG,CAACqT,IAAIxU,EAAEA,GAAG,IAAIR,KAAK,QAAQgV,GAAG,IAAIu1C,EAAE/pD,GAAKmX,EAAEykJ,YAAY7xG,KAAE5yC,EAAE+sC,OAAO,EAAC,CAAC,EAAEsjH,GAAG,SAAS3kJ,EAAE1L,EAAE3C,EAAEyD,GAAGzD,IAAIyD,IAAId,EAAE+sC,OAAO,EAAE,EAkBlb,IAAIulH,IAAG,EAAGC,IAAE,EAAGC,GAAG,oBAAoBC,QAAQA,QAAQ/8I,IAAI4J,GAAE,KAAK,SAASozI,GAAGhnJ,EAAE1L,GAAG,IAAI3C,EAAEqO,EAAE+yH,IAAI,GAAG,OAAOphI,EAAE,GAAG,oBAAoBA,EAAE,IAAIA,EAAE,KAAK,CAAC,MAAMyD,GAAG62H,GAAEjsH,EAAE1L,EAAEc,EAAE,MAAMzD,EAAEgsB,QAAQ,IAAI,CAAC,SAASspI,GAAGjnJ,EAAE1L,EAAE3C,GAAG,IAAIA,GAAG,CAAC,MAAMyD,GAAG62H,GAAEjsH,EAAE1L,EAAEc,EAAE,CAAC,CAAC,IAAI8xJ,IAAG,EAIxR,SAASC,GAAGnnJ,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAEd,EAAEykJ,YAAyC,GAAG,QAAhC3jJ,EAAE,OAAOA,EAAEA,EAAE+pJ,WAAW,MAAiB,CAAC,IAAI/4J,EAAEgP,EAAEA,EAAEnF,KAAK,EAAE,CAAC,IAAI7J,EAAEomB,IAAIxM,KAAKA,EAAE,CAAC,IAAI7iB,EAAEiJ,EAAEq5J,QAAQr5J,EAAEq5J,aAAQ,OAAO,IAAStiK,GAAG8pK,GAAG3yJ,EAAE3C,EAAExU,EAAE,CAACiJ,EAAEA,EAAE6J,IAAI,OAAO7J,IAAIgP,EAAE,CAAC,CAAC,SAASgyJ,GAAGpnJ,EAAE1L,GAAgD,GAAG,QAAhCA,EAAE,QAAlBA,EAAEA,EAAEykJ,aAAuBzkJ,EAAE6qJ,WAAW,MAAiB,CAAC,IAAIxtJ,EAAE2C,EAAEA,EAAErE,KAAK,EAAE,CAAC,IAAI0B,EAAE6a,IAAIxM,KAAKA,EAAE,CAAC,IAAI5K,EAAEzD,EAAEhD,OAAOgD,EAAE8tJ,QAAQrqJ,GAAG,CAACzD,EAAEA,EAAE1B,IAAI,OAAO0B,IAAI2C,EAAE,CAAC,CAAC,SAAS+yJ,GAAGrnJ,GAAG,IAAI1L,EAAE0L,EAAE+yH,IAAI,GAAG,OAAOz+H,EAAE,CAAC,IAAI3C,EAAEqO,EAAE09H,UAAiB19H,EAAEwM,IAA8BxM,EAAErO,EAAE,oBAAoB2C,EAAEA,EAAE0L,GAAG1L,EAAEqpB,QAAQ3d,CAAC,CAAC,CAClf,SAASsnJ,GAAGtnJ,GAAG,IAAI1L,EAAE0L,EAAE6+H,UAAU,OAAOvqI,IAAI0L,EAAE6+H,UAAU,KAAKyoB,GAAGhzJ,IAAI0L,EAAEo/H,MAAM,KAAKp/H,EAAEw2I,UAAU,KAAKx2I,EAAEq/H,QAAQ,KAAK,IAAIr/H,EAAEwM,MAAoB,QAAdlY,EAAE0L,EAAE09H,oBAA4BppI,EAAEs/I,WAAWt/I,EAAEu/I,WAAWv/I,EAAEi9I,WAAWj9I,EAAEw/I,WAAWx/I,EAAEy/I,MAAM/zI,EAAE09H,UAAU,KAAK19H,EAAE8+H,OAAO,KAAK9+H,EAAEk4I,aAAa,KAAKl4I,EAAEk3I,cAAc,KAAKl3I,EAAEg/H,cAAc,KAAKh/H,EAAE02I,aAAa,KAAK12I,EAAE09H,UAAU,KAAK19H,EAAE+4I,YAAY,IAAI,CAAC,SAASwO,GAAGvnJ,GAAG,OAAO,IAAIA,EAAEwM,KAAK,IAAIxM,EAAEwM,KAAK,IAAIxM,EAAEwM,GAAG,CACna,SAASg7I,GAAGxnJ,GAAGA,EAAE,OAAO,CAAC,KAAK,OAAOA,EAAEq/H,SAAS,CAAC,GAAG,OAAOr/H,EAAE8+H,QAAQyoB,GAAGvnJ,EAAE8+H,QAAQ,OAAO,KAAK9+H,EAAEA,EAAE8+H,MAAM,CAA2B,IAA1B9+H,EAAEq/H,QAAQP,OAAO9+H,EAAE8+H,OAAW9+H,EAAEA,EAAEq/H,QAAQ,IAAIr/H,EAAEwM,KAAK,IAAIxM,EAAEwM,KAAK,KAAKxM,EAAEwM,KAAK,CAAC,GAAW,EAARxM,EAAEqhC,MAAQ,SAASrhC,EAAE,GAAG,OAAOA,EAAEo/H,OAAO,IAAIp/H,EAAEwM,IAAI,SAASxM,EAAOA,EAAEo/H,MAAMN,OAAO9+H,EAAEA,EAAEA,EAAEo/H,KAAK,CAAC,KAAa,EAARp/H,EAAEqhC,OAAS,OAAOrhC,EAAE09H,SAAS,CAAC,CACzT,SAAS+pB,GAAGznJ,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAE4K,EAAEwM,IAAI,GAAG,IAAIpX,GAAG,IAAIA,EAAE4K,EAAEA,EAAE09H,UAAUppI,EAAE,IAAI3C,EAAEsnI,SAAStnI,EAAEuN,WAAWwoJ,aAAa1nJ,EAAE1L,GAAG3C,EAAE+1J,aAAa1nJ,EAAE1L,IAAI,IAAI3C,EAAEsnI,UAAU3kI,EAAE3C,EAAEuN,YAAawoJ,aAAa1nJ,EAAErO,IAAK2C,EAAE3C,GAAIirB,YAAY5c,GAA4B,QAAxBrO,EAAEA,EAAEg2J,2BAA8B,IAASh2J,GAAG,OAAO2C,EAAEiyJ,UAAUjyJ,EAAEiyJ,QAAQ3T,UAAU,GAAG,IAAIx9I,GAAc,QAAV4K,EAAEA,EAAEo/H,OAAgB,IAAIqoB,GAAGznJ,EAAE1L,EAAE3C,GAAGqO,EAAEA,EAAEq/H,QAAQ,OAAOr/H,GAAGynJ,GAAGznJ,EAAE1L,EAAE3C,GAAGqO,EAAEA,EAAEq/H,OAAO,CAC1X,SAASuoB,GAAG5nJ,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAE4K,EAAEwM,IAAI,GAAG,IAAIpX,GAAG,IAAIA,EAAE4K,EAAEA,EAAE09H,UAAUppI,EAAE3C,EAAE+1J,aAAa1nJ,EAAE1L,GAAG3C,EAAEirB,YAAY5c,QAAQ,GAAG,IAAI5K,GAAc,QAAV4K,EAAEA,EAAEo/H,OAAgB,IAAIwoB,GAAG5nJ,EAAE1L,EAAE3C,GAAGqO,EAAEA,EAAEq/H,QAAQ,OAAOr/H,GAAG4nJ,GAAG5nJ,EAAE1L,EAAE3C,GAAGqO,EAAEA,EAAEq/H,OAAO,CAAC,IAAIhxG,GAAE,KAAKw5H,IAAG,EAAG,SAASC,GAAG9nJ,EAAE1L,EAAE3C,GAAG,IAAIA,EAAEA,EAAEytI,MAAM,OAAOztI,GAAGo2J,GAAG/nJ,EAAE1L,EAAE3C,GAAGA,EAAEA,EAAE0tI,OAAO,CACnR,SAAS0oB,GAAG/nJ,EAAE1L,EAAE3C,GAAG,GAAGmvI,IAAI,oBAAoBA,GAAGknB,qBAAqB,IAAIlnB,GAAGknB,qBAAqBnnB,GAAGlvI,EAAE,CAAC,MAAMq8B,GAAG,CAAC,OAAOr8B,EAAE6a,KAAK,KAAK,EAAEq6I,IAAGG,GAAGr1J,EAAE2C,GAAG,KAAK,EAAE,IAAIc,EAAEi5B,GAAEjoC,EAAEyhK,GAAGx5H,GAAE,KAAKy5H,GAAG9nJ,EAAE1L,EAAE3C,GAAOk2J,GAAGzhK,EAAE,QAATioC,GAAEj5B,KAAkByyJ,IAAI7nJ,EAAEquB,GAAE18B,EAAEA,EAAE+rI,UAAU,IAAI19H,EAAEi5H,SAASj5H,EAAEd,WAAW8jB,YAAYrxB,GAAGqO,EAAEgjB,YAAYrxB,IAAI08B,GAAErL,YAAYrxB,EAAE+rI,YAAY,MAAM,KAAK,GAAG,OAAOrvG,KAAIw5H,IAAI7nJ,EAAEquB,GAAE18B,EAAEA,EAAE+rI,UAAU,IAAI19H,EAAEi5H,SAASsa,GAAGvzI,EAAEd,WAAWvN,GAAG,IAAIqO,EAAEi5H,UAAUsa,GAAGvzI,EAAErO,GAAG0yI,GAAGrkI,IAAIuzI,GAAGllH,GAAE18B,EAAE+rI,YAAY,MAAM,KAAK,EAAEtoI,EAAEi5B,GAAEjoC,EAAEyhK,GAAGx5H,GAAE18B,EAAE+rI,UAAUqG,cAAc8jB,IAAG,EAClfC,GAAG9nJ,EAAE1L,EAAE3C,GAAG08B,GAAEj5B,EAAEyyJ,GAAGzhK,EAAE,MAAM,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,IAAIygK,KAAoB,QAAhBzxJ,EAAEzD,EAAEonJ,cAAsC,QAAf3jJ,EAAEA,EAAE+pJ,aAAsB,CAAC/4J,EAAEgP,EAAEA,EAAEnF,KAAK,EAAE,CAAC,IAAI9S,EAAEiJ,EAAE6gD,EAAE9pD,EAAEsiK,QAAQtiK,EAAEA,EAAEqvB,SAAI,IAASy6B,IAAI,KAAO,EAAF9pD,IAAe,KAAO,EAAFA,KAAf8pK,GAAGt1J,EAAE2C,EAAE2yC,GAAyB7gD,EAAEA,EAAE6J,IAAI,OAAO7J,IAAIgP,EAAE,CAAC0yJ,GAAG9nJ,EAAE1L,EAAE3C,GAAG,MAAM,KAAK,EAAE,IAAIk1J,KAAIG,GAAGr1J,EAAE2C,GAAiB,oBAAdc,EAAEzD,EAAE+rI,WAAgCtL,sBAAsB,IAAIh9H,EAAEpS,MAAM2O,EAAEulJ,cAAc9hJ,EAAEhL,MAAMuH,EAAEqtI,cAAc5pI,EAAEg9H,sBAAsB,CAAC,MAAMpkG,GAAGi+F,GAAEt6H,EAAE2C,EAAE05B,EAAE,CAAC85H,GAAG9nJ,EAAE1L,EAAE3C,GAAG,MAAM,KAAK,GAAGm2J,GAAG9nJ,EAAE1L,EAAE3C,GAAG,MAAM,KAAK,GAAU,EAAPA,EAAE+uB,MAAQmmI,IAAGzxJ,EAAEyxJ,KAAI,OAChfl1J,EAAEqtI,cAAc8oB,GAAG9nJ,EAAE1L,EAAE3C,GAAGk1J,GAAEzxJ,GAAG0yJ,GAAG9nJ,EAAE1L,EAAE3C,GAAG,MAAM,QAAQm2J,GAAG9nJ,EAAE1L,EAAE3C,GAAG,CAAC,SAASs2J,GAAGjoJ,GAAG,IAAI1L,EAAE0L,EAAE+4I,YAAY,GAAG,OAAOzkJ,EAAE,CAAC0L,EAAE+4I,YAAY,KAAK,IAAIpnJ,EAAEqO,EAAE09H,UAAU,OAAO/rI,IAAIA,EAAEqO,EAAE09H,UAAU,IAAIopB,IAAIxyJ,EAAE4V,SAAQ,SAAS5V,GAAG,IAAIc,EAAE8yJ,GAAG/mK,KAAK,KAAK6e,EAAE1L,GAAG3C,EAAE+X,IAAIpV,KAAK3C,EAAE1I,IAAIqL,GAAGA,EAAE/D,KAAK6E,EAAEA,GAAG,GAAE,CAAC,CACzQ,SAAS+yJ,GAAGnoJ,EAAE1L,GAAG,IAAI3C,EAAE2C,EAAEkiJ,UAAU,GAAG,OAAO7kJ,EAAE,IAAI,IAAIyD,EAAE,EAAEA,EAAEzD,EAAEnW,OAAO4Z,IAAI,CAAC,IAAIhP,EAAEuL,EAAEyD,GAAG,IAAI,IAAIjY,EAAE6iB,EAAEinC,EAAE3yC,EAAE05B,EAAEiZ,EAAEjnC,EAAE,KAAK,OAAOguB,GAAG,CAAC,OAAOA,EAAExhB,KAAK,KAAK,EAAE6hB,GAAEL,EAAE0vG,UAAUmqB,IAAG,EAAG,MAAM7nJ,EAAE,KAAK,EAA4C,KAAK,EAAEquB,GAAEL,EAAE0vG,UAAUqG,cAAc8jB,IAAG,EAAG,MAAM7nJ,EAAEguB,EAAEA,EAAE8wG,MAAM,CAAC,GAAG,OAAOzwG,GAAE,MAAMvpC,MAAMhF,EAAE,MAAMioK,GAAG5qK,EAAE8pD,EAAE7gD,GAAGioC,GAAE,KAAKw5H,IAAG,EAAG,IAAIvpK,EAAE8H,EAAEy4I,UAAU,OAAOvgJ,IAAIA,EAAEwgJ,OAAO,MAAM14I,EAAE04I,OAAO,IAAI,CAAC,MAAM53F,GAAG+kF,GAAE7lI,EAAEkO,EAAE4yC,EAAE,CAAC,CAAC,GAAkB,MAAf5yC,EAAEmxJ,aAAmB,IAAInxJ,EAAEA,EAAE8qI,MAAM,OAAO9qI,GAAG8zJ,GAAG9zJ,EAAE0L,GAAG1L,EAAEA,EAAE+qI,OAAO,CACje,SAAS+oB,GAAGpoJ,EAAE1L,GAAG,IAAI3C,EAAEqO,EAAE6+H,UAAUzpI,EAAE4K,EAAEqhC,MAAM,OAAOrhC,EAAEwM,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAiB,GAAd27I,GAAG7zJ,EAAE0L,GAAGqoJ,GAAGroJ,GAAQ,EAAF5K,EAAI,CAAC,IAAI+xJ,GAAG,EAAEnnJ,EAAEA,EAAE8+H,QAAQsoB,GAAG,EAAEpnJ,EAAE,CAAC,MAAM2uB,GAAGs9F,GAAEjsH,EAAEA,EAAE8+H,OAAOnwG,EAAE,CAAC,IAAIw4H,GAAG,EAAEnnJ,EAAEA,EAAE8+H,OAAO,CAAC,MAAMnwG,GAAGs9F,GAAEjsH,EAAEA,EAAE8+H,OAAOnwG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAEw5H,GAAG7zJ,EAAE0L,GAAGqoJ,GAAGroJ,GAAK,IAAF5K,GAAO,OAAOzD,GAAGq1J,GAAGr1J,EAAEA,EAAEmtI,QAAQ,MAAM,KAAK,EAAgD,GAA9CqpB,GAAG7zJ,EAAE0L,GAAGqoJ,GAAGroJ,GAAK,IAAF5K,GAAO,OAAOzD,GAAGq1J,GAAGr1J,EAAEA,EAAEmtI,QAAmB,GAAR9+H,EAAEqhC,MAAS,CAAC,IAAIj7C,EAAE4Z,EAAE09H,UAAU,IAAI3E,GAAG3yI,EAAE,GAAG,CAAC,MAAMuoC,GAAGs9F,GAAEjsH,EAAEA,EAAE8+H,OAAOnwG,EAAE,CAAC,CAAC,GAAK,EAAFv5B,GAAoB,OAAdhP,EAAE4Z,EAAE09H,WAAmB,CAAC,IAAIvgJ,EAAE6iB,EAAEk3I,cAAcjwG,EAAE,OAAOt1C,EAAEA,EAAEulJ,cAAc/5J,EAAE6wC,EAAEhuB,EAAE1e,KAAKhD,EAAE0hB,EAAE+4I,YACje,GAAnB/4I,EAAE+4I,YAAY,KAAQ,OAAOz6J,EAAE,IAAI,UAAU0vC,GAAG,UAAU7wC,EAAEmE,MAAM,MAAMnE,EAAE+C,MAAMu3I,EAAGrxI,EAAEjJ,GAAG4/I,GAAG/uG,EAAEiZ,GAAG,IAAIC,EAAE61F,GAAG/uG,EAAE7wC,GAAG,IAAI8pD,EAAE,EAAEA,EAAE3oD,EAAE9C,OAAOyrD,GAAG,EAAE,CAAC,IAAIjjC,EAAE1lB,EAAE2oD,GAAGva,EAAEpuC,EAAE2oD,EAAE,GAAG,UAAUjjC,EAAEi4H,GAAG71I,EAAEsmC,GAAG,4BAA4B1oB,EAAE00H,GAAGtyI,EAAEsmC,GAAG,aAAa1oB,EAAE+0H,GAAG3yI,EAAEsmC,GAAG0nG,EAAGhuI,EAAE4d,EAAE0oB,EAAEwa,EAAE,CAAC,OAAOlZ,GAAG,IAAK,QAAQ0pG,EAAGtxI,EAAEjJ,GAAG,MAAM,IAAK,WAAWk7I,GAAGjyI,EAAEjJ,GAAG,MAAM,IAAK,SAAS,IAAI4rC,EAAE3iC,EAAEgxI,cAAcgvB,YAAYhgK,EAAEgxI,cAAcgvB,cAAcjpK,EAAEkpK,SAAS,IAAI16H,EAAExuC,EAAEH,MAAM,MAAM2uC,EAAEmsG,GAAG1xI,IAAIjJ,EAAEkpK,SAAS16H,GAAE,GAAI5C,MAAM5rC,EAAEkpK,WAAW,MAAMlpK,EAAEQ,aAAam6I,GAAG1xI,IAAIjJ,EAAEkpK,SACnflpK,EAAEQ,cAAa,GAAIm6I,GAAG1xI,IAAIjJ,EAAEkpK,SAASlpK,EAAEkpK,SAAS,GAAG,IAAG,IAAKjgK,EAAEytJ,IAAI12J,CAAC,CAAC,MAAMwxC,GAAGs9F,GAAEjsH,EAAEA,EAAE8+H,OAAOnwG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAgB,GAAdw5H,GAAG7zJ,EAAE0L,GAAGqoJ,GAAGroJ,GAAQ,EAAF5K,EAAI,CAAC,GAAG,OAAO4K,EAAE09H,UAAU,MAAM54I,MAAMhF,EAAE,MAAMsG,EAAE4Z,EAAE09H,UAAUvgJ,EAAE6iB,EAAEk3I,cAAc,IAAI9wJ,EAAE8yI,UAAU/7I,CAAC,CAAC,MAAMwxC,GAAGs9F,GAAEjsH,EAAEA,EAAE8+H,OAAOnwG,EAAE,CAAC,CAAC,MAAM,KAAK,EAAgB,GAAdw5H,GAAG7zJ,EAAE0L,GAAGqoJ,GAAGroJ,GAAQ,EAAF5K,GAAK,OAAOzD,GAAGA,EAAEqtI,cAAc8E,aAAa,IAAIO,GAAG/vI,EAAEyvI,cAAc,CAAC,MAAMp1G,GAAGs9F,GAAEjsH,EAAEA,EAAE8+H,OAAOnwG,EAAE,CAAC,MAAM,KAAK,EAG4G,QAAQw5H,GAAG7zJ,EACnf0L,GAAGqoJ,GAAGroJ,SAJ4Y,KAAK,GAAGmoJ,GAAG7zJ,EAAE0L,GAAGqoJ,GAAGroJ,GAAqB,MAAlB5Z,EAAE4Z,EAAEo/H,OAAQ/9F,QAAalkD,EAAE,OAAOiJ,EAAE44I,cAAc54I,EAAEs3I,UAAU4qB,SAASnrK,GAAGA,GAClf,OAAOiJ,EAAEy4I,WAAW,OAAOz4I,EAAEy4I,UAAUG,gBAAgBupB,GAAGx6H,OAAQ,EAAF34B,GAAK6yJ,GAAGjoJ,GAAG,MAAM,KAAK,GAAsF,GAAnFgE,EAAE,OAAOrS,GAAG,OAAOA,EAAEqtI,cAAqB,EAAPh/H,EAAE0gB,MAAQmmI,IAAG3/G,EAAE2/G,KAAI7iJ,EAAEmkJ,GAAG7zJ,EAAE0L,GAAG6mJ,GAAE3/G,GAAGihH,GAAG7zJ,EAAE0L,GAAGqoJ,GAAGroJ,GAAQ,KAAF5K,EAAO,CAA0B,GAAzB8xC,EAAE,OAAOlnC,EAAEg/H,eAAkBh/H,EAAE09H,UAAU4qB,SAASphH,KAAKljC,GAAG,KAAY,EAAPhE,EAAE0gB,MAAQ,IAAI9M,GAAE5T,EAAEgE,EAAEhE,EAAEo/H,MAAM,OAAOp7H,GAAG,CAAC,IAAI0oB,EAAE9Y,GAAE5P,EAAE,OAAO4P,IAAG,CAAe,OAAV+X,GAAJ5C,EAAEnV,IAAMwrH,MAAar2G,EAAEvc,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG26I,GAAG,EAAEp+H,EAAEA,EAAE+1G,QAAQ,MAAM,KAAK,EAAEkoB,GAAGj+H,EAAEA,EAAE+1G,QAAQ,IAAI58I,EAAE6mC,EAAE20G,UAAU,GAAG,oBAAoBx7I,EAAEkwI,qBAAqB,CAACh9H,EAAE2zB,EAAEp3B,EAAEo3B,EAAE+1G,OAAO,IAAIxqI,EAAEc,EAAElT,EAAEc,MACpfsR,EAAE4iJ,cAAch1J,EAAEkI,MAAMkK,EAAE0qI,cAAc98I,EAAEkwI,sBAAsB,CAAC,MAAMzjG,GAAGs9F,GAAE72H,EAAEzD,EAAEg9B,EAAE,CAAC,CAAC,MAAM,KAAK,EAAEq4H,GAAGj+H,EAAEA,EAAE+1G,QAAQ,MAAM,KAAK,GAAG,GAAG,OAAO/1G,EAAEi2G,cAAc,CAACwpB,GAAG97H,GAAG,QAAQ,EAAE,OAAOf,GAAGA,EAAEmzG,OAAO/1G,EAAEnV,GAAE+X,GAAG68H,GAAG97H,EAAE,CAAC1oB,EAAEA,EAAEq7H,OAAO,CAACr/H,EAAE,IAAIgE,EAAE,KAAK0oB,EAAE1sB,IAAI,CAAC,GAAG,IAAI0sB,EAAElgB,KAAK,GAAG,OAAOxI,EAAE,CAACA,EAAE0oB,EAAE,IAAItmC,EAAEsmC,EAAEgxG,UAAUx2F,EAAa,oBAAV/pD,EAAEiJ,EAAEs2B,OAA4B+1B,YAAYt1D,EAAEs1D,YAAY,UAAU,OAAO,aAAat1D,EAAEw/B,QAAQ,QAASqR,EAAEtB,EAAEgxG,UAAkCz2F,OAAE,KAA1B3oD,EAAEouC,EAAEwqH,cAAcx6H,QAAoB,OAAOp+B,GAAGA,EAAE5B,eAAe,WAAW4B,EAAEq+B,QAAQ,KAAKqR,EAAEtR,MAAMC,QACzfq/G,GAAG,UAAU/0F,GAAG,CAAC,MAAMtY,GAAGs9F,GAAEjsH,EAAEA,EAAE8+H,OAAOnwG,EAAE,CAAC,OAAO,GAAG,IAAIjC,EAAElgB,KAAK,GAAG,OAAOxI,EAAE,IAAI0oB,EAAEgxG,UAAUxE,UAAUhyF,EAAE,GAAGxa,EAAEwqH,aAAa,CAAC,MAAMvoH,GAAGs9F,GAAEjsH,EAAEA,EAAE8+H,OAAOnwG,EAAE,OAAO,IAAI,KAAKjC,EAAElgB,KAAK,KAAKkgB,EAAElgB,KAAK,OAAOkgB,EAAEsyG,eAAetyG,IAAI1sB,IAAI,OAAO0sB,EAAE0yG,MAAM,CAAC1yG,EAAE0yG,MAAMN,OAAOpyG,EAAEA,EAAEA,EAAE0yG,MAAM,QAAQ,CAAC,GAAG1yG,IAAI1sB,EAAE,MAAMA,EAAE,KAAK,OAAO0sB,EAAE2yG,SAAS,CAAC,GAAG,OAAO3yG,EAAEoyG,QAAQpyG,EAAEoyG,SAAS9+H,EAAE,MAAMA,EAAEgE,IAAI0oB,IAAI1oB,EAAE,MAAM0oB,EAAEA,EAAEoyG,MAAM,CAAC96H,IAAI0oB,IAAI1oB,EAAE,MAAM0oB,EAAE2yG,QAAQP,OAAOpyG,EAAEoyG,OAAOpyG,EAAEA,EAAE2yG,OAAO,CAAC,CAAC,MAAM,KAAK,GAAG8oB,GAAG7zJ,EAAE0L,GAAGqoJ,GAAGroJ,GAAK,EAAF5K,GAAK6yJ,GAAGjoJ,GAAS,KAAK,IACtd,CAAC,SAASqoJ,GAAGroJ,GAAG,IAAI1L,EAAE0L,EAAEqhC,MAAM,GAAK,EAAF/sC,EAAI,CAAC,IAAI0L,EAAE,CAAC,IAAI,IAAIrO,EAAEqO,EAAE8+H,OAAO,OAAOntI,GAAG,CAAC,GAAG41J,GAAG51J,GAAG,CAAC,IAAIyD,EAAEzD,EAAE,MAAMqO,CAAC,CAACrO,EAAEA,EAAEmtI,MAAM,CAAC,MAAMh6I,MAAMhF,EAAE,KAAM,CAAC,OAAOsV,EAAEoX,KAAK,KAAK,EAAE,IAAIpmB,EAAEgP,EAAEsoI,UAAkB,GAARtoI,EAAEisC,QAAW03F,GAAG3yI,EAAE,IAAIgP,EAAEisC,QAAQ,IAAgBumH,GAAG5nJ,EAATwnJ,GAAGxnJ,GAAU5Z,GAAG,MAAM,KAAK,EAAE,KAAK,EAAE,IAAI6gD,EAAE7xC,EAAEsoI,UAAUqG,cAAsB0jB,GAAGznJ,EAATwnJ,GAAGxnJ,GAAUinC,GAAG,MAAM,QAAQ,MAAMniD,MAAMhF,EAAE,MAAO,CAAC,MAAMxB,GAAG2tI,GAAEjsH,EAAEA,EAAE8+H,OAAOxgJ,EAAE,CAAC0hB,EAAEqhC,QAAQ,CAAC,CAAG,KAAF/sC,IAAS0L,EAAEqhC,QAAQ,KAAK,CAAC,SAASonH,GAAGzoJ,EAAE1L,EAAE3C,GAAGiiB,GAAE5T,EAAE0oJ,GAAG1oJ,EAAE1L,EAAE3C,EAAE,CACvb,SAAS+2J,GAAG1oJ,EAAE1L,EAAE3C,GAAG,IAAI,IAAIyD,EAAE,KAAY,EAAP4K,EAAE0gB,MAAQ,OAAO9M,IAAG,CAAC,IAAIxtB,EAAEwtB,GAAEz2B,EAAEiJ,EAAEg5I,MAAM,GAAG,KAAKh5I,EAAEomB,KAAKpX,EAAE,CAAC,IAAI6xC,EAAE,OAAO7gD,EAAE44I,eAAe4nB,GAAG,IAAI3/G,EAAE,CAAC,IAAIjZ,EAAE5nC,EAAEy4I,UAAUvgJ,EAAE,OAAO0vC,GAAG,OAAOA,EAAEgxG,eAAe6nB,GAAE74H,EAAE44H,GAAG,IAAI1/G,EAAE2/G,GAAO,GAALD,GAAG3/G,GAAM4/G,GAAEvoK,KAAK4oD,EAAE,IAAItzB,GAAExtB,EAAE,OAAOwtB,IAAOt1B,GAAJ2oD,EAAErzB,IAAMwrH,MAAM,KAAKn4F,EAAEz6B,KAAK,OAAOy6B,EAAE+3F,cAAc2pB,GAAGviK,GAAG,OAAO9H,GAAGA,EAAEwgJ,OAAO73F,EAAErzB,GAAEt1B,GAAGqqK,GAAGviK,GAAG,KAAK,OAAOjJ,GAAGy2B,GAAEz2B,EAAEurK,GAAGvrK,EAAEmX,EAAE3C,GAAGxU,EAAEA,EAAEkiJ,QAAQzrH,GAAExtB,EAAEwgK,GAAG54H,EAAE64H,GAAE3/G,CAAC,CAAC0hH,GAAG5oJ,EAAM,MAAM,KAAoB,KAAf5Z,EAAEq/J,eAAoB,OAAOtoK,GAAGA,EAAE2hJ,OAAO14I,EAAEwtB,GAAEz2B,GAAGyrK,GAAG5oJ,EAAM,CAAC,CACvc,SAAS4oJ,GAAG5oJ,GAAG,KAAK,OAAO4T,IAAG,CAAC,IAAItf,EAAEsf,GAAE,GAAG,KAAa,KAARtf,EAAE+sC,OAAY,CAAC,IAAI1vC,EAAE2C,EAAEuqI,UAAU,IAAI,GAAG,KAAa,KAARvqI,EAAE+sC,OAAY,OAAO/sC,EAAEkY,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAGq6I,IAAGO,GAAG,EAAE9yJ,GAAG,MAAM,KAAK,EAAE,IAAIc,EAAEd,EAAEopI,UAAU,GAAW,EAARppI,EAAE+sC,QAAUwlH,GAAE,GAAG,OAAOl1J,EAAEyD,EAAE+8H,wBAAwB,CAAC,IAAI/rI,EAAEkO,EAAEs6H,cAAct6H,EAAEhT,KAAKqQ,EAAEulJ,cAAcK,GAAGjjJ,EAAEhT,KAAKqQ,EAAEulJ,eAAe9hJ,EAAE+uJ,mBAAmB/9J,EAAEuL,EAAEqtI,cAAc5pI,EAAEyzJ,oCAAoC,CAAC,IAAI1rK,EAAEmX,EAAEykJ,YAAY,OAAO57J,GAAG08J,GAAGvlJ,EAAEnX,EAAEiY,GAAG,MAAM,KAAK,EAAE,IAAI6xC,EAAE3yC,EAAEykJ,YAAY,GAAG,OAAO9xG,EAAE,CAAQ,GAAPt1C,EAAE,KAAQ,OAAO2C,EAAE8qI,MAAM,OAAO9qI,EAAE8qI,MAAM5yH,KAAK,KAAK,EACvf,KAAK,EAAE7a,EAAE2C,EAAE8qI,MAAM1B,UAAUmc,GAAGvlJ,EAAE2yC,EAAEt1C,EAAE,CAAC,MAAM,KAAK,EAAE,IAAIq8B,EAAE15B,EAAEopI,UAAU,GAAG,OAAO/rI,GAAW,EAAR2C,EAAE+sC,MAAQ,CAAC1vC,EAAEq8B,EAAE,IAAI1vC,EAAEgW,EAAE4iJ,cAAc,OAAO5iJ,EAAEhT,MAAM,IAAK,SAAS,IAAK,QAAQ,IAAK,SAAS,IAAK,WAAWhD,EAAEkoK,WAAW70J,EAAE+9I,QAAQ,MAAM,IAAK,MAAMpxJ,EAAEu+B,MAAMlrB,EAAEkrB,IAAIv+B,EAAEu+B,KAAK,CAAC,MAAM,KAAK,EAAQ,KAAK,EAAQ,KAAK,GAAyJ,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAhM,KAAK,GAAG,GAAG,OAAOvoB,EAAE0qI,cAAc,CAAC,IAAI93F,EAAE5yC,EAAEuqI,UAAU,GAAG,OAAO33F,EAAE,CAAC,IAAIljC,EAAEkjC,EAAE83F,cAAc,GAAG,OAAOh7H,EAAE,CAAC,IAAI0oB,EAAE1oB,EAAEi7H,WAAW,OAAOvyG,GAAG23G,GAAG33G,EAAE,CAAC,CAAC,CAAC,MAC5c,QAAQ,MAAM5nC,MAAMhF,EAAE,MAAO+mK,IAAW,IAARvyJ,EAAE+sC,OAAWgmH,GAAG/yJ,EAAE,CAAC,MAAMy0B,GAAGkjG,GAAE33H,EAAEA,EAAEwqI,OAAO/1G,EAAE,CAAC,CAAC,GAAGz0B,IAAI0L,EAAE,CAAC4T,GAAE,KAAK,KAAK,CAAa,GAAG,QAAfjiB,EAAE2C,EAAE+qI,SAAoB,CAAC1tI,EAAEmtI,OAAOxqI,EAAEwqI,OAAOlrH,GAAEjiB,EAAE,KAAK,CAACiiB,GAAEtf,EAAEwqI,MAAM,CAAC,CAAC,SAAS0pB,GAAGxoJ,GAAG,KAAK,OAAO4T,IAAG,CAAC,IAAItf,EAAEsf,GAAE,GAAGtf,IAAI0L,EAAE,CAAC4T,GAAE,KAAK,KAAK,CAAC,IAAIjiB,EAAE2C,EAAE+qI,QAAQ,GAAG,OAAO1tI,EAAE,CAACA,EAAEmtI,OAAOxqI,EAAEwqI,OAAOlrH,GAAEjiB,EAAE,KAAK,CAACiiB,GAAEtf,EAAEwqI,MAAM,CAAC,CACvS,SAAS6pB,GAAG3oJ,GAAG,KAAK,OAAO4T,IAAG,CAAC,IAAItf,EAAEsf,GAAE,IAAI,OAAOtf,EAAEkY,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG,IAAI7a,EAAE2C,EAAEwqI,OAAO,IAAIsoB,GAAG,EAAE9yJ,EAAE,CAAC,MAAMhW,GAAG2tI,GAAE33H,EAAE3C,EAAErT,EAAE,CAAC,MAAM,KAAK,EAAE,IAAI8W,EAAEd,EAAEopI,UAAU,GAAG,oBAAoBtoI,EAAE+8H,kBAAkB,CAAC,IAAI/rI,EAAEkO,EAAEwqI,OAAO,IAAI1pI,EAAE+8H,mBAAmB,CAAC,MAAM7zI,GAAG2tI,GAAE33H,EAAElO,EAAE9H,EAAE,CAAC,CAAC,IAAInB,EAAEmX,EAAEwqI,OAAO,IAAIuoB,GAAG/yJ,EAAE,CAAC,MAAMhW,GAAG2tI,GAAE33H,EAAEnX,EAAEmB,EAAE,CAAC,MAAM,KAAK,EAAE,IAAI2oD,EAAE3yC,EAAEwqI,OAAO,IAAIuoB,GAAG/yJ,EAAE,CAAC,MAAMhW,GAAG2tI,GAAE33H,EAAE2yC,EAAE3oD,EAAE,EAAE,CAAC,MAAMA,GAAG2tI,GAAE33H,EAAEA,EAAEwqI,OAAOxgJ,EAAE,CAAC,GAAGgW,IAAI0L,EAAE,CAAC4T,GAAE,KAAK,KAAK,CAAC,IAAIoa,EAAE15B,EAAE+qI,QAAQ,GAAG,OAAOrxG,EAAE,CAACA,EAAE8wG,OAAOxqI,EAAEwqI,OAAOlrH,GAAEoa,EAAE,KAAK,CAACpa,GAAEtf,EAAEwqI,MAAM,CAAC,CAC7d,IAwBkNgqB,GAxB9MC,GAAGh3J,KAAK0nB,KAAKuvI,GAAGr0B,EAAGuoB,uBAAuBx1H,GAAGitG,EAAGquB,kBAAkBiG,GAAGt0B,EAAG4P,wBAAwBr2G,GAAE,EAAE9B,GAAE,KAAKJ,GAAE,KAAKk9H,GAAE,EAAErF,GAAG,EAAED,GAAG1P,GAAG,GAAGrlH,GAAE,EAAEs6H,GAAG,KAAKvP,GAAG,EAAEwP,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,GAAG,KAAKhB,GAAG,EAAE9B,GAAG1pK,IAASysK,GAAG,KAAKlH,IAAG,EAAGC,GAAG,KAAKE,GAAG,KAAKgH,IAAG,EAAGC,GAAG,KAAKC,GAAG,EAAEC,GAAG,EAAEC,GAAG,KAAKC,IAAI,EAAEC,GAAG,EAAE,SAASl9H,KAAI,OAAO,KAAO,EAAFqB,IAAKH,MAAK,IAAI+7H,GAAGA,GAAGA,GAAG/7H,IAAG,CAChU,SAASssH,GAAGr6I,GAAG,OAAG,KAAY,EAAPA,EAAE0gB,MAAe,EAAK,KAAO,EAAFwN,KAAM,IAAIg7H,GAASA,IAAGA,GAAK,OAAO5R,GAAG5S,YAAkB,IAAIqlB,KAAKA,GAAGhoB,MAAMgoB,IAAU,KAAP/pJ,EAAEgR,IAAkBhR,EAAiBA,OAAE,KAAjBA,EAAEvf,OAAOsO,OAAmB,GAAG+1I,GAAG9kI,EAAE1e,KAAc,CAAC,SAASg5J,GAAGt6I,EAAE1L,EAAE3C,EAAEyD,GAAG,GAAG,GAAGw0J,GAAG,MAAMA,GAAG,EAAEC,GAAG,KAAK/kK,MAAMhF,EAAE,MAAMmiJ,GAAGjiI,EAAErO,EAAEyD,GAAM,KAAO,EAAF84B,KAAMluB,IAAIosB,KAAEpsB,IAAIosB,KAAI,KAAO,EAAF8B,MAAOk7H,IAAIz3J,GAAG,IAAIk9B,IAAGm7H,GAAGhqJ,EAAEkpJ,KAAIe,GAAGjqJ,EAAE5K,GAAG,IAAIzD,GAAG,IAAIu8B,IAAG,KAAY,EAAP55B,EAAEosB,QAAU+lI,GAAG14H,KAAI,IAAImnH,IAAIG,MAAK,CAC1Y,SAAS4U,GAAGjqJ,EAAE1L,GAAG,IAAI3C,EAAEqO,EAAEkqJ,cA5MzB,SAAYlqJ,EAAE1L,GAAG,IAAI,IAAI3C,EAAEqO,EAAEyhI,eAAersI,EAAE4K,EAAE0hI,YAAYt7I,EAAE4Z,EAAEmqJ,gBAAgBhtK,EAAE6iB,EAAEwhI,aAAa,EAAErkJ,GAAG,CAAC,IAAI8pD,EAAE,GAAG85F,GAAG5jJ,GAAG6wC,EAAE,GAAGiZ,EAAE3oD,EAAE8H,EAAE6gD,IAAO,IAAI3oD,EAAM,KAAK0vC,EAAEr8B,IAAI,KAAKq8B,EAAE54B,KAAGhP,EAAE6gD,GAAG46F,GAAG7zG,EAAE15B,IAAQhW,GAAGgW,IAAI0L,EAAEoqJ,cAAcp8H,GAAG7wC,IAAI6wC,CAAC,CAAC,CA4MnLq8H,CAAGrqJ,EAAE1L,GAAG,IAAIc,EAAEmsI,GAAGvhI,EAAEA,IAAIosB,GAAE88H,GAAE,GAAG,GAAG,IAAI9zJ,EAAE,OAAOzD,GAAG+tI,GAAG/tI,GAAGqO,EAAEkqJ,aAAa,KAAKlqJ,EAAEsqJ,iBAAiB,OAAO,GAAGh2J,EAAEc,GAAGA,EAAE4K,EAAEsqJ,mBAAmBh2J,EAAE,CAAgB,GAAf,MAAM3C,GAAG+tI,GAAG/tI,GAAM,IAAI2C,EAAE,IAAI0L,EAAEwM,IA7IsJ,SAAYxM,GAAGk1I,IAAG,EAAGE,GAAGp1I,EAAE,CA6I5KuqJ,CAAGC,GAAGrpK,KAAK,KAAK6e,IAAIo1I,GAAGoV,GAAGrpK,KAAK,KAAK6e,IAAIozI,IAAG,WAAW,KAAO,EAAFllH,KAAMmnH,IAAI,IAAG1jJ,EAAE,SAAS,CAAC,OAAOywI,GAAGhtI,IAAI,KAAK,EAAEzD,EAAEwuI,GAAG,MAAM,KAAK,EAAExuI,EAAE0uI,GAAG,MAAM,KAAK,GAAwC,QAAQ1uI,EAAE4uI,SAApC,KAAK,UAAU5uI,EAAEgvI,GAAsBhvI,EAAE84J,GAAG94J,EAAE+4J,GAAGvpK,KAAK,KAAK6e,GAAG,CAACA,EAAEsqJ,iBAAiBh2J,EAAE0L,EAAEkqJ,aAAav4J,CAAC,CAAC,CAC7c,SAAS+4J,GAAG1qJ,EAAE1L,GAAc,GAAXw1J,IAAI,EAAEC,GAAG,EAAK,KAAO,EAAF77H,IAAK,MAAMppC,MAAMhF,EAAE,MAAM,IAAI6R,EAAEqO,EAAEkqJ,aAAa,GAAGS,MAAM3qJ,EAAEkqJ,eAAev4J,EAAE,OAAO,KAAK,IAAIyD,EAAEmsI,GAAGvhI,EAAEA,IAAIosB,GAAE88H,GAAE,GAAG,GAAG,IAAI9zJ,EAAE,OAAO,KAAK,GAAG,KAAO,GAAFA,IAAO,KAAKA,EAAE4K,EAAEoqJ,eAAe91J,EAAEA,EAAEs2J,GAAG5qJ,EAAE5K,OAAO,CAACd,EAAEc,EAAE,IAAIhP,EAAE8nC,GAAEA,IAAG,EAAE,IAAI/wC,EAAE0tK,KAAgD,IAAxCz+H,KAAIpsB,GAAGkpJ,KAAI50J,IAAEk1J,GAAG,KAAK/C,GAAG14H,KAAI,IAAI+8H,GAAG9qJ,EAAE1L,UAAUy2J,KAAK,KAAK,CAAC,MAAM/8H,GAAGg9H,GAAGhrJ,EAAEguB,EAAE,CAAU4pH,KAAKoR,GAAGrrI,QAAQxgC,EAAE+wC,GAAE9nC,EAAE,OAAO4lC,GAAE13B,EAAE,GAAG83B,GAAE,KAAK88H,GAAE,EAAE50J,EAAEu6B,GAAE,CAAC,GAAG,IAAIv6B,EAAE,CAAyC,GAAxC,IAAIA,IAAY,KAARlO,EAAE07I,GAAG9hI,MAAW5K,EAAEhP,EAAEkO,EAAE22J,GAAGjrJ,EAAE5Z,KAAQ,IAAIkO,EAAE,MAAM3C,EAAEw3J,GAAG2B,GAAG9qJ,EAAE,GAAGgqJ,GAAGhqJ,EAAE5K,GAAG60J,GAAGjqJ,EAAE+tB,MAAKp8B,EAAE,GAAG,IAAI2C,EAAE01J,GAAGhqJ,EAAE5K,OAChf,CAAuB,GAAtBhP,EAAE4Z,EAAE2d,QAAQkhH,UAAa,KAAO,GAAFzpI,KAGnC,SAAY4K,GAAG,IAAI,IAAI1L,EAAE0L,IAAI,CAAC,GAAW,MAAR1L,EAAE+sC,MAAY,CAAC,IAAI1vC,EAAE2C,EAAEykJ,YAAY,GAAG,OAAOpnJ,GAAe,QAAXA,EAAEA,EAAEytJ,QAAiB,IAAI,IAAIhqJ,EAAE,EAAEA,EAAEzD,EAAEnW,OAAO4Z,IAAI,CAAC,IAAIhP,EAAEuL,EAAEyD,GAAGjY,EAAEiJ,EAAE24J,YAAY34J,EAAEA,EAAEpJ,MAAM,IAAI,IAAIwwJ,GAAGrwJ,IAAIiJ,GAAG,OAAM,CAAE,CAAC,MAAM6gD,GAAG,OAAM,CAAE,CAAC,CAAC,CAAW,GAAVt1C,EAAE2C,EAAE8qI,MAAwB,MAAf9qI,EAAEmxJ,cAAoB,OAAO9zJ,EAAEA,EAAEmtI,OAAOxqI,EAAEA,EAAE3C,MAAM,CAAC,GAAG2C,IAAI0L,EAAE,MAAM,KAAK,OAAO1L,EAAE+qI,SAAS,CAAC,GAAG,OAAO/qI,EAAEwqI,QAAQxqI,EAAEwqI,SAAS9+H,EAAE,OAAM,EAAG1L,EAAEA,EAAEwqI,MAAM,CAACxqI,EAAE+qI,QAAQP,OAAOxqI,EAAEwqI,OAAOxqI,EAAEA,EAAE+qI,OAAO,CAAC,CAAC,OAAM,CAAE,CAHvX6rB,CAAG9kK,KAAe,KAAVkO,EAAEs2J,GAAG5qJ,EAAE5K,MAAmB,KAARjY,EAAE2kJ,GAAG9hI,MAAW5K,EAAEjY,EAAEmX,EAAE22J,GAAGjrJ,EAAE7iB,KAAK,IAAImX,GAAG,MAAM3C,EAAEw3J,GAAG2B,GAAG9qJ,EAAE,GAAGgqJ,GAAGhqJ,EAAE5K,GAAG60J,GAAGjqJ,EAAE+tB,MAAKp8B,EAAqC,OAAnCqO,EAAEmrJ,aAAa/kK,EAAE4Z,EAAEorJ,cAAch2J,EAASd,GAAG,KAAK,EAAE,KAAK,EAAE,MAAMxP,MAAMhF,EAAE,MAAM,KAAK,EAC8B,KAAK,EAAEurK,GAAGrrJ,EAAEupJ,GAAGC,IAAI,MAD7B,KAAK,EAAU,GAARQ,GAAGhqJ,EAAE5K,IAAS,UAAFA,KAAeA,GAAiB,IAAbd,EAAEi0J,GAAG,IAAIx6H,MAAU,CAAC,GAAG,IAAIwzG,GAAGvhI,EAAE,GAAG,MAAyB,KAAnB5Z,EAAE4Z,EAAEyhI,gBAAqBrsI,KAAKA,EAAE,CAACy3B,KAAI7sB,EAAE0hI,aAAa1hI,EAAEyhI,eAAer7I,EAAE,KAAK,CAAC4Z,EAAEsrJ,cAAcrY,GAAGoY,GAAGlqK,KAAK,KAAK6e,EAAEupJ,GAAGC,IAAIl1J,GAAG,KAAK,CAAC+2J,GAAGrrJ,EAAEupJ,GAAGC,IAAI,MAAM,KAAK,EAAU,GAARQ,GAAGhqJ,EAAE5K,IAAS,QAAFA,KAC9eA,EAAE,MAAqB,IAAfd,EAAE0L,EAAEkiI,WAAe97I,GAAG,EAAE,EAAEgP,GAAG,CAAC,IAAI6xC,EAAE,GAAG85F,GAAG3rI,GAAGjY,EAAE,GAAG8pD,GAAEA,EAAE3yC,EAAE2yC,IAAK7gD,IAAIA,EAAE6gD,GAAG7xC,IAAIjY,CAAC,CAAqG,GAApGiY,EAAEhP,EAAqG,IAA3FgP,GAAG,KAAXA,EAAE24B,KAAI34B,GAAW,IAAI,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAKA,EAAE,KAAK,IAAIA,EAAE,IAAI,KAAKA,EAAE,KAAK,KAAK2zJ,GAAG3zJ,EAAE,OAAOA,GAAU,CAAC4K,EAAEsrJ,cAAcrY,GAAGoY,GAAGlqK,KAAK,KAAK6e,EAAEupJ,GAAGC,IAAIp0J,GAAG,KAAK,CAACi2J,GAAGrrJ,EAAEupJ,GAAGC,IAAI,MAA+B,QAAQ,MAAM1kK,MAAMhF,EAAE,MAAO,CAAC,CAAW,OAAVmqK,GAAGjqJ,EAAE+tB,MAAY/tB,EAAEkqJ,eAAev4J,EAAE+4J,GAAGvpK,KAAK,KAAK6e,GAAG,IAAI,CACrX,SAASirJ,GAAGjrJ,EAAE1L,GAAG,IAAI3C,EAAE23J,GAA2G,OAAxGtpJ,EAAE2d,QAAQqhH,cAAc8E,eAAegnB,GAAG9qJ,EAAE1L,GAAG+sC,OAAO,KAAe,KAAVrhC,EAAE4qJ,GAAG5qJ,EAAE1L,MAAWA,EAAEi1J,GAAGA,GAAG53J,EAAE,OAAO2C,GAAG6xJ,GAAG7xJ,IAAW0L,CAAC,CAAC,SAASmmJ,GAAGnmJ,GAAG,OAAOupJ,GAAGA,GAAGvpJ,EAAEupJ,GAAG5sK,KAAK4S,MAAMg6J,GAAGvpJ,EAAE,CAE5L,SAASgqJ,GAAGhqJ,EAAE1L,GAAuD,IAApDA,IAAI+0J,GAAG/0J,IAAI80J,GAAGppJ,EAAEyhI,gBAAgBntI,EAAE0L,EAAE0hI,cAAcptI,EAAM0L,EAAEA,EAAEmqJ,gBAAgB,EAAE71J,GAAG,CAAC,IAAI3C,EAAE,GAAGovI,GAAGzsI,GAAGc,EAAE,GAAGzD,EAAEqO,EAAErO,IAAI,EAAE2C,IAAIc,CAAC,CAAC,CAAC,SAASo1J,GAAGxqJ,GAAG,GAAG,KAAO,EAAFkuB,IAAK,MAAMppC,MAAMhF,EAAE,MAAM6qK,KAAK,IAAIr2J,EAAEitI,GAAGvhI,EAAE,GAAG,GAAG,KAAO,EAAF1L,GAAK,OAAO21J,GAAGjqJ,EAAE+tB,MAAK,KAAK,IAAIp8B,EAAEi5J,GAAG5qJ,EAAE1L,GAAG,GAAG,IAAI0L,EAAEwM,KAAK,IAAI7a,EAAE,CAAC,IAAIyD,EAAE0sI,GAAG9hI,GAAG,IAAI5K,IAAId,EAAEc,EAAEzD,EAAEs5J,GAAGjrJ,EAAE5K,GAAG,CAAC,GAAG,IAAIzD,EAAE,MAAMA,EAAEw3J,GAAG2B,GAAG9qJ,EAAE,GAAGgqJ,GAAGhqJ,EAAE1L,GAAG21J,GAAGjqJ,EAAE+tB,MAAKp8B,EAAE,GAAG,IAAIA,EAAE,MAAM7M,MAAMhF,EAAE,MAAiF,OAA3EkgB,EAAEmrJ,aAAanrJ,EAAE2d,QAAQkhH,UAAU7+H,EAAEorJ,cAAc92J,EAAE+2J,GAAGrrJ,EAAEupJ,GAAGC,IAAIS,GAAGjqJ,EAAE+tB,MAAY,IAAI,CACvd,SAASw9H,GAAGvrJ,EAAE1L,GAAG,IAAI3C,EAAEu8B,GAAEA,IAAG,EAAE,IAAI,OAAOluB,EAAE1L,EAAE,CAAC,QAAY,KAAJ45B,GAAEv8B,KAAU80J,GAAG14H,KAAI,IAAImnH,IAAIG,KAAK,CAAC,CAAC,SAASmW,GAAGxrJ,GAAG,OAAO0pJ,IAAI,IAAIA,GAAGl9I,KAAK,KAAO,EAAF0hB,KAAMy8H,KAAK,IAAIr2J,EAAE45B,GAAEA,IAAG,EAAE,IAAIv8B,EAAEs3J,GAAGvkB,WAAWtvI,EAAE4b,GAAE,IAAI,GAAGi4I,GAAGvkB,WAAW,KAAK1zH,GAAE,EAAEhR,EAAE,OAAOA,GAAG,CAAC,QAAQgR,GAAE5b,EAAE6zJ,GAAGvkB,WAAW/yI,EAAM,KAAO,GAAXu8B,GAAE55B,KAAa+gJ,IAAI,CAAC,CAAC,SAASqR,KAAK7C,GAAGD,GAAGjmI,QAAQ0P,GAAEu2H,GAAG,CAChT,SAASkH,GAAG9qJ,EAAE1L,GAAG0L,EAAEmrJ,aAAa,KAAKnrJ,EAAEorJ,cAAc,EAAE,IAAIz5J,EAAEqO,EAAEsrJ,cAAiD,IAAlC,IAAI35J,IAAIqO,EAAEsrJ,eAAe,EAAEpY,GAAGvhJ,IAAO,OAAOq6B,GAAE,IAAIr6B,EAAEq6B,GAAE8yG,OAAO,OAAOntI,GAAG,CAAC,IAAIyD,EAAEzD,EAAQ,OAANukJ,GAAG9gJ,GAAUA,EAAEoX,KAAK,KAAK,EAA6B,QAA3BpX,EAAEA,EAAE9T,KAAKgkD,yBAA4B,IAASlwC,GAAGs/I,KAAK,MAAM,KAAK,EAAE+H,KAAKpvH,GAAE+mH,IAAI/mH,GAAEY,IAAG8uH,KAAK,MAAM,KAAK,EAAEJ,GAAGvnJ,GAAG,MAAM,KAAK,EAAEqnJ,KAAK,MAAM,KAAK,GAAc,KAAK,GAAGpvH,GAAEV,IAAG,MAAM,KAAK,GAAGkrH,GAAGziJ,EAAE9T,KAAK6S,UAAU,MAAM,KAAK,GAAG,KAAK,GAAGuyJ,KAAK/0J,EAAEA,EAAEmtI,MAAM,CAAqE,GAApE1yG,GAAEpsB,EAAEgsB,GAAEhsB,EAAE27I,GAAG37I,EAAE2d,QAAQ,MAAMurI,GAAErF,GAAGvvJ,EAAEu6B,GAAE,EAAEs6H,GAAG,KAAKE,GAAGD,GAAGxP,GAAG,EAAE2P,GAAGD,GAAG,KAAQ,OAAO9Q,GAAG,CAAC,IAAIlkJ,EAC1f,EAAEA,EAAEkkJ,GAAGh9J,OAAO8Y,IAAI,GAA2B,QAAhBc,GAARzD,EAAE6mJ,GAAGlkJ,IAAOqkJ,aAAqB,CAAChnJ,EAAEgnJ,YAAY,KAAK,IAAIvyJ,EAAEgP,EAAEnF,KAAK9S,EAAEwU,EAAEwnJ,QAAQ,GAAG,OAAOh8J,EAAE,CAAC,IAAI8pD,EAAE9pD,EAAE8S,KAAK9S,EAAE8S,KAAK7J,EAAEgP,EAAEnF,KAAKg3C,CAAC,CAACt1C,EAAEwnJ,QAAQ/jJ,CAAC,CAACojJ,GAAG,IAAI,CAAC,OAAOx4I,CAAC,CAC3K,SAASgrJ,GAAGhrJ,EAAE1L,GAAG,OAAE,CAAC,IAAI3C,EAAEq6B,GAAE,IAAuB,GAAnB4rH,KAAKqF,GAAGt/H,QAAQmgI,GAAMT,GAAG,CAAC,IAAI,IAAIjoJ,EAAE42H,GAAEgT,cAAc,OAAO5pI,GAAG,CAAC,IAAIhP,EAAEgP,EAAEmlB,MAAM,OAAOn0B,IAAIA,EAAE+yJ,QAAQ,MAAM/jJ,EAAEA,EAAEnF,IAAI,CAACotJ,IAAG,CAAE,CAA4C,GAA3CD,GAAG,EAAEvpI,GAAEtI,GAAEygH,GAAE,KAAKsxB,IAAG,EAAGC,GAAG,EAAE71H,GAAG/J,QAAQ,KAAQ,OAAOhsB,GAAG,OAAOA,EAAEmtI,OAAO,CAACjwG,GAAE,EAAEs6H,GAAG70J,EAAE03B,GAAE,KAAK,KAAK,CAAChsB,EAAE,CAAC,IAAI7iB,EAAE6iB,EAAEinC,EAAEt1C,EAAEmtI,OAAO9wG,EAAEr8B,EAAErT,EAAEgW,EAAqB,GAAnBA,EAAE40J,GAAEl7H,EAAEqT,OAAO,MAAS,OAAO/iD,GAAG,kBAAkBA,GAAG,oBAAoBA,EAAEiS,KAAK,CAAC,IAAI22C,EAAE5oD,EAAE0lB,EAAEgqB,EAAEtB,EAAE1oB,EAAEwI,IAAI,GAAG,KAAY,EAAPxI,EAAE0c,QAAU,IAAIgM,GAAG,KAAKA,GAAG,KAAKA,GAAG,CAAC,IAAI3D,EAAE/kB,EAAE66H,UAAU91G,GAAG/kB,EAAE+0I,YAAYhwH,EAAEgwH,YAAY/0I,EAAEg7H,cAAcj2G,EAAEi2G,cACxeh7H,EAAEo0I,MAAMrvH,EAAEqvH,QAAQp0I,EAAE+0I,YAAY,KAAK/0I,EAAEg7H,cAAc,KAAK,CAAC,IAAIrzG,EAAEk3H,GAAG57G,GAAG,GAAG,OAAOtb,EAAE,CAACA,EAAE0V,QAAQ,IAAIyhH,GAAGn3H,EAAEsb,EAAEjZ,EAAE7wC,EAAEmX,GAAU,EAAPq3B,EAAEjL,MAAQgiI,GAAGvlK,EAAE+pD,EAAE5yC,GAAOhW,EAAE4oD,EAAE,IAAIhlD,GAAZoS,EAAEq3B,GAAcotH,YAAY,GAAG,OAAO72J,EAAE,CAAC,IAAIysC,EAAE,IAAI3kB,IAAI2kB,EAAE1lC,IAAI3K,GAAGgW,EAAEykJ,YAAYpqH,CAAC,MAAMzsC,EAAE+G,IAAI3K,GAAG,MAAM0hB,CAAC,CAAM,GAAG,KAAO,EAAF1L,GAAK,CAACouJ,GAAGvlK,EAAE+pD,EAAE5yC,GAAG+wJ,KAAK,MAAMrlJ,CAAC,CAAC1hB,EAAEwG,MAAMhF,EAAE,KAAM,MAAM,GAAGktC,IAAU,EAAPgB,EAAEtN,KAAO,CAAC,IAAIkxH,EAAEiR,GAAG57G,GAAG,GAAG,OAAO2qG,EAAE,CAAC,KAAa,MAARA,EAAEvwG,SAAeuwG,EAAEvwG,OAAO,KAAKyhH,GAAGlR,EAAE3qG,EAAEjZ,EAAE7wC,EAAEmX,GAAG+iJ,GAAG2K,GAAG1jK,EAAE0vC,IAAI,MAAMhuB,CAAC,CAAC,CAAC7iB,EAAEmB,EAAE0jK,GAAG1jK,EAAE0vC,GAAG,IAAIa,KAAIA,GAAE,GAAG,OAAOy6H,GAAGA,GAAG,CAACnsK,GAAGmsK,GAAG3sK,KAAKQ,GAAGA,EAAE8pD,EAAE,EAAE,CAAC,OAAO9pD,EAAEqvB,KAAK,KAAK,EAAErvB,EAAEkkD,OAAO,MACpf/sC,IAAIA,EAAEnX,EAAEi7J,OAAO9jJ,EAAkBolJ,GAAGv8J,EAAbklK,GAAGllK,EAAEmB,EAAEgW,IAAW,MAAM0L,EAAE,KAAK,EAAEguB,EAAE1vC,EAAE,IAAIwuC,EAAE3vC,EAAEmE,KAAKgrC,EAAEnvC,EAAEugJ,UAAU,GAAG,KAAa,IAARvgJ,EAAEkkD,SAAa,oBAAoBvU,EAAE8Y,0BAA0B,OAAOtZ,GAAG,oBAAoBA,EAAElnB,oBAAoB,OAAOq9I,KAAKA,GAAG/4I,IAAI4iB,KAAK,CAACnvC,EAAEkkD,OAAO,MAAM/sC,IAAIA,EAAEnX,EAAEi7J,OAAO9jJ,EAAkBolJ,GAAGv8J,EAAbqlK,GAAGrlK,EAAE6wC,EAAE15B,IAAW,MAAM0L,CAAC,EAAE7iB,EAAEA,EAAE2hJ,MAAM,OAAO,OAAO3hJ,EAAE,CAACsuK,GAAG95J,EAAE,CAAC,MAAMsgJ,GAAI39I,EAAE29I,EAAGjmH,KAAIr6B,GAAG,OAAOA,IAAIq6B,GAAEr6B,EAAEA,EAAEmtI,QAAQ,QAAQ,CAAC,KAAK,CAAS,CAAC,SAAS+rB,KAAK,IAAI7qJ,EAAEgpJ,GAAGrrI,QAAsB,OAAdqrI,GAAGrrI,QAAQmgI,GAAU,OAAO99I,EAAE89I,GAAG99I,CAAC,CACrd,SAASqlJ,KAAQ,IAAIx2H,IAAG,IAAIA,IAAG,IAAIA,KAAEA,GAAE,GAAE,OAAOzC,IAAG,KAAQ,UAAHwtH,KAAe,KAAQ,UAAHwP,KAAeY,GAAG59H,GAAE88H,GAAE,CAAC,SAAS0B,GAAG5qJ,EAAE1L,GAAG,IAAI3C,EAAEu8B,GAAEA,IAAG,EAAE,IAAI94B,EAAEy1J,KAAqC,IAA7Bz+H,KAAIpsB,GAAGkpJ,KAAI50J,IAAEk1J,GAAG,KAAKsB,GAAG9qJ,EAAE1L,UAAUo3J,KAAK,KAAK,CAAC,MAAMtlK,GAAG4kK,GAAGhrJ,EAAE5Z,EAAE,CAAgC,GAAtBwxJ,KAAK1pH,GAAEv8B,EAAEq3J,GAAGrrI,QAAQvoB,EAAK,OAAO42B,GAAE,MAAMlnC,MAAMhF,EAAE,MAAiB,OAAXssC,GAAE,KAAK88H,GAAE,EAASr6H,EAAC,CAAC,SAAS68H,KAAK,KAAK,OAAO1/H,IAAG2/H,GAAG3/H,GAAE,CAAC,SAAS++H,KAAK,KAAK,OAAO/+H,KAAI4zG,MAAM+rB,GAAG3/H,GAAE,CAAC,SAAS2/H,GAAG3rJ,GAAG,IAAI1L,EAAEw0J,GAAG9oJ,EAAE6+H,UAAU7+H,EAAE6jJ,IAAI7jJ,EAAEk3I,cAAcl3I,EAAE02I,aAAa,OAAOpiJ,EAAEm3J,GAAGzrJ,GAAGgsB,GAAE13B,EAAEozB,GAAG/J,QAAQ,IAAI,CAC1d,SAAS8tI,GAAGzrJ,GAAG,IAAI1L,EAAE0L,EAAE,EAAE,CAAC,IAAIrO,EAAE2C,EAAEuqI,UAAqB,GAAX7+H,EAAE1L,EAAEwqI,OAAU,KAAa,MAARxqI,EAAE+sC,QAAc,GAAgB,QAAb1vC,EAAEu0J,GAAGv0J,EAAE2C,EAAEuvJ,KAAkB,YAAJ73H,GAAEr6B,OAAc,CAAW,GAAG,QAAbA,EAAEg1J,GAAGh1J,EAAE2C,IAAmC,OAAnB3C,EAAE0vC,OAAO,WAAMrV,GAAEr6B,GAAS,GAAG,OAAOqO,EAAmE,OAAX6uB,GAAE,OAAE7C,GAAE,MAA5DhsB,EAAEqhC,OAAO,MAAMrhC,EAAEylJ,aAAa,EAAEzlJ,EAAEw2I,UAAU,IAA4B,CAAa,GAAG,QAAfliJ,EAAEA,EAAE+qI,SAAyB,YAAJrzG,GAAE13B,GAAS03B,GAAE13B,EAAE0L,CAAC,OAAO,OAAO1L,GAAG,IAAIu6B,KAAIA,GAAE,EAAE,CAAC,SAASw8H,GAAGrrJ,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAE4b,GAAE5qB,EAAE6iK,GAAGvkB,WAAW,IAAIukB,GAAGvkB,WAAW,KAAK1zH,GAAE,EAC3Y,SAAYhR,EAAE1L,EAAE3C,EAAEyD,GAAG,GAAGu1J,WAAW,OAAOjB,IAAI,GAAG,KAAO,EAAFx7H,IAAK,MAAMppC,MAAMhF,EAAE,MAAM6R,EAAEqO,EAAEmrJ,aAAa,IAAI/kK,EAAE4Z,EAAEorJ,cAAc,GAAG,OAAOz5J,EAAE,OAAO,KAA2C,GAAtCqO,EAAEmrJ,aAAa,KAAKnrJ,EAAEorJ,cAAc,EAAKz5J,IAAIqO,EAAE2d,QAAQ,MAAM74B,MAAMhF,EAAE,MAAMkgB,EAAEkqJ,aAAa,KAAKlqJ,EAAEsqJ,iBAAiB,EAAE,IAAIntK,EAAEwU,EAAEymJ,MAAMzmJ,EAAEqmJ,WAA8J,GA1NtT,SAAYh4I,EAAE1L,GAAG,IAAI3C,EAAEqO,EAAEwhI,cAAcltI,EAAE0L,EAAEwhI,aAAaltI,EAAE0L,EAAEyhI,eAAe,EAAEzhI,EAAE0hI,YAAY,EAAE1hI,EAAEoqJ,cAAc91J,EAAE0L,EAAE4rJ,kBAAkBt3J,EAAE0L,EAAE2hI,gBAAgBrtI,EAAEA,EAAE0L,EAAE4hI,cAAc,IAAIxsI,EAAE4K,EAAEkiI,WAAW,IAAIliI,EAAEA,EAAEmqJ,gBAAgB,EAAEx4J,GAAG,CAAC,IAAIvL,EAAE,GAAG26I,GAAGpvI,GAAGxU,EAAE,GAAGiJ,EAAEkO,EAAElO,GAAG,EAAEgP,EAAEhP,IAAI,EAAE4Z,EAAE5Z,IAAI,EAAEuL,IAAIxU,CAAC,CAAC,CA0N5G0uK,CAAG7rJ,EAAE7iB,GAAG6iB,IAAIosB,KAAIJ,GAAEI,GAAE,KAAK88H,GAAE,GAAG,KAAoB,KAAfv3J,EAAE8zJ,eAAoB,KAAa,KAAR9zJ,EAAE0vC,QAAaooH,KAAKA,IAAG,EAAGgB,GAAGlqB,IAAG,WAAgB,OAALoqB,KAAY,IAAI,KAAIxtK,EAAE,KAAa,MAARwU,EAAE0vC,OAAgB,KAAoB,MAAf1vC,EAAE8zJ,eAAqBtoK,EAAE,CAACA,EAAE8rK,GAAGvkB,WAAWukB,GAAGvkB,WAAW,KAChf,IAAIz9F,EAAEj2B,GAAEA,GAAE,EAAE,IAAIgd,EAAEE,GAAEA,IAAG,EAAExG,GAAG/J,QAAQ,KA1CpC,SAAY3d,EAAE1L,GAAgB,GAAbu+I,GAAGrO,GAAa0J,GAAVluI,EAAEguI,MAAc,CAAC,GAAG,mBAAmBhuI,EAAE,IAAIrO,EAAE,CAACwL,MAAM6C,EAAEuuI,eAAenxI,IAAI4C,EAAEwuI,mBAAmBxuI,EAAE,CAA8C,IAAI5K,GAAjDzD,GAAGA,EAAEqO,EAAE43H,gBAAgBjmI,EAAE88I,aAAahuJ,QAAeiuJ,cAAc/8I,EAAE+8I,eAAe,GAAGt5I,GAAG,IAAIA,EAAEw5I,WAAW,CAACj9I,EAAEyD,EAAEy5I,WAAW,IAAIzoJ,EAAEgP,EAAE05I,aAAa3xJ,EAAEiY,EAAE25I,UAAU35I,EAAEA,EAAE45I,YAAY,IAAIr9I,EAAEsnI,SAAS97I,EAAE87I,QAAQ,CAAC,MAAMhsH,GAAGtb,EAAE,KAAK,MAAMqO,CAAC,CAAC,IAAIinC,EAAE,EAAEjZ,GAAG,EAAE1vC,GAAG,EAAE4oD,EAAE,EAAEljC,EAAE,EAAE0oB,EAAE1sB,EAAE+oB,EAAE,KAAKz0B,EAAE,OAAO,CAAC,IAAI,IAAIq3B,EAAKe,IAAI/6B,GAAG,IAAIvL,GAAG,IAAIsmC,EAAEusG,WAAWjrG,EAAEiZ,EAAE7gD,GAAGsmC,IAAIvvC,GAAG,IAAIiY,GAAG,IAAIs3B,EAAEusG,WAAW36I,EAAE2oD,EAAE7xC,GAAG,IAAIs3B,EAAEusG,WAAWhyF,GACnfva,EAAEwsG,UAAU19I,QAAW,QAAQmwC,EAAEe,EAAEksG,aAAkB7vG,EAAE2D,EAAEA,EAAEf,EAAE,OAAO,CAAC,GAAGe,IAAI1sB,EAAE,MAAM1L,EAA8C,GAA5Cy0B,IAAIp3B,KAAKu1C,IAAI9gD,IAAI4nC,EAAEiZ,GAAGle,IAAI5rC,KAAK6mB,IAAI5O,IAAI9W,EAAE2oD,GAAM,QAAQtb,EAAEe,EAAEkhH,aAAa,MAAU7kH,GAAJ2D,EAAE3D,GAAM7pB,UAAU,CAACwtB,EAAEf,CAAC,CAACh6B,GAAG,IAAIq8B,IAAI,IAAI1vC,EAAE,KAAK,CAAC6e,MAAM6wB,EAAE5wB,IAAI9e,EAAE,MAAMqT,EAAE,IAAI,CAACA,EAAEA,GAAG,CAACwL,MAAM,EAAEC,IAAI,EAAE,MAAMzL,EAAE,KAA+C,IAA1CmhJ,GAAG,CAACzE,YAAYruI,EAAEsuI,eAAe38I,GAAG6yI,IAAG,EAAO5wH,GAAEtf,EAAE,OAAOsf,IAAG,GAAO5T,GAAJ1L,EAAEsf,IAAMwrH,MAAM,KAAoB,KAAf9qI,EAAEmxJ,eAAoB,OAAOzlJ,EAAEA,EAAE8+H,OAAOxqI,EAAEsf,GAAE5T,OAAO,KAAK,OAAO4T,IAAG,CAACtf,EAAEsf,GAAE,IAAI,IAAI1xB,EAAEoS,EAAEuqI,UAAU,GAAG,KAAa,KAARvqI,EAAE+sC,OAAY,OAAO/sC,EAAEkY,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GACvK,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,GAAG,MAA3W,KAAK,EAAE,GAAG,OAAOtqB,EAAE,CAAC,IAAIysC,EAAEzsC,EAAEg1J,cAActF,EAAE1vJ,EAAE88I,cAAcnjJ,EAAEyY,EAAEopI,UAAU5wG,EAAEjxC,EAAEq/J,wBAAwB5mJ,EAAEs6H,cAAct6H,EAAEhT,KAAKqtC,EAAE4oH,GAAGjjJ,EAAEhT,KAAKqtC,GAAGijH,GAAG/1J,EAAEgtK,oCAAoC/7H,CAAC,CAAC,MAAM,KAAK,EAAE,IAAIR,EAAEh4B,EAAEopI,UAAUqG,cAAc,IAAIz3G,EAAE2sG,SAAS3sG,EAAEztB,YAAY,GAAG,IAAIytB,EAAE2sG,UAAU3sG,EAAEjyB,iBAAiBiyB,EAAEtJ,YAAYsJ,EAAEjyB,iBAAiB,MAAyC,QAAQ,MAAMvV,MAAMhF,EAAE,MAAO,CAAC,MAAMmtB,GAAGg/G,GAAE33H,EAAEA,EAAEwqI,OAAO7xH,EAAE,CAAa,GAAG,QAAfjN,EAAE1L,EAAE+qI,SAAoB,CAACr/H,EAAE8+H,OAAOxqI,EAAEwqI,OAAOlrH,GAAE5T,EAAE,KAAK,CAAC4T,GAAEtf,EAAEwqI,MAAM,CAAC58I,EAAEglK,GAAGA,IAAG,CAAW,CAwCld4E,CAAG9rJ,EAAErO,GAAGy2J,GAAGz2J,EAAEqO,GAAGouI,GAAG0E,IAAItO,KAAKqO,GAAGC,GAAGD,GAAG,KAAK7yI,EAAE2d,QAAQhsB,EAAE82J,GAAG92J,EAAEqO,EAAE5Z,GAAG05I,KAAK5xG,GAAEF,EAAEhd,GAAEi2B,EAAEgiH,GAAGvkB,WAAWvnJ,CAAC,MAAM6iB,EAAE2d,QAAQhsB,EAAsF,GAApF83J,KAAKA,IAAG,EAAGC,GAAG1pJ,EAAE2pJ,GAAGvjK,GAAGjJ,EAAE6iB,EAAEwhI,aAAa,IAAIrkJ,IAAIslK,GAAG,MAjOmJ,SAAYziJ,GAAG,GAAG8gI,IAAI,oBAAoBA,GAAGirB,kBAAkB,IAAIjrB,GAAGirB,kBAAkBlrB,GAAG7gI,OAAE,EAAO,OAAuB,IAAhBA,EAAE2d,QAAQ0jB,OAAW,CAAC,MAAM/sC,GAAG,CAAC,CAiOxR03J,CAAGr6J,EAAE+rI,WAAausB,GAAGjqJ,EAAE+tB,MAAQ,OAAOz5B,EAAE,IAAIc,EAAE4K,EAAEisJ,mBAAmBt6J,EAAE,EAAEA,EAAE2C,EAAE9Y,OAAOmW,IAAIvL,EAAEkO,EAAE3C,GAAGyD,EAAEhP,EAAEpJ,MAAM,CAACqoB,eAAejf,EAAE1B,MAAMu9J,OAAO77J,EAAE67J,SAAS,GAAGK,GAAG,MAAMA,IAAG,EAAGtiJ,EAAEuiJ,GAAGA,GAAG,KAAKviJ,EAAE,KAAQ,EAAH2pJ,KAAO,IAAI3pJ,EAAEwM,KAAKm+I,KAAKxtK,EAAE6iB,EAAEwhI,aAAa,KAAO,EAAFrkJ,GAAK6iB,IAAI6pJ,GAAGD,MAAMA,GAAG,EAAEC,GAAG7pJ,GAAG4pJ,GAAG,EAAEvU,IAAgB,CAFxF6W,CAAGlsJ,EAAE1L,EAAE3C,EAAEyD,EAAE,CAAC,QAAQ6zJ,GAAGvkB,WAAWt+I,EAAE4qB,GAAE5b,CAAC,CAAC,OAAO,IAAI,CAGhc,SAASu1J,KAAK,GAAG,OAAOjB,GAAG,CAAC,IAAI1pJ,EAAEoiI,GAAGunB,IAAIr1J,EAAE20J,GAAGvkB,WAAW/yI,EAAEqf,GAAE,IAAmC,GAA/Bi4I,GAAGvkB,WAAW,KAAK1zH,GAAE,GAAGhR,EAAE,GAAGA,EAAK,OAAO0pJ,GAAG,IAAIt0J,GAAE,MAAO,CAAmB,GAAlB4K,EAAE0pJ,GAAGA,GAAG,KAAKC,GAAG,EAAK,KAAO,EAAFz7H,IAAK,MAAMppC,MAAMhF,EAAE,MAAM,IAAIsG,EAAE8nC,GAAO,IAALA,IAAG,EAAMta,GAAE5T,EAAE2d,QAAQ,OAAO/J,IAAG,CAAC,IAAIz2B,EAAEy2B,GAAEqzB,EAAE9pD,EAAEiiJ,MAAM,GAAG,KAAa,GAARxrH,GAAEytB,OAAU,CAAC,IAAIrT,EAAE7wC,EAAEq5J,UAAU,GAAG,OAAOxoH,EAAE,CAAC,IAAI,IAAI1vC,EAAE,EAAEA,EAAE0vC,EAAExyC,OAAO8C,IAAI,CAAC,IAAI4oD,EAAElZ,EAAE1vC,GAAG,IAAIs1B,GAAEszB,EAAE,OAAOtzB,IAAG,CAAC,IAAI5P,EAAE4P,GAAE,OAAO5P,EAAEwI,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG26I,GAAG,EAAEnjJ,EAAE7mB,GAAG,IAAIuvC,EAAE1oB,EAAEo7H,MAAM,GAAG,OAAO1yG,EAAEA,EAAEoyG,OAAO96H,EAAE4P,GAAE8Y,OAAO,KAAK,OAAO9Y,IAAG,CAAK,IAAImV,GAAR/kB,EAAE4P,IAAUyrH,QAAQ1zG,EAAE3nB,EAAE86H,OAAa,GAANwoB,GAAGtjJ,GAAMA,IACnfkjC,EAAE,CAACtzB,GAAE,KAAK,KAAK,CAAC,GAAG,OAAOmV,EAAE,CAACA,EAAE+1G,OAAOnzG,EAAE/X,GAAEmV,EAAE,KAAK,CAACnV,GAAE+X,CAAC,CAAC,CAAC,CAAC,IAAIzpC,EAAE/E,EAAE0hJ,UAAU,GAAG,OAAO38I,EAAE,CAAC,IAAIysC,EAAEzsC,EAAEk9I,MAAM,GAAG,OAAOzwG,EAAE,CAACzsC,EAAEk9I,MAAM,KAAK,EAAE,CAAC,IAAIwS,EAAEjjH,EAAE0wG,QAAQ1wG,EAAE0wG,QAAQ,KAAK1wG,EAAEijH,CAAC,OAAO,OAAOjjH,EAAE,CAAC,CAAC/a,GAAEz2B,CAAC,CAAC,CAAC,GAAG,KAAoB,KAAfA,EAAEsoK,eAAoB,OAAOx+G,EAAEA,EAAE63F,OAAO3hJ,EAAEy2B,GAAEqzB,OAAO3yC,EAAE,KAAK,OAAOsf,IAAG,CAAK,GAAG,KAAa,MAApBz2B,EAAEy2B,IAAYytB,OAAY,OAAOlkD,EAAEqvB,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG26I,GAAG,EAAEhqK,EAAEA,EAAE2hJ,QAAQ,IAAIjjJ,EAAEsB,EAAEkiJ,QAAQ,GAAG,OAAOxjJ,EAAE,CAACA,EAAEijJ,OAAO3hJ,EAAE2hJ,OAAOlrH,GAAE/3B,EAAE,MAAMyY,CAAC,CAACsf,GAAEz2B,EAAE2hJ,MAAM,CAAC,CAAC,IAAIhyG,EAAE9sB,EAAE2d,QAAQ,IAAI/J,GAAEkZ,EAAE,OAAOlZ,IAAG,CAAK,IAAI0Y,GAAR2a,EAAErzB,IAAUwrH,MAAM,GAAG,KAAoB,KAAfn4F,EAAEw+G,eAAoB,OAClfn5H,EAAEA,EAAEwyG,OAAO73F,EAAErzB,GAAE0Y,OAAOh4B,EAAE,IAAI2yC,EAAEna,EAAE,OAAOlZ,IAAG,CAAK,GAAG,KAAa,MAApBoa,EAAEpa,IAAYytB,OAAY,IAAI,OAAOrT,EAAExhB,KAAK,KAAK,EAAE,KAAK,GAAG,KAAK,GAAG46I,GAAG,EAAEp5H,GAAG,CAAC,MAAMikH,GAAIhmB,GAAEj+F,EAAEA,EAAE8wG,OAAOmT,EAAG,CAAC,GAAGjkH,IAAIiZ,EAAE,CAACrzB,GAAE,KAAK,MAAMtf,CAAC,CAAC,IAAI2Y,EAAE+gB,EAAEqxG,QAAQ,GAAG,OAAOpyH,EAAE,CAACA,EAAE6xH,OAAO9wG,EAAE8wG,OAAOlrH,GAAE3G,EAAE,MAAM3Y,CAAC,CAACsf,GAAEoa,EAAE8wG,MAAM,CAAC,CAAU,GAAT5wG,GAAE9nC,EAAEivJ,KAAQvU,IAAI,oBAAoBA,GAAGqrB,sBAAsB,IAAIrrB,GAAGqrB,sBAAsBtrB,GAAG7gI,EAAE,CAAC,MAAMiyI,GAAI,CAAC78I,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQ4b,GAAErf,EAAEs3J,GAAGvkB,WAAWpwI,CAAC,CAAC,CAAC,OAAM,CAAE,CAAC,SAAS83J,GAAGpsJ,EAAE1L,EAAE3C,GAAyBqO,EAAEw5I,GAAGx5I,EAAjB1L,EAAE+tJ,GAAGriJ,EAAf1L,EAAE0tJ,GAAGrwJ,EAAE2C,GAAY,GAAY,GAAGA,EAAEu4B,KAAI,OAAO7sB,IAAIiiI,GAAGjiI,EAAE,EAAE1L,GAAG21J,GAAGjqJ,EAAE1L,GAAG,CACze,SAAS23H,GAAEjsH,EAAE1L,EAAE3C,GAAG,GAAG,IAAIqO,EAAEwM,IAAI4/I,GAAGpsJ,EAAEA,EAAErO,QAAQ,KAAK,OAAO2C,GAAG,CAAC,GAAG,IAAIA,EAAEkY,IAAI,CAAC4/I,GAAG93J,EAAE0L,EAAErO,GAAG,KAAK,CAAM,GAAG,IAAI2C,EAAEkY,IAAI,CAAC,IAAIpX,EAAEd,EAAEopI,UAAU,GAAG,oBAAoBppI,EAAEhT,KAAKskD,0BAA0B,oBAAoBxwC,EAAEgQ,oBAAoB,OAAOq9I,KAAKA,GAAG/4I,IAAItU,IAAI,CAAuBd,EAAEklJ,GAAGllJ,EAAjB0L,EAAEwiJ,GAAGluJ,EAAf0L,EAAEgiJ,GAAGrwJ,EAAEqO,GAAY,GAAY,GAAGA,EAAE6sB,KAAI,OAAOv4B,IAAI2tI,GAAG3tI,EAAE,EAAE0L,GAAGiqJ,GAAG31J,EAAE0L,IAAI,KAAK,CAAC,CAAC1L,EAAEA,EAAEwqI,MAAM,CAAC,CACnV,SAAS8jB,GAAG5iJ,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAE4K,EAAE2iJ,UAAU,OAAOvtJ,GAAGA,EAAEohE,OAAOliE,GAAGA,EAAEu4B,KAAI7sB,EAAE0hI,aAAa1hI,EAAEyhI,eAAe9vI,EAAEy6B,KAAIpsB,IAAIkpJ,GAAEv3J,KAAKA,IAAI,IAAIk9B,IAAG,IAAIA,KAAM,UAAFq6H,MAAeA,IAAG,IAAIn7H,KAAIw6H,GAAGuC,GAAG9qJ,EAAE,GAAGqpJ,IAAI13J,GAAGs4J,GAAGjqJ,EAAE1L,EAAE,CAAC,SAAS+3J,GAAGrsJ,EAAE1L,GAAG,IAAIA,IAAI,KAAY,EAAP0L,EAAE0gB,MAAQpsB,EAAE,GAAGA,EAAE+sI,GAAU,KAAQ,WAAfA,KAAK,MAAuBA,GAAG,WAAW,IAAI1vI,EAAEk7B,KAAc,QAAV7sB,EAAE44I,GAAG54I,EAAE1L,MAAc2tI,GAAGjiI,EAAE1L,EAAE3C,GAAGs4J,GAAGjqJ,EAAErO,GAAG,CAAC,SAAS2zJ,GAAGtlJ,GAAG,IAAI1L,EAAE0L,EAAEg/H,cAAcrtI,EAAE,EAAE,OAAO2C,IAAI3C,EAAE2C,EAAEuiJ,WAAWwV,GAAGrsJ,EAAErO,EAAE,CACjZ,SAASu2J,GAAGloJ,EAAE1L,GAAG,IAAI3C,EAAE,EAAE,OAAOqO,EAAEwM,KAAK,KAAK,GAAG,IAAIpX,EAAE4K,EAAE09H,UAAct3I,EAAE4Z,EAAEg/H,cAAc,OAAO54I,IAAIuL,EAAEvL,EAAEywJ,WAAW,MAAM,KAAK,GAAGzhJ,EAAE4K,EAAE09H,UAAU,MAAM,QAAQ,MAAM54I,MAAMhF,EAAE,MAAO,OAAOsV,GAAGA,EAAEohE,OAAOliE,GAAG+3J,GAAGrsJ,EAAErO,EAAE,CAQqK,SAAS84J,GAAGzqJ,EAAE1L,GAAG,OAAOkrI,GAAGx/H,EAAE1L,EAAE,CACjZ,SAASg4J,GAAGtsJ,EAAE1L,EAAE3C,EAAEyD,GAAG3T,KAAK+qB,IAAIxM,EAAEve,KAAKnC,IAAIqS,EAAElQ,KAAK49I,QAAQ59I,KAAK29I,MAAM39I,KAAKq9I,OAAOr9I,KAAKi8I,UAAUj8I,KAAKH,KAAKG,KAAKmtI,YAAY,KAAKntI,KAAKuO,MAAM,EAAEvO,KAAKsxI,IAAI,KAAKtxI,KAAKi1J,aAAapiJ,EAAE7S,KAAKy2J,aAAaz2J,KAAKu9I,cAAcv9I,KAAKs3J,YAAYt3J,KAAKy1J,cAAc,KAAKz1J,KAAKi/B,KAAKtrB,EAAE3T,KAAKgkK,aAAahkK,KAAK4/C,MAAM,EAAE5/C,KAAK+0J,UAAU,KAAK/0J,KAAKu2J,WAAWv2J,KAAK22J,MAAM,EAAE32J,KAAKo9I,UAAU,IAAI,CAAC,SAAS0X,GAAGv2I,EAAE1L,EAAE3C,EAAEyD,GAAG,OAAO,IAAIk3J,GAAGtsJ,EAAE1L,EAAE3C,EAAEyD,EAAE,CAAC,SAASiuJ,GAAGrjJ,GAAiB,UAAdA,EAAEA,EAAE/jB,aAAuB+jB,EAAEusJ,iBAAiB,CAEpd,SAAS5Q,GAAG37I,EAAE1L,GAAG,IAAI3C,EAAEqO,EAAE6+H,UACuB,OADb,OAAOltI,IAAGA,EAAE4kJ,GAAGv2I,EAAEwM,IAAIlY,EAAE0L,EAAE1gB,IAAI0gB,EAAE0gB,OAAQkuG,YAAY5uH,EAAE4uH,YAAYj9H,EAAErQ,KAAK0e,EAAE1e,KAAKqQ,EAAE+rI,UAAU19H,EAAE09H,UAAU/rI,EAAEktI,UAAU7+H,EAAEA,EAAE6+H,UAAUltI,IAAIA,EAAE+kJ,aAAapiJ,EAAE3C,EAAErQ,KAAK0e,EAAE1e,KAAKqQ,EAAE0vC,MAAM,EAAE1vC,EAAE8zJ,aAAa,EAAE9zJ,EAAE6kJ,UAAU,MAAM7kJ,EAAE0vC,MAAc,SAARrhC,EAAEqhC,MAAe1vC,EAAEqmJ,WAAWh4I,EAAEg4I,WAAWrmJ,EAAEymJ,MAAMp4I,EAAEo4I,MAAMzmJ,EAAEytI,MAAMp/H,EAAEo/H,MAAMztI,EAAEulJ,cAAcl3I,EAAEk3I,cAAcvlJ,EAAEqtI,cAAch/H,EAAEg/H,cAAcrtI,EAAEonJ,YAAY/4I,EAAE+4I,YAAYzkJ,EAAE0L,EAAEk4I,aAAavmJ,EAAEumJ,aAAa,OAAO5jJ,EAAE,KAAK,CAAC8jJ,MAAM9jJ,EAAE8jJ,MAAMD,aAAa7jJ,EAAE6jJ,cAC/exmJ,EAAE0tI,QAAQr/H,EAAEq/H,QAAQ1tI,EAAE3B,MAAMgQ,EAAEhQ,MAAM2B,EAAEohI,IAAI/yH,EAAE+yH,IAAWphI,CAAC,CACxD,SAASkqJ,GAAG77I,EAAE1L,EAAE3C,EAAEyD,EAAEhP,EAAEjJ,GAAG,IAAI8pD,EAAE,EAAM,GAAJ7xC,EAAE4K,EAAK,oBAAoBA,EAAEqjJ,GAAGrjJ,KAAKinC,EAAE,QAAQ,GAAG,kBAAkBjnC,EAAEinC,EAAE,OAAOjnC,EAAE,OAAOA,GAAG,KAAK+0H,EAAG,OAAOinB,GAAGrqJ,EAAE8T,SAASrf,EAAEjJ,EAAEmX,GAAG,KAAK0gI,EAAG/tF,EAAE,EAAE7gD,GAAG,EAAE,MAAM,KAAK6uI,EAAG,OAAOj1H,EAAEu2I,GAAG,GAAG5kJ,EAAE2C,EAAI,EAAFlO,IAAOwoI,YAAYqG,EAAGj1H,EAAEo4I,MAAMj7J,EAAE6iB,EAAE,KAAKq1H,EAAG,OAAOr1H,EAAEu2I,GAAG,GAAG5kJ,EAAE2C,EAAElO,IAAKwoI,YAAYyG,EAAGr1H,EAAEo4I,MAAMj7J,EAAE6iB,EAAE,KAAKs1H,EAAG,OAAOt1H,EAAEu2I,GAAG,GAAG5kJ,EAAE2C,EAAElO,IAAKwoI,YAAY0G,EAAGt1H,EAAEo4I,MAAMj7J,EAAE6iB,EAAE,KAAKy1H,EAAG,OAAOuvB,GAAGrzJ,EAAEvL,EAAEjJ,EAAEmX,GAAG,QAAQ,GAAG,kBAAkB0L,GAAG,OAAOA,EAAE,OAAOA,EAAEmnC,UAAU,KAAK+tF,EAAGjuF,EAAE,GAAG,MAAMjnC,EAAE,KAAKm1H,EAAGluF,EAAE,EAAE,MAAMjnC,EAAE,KAAKo1H,EAAGnuF,EAAE,GACpf,MAAMjnC,EAAE,KAAKu1H,EAAGtuF,EAAE,GAAG,MAAMjnC,EAAE,KAAKw1H,EAAGvuF,EAAE,GAAG7xC,EAAE,KAAK,MAAM4K,EAAE,MAAMlb,MAAMhF,EAAE,IAAI,MAAMkgB,EAAEA,SAASA,EAAE,KAAuD,OAAjD1L,EAAEiiJ,GAAGtvG,EAAEt1C,EAAE2C,EAAElO,IAAKwoI,YAAY5uH,EAAE1L,EAAEhT,KAAK8T,EAAEd,EAAE8jJ,MAAMj7J,EAASmX,CAAC,CAAC,SAAS0nJ,GAAGh8I,EAAE1L,EAAE3C,EAAEyD,GAA2B,OAAxB4K,EAAEu2I,GAAG,EAAEv2I,EAAE5K,EAAEd,IAAK8jJ,MAAMzmJ,EAASqO,CAAC,CAAC,SAASglJ,GAAGhlJ,EAAE1L,EAAE3C,EAAEyD,GAAuE,OAApE4K,EAAEu2I,GAAG,GAAGv2I,EAAE5K,EAAEd,IAAKs6H,YAAY6G,EAAGz1H,EAAEo4I,MAAMzmJ,EAAEqO,EAAE09H,UAAU,CAAC4qB,UAAS,GAAWtoJ,CAAC,CAAC,SAAS47I,GAAG57I,EAAE1L,EAAE3C,GAA8B,OAA3BqO,EAAEu2I,GAAG,EAAEv2I,EAAE,KAAK1L,IAAK8jJ,MAAMzmJ,EAASqO,CAAC,CAC5W,SAAS+7I,GAAG/7I,EAAE1L,EAAE3C,GAA8J,OAA3J2C,EAAEiiJ,GAAG,EAAE,OAAOv2I,EAAEyF,SAASzF,EAAEyF,SAAS,GAAGzF,EAAE1gB,IAAIgV,IAAK8jJ,MAAMzmJ,EAAE2C,EAAEopI,UAAU,CAACqG,cAAc/jI,EAAE+jI,cAAcyoB,gBAAgB,KAAK1Q,eAAe97I,EAAE87I,gBAAuBxnJ,CAAC,CACtL,SAASm4J,GAAGzsJ,EAAE1L,EAAE3C,EAAEyD,EAAEhP,GAAG3E,KAAK+qB,IAAIlY,EAAE7S,KAAKsiJ,cAAc/jI,EAAEve,KAAK0pK,aAAa1pK,KAAKkhK,UAAUlhK,KAAKk8B,QAAQl8B,KAAK+qK,gBAAgB,KAAK/qK,KAAK6pK,eAAe,EAAE7pK,KAAKyoK,aAAazoK,KAAK6iK,eAAe7iK,KAAKrC,QAAQ,KAAKqC,KAAK6oK,iBAAiB,EAAE7oK,KAAKygJ,WAAWF,GAAG,GAAGvgJ,KAAK0oK,gBAAgBnoB,IAAI,GAAGvgJ,KAAKkgJ,eAAelgJ,KAAK2pK,cAAc3pK,KAAKmqK,iBAAiBnqK,KAAK2oK,aAAa3oK,KAAKigJ,YAAYjgJ,KAAKggJ,eAAehgJ,KAAK+/I,aAAa,EAAE//I,KAAKmgJ,cAAcI,GAAG,GAAGvgJ,KAAKsgK,iBAAiB3sJ,EAAE3T,KAAKwqK,mBAAmB7lK,EAAE3E,KAAKirK,gCAC/e,IAAI,CAAC,SAASC,GAAG3sJ,EAAE1L,EAAE3C,EAAEyD,EAAEhP,EAAEjJ,EAAE8pD,EAAEjZ,EAAE1vC,GAAgN,OAA7M0hB,EAAE,IAAIysJ,GAAGzsJ,EAAE1L,EAAE3C,EAAEq8B,EAAE1vC,GAAG,IAAIgW,GAAGA,EAAE,GAAE,IAAKnX,IAAImX,GAAG,IAAIA,EAAE,EAAEnX,EAAEo5J,GAAG,EAAE,KAAK,KAAKjiJ,GAAG0L,EAAE2d,QAAQxgC,EAAEA,EAAEugJ,UAAU19H,EAAE7iB,EAAE6hJ,cAAc,CAACrQ,QAAQv5H,EAAE0uI,aAAanyI,EAAE03C,MAAM,KAAKs6G,YAAY,KAAKiJ,0BAA0B,MAAM9T,GAAG37J,GAAU6iB,CAAC,CACzP,SAASrB,GAAGqB,GAAG,IAAIA,EAAE,OAAOm0I,GAAuBn0I,EAAE,CAAC,GAAG4+H,GAA1B5+H,EAAEA,EAAEm6I,mBAA8Bn6I,GAAG,IAAIA,EAAEwM,IAAI,MAAM1nB,MAAMhF,EAAE,MAAM,IAAIwU,EAAE0L,EAAE,EAAE,CAAC,OAAO1L,EAAEkY,KAAK,KAAK,EAAElY,EAAEA,EAAEopI,UAAUt+I,QAAQ,MAAM4gB,EAAE,KAAK,EAAE,GAAGy0I,GAAGngJ,EAAEhT,MAAM,CAACgT,EAAEA,EAAEopI,UAAUqX,0CAA0C,MAAM/0I,CAAC,EAAE1L,EAAEA,EAAEwqI,MAAM,OAAO,OAAOxqI,GAAG,MAAMxP,MAAMhF,EAAE,KAAM,CAAC,GAAG,IAAIkgB,EAAEwM,IAAI,CAAC,IAAI7a,EAAEqO,EAAE1e,KAAK,GAAGmzJ,GAAG9iJ,GAAG,OAAOijJ,GAAG50I,EAAErO,EAAE2C,EAAE,CAAC,OAAOA,CAAC,CACpW,SAASu4J,GAAG7sJ,EAAE1L,EAAE3C,EAAEyD,EAAEhP,EAAEjJ,EAAE8pD,EAAEjZ,EAAE1vC,GAAwK,OAArK0hB,EAAE2sJ,GAAGh7J,EAAEyD,GAAE,EAAG4K,EAAE5Z,EAAEjJ,EAAE8pD,EAAEjZ,EAAE1vC,IAAKc,QAAQuf,GAAG,MAAMhN,EAAEqO,EAAE2d,SAAsBxgC,EAAEm8J,GAAhBlkJ,EAAEy3B,KAAIzmC,EAAEi0J,GAAG1oJ,KAAe+vC,cAAS,IAASptC,GAAG,OAAOA,EAAEA,EAAE,KAAKklJ,GAAG7nJ,EAAExU,EAAEiJ,GAAG4Z,EAAE2d,QAAQy6H,MAAMhyJ,EAAE67I,GAAGjiI,EAAE5Z,EAAEgP,GAAG60J,GAAGjqJ,EAAE5K,GAAU4K,CAAC,CAAC,SAAS8sJ,GAAG9sJ,EAAE1L,EAAE3C,EAAEyD,GAAG,IAAIhP,EAAEkO,EAAEqpB,QAAQxgC,EAAE0vC,KAAIoa,EAAEozG,GAAGj0J,GAAsL,OAAnLuL,EAAEgN,GAAGhN,GAAG,OAAO2C,EAAElV,QAAQkV,EAAElV,QAAQuS,EAAE2C,EAAEgwJ,eAAe3yJ,GAAE2C,EAAEglJ,GAAGn8J,EAAE8pD,IAAKjwC,QAAQ,CAAC23H,QAAQ3uH,GAAuB,QAApB5K,OAAE,IAASA,EAAE,KAAKA,KAAad,EAAEotC,SAAStsC,GAAe,QAAZ4K,EAAEw5I,GAAGpzJ,EAAEkO,EAAE2yC,MAAcqzG,GAAGt6I,EAAE5Z,EAAE6gD,EAAE9pD,GAAGs8J,GAAGz5I,EAAE5Z,EAAE6gD,IAAWA,CAAC,CAC3b,SAAS8lH,GAAG/sJ,GAAe,OAAZA,EAAEA,EAAE2d,SAAcyhH,OAAyBp/H,EAAEo/H,MAAM5yH,IAAoDxM,EAAEo/H,MAAM1B,WAAhF,IAA0F,CAAC,SAASsvB,GAAGhtJ,EAAE1L,GAAqB,GAAG,QAArB0L,EAAEA,EAAEg/H,gBAA2B,OAAOh/H,EAAEi/H,WAAW,CAAC,IAAIttI,EAAEqO,EAAE62I,UAAU72I,EAAE62I,UAAU,IAAIllJ,GAAGA,EAAE2C,EAAE3C,EAAE2C,CAAC,CAAC,CAAC,SAAS24J,GAAGjtJ,EAAE1L,GAAG04J,GAAGhtJ,EAAE1L,IAAI0L,EAAEA,EAAE6+H,YAAYmuB,GAAGhtJ,EAAE1L,EAAE,CAnB7Sw0J,GAAG,SAAS9oJ,EAAE1L,EAAE3C,GAAG,GAAG,OAAOqO,EAAE,GAAGA,EAAEk3I,gBAAgB5iJ,EAAEoiJ,cAActC,GAAGz2H,QAAQ06H,IAAG,MAAO,CAAC,GAAG,KAAKr4I,EAAEo4I,MAAMzmJ,IAAI,KAAa,IAAR2C,EAAE+sC,OAAW,OAAOg3G,IAAG,EAzE1I,SAAYr4I,EAAE1L,EAAE3C,GAAG,OAAO2C,EAAEkY,KAAK,KAAK,EAAE63I,GAAG/vJ,GAAG8iJ,KAAK,MAAM,KAAK,EAAEsF,GAAGpoJ,GAAG,MAAM,KAAK,EAAEmgJ,GAAGngJ,EAAEhT,OAAOwzJ,GAAGxgJ,GAAG,MAAM,KAAK,EAAEkoJ,GAAGloJ,EAAEA,EAAEopI,UAAUqG,eAAe,MAAM,KAAK,GAAG,IAAI3uI,EAAEd,EAAEhT,KAAK6S,SAAS/N,EAAEkO,EAAE4iJ,cAAcl6J,MAAMouC,GAAEosH,GAAGpiJ,EAAE0iJ,eAAe1iJ,EAAE0iJ,cAAc1xJ,EAAE,MAAM,KAAK,GAAqB,GAAG,QAArBgP,EAAEd,EAAE0qI,eAA2B,OAAG,OAAO5pI,EAAE6pI,YAAkB7zG,GAAEuB,GAAY,EAAVA,GAAEhP,SAAWrpB,EAAE+sC,OAAO,IAAI,MAAQ,KAAK1vC,EAAE2C,EAAE8qI,MAAM4Y,YAAmB8M,GAAG9kJ,EAAE1L,EAAE3C,IAAGy5B,GAAEuB,GAAY,EAAVA,GAAEhP,SAA8B,QAAnB3d,EAAEmjJ,GAAGnjJ,EAAE1L,EAAE3C,IAAmBqO,EAAEq/H,QAAQ,MAAKj0G,GAAEuB,GAAY,EAAVA,GAAEhP,SAAW,MAAM,KAAK,GAC7d,GADgevoB,EAAE,KAAKzD,EACrf2C,EAAE0jJ,YAAe,KAAa,IAARh4I,EAAEqhC,OAAW,CAAC,GAAGjsC,EAAE,OAAO4wJ,GAAGhmJ,EAAE1L,EAAE3C,GAAG2C,EAAE+sC,OAAO,GAAG,CAA6F,GAA1E,QAAlBj7C,EAAEkO,EAAE0qI,iBAAyB54I,EAAEy/J,UAAU,KAAKz/J,EAAE45B,KAAK,KAAK55B,EAAE+4J,WAAW,MAAM/zH,GAAEuB,GAAEA,GAAEhP,SAAYvoB,EAAE,MAAW,OAAO,KAAK,KAAK,GAAG,KAAK,GAAG,OAAOd,EAAE8jJ,MAAM,EAAEoL,GAAGxjJ,EAAE1L,EAAE3C,GAAG,OAAOwxJ,GAAGnjJ,EAAE1L,EAAE3C,EAAE,CAwE7Gu7J,CAAGltJ,EAAE1L,EAAE3C,GAAG0mJ,GAAG,KAAa,OAARr4I,EAAEqhC,MAAmB,MAAMg3G,IAAG,EAAGrrH,IAAG,KAAa,QAAR14B,EAAE+sC,QAAgB20G,GAAG1hJ,EAAEmhJ,GAAGnhJ,EAAEtE,OAAiB,OAAVsE,EAAE8jJ,MAAM,EAAS9jJ,EAAEkY,KAAK,KAAK,EAAE,IAAIpX,EAAEd,EAAEhT,KAAK0iK,GAAGhkJ,EAAE1L,GAAG0L,EAAE1L,EAAEoiJ,aAAa,IAAItwJ,EAAEkuJ,GAAGhgJ,EAAE25B,GAAEtQ,SAASs6H,GAAG3jJ,EAAE3C,GAAGvL,EAAEs3J,GAAG,KAAKppJ,EAAEc,EAAE4K,EAAE5Z,EAAEuL,GAAG,IAAIxU,EAAE4gK,KACvI,OAD4IzpJ,EAAE+sC,OAAO,EAAE,kBAAkBj7C,GAAG,OAAOA,GAAG,oBAAoBA,EAAEkf,aAAQ,IAASlf,EAAE+gD,UAAU7yC,EAAEkY,IAAI,EAAElY,EAAE0qI,cAAc,KAAK1qI,EAAEykJ,YAC1e,KAAKtE,GAAGr/I,IAAIjY,GAAE,EAAG23J,GAAGxgJ,IAAInX,GAAE,EAAGmX,EAAE0qI,cAAc,OAAO54I,EAAEgE,YAAO,IAAShE,EAAEgE,MAAMhE,EAAEgE,MAAM,KAAK0uJ,GAAGxkJ,GAAGlO,EAAEy0J,QAAQZ,GAAG3lJ,EAAEopI,UAAUt3I,EAAEA,EAAE+zJ,gBAAgB7lJ,EAAE2mJ,GAAG3mJ,EAAEc,EAAE4K,EAAErO,GAAG2C,EAAE8vJ,GAAG,KAAK9vJ,EAAEc,GAAE,EAAGjY,EAAEwU,KAAK2C,EAAEkY,IAAI,EAAEwgB,IAAG7vC,GAAG84J,GAAG3hJ,GAAG2uJ,GAAG,KAAK3uJ,EAAElO,EAAEuL,GAAG2C,EAAEA,EAAE8qI,OAAc9qI,EAAE,KAAK,GAAGc,EAAEd,EAAEs6H,YAAY5uH,EAAE,CAAqF,OAApFgkJ,GAAGhkJ,EAAE1L,GAAG0L,EAAE1L,EAAEoiJ,aAAuBthJ,GAAVhP,EAAEgP,EAAE+gI,OAAU/gI,EAAE8gI,UAAU5hI,EAAEhT,KAAK8T,EAAEhP,EAAEkO,EAAEkY,IAQtU,SAAYxM,GAAG,GAAG,oBAAoBA,EAAE,OAAOqjJ,GAAGrjJ,GAAG,EAAE,EAAE,QAAG,IAASA,GAAG,OAAOA,EAAE,CAAc,IAAbA,EAAEA,EAAEmnC,YAAgBiuF,EAAG,OAAO,GAAG,GAAGp1H,IAAIu1H,EAAG,OAAO,EAAE,CAAC,OAAO,CAAC,CAR2L43B,CAAG/3J,GAAG4K,EAAEu3I,GAAGniJ,EAAE4K,GAAU5Z,GAAG,KAAK,EAAEkO,EAAEivJ,GAAG,KAAKjvJ,EAAEc,EAAE4K,EAAErO,GAAG,MAAMqO,EAAE,KAAK,EAAE1L,EAAEyvJ,GAAG,KAAKzvJ,EAAEc,EAAE4K,EAAErO,GAAG,MAAMqO,EAAE,KAAK,GAAG1L,EAAE4uJ,GAAG,KAAK5uJ,EAAEc,EAAE4K,EAAErO,GAAG,MAAMqO,EAAE,KAAK,GAAG1L,EAAE8uJ,GAAG,KAAK9uJ,EAAEc,EAAEmiJ,GAAGniJ,EAAE9T,KAAK0e,GAAGrO,GAAG,MAAMqO,EAAE,MAAMlb,MAAMhF,EAAE,IACvgBsV,EAAE,IAAK,CAAC,OAAOd,EAAE,KAAK,EAAE,OAAOc,EAAEd,EAAEhT,KAAK8E,EAAEkO,EAAEoiJ,aAA2C6M,GAAGvjJ,EAAE1L,EAAEc,EAArChP,EAAEkO,EAAEs6H,cAAcx5H,EAAEhP,EAAEmxJ,GAAGniJ,EAAEhP,GAAcuL,GAAG,KAAK,EAAE,OAAOyD,EAAEd,EAAEhT,KAAK8E,EAAEkO,EAAEoiJ,aAA2CqN,GAAG/jJ,EAAE1L,EAAEc,EAArChP,EAAEkO,EAAEs6H,cAAcx5H,EAAEhP,EAAEmxJ,GAAGniJ,EAAEhP,GAAcuL,GAAG,KAAK,EAAEqO,EAAE,CAAO,GAANqkJ,GAAG/vJ,GAAM,OAAO0L,EAAE,MAAMlb,MAAMhF,EAAE,MAAMsV,EAAEd,EAAEoiJ,aAA+BtwJ,GAAlBjJ,EAAEmX,EAAE0qI,eAAkBrQ,QAAQ0qB,GAAGr5I,EAAE1L,GAAGqlJ,GAAGrlJ,EAAEc,EAAE,KAAKzD,GAAG,IAAIs1C,EAAE3yC,EAAE0qI,cAA0B,GAAZ5pI,EAAE6xC,EAAE0nF,QAAWxxI,EAAE2mJ,aAAY,CAAC,GAAG3mJ,EAAE,CAACwxI,QAAQv5H,EAAE0uI,cAAa,EAAGz6F,MAAMpC,EAAEoC,MAAMujH,0BAA0B3lH,EAAE2lH,0BAA0BjJ,YAAY18G,EAAE08G,aAAarvJ,EAAEykJ,YAAYC,UAChf77J,EAAEmX,EAAE0qI,cAAc7hJ,EAAU,IAARmX,EAAE+sC,MAAU,CAAuB/sC,EAAEiwJ,GAAGvkJ,EAAE1L,EAAEc,EAAEzD,EAAjCvL,EAAE47J,GAAGl9J,MAAMhF,EAAE,MAAMwU,IAAmB,MAAM0L,CAAC,CAAM,GAAG5K,IAAIhP,EAAE,CAAuBkO,EAAEiwJ,GAAGvkJ,EAAE1L,EAAEc,EAAEzD,EAAjCvL,EAAE47J,GAAGl9J,MAAMhF,EAAE,MAAMwU,IAAmB,MAAM0L,CAAC,CAAM,IAAIo2I,GAAG5C,GAAGl/I,EAAEopI,UAAUqG,cAAcnL,YAAYud,GAAG7hJ,EAAE04B,IAAE,EAAGqpH,GAAG,KAAK1kJ,EAAEuqJ,GAAG5nJ,EAAE,KAAKc,EAAEzD,GAAG2C,EAAE8qI,MAAMztI,EAAEA,GAAGA,EAAE0vC,OAAe,EAAT1vC,EAAE0vC,MAAS,KAAK1vC,EAAEA,EAAE0tI,OAAQ,KAAI,CAAM,GAAL+X,KAAQhiJ,IAAIhP,EAAE,CAACkO,EAAE6uJ,GAAGnjJ,EAAE1L,EAAE3C,GAAG,MAAMqO,CAAC,CAACijJ,GAAGjjJ,EAAE1L,EAAEc,EAAEzD,EAAE,CAAC2C,EAAEA,EAAE8qI,KAAK,CAAC,OAAO9qI,EAAE,KAAK,EAAE,OAAOooJ,GAAGpoJ,GAAG,OAAO0L,GAAG+2I,GAAGziJ,GAAGc,EAAEd,EAAEhT,KAAK8E,EAAEkO,EAAEoiJ,aAAav5J,EAAE,OAAO6iB,EAAEA,EAAEk3I,cAAc,KAAKjwG,EAAE7gD,EAAEqf,SAASstI,GAAG39I,EAAEhP,GAAG6gD,EAAE,KAAK,OAAO9pD,GAAG41J,GAAG39I,EAAEjY,KAAKmX,EAAE+sC,OAAO,IACnfyiH,GAAG9jJ,EAAE1L,GAAG2uJ,GAAGjjJ,EAAE1L,EAAE2yC,EAAEt1C,GAAG2C,EAAE8qI,MAAM,KAAK,EAAE,OAAO,OAAOp/H,GAAG+2I,GAAGziJ,GAAG,KAAK,KAAK,GAAG,OAAOwwJ,GAAG9kJ,EAAE1L,EAAE3C,GAAG,KAAK,EAAE,OAAO6qJ,GAAGloJ,EAAEA,EAAEopI,UAAUqG,eAAe3uI,EAAEd,EAAEoiJ,aAAa,OAAO12I,EAAE1L,EAAE8qI,MAAM6c,GAAG3nJ,EAAE,KAAKc,EAAEzD,GAAGsxJ,GAAGjjJ,EAAE1L,EAAEc,EAAEzD,GAAG2C,EAAE8qI,MAAM,KAAK,GAAG,OAAOhqI,EAAEd,EAAEhT,KAAK8E,EAAEkO,EAAEoiJ,aAA2CwM,GAAGljJ,EAAE1L,EAAEc,EAArChP,EAAEkO,EAAEs6H,cAAcx5H,EAAEhP,EAAEmxJ,GAAGniJ,EAAEhP,GAAcuL,GAAG,KAAK,EAAE,OAAOsxJ,GAAGjjJ,EAAE1L,EAAEA,EAAEoiJ,aAAa/kJ,GAAG2C,EAAE8qI,MAAM,KAAK,EAAmD,KAAK,GAAG,OAAO6jB,GAAGjjJ,EAAE1L,EAAEA,EAAEoiJ,aAAajxI,SAAS9T,GAAG2C,EAAE8qI,MAAM,KAAK,GAAGp/H,EAAE,CACxZ,GADyZ5K,EAAEd,EAAEhT,KAAK6S,SAAS/N,EAAEkO,EAAEoiJ,aAAav5J,EAAEmX,EAAE4iJ,cAClfjwG,EAAE7gD,EAAEpJ,MAAMouC,GAAEosH,GAAGpiJ,EAAE0iJ,eAAe1iJ,EAAE0iJ,cAAc7wG,EAAK,OAAO9pD,EAAE,GAAGqwJ,GAAGrwJ,EAAEH,MAAMiqD,IAAI,GAAG9pD,EAAEsoB,WAAWrf,EAAEqf,WAAW2uI,GAAGz2H,QAAQ,CAACrpB,EAAE6uJ,GAAGnjJ,EAAE1L,EAAE3C,GAAG,MAAMqO,CAAC,OAAO,IAAc,QAAV7iB,EAAEmX,EAAE8qI,SAAiBjiJ,EAAE2hJ,OAAOxqI,GAAG,OAAOnX,GAAG,CAAC,IAAI6wC,EAAE7wC,EAAE+6J,aAAa,GAAG,OAAOlqH,EAAE,CAACiZ,EAAE9pD,EAAEiiJ,MAAM,IAAI,IAAI9gJ,EAAE0vC,EAAEmqH,aAAa,OAAO75J,GAAG,CAAC,GAAGA,EAAEc,UAAUgW,EAAE,CAAC,GAAG,IAAIjY,EAAEqvB,IAAI,EAACluB,EAAEg7J,IAAI,EAAE3nJ,GAAGA,IAAK6a,IAAI,EAAE,IAAI06B,EAAE/pD,EAAE47J,YAAY,GAAG,OAAO7xG,EAAE,CAAY,IAAIljC,GAAfkjC,EAAEA,EAAE1yB,QAAe2kI,QAAQ,OAAOn1I,EAAE1lB,EAAE2R,KAAK3R,GAAGA,EAAE2R,KAAK+T,EAAE/T,KAAK+T,EAAE/T,KAAK3R,GAAG4oD,EAAEiyG,QAAQ76J,CAAC,CAAC,CAACnB,EAAEi7J,OAAOzmJ,EAAgB,QAAdrT,EAAEnB,EAAE0hJ,aAAqBvgJ,EAAE85J,OAAOzmJ,GAAGomJ,GAAG56J,EAAE2hJ,OAClfntI,EAAE2C,GAAG05B,EAAEoqH,OAAOzmJ,EAAE,KAAK,CAACrT,EAAEA,EAAE2R,IAAI,CAAC,MAAM,GAAG,KAAK9S,EAAEqvB,IAAIy6B,EAAE9pD,EAAEmE,OAAOgT,EAAEhT,KAAK,KAAKnE,EAAEiiJ,WAAW,GAAG,KAAKjiJ,EAAEqvB,IAAI,CAAY,GAAG,QAAdy6B,EAAE9pD,EAAE2hJ,QAAmB,MAAMh6I,MAAMhF,EAAE,MAAMmnD,EAAEmxG,OAAOzmJ,EAAgB,QAAdq8B,EAAEiZ,EAAE43F,aAAqB7wG,EAAEoqH,OAAOzmJ,GAAGomJ,GAAG9wG,EAAEt1C,EAAE2C,GAAG2yC,EAAE9pD,EAAEkiJ,OAAO,MAAMp4F,EAAE9pD,EAAEiiJ,MAAM,GAAG,OAAOn4F,EAAEA,EAAE63F,OAAO3hJ,OAAO,IAAI8pD,EAAE9pD,EAAE,OAAO8pD,GAAG,CAAC,GAAGA,IAAI3yC,EAAE,CAAC2yC,EAAE,KAAK,KAAK,CAAa,GAAG,QAAf9pD,EAAE8pD,EAAEo4F,SAAoB,CAACliJ,EAAE2hJ,OAAO73F,EAAE63F,OAAO73F,EAAE9pD,EAAE,KAAK,CAAC8pD,EAAEA,EAAE63F,MAAM,CAAC3hJ,EAAE8pD,CAAC,CAACg8G,GAAGjjJ,EAAE1L,EAAElO,EAAEqf,SAAS9T,GAAG2C,EAAEA,EAAE8qI,KAAK,CAAC,OAAO9qI,EAAE,KAAK,EAAE,OAAOlO,EAAEkO,EAAEhT,KAAK8T,EAAEd,EAAEoiJ,aAAajxI,SAASwyI,GAAG3jJ,EAAE3C,GAAWyD,EAAEA,EAAVhP,EAAEkyJ,GAAGlyJ,IAAUkO,EAAE+sC,OAAO,EAAE4hH,GAAGjjJ,EAAE1L,EAAEc,EAAEzD,GACpf2C,EAAE8qI,MAAM,KAAK,GAAG,OAAgBh5I,EAAEmxJ,GAAXniJ,EAAEd,EAAEhT,KAAYgT,EAAEoiJ,cAA6B0M,GAAGpjJ,EAAE1L,EAAEc,EAAtBhP,EAAEmxJ,GAAGniJ,EAAE9T,KAAK8E,GAAcuL,GAAG,KAAK,GAAG,OAAO2xJ,GAAGtjJ,EAAE1L,EAAEA,EAAEhT,KAAKgT,EAAEoiJ,aAAa/kJ,GAAG,KAAK,GAAG,OAAOyD,EAAEd,EAAEhT,KAAK8E,EAAEkO,EAAEoiJ,aAAatwJ,EAAEkO,EAAEs6H,cAAcx5H,EAAEhP,EAAEmxJ,GAAGniJ,EAAEhP,GAAG49J,GAAGhkJ,EAAE1L,GAAGA,EAAEkY,IAAI,EAAEioI,GAAGr/I,IAAI4K,GAAE,EAAG80I,GAAGxgJ,IAAI0L,GAAE,EAAGi4I,GAAG3jJ,EAAE3C,GAAGipJ,GAAGtmJ,EAAEc,EAAEhP,GAAG60J,GAAG3mJ,EAAEc,EAAEhP,EAAEuL,GAAGyyJ,GAAG,KAAK9vJ,EAAEc,GAAE,EAAG4K,EAAErO,GAAG,KAAK,GAAG,OAAOq0J,GAAGhmJ,EAAE1L,EAAE3C,GAAG,KAAK,GAAG,OAAO6xJ,GAAGxjJ,EAAE1L,EAAE3C,GAAG,MAAM7M,MAAMhF,EAAE,IAAIwU,EAAEkY,KAAM,EAYxC,IAAI4gJ,GAAG,oBAAoBvrH,YAAYA,YAAY,SAAS7hC,GAAGnf,QAAQ0D,MAAMyb,EAAE,EAAE,SAASqtJ,GAAGrtJ,GAAGve,KAAK6rK,cAActtJ,CAAC,CACjI,SAASutJ,GAAGvtJ,GAAGve,KAAK6rK,cAActtJ,CAAC,CAC5J,SAASwtJ,GAAGxtJ,GAAG,SAASA,GAAG,IAAIA,EAAEi5H,UAAU,IAAIj5H,EAAEi5H,UAAU,KAAKj5H,EAAEi5H,SAAS,CAAC,SAASzkI,GAAGwL,GAAG,SAASA,GAAG,IAAIA,EAAEi5H,UAAU,IAAIj5H,EAAEi5H,UAAU,KAAKj5H,EAAEi5H,WAAW,IAAIj5H,EAAEi5H,UAAU,iCAAiCj5H,EAAEk5H,WAAW,CAAC,SAASu0B,KAAK,CAExa,SAASC,GAAG1tJ,EAAE1L,EAAE3C,EAAEyD,EAAEhP,GAAG,IAAIjJ,EAAEwU,EAAEg2J,oBAAoB,GAAGxqK,EAAE,CAAC,IAAI8pD,EAAE9pD,EAAE,GAAG,oBAAoBiJ,EAAE,CAAC,IAAI4nC,EAAE5nC,EAAEA,EAAE,WAAW,IAAI4Z,EAAE+sJ,GAAG9lH,GAAGjZ,EAAE7xC,KAAK6jB,EAAE,CAAC,CAAC8sJ,GAAGx4J,EAAE2yC,EAAEjnC,EAAE5Z,EAAE,MAAM6gD,EADxJ,SAAYjnC,EAAE1L,EAAE3C,EAAEyD,EAAEhP,GAAG,GAAGA,EAAE,CAAC,GAAG,oBAAoBgP,EAAE,CAAC,IAAIjY,EAAEiY,EAAEA,EAAE,WAAW,IAAI4K,EAAE+sJ,GAAG9lH,GAAG9pD,EAAEhB,KAAK6jB,EAAE,CAAC,CAAC,IAAIinC,EAAE4lH,GAAGv4J,EAAEc,EAAE4K,EAAE,EAAE,MAAK,EAAG,EAAG,GAAGytJ,IAAmF,OAA/EztJ,EAAE2nJ,oBAAoB1gH,EAAEjnC,EAAE8xI,IAAI7qG,EAAEtpB,QAAQg0H,GAAG,IAAI3xI,EAAEi5H,SAASj5H,EAAEd,WAAWc,GAAGwrJ,KAAYvkH,CAAC,CAAC,KAAK7gD,EAAE4Z,EAAEg5H,WAAWh5H,EAAEgjB,YAAY58B,GAAG,GAAG,oBAAoBgP,EAAE,CAAC,IAAI44B,EAAE54B,EAAEA,EAAE,WAAW,IAAI4K,EAAE+sJ,GAAGzuK,GAAG0vC,EAAE7xC,KAAK6jB,EAAE,CAAC,CAAC,IAAI1hB,EAAEquK,GAAG3sJ,EAAE,GAAE,EAAG,KAAK,GAAK,EAAG,EAAG,GAAGytJ,IAA0G,OAAtGztJ,EAAE2nJ,oBAAoBrpK,EAAE0hB,EAAE8xI,IAAIxzJ,EAAEq/B,QAAQg0H,GAAG,IAAI3xI,EAAEi5H,SAASj5H,EAAEd,WAAWc,GAAGwrJ,IAAG,WAAWsB,GAAGx4J,EAAEhW,EAAEqT,EAAEyD,EAAE,IAAU9W,CAAC,CACpUqvK,CAAGh8J,EAAE2C,EAAE0L,EAAE5Z,EAAEgP,GAAG,OAAO23J,GAAG9lH,EAAE,CAHpLsmH,GAAGtxK,UAAUqpB,OAAO+nJ,GAAGpxK,UAAUqpB,OAAO,SAAStF,GAAG,IAAI1L,EAAE7S,KAAK6rK,cAAc,GAAG,OAAOh5J,EAAE,MAAMxP,MAAMhF,EAAE,MAAMgtK,GAAG9sJ,EAAE1L,EAAE,KAAK,KAAK,EAAEi5J,GAAGtxK,UAAUs1I,QAAQ87B,GAAGpxK,UAAUs1I,QAAQ,WAAW,IAAIvxH,EAAEve,KAAK6rK,cAAc,GAAG,OAAOttJ,EAAE,CAACve,KAAK6rK,cAAc,KAAK,IAAIh5J,EAAE0L,EAAE+jI,cAAcynB,IAAG,WAAWsB,GAAG,KAAK9sJ,EAAE,KAAK,KAAK,IAAG1L,EAAEw9I,IAAI,IAAI,CAAC,EACzTyb,GAAGtxK,UAAU2xK,2BAA2B,SAAS5tJ,GAAG,GAAGA,EAAE,CAAC,IAAI1L,EAAEkuI,KAAKxiI,EAAE,CAACujI,UAAU,KAAKnjJ,OAAO4f,EAAE6jI,SAASvvI,GAAG,IAAI,IAAI3C,EAAE,EAAEA,EAAEsxI,GAAGznJ,QAAQ,IAAI8Y,GAAGA,EAAE2uI,GAAGtxI,GAAGkyI,SAASlyI,KAAKsxI,GAAGlgG,OAAOpxC,EAAE,EAAEqO,GAAG,IAAIrO,GAAGgyI,GAAG3jI,EAAE,CAAC,EAEXqiI,GAAG,SAASriI,GAAG,OAAOA,EAAEwM,KAAK,KAAK,EAAE,IAAIlY,EAAE0L,EAAE09H,UAAU,GAAGppI,EAAEqpB,QAAQqhH,cAAc8E,aAAa,CAAC,IAAInyI,EAAE2vI,GAAGhtI,EAAEktI,cAAc,IAAI7vI,IAAIwwI,GAAG7tI,EAAI,EAAF3C,GAAKs4J,GAAG31J,EAAEy5B,MAAK,KAAO,EAAFG,MAAOu4H,GAAG14H,KAAI,IAAIsnH,MAAM,CAAC,MAAM,KAAK,GAAGmW,IAAG,WAAW,IAAIl3J,EAAEskJ,GAAG54I,EAAE,GAAG,GAAG,OAAO1L,EAAE,CAAC,IAAI3C,EAAEk7B,KAAIytH,GAAGhmJ,EAAE0L,EAAE,EAAErO,EAAE,CAAC,IAAGs7J,GAAGjtJ,EAAE,GAAG,EAC/bsiI,GAAG,SAAStiI,GAAG,GAAG,KAAKA,EAAEwM,IAAI,CAAC,IAAIlY,EAAEskJ,GAAG54I,EAAE,WAAW,GAAG,OAAO1L,EAAagmJ,GAAGhmJ,EAAE0L,EAAE,UAAX6sB,MAAwBogI,GAAGjtJ,EAAE,UAAU,CAAC,EAAEuiI,GAAG,SAASviI,GAAG,GAAG,KAAKA,EAAEwM,IAAI,CAAC,IAAIlY,EAAE+lJ,GAAGr6I,GAAGrO,EAAEinJ,GAAG54I,EAAE1L,GAAG,GAAG,OAAO3C,EAAa2oJ,GAAG3oJ,EAAEqO,EAAE1L,EAAXu4B,MAAgBogI,GAAGjtJ,EAAE1L,EAAE,CAAC,EAAEkuI,GAAG,WAAW,OAAOxxH,EAAC,EAAEyxH,GAAG,SAASziI,EAAE1L,GAAG,IAAI3C,EAAEqf,GAAE,IAAI,OAAOA,GAAEhR,EAAE1L,GAAG,CAAC,QAAQ0c,GAAErf,CAAC,CAAC,EAClS0rI,GAAG,SAASr9H,EAAE1L,EAAE3C,GAAG,OAAO2C,GAAG,IAAK,QAAyB,GAAjBojI,EAAG13H,EAAErO,GAAG2C,EAAE3C,EAAEzR,KAAQ,UAAUyR,EAAErQ,MAAM,MAAMgT,EAAE,CAAC,IAAI3C,EAAEqO,EAAErO,EAAEuN,YAAYvN,EAAEA,EAAEuN,WAAsF,IAA3EvN,EAAEA,EAAEsN,iBAAiB,cAAc7X,KAAKC,UAAU,GAAGiN,GAAG,mBAAuBA,EAAE,EAAEA,EAAE3C,EAAEnW,OAAO8Y,IAAI,CAAC,IAAIc,EAAEzD,EAAE2C,GAAG,GAAGc,IAAI4K,GAAG5K,EAAEy4J,OAAO7tJ,EAAE6tJ,KAAK,CAAC,IAAIznK,EAAEu3I,GAAGvoI,GAAG,IAAIhP,EAAE,MAAMtB,MAAMhF,EAAE,KAAKg3I,EAAG1hI,GAAGsiI,EAAGtiI,EAAEhP,EAAE,CAAC,CAAC,CAAC,MAAM,IAAK,WAAWiyI,GAAGr4H,EAAErO,GAAG,MAAM,IAAK,SAAmB,OAAV2C,EAAE3C,EAAE3U,QAAe86I,GAAG93H,IAAIrO,EAAE00J,SAAS/xJ,GAAE,GAAI,EAAEwpI,GAAGytB,GAAGxtB,GAAGytB,GACpa,IAAIz+B,GAAG,CAAC+gC,uBAAsB,EAAGlkH,OAAO,CAAC6zF,GAAGiP,GAAG/O,GAAGC,GAAGC,GAAG0tB,KAAKwC,GAAG,CAACC,wBAAwBpqB,GAAGqqB,WAAW,EAAE34J,QAAQ,SAAS44J,oBAAoB,aAC1IC,GAAG,CAACF,WAAWF,GAAGE,WAAW34J,QAAQy4J,GAAGz4J,QAAQ44J,oBAAoBH,GAAGG,oBAAoBE,eAAeL,GAAGK,eAAeC,kBAAkB,KAAKC,4BAA4B,KAAKC,4BAA4B,KAAKC,cAAc,KAAKC,wBAAwB,KAAKC,wBAAwB,KAAKxpH,gBAAgB,KAAKypH,mBAAmB,KAAKC,eAAe,KAAKC,qBAAqBl6B,EAAGuoB,uBAAuB4R,wBAAwB,SAAS9uJ,GAAW,OAAO,QAAfA,EAAEm/H,GAAGn/H,IAAmB,KAAKA,EAAE09H,SAAS,EAAEswB,wBAAwBD,GAAGC,yBARjN,WAAc,OAAO,IAAI,EASpUe,4BAA4B,KAAKC,gBAAgB,KAAKC,aAAa,KAAKC,kBAAkB,KAAKC,gBAAgB,KAAKC,kBAAkB,kCAAkC,GAAG,qBAAqBC,+BAA+B,CAAC,IAAIC,GAAGD,+BAA+B,IAAIC,GAAGC,YAAYD,GAAGE,cAAc,IAAI3uB,GAAGyuB,GAAGG,OAAOtB,IAAIrtB,GAAGwuB,EAAE,CAAC,MAAMtvJ,IAAG,CAAC,CAACllB,EAAQ85I,mDAAmD7H,GAC9YjyI,EAAQ40K,aAAa,SAAS1vJ,EAAE1L,GAAG,IAAI3C,EAAE,EAAEtR,UAAU7E,aAAQ,IAAS6E,UAAU,GAAGA,UAAU,GAAG,KAAK,IAAImtK,GAAGl5J,GAAG,MAAMxP,MAAMhF,EAAE,MAAM,OAbuH,SAAYkgB,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAE,EAAE/U,UAAU7E,aAAQ,IAAS6E,UAAU,GAAGA,UAAU,GAAG,KAAK,MAAM,CAAC8mD,SAAS2tF,EAAGx1I,IAAI,MAAM8V,EAAE,KAAK,GAAGA,EAAEqQ,SAASzF,EAAE+jI,cAAczvI,EAAEwnJ,eAAenqJ,EAAE,CAa1Rg+J,CAAG3vJ,EAAE1L,EAAE,KAAK3C,EAAE,EAAE7W,EAAQs1I,WAAW,SAASpwH,EAAE1L,GAAG,IAAIk5J,GAAGxtJ,GAAG,MAAMlb,MAAMhF,EAAE,MAAM,IAAI6R,GAAE,EAAGyD,EAAE,GAAGhP,EAAEgnK,GAA4P,OAAzP,OAAO94J,QAAG,IAASA,KAAI,IAAKA,EAAEs7J,sBAAsBj+J,GAAE,QAAI,IAAS2C,EAAEytJ,mBAAmB3sJ,EAAEd,EAAEytJ,uBAAkB,IAASztJ,EAAE23J,qBAAqB7lK,EAAEkO,EAAE23J,qBAAqB33J,EAAEq4J,GAAG3sJ,EAAE,GAAE,EAAG,KAAK,EAAKrO,EAAE,EAAGyD,EAAEhP,GAAG4Z,EAAE8xI,IAAIx9I,EAAEqpB,QAAQg0H,GAAG,IAAI3xI,EAAEi5H,SAASj5H,EAAEd,WAAWc,GAAU,IAAIqtJ,GAAG/4J,EAAE,EACrfxZ,EAAQ+0K,YAAY,SAAS7vJ,GAAG,GAAG,MAAMA,EAAE,OAAO,KAAK,GAAG,IAAIA,EAAEi5H,SAAS,OAAOj5H,EAAE,IAAI1L,EAAE0L,EAAEm6I,gBAAgB,QAAG,IAAS7lJ,EAAE,CAAC,GAAG,oBAAoB0L,EAAEsF,OAAO,MAAMxgB,MAAMhF,EAAE,MAAiC,MAA3BkgB,EAAEhkB,OAAO8wB,KAAK9M,GAAG9gB,KAAK,KAAW4F,MAAMhF,EAAE,IAAIkgB,GAAI,CAAqC,OAA5BA,EAAE,QAAVA,EAAEm/H,GAAG7qI,IAAc,KAAK0L,EAAE09H,SAAkB,EAAE5iJ,EAAQg1K,UAAU,SAAS9vJ,GAAG,OAAOwrJ,GAAGxrJ,EAAE,EAAEllB,EAAQi1K,QAAQ,SAAS/vJ,EAAE1L,EAAE3C,GAAG,IAAI6C,GAAGF,GAAG,MAAMxP,MAAMhF,EAAE,MAAM,OAAO4tK,GAAG,KAAK1tJ,EAAE1L,GAAE,EAAG3C,EAAE,EAC/Y7W,EAAQk1K,YAAY,SAAShwJ,EAAE1L,EAAE3C,GAAG,IAAI67J,GAAGxtJ,GAAG,MAAMlb,MAAMhF,EAAE,MAAM,IAAIsV,EAAE,MAAMzD,GAAGA,EAAEs+J,iBAAiB,KAAK7pK,GAAE,EAAGjJ,EAAE,GAAG8pD,EAAEmmH,GAAyO,GAAtO,OAAOz7J,QAAG,IAASA,KAAI,IAAKA,EAAEi+J,sBAAsBxpK,GAAE,QAAI,IAASuL,EAAEowJ,mBAAmB5kK,EAAEwU,EAAEowJ,uBAAkB,IAASpwJ,EAAEs6J,qBAAqBhlH,EAAEt1C,EAAEs6J,qBAAqB33J,EAAEu4J,GAAGv4J,EAAE,KAAK0L,EAAE,EAAE,MAAMrO,EAAEA,EAAE,KAAKvL,EAAE,EAAGjJ,EAAE8pD,GAAGjnC,EAAE8xI,IAAIx9I,EAAEqpB,QAAQg0H,GAAG3xI,GAAM5K,EAAE,IAAI4K,EAAE,EAAEA,EAAE5K,EAAE5Z,OAAOwkB,IAA2B5Z,GAAhBA,GAAPuL,EAAEyD,EAAE4K,IAAOkwJ,aAAgBv+J,EAAEw+J,SAAS,MAAM77J,EAAEo4J,gCAAgCp4J,EAAEo4J,gCAAgC,CAAC/6J,EAAEvL,GAAGkO,EAAEo4J,gCAAgC/vK,KAAKgV,EACvhBvL,GAAG,OAAO,IAAImnK,GAAGj5J,EAAE,EAAExZ,EAAQwqB,OAAO,SAAStF,EAAE1L,EAAE3C,GAAG,IAAI6C,GAAGF,GAAG,MAAMxP,MAAMhF,EAAE,MAAM,OAAO4tK,GAAG,KAAK1tJ,EAAE1L,GAAE,EAAG3C,EAAE,EAAE7W,EAAQs1K,uBAAuB,SAASpwJ,GAAG,IAAIxL,GAAGwL,GAAG,MAAMlb,MAAMhF,EAAE,KAAK,QAAOkgB,EAAE2nJ,sBAAqB6D,IAAG,WAAWkC,GAAG,KAAK,KAAK1tJ,GAAE,GAAG,WAAWA,EAAE2nJ,oBAAoB,KAAK3nJ,EAAE8xI,IAAI,IAAI,GAAE,KAAG,EAAM,EAAEh3J,EAAQu1K,wBAAwB9E,GAC/UzwK,EAAQw1K,oCAAoC,SAAStwJ,EAAE1L,EAAE3C,EAAEyD,GAAG,IAAIZ,GAAG7C,GAAG,MAAM7M,MAAMhF,EAAE,MAAM,GAAG,MAAMkgB,QAAG,IAASA,EAAEm6I,gBAAgB,MAAMr1J,MAAMhF,EAAE,KAAK,OAAO4tK,GAAG1tJ,EAAE1L,EAAE3C,GAAE,EAAGyD,EAAE,EAAEta,EAAQwa,QAAQ,oEChU7L,IAAI0O,EAAIE,EAAQ,OAEdppB,EAAQs1I,WAAapsH,EAAEosH,WACvBt1I,EAAQk1K,YAAchsJ,EAAEgsJ,iDCH1B,SAASO,IAEP,GAC4C,qBAAnClB,gCAC4C,oBAA5CA,+BAA+BkB,SAcxC,IAEElB,+BAA+BkB,SAASA,EAC1C,CAAE,MAAOzoK,GAGPjH,QAAQ0D,MAAMuD,EAChB,CACF,CAKEyoK,GACA11K,EAAOC,QAAU,EAAjBD,yCChCFmB,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAiB,QAAIA,EAAQ01K,cAAW,EACxC,IAAIC,EAA4C,qBAAXhwK,SAA2BA,OAAOiwK,mBAAqBjwK,OAAOkwK,yBAA2BlwK,OAAOmwK,sBAAwBnwK,OAAOowK,qBAAuBpwK,OAAOqwK,oBAMlMh2K,EAAQ01K,SAJO,SAAkBE,GAC/B,OAAOA,IAAsBD,CAC/B,EAGA,IAAI3mI,EAAW2mI,EACf31K,EAAiB,QAAIgvC,sCCdR,IAAApjB,EAAAxC,EAAAA,OAAAA,QAEbloB,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAiB,aAAI,EAErB,IAMgCiB,EAN5Bg1K,GAM4Bh1K,EANQmoB,EAAQ,SAMKnoB,EAAImuI,WAAanuI,EAAM,CAAE,QAAWA,GAJrFi1K,EAAS9sJ,EAAQ,OAEjB+sJ,EAA2B/sJ,EAAQ,OAIvC,SAASgtJ,EAAmBC,EAAKpvJ,EAASC,EAAQovJ,EAAOC,EAAQ/xK,EAAKoc,GAAO,IAAM,IAAI1H,EAAOm9J,EAAI7xK,GAAKoc,GAAU1e,EAAQgX,EAAKhX,KAAO,CAAE,MAAOuH,GAAwB,YAAfyd,EAAOzd,EAAgB,CAAMyP,EAAKqU,KAAQtG,EAAQ/kB,GAAiB8kB,QAAQC,QAAQ/kB,GAAOuT,KAAK6gK,EAAOC,EAAW,CAExQ,SAASzqJ,EAAkBzrB,GAAM,OAAO,WAAc,IAAIgW,EAAO1P,KAAMyB,EAAO7C,UAAW,OAAO,IAAIyhB,SAAQ,SAAUC,EAASC,GAAU,IAAImvJ,EAAMh2K,EAAGoU,MAAM4B,EAAMjO,GAAO,SAASkuK,EAAMp0K,GAASk0K,EAAmBC,EAAKpvJ,EAASC,EAAQovJ,EAAOC,EAAQ,OAAQr0K,EAAQ,CAAE,SAASq0K,EAAOvpK,GAAOopK,EAAmBC,EAAKpvJ,EAASC,EAAQovJ,EAAOC,EAAQ,QAASvpK,EAAM,CAAEspK,OAAMrzK,EAAY,GAAI,CAAG,CAIpY,SAASuzK,EAAkBlxK,EAAQ4C,GAAS,IAAK,IAAI1H,EAAI,EAAGA,EAAI0H,EAAMxH,OAAQF,IAAK,CAAE,IAAIoyB,EAAa1qB,EAAM1H,GAAIoyB,EAAWH,WAAaG,EAAWH,aAAc,EAAOG,EAAWF,cAAe,EAAU,UAAWE,IAAYA,EAAWD,UAAW,GAAMzxB,OAAOgsB,eAAe5nB,EAAQstB,EAAWpuB,IAAKouB,EAAa,CAAE,CAI5T,IAAI6jJ,EAAkC,WACpC,SAASA,EAAmBb,IAP9B,SAAyB7mH,EAAUzpB,GAAe,KAAMypB,aAAoBzpB,GAAgB,MAAM,IAAI/8B,UAAU,oCAAwC,CAQpJ2jB,CAAgBvlB,KAAM8vK,GAEtB9vK,KAAK+7E,YAAc,KACnB/7E,KAAK+vK,sBAAuB,EAC5B/vK,KAAKgwK,kBAAoB,GACzBhwK,KAAKiwK,gBAAkB,GACvBjwK,KAAKkwK,WAAY,EACjBlwK,KAAKmwK,uBAAwB,EAC7BnwK,KAAKowK,YAAc,CAAC,EAEpBpwK,KAAKqwK,gBAAkB,WAAa,EAEpCrwK,KAAKswK,4BAA6B,EAClCtwK,KAAKuwK,gBAAkBvwK,KAAKuwK,gBAAgB7wK,KAAKM,MACjDA,KAAKwwK,eAAiBxwK,KAAKwwK,eAAe9wK,KAAKM,MAC/CA,KAAKywK,cAAgBzwK,KAAKywK,cAAc/wK,KAAKM,MAC7CA,KAAK0wK,eAAiB1wK,KAAK0wK,eAAehxK,KAAKM,MAC/CA,KAAK2wK,qBAAuB3wK,KAAK2wK,qBAAqBjxK,KAAKM,MAC3DA,KAAK4wK,mBAAqB5wK,KAAK4wK,mBAAmBlxK,KAAKM,MACvDA,KAAK2wK,qBAAqB1B,IAEtB,EAAIK,EAAoB,aAC1BtvK,KAAK6wK,uBAAwB,EAAItB,EAAOuB,UAAU9wK,KAAK6wK,sBAAuB,KAAK,GAEvF,CA5BF,IAAsBlyI,EAAaovG,EAAYC,EA2a7C,OA3aoBrvG,EA8BPmxI,EA9BoB/hC,EA8BA,CAAC,CAChClwI,IAAK,uBACLtC,MAAO,SAA8B0zK,GACnC,IAAI8B,IAA8B9B,KAAsB,EAAIO,EAAyBT,UAAUE,KAAsB,EAAIM,EAAOyB,6BAE5HD,IACF/wK,KAAK4wK,qBACL5wK,KAAK+7E,YAAc,IAAIkzF,EACvBjvK,KAAK+7E,YAAYk1F,YAAa,EAC9BjxK,KAAK+7E,YAAY2O,gBAAiB,EAClC1qF,KAAK+7E,YAAYm1F,SAAWlxK,KAAKmxK,iBAAiBzxK,KAAKM,MACvDA,KAAK+7E,YAAYq1F,MAAQpxK,KAAKqxK,wBAAwB3xK,KAAKM,MAC3DA,KAAK+7E,YAAY9lE,QAAUjW,KAAKlD,QAAQ4C,KAAKM,OAG/CA,KAAKsxK,2CAA2CP,EAClD,GACC,CACDlzK,IAAK,YACLtC,MAAO,SAAmBwQ,EAAI2C,GAC5B1O,KAAKowK,YAAYrkK,GAAM2C,CACzB,GACC,CACD7Q,IAAK,cACLtC,MAAO,SAAqBwQ,UACnB/L,KAAKowK,YAAYrkK,EAC1B,GACC,CACDlO,IAAK,sBACLtC,MAAO,SAA6B20K,GAClC,IAAIn+J,EAAQ/R,KAEZA,KAAKkwK,UAAYA,EACjB31K,OAAO8wB,KAAKrrB,KAAKowK,aAAa3nJ,SAAQ,SAAU1c,IAE9CwlK,EADwBx/J,EAAMq+J,YAAYrkK,GAAIwlK,mBAC5BrB,EACpB,GACF,GACC,CACDryK,IAAK,mCACLtC,MAAO,SAA0C40K,GAC/C,IAAIp7J,EAAS/U,KAEbA,KAAKmwK,sBAAwBA,EAC7B51K,OAAO8wB,KAAKrrB,KAAKowK,aAAa3nJ,SAAQ,SAAU1c,IAE9CylK,EADqCz8J,EAAOq7J,YAAYrkK,GAAIylK,gCAC7BrB,EACjC,GACF,GACC,CACDtyK,IAAK,uBACLtC,MAAO,SAA8By0K,EAAmBC,GACtD,IAAIwB,EAASzxK,KAEbzF,OAAO8wB,KAAKrrB,KAAKowK,aAAa3nJ,SAAQ,SAAU1c,IAE9C2lK,EADyBD,EAAOrB,YAAYrkK,GAAI2lK,oBAC7B1B,EAAmBC,EACxC,GACF,GACC,CACDpyK,IAAK,sBACLtC,MAAO,WACL,IAAIo2K,EAAS3xK,KAEbzF,OAAO8wB,KAAKrrB,KAAKowK,aAAa3nJ,SAAQ,SAAU1c,IAE9C6lK,EADwBD,EAAOvB,YAAYrkK,GAAI6lK,oBAEjD,GACF,GACC,CACD/zK,IAAK,6CACLtC,MAAO,SAAoDs2K,GACzD,IAAIC,EAAS9xK,KAEbzF,OAAO8wB,KAAKrrB,KAAKowK,aAAa3nJ,SAAQ,SAAU1c,GAC9C,IAAIgmK,EAAwBD,EAAO1B,YAAYrkK,GAC3CimK,EAA2CD,EAAsBC,yCACjEC,EAA6CF,EAAsBE,2CACvED,EAAyCH,GACzCI,EAA2CJ,EAC7C,GACF,GACC,CACDh0K,IAAK,aACLtC,MAAO,SAAoB22K,GACzB,GAAIlyK,KAAK+7E,aAAe/7E,KAAKkwK,UAC3B,OAAQgC,GACN,IAAK,QACHlyK,KAAK+vK,sBAAuB,EAC5B/vK,KAAKmyK,QACL,MAEF,IAAK,QACHnyK,KAAK+vK,sBAAuB,EAC5B/vK,KAAKmyK,QACL,MAGF,QACEnyK,KAAK+vK,sBAAuB,EAC5B/vK,KAAKmoB,OAGb,GACC,CACDtqB,IAAK,qBACLtC,MAAO,WACDyE,KAAK+7E,cACP/7E,KAAK+7E,YAAYm1F,SAAW,WAAa,EAEzClxK,KAAK+7E,YAAYq1F,MAAQ,WAAa,EAEtCpxK,KAAK+7E,YAAY9lE,QAAU,WAAa,EAEpCjW,KAAKkwK,WACPlwK,KAAKywK,gBAGX,GACC,CACD5yK,IAAK,UACLtC,MAAO,SAAiB+R,GAClBA,GAASA,EAAMxK,OAAyB,gBAAhBwK,EAAMxK,QAChC9C,KAAKoyK,kCAAiC,GACtCpyK,KAAK4wK,qBAET,GACC,CACD/yK,IAAK,0BACLtC,MAAO,WACLyE,KAAKqwK,kBACLrwK,KAAKkwK,WAAY,EAEblwK,KAAK+vK,qBACP/vK,KAAKqyK,qBAAoB,GAChBryK,KAAK+7E,cACV/7E,KAAK+7E,YAAYk1F,WACnBjxK,KAAKwwK,eAAe,CAClBS,WAAYjxK,KAAK+7E,YAAYk1F,aAG/BjxK,KAAKqyK,qBAAoB,IAI7BryK,KAAK+vK,sBAAuB,CAC9B,GACC,CACDlyK,IAAK,mBACLtC,MAAO,SAA0ByM,GAC/B,IAAIo/H,EAAUp/H,EAAKo/H,QACfkrC,EAActqK,EAAKsqK,YACnBC,OAA+Bj2K,IAAhBg2K,EAA4BlrC,EAAQrtI,OAAS,EAAIu4K,EACpEtyK,KAAKgwK,kBAAoB,GACzBhwK,KAAKiwK,gBAAkB,GAEvB,IAAK,IAAIp2K,EAAI04K,EAAc14K,EAAIutI,EAAQrtI,SAAUF,EAC3CutI,EAAQvtI,GAAGshG,YAAa,EAAIm0E,EAAoB,YAAQloC,EAAQvtI,GAAG,GAAG24K,WAAa,GACrFxyK,KAAK6wK,sBAAsBzpC,EAAQvtI,GAAG,GAAG44K,YAEzCzyK,KAAKgwK,mBAAoB,EAAIT,EAAOmD,mBAAmB1yK,KAAKgwK,kBAAmB5oC,EAAQvtI,GAAG,GAAG44K,YAIjG,IAAIE,GAAoB,EAEO,KAA3B3yK,KAAKgwK,mBAAqD,KAAzBhwK,KAAKiwK,iBACpCjwK,KAAKswK,6BACPqC,GAAoB,GAGtB3yK,KAAKswK,4BAA6B,GAElCtwK,KAAKswK,4BAA6B,EAG/BqC,GACH3yK,KAAK4yK,qBAAqB5yK,KAAKgwK,kBAAmBhwK,KAAKiwK,gBAE3D,GACC,CACDpyK,IAAK,wBACLtC,MAAO,SAA+Bs3K,GACpC7yK,KAAKiwK,iBAAkB,EAAIV,EAAOmD,mBAAmB1yK,KAAKiwK,gBAAiB4C,EAC7E,GACC,CACDh1K,IAAK,kBACLtC,MAAO,WACLyE,KAAK+zD,WAAW,QAClB,GACC,CACDl2D,IAAK,iBACLtC,MAAO,WACL,IAAIu3K,EAAkB3tJ,EAAgCF,IAAmBgC,MAAK,SAASC,IACrF,IAAIuoB,EACAsjI,EACA9B,EACAz4J,EACAw6J,EACAC,EACA1rJ,EAAQ3oB,UAEZ,OAAOqmB,IAAmBuC,MAAK,SAAkB9U,GAC/C,OACE,OAAQA,EAASqI,KAAOrI,EAASlE,MAC/B,KAAK,EAGH,GAFoEukK,GAApEtjI,EAAQloB,EAAMxtB,OAAS,QAAkBuC,IAAbirB,EAAM,GAAmBA,EAAM,GAAK,CAAC,GAA4B0pJ,WAAYA,OAAkC,IAArB8B,GAAsCA,EAAkBv6J,EAAWi3B,EAAMj3B,SAE3LxY,KAAK+7E,YAAa,CACpBrpE,EAASlE,KAAO,EAChB,KACF,CAEA,OAAOkE,EAASwV,OAAO,UAEzB,KAAK,EAIH,GAHA8qJ,EAAsB/B,IAAejxK,KAAK+7E,YAAYk1F,WACtDgC,EAAoBz6J,GAAYA,IAAaxY,KAAK+7E,YAAYK,MAExD42F,IAAuBC,EAAoB,CAC/CvgK,EAASlE,KAAO,GAChB,KACF,CAEA,IAAKxO,KAAKkwK,UAAW,CACnBx9J,EAASlE,KAAO,EAChB,KACF,CAGA,OADAkE,EAASlE,KAAO,EACTxO,KAAKywK,gBAEd,KAAK,EACHzwK,KAAK+7E,YAAYk1F,WAAa+B,EAAsB/B,EAAajxK,KAAK+7E,YAAYk1F,WAClFjxK,KAAK+7E,YAAYK,KAAO62F,EAAoBz6J,EAAWxY,KAAK+7E,YAAYK,KAE1E,KAAK,GACH,GAAIp8E,KAAKkwK,UAAW,CAClBx9J,EAASlE,KAAO,GAChB,KACF,CASA,OAPKxO,KAAK+7E,YAAYk1F,aACpBjxK,KAAKuwK,kBACLvwK,KAAKkzK,uBAGPxgK,EAASqI,KAAO,GAChBrI,EAASlE,KAAO,GACTxO,KAAK0b,QAEd,KAAK,GACH1b,KAAKqyK,qBAAoB,GACzB3/J,EAASlE,KAAO,GAChB,MAEF,KAAK,GACHkE,EAASqI,KAAO,GAChBrI,EAASygK,GAAKzgK,EAAgB,MAAE,IAG1BA,EAASygK,cAAc/2H,cAC3Bp8C,KAAKoyK,kCAAiC,GAG1C,KAAK,GACL,IAAK,MACH,OAAO1/J,EAASyV,OAGxB,GAAGjB,EAASlnB,KAAM,CAAC,CAAC,GAAI,KAC1B,KAMA,OAJA,WACE,OAAO8yK,EAAgBhlK,MAAM9N,KAAMpB,UACrC,CAGF,CAtFO,IAuFN,CACDf,IAAK,iBACLtC,MAAO,WACL,IAAI63K,EAAkBjuJ,EAAgCF,IAAmBgC,MAAK,SAASosJ,IACrF,IAAIC,EAAStzK,KAEb,OAAOilB,IAAmBuC,MAAK,SAAmB+rJ,GAChD,OACE,OAAQA,EAAUx4J,KAAOw4J,EAAU/kK,MACjC,KAAK,EAIH,OAHAxO,KAAK+zD,WAAW,SAChB/zD,KAAKqyK,qBAAoB,GACzBkB,EAAU/kK,KAAO,EACV,IAAI6R,SAAQ,SAAUC,GAC3BgzJ,EAAOjD,gBAAkB/vJ,CAC3B,IAEF,KAAK,EACL,IAAK,MACH,OAAOizJ,EAAUprJ,OAGzB,GAAGkrJ,EAAUrzK,KACf,KAMA,OAJA,WACE,OAAOozK,EAAgBtlK,MAAM9N,KAAMpB,UACrC,CAGF,CA5BO,IA6BN,CACDf,IAAK,gBACLtC,MAAO,WACL,IAAIi4K,EAAiBruJ,EAAgCF,IAAmBgC,MAAK,SAASwsJ,IACpF,IAAIC,EAAS1zK,KAEb,OAAOilB,IAAmBuC,MAAK,SAAmBmsJ,GAChD,OACE,OAAQA,EAAU54J,KAAO44J,EAAUnlK,MACjC,KAAK,EAIH,OAHAxO,KAAK+zD,WAAW,QAChB/zD,KAAKqyK,qBAAoB,GACzBsB,EAAUnlK,KAAO,EACV,IAAI6R,SAAQ,SAAUC,GAC3BozJ,EAAOrD,gBAAkB/vJ,CAC3B,IAEF,KAAK,EACL,IAAK,MACH,OAAOqzJ,EAAUxrJ,OAGzB,GAAGsrJ,EAAUzzK,KACf,KAMA,OAJA,WACE,OAAOwzK,EAAe1lK,MAAM9N,KAAMpB,UACpC,CAGF,CA5BO,IA6BN,CACDf,IAAK,iBACLtC,MAAO,WACL,OAAOyE,KAAK+7E,WACd,GACC,CACDl+E,IAAK,QACLtC,MAAO,WACL,IAAIq4K,EAASzuJ,EAAgCF,IAAmBgC,MAAK,SAAS4sJ,IAC5E,OAAO5uJ,IAAmBuC,MAAK,SAAmBssJ,GAChD,OACE,OAAQA,EAAU/4J,KAAO+4J,EAAUtlK,MACjC,KAAK,EACH,IAAMxO,KAAK+7E,aAAgB/7E,KAAKkwK,UAAY,CAC1C4D,EAAUtlK,KAAO,EACjB,KACF,CAGA,OADAslK,EAAUtlK,KAAO,EACVxO,KAAK+7E,YAAYrgE,QAE1B,KAAK,EACH1b,KAAKkwK,WAAY,EAEnB,KAAK,EACL,IAAK,MACH,OAAO4D,EAAU3rJ,OAGzB,GAAG0rJ,EAAU7zK,KACf,KAMA,OAJA,WACE,OAAO4zK,EAAO9lK,MAAM9N,KAAMpB,UAC5B,CAGF,CA9BO,IA+BN,CACDf,IAAK,OACLtC,MAAO,WACDyE,KAAK+7E,aAAe/7E,KAAKkwK,YAC3BlwK,KAAK+7E,YAAY5zD,OACjBnoB,KAAKkwK,WAAY,EAErB,GACC,CACDryK,IAAK,QACLtC,MAAO,WACDyE,KAAK+7E,aAAe/7E,KAAKkwK,YAC3BlwK,KAAK+7E,YAAYo2F,QACjBnyK,KAAKkwK,WAAY,EAErB,IAxa8DniC,GAAY8hC,EAAkBlxI,EAAYnkC,UAAWuzI,GAAiBC,GAAa6hC,EAAkBlxI,EAAaqvG,GA2a3K8hC,CACT,CA1asC,GA4atCz2K,EAAiB,QAAIy2K,sCCrcR,IAAA7qJ,EAAAxC,EAAAA,OAAAA,QAEbloB,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAiB,QAAIA,EAAQ06K,0BAAuB,EAEpD,IAAIhlC,EAAStsH,EAAQ,OAEjB8sJ,EAAS9sJ,EAAQ,OAEjBuxJ,EAAWvxJ,EAAQ,OAEnBwxJ,EAAYxxJ,EAAQ,OAEpByxJ,EAAsB9rI,EAAuB3lB,EAAQ,QAErD6sJ,EAAalnI,EAAuB3lB,EAAQ,QAE5C+sJ,EAA2BpnI,EAAuB3lB,EAAQ,QAE9D,SAAS2lB,EAAuB9tC,GAAO,OAAOA,GAAOA,EAAImuI,WAAanuI,EAAM,CAAE,QAAWA,EAAO,CAEhG,SAASm1K,EAAmBC,EAAKpvJ,EAASC,EAAQovJ,EAAOC,EAAQ/xK,EAAKoc,GAAO,IAAM,IAAI1H,EAAOm9J,EAAI7xK,GAAKoc,GAAU1e,EAAQgX,EAAKhX,KAAO,CAAE,MAAOuH,GAAwB,YAAfyd,EAAOzd,EAAgB,CAAMyP,EAAKqU,KAAQtG,EAAQ/kB,GAAiB8kB,QAAQC,QAAQ/kB,GAAOuT,KAAK6gK,EAAOC,EAAW,CAExQ,SAASzqJ,EAAkBzrB,GAAM,OAAO,WAAc,IAAIgW,EAAO1P,KAAMyB,EAAO7C,UAAW,OAAO,IAAIyhB,SAAQ,SAAUC,EAASC,GAAU,IAAImvJ,EAAMh2K,EAAGoU,MAAM4B,EAAMjO,GAAO,SAASkuK,EAAMp0K,GAASk0K,EAAmBC,EAAKpvJ,EAASC,EAAQovJ,EAAOC,EAAQ,OAAQr0K,EAAQ,CAAE,SAASq0K,EAAOvpK,GAAOopK,EAAmBC,EAAKpvJ,EAASC,EAAQovJ,EAAOC,EAAQ,QAASvpK,EAAM,CAAEspK,OAAMrzK,EAAY,GAAI,CAAG,CAEpY,SAAS07C,EAAmBv+C,GAAO,OAMnC,SAA4BA,GAAO,GAAIiQ,MAAMkf,QAAQnvB,GAAM,OAAO06K,EAAkB16K,EAAM,CANhD26K,CAAmB36K,IAI7D,SAA0B46K,GAAQ,GAAsB,qBAAXr0I,QAA0BA,OAAOhL,YAAYz6B,OAAO85K,GAAO,OAAO3qK,MAAMoU,KAAKu2J,EAAO,CAJ5DC,CAAiB76K,IAAQ86K,EAA4B96K,IAE1H,WAAgC,MAAM,IAAImI,UAAU,uIAAyI,CAF3D4yK,EAAsB,CAQxJ,SAASl8H,EAAQh+C,GAAmV,OAAtOg+C,EAArD,oBAAXtY,QAAoD,kBAApBA,OAAOhL,SAAmC,SAAiB16B,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,oBAAX0lC,QAAyB1lC,EAAImxB,cAAgBuU,QAAU1lC,IAAQ0lC,OAAOxlC,UAAY,gBAAkBF,CAAK,EAAYg+C,EAAQh+C,EAAM,CAEzX,SAAS8qB,EAAe3rB,EAAKI,GAAK,OAUlC,SAAyBJ,GAAO,GAAIiQ,MAAMkf,QAAQnvB,GAAM,OAAOA,CAAK,CAV3Bg7K,CAAgBh7K,IAQzD,SAA+BA,EAAKI,GAAK,GAAsB,qBAAXmmC,UAA4BA,OAAOhL,YAAYz6B,OAAOd,IAAO,OAAQ,IAAIi7K,EAAO,GAAQC,GAAK,EAAU11F,GAAK,EAAWC,OAAK5iF,EAAW,IAAM,IAAK,IAAiCs4K,EAA7B32H,EAAKxkD,EAAIumC,OAAOhL,cAAmB2/I,GAAMC,EAAK32H,EAAGzvC,QAAQoY,QAAoB8tJ,EAAKx5K,KAAK05K,EAAGr5K,QAAY1B,GAAK66K,EAAK36K,SAAWF,GAA3D86K,GAAK,GAAkE,CAAE,MAAOtuK,GAAO44E,GAAK,EAAMC,EAAK74E,CAAK,CAAE,QAAU,IAAWsuK,GAAsB,MAAhB12H,EAAW,QAAWA,EAAW,QAAK,CAAE,QAAU,GAAIghC,EAAI,MAAMC,CAAI,CAAE,CAAE,OAAOw1F,CAAM,CARvaG,CAAsBp7K,EAAKI,IAAM06K,EAA4B96K,EAAKI,IAEnI,WAA8B,MAAM,IAAI+H,UAAU,4IAA8I,CAFvDkzK,EAAoB,CAI7J,SAASP,EAA4BpuK,EAAG4uK,GAAU,GAAK5uK,EAAL,CAAgB,GAAiB,kBAANA,EAAgB,OAAOguK,EAAkBhuK,EAAG4uK,GAAS,IAAIt0K,EAAIlG,OAAOC,UAAUC,SAASC,KAAKyL,GAAGjC,MAAM,GAAI,GAAiE,MAAnD,WAANzD,GAAkB0F,EAAEslB,cAAahrB,EAAI0F,EAAEslB,YAAYhtB,MAAgB,QAANgC,GAAqB,QAANA,EAAoBiJ,MAAMoU,KAAK3X,GAAc,cAAN1F,GAAqB,2CAA2CtC,KAAKsC,GAAW0zK,EAAkBhuK,EAAG4uK,QAAzG,CAA7O,CAA+V,CAE/Z,SAASZ,EAAkB16K,EAAKK,IAAkB,MAAPA,GAAeA,EAAML,EAAIM,UAAQD,EAAML,EAAIM,QAAQ,IAAK,IAAIF,EAAI,EAAGm7K,EAAO,IAAItrK,MAAM5P,GAAMD,EAAIC,EAAKD,IAAOm7K,EAAKn7K,GAAKJ,EAAII,GAAM,OAAOm7K,CAAM,CAMtL,IAIIC,EAJAC,IAAsC1F,EAAkC,QAExE2F,EAAsCD,KAAsC,EAAI5F,EAAoB,WA6LxGj2K,EAAQ06K,qBAzLmB,WACzB,IAAI/rK,EAAOpJ,UAAU7E,OAAS,QAAsBuC,IAAjBsC,UAAU,GAAmBA,UAAU,GAAK,CAAC,EAC5Ew2K,EAAoBptK,EAAKg8F,aACzBA,OAAqC,IAAtBoxE,GAAsCA,EACrDC,EAAwBrtK,EAAKstK,wBAC7BA,OAAoD,IAA1BD,GAA0CA,EACpEE,EAAgBvtK,EAAKwtK,SACrBA,OAA6B,IAAlBD,EAA2B,GAAKA,EAI3CN,EADa7vJ,GADD,EAAI2pH,EAAO+wB,UAAUmP,EAAkBwG,yBACZ,GACP,GAGhCC,EAAatwJ,GADA,EAAI2pH,EAAO+wB,UAAUoV,GACM,GACxCS,EAAmCD,EAAW,GAC9CE,EAAsCF,EAAW,GAGjDG,EAAazwJ,GADA,EAAI2pH,EAAO+wB,UAAUqV,GACM,GACxCW,EAAqCD,EAAW,GAChDE,EAAwCF,EAAW,GAMnDG,EAAe5wJ,GAJD,EAAI2pH,EAAO6wB,YAAYqU,EAAUgC,kBAAmB,CACpEjG,kBAAmBiF,EAAmBjF,kBACtCC,gBAAiB,KAE4B,GAC3CiG,EAAgBF,EAAa,GAC7BhG,EAAoBkG,EAAclG,kBAClCC,EAAkBiG,EAAcjG,gBAChCjT,EAAWgZ,EAAa,GAGxBG,EAAa/wJ,GADA,EAAI2pH,EAAO+wB,UAAUmV,EAAmB/E,WACb,GACxCA,EAAYiG,EAAW,GACvBC,EAAeD,EAAW,GAG1BE,EAAcjxJ,GADD,EAAI2pH,EAAO+wB,UAAUmV,EAAmB9E,uBACZ,GACzCA,EAAwBkG,EAAY,GACpCC,EAAyBD,EAAY,GAErCE,GAAc,EAAIxnC,EAAO8wB,QAAQ2V,GACrCe,EAAYr6I,QAAUs5I,EAEtB,IAAIgB,EAA0B,WAC5BxZ,GAAS,EAAIgX,EAASyC,mBACxB,EAEIlG,GAAkB,EAAIxhC,EAAOswB,cAAa,WAC5C4V,EAAmB1E,kBACnBiG,GACF,GAAG,CAACvB,IAiCAyB,GAAgB,EAAI3nC,EAAOswB,cAAa,SAAUsX,EAAsB9D,GAC1E0D,EAAYr6I,QAAQzT,SAAQ,SAAUgnB,GACpC,IAAIwoD,EAAUxoD,EAAMwoD,QAChBh4C,EAAWxQ,EAAMwQ,SACjB22H,EAAqBnnI,EAAMonI,aAC3BA,OAAsC,IAAvBD,GAAwCA,EACvDE,EAAqBrnI,EAAMsnI,aAC3BA,OAAsC,IAAvBD,GAAwCA,EACvDE,EAAwBvnI,EAAMwnI,uBAC9BA,OAAmD,IAA1BD,EAAmC,GAAMA,EAClEE,EAAsBznI,EAAM0nI,cAC5BA,OAAwC,IAAxBD,GAAyCA,EACzDj6I,GAAS41I,GAAsBgE,EAAeF,EAAqBx9G,OAAS05G,EAAmB15G,OAE/FiuE,GADc19H,MAAMkf,QAAQqvE,GAAWA,EAAU,CAACA,IAC5Bl0F,KAAI,SAAUqzK,GACtC,OAAIL,EA9CW,SAAwB9+E,EAASh7D,EAAOg6I,GAC3D,IACII,GADuC,WAArB/+H,EAAQ2/C,GAAwBA,EAAQx9F,WAAaw9F,GAC9Bt0F,QAAQ,6BAA8B,IAAIA,QAAQ,OAAQ,KAAKw1D,OACxGm+G,GAAa,EAAI/H,EAAOgI,uCAAuCF,EAAwBp6I,GAE3F,OAAIq6I,GAAcL,EACT,CACLh/E,QAASA,EACTo/E,uBAAwBA,EACxBC,WAAYA,EACZP,cAAc,GAIX,IACT,CAgCeS,CAAeJ,EAAYn6I,EAAOg6I,GA9BjC,SAAmBh/E,EAASh7D,GAC1C,IACIjiC,GADU,EAAIu0K,EAAOkI,iBAAiBx/E,GACrBv0F,KAAKu5B,GAE1B,OAAIjiC,EACK,CACLi9F,QAASA,EACTtjC,WAAY35D,EAAOkJ,MAAM,IAItB,IACT,CAqBawzK,CAAUN,EAAYn6I,EAC/B,IAAGp5B,QAAO,SAAUzJ,GAClB,OAAOA,CACT,IAEA,GAAI28K,GAAgBI,GAAiB/vC,EAAQrtI,QAAU,EAAG,CACxDqtI,EAAQh3B,MAAK,SAAU7xF,EAAG1L,GACxB,OAAOA,EAAEykK,WAAa/4J,EAAE+4J,UAC1B,IACA,IAAIK,EAAYvwC,EAAQ,GACpBwwC,EAAWD,EAAU1/E,QACrBo/E,EAAyBM,EAAUN,uBACnCC,EAAaK,EAAUL,WAC3Br3H,EAASo3H,EAAwBp6I,EAAOq6I,EAAY,CAClDr/E,QAAS2/E,EACTrH,gBAAiBA,GAErB,MACEnpC,EAAQ3+G,SAAQ,SAAUztB,GACxB,GAAIA,EAAO+7K,aAAc,CACvB,IAAIc,EAAY78K,EAAOi9F,QACnB6/E,EAA0B98K,EAAOq8K,uBACjCU,EAAc/8K,EAAOs8K,WACzBr3H,EAAS63H,EAAyB76I,EAAO86I,EAAa,CACpD9/E,QAAS4/E,EACTtH,gBAAiBA,GAErB,KAAO,CACL,IAAIyH,EAAYh9K,EAAOi9F,QACnBtjC,EAAa35D,EAAO25D,WACxB1U,EAASnyC,WAAM,EAAQkqC,EAAmB2c,GAAYz6D,OAAO,CAAC,CAC5D+9F,QAAS+/E,EACTzH,gBAAiBA,KAErB,CACF,GAEJ,GACF,GAAG,CAACA,IACA0H,GAAyB,EAAIlpC,EAAOswB,cAAa,SAAUsX,EAAsB9D,GAC/E7uE,GACFg5D,GAAS,EAAIgX,EAASkE,kBAAkBvB,EAAsB9D,IAGhE6D,EAAcC,EAAsB9D,EACtC,GAAG,CAAC6D,EAAe1yE,IACfm0E,GAAwB,EAAIppC,EAAOswB,cAAa,WAC9CiW,GACFkB,GAEJ,GAAG,CAAClB,IAkBJ,OAjBA,EAAIvmC,EAAOwwB,YAAW,WACpB,IAAIxzJ,EAAKkjK,EAAkBtuI,QAC3BsuI,EAAkBtuI,SAAW,EAC7B,IAAIjyB,EAAY,CACd6iK,kBAAmB6E,EACnB5E,+BAAgC8E,EAChC5E,mBAAoBuG,EACpBrG,kBAAmBuG,EACnBnG,yCAA0C4D,EAC1C3D,2CAA4C8D,GAG9C,OADAd,EAAmBmD,UAAUrsK,EAAI2C,GAC1B,WACLumK,EAAmBoD,YAAYtsK,EACjC,CACF,GAAG,CAACi4F,EAAcsxE,EAAyBL,EAAoBgD,EAAwBE,IAEhF,CACL1F,YAFe,EAAIlD,EAAOmD,mBAAmBzC,EAAiBD,GAG9DA,kBAAmBA,EACnBC,gBAAiBA,EACjBC,UAAWA,EACXC,sBAAuBA,EACvBI,gBAAiBA,EACjBoF,iCAAkCA,EAClCG,mCAAoCA,EAExC,EAGA,IAAI7G,EAAoB,CACtBtuI,QAAS,EACT23I,cAAe,SAAuBC,GAChCtD,EACFA,EAAmBtE,qBAAqB4H,GAExCtD,EAAqB,IAAIf,EAA6B,QAAEqE,GAG1D,IAAIC,IAA4BD,IAA6B,EAAIhJ,EAAOyB,4BACxEkE,EAAoCsD,EACpCrD,EAAsCqD,CACxC,EACAC,eAAgB,WACVxD,EACFA,EAAmBtE,qBAAqBnB,EAAkC,SAE1EyF,EAAqB,IAAIf,EAA6B,QAAE1E,EAAkC,SAG5F0F,IAAsC1F,EAAkC,QACxE2F,EAAsCD,KAAsC,EAAI5F,EAAoB,UACtG,EACAmG,sBAAuB,WAKrB,OAJKR,IACHA,EAAqB,IAAIf,EAA6B,QAAE1E,EAAkC,UAGrFyF,CACT,EACAyD,eAAgB,WAEd,OADyBzJ,EAAkBwG,wBACjBiD,gBAC5B,EACAlI,eAAgB,WACd,IAAIsC,EAAkB3tJ,EAAgCF,IAAmBgC,MAAK,SAASC,IACrF,IAAIwoB,EACAuhI,EACAz4J,EACAy8J,EACA1tJ,EAAQ3oB,UAEZ,OAAOqmB,IAAmBuC,MAAK,SAAkB9U,GAC/C,OACE,OAAQA,EAASqI,KAAOrI,EAASlE,MAC/B,KAAK,EAIH,OAHoEyiK,GAApEvhI,EAAQnoB,EAAMxtB,OAAS,QAAkBuC,IAAbirB,EAAM,GAAmBA,EAAM,GAAK,CAAC,GAAsB0pJ,WAAYz4J,EAAWk3B,EAAMl3B,SACpHy8J,EAAqBhG,EAAkBwG,wBACvC/iK,EAASlE,KAAO,EACTymK,EAAmBzE,eAAe,CACvCS,WAAYA,EACZz4J,SAAUA,IAGd,KAAK,EACL,IAAK,MACH,OAAO9F,EAASyV,OAGxB,GAAGjB,EACL,KAMA,OAJA,WACE,OAAO4rJ,EAAgBhlK,MAAM9N,KAAMpB,UACrC,CAGF,CAjCgB,GAkChB6xK,cAAe,WACb,IAAI+C,EAAiBruJ,EAAgCF,IAAmBgC,MAAK,SAASosJ,IACpF,IAAI4B,EACJ,OAAOhwJ,IAAmBuC,MAAK,SAAmB+rJ,GAChD,OACE,OAAQA,EAAUx4J,KAAOw4J,EAAU/kK,MACjC,KAAK,EAGH,OAFAymK,EAAqBhG,EAAkBwG,wBACvClC,EAAU/kK,KAAO,EACVymK,EAAmBxE,gBAE5B,KAAK,EACL,IAAK,MACH,OAAO8C,EAAUprJ,OAGzB,GAAGkrJ,EACL,KAMA,OAJA,WACE,OAAOG,EAAe1lK,MAAM9N,KAAMpB,UACpC,CAGF,CAxBe,GAyBf8xK,eAAgB,WACd,IAAI0C,EAAkBjuJ,EAAgCF,IAAmBgC,MAAK,SAASwsJ,IACrF,IAAIwB,EACJ,OAAOhwJ,IAAmBuC,MAAK,SAAmBmsJ,GAChD,OACE,OAAQA,EAAU54J,KAAO44J,EAAUnlK,MACjC,KAAK,EAGH,OAFAymK,EAAqBhG,EAAkBwG,wBACvC9B,EAAUnlK,KAAO,EACVymK,EAAmBvE,iBAE5B,KAAK,EACL,IAAK,MACH,OAAOiD,EAAUxrJ,OAGzB,GAAGsrJ,EACL,KAMA,OAJA,WACE,OAAOL,EAAgBtlK,MAAM9N,KAAMpB,UACrC,CAGF,CAxBgB,GAyBhB+2K,iCAAkC,WAChC,OAAOT,CACT,EACAY,mCAAoC,WAClC,OAAOX,CACT,GAEE9sI,EAAW4mI,EACf51K,EAAiB,QAAIgvC,sCC7WrB9tC,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAQ6+K,iBAAmB7+K,EAAQo9K,qBAAkB,EAErD,IAAIkC,EAAal2J,EAAQ,OAQzBppB,EAAQo9K,gBANc,WACpB,MAAO,CACL52K,KAAM84K,EAAWC,iBAErB,EAcAv/K,EAAQ6+K,iBAVe,SAA0BlI,EAAmBC,GAClE,MAAO,CACLpwK,KAAM84K,EAAWE,kBACjBtjK,QAAS,CACPy6J,kBAAmBA,EACnBC,gBAAiBA,GAGvB,oCCvBA11K,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAQw/K,kBAAoBx/K,EAAQu/K,sBAAmB,EAEvDv/K,EAAQu/K,iBADe,mBAGvBv/K,EAAQw/K,kBADgB,wDCNxB,SAASvgI,EAAQh+C,GAAmV,OAAtOg+C,EAArD,oBAAXtY,QAAoD,kBAApBA,OAAOhL,SAAmC,SAAiB16B,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,oBAAX0lC,QAAyB1lC,EAAImxB,cAAgBuU,QAAU1lC,IAAQ0lC,OAAOxlC,UAAY,gBAAkBF,CAAK,EAAYg+C,EAAQh+C,EAAM,CAKzXC,OAAOgsB,eAAeltB,EAAS,KAA/BkB,CACEuxB,YAAY,EACZ3iB,IAAK,WACH,OAAO2vK,EAAmB/E,oBAC5B,IAEF16K,EAAAA,QAAqB,EAErB,IAAIy/K,EAIJ,SAAiCx+K,GAAO,GAAIA,GAAOA,EAAImuI,WAAc,OAAOnuI,EAAO,GAAY,OAARA,GAAiC,WAAjBg+C,EAAQh+C,IAAoC,oBAARA,EAAsB,MAAO,CAAE,QAAWA,GAAS,IAAIstD,EAAQmxH,IAA4B,GAAInxH,GAASA,EAAM3/B,IAAI3tB,GAAQ,OAAOstD,EAAMz+C,IAAI7O,GAAQ,IAAI0+K,EAAS,CAAC,EAAOC,EAAwB1+K,OAAOgsB,gBAAkBhsB,OAAO+wB,yBAA0B,IAAK,IAAIztB,KAAOvD,EAAO,GAAIC,OAAOC,UAAUS,eAAeP,KAAKJ,EAAKuD,GAAM,CAAE,IAAIq7K,EAAOD,EAAwB1+K,OAAO+wB,yBAAyBhxB,EAAKuD,GAAO,KAAUq7K,IAASA,EAAK/vK,KAAO+vK,EAAKrmJ,KAAQt4B,OAAOgsB,eAAeyyJ,EAAQn7K,EAAKq7K,GAAgBF,EAAOn7K,GAAOvD,EAAIuD,EAAQ,CAAIm7K,EAAgB,QAAI1+K,EAASstD,GAASA,EAAM/0B,IAAIv4B,EAAK0+K,GAAW,OAAOA,CAAQ,CAJptBG,CAAwB12J,EAAQ,QAEzD,SAASs2J,IAA6B,GAAuB,oBAAZ5lJ,QAAwB,OAAO,KAAM,IAAIy0B,EAAQ,IAAIz0B,QAA6F,OAAlF4lJ,EAA2B,WAAsC,OAAOnxH,CAAO,EAAUA,CAAO,CAIjN,IAAIvf,EAAWywI,EAA4B,QAC3Cz/K,EAAAA,GAAqBgvC,oCCpBrB9tC,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAiB,aAAI,EAMrBA,EAAiB,QAJF,WACb,MAAO,aAAa8E,KAA0B,qBAAd0R,UAA4BA,UAAUG,UAAY,GACpF,sCCPAzV,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAQ48K,uBAAoB,EAE5B,IAAI0C,EAAal2J,EAAQ,OAErB8sJ,EAAS9sJ,EAAQ,OAqBrBppB,EAAQ48K,kBAnBgB,SAA2BttK,EAAO4qE,GACxD,OAAQA,EAAO1zE,MACb,KAAK84K,EAAWC,iBACd,MAAO,CACL5I,kBAAmB,GACnBC,gBAAiB,IAGrB,KAAK0I,EAAWE,kBACd,MAAO,CACL7I,kBAAmBz8F,EAAOh+D,QAAQy6J,kBAClCC,iBAAiB,EAAIV,EAAOmD,mBAAmB/pK,EAAMsnK,gBAAiB18F,EAAOh+D,QAAQ06J,kBAGzF,QACE,MAAM,IAAI5sK,MAEhB,oCC1BA9I,OAAOgsB,eAAeltB,EAAS,aAAc,CAC3CkC,OAAO,IAETlC,EAAQ23K,yBAA2B33K,EAAQk+K,sCAAwCl+K,EAAQo+K,gBAAkBp+K,EAAQq5K,kBAAoBr5K,EAAQy3K,cAAW,EAoB5Jz3K,EAAQy3K,SAlBO,SAAkBz+I,EAAM+mJ,EAAMC,GAC3C,IAAIriH,EACJ,OAAO,WACL,IAAIr5D,EAAUqC,KACVyB,EAAO7C,UAOP06K,EAAUD,IAAcriH,EAC5Byd,aAAazd,GACbA,EAAUjoD,YAPE,WACVioD,EAAU,KACLqiH,GAAWhnJ,EAAKvkB,MAAMnQ,EAAS8D,EACtC,GAI4B23K,GACxBE,GAASjnJ,EAAKvkB,MAAMnQ,EAAS8D,EACnC,CACF,EAeApI,EAAQq5K,kBAXgB,WACtB,IAAK,IAAI34J,EAAOnb,UAAU7E,OAAQw/K,EAAkB,IAAI7vK,MAAMqQ,GAAOC,EAAO,EAAGA,EAAOD,EAAMC,IAC1Fu/J,EAAgBv/J,GAAQpb,UAAUob,GAGpC,OAAOu/J,EAAgBx1K,KAAI,SAAUmpC,GACnC,OAAOA,EAAEisB,MACX,IAAG17D,KAAK,KAAK07D,MACf,EAIA,IAAIqgH,EAAgB,mBAChBC,EAAgB,oBAChBC,EAAa,eACbC,EAAa,MACbC,EAAe,sBAcnBvgL,EAAQo+K,gBAZc,SAAyBx/E,GAC7C,OAAIA,aAAmBtuF,OACd,IAAIA,OAAOsuF,EAAQp5F,OAAQ,MAGpCo5F,EAAUA,EAAQt0F,QAAQi2K,EAAc,QAAQj2K,QAAQ61K,EAAe,WAAW71K,QAAQ+1K,GAAY,SAAUx2K,EAAO22K,GACrH,OAAOA,EAAW32K,EAAQ,WAC5B,IAAGS,QAAQg2K,EAAY,SAASh2K,QAAQ81K,EAAe,eAChD,IAAI9vK,OAAO,IAAMsuF,EAAU,IAAK,KACzC,EA0CA5+F,EAAQk+K,sCArCoC,SAA+C53I,EAAOC,GAGhG,GAFAD,EAAQA,EAAMh8B,QAAQ,OAAQ,IAAImD,cAClC84B,EAASA,EAAOj8B,QAAQ,OAAQ,IAAImD,eAC/B64B,EAAM5lC,SAAW6lC,EAAO7lC,OAAQ,OAAO,EAE5C,IAAK4lC,EAAM5lC,SAAW6lC,EAAO7lC,OAAQ,OAAO,EAE5C,GAAI4lC,IAAUC,EAAQ,OAAO,EAE7B,GAAqB,IAAjBD,EAAM5lC,QAAkC,IAAlB6lC,EAAO7lC,OAAc,OAAO,EAEtD,GAAI4lC,EAAM5lC,OAAS,GAAK6lC,EAAO7lC,OAAS,EAAG,OAAO,EAIlD,IAFA,IAAI+/K,EAAe,IAAIp4G,IAEd7nE,EAAI,EAAGA,EAAI8lC,EAAM5lC,OAAS,EAAGF,IAAK,CACzC,IAAIkgL,EAASp6I,EAAM1+B,UAAUpH,EAAGA,EAAI,GAChC67C,EAAQokI,EAAa7xJ,IAAI8xJ,GAAUD,EAAa3wK,IAAI4wK,GAAU,EAAI,EACtED,EAAajnJ,IAAIknJ,EAAQrkI,EAC3B,CAIA,IAFA,IAAIskI,EAAmB,EAEd/7H,EAAK,EAAGA,EAAKre,EAAO7lC,OAAS,EAAGkkD,IAAM,CAC7C,IAAIg8H,EAAUr6I,EAAO3+B,UAAUg9C,EAAIA,EAAK,GAEpCi8H,EAASJ,EAAa7xJ,IAAIgyJ,GAAWH,EAAa3wK,IAAI8wK,GAAW,EAEjEC,EAAS,IACXJ,EAAajnJ,IAAIonJ,EAASC,EAAS,GACnCF,IAEJ,CAEA,OAAO,EAAMA,GAAoBr6I,EAAM5lC,OAAS6lC,EAAO7lC,OAAS,EAClE,EAQAV,EAAQ23K,yBAJuB,WAC7B,MAAyB,qBAAXhyK,aAA+C1C,IAArB0C,OAAO6Q,gBAA6DvT,IAAlC0C,OAAO6Q,UAAUogD,mBAA6E3zD,IAA/C0C,OAAO6Q,UAAUogD,aAAaJ,oBAAuDvzD,IAAxB0C,OAAOshH,mBAA4DhkH,IAA9B0C,OAAOuhH,mBACpO,yBCpGA,IAAiDngH,IASxC,SAAS+5K,EAAgCC,GAClD,OAAiB,SAASC,GAEhB,IAAIC,EAAmB,CAAC,EAGxB,SAASC,EAAoBC,GAG5B,GAAGF,EAAiBE,GACnB,OAAOF,EAAiBE,GAAUnhL,QAGnC,IAAID,EAASkhL,EAAiBE,GAAY,CACzC3gL,EAAG2gL,EACH/0H,GAAG,EACHpsD,QAAS,CAAC,GAUX,OANAghL,EAAQG,GAAU9/K,KAAKtB,EAAOC,QAASD,EAAQA,EAAOC,QAASkhL,GAG/DnhL,EAAOqsD,GAAI,EAGJrsD,EAAOC,OACf,CAyDA,OArDAkhL,EAAoBh4J,EAAI83J,EAGxBE,EAAoBrqK,EAAIoqK,EAGxBC,EAAoB5mK,EAAI,SAASta,EAASoF,EAAMg8K,GAC3CF,EAAoBp0K,EAAE9M,EAASoF,IAClClE,OAAOgsB,eAAeltB,EAASoF,EAAM,CAAEqtB,YAAY,EAAM3iB,IAAKsxK,GAEhE,EAGAF,EAAoBjzI,EAAI,SAASjuC,GACX,qBAAX2mC,QAA0BA,OAAO06I,aAC1CngL,OAAOgsB,eAAeltB,EAAS2mC,OAAO06I,YAAa,CAAEn/K,MAAO,WAE7DhB,OAAOgsB,eAAeltB,EAAS,aAAc,CAAEkC,OAAO,GACvD,EAOAg/K,EAAoBrtI,EAAI,SAAS3xC,EAAO0jC,GAEvC,GADU,EAAPA,IAAU1jC,EAAQg/K,EAAoBh/K,IAC/B,EAAP0jC,EAAU,OAAO1jC,EACpB,GAAW,EAAP0jC,GAA8B,kBAAV1jC,GAAsBA,GAASA,EAAMktI,WAAY,OAAOltI,EAChF,IAAIo/K,EAAKpgL,OAAO2S,OAAO,MAGvB,GAFAqtK,EAAoBjzI,EAAEqzI,GACtBpgL,OAAOgsB,eAAeo0J,EAAI,UAAW,CAAE7uJ,YAAY,EAAMvwB,MAAOA,IACtD,EAAP0jC,GAA4B,iBAAT1jC,EAAmB,IAAI,IAAIsC,KAAOtC,EAAOg/K,EAAoB5mK,EAAEgnK,EAAI98K,EAAK,SAASA,GAAO,OAAOtC,EAAMsC,EAAM,EAAE6B,KAAK,KAAM7B,IAC9I,OAAO88K,CACR,EAGAJ,EAAoB95K,EAAI,SAASrH,GAChC,IAAIqhL,EAASrhL,GAAUA,EAAOqvI,WAC7B,WAAwB,OAAOrvI,EAAgB,OAAG,EAClD,WAA8B,OAAOA,CAAQ,EAE9C,OADAmhL,EAAoB5mK,EAAE8mK,EAAQ,IAAKA,GAC5BA,CACR,EAGAF,EAAoBp0K,EAAI,SAASqkB,EAAQowJ,GAAY,OAAOrgL,OAAOC,UAAUS,eAAeP,KAAK8vB,EAAQowJ,EAAW,EAGpHL,EAAoBl8K,EAAI,GAIjBk8K,EAAoBA,EAAoBr8K,EAAI,EACpD,CApFF,CAsFG,CAEH,SAAS9E,EAAQC,EAASkhL,GAY/BnhL,EAAOC,QAAUkhL,EAAoB,EAApBA,EAIb,EAEC,SAASnhL,EAAQC,GAExBD,EAAOC,QAAU8gL,CAEX,EAEC,SAAS/gL,EAAQC,GAExBD,EAAOC,QAAU+gL,CAEX,EAEC,SAAShhL,EAAQC,GAKxBD,EAAOC,QAAU,SAAU8vC,EAAQ0xI,EAAMC,GACvC,IAAIC,EAAY5xI,EAAO6xI,UACnBC,EAAY9xI,EAAO5tC,MAGvB,OAAQw/K,GACN,IAAK,MACH,OAAOD,EAAgB/sB,IAAMktB,EAAYJ,EAAK9sB,KAAO+sB,EAAgBI,OAASL,EAAKK,QAAUJ,EAAgBjtB,KAAOgtB,EAAKhtB,MAAQitB,EAAgBK,MAAQN,EAAKM,MAEhK,IAAK,OACH,OAAOL,EAAgBjtB,KAAOotB,EAAYJ,EAAKhtB,MAAQitB,EAAgBI,OAASL,EAAKK,QAAUJ,EAAgB/sB,IAAM8sB,EAAK9sB,KAAO+sB,EAAgBK,MAAQN,EAAKM,MAEhK,IAAK,SACH,OAAOL,EAAgBI,OAASD,EAAYJ,EAAKK,QAAUJ,EAAgBjtB,KAAOgtB,EAAKhtB,MAAQitB,EAAgBK,MAAQN,EAAKM,OAASL,EAAgB/sB,IAAM8sB,EAAK9sB,IAElK,IAAK,QACH,OAAO+sB,EAAgBK,MAAQF,EAAYJ,EAAKM,OAASL,EAAgBjtB,KAAOgtB,EAAKhtB,MAAQitB,EAAgB/sB,IAAM8sB,EAAK9sB,KAAO+sB,EAAgBI,OAASL,EAAKK,OAEnK,CAEM,EAEC,SAAS9hL,EAAQgiL,EAAqBb,GAE7C,aACAA,EAAoBjzI,EAAE8zI,GACSb,EAAoB5mK,EAAEynK,EAAqB,WAAW,WAAa,OAAOC,CAAkB,IACtG,IAAIC,EAAqCf,EAAoB,GACzDgB,EAA0DhB,EAAoB95K,EAAE66K,GAChFE,EAAyCjB,EAAoB,GAC7DkB,EAA8DlB,EAAoB95K,EAAE+6K,GACpFE,EAA0CnB,EAAoB,GAC9DoB,EAA+DpB,EAAoB95K,EAAEi7K,GACrFE,EAA2DrB,EAAoB,GAC/EsB,EAAgFtB,EAAoB95K,EAAEm7K,GAG/H,SAAStjI,EAAQh+C,GAAwT,OAAtOg+C,EAArD,oBAAXtY,QAAoD,kBAApBA,OAAOhL,SAAmC,SAAiB16B,GAAO,cAAcA,CAAK,EAAsB,SAAiBA,GAAO,OAAOA,GAAyB,oBAAX0lC,QAAyB1lC,EAAImxB,cAAgBuU,QAAU1lC,IAAQ0lC,OAAOxlC,UAAY,gBAAkBF,CAAK,EAAYg+C,EAAQh+C,EAAM,CAI9V,SAASu1K,EAAkBlxK,EAAQ4C,GAAS,IAAK,IAAI1H,EAAI,EAAGA,EAAI0H,EAAMxH,OAAQF,IAAK,CAAE,IAAIoyB,EAAa1qB,EAAM1H,GAAIoyB,EAAWH,WAAaG,EAAWH,aAAc,EAAOG,EAAWF,cAAe,EAAU,UAAWE,IAAYA,EAAWD,UAAW,GAAMzxB,OAAOgsB,eAAe5nB,EAAQstB,EAAWpuB,IAAKouB,EAAa,CAAE,CAM5T,SAASmsB,EAAgBjyC,GAAwJ,OAAnJiyC,EAAkB79C,OAAO+7B,eAAiB/7B,OAAOmxB,eAAiB,SAAyBvlB,GAAK,OAAOA,EAAE62B,WAAaziC,OAAOmxB,eAAevlB,EAAI,EAAUiyC,EAAgBjyC,EAAI,CAE5M,SAASod,EAAuB7T,GAAQ,QAAa,IAATA,EAAmB,MAAM,IAAIu/H,eAAe,6DAAgE,OAAOv/H,CAAM,CAIrK,SAASosK,EAAgB31K,EAAG9H,GAA+G,OAA1Gy9K,EAAkBvhL,OAAO+7B,gBAAkB,SAAyBnwB,EAAG9H,GAAsB,OAAjB8H,EAAE62B,UAAY3+B,EAAU8H,CAAG,EAAU21K,EAAgB31K,EAAG9H,EAAI,CAEzK,SAASg6C,EAAgB/9C,EAAKuD,EAAKtC,GAAiK,OAApJsC,KAAOvD,EAAOC,OAAOgsB,eAAejsB,EAAKuD,EAAK,CAAEtC,MAAOA,EAAOuwB,YAAY,EAAMC,cAAc,EAAMC,UAAU,IAAkB1xB,EAAIuD,GAAOtC,EAAgBjB,CAAK,CAmBhN,IAAI+gL,EAEJ,SAAUh4J,GAGR,SAASg4J,EAAiB95K,GACxB,IAAIwQ,EAiLJ,OA1NJ,SAAyBq2C,EAAUzpB,GAAe,KAAMypB,aAAoBzpB,GAAgB,MAAM,IAAI/8B,UAAU,oCAAwC,CA2CpJ2jB,CAAgBvlB,KAAMq7K,GAEtBtpK,EAvCJ,SAAoCrC,EAAMhV,GAAQ,OAAIA,GAA2B,WAAlB49C,EAAQ59C,IAAsC,oBAATA,EAA8C6oB,EAAuB7T,GAAtChV,CAA6C,CAuCpKy9C,CAA2Bn4C,KAAMo4C,EAAgBijI,GAAkB3gL,KAAKsF,KAAMuB,IAEtF82C,EAAgB90B,EAAuBxR,GAAQ,gBAAgB,WAC7D,OAAOA,EAAMxQ,MAAMw6K,aAAe/8K,MACpC,IAEAq5C,EAAgB90B,EAAuBxR,GAAQ,oBAAoB,SAAUpT,EAAQ2O,EAAOw3E,EAAOk3F,GAKjG,IAAIhlH,EAJCjlD,EAAMkqK,gBACTlqK,EAAMkqK,cAAgB,CAAC,GAMzB,IAAIC,EAAQ,WACVllH,EAAU,KAEVjlD,EAAMugB,OACR,EAeI/f,EAAO,CACT5T,OAAQA,EACRjF,GAfEsiL,GAAY,EACP,WACAhlH,IACHA,EAAUjoD,WAAWmtK,EAAOF,GAAY,GAE5C,EAEO,WACLvnG,aAAazd,GACbA,EAAUjoD,WAAWmtK,EAAOp3F,GAAS,EACvC,EAMAq3F,eAAgB,WACd,OAAOnlH,CACT,GAEFr4D,EAAOge,iBAAiBrP,EAAOiF,EAAK7Y,IACpCqY,EAAMkqK,cAAc3uK,GAASiF,CAC/B,IAEA8lC,EAAgB90B,EAAuBxR,GAAQ,iBAAiB,WAC1DA,EAAMkqK,eAAiBlqK,EAAMqqK,WAI7BrqK,EAAMxQ,MAAM86K,gBACdtqK,EAAMqqK,SAAW76D,YAAYxvG,EAAMugB,MAAOvgB,EAAMxQ,MAAM+6K,gBAGpDvqK,EAAMxQ,MAAMg7K,aACdxqK,EAAM4K,iBAAiB5K,EAAMyqK,eAAgB,SAAUzqK,EAAMxQ,MAAMk7K,YAAa1qK,EAAMxQ,MAAMm7K,gBAG1F3qK,EAAMxQ,MAAMo7K,aACd5qK,EAAM4K,iBAAiB3d,OAAQ,SAAU+S,EAAMxQ,MAAMq7K,YAAa7qK,EAAMxQ,MAAMs7K,iBAI/E9qK,EAAMxQ,MAAMu7K,aAAe/qK,EAAMugB,QACpC,IAEA+lB,EAAgB90B,EAAuBxR,GAAQ,gBAAgB,WAC7D,GAAIA,EAAMkqK,cAER,IAAK,IAAIc,KAAiBhrK,EAAMkqK,cAC9B,GAAIlqK,EAAMkqK,cAAchhL,eAAe8hL,GAAgB,CACrD,IAAIC,EAAejrK,EAAMkqK,cAAcc,GACvCtoG,aAAauoG,EAAab,kBAC1Ba,EAAar+K,OAAOmhB,oBAAoBi9J,EAAeC,EAAatjL,IACpEqY,EAAMkqK,cAAcc,GAAiB,IACvC,CAIJhrK,EAAMkqK,cAAgB,KAElBlqK,EAAMqqK,WACRrqK,EAAMqqK,SAAW96D,cAAcvvG,EAAMqqK,UAEzC,IAEA/jI,EAAgB90B,EAAuBxR,GAAQ,SAAS,WACtD,IACI8oK,EACAC,EAFA59J,EAAKnL,EAAMqmB,KAIf,IAAKlb,EACH,OAAOnL,EAAMpJ,MAKf,GAFAkyK,EApHN,SAAuBA,GASrB,YARmBv+K,IAAfu+K,EAAK5wI,QACP4wI,EAAK5wI,MAAQ4wI,EAAKM,MAAQN,EAAKhtB,WAGbvxJ,IAAhBu+K,EAAKzyB,SACPyyB,EAAKzyB,OAASyyB,EAAKK,OAASL,EAAK9sB,KAG5B8sB,CACT,CA0GaoC,CAAclrK,EAAMmrK,cAAchgK,EAAGigK,0BAExCprK,EAAMxQ,MAAMw6K,YAAa,CAC3B,IAAIqB,EAAqBrrK,EAAMxQ,MAAMw6K,YAAYoB,wBAEjDrC,EAAkB,CAChB/sB,IAAKqvB,EAAmBrvB,IACxBF,KAAMuvB,EAAmBvvB,KACzBqtB,OAAQkC,EAAmBlC,OAC3BC,MAAOiC,EAAmBjC,MAE9B,MACEL,EAAkB,CAChB/sB,IAAK,EACLF,KAAM,EACNqtB,OAAQl8K,OAAOq+K,aAAe1kK,SAASC,gBAAgBE,aACvDqiK,MAAOn8K,OAAOs+K,YAAc3kK,SAASC,gBAAgBC,aAKzD,IAAIswB,EAASp3B,EAAMxQ,MAAM4nC,QAAU,CAAC,EACK,WAApBmP,EAAQnP,KAG3B2xI,EAAgB/sB,KAAO5kH,EAAO4kH,KAAO,EACrC+sB,EAAgBjtB,MAAQ1kH,EAAO0kH,MAAQ,EACvCitB,EAAgBI,QAAU/xI,EAAO+xI,QAAU,EAC3CJ,EAAgBK,OAAShyI,EAAOgyI,OAAS,GAG3C,IAAIoC,EAAiB,CACnBxvB,IAAK8sB,EAAK9sB,KAAO+sB,EAAgB/sB,IACjCF,KAAMgtB,EAAKhtB,MAAQitB,EAAgBjtB,KACnCqtB,OAAQL,EAAKK,QAAUJ,EAAgBI,OACvCC,MAAON,EAAKM,OAASL,EAAgBK,OAGnCqC,EAAU3C,EAAKzyB,OAAS,GAAKyyB,EAAK5wI,MAAQ,EAC1CwzI,EAAYD,GAAWD,EAAexvB,KAAOwvB,EAAe1vB,MAAQ0vB,EAAerC,QAAUqC,EAAepC,MAEhH,GAAIqC,GAAWzrK,EAAMxQ,MAAMm8K,kBAAmB,CAC5C,IAAIC,EAAiB9C,EAAK9sB,KAAO+sB,EAAgBI,QAAUL,EAAKK,QAAUJ,EAAgB/sB,KAAO8sB,EAAKhtB,MAAQitB,EAAgBK,OAASN,EAAKM,OAASL,EAAgBjtB,KAExH,kBAAlC97I,EAAMxQ,MAAMm8K,oBACrBC,EAAiBJ,EAAexrK,EAAMxQ,MAAMm8K,oBAK9CD,EAAY1rK,EAAMxQ,MAAMq8K,YAAcD,GAAkB9C,EAAK9sB,KAAO+sB,EAAgBI,OAASnpK,EAAMxQ,MAAMq8K,YAAcD,CACzH,CAGgC,kBAArBx0I,EAAO6xI,WAAkD,kBAAjB7xI,EAAO5tC,QACxD6D,QAAQ8O,KAAK,oLAAqLi7B,EAAO6xI,UAAW7xI,EAAO5tC,OAC3NkiL,EAAY5B,IAAmE1yI,EAAQ0xI,EAAMC,IAG/F,IAAInyK,EAAQoJ,EAAMpJ,MAalB,OAXIoJ,EAAMpJ,MAAM80K,YAAcA,IAC5B90K,EAAQ,CACN80K,UAAWA,EACXF,eAAgBA,GAGlBxrK,EAAM2R,SAAS/a,GAEXoJ,EAAMxQ,MAAMs8K,UAAU9rK,EAAMxQ,MAAMs8K,SAASJ,IAG1C90K,CACT,IAEAoJ,EAAMpJ,MAAQ,CACZ80K,UAAW,KACXF,eAAgB,CAAC,GAEZxrK,CACT,CAvNF,IAAsB4sB,EAAaovG,EAAYC,EAmR7C,OA3QF,SAAmBiD,EAAUC,GAAc,GAA0B,oBAAfA,GAA4C,OAAfA,EAAuB,MAAM,IAAItvI,UAAU,sDAAyDqvI,EAASz2I,UAAYD,OAAO2S,OAAOgkI,GAAcA,EAAW12I,UAAW,CAAEixB,YAAa,CAAElwB,MAAO01I,EAAUjlH,UAAU,EAAMD,cAAc,KAAemlH,GAAY4qC,EAAgB7qC,EAAUC,EAAa,CA0B9X1rH,CAAU61J,EAAkBh4J,GAlCRsb,EAyNP08I,GAzNoBttC,EAyNF,CAAC,CAC9BlwI,IAAK,oBACLtC,MAAO,WACLyE,KAAKo4B,KAAOqjJ,EAA+Cl9J,EAAE6vJ,YAAYpuK,MAErEA,KAAKuB,MAAM+uD,QACbtwD,KAAK89K,eAET,GACC,CACDjgL,IAAK,uBACLtC,MAAO,WACLyE,KAAK+9K,cACP,GACC,CACDlgL,IAAK,qBACLtC,MAAO,SAA4ByiL,GAEjCh+K,KAAKo4B,KAAOqjJ,EAA+Cl9J,EAAE6vJ,YAAYpuK,MAErEA,KAAKuB,MAAM+uD,SAAW0tH,EAAU1tH,QAClCtwD,KAAK0jB,SAAS,CACZ+5J,UAAW,KACXF,eAAgB,CAAC,IAEnBv9K,KAAK89K,iBACK99K,KAAKuB,MAAM+uD,QACrBtwD,KAAK+9K,cAET,GACC,CACDlgL,IAAK,gBACLtC,MAAO,SAAuBs/K,GAC5B,MAAO,CACL9sB,IAAKz9I,KAAK2nB,MAAM4iJ,EAAK9sB,KACrBF,KAAMv9I,KAAK2nB,MAAM4iJ,EAAKhtB,MACtBqtB,OAAQ5qK,KAAK2nB,MAAM4iJ,EAAKK,QACxBC,MAAO7qK,KAAK2nB,MAAM4iJ,EAAKM,OAE3B,GAKC,CACDt9K,IAAK,SACLtC,MAAO,WACL,OAAIyE,KAAKuB,MAAMyiB,oBAAoBiN,SAC1BjxB,KAAKuB,MAAMyiB,SAAS,CACzBy5J,UAAWz9K,KAAK2I,MAAM80K,UACtBF,eAAgBv9K,KAAK2I,MAAM40K,iBAIxBhC,EAA2Ch9J,EAAE0/J,SAASC,KAAKl+K,KAAKuB,MAAMyiB,SAC/E,MAhR0E6rJ,EAAkBlxI,EAAYnkC,UAAWuzI,GAAiBC,GAAa6hC,EAAkBlxI,EAAaqvG,GAmR3KqtC,CACT,CAnPA,CAmPEE,EAA2Ch9J,EAAE0F,WAE/Co0B,EAAgBgjI,EAAkB,eAAgB,CAChD/qH,QAAQ,EACRotH,mBAAmB,EACnBE,YAAa,EACbrB,aAAa,EACbE,YAAa,IACbC,gBAAiB,EACjBC,aAAa,EACbC,YAAa,IACbC,gBAAiB,EACjBR,eAAe,EACfC,cAAe,IACfQ,aAAa,EACb3zI,OAAQ,CAAC,EACT4yI,YAAa,KACb/3J,SAAUu3J,EAA2Ch9J,EAAEC,cAAc,OAAQ,QAG/E65B,EAAgBgjI,EAAkB,YAAa,CAC7CwC,SAAUlC,EAAgDp9J,EAAE8T,KAC5Di+B,OAAQqrH,EAAgDp9J,EAAEyuH,KAC1D0wC,kBAAmB/B,EAAgDp9J,EAAEgvH,UAAU,CAACouC,EAAgDp9J,EAAEyuH,KAAM2uC,EAAgDp9J,EAAE+uH,MAAM,CAAC,MAAO,QAAS,SAAU,WAC3NwvC,YAAanB,EAAgDp9J,EAAEyuH,KAC/D7jG,OAAQwyI,EAAgDp9J,EAAEgvH,UAAU,CAACouC,EAAgDp9J,EAAEivH,MAAM,CAC3HugB,IAAK4tB,EAAgDp9J,EAAEmjB,OACvDmsH,KAAM8tB,EAAgDp9J,EAAEmjB,OACxDw5I,OAAQS,EAAgDp9J,EAAEmjB,OAC1Dy5I,MAAOQ,EAAgDp9J,EAAEmjB,SAE3Di6I,EAAgDp9J,EAAEivH,MAAM,CACtDwtC,UAAWW,EAAgDp9J,EAAE+uH,MAAM,CAAC,MAAO,QAAS,SAAU,SAC9F/xI,MAAOogL,EAAgDp9J,EAAEmjB,WAE3D66I,YAAaZ,EAAgDp9J,EAAEyuH,KAC/DyvC,YAAad,EAAgDp9J,EAAEmjB,OAC/Dg7I,eAAgBf,EAAgDp9J,EAAEmjB,OAClEi7I,YAAahB,EAAgDp9J,EAAEyuH,KAC/D4vC,YAAajB,EAAgDp9J,EAAEmjB,OAC/Dm7I,eAAgBlB,EAAgDp9J,EAAEmjB,OAClE26I,cAAeV,EAAgDp9J,EAAEyuH,KACjEsvC,cAAeX,EAAgDp9J,EAAEmjB,OACjEq6I,YAA+B,qBAAX/8K,OAAyB28K,EAAgDp9J,EAAE6uH,WAAWpuI,OAAOgnD,SAAW21H,EAAgDp9J,EAAE8lB,IAC9KrgB,SAAU23J,EAAgDp9J,EAAEgvH,UAAU,CAACouC,EAAgDp9J,EAAE2uH,QAASyuC,EAAgDp9J,EAAE8T,OACpLurJ,YAAajC,EAAgDp9J,EAAEmjB,QAK3D,EAEC,SAAStoC,EAAQC,EAASkhL,GAEjC,aAUA,IAAIpuC,EAAuBouC,EAAoB,GAE/C,SAASnuC,IAAiB,CAC1B,SAASC,IAA0B,CACnCA,EAAuBC,kBAAoBF,EAE3ChzI,EAAOC,QAAU,WACf,SAASkzI,EAAKhrI,EAAOirI,EAAUC,EAAextI,EAAUytI,EAAcC,GACpE,GAAIA,IAAWR,EAAf,CAIA,IAAI9lI,EAAM,IAAIhD,MACZ,mLAKF,MADAgD,EAAI5H,KAAO,sBACL4H,CAPN,CAQF,CAEA,SAASumI,IACP,OAAOL,CACT,CAHAA,EAAKM,WAAaN,EAMlB,IAAIO,EAAiB,CACnB/4F,MAAOw4F,EACPS,KAAMT,EACNl6G,KAAMk6G,EACN7qG,OAAQ6qG,EACR/hH,OAAQ+hH,EACRl4G,OAAQk4G,EACRxsG,OAAQwsG,EAERloG,IAAKkoG,EACLU,QAASL,EACTM,QAASX,EACTY,YAAaZ,EACba,WAAYR,EACZx0G,KAAMm0G,EACNc,SAAUT,EACVU,MAAOV,EACPW,UAAWX,EACXY,MAAOZ,EACPa,MAAOb,EAEPc,eAAgBrB,EAChBC,kBAAmBF,GAKrB,OAFAU,EAAea,UAAYb,EAEpBA,CACT,CAGM,EAEC,SAAS1zI,EAAQC,EAASkhL,GAEjC,aAYAnhL,EAAOC,QAFoB,8CAKrB,GAEN,EAhlBED,EAAOC,QAAU+G,EAAQqiB,EAAQ,OAAUA,EAAQ,4CCOxC,IAAI/mB,EAAE+mB,EAAQ,OAAS5lB,EAAEmjC,OAAOulB,IAAI,iBAAiBE,EAAEzlB,OAAOulB,IAAI,kBAAkBhjC,EAAEhoB,OAAOC,UAAUS,eAAewF,EAAE/E,EAAEy3I,mDAAmDouB,kBAAkBljK,EAAE,CAACR,KAAI,EAAGyzI,KAAI,EAAG6sC,QAAO,EAAGC,UAAS,GAChP,SAASnzI,EAAE/6B,EAAEqO,EAAEinC,GAAG,IAAI3yC,EAAEc,EAAE,CAAC,EAAEhP,EAAE,KAAK4nC,EAAE,KAAiF,IAAI15B,UAAhF,IAAS2yC,IAAI7gD,EAAE,GAAG6gD,QAAG,IAASjnC,EAAE1gB,MAAM8G,EAAE,GAAG4Z,EAAE1gB,UAAK,IAAS0gB,EAAE+yH,MAAM/kG,EAAEhuB,EAAE+yH,KAAc/yH,EAAEgE,EAAE7nB,KAAK6jB,EAAE1L,KAAKxU,EAAEpD,eAAe4X,KAAKc,EAAEd,GAAG0L,EAAE1L,IAAI,GAAG3C,GAAGA,EAAE8zC,aAAa,IAAInxC,KAAK0L,EAAErO,EAAE8zC,kBAAe,IAASrwC,EAAEd,KAAKc,EAAEd,GAAG0L,EAAE1L,IAAI,MAAM,CAAC6yC,SAAS7oD,EAAEgD,KAAKqQ,EAAErS,IAAI8G,EAAE2sI,IAAI/kG,EAAEhrC,MAAMoS,EAAEkmJ,OAAOp5J,EAAEy7B,QAAQ,CAAC7iC,EAAQ4sD,SAASR,EAAEpsD,EAAQglL,IAAIpzI,EAAE5xC,EAAQilL,KAAKrzI,oCCD7V,IAAIwa,EAAEzlB,OAAOulB,IAAI,iBAAiB9kD,EAAEu/B,OAAOulB,IAAI,gBAAgBlnD,EAAE2hC,OAAOulB,IAAI,kBAAkBta,EAAEjL,OAAOulB,IAAI,qBAAqBje,EAAEtH,OAAOulB,IAAI,kBAAkBrY,EAAElN,OAAOulB,IAAI,kBAAkB1a,EAAE7K,OAAOulB,IAAI,iBAAiB5jD,EAAEq+B,OAAOulB,IAAI,qBAAqBla,EAAErL,OAAOulB,IAAI,kBAAkBnrD,EAAE4lC,OAAOulB,IAAI,cAAcrb,EAAElK,OAAOulB,IAAI,cAActY,EAAEjN,OAAOhL,SACzW,IAAIsX,EAAE,CAACmsH,UAAU,WAAW,OAAM,CAAE,EAAEM,mBAAmB,WAAW,EAAED,oBAAoB,WAAW,EAAEH,gBAAgB,WAAW,GAAGppI,EAAEh1B,OAAOuzI,OAAOpiG,EAAE,CAAC,EAAE,SAASE,EAAErtB,EAAE1L,EAAElO,GAAG3E,KAAKuB,MAAMgd,EAAEve,KAAKrC,QAAQkV,EAAE7S,KAAKs4J,KAAK5sH,EAAE1rC,KAAKo5J,QAAQz0J,GAAG2nC,CAAC,CACwI,SAAS9gB,IAAI,CAAyB,SAASme,EAAEprB,EAAE1L,EAAElO,GAAG3E,KAAKuB,MAAMgd,EAAEve,KAAKrC,QAAQkV,EAAE7S,KAAKs4J,KAAK5sH,EAAE1rC,KAAKo5J,QAAQz0J,GAAG2nC,CAAC,CADxPV,EAAEpxC,UAAUswK,iBAAiB,CAAC,EACpQl/H,EAAEpxC,UAAUkpB,SAAS,SAASnF,EAAE1L,GAAG,GAAG,kBAAkB0L,GAAG,oBAAoBA,GAAG,MAAMA,EAAE,MAAMlb,MAAM,yHAAyHrD,KAAKo5J,QAAQT,gBAAgB34J,KAAKue,EAAE1L,EAAE,WAAW,EAAE+4B,EAAEpxC,UAAU+jL,YAAY,SAAShgK,GAAGve,KAAKo5J,QAAQL,mBAAmB/4J,KAAKue,EAAE,cAAc,EAAgBiN,EAAEhxB,UAAUoxC,EAAEpxC,UAAsF,IAAIgyC,EAAE7C,EAAEnvC,UAAU,IAAIgxB,EACrfghB,EAAE/gB,YAAYke,EAAEpa,EAAEid,EAAEZ,EAAEpxC,WAAWgyC,EAAE0sH,sBAAqB,EAAG,IAAI3tH,EAAE7hC,MAAMkf,QAAQunI,EAAE51J,OAAOC,UAAUS,eAAewxC,EAAE,CAACvQ,QAAQ,MAAMkP,EAAE,CAACvtC,KAAI,EAAGyzI,KAAI,EAAG6sC,QAAO,EAAGC,UAAS,GACtK,SAASlzI,EAAE3sB,EAAE1L,EAAElO,GAAG,IAAIgP,EAAEzD,EAAE,CAAC,EAAErT,EAAE,KAAK0vC,EAAE,KAAK,GAAG,MAAM15B,EAAE,IAAIc,UAAK,IAASd,EAAEy+H,MAAM/kG,EAAE15B,EAAEy+H,UAAK,IAASz+H,EAAEhV,MAAMhB,EAAE,GAAGgW,EAAEhV,KAAKgV,EAAEs9I,EAAEz1J,KAAKmY,EAAEc,KAAKy3B,EAAEnwC,eAAe0Y,KAAKzD,EAAEyD,GAAGd,EAAEc,IAAI,IAAI6xC,EAAE5mD,UAAU7E,OAAO,EAAE,GAAG,IAAIyrD,EAAEt1C,EAAE8T,SAASrf,OAAO,GAAG,EAAE6gD,EAAE,CAAC,IAAI,IAAI9pD,EAAEgO,MAAM87C,GAAGjjC,EAAE,EAAEA,EAAEijC,EAAEjjC,IAAI7mB,EAAE6mB,GAAG3jB,UAAU2jB,EAAE,GAAGrS,EAAE8T,SAAStoB,CAAC,CAAC,GAAG6iB,GAAGA,EAAEylC,aAAa,IAAIrwC,KAAK6xC,EAAEjnC,EAAEylC,kBAAe,IAAS9zC,EAAEyD,KAAKzD,EAAEyD,GAAG6xC,EAAE7xC,IAAI,MAAM,CAAC+xC,SAASD,EAAE5lD,KAAK0e,EAAE1gB,IAAIhB,EAAEy0I,IAAI/kG,EAAEhrC,MAAM2O,EAAE2pJ,OAAOptH,EAAEvQ,QAAQ,CAChV,SAASpS,EAAEvL,GAAG,MAAM,kBAAkBA,GAAG,OAAOA,GAAGA,EAAEmnC,WAAWD,CAAC,CAAoG,IAAIrzB,EAAE,OAAO,SAAS0Y,EAAEvsB,EAAE1L,GAAG,MAAM,kBAAkB0L,GAAG,OAAOA,GAAG,MAAMA,EAAE1gB,IAA7K,SAAgB0gB,GAAG,IAAI1L,EAAE,CAAC,IAAI,KAAK,IAAI,MAAM,MAAM,IAAI0L,EAAE5a,QAAQ,SAAQ,SAAS4a,GAAG,OAAO1L,EAAE0L,EAAE,GAAE,CAA+EigK,CAAO,GAAGjgK,EAAE1gB,KAAKgV,EAAEpY,SAAS,GAAG,CAC/W,SAASkwC,EAAEpsB,EAAE1L,EAAElO,EAAEgP,EAAEzD,GAAG,IAAIrT,SAAS0hB,EAAK,cAAc1hB,GAAG,YAAYA,IAAE0hB,EAAE,MAAK,IAAIguB,GAAE,EAAG,GAAG,OAAOhuB,EAAEguB,GAAE,OAAQ,OAAO1vC,GAAG,IAAK,SAAS,IAAK,SAAS0vC,GAAE,EAAG,MAAM,IAAK,SAAS,OAAOhuB,EAAEmnC,UAAU,KAAKD,EAAE,KAAKhlD,EAAE8rC,GAAE,GAAI,GAAGA,EAAE,OAAWr8B,EAAEA,EAANq8B,EAAEhuB,GAASA,EAAE,KAAK5K,EAAE,IAAIm3B,EAAEyB,EAAE,GAAG54B,EAAE43B,EAAEr7B,IAAIvL,EAAE,GAAG,MAAM4Z,IAAI5Z,EAAE4Z,EAAE5a,QAAQyuB,EAAE,OAAO,KAAKuY,EAAEz6B,EAAE2C,EAAElO,EAAE,IAAG,SAAS4Z,GAAG,OAAOA,CAAC,KAAI,MAAMrO,IAAI4Z,EAAE5Z,KAAKA,EADnW,SAAWqO,EAAE1L,GAAG,MAAM,CAAC6yC,SAASD,EAAE5lD,KAAK0e,EAAE1e,KAAKhC,IAAIgV,EAAEy+H,IAAI/yH,EAAE+yH,IAAI/vI,MAAMgd,EAAEhd,MAAMs4J,OAAOt7I,EAAEs7I,OAAO,CACyQtvB,CAAEr6H,EAAEvL,IAAIuL,EAAErS,KAAK0uC,GAAGA,EAAE1uC,MAAMqS,EAAErS,IAAI,IAAI,GAAGqS,EAAErS,KAAK8F,QAAQyuB,EAAE,OAAO,KAAK7T,IAAI1L,EAAE3X,KAAKgV,IAAI,EAAyB,GAAvBq8B,EAAE,EAAE54B,EAAE,KAAKA,EAAE,IAAIA,EAAE,IAAO43B,EAAEhtB,GAAG,IAAI,IAAIinC,EAAE,EAAEA,EAAEjnC,EAAExkB,OAAOyrD,IAAI,CAC/e,IAAI9pD,EAAEiY,EAAEm3B,EADwejuC,EACrf0hB,EAAEinC,GAAeA,GAAGjZ,GAAG5B,EAAE9tC,EAAEgW,EAAElO,EAAEjJ,EAAEwU,EAAE,MAAM,GAAGxU,EAPsU,SAAW6iB,GAAG,OAAG,OAAOA,GAAG,kBAAkBA,EAAS,KAAsC,oBAAjCA,EAAE0uB,GAAG1uB,EAAE0uB,IAAI1uB,EAAE,eAA0CA,EAAE,IAAI,CAO5bonC,CAAEpnC,GAAG,oBAAoB7iB,EAAE,IAAI6iB,EAAE7iB,EAAEhB,KAAK6jB,GAAGinC,EAAE,IAAI3oD,EAAE0hB,EAAE/P,QAAQoY,MAA6B2lB,GAAG5B,EAA1B9tC,EAAEA,EAAEtB,MAA0BsX,EAAElO,EAAtBjJ,EAAEiY,EAAEm3B,EAAEjuC,EAAE2oD,KAAkBt1C,QAAQ,GAAG,WAAWrT,EAAE,MAAMgW,EAAEtQ,OAAOgc,GAAGlb,MAAM,mDAAmD,oBAAoBwP,EAAE,qBAAqBtY,OAAO8wB,KAAK9M,GAAG9gB,KAAK,MAAM,IAAIoV,GAAG,6EAA6E,OAAO05B,CAAC,CACzZ,SAASjN,EAAE/gB,EAAE1L,EAAElO,GAAG,GAAG,MAAM4Z,EAAE,OAAOA,EAAE,IAAI5K,EAAE,GAAGzD,EAAE,EAAmD,OAAjDy6B,EAAEpsB,EAAE5K,EAAE,GAAG,IAAG,SAAS4K,GAAG,OAAO1L,EAAEnY,KAAKiK,EAAE4Z,EAAErO,IAAI,IAAUyD,CAAC,CAAC,SAASy5B,EAAE7uB,GAAG,IAAI,IAAIA,EAAEkgK,QAAQ,CAAC,IAAI5rK,EAAE0L,EAAEmgK,SAAQ7rK,EAAEA,KAAM/D,MAAK,SAAS+D,GAAM,IAAI0L,EAAEkgK,UAAU,IAAIlgK,EAAEkgK,UAAQlgK,EAAEkgK,QAAQ,EAAElgK,EAAEmgK,QAAQ7rK,EAAC,IAAE,SAASA,GAAM,IAAI0L,EAAEkgK,UAAU,IAAIlgK,EAAEkgK,UAAQlgK,EAAEkgK,QAAQ,EAAElgK,EAAEmgK,QAAQ7rK,EAAC,KAAI,IAAI0L,EAAEkgK,UAAUlgK,EAAEkgK,QAAQ,EAAElgK,EAAEmgK,QAAQ7rK,EAAE,CAAC,GAAG,IAAI0L,EAAEkgK,QAAQ,OAAOlgK,EAAEmgK,QAAQv2I,QAAQ,MAAM5pB,EAAEmgK,OAAQ,CAC5Z,IAAItZ,EAAE,CAAClpI,QAAQ,MAAM/J,EAAE,CAAC8wH,WAAW,MAAMzY,EAAE,CAACixB,uBAAuB2J,EAAEtiB,wBAAwB3wH,EAAEovI,kBAAkB90H,GAAGpzC,EAAQ4kL,SAAS,CAACl6K,IAAIu7B,EAAE7W,QAAQ,SAASlK,EAAE1L,EAAElO,GAAG26B,EAAE/gB,GAAE,WAAW1L,EAAE/E,MAAM9N,KAAKpB,UAAU,GAAE+F,EAAE,EAAE+wC,MAAM,SAASn3B,GAAG,IAAI1L,EAAE,EAAuB,OAArBysB,EAAE/gB,GAAE,WAAW1L,GAAG,IAAUA,CAAC,EAAE+8F,QAAQ,SAASrxF,GAAG,OAAO+gB,EAAE/gB,GAAE,SAASA,GAAG,OAAOA,CAAC,KAAI,EAAE,EAAE2/J,KAAK,SAAS3/J,GAAG,IAAIuL,EAAEvL,GAAG,MAAMlb,MAAM,yEAAyE,OAAOkb,CAAC,GAAGllB,EAAQ4qB,UAAU2nB,EAAEvyC,EAAQ4sD,SAAS5nD,EACnehF,EAAQ+sD,SAAS9e,EAAEjuC,EAAQslL,cAAch1I,EAAEtwC,EAAQgtD,WAAWpb,EAAE5xC,EAAQitD,SAASjb,EAAEhyC,EAAQ85I,mDAAmD3I,EAC9InxI,EAAQulL,aAAa,SAASrgK,EAAE1L,EAAElO,GAAG,GAAG,OAAO4Z,QAAG,IAASA,EAAE,MAAMlb,MAAM,iFAAiFkb,EAAE,KAAK,IAAI5K,EAAE4b,EAAE,CAAC,EAAEhR,EAAEhd,OAAO2O,EAAEqO,EAAE1gB,IAAIhB,EAAE0hB,EAAE+yH,IAAI/kG,EAAEhuB,EAAEs7I,OAAO,GAAG,MAAMhnJ,EAAE,CAAoE,QAAnE,IAASA,EAAEy+H,MAAMz0I,EAAEgW,EAAEy+H,IAAI/kG,EAAEE,EAAEvQ,cAAS,IAASrpB,EAAEhV,MAAMqS,EAAE,GAAG2C,EAAEhV,KAAQ0gB,EAAE1e,MAAM0e,EAAE1e,KAAKmkD,aAAa,IAAIwB,EAAEjnC,EAAE1e,KAAKmkD,aAAa,IAAItoD,KAAKmX,EAAEs9I,EAAEz1J,KAAKmY,EAAEnX,KAAK0vC,EAAEnwC,eAAeS,KAAKiY,EAAEjY,QAAG,IAASmX,EAAEnX,SAAI,IAAS8pD,EAAEA,EAAE9pD,GAAGmX,EAAEnX,GAAG,CAAC,IAAIA,EAAEkD,UAAU7E,OAAO,EAAE,GAAG,IAAI2B,EAAEiY,EAAEqQ,SAASrf,OAAO,GAAG,EAAEjJ,EAAE,CAAC8pD,EAAE97C,MAAMhO,GACrf,IAAI,IAAI6mB,EAAE,EAAEA,EAAE7mB,EAAE6mB,IAAIijC,EAAEjjC,GAAG3jB,UAAU2jB,EAAE,GAAG5O,EAAEqQ,SAASwhC,CAAC,CAAC,MAAM,CAACE,SAASD,EAAE5lD,KAAK0e,EAAE1e,KAAKhC,IAAIqS,EAAEohI,IAAIz0I,EAAE0E,MAAMoS,EAAEkmJ,OAAOttH,EAAE,EAAElzC,EAAQwlL,cAAc,SAAStgK,GAAqK,OAAlKA,EAAE,CAACmnC,SAAS7a,EAAEwrH,cAAc93I,EAAEugK,eAAevgK,EAAEwgK,aAAa,EAAEC,SAAS,KAAKC,SAAS,KAAKC,cAAc,KAAKC,YAAY,OAAQH,SAAS,CAACt5H,SAASxY,EAAEx6B,SAAS6L,GAAUA,EAAE0gK,SAAS1gK,CAAC,EAAEllB,EAAQmlB,cAAc0sB,EAAE7xC,EAAQ+lL,cAAc,SAAS7gK,GAAG,IAAI1L,EAAEq4B,EAAExrC,KAAK,KAAK6e,GAAY,OAAT1L,EAAEhT,KAAK0e,EAAS1L,CAAC,EAAExZ,EAAQgmL,UAAU,WAAW,MAAM,CAACnjJ,QAAQ,KAAK,EAC9d7iC,EAAQimL,WAAW,SAAS/gK,GAAG,MAAM,CAACmnC,SAAS/jD,EAAEkiB,OAAOtF,EAAE,EAAEllB,EAAQkmL,eAAez1J,EAAEzwB,EAAQ0pB,KAAK,SAASxE,GAAG,MAAM,CAACmnC,SAASxb,EAAEuqG,SAAS,CAACgqC,SAAS,EAAEC,QAAQngK,GAAGm2H,MAAMtnG,EAAE,EAAE/zC,EAAQmmL,KAAK,SAASjhK,EAAE1L,GAAG,MAAM,CAAC6yC,SAAStrD,EAAEyF,KAAK0e,EAAEkmC,aAAQ,IAAS5xC,EAAE,KAAKA,EAAE,EAAExZ,EAAQomL,gBAAgB,SAASlhK,GAAG,IAAI1L,EAAEsf,EAAE8wH,WAAW9wH,EAAE8wH,WAAW,CAAC,EAAE,IAAI1kI,GAAG,CAAC,QAAQ4T,EAAE8wH,WAAWpwI,CAAC,CAAC,EAAExZ,EAAQqmL,aAAa,WAAW,MAAMr8K,MAAM,2DAA4D,EAC1chK,EAAQgmK,YAAY,SAAS9gJ,EAAE1L,GAAG,OAAOuyJ,EAAElpI,QAAQmjI,YAAY9gJ,EAAE1L,EAAE,EAAExZ,EAAQimK,WAAW,SAAS/gJ,GAAG,OAAO6mJ,EAAElpI,QAAQojI,WAAW/gJ,EAAE,EAAEllB,EAAQ0mK,cAAc,WAAW,EAAE1mK,EAAQ2mK,iBAAiB,SAASzhJ,GAAG,OAAO6mJ,EAAElpI,QAAQ8jI,iBAAiBzhJ,EAAE,EAAEllB,EAAQkmK,UAAU,SAAShhJ,EAAE1L,GAAG,OAAOuyJ,EAAElpI,QAAQqjI,UAAUhhJ,EAAE1L,EAAE,EAAExZ,EAAQ+mK,MAAM,WAAW,OAAOgF,EAAElpI,QAAQkkI,OAAO,EAAE/mK,EAAQmmK,oBAAoB,SAASjhJ,EAAE1L,EAAElO,GAAG,OAAOygK,EAAElpI,QAAQsjI,oBAAoBjhJ,EAAE1L,EAAElO,EAAE,EAC7btL,EAAQomK,mBAAmB,SAASlhJ,EAAE1L,GAAG,OAAOuyJ,EAAElpI,QAAQujI,mBAAmBlhJ,EAAE1L,EAAE,EAAExZ,EAAQqmK,gBAAgB,SAASnhJ,EAAE1L,GAAG,OAAOuyJ,EAAElpI,QAAQwjI,gBAAgBnhJ,EAAE1L,EAAE,EAAExZ,EAAQsmK,QAAQ,SAASphJ,EAAE1L,GAAG,OAAOuyJ,EAAElpI,QAAQyjI,QAAQphJ,EAAE1L,EAAE,EAAExZ,EAAQumK,WAAW,SAASrhJ,EAAE1L,EAAElO,GAAG,OAAOygK,EAAElpI,QAAQ0jI,WAAWrhJ,EAAE1L,EAAElO,EAAE,EAAEtL,EAAQwmK,OAAO,SAASthJ,GAAG,OAAO6mJ,EAAElpI,QAAQ2jI,OAAOthJ,EAAE,EAAEllB,EAAQymK,SAAS,SAASvhJ,GAAG,OAAO6mJ,EAAElpI,QAAQ4jI,SAASvhJ,EAAE,EAAEllB,EAAQ8mK,qBAAqB,SAAS5hJ,EAAE1L,EAAElO,GAAG,OAAOygK,EAAElpI,QAAQikI,qBAAqB5hJ,EAAE1L,EAAElO,EAAE,EAC/etL,EAAQ4mK,cAAc,WAAW,OAAOmF,EAAElpI,QAAQ+jI,eAAe,EAAE5mK,EAAQwa,QAAQ,6CCtBjFza,EAAOC,QAAU,EAAjBD,2CCAAA,EAAOC,QAAU,EAAjBD,yCCMW,SAASsC,EAAE6iB,EAAE1L,GAAG,IAAI3C,EAAEqO,EAAExkB,OAAOwkB,EAAErjB,KAAK2X,GAAG0L,EAAE,KAAK,EAAErO,GAAG,CAAC,IAAIyD,EAAEzD,EAAE,IAAI,EAAEvL,EAAE4Z,EAAE5K,GAAG,KAAG,EAAE6xC,EAAE7gD,EAAEkO,IAA0B,MAAM0L,EAA7BA,EAAE5K,GAAGd,EAAE0L,EAAErO,GAAGvL,EAAEuL,EAAEyD,CAAc,CAAC,CAAC,SAAS44B,EAAEhuB,GAAG,OAAO,IAAIA,EAAExkB,OAAO,KAAKwkB,EAAE,EAAE,CAAC,SAAS1hB,EAAE0hB,GAAG,GAAG,IAAIA,EAAExkB,OAAO,OAAO,KAAK,IAAI8Y,EAAE0L,EAAE,GAAGrO,EAAEqO,EAAEna,MAAM,GAAG8L,IAAI2C,EAAE,CAAC0L,EAAE,GAAGrO,EAAEqO,EAAE,IAAI,IAAI5K,EAAE,EAAEhP,EAAE4Z,EAAExkB,OAAOsxC,EAAE1mC,IAAI,EAAEgP,EAAE03B,GAAG,CAAC,IAAI9oB,EAAE,GAAG5O,EAAE,GAAG,EAAE4b,EAAEhR,EAAEgE,GAAG9hB,EAAE8hB,EAAE,EAAEnoB,EAAEmkB,EAAE9d,GAAG,GAAG,EAAE+kD,EAAEj2B,EAAErf,GAAGzP,EAAEkE,GAAG,EAAE6gD,EAAEprD,EAAEm1B,IAAIhR,EAAE5K,GAAGvZ,EAAEmkB,EAAE9d,GAAGyP,EAAEyD,EAAElT,IAAI8d,EAAE5K,GAAG4b,EAAEhR,EAAEgE,GAAGrS,EAAEyD,EAAE4O,OAAQ,MAAG9hB,EAAEkE,GAAG,EAAE6gD,EAAEprD,EAAE8V,IAA0B,MAAMqO,EAA7BA,EAAE5K,GAAGvZ,EAAEmkB,EAAE9d,GAAGyP,EAAEyD,EAAElT,CAAc,EAAC,CAAC,OAAOoS,CAAC,CAC3c,SAAS2yC,EAAEjnC,EAAE1L,GAAG,IAAI3C,EAAEqO,EAAEohK,UAAU9sK,EAAE8sK,UAAU,OAAO,IAAIzvK,EAAEA,EAAEqO,EAAExS,GAAG8G,EAAE9G,EAAE,CAAC,GAAG,kBAAkBqsG,aAAa,oBAAoBA,YAAY7gG,IAAI,CAAC,IAAIkuC,EAAE2yD,YAAY/+G,EAAQklJ,aAAa,WAAW,OAAO94F,EAAEluC,KAAK,CAAC,KAAK,CAAC,IAAIlZ,EAAE0B,KAAKkrC,EAAE5sC,EAAEkZ,MAAMle,EAAQklJ,aAAa,WAAW,OAAOlgJ,EAAEkZ,MAAM0zB,CAAC,CAAC,CAAC,IAAI3D,EAAE,GAAG4F,EAAE,GAAGrC,EAAE,EAAElpC,EAAE,KAAKuoC,EAAE,EAAE+C,GAAE,EAAG0Y,GAAE,EAAGrZ,GAAE,EAAGZ,EAAE,oBAAoB38B,WAAWA,WAAW,KAAK68B,EAAE,oBAAoB6oC,aAAaA,aAAa,KAAKjpD,EAAE,qBAAqB+U,aAAaA,aAAa,KACnT,SAASoJ,EAAEprB,GAAG,IAAI,IAAI1L,EAAE05B,EAAEW,GAAG,OAAOr6B,GAAG,CAAC,GAAG,OAAOA,EAAEotC,SAASpjD,EAAEqwC,OAAQ,MAAGr6B,EAAE4+F,WAAWlzF,GAAgD,MAA9C1hB,EAAEqwC,GAAGr6B,EAAE8sK,UAAU9sK,EAAEquH,eAAexlI,EAAE4rC,EAAEz0B,EAAa,CAACA,EAAE05B,EAAEW,EAAE,CAAC,CAAC,SAASV,EAAEjuB,GAAa,GAAV+tB,GAAE,EAAG3C,EAAEprB,IAAOonC,EAAE,GAAG,OAAOpZ,EAAEjF,GAAGqe,GAAE,EAAGpa,EAAE4kH,OAAO,CAAC,IAAIt9I,EAAE05B,EAAEW,GAAG,OAAOr6B,GAAG45B,EAAED,EAAE35B,EAAE4+F,UAAUlzF,EAAE,CAAC,CACra,SAAS4xI,EAAE5xI,EAAE1L,GAAG8yC,GAAE,EAAGrZ,IAAIA,GAAE,EAAGV,EAAER,GAAGA,GAAG,GAAG6B,GAAE,EAAG,IAAI/8B,EAAEg6B,EAAE,IAAS,IAALP,EAAE92B,GAAOlR,EAAE4qC,EAAEjF,GAAG,OAAO3lC,MAAMA,EAAEu/H,eAAeruH,IAAI0L,IAAI2sB,MAAM,CAAC,IAAIv3B,EAAEhS,EAAEs+C,SAAS,GAAG,oBAAoBtsC,EAAE,CAAChS,EAAEs+C,SAAS,KAAK/V,EAAEvoC,EAAEi+K,cAAc,IAAIj7K,EAAEgP,EAAEhS,EAAEu/H,gBAAgBruH,GAAGA,EAAExZ,EAAQklJ,eAAe,oBAAoB55I,EAAEhD,EAAEs+C,SAASt7C,EAAEhD,IAAI4qC,EAAEjF,IAAIzqC,EAAEyqC,GAAGqC,EAAE92B,EAAE,MAAMhW,EAAEyqC,GAAG3lC,EAAE4qC,EAAEjF,EAAE,CAAC,GAAG,OAAO3lC,EAAE,IAAI0pC,GAAE,MAAO,CAAC,IAAI9oB,EAAEgqB,EAAEW,GAAG,OAAO3qB,GAAGkqB,EAAED,EAAEjqB,EAAEkvF,UAAU5+F,GAAGw4B,GAAE,CAAE,CAAC,OAAOA,CAAC,CAAC,QAAQ1pC,EAAE,KAAKuoC,EAAEh6B,EAAE+8B,GAAE,CAAE,CAAC,CAD1a,qBAAqBp9B,gBAAW,IAASA,UAAUgwK,iBAAY,IAAShwK,UAAUgwK,WAAWC,gBAAgBjwK,UAAUgwK,WAAWC,eAAepgL,KAAKmQ,UAAUgwK,YAC2Q,IACzPvgJ,EAD6PirG,GAAE,EAAGzgH,EAAE,KAAKshB,GAAG,EAAEhZ,EAAE,EAAE0Y,GAAG,EACvc,SAASI,IAAI,QAAO7xC,EAAQklJ,eAAezzG,EAAE1Y,EAAO,CAAC,SAASuY,IAAI,GAAG,OAAO7gB,EAAE,CAAC,IAAIvL,EAAEllB,EAAQklJ,eAAezzG,EAAEvsB,EAAE,IAAI1L,GAAE,EAAG,IAAIA,EAAEiX,GAAE,EAAGvL,EAAE,CAAC,QAAQ1L,EAAEysB,KAAKirG,GAAE,EAAGzgH,EAAE,KAAK,CAAC,MAAMygH,GAAE,CAAE,CAAO,GAAG,oBAAoB/+G,EAAE8T,EAAE,WAAW9T,EAAEmf,EAAE,OAAO,GAAG,qBAAqBjK,eAAe,CAAC,IAAI0M,EAAE,IAAI1M,eAAe0kI,EAAEh4H,EAAEjM,MAAMiM,EAAEhM,MAAMC,UAAUsJ,EAAErL,EAAE,WAAW8lI,EAAEnkI,YAAY,KAAK,CAAC,MAAM3B,EAAE,WAAWoM,EAAEf,EAAE,EAAE,EAAE,SAASY,EAAEhtB,GAAGuL,EAAEvL,EAAEgsH,IAAIA,GAAE,EAAGjrG,IAAI,CAAC,SAASmN,EAAEluB,EAAE1L,GAAGu4B,EAAEM,GAAE,WAAWntB,EAAEllB,EAAQklJ,eAAe,GAAE1rI,EAAE,CAC5dxZ,EAAQ8lJ,sBAAsB,EAAE9lJ,EAAQslJ,2BAA2B,EAAEtlJ,EAAQ4lJ,qBAAqB,EAAE5lJ,EAAQ0lJ,wBAAwB,EAAE1lJ,EAAQ0mL,mBAAmB,KAAK1mL,EAAQwlJ,8BAA8B,EAAExlJ,EAAQ6kJ,wBAAwB,SAAS3/H,GAAGA,EAAE0hC,SAAS,IAAI,EAAE5mD,EAAQ2mL,2BAA2B,WAAWr6H,GAAG1Y,IAAI0Y,GAAE,EAAGpa,EAAE4kH,GAAG,EAC1U92J,EAAQ4mL,wBAAwB,SAAS1hK,GAAG,EAAEA,GAAG,IAAIA,EAAEnf,QAAQ0D,MAAM,mHAAmHsvB,EAAE,EAAE7T,EAAEjO,KAAK2nB,MAAM,IAAI1Z,GAAG,CAAC,EAAEllB,EAAQolJ,iCAAiC,WAAW,OAAOv0G,CAAC,EAAE7wC,EAAQ6mL,8BAA8B,WAAW,OAAO3zI,EAAEjF,EAAE,EAAEjuC,EAAQ8mL,cAAc,SAAS5hK,GAAG,OAAO2rB,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,IAAIr3B,EAAE,EAAE,MAAM,QAAQA,EAAEq3B,EAAE,IAAIh6B,EAAEg6B,EAAEA,EAAEr3B,EAAE,IAAI,OAAO0L,GAAG,CAAC,QAAQ2rB,EAAEh6B,CAAC,CAAC,EAAE7W,EAAQ+mL,wBAAwB,WAAW,EAC9f/mL,EAAQilJ,sBAAsB,WAAW,EAAEjlJ,EAAQgnL,yBAAyB,SAAS9hK,EAAE1L,GAAG,OAAO0L,GAAG,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,EAAE,MAAM,QAAQA,EAAE,EAAE,IAAIrO,EAAEg6B,EAAEA,EAAE3rB,EAAE,IAAI,OAAO1L,GAAG,CAAC,QAAQq3B,EAAEh6B,CAAC,CAAC,EAChM7W,EAAQ2kJ,0BAA0B,SAASz/H,EAAE1L,EAAE3C,GAAG,IAAIyD,EAAEta,EAAQklJ,eAA8F,OAA/E,kBAAkBruI,GAAG,OAAOA,EAAaA,EAAE,kBAAZA,EAAEA,EAAE40E,QAA6B,EAAE50E,EAAEyD,EAAEzD,EAAEyD,EAAGzD,EAAEyD,EAAS4K,GAAG,KAAK,EAAE,IAAI5Z,GAAG,EAAE,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,KAAK,EAAEA,EAAE,WAAW,MAAM,KAAK,EAAEA,EAAE,IAAI,MAAM,QAAQA,EAAE,IAAmN,OAAzM4Z,EAAE,CAACxS,GAAG8+B,IAAIoV,SAASptC,EAAE+sK,cAAcrhK,EAAEkzF,UAAUvhG,EAAEgxH,eAAvDv8H,EAAEuL,EAAEvL,EAAoEg7K,WAAW,GAAGzvK,EAAEyD,GAAG4K,EAAEohK,UAAUzvK,EAAExU,EAAEwxC,EAAE3uB,GAAG,OAAOguB,EAAEjF,IAAI/oB,IAAIguB,EAAEW,KAAKZ,GAAGV,EAAER,GAAGA,GAAG,GAAGkB,GAAE,EAAGG,EAAED,EAAEt8B,EAAEyD,MAAM4K,EAAEohK,UAAUh7K,EAAEjJ,EAAE4rC,EAAE/oB,GAAGonC,GAAG1Y,IAAI0Y,GAAE,EAAGpa,EAAE4kH,KAAY5xI,CAAC,EACnellB,EAAQ+kJ,qBAAqBlzG,EAAE7xC,EAAQinL,sBAAsB,SAAS/hK,GAAG,IAAI1L,EAAEq3B,EAAE,OAAO,WAAW,IAAIh6B,EAAEg6B,EAAEA,EAAEr3B,EAAE,IAAI,OAAO0L,EAAEzQ,MAAM9N,KAAKpB,UAAU,CAAC,QAAQsrC,EAAEh6B,CAAC,CAAC,CAAC,sCCf7J9W,EAAOC,QAAU,EAAjBD,sfCKa,WAA6D,QAAvBgnB,EAAuBxhB,UAAA7E,OAAA,QAAAuC,IAAAsC,UAAA,GAAAA,UAAA,GAAb,CAAC,EAAYmb,EAAAnb,UAAA7E,OAAN0H,EAAM,IAAAiI,MAAAqQ,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAANvY,EAAMuY,EAAA,GAAApb,UAAAob,GAC1E,IAAMumK,EAAQr7J,EAAAA,EAAA,GACTs7J,EAAAr4I,QAAAr6B,WAAA,GAAgCsS,GAAhClmB,OAA4CuH,KAC5Cg/K,EAAAt4I,QAAAr6B,WAAA,GAA8BsS,GAA9BlmB,OAA0CuH,KAG/C,OAAAyjB,EAAAA,EAAA,GACKq7J,GADL,IAEEzxK,KAAM,SAAAwR,GACJlhB,QAAQ8O,KACN,mMAGFoS,EAAQigK,EACT,GAEJ,wHAtBDC,4bAAArH,CAAA12J,EAAA,QAGAg+J,EAAAr4I,EAAA3lB,EAAA,QACAi+J,EAAAt4I,EAAA3lB,EAAA,mtBA2BA,IAAM04H,EAAOxiI,SAAS6F,cAAc,QAEpC28H,EAAK7M,aAAa,OAAQ,iCAC1B6M,EAAK7M,aAAa,UAAlB,WAAAp0I,OAAA,UAEAye,SAASwgB,KAAKgC,YAAYggH,yGCpC1B,IAAAwlC,EAAAl+J,EAAA,SAQe,CACbk2F,YAAAgoE,EAAAhoE,YACAvyC,aAAAu6G,EAAAv6G,aACAb,aAAAo7G,EAAAp7G,aACAqnD,aAAA+zD,EAAA/zD,aACAM,iBAAAyzD,EAAAzzD,mTCfF,IAAA0zD,4bAAAzH,CAAA12J,EAAA,8IAIem+J,EAAAz4I,sLCDb,SAAAE,KAAc,EAAAw4I,EAAA14I,SAAA,KAAAE,GACZroC,KAAK8gL,SAAW,EACjB,mDAED,WACE,MAAM,IAAIz9K,MAAM,wBACjB,sBAED,WACE,OAAOrD,KAAK8gL,QACb,MAED,SAAYvlL,GACV,GAAImO,MAAMkf,QAAQrtB,GAChByE,KAAK8gL,SAAWvlL,MACX,IAAqB,kBAAVA,EAGhB,MAAM,IAAI8H,MAAJ,0DAFNrD,KAAK8gL,SAAW,CAACvlL,EAGlB,CACF,oIChBY,SAASP,GAA4E,IAAAgN,EAAApJ,UAAA7E,OAAA,QAAAuC,IAAAsC,UAAA,GAAAA,UAAA,GAAJ,CAAC,EAAGmiL,EAAA/4K,EAAlEg5K,gBAAAA,OAAkE,IAAAD,EAAhDzlL,IAAgDylL,EAAAE,EAAAj5K,EAAtCk5K,kBAAAA,OAAsC,IAAAD,EAAlB,UAAkBA,EAClG,GAAIjmL,EAAOgT,SAAWk5D,GAAsBlsE,EAAOgT,SAAWkoE,IAAqBl7E,EAAOqrB,KAAKw4D,MAAQ,CACrG,IAAMsiG,EAAa,CACjB,CACE3O,WAAY,GACZC,WAAYz3K,EAAOmiB,OAQvB,OAJIniB,EAAOgT,SAAWkoE,IACpBirG,EAAWhmF,SAAU,GAGhBgmF,CACR,CAAM,GAAInmL,EAAOgT,SAAWkoE,EAkB3B,OAjBmB,EAAAkrG,EAAAj5I,UAChBntC,EAAOqrB,KAAKw4D,OAAS,IACnB36E,MAAM,EAAG88K,GACTj9K,KAAI,SAAA0rC,GAAA,IAAe+iI,EAAf/iI,EAAG8vC,WAAiCrkD,EAApCuU,EAA2B+vC,QAAuB6hG,EAAlD5xI,EAA6C6xI,IAAmBC,EAAhE9xI,EAAuD+xI,QAA6BC,EAApFhyI,EAAyEiyI,UAAzE,MAAqG,CACxGlP,WAAAA,EACAC,WACwB,QAAtByO,EACIG,EACsB,YAAtBH,EACAK,EACsB,cAAtBL,EACAO,EACAvmJ,EATH,IAWP,CAAEigE,SAAS,IAMf,MAAO,EACR,EA3CD,IAAAimF,EAAAh5I,EAAA3lB,EAAA,QAGAk/J,EAFAv5I,EAAA3lB,EAAA,QAII0lB,QADFo9B,aAAgB2B,EADlBy6G,EACkBz6G,kBAAmBgP,EADrCyrG,EACqCzrG,0TCErC0rG,EAAAn/J,EAAA,OAEAo/J,EAAAz5I,EAAA3lB,EAAA,QACAq/J,EAAA15I,EAAA3lB,EAAA,QACAs/J,EAAA35I,EAAA3lB,EAAA,QACAu/J,EAAA55I,EAAA3lB,EAAA,QACAw/J,EAAA75I,EAAA3lB,EAAA,+hCAwBA,IAAQk2F,EAA4EspE,EAAA95I,QAA5EwwE,YAAavyC,EAA+D67G,EAAA95I,QAA/Di+B,aAAcb,EAAiD08G,EAAA95I,QAAjDo9B,aAAcqnD,EAAmCq1D,EAAA95I,QAAnCykF,aAAcM,EAAqB+0D,EAAA95I,QAArB+kF,iBAE/D,SAASg1D,EAATl6K,GAAkH,IAA5EwP,EAA4ExP,EAA5EwP,SAAUk/D,EAAkE1uE,EAAlE0uE,aAAcrwD,EAAoDre,EAApDqe,KAAM8iB,EAA8CnhC,EAA9CmhC,OAAQ+jC,EAAsCllE,EAAtCklE,WAAYl/D,EAA0BhG,EAA1BgG,OAAQs+D,EAAkBtkE,EAAlBskE,SAAUnvD,EAAQnV,EAARmV,KACxG,MAAO,CACL3F,SAAAA,EACAk/D,aAAAA,EACArwD,KAAM1gB,KAAK9C,MAAMwjB,GACjB8iB,OAAAA,EACA+jC,WAAAA,EACAl/D,OAAAA,EACAs+D,SAAAA,EACAnvD,KAAAA,EAEH,CAED,SAASglK,EAAiB77J,GACxB,IAAMytB,EAAQ,IAAI8tE,WAAWv7F,GAE7B,MACE,GAAG87J,OAAO1nL,KAAKq5C,GAAO,SAACouI,EAAkBE,GAAnB,OAAiCF,EAAmB7xK,KAAK43B,IAAIm6I,EAA7D,GAAyE,GAAKtuI,EAAMh6C,MAE7G,CAED,SAASuoL,EAAgC5oL,GACvC,OAAO,mBAAAqgB,EAAAnb,UAAA7E,OAAI0H,EAAJ,IAAAiI,MAAAqQ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAIvY,EAAJuY,GAAApb,UAAAob,GAAA,OAAa,IAAIqG,SAAQ,SAACC,EAASC,GAAV,OAAqB7mB,EAAEoU,WAAF,EAAMrM,EAANvH,OAAA,CAAYomB,EAASC,IAA1C,GAAzB,CACR,KAEK+4D,EAAAA,SAAAA,iCACJ,SAAAA,EAAYz5E,GAAiE,IAAAkS,EAAA09B,EAAA7wC,UAAA7E,OAAA,QAAAuC,IAAAsC,UAAA,GAAAA,UAAA,GAAJ,CAAC,EAAtD0G,EAAyDmqC,EAAzDnqC,KAAMi9K,EAAmD9yI,EAAnD8yI,KAAMC,EAA6C/yI,EAA7C+yI,eAAgBlQ,EAA6B7iI,EAA7B6iI,YAAalrC,EAAgB33F,EAAhB23F,QAAgB,SAAAy5C,EAAA14I,SAAA,KAAAmxC,IAC3EvnE,EAAA+T,EAAAprB,KAAA,KAAMmF,IAEDyF,KAAOA,EACZyM,EAAKwwK,KAAOA,EACZxwK,EAAKywK,eAAiBA,EACtBzwK,EAAKugK,YAAcA,EACnBvgK,EAAKq1H,QAAUA,EAP4Dr1H,CAQ5E,wBATGunE,CAA+BsoG,EAAA93K,OAYrC,SAAS24K,EAAmBziF,GAC1B,IAEI0iF,EACAt+D,EAHEu+D,EAAiB3iF,EAAY50C,OAC7Bw3H,EAAsB5iF,EAAY50C,OAAO1rD,KAAKsgG,GAkCpD,OA5BAA,EAAY50C,QAAZ,EAAAy3H,EAAA16I,SAAA26I,EAAA36I,QAAAlhB,MAAqB,SAAAosJ,IAAA,IAAArlH,EAAA,OAAA80H,EAAA36I,QAAA3gB,MAAA,SAAA+rJ,GAAA,cAAAA,EAAAx4J,KAAAw4J,EAAA/kK,MAAA,cAAA+kK,EAAA/kK,KAAA,EACEo0K,IADF,cACb50H,EADaulH,EAAAvrJ,KAAAurJ,EAAArrJ,OAAA,SAAAhD,EAAAA,EAAA,GAId8oC,GAJc,IAKjBjC,KAAM,WAAF,IAAAg3H,GAAA,EAAAF,EAAA16I,SAAA26I,EAAA36I,QAAAlhB,MAAE,SAAAC,IAAA,IAAAunC,EAAA,OAAAq0H,EAAA36I,QAAA3gB,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,cAAAkE,EAAAlE,KAAA,EACgBw/C,EAAOjC,OADvB,UACE0C,EADF/7C,EAAAsV,MASC06J,GAAcP,EAAiB1zH,EAAMzoC,QAAU,MAClDg6E,EAAY5uF,OAAOk4C,QAAQ,CAAE7qD,KAAM,sBACnCikL,GAAa,IAGXt+D,EAdA,CAAA1xG,EAAAlE,KAAA,eAAAkE,EAAAwV,OAAA,SAeK,CAAElC,OAAQ,IAAIhB,YAAY,GAAI6pC,OAAO,EAAMC,aAAc/uD,KAAKwX,QAfnE,cAAA7E,EAAAwV,OAAA,SAkBGumC,GAlBH,wBAAA/7C,EAAAyV,OAAA,GAAAjB,EAAA,KAAF,yBAAA67J,EAAAj1K,MAAA,KAAAlP,UAAA,EAAE,MALW,wBAAA20K,EAAAprJ,OAAA,GAAAkrJ,EAAA,KA4Bd,CACLrzE,YAAAA,EACAskB,MAAO,WACLF,GAAQ,CACT,EACD4+D,UAAW,WACThjF,EAAY50C,OAASu3H,CACtB,EAEJ,CAEM,SAASM,EAAT9xI,GAMJ,IALD+xI,EAKC/xI,EALD+xI,iBACAhsD,EAIC/lF,EAJD+lF,gBACAisD,EAGChyI,EAHDgyI,YACAC,EAECjyI,EAFDiyI,kBACAlC,EACC/vI,EADD+vI,kBAGAh0D,EAAiBgK,iBAAoC,IAApBA,GAFhC,IAIK+3C,EAJL,SAAA3rH,IAAA,EAAA+/H,EAAAl7I,SAAA8mI,EAAA3rH,GAAA,IAAAlF,EAAA34B,EAAAwpJ,GAKC,SAAAA,IAAc,IAAAl6J,EAAA,SAAA8rK,EAAA14I,SAAA,KAAA8mI,IACZl6J,EAAAqpC,EAAA1jD,KAAA,OAEK4oL,aAAc,EACnBvuK,EAAKwuK,iBAAkB,EACvBxuK,EAAKyuK,MACe,qBAAXxkL,OACHA,OAAO2Z,SAASC,gBAAgB6qK,aAAa,SAAWzkL,OAAO6Q,UAAU2I,SACzE,QACNzD,EAAK2uK,UAAY,IAAI1B,EAAA75I,QACrBpzB,EAAK4uK,iBAAmB,EAVZ5uK,CAWb,CAhBF,SAAA6uK,EAAAz7I,SAAA8mI,EAAA,EAAApxK,IAAA,wBAAAtC,MAkBC,SAAsBsE,EAAMyN,GAC1BtN,KAAK2lC,cACH,IAAI2zC,EAAuB,oBAAqB,CAC9Ch0E,KAAI4f,EAAAA,EAAA,GACC5X,GADD,IAEFzN,KAAAA,MAIP,GA3BF,CAAAhC,IAAA,aAAAsL,IA6BC,WACE,OAAOnJ,KAAKsjL,WACb,EA/BFzwJ,IAiCC,SAAet3B,GACbyE,KAAKsjL,YAAc/nL,CACpB,GAnCF,CAAAsC,IAAA,WAAAsL,IAqCC,WACE,OAAOnJ,KAAK0jL,SACb,EAvCF7wJ,IAyCC,SAAat3B,GACX,KAAIA,aAAiBymL,EAAA75I,SAGnB,MAAM,IAAI9kC,MAAJ,yDAFNrD,KAAK0jL,UAAYnoL,CAIpB,GA/CF,CAAAsC,IAAA,iBAAAsL,IAiDC,WACE,OAAOnJ,KAAKujL,eACb,EAnDF1wJ,IAqDC,SAAmBt3B,GACjByE,KAAKujL,gBAAkBhoL,CACxB,GAvDF,CAAAsC,IAAA,kBAAAsL,IAyDC,WACE,OAAOnJ,KAAK2jL,gBACb,EA3DF9wJ,IA6DC,SAAoBt3B,GAClByE,KAAK2jL,iBAAmBpoL,CACzB,GA/DF,CAAAsC,IAAA,OAAAsL,IAiEC,WACE,OAAOnJ,KAAKwjL,KACb,EAnEF3wJ,IAqEC,SAASt3B,GACPyE,KAAKwjL,MAAQjoL,CACd,GAvEF,CAAAsC,IAAA,aAAAsL,IAyEC,WACE,OAAO,EAAAy4K,EAAAh/H,wBAAuB5iD,KAAM,WACrC,EA3EF6yB,IA6EC,SAAet3B,IACb,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,WAAYzE,EAC1C,GA/EF,CAAAsC,IAAA,eAAAsL,IAiFC,WACE,OAAO,EAAAy4K,EAAAh/H,wBAAuB5iD,KAAM,aACrC,EAnFF6yB,IAqFC,SAAiBt3B,IACf,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,aAAczE,EAC5C,GAvFF,CAAAsC,IAAA,sBAAAsL,IAyFC,WACE,OAAO,EAAAy4K,EAAAh/H,wBAAuB5iD,KAAM,oBACrC,EA3FF6yB,IA6FC,SAAwBt3B,IACtB,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,oBAAqBzE,EACnD,GA/FF,CAAAsC,IAAA,QAAAsL,IAiGC,WACE,OAAO,EAAAy4K,EAAAh/H,wBAAuB5iD,KAAM,MACrC,EAnGF6yB,IAqGC,SAAUt3B,IACR,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,MAAOzE,EACrC,GAvGF,CAAAsC,IAAA,UAAAsL,IAyGC,WACE,OAAO,EAAAy4K,EAAAh/H,wBAAuB5iD,KAAM,QACrC,EA3GF6yB,IA6GC,SAAYt3B,IACV,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,QAASzE,EACvC,GA/GF,CAAAsC,IAAA,WAAAsL,IAiHC,WACE,OAAO,EAAAy4K,EAAAh/H,wBAAuB5iD,KAAM,SACrC,EAnHF6yB,IAqHC,SAAat3B,IACX,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,SAAUzE,EACxC,GAvHF,CAAAsC,IAAA,aAAAsL,IAyHC,WACE,OAAO,EAAAy4K,EAAAh/H,wBAAuB5iD,KAAM,WACrC,EA3HF6yB,IA6HC,SAAet3B,IACb,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,WAAYzE,EAC1C,GA/HF,CAAAsC,IAAA,eAAAsL,IAiIC,WACE,OAAO,EAAAy4K,EAAAh/H,wBAAuB5iD,KAAM,aACrC,EAnIF6yB,IAqIC,SAAiBt3B,IACf,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,aAAczE,EAC5C,GAvIF,CAAAsC,IAAA,cAAAsL,IAyIC,WACE,OAAO,EAAAy4K,EAAAh/H,wBAAuB5iD,KAAM,YACrC,EA3IF6yB,IA6IC,SAAgBt3B,IACd,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,YAAazE,EAC3C,GA/IF,CAAAsC,IAAA,gBAAAsL,IAiJC,WACE,OAAO,EAAAy4K,EAAAh/H,wBAAuB5iD,KAAM,cACrC,EAnJF6yB,IAqJC,SAAkBt3B,IAChB,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,cAAezE,EAC7C,GAvJF,CAAAsC,IAAA,UAAAsL,IAyJC,WACE,OAAO,EAAAy4K,EAAAh/H,wBAAuB5iD,KAAM,QACrC,EA3JF6yB,IA6JC,SAAYt3B,IACV,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,QAASzE,EACvC,GA/JF,CAAAsC,IAAA,QAAAtC,MAiKC,WAAQ,IAAAk2K,EAAA,KACNzxK,KAAK6jL,aAAaxzH,OAAM,SAAAhqD,GACtBorK,EAAK9rI,cAAc,IAAIwa,WAAW,QAAS,CAAEr9C,MAAOuD,EAAKlK,QAASkK,IAAQA,EAAIpD,OAASoD,EAAIlK,WAC5F,GACF,GArKF,CAAA0B,IAAA,aAAAtC,MAAA,eAAAuoL,GAAA,EAAAjB,EAAA16I,SAAA26I,EAAA36I,QAAAlhB,MAuKC,SAAAwsJ,IAAA,IAAAnwG,EAAAygH,EAAAz/D,EAAA0+D,EAAAlqJ,EAAAkrJ,EAAAC,EAAAC,EAAAC,EAAAC,EAAA76E,EAAAlgB,EAAAg7F,EAAAC,EAAAC,EAAAvmI,EAAAixB,EAAA0iG,EAAA,YAAAmR,EAAA36I,QAAA3gB,MAAA,SAAAssJ,GAAA,cAAAA,EAAA/4J,KAAA+4J,EAAAtlK,MAAA,cAAAslK,EAAAtlK,KAAA,EAE2B00K,EAAiBljL,KAAKo8E,MAFjD,cAEQ9Y,EAFRwwG,EAAA9rJ,KAAA+7J,EAI+BtB,EAAmBn/G,EAAW08B,aAAnDskB,EAJVy/D,EAIUz/D,MAAO0+D,EAJjBe,EAIiBf,UAJjBlP,EAAA/4J,KAAA,EAOU+d,GAAQ,EAAAgpJ,EAAA35I,WAPlBg8I,EAY+C7gH,EAAW08B,YAAY5uF,OAAOg6C,QAAO,SAAA99C,GAC9E,IAAQ7O,EAAS6O,EAAT7O,KAEK,0BAATA,EACFq6B,EAAM59B,KAAK,CAAEspL,iBAAkB,CAAC,IACd,wBAAT/lL,EACTq6B,EAAM59B,KAAK,CAAEupL,eAAgB,CAAC,IACZ,sBAAThmL,GACTq6B,EAAM59B,KAAK,CAAEwpL,kBAAmB,CAAC,GAEpC,IAVeN,EAZpBD,EAYYz4H,OAYR4X,EAAW2J,SAAW,SAAC5rB,EAAD/P,GAAoD,IAA9ColC,EAA8CplC,EAA9ColC,aAAcvtC,EAAgCmI,EAAhCnI,OAAQn7B,EAAwBsjC,EAAxBtjC,OAAQg2D,EAAgB1yB,EAAhB0yB,UACxDlrC,EAAM59B,KAAK,CACT+xE,SAAU,CACRyJ,aAAAA,EACAvtC,OAAAA,EACAn7B,OAAAA,EACAg2D,UAAAA,IAGL,EAEDV,EAAWwI,WAAa,SAACzqB,EAAD9P,GAAsC,IAAhCpI,EAAgCoI,EAAhCpI,OAAQnuC,EAAwBu2C,EAAxBv2C,OAAQgpE,EAAgBzyB,EAAhByyB,UAC5ClrC,EAAM59B,KAAK,CACT4wE,WAAY,CACV3iC,OAAAA,EACAnuC,OAAQknL,EAA2BlnL,GACnCgpE,UAAAA,IAGL,EAEDV,EAAW0I,YAAc,SAAC3qB,EAAD7P,GAAsC,IAAhCrI,EAAgCqI,EAAhCrI,OAAQnuC,EAAwBw2C,EAAxBx2C,OAAQgpE,EAAgBxyB,EAAhBwyB,UAC7ClrC,EAAM59B,KAAK,CACT8wE,YAAa,CACX7iC,OAAAA,EACAnuC,OAAQknL,EAA2BlnL,GACnCgpE,UAAAA,IAGL,EAEDV,EAAWqL,eAAiB,SAACttB,EAADsjI,GAAsB,IAAhB3gH,EAAgB2gH,EAAhB3gH,UAChClrC,EAAM59B,KAAK,CAAEyzE,eAAgB,CAAE3K,UAAAA,IAChC,EAEDV,EAAW6M,eAAiB,SAAC9uB,EAADujI,GAAsB,IAAhB5gH,EAAgB4gH,EAAhB5gH,UAEhClrC,EAAM59B,KAAK,CAAEi1E,eAAgB,CAAEnM,UAAAA,IAChC,EAEDV,EAAWgM,oBAAsB,SAACjuB,EAADwjI,GAA8B,IAAxB17I,EAAwB07I,EAAxB17I,OAAQ66B,EAAgB6gH,EAAhB7gH,UAC7ClrC,EAAM59B,KAAK,CAAEo0E,oBAAqB,CAAEnmC,OAAAA,EAAQ66B,UAAAA,IAC7C,EAEDV,EAAWuM,kBAAoB,SAACxuB,EAADyjI,GAAsB,IAAhB9gH,EAAgB8gH,EAAhB9gH,UAGnClrC,EAAM59B,KAAK,CAAE20E,kBAAmB,CAAE7L,UAAAA,IACnC,EAEOulC,EAAYvpG,KAAK+kL,SAAjBx7E,QAGAlgB,EAAmB/lB,EAAW09B,SAA9B3X,eAER+5F,GAAqBA,EAAkBrpL,QAAUsvF,EAAehU,oBAAoB+tG,GACpF75E,GAAWA,EAAQxvG,QAAUsvF,EAAepU,UAAUs0B,GAhF1DuqE,EAAAtlK,KAAA,GAkFU8zK,EAAgCh/G,EAAW+/B,gCAAgC3jG,KAAK4jE,GAAhFg/G,GAlFV,QAoFQh/G,EAAWkgC,gCACbxjG,KAAKmyK,MAAQ,kBAAMr5I,EAAM59B,KAAK,CAAEi3K,MAAO,CAAC,GAA3B,EACbnyK,KAAKmoB,KAAO,kBAAM2Q,EAAM59B,KAAK,CAAEitB,KAAM,CAAC,GAA1B,GAEZnoB,KAAKmyK,MAAQnyK,KAAKmoB,UAAO7rB,EAKvBioL,EAAmB,GA7F3BvmI,EAAA8kI,EAAA36I,QAAAlhB,MAAA,SAAA+2B,EA+FaixB,GA/Fb,IAAA3hE,EAAA6kK,EAAAsS,EAAAD,EAAAv3G,EAAAy3G,EAAA54G,EAAAE,EAAA7jD,EAAAne,EAAAhP,EAAAgqL,EAAA,OAAAlC,EAAA36I,QAAA3gB,MAAA,SAAAmsJ,GAAA,cAAAA,EAAA54J,KAAA44J,EAAAnlK,MAAA,cAAAmlK,EAAAnlK,KAAA,EAgG0BsqB,EAAM3zB,QAhGhC,UAgGYmI,EAhGZqmK,EAAA3rJ,KAkGQmqJ,EAQE7kK,EARF6kK,MACAsS,EAOEn3K,EAPFm3K,eACAD,EAMEl3K,EANFk3K,iBACAv3G,EAKE3/D,EALF2/D,SACAy3G,EAIEp3K,EAJFo3K,kBACA54G,EAGEx+D,EAHFw+D,WACAE,EAEE1+D,EAFF0+D,YACA7jD,EACE7a,EADF6a,KAIF5tB,OAAO8wB,KAAK/d,GAAOmb,SAAQ,SAAAhqB,GAAI,OAAIkzK,EAAKsT,sBAAsBxmL,EAAM6O,EAAM7O,GAA3C,IAEzBuL,EAAeijE,GAAYA,EAASyJ,cAEtC,sFAAsBv4E,KAAK6L,GAAgB,IAjHrD,CAAA2pK,EAAAnlK,KAAA,eAoHQ81K,EAAa,CACXxhL,MAAO,cACPjD,KAAM,SAtHhB8zK,EAAAzrJ,OAAA,4BA4HW+mD,GACH0iG,EAAKhsI,cAAc,IAAI2zC,EAAuB,WAG5CtvE,EAhIV,CAAA2pK,EAAAnlK,KAAA,eAiIY,OAAQrQ,KAAK6L,IACVq6K,IACH1S,EAAKhsI,cAAc,IAAI2zC,EAAuB,eAC9Cq4F,EAAKhsI,cAAc,IAAI2zC,EAAuB,cAGhDgrG,EAAa,CACXxhL,MAAO,UACPjD,KAAM,UAGRykL,EAAa,CACXxhL,MAAO,UACPjD,KAAM,SA9IlB8zK,EAAAzrJ,OAAA,8BAmJiBiqJ,IAAShqJ,EAnJ1B,CAAAwrJ,EAAAnlK,KAAA,YAoJY2jK,GACFmS,EAAa,CACXxhL,MAAO,UACPjD,KAAM,SAIRqkL,EAAW,UAGX5/D,IACA4/D,EAAW,SAKT/R,IAAS7uG,EAAWkgC,+BApKhC,CAAAmwE,EAAAnlK,KAAA,gBAAAmlK,EAAAnlK,KAAA,GAqKgB8zK,EAAgCh/G,EAAWkgC,+BAA+B9jG,KAAK4jE,GAA/Eg/G,GArKhB,QAAA3O,EAAAnlK,KAAA,qBAuKiBg2K,EAvKjB,CAAA7Q,EAAAnlK,KAAA,SAwKQmjK,EAAKhsI,cAAc,IAAI2zC,EAAuB,eAE9C+qG,GAAe,EA1KvB1Q,EAAAnlK,KAAA,qBA2KiBk2K,EA3KjB,CAAA/Q,EAAAnlK,KAAA,SA4KQmjK,EAAKhsI,cAAc,IAAI2zC,EAAuB,eAE9C0qG,GAAe,EA9KvBrQ,EAAAnlK,KAAA,qBA+KiBi2K,EA/KjB,CAAA9Q,EAAAnlK,KAAA,gBAoLQy1K,GAAiBtS,EAAKhsI,cAAc,IAAI2zC,EAAuB,cAC/D0qG,GAAgBrS,EAAKhsI,cAAc,IAAI2zC,EAAuB,aAC9D+qG,GAAgB1S,EAAKhsI,cAAc,IAAI2zC,EAAuB,aAE9D+qG,EAAeL,EAAeC,GAAgB,EAxLtDtQ,EAAAzrJ,OAAA,6BA2L8B,UAAbg8J,EA3LjB,CAAAvQ,EAAAnlK,KAAA,aA4LYs9D,IAAcA,EAAW9wE,QAAU8wE,EAAW9wE,OAAOgT,SAAWu3D,EAAaS,QA5LzF,CAAA2tG,EAAAnlK,KAAA,SA6LU81K,EAAa,CACXxhL,MAAO,YACPjD,KAAM,SA/LlB8zK,EAAAnlK,KAAA,qBAiMmBs9D,IAAcE,EAjMjC,CAAA2nG,EAAAnlK,KAAA,YAkMe61K,IAEH1S,EAAKhsI,cAAc,IAAI2zC,EAAuB,eAE9C+qG,GAAe,GAGZL,IACHrS,EAAKhsI,cAAc,IAAI2zC,EAAuB,eAE9C0qG,GAAe,GAGZC,IACHtS,EAAKhsI,cAAc,IAAI2zC,EAAuB,gBAE9C2qG,GAAgB,IAGdn4G,EArNd,CAAA6nG,EAAAnlK,KAAA,YAsNkBxT,GAAS,EAAA6mL,EAAA15I,SAA4D2jC,EAAW9wE,OAAQ,CAC5FgmL,gBAAiBrP,EAAKqP,gBACtBE,kBAAAA,KAGI8D,IAAiBhqL,EAAO,GAAGy3K,cAG/B8R,EAAmB,GAAHrqL,QAAA,EAAAgrL,EAAA/8I,SAAOo8I,GAAP,CAAyBvpL,IAEzC22K,EAAKV,YACHU,EAAKhsI,cACH,IAAI2zC,EAAuB,SAAU,CACnC8tD,QAASm9C,MAOfD,EADE3S,EAAKV,YAAc+T,EACR,KAEA,CACX59C,QAASm9C,EACT1kL,KAAM,UAIL8xK,EAAKV,aAAc3tG,EAAWkgC,+BAlP/C,CAAAmwE,EAAAnlK,KAAA,gBAAAmlK,EAAAnlK,KAAA,GAmPoB8zK,EAAgCh/G,EAAWkgC,+BAA+B9jG,KAAK4jE,GAA/Eg/G,GAnPpB,QAwPgBa,GAAemB,GAAcU,IAC/BrT,EAAKhsI,cAAc,IAAI2zC,EAAuBgrG,EAAWzkL,KAAMykL,IAC/DA,EAAa,MA1P3B3Q,EAAAnlK,KAAA,iBA4PqBw9D,GACT2lG,EAAKjnF,gBACHinF,EAAKhsI,cACH,IAAI2zC,EAAuB,SAAU,CACnC8tD,QAAS,GAAFltI,QAAA,EAAAgrL,EAAA/8I,SACFo8I,GADE,EAEL,EAAA1C,EAAA15I,SAA4D6jC,EAAYhxE,OAAQ,CAC9EgmL,gBAAiBrP,EAAKqP,gBACtBE,kBAAAA,SApQtB,yBAAAvN,EAAAxrJ,OAAA,GAAA61B,EAAA,IA+FaixB,EAAO,EA/FpB,WA+FwBi1G,IAAYG,EA/FpC,CAAAvQ,EAAAtlK,KAAA,gBAAAslK,EAAAqR,cAAAnnI,EA+FaixB,GA/Fb,8BAAA6kG,EAAAX,GAAA,CAAAW,EAAAtlK,KAAA,gBAAAslK,EAAA5rJ,OAAA,oBA+FkD+mD,IA/FlD6kG,EAAAtlK,KAAA,iBA8QQy1K,GACFjkL,KAAK2lC,cAAc,IAAI2zC,EAAuB,cAG5C0qG,GACFhkL,KAAK2lC,cAAc,IAAI2zC,EAAuB,aAG5C+qG,GACFrkL,KAAK2lC,cAAc,IAAI2zC,EAAuB,aAG5CgrG,IACsB,WAApBA,EAAWzkL,MAAsBykL,EAAWl9C,QAAQrtI,SACtDuqL,EAAa,CACXxhL,MAAO,YACPjD,KAAM,UAIc,UAApBykL,EAAWzkL,KACbG,KAAK2lC,cAAc,IAAIwa,WAAW,QAASmkI,IAE3CtkL,KAAK2lC,cAAc,IAAI2zC,EAAuBgrG,EAAWzkL,KAAMykL,KAMnEtkL,KAAK2lC,cAAc,IAAI2zC,EAAuB,QAE9C8qG,IA7SJtQ,EAAAtlK,KAAA,uBAAAslK,EAAA/4J,KAAA,GAAA+4J,EAAAsR,GAAAtR,EAAA,SAgTI10K,QAAQ0D,MAARgxK,EAAAsR,IAhTJtR,EAAAsR,GAAA,eAAAtR,EAAA/4J,KAAA,GAoTIioK,IACA1/G,EAAWxI,UArTfg5G,EAAAuR,OAAA,6BAAAvR,EAAA3rJ,OAAA,GAAAsrJ,EAAA,yBAvKD,yBAAAqQ,EAAAh2K,MAAA,KAAAlP,UAAA,QAAAqwK,CAAA,EAI+B2S,EAAAjgI,aA6dhC,MAAO,CACL2jI,kBAAAtD,EAAA75I,QACA8mI,kBAAAA,EACA31F,uBAAAA,EAEH,WAEc,SAAAl5D,GACb,IAAAmlK,GAYI,EAAAxD,EAAA55I,SAAa/nB,GAZjBolK,EAAAD,EACEvlF,YAAAA,OADF,IAAAwlF,EACgB7sE,EAAYC,6BAD5B4sE,EAAAC,EAAAF,EAKEruD,gBAAAA,OALF,IAAAuuD,GAAAA,EAOEC,EAPFH,EAOEG,iBACAvC,EARFoC,EAQEpC,YACAC,EATFmC,EASEnC,kBACAuC,EAVFJ,EAUEI,4BAVFC,EAAAL,EAWErE,kBAAAA,OAXF,IAAA0E,EAWsB,UAXtBA,EAcA,IAAK5lF,KAAiBhhG,OAAO6Q,UAAUogD,eAAiBjxD,OAAO6Q,UAAUogD,aAAaJ,cAKpF,OAJAzwD,QAAQ8O,KACN,qIAGK,CAAC,EAGV,IAAMg1K,EAAgB,eAAA2C,GAAG,EAAHhD,EAAA16I,SAAA26I,EAAA36I,QAAAlhB,MAAG,SAAA4sJ,EAAMz3F,GAAN,IAAA0pG,EAAAlrF,EAAAp5B,EAAAukH,EAAAztH,EAAAynC,EAAA7gG,EAAA,OAAA4jL,EAAA36I,QAAA3gB,MAAA,SAAAw+J,GAAA,cAAAA,EAAAjrK,KAAAirK,EAAAx3K,MAAA,cAAAw3K,EAAAx3K,KAAA,EACkEk3K,IADlE,cAAAI,EAAAE,EAAAh+J,KACf4yE,EADekrF,EACflrF,mBAAoBp5B,EADLskH,EACKtkH,OAAQukH,EADbD,EACaC,0BAA2BztH,EADxCwtH,EACwCxtH,gBAG3DytH,GACI7mL,EAAO,CAAE60H,SAAUgyD,EAA2B3lJ,KAAM,IAAK5pB,SAAU,QAErEokF,GACFmF,EAAe6sB,EAAalG,SAASxnH,IACxB07F,mBAAqBA,EAElCmF,EAAe6sB,EAAalG,SAASxnH,EAAMo5D,IAG7CynC,EAAenF,EACXgyB,EAAanG,uBAAuB7rB,EAAoBp5B,GACxDorD,EAAaxG,iBAAiB9tD,EAAiBkJ,GAGjDmkH,IACF5lF,EAAatX,WAAak9F,GAG5B5lF,EAAahP,aAAe3qB,EAAaouB,SACzCuL,EAAakD,0BAA4B7mB,GAAQ,QAxB1B4pG,EAAA99J,OAAA,SA0BhB,IAAIglG,EAAiBntB,EAAcC,IA1BnB,yBAAAgmF,EAAA79J,OAAA,GAAA0rJ,EAAA,KAAH,gBAAAzrJ,GAAA,OAAAy9J,EAAA/3K,MAAA,KAAAlP,UAAA,KA6BtB,OAAOqkL,EAA8C,CACnDjjF,YAAAA,EACAkjF,iBAAAA,EACAhsD,gBAAAA,EACAisD,YAAAA,EACAC,kBAAAA,EACAlC,kBAAAA,GAEH,uHCpqBD,MAAA94I,EAAA3lB,EAAA,QAEe0lB,kNCCb,SAAAE,EAAYq4E,IAAc,EAAAmgE,EAAA14I,SAAA,KAAAE,GACxBroC,KAAK0gH,aAAeA,CACrB,2CAED,WACE1gH,KAAK0gH,cAAgB1gH,KAAK0gH,aAAa1uD,UACvChyD,KAAKimL,kBAAoBjmL,KAAKimL,iBAAiBtgJ,cAAc,IAAIugJ,YAAY,SAC9E,uBAED,WACElmL,KAAK0gH,cAAgB1gH,KAAK0gH,aAAahwD,SACvC1wD,KAAKimL,kBAAoBjmL,KAAKimL,iBAAiBtgJ,cAAc,IAAIugJ,YAAY,UAC9E,qEAED,SAAAh/J,EAAY4R,GAAZ,IAAAqtJ,EAAA,OAAArD,EAAA36I,QAAA3gB,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,YAGU23K,EAAYrtJ,EAAM3zB,SAH5B,CAAAuN,EAAAlE,KAAA,eAIIxO,KAAKimL,iBAAmBE,EAJ5BzzK,EAAAlE,KAAA,EAMU23K,EAAU5hE,KAAKvkH,KAAK0gH,cAN9B,OAQI1gH,KAAKimL,iBAAmB,KAR5BvzK,EAAAlE,KAAA,gCAAAkE,EAAAyV,OAAA,GAAAjB,EAAA,mFAYA,WACElnB,KAAKimL,kBAAoBjmL,KAAKimL,iBAAiB99J,OAEf,cAA5BnoB,KAAK0gH,aAAa/3G,OAMpB3I,KAAK0gH,aAAahwD,QAErB,uMCtCH01H,EAAAh+I,EAAA3lB,EAAA,QAEA4jK,EAAAj+I,EAAA3lB,EAAA,qBAGE,SAAA4lB,EAAArgC,GAAwC,IAA1B04G,EAA0B14G,EAA1B04G,aAAc6/D,EAAYv4K,EAAZu4K,UAAY,EAAAM,EAAA14I,SAAA,KAAAE,GACtCroC,KAAKsmL,SAAW,KAChBtmL,KAAKumL,QAAS,EACdvmL,KAAK84B,MAAQ,GAEb94B,KAAK6xD,iBAAkB,EAAAu0H,EAAAj+I,UAAQ,kBAAMu4E,GAAgB,IAAI6/D,EAASjgE,YAAnC,GAChC,2CAED,WACEtgH,KAAKumL,QAAS,EACdvmL,KAAKsmL,UAAYtmL,KAAKsmL,SAAShiE,OAChC,qBAED,SAAK6hE,GACHnmL,KAAK84B,MAAM59B,KAAKirL,GAChBnmL,KAAKwmL,eACN,uBAED,WACExmL,KAAKumL,QAAS,EAEVvmL,KAAKsmL,SACPtmL,KAAKsmL,SAAS51H,SAEd1wD,KAAKwmL,eAER,uBAED,WACE,QAASxmL,KAAKsmL,QACf,6EAED,SAAAp/J,IAAA,OAAA47J,EAAA36I,QAAA3gB,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,UACUxO,KAAKumL,SAAUvmL,KAAK84B,MAAM/+B,QAAWiG,KAAKsmL,SADpD,CAAA5zK,EAAAlE,KAAA,eAEIxO,KAAKsmL,SAAW,IAAID,EAAAl+I,QAAqBnoC,KAAK6xD,mBAFlDn/C,EAAAlE,KAAA,EAIUxO,KAAKsmL,SAAS5qK,MAAM1b,KAAK84B,OAJnC,OAMI94B,KAAKsmL,SAAW,KANpB5zK,EAAAlE,KAAA,gCAAAkE,EAAAyV,OAAA,GAAAjB,EAAA,kFAUA,WACElnB,KAAK84B,MAAMwoB,OAAO,GAClBthD,KAAKsmL,UAAYtmL,KAAKsmL,SAASn+J,MAChC,qqBClDkBgpE,EAAAA,SAAAA,iCACnB,SAAAA,EAAYtxF,GAAM,SAAAghL,EAAA14I,SAAA,KAAAgpD,GAAArrE,EAAAprB,KAAA,KACVmF,EACP,wBAHkBsxF,CAFrB1uE,EAAA,OAEkD3Y,8OCAlD83K,EAAAn/J,EAAA,OACAgkK,EAAAr+I,EAAA3lB,EAAA,QAEAikK,EAAAt+I,EAAA3lB,EAAA,QACAkkK,EAAAv+I,EAAA3lB,EAAA,QACAmkK,EAAAx+I,EAAA3lB,EAAA,odAEA,SAASokK,EAAqBnmE,EAAcp6F,GAC1C,OAAO,IAAIjG,SAAQ,SAACC,EAASC,GAC3B,IAAMyB,EAAU0+F,EAAa6B,gBAAgBj8F,EAAahG,EAASC,GAGnEyB,GAAmC,oBAAjBA,EAAQlT,MAAuBwR,EAAQ0B,EAC1D,GACF,CAED,SAAS8kK,EAAYpmE,EAAc7wB,EAAahxF,GAC9C,OAAO,IAAIwhB,SAAQ,SAACC,EAASC,GAC3B,IAAMwmK,EAAqB,IAAIN,EAAAt+I,QACzB6+I,EAAc,IAAIP,EAAAt+I,QAClBkwI,GAAc,EAAAuO,EAAAz+I,SAClBu4E,EACA,eACA,SAAA14G,GAAA,MAAqC,WAArCA,EAAGrJ,OAAUgK,OAAoCo+K,EAAmBhmJ,eAApE,IAGF,IACEliC,EAAOmnB,OAAS6pE,EAEhBhxF,EAAOimH,QAAUkiE,EAAYjmJ,cAE7BliC,EAAOu0D,QAAQstD,EAAartD,aAC5Bx0D,EAAO6c,MAAM,GAEb2E,QAAQgnB,KAAK,CAAC0/I,EAAmBjvI,WAAYkvI,EAAYlvI,aAAahpC,KAAKwR,EAC5E,CAAC,MAAOja,GACPka,EAAOla,EACR,CAXD,QAYEgyK,GACD,CACF,GACF,KAEK4O,EAAAA,SAAAA,iCACJ,SAAAA,EAAY9pK,GAAM,IAAApL,EAAA,SAAA8uK,EAAA14I,SAAA,KAAA8+I,IAChBl1K,EAAA+T,EAAAprB,KAAA,OAEK8oL,MAAQ,KACbzxK,EAAKm1K,OAAS,EACdn1K,EAAKo1K,MAAQ,EACbp1K,EAAKq1K,OAAS,KACdr1K,EAAKs1K,QAAU,EAEft1K,EAAKoL,KAAOA,EAEZpL,EAAKu1K,WAAa,KAClBv1K,EAAKq/J,MAAQ,KACbr/J,EAAKkE,QAAU,KACflE,EAAKw1K,OAAS,KACdx1K,EAAKy1K,QAAU,KACfz1K,EAAK01K,SAAW,KAChB11K,EAAK21K,QAAU,KAjBC31K,CAkBjB,wCAED,WACE,OAAO/R,KAAKwjL,KACb,MAED,SAASjoL,GACPyE,KAAKwjL,MAAQjoL,CACd,yBAED,WACE,OAAO,EAAAqmL,EAAAh/H,wBAAuB5iD,KAAM,WACrC,MAED,SAAezE,IACb,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,WAAYzE,EAC1C,oBAED,WACE,OAAO,EAAAqmL,EAAAh/H,wBAAuB5iD,KAAM,MACrC,MAED,SAAUzE,IACR,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,MAAOzE,EACrC,sBAED,WACE,OAAO,EAAAqmL,EAAAh/H,wBAAuB5iD,KAAM,QACrC,MAED,SAAYzE,IACV,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,QAASzE,EACvC,qBAED,WACE,OAAO,EAAAqmL,EAAAh/H,wBAAuB5iD,KAAM,OACrC,MAED,SAAWzE,IACT,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,OAAQzE,EACtC,sBAED,WACE,OAAO,EAAAqmL,EAAAh/H,wBAAuB5iD,KAAM,QACrC,MAED,SAAYzE,IACV,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,QAASzE,EACvC,uBAED,WACE,OAAO,EAAAqmL,EAAAh/H,wBAAuB5iD,KAAM,SACrC,MAED,SAAazE,IACX,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,SAAUzE,EACxC,sBAED,WACE,OAAO,EAAAqmL,EAAAh/H,wBAAuB5iD,KAAM,QACrC,MAED,SAAYzE,IACV,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,QAASzE,EACvC,oBAED,WACE,OAAOyE,KAAKknL,MACb,MAED,SAAU3rL,GACRyE,KAAKknL,OAAS3rL,CACf,mBAED,WACE,OAAOyE,KAAKmnL,KACb,MAED,SAAS5rL,GACPyE,KAAKmnL,MAAQ5rL,CACd,oBAED,WACE,OAAOyE,KAAKonL,MACb,MAED,SAAU7rL,GACRyE,KAAKonL,OAAS7rL,CACf,qBAED,WACE,OAAOyE,KAAKqnL,OACb,MAED,SAAW9rL,GACTyE,KAAKqnL,QAAU9rL,CAChB,wBAED,SAAAk0C,GAA0D,IAAhDk4I,EAAgDl4I,EAAhDk4I,aAAcjC,EAAkCj2I,EAAlCi2I,iBAAkB30F,EAAgBthD,EAAhBshD,aACxC/wF,KAAK4nL,oBAAqB,EAAAlB,EAAAv+I,SAAgB,CACxCu9I,iBAAAA,EACAiC,aAAAA,EACAvrG,KAAMp8E,KAAKo8E,MAAQp9E,OAAO6Q,UAAU2I,SACpCu4E,aAAAA,EACA82F,MAAO7nL,KAAK6nL,MACZC,KAAM9nL,KAAK8nL,KACX3qK,KAAMnd,KAAKmd,KACXmoF,MAAOtlG,KAAKslG,OAAStlG,KAAKslG,MAAMyiF,SAChC7jE,OAAQlkH,KAAKkkH,SAKflkH,KAAK4nL,mBAAmBv3H,OACzB,oEAED,SAAAnpC,EAAWw5F,GAAX,IAAA7hH,EAAAgxF,EAAA,OAAAizF,EAAA36I,QAAA3gB,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,cAAAkE,EAAAqI,KAAA,EAGI/a,KAAK2lC,cAAc,IAAIghJ,EAAAx+I,QAAqB,UAGtCtpC,EAAS6hH,EAAawB,qBANhCxvG,EAAAygK,GAO8B0T,EAP9Bn0K,EAAA0yK,GAOmD1kE,EAPnDhuG,EAAAlE,KAAA,EAOuExO,KAAK4nL,mBAP5E,cAAAl1K,EAAAs1K,GAAAt1K,EAAAsV,KAAAtV,EAAAlE,KAAA,MAAAkE,EAAAygK,IAAAzgK,EAAA0yK,GAAA1yK,EAAAs1K,IAAA,eAOUn4F,EAPVn9E,EAAAsV,KASIhoB,KAAKioL,eAAiBppL,EAT1B6T,EAAAlE,KAAA,GAWUs4K,EAAYpmE,EAAc7wB,EAAahxF,GAXjD,QAaImB,KAAKioL,eAAiB,KACtBjoL,KAAK2lC,cAAc,IAAIghJ,EAAAx+I,QAAqB,QAdhDz1B,EAAAlE,KAAA,iBAAAkE,EAAAqI,KAAA,GAAArI,EAAAw1K,GAAAx1K,EAAA,SAiBI1S,KAAK2lC,cAAc,IAAIwa,WAAW,QAAS,CAAEr9C,MAAO,mBAAoB3G,QAASuW,EAAAw1K,GAAMjlL,SAjB3F,yBAAAyP,EAAAyV,OAAA,GAAAjB,EAAA,4FAqBA,WACElnB,KAAKioL,gBAAkBjoL,KAAKioL,eAAe9/J,MAC5C,OA9JG8+J,CAAiCrF,EAAAjgI,eAiKxBslI,gLC7Mb,SAAA5+I,EAAArgC,GAAwC,IAA1BmgL,EAA0BngL,EAA1BmgL,OAAQ/rG,EAAkBp0E,EAAlBo0E,KAAM2rG,EAAY//K,EAAZ+/K,UAAY,EAAAlH,EAAA14I,SAAA,KAAAE,GACtCroC,KAAKqoC,UAAW,EAChBroC,KAAKooL,QAAUD,EACfnoL,KAAKwjL,MAAQpnG,EACbp8E,KAAKqoL,eAAgB,EACrBroL,KAAKsoL,MAAQP,EACb/nL,KAAKuoL,UAAYR,CAClB,2CAED,WACE,OAAO/nL,KAAKqoC,QACb,qBAED,WACE,OAAOroC,KAAKooL,OACb,mBAED,WACE,OAAOpoL,KAAKwjL,KACb,2BAED,WACE,OAAOxjL,KAAKqoL,aACb,mBAED,WACE,OAAOroL,KAAKsoL,KACb,uBAED,WACE,OAAOtoL,KAAKuoL,SACb,wDC5BH,SAASC,EAAmBjtL,GAC1B,IAAIktL,EAAWn4K,KAAK6+B,MAAoB,KAAb5zC,EAAQ,IAMnC,OAJIktL,GAAY,IACdA,EAAW,IAAMA,GAGZA,EAAW,GACnB,4DAEc,SAAAzgL,GAAuE,IAAlDo0E,EAAkDp0E,EAAlDo0E,KAAkDssG,EAAA1gL,EAA5C6/K,MAAAA,OAA4C,IAAAa,EAApC,EAAoCA,EAAAC,EAAA3gL,EAAjC8/K,KAAAA,OAAiC,IAAAa,EAA1B,EAA0BA,EAAvBxrK,EAAuBnV,EAAvBmV,KAAMmoF,EAAiBt9F,EAAjBs9F,MAAO4e,EAAUl8G,EAAVk8G,OAC1E,MAAO,kCAAPhqH,OAA0CkiF,EAA1C,2BAAAliF,OACoBkiF,EADpB,YAAAliF,OACqCorG,EADrC,4BAAAprG,OAEqBsuL,EAAmBX,GAFxC,YAAA3tL,OAE2DsuL,EAAmBV,GAF9E,cAAA5tL,OAEkGsuL,EAChGtkE,GAHF,cAAAhqH,OAKOijB,EALP,yCASD,6NCtBDykK,EAAAn/J,EAAA,OACAmmK,EAAAxgJ,EAAA3lB,EAAA,MACAomK,EAAAzgJ,EAAA3lB,EAAA,QAEAqmK,EAAA1gJ,EAAA3lB,EAAA,QACAsmK,EAAA3gJ,EAAA3lB,EAAA,QACAumK,EAAA5gJ,EAAA3lB,EAAA,QACAs/J,EAAA35I,EAAA3lB,EAAA,QACAkkK,EAAAv+I,EAAA3lB,EAAA,QACAwmK,EAAA7gJ,EAAA3lB,EAAA,odAGA,IACMymK,EAAc,aAEL,SAAA9oK,GACb,IAAAmlK,GAQI,EAAAxD,EAAA55I,SAAa/nB,GAPfsgG,EADF6kE,EACE7kE,aACAglE,EAFFH,EAEEG,iBAFFyD,EAAA5D,EAGEhF,SAAAA,OAHF,IAAA4I,EAGa,CACT7oE,aAActhH,OAAOshH,cAAgBthH,OAAOuhH,oBAJhD4oE,EAMEC,EANF7D,EAME6D,4BANFC,EAAA9D,EAOE/oE,4BAAAA,OAPF,IAAA6sE,EAJ4B,mCAI5BA,EAUA,IAAK3oE,IAAiB6/D,EAASjgE,aAK7B,OAJAlhH,QAAQ8O,KACN,wIAGK,CAAC,EAhBc,IAmBlBo7K,EAnBkB,SAAAhmI,IAAA,EAAA+/H,EAAAl7I,SAAAmhJ,EAAAhmI,GAAA,IAAAx9B,EAAAL,EAAA6jK,GAoBtB,SAAAA,IAAc,IAAAv3K,EAAA,SAAA8uK,EAAA14I,SAAA,KAAAmhJ,IACZv3K,EAAA+T,EAAAprB,KAAA,OAEKo+B,MAAQ,IAAIgwJ,EAAA3gJ,QAAkB,CAAEu4E,aAAAA,EAAc6/D,SAAAA,IAEnDxuK,EAAKw3K,eALOx3K,CAMb,CA1BqB,SAAA6xK,EAAAz7I,SAAAmhJ,EAAA,EAAAzrL,IAAA,SAAAtC,MA4BtB,WACEyE,KAAK84B,MAAM3Q,MACZ,GA9BqB,CAAAtqB,IAAA,YAAAtC,MAgCtB,WACE,OAAO2tL,CACR,GAlCqB,CAAArrL,IAAA,kBAAAsL,IAoCtB,WACE,OAAO,EAAAy4K,EAAAh/H,wBAAuB5iD,KAAM,gBACrC,EAtCqB6yB,IAwCtB,SAAoBt3B,IAClB,EAAAqmL,EAAA/+H,wBAAuB7iD,KAAM,gBAAiBzE,EAC/C,GA1CqB,CAAAsC,IAAA,QAAAtC,MA4CtB,WACEyE,KAAK84B,MAAMwrF,OACZ,GA9CqB,CAAAzmH,IAAA,SAAAtC,MAgDtB,WACEyE,KAAK84B,MAAM43B,QACZ,GAlDqB,CAAA7yD,IAAA,QAAAtC,MAoDtB,SAAM4qL,GACJ,KAAMA,aAAqB8C,EAAA9gJ,SACzB,MAAM,IAAI9kC,MAAM,qBAGlB,IAAAmmL,GAAqC,EAAAZ,EAAAzgJ,WAA7B5nB,EAARipK,EAAQjpK,OAAQD,EAAhBkpK,EAAgBlpK,QAAS0B,EAAzBwnK,EAAyBxnK,QACnB88G,EAAc,SAAA92H,GAAmC,IAAzBs8D,EAAyBt8D,EAAhClF,MAAkB3G,EAAc6L,EAAd7L,QACjC2G,EAAQ,IAAIO,MAAMihE,GAExBxhE,EAAMG,MAAQ9G,EAEdokB,EAAOzd,EACR,EAaD,OAXAqjL,EAAUxpK,iBAAiB,MAAO2D,GAClC6lK,EAAUxpK,iBAAiB,QAASmiH,GAEpCqnD,EAAUsD,QAAQ,CAChB9B,aAAcyB,EACd1D,iBAAAA,EACA30F,aAAcyrB,IAGhBx8G,KAAK84B,MAAM59B,KAAKirL,GAETnkK,EAAQszF,SAAQ,WACrB6wE,EAAUrmK,oBAAoB,MAAOQ,GACrC6lK,EAAUrmK,oBAAoB,QAASg/G,EACxC,GACF,GAjFqB,CAAAjhI,IAAA,WAAAsL,IAmFtB,WACE,OAAOnJ,KAAK84B,MAAM4wJ,QACnB,GArFqB,CAAA7rL,IAAA,eAAAtC,MAAA,eAAAouL,GAAA,EAAA9G,EAAA16I,SAAA26I,EAAA36I,QAAAlhB,MAuFtB,SAAAwsJ,IAAA,IAAAqS,EAAA8D,EAAApoH,EAAAqoH,EAAAvxH,EAAAvjD,EAAA,YAAA+tK,EAAA36I,QAAA3gB,MAAA,SAAAmsJ,GAAA,cAAAA,EAAA54J,KAAA44J,EAAAnlK,MAAA,cAAAmlK,EAAAnlK,KAAA,EAC0Fk3K,IAD1F,UAAAI,EAAAnS,EAAA3rJ,KACU4hK,EADV9D,EACU8D,oBAAqBpoH,EAD/BskH,EAC+BtkH,OAAQqoH,EADvC/D,EACuC+D,wBAAyBvxH,EADhEwtH,EACgExtH,iBAE1D8wH,EAHN,CAAAzV,EAAAnlK,KAAA,aAIQ8pD,EAJR,CAAAq7G,EAAAnlK,KAAA,gBAKMpP,QAAQ8O,KACN,iHANRylK,EAAAnlK,KAAA,IASY,EAAAq6K,EAAA1gJ,UAAA,EAAA06I,EAAA16I,SAAA26I,EAAA36I,QAAAlhB,MAAkB,SAAAC,IAAA,IAAA4iK,EAAA,OAAAhH,EAAA36I,QAAA3gB,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,cAAAkE,EAAAlE,KAAA,GACD,EAAAu6K,EAAA5gJ,SAAkB,CACrCyhJ,oBAAAA,EACAjC,aAAcyB,EACd5nH,OAAAA,EACAqoH,wBAAAA,EACAvxH,gBAAAA,IANoB,OAChBwxH,EADgBp3K,EAAAsV,KAStBjT,EAAKmmH,UAAY,kBAAM4uD,CAAN,EATK,wBAAAp3K,EAAAyV,OAAA,GAAAjB,EAAA,MAT9B,QAAAysJ,EAAAnlK,KAAA,wBAAAmlK,EAAAnlK,KAAA,IAyBU,EAAAq6K,EAAA1gJ,UAAA,EAAA06I,EAAA16I,SAAA26I,EAAA36I,QAAAlhB,MAAkB,SAAAosJ,IAAA,IAAAyW,EAAA,OAAAhH,EAAA36I,QAAA3gB,MAAA,SAAA+rJ,GAAA,cAAAA,EAAAx4J,KAAAw4J,EAAA/kK,MAAA,cAAA+kK,EAAAJ,GACD6V,EAAA7gJ,QADCorI,EAAA/kK,KAAA,EACiBk3K,IADjB,cAAAnS,EAAA6R,GAAA7R,EAAAvrJ,KAAAurJ,EAAA/kK,KAAA,KAAA+kK,EAAAJ,IAAAI,EAAA6R,IAAA,OAChB0E,EADgBvW,EAAAvrJ,KAGtBjT,EAAKmmH,UAAY,kBAAM4uD,CAAN,EAHK,wBAAAvW,EAAAprJ,OAAA,GAAAkrJ,EAAA,MAzB5B,QAgCErzK,KAAK2lC,cAAc,IAAIghJ,EAAAx+I,QAAqB,kBAhC9C,yBAAAwrI,EAAAxrJ,OAAA,GAAAsrJ,EAAA,UAvFsB,yBAAAkW,EAAA77K,MAAA,KAAAlP,UAAA,QAAA0qL,CAAA,EAmBM1H,EAAAjgI,aAwG9B,MAAO,CACLooI,gBAAiB,IAAIT,EACrBn4F,qBAAAw1F,EAAAx+I,QACA8+I,yBAAAgC,EAAA9gJ,QAEH,4LC/ID6hJ,EAAA5hJ,EAAA3lB,EAAA,iBAEewnK,EAAkB,sFAAjC,SAAA/iK,EAAAlf,GAAA,IAAA4hL,EAAAjC,EAAAnmH,EAAAlJ,EAAAy7D,EAAAhuG,EAAA,OAAA+8J,EAAA36I,QAAA3gB,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,cAAmCo7K,EAAnC5hL,EAAmC4hL,oBAAqBjC,EAAxD3/K,EAAwD2/K,aAAcnmH,EAAtEx5D,EAAsEw5D,OAAQlJ,EAA9EtwD,EAA8EswD,gBACtEy7D,EAAW61D,GAAuB,GAAJ1vL,OAAQsnE,EAAR,yCADtC9uD,EAAAlE,KAAA,EAIoBuR,MAAM,WAAD7lB,OACTgwL,UAAUn2D,GADD,qCAAA75H,OACgDuc,mBAAmBkxK,IACxF,CACEnhK,QAAS,CACP2jK,OAAQ,mBACR,4BAA6B7xH,KATrC,WAIQvyC,EAJRrT,EAAAsV,MAcWie,GAdX,CAAAvzB,EAAAlE,KAAA,cAeU,IAAInL,MAAM,iCAfpB,cAAAqP,EAAAwV,OAAA,SAkBSnC,EAAIM,QAlBb,wBAAA3T,EAAAyV,OAAA,GAAAjB,EAAA,gFAqBe,SAAAmsJ,EAAA5jI,GAAA,IAAAm6I,EAAAjC,EAAAnmH,EAAAlJ,EAAA8xH,EAAA3uG,EAAA,OAAAqnG,EAAA36I,QAAA3gB,MAAA,SAAA+rJ,GAAA,cAAAA,EAAAx4J,KAAAw4J,EAAA/kK,MAAA,cAAiBo7K,EAAjBn6I,EAAiBm6I,oBAAqBjC,EAAtCl4I,EAAsCk4I,aAAcnmH,EAApD/xB,EAAoD+xB,OAAQlJ,EAA5D7oB,EAA4D6oB,gBAA5Di7G,EAAA/kK,KAAA,EACYy7K,EAAkB,CAAEL,oBAAAA,EAAqBjC,aAAAA,EAAcnmH,OAAAA,EAAQlJ,gBAAAA,IAD3E,cAAA8xH,EAAA7W,EAAAvrJ,KACLyzD,EADK2uG,EACL3uG,OADK83F,EAAArrJ,OAAA,SAGNuzD,EACJ13E,KACC,SAAAotC,GAAA,IAAyBg3I,EAAzBh3I,EAAG+7B,WAAc84D,OAA0B5pD,EAA3CjrC,EAAmC/4B,OAAoB2vK,EAAvD52I,EAAiD1yC,KAAjD,OACE,IAAIurL,EAAA7hJ,QAAqB,CAAEggJ,OAAAA,EAAQ/rG,KAAAA,EAAM2rG,SAAAA,GAD3C,IAGD33E,MAAK,SAAA9+D,EAAAC,GAAA,IAASn3C,EAATk3C,EAAG7yC,KAAmByrC,EAAtBqH,EAAgB9yC,KAAhB,OAA+BrE,EAAI8vC,EAAI,EAAI9vC,EAAI8vC,GAAK,EAAI,CAAxD,KARK,wBAAAqpI,EAAAprJ,OAAA,GAAAkrJ,EAAA,qOCzBfgX,EAAA5nK,EAAA,OACA6nK,EAAAliJ,EAAA3lB,EAAA,QACA8nK,EAAAniJ,EAAA3lB,EAAA,mlBAEA,IAAM+nK,EAAmB,QACnBC,EAAwB,4BACxBC,EAAgB,mEAChBC,EACJ,2nBAEa,SAAAzjK,EAAAlf,GAAA,IAAA2/K,EAAAjC,EAAAkF,EAAAxuG,EAAAyuG,EAAA95F,EAAA82F,EAAAC,EAAA3qK,EAAA2tK,EAAAxlF,EAAA4e,EAAA4hE,EAAAlrF,EAAAp5B,EAAAqoH,EAAAvxH,EAAAw0B,EAAAinC,EAAAt1G,EAAA9I,EAAAoQ,EAAA,OAAA+8J,EAAA36I,QAAA3gB,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,UACbm5K,EADa3/K,EACb2/K,aACAjC,EAFa19K,EAEb09K,iBAFakF,EAAA5iL,EAGbo0E,KAAAA,OAHa,IAAAwuG,EAGNJ,EAHMI,EAAAC,EAAA7iL,EAIb+oF,aAAAA,OAJa,IAAA85F,EAIEJ,EAJFI,EAKbhD,EALa7/K,EAKb6/K,MACAC,EANa9/K,EAMb8/K,KACA3qK,EAPanV,EAObmV,KAPa2tK,EAAA9iL,EAQbs9F,MAAAA,OARa,IAAAwlF,EAQLJ,EARKI,EASb5mE,EATal8G,EASbk8G,OAEK/mG,EAXQ,CAAAzK,EAAAlE,KAAA,eAAAkE,EAAAwV,OAAA,UAaJ,EAAAmiK,EAAA3lK,QAAOimK,IAbH,cAAAj4K,EAAAlE,KAAA,EAgB0Ek3K,IAhB1E,UAAAI,EAAApzK,EAAAsV,KAgBL4yE,EAhBKkrF,EAgBLlrF,mBAAoBp5B,EAhBfskH,EAgBetkH,OAAQqoH,EAhBvB/D,EAgBuB+D,wBAAyBvxH,EAhBhDwtH,EAgBgDxtH,kBAExDsiC,GAAsBtiC,IAAsBsiC,IAAuBtiC,GAlB3D,CAAA5lD,EAAAlE,KAAA,eAmBL,IAAInL,MAAM,iEAnBL,aAoBDm+D,GAAUqoH,IAA8BroH,IAAWqoH,GApBlD,CAAAn3K,EAAAlE,KAAA,eAqBL,IAAInL,MAAM,iEArBL,eAwBPypF,GAAO,EAAAy9F,EAAApiJ,SAAOhrB,GAAQA,GAAO,EAAAmtK,EAAAniJ,SAAU,CAAEi0C,KAAAA,EAAMyrG,MAAAA,EAAOC,KAAAA,EAAM3qK,KAAAA,EAAMmoF,MAAAA,EAAO4e,OAAAA,IAGzE6P,EACJ81D,GACa,GAAA3vL,OACLgwL,UAAU1oH,GADjBmmH,EAAY,2DAGTlpK,EAASkpK,EAAe,iBAAHztL,OAAqBgwL,UAAUvC,IAAmB,GACvEhyK,EAjCO,WAAAzb,OAiCW65H,EAjCX,yBAAA75H,OAiC6CukB,GAjC7C/L,EAAAlE,KAAA,GAmCKuR,MAAMpK,EAAK,CAC3B6Q,QAAOtB,EAAA,CACL,eAAgB,uBAChB,2BAA4B6rE,GACxB6J,EACA,CACEjzE,cAAe,UAAFztB,OAAa0gG,IAE5B,CACE,4BAA6BtiC,IAGrCt6D,OAAQ,OACR6X,KAAMi3E,IAhDK,YAmCP/mE,EAnCOrT,EAAAsV,MAmDJie,GAnDI,CAAAvzB,EAAAlE,KAAA,eAoDL,IAAInL,MAAJ,6EAAAnJ,OAAwF6rB,EAAI9O,SApDvF,eAAAvE,EAAAwV,OAAA,SAuDNnC,EAAIO,eAvDE,yBAAA5T,EAAAyV,OAAA,GAAAjB,EAAA,oJCN2B,iFAF1C8iK,EAAA5hJ,EAAA3lB,EAAA,uoBAEe,SAAAyE,EAAAlf,GAAA,IAAA4yF,EAAAp5B,EAAAqoH,EAAAvxH,EAAAy7D,EAAAhuG,EAAA+jK,EAAA,OAAAhH,EAAA36I,QAAA3gB,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,cAA6BosF,EAA7B5yF,EAA6B4yF,mBAAoBp5B,EAAjDx5D,EAAiDw5D,OAAQqoH,EAAzD7hL,EAAyD6hL,wBAAyBvxH,EAAlFtwD,EAAkFswD,gBAEzFy7D,EAAW81D,GAA2B,GAAJ3vL,OAAQgwL,UAAU1oH,GAAlB,6BAF3B9uD,EAAAlE,KAAA,EAGKuR,MAAM,WAAD7lB,OAAa65H,EAAb,kCAAwD,CAC7EvtG,QAAOtB,EAAA,CACL,eAAgB,oBACZ01E,EACA,CACEhjC,cAAe,UAAF19D,OAAa0gG,IAE5B,CACE,4BAA6BtiC,MAX1B,WAGPvyC,EAHOrT,EAAAsV,MAgBJie,GAhBI,CAAAvzB,EAAAlE,KAAA,cAiBL,IAAInL,MAAM,0BAjBL,cAAAqP,EAAAlE,KAAA,EAoBQuX,EAAIM,OApBZ,cAoBPyjK,EApBOp3K,EAAAsV,KAAAtV,EAAAwV,OAAA,SAsBN4hK,EACJ/lL,KAAI,SAAA0rC,GAAA,IAAW04I,EAAX14I,EAAGu2F,OAAwB5pD,EAA3B3sC,EAAmBisF,OAAoBqsD,EAAvCt4I,EAAiCs2C,KAAjC,OAAsD,IAAIikG,EAAA7hJ,QAAqB,CAAEggJ,OAAAA,EAAQ/rG,KAAAA,EAAM2rG,SAAAA,GAA/F,IACJ33E,MAAK,SAAA1gE,EAAAyB,GAAA,IAAS/2C,EAATs1C,EAAGjxC,KAAmByrC,EAAtBiH,EAAgB1yC,KAAhB,OAA+BrE,EAAI8vC,EAAI,EAAI9vC,EAAI8vC,GAAK,EAAI,CAAxD,KAxBK,yBAAAx3B,EAAAyV,OAAA,GAAAjB,EAAA,0HCDA,SAAgB/J,GAC7B,OAAO4tK,EAAkB5sL,KAAKgf,IAAS6tK,EAAmB7sL,KAAKgf,EAChE,EALD,IAAM4tK,EAAoB,wJACpBC,EAAqB,8OCDZ,SAAwBrsL,EAAQF,EAAMyiC,GAGnD,OAFAviC,EAAOge,iBAAiBle,EAAMyiC,GAEvB,kBAAMviC,EAAOmhB,oBAAoBrhB,EAAMyiC,EAAvC,CACR,4LCJK+pJ,EAAqB,uHAEZ,SAAA/jK,EAAAlf,GAAA,IAAAw5D,EAAAlJ,EAAAvyC,EAAA,OAAA+8J,EAAA36I,QAAA3gB,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,cAAkBgzD,EAAlBx5D,EAAkBw5D,OAAQlJ,EAA1BtwD,EAA0BswD,gBAA1B5lD,EAAAlE,KAAA,EACKuR,MAChBkrK,EAAmBtnL,QAAQ,aAAe69D,GAC1C,CACEh7C,QAAS,CACP,4BAA6B8xC,GAE/Bt6D,OAAQ,SAPC,WACP+nB,EADOrT,EAAAsV,MAWJie,GAXI,CAAAvzB,EAAAlE,KAAA,cAYL,IAAInL,MAAJ,wDAAAnJ,OAAmE6rB,EAAI9O,SAZlE,cAAAvE,EAAAwV,OAAA,SAeNnC,EAAI5I,QAfE,wBAAAzK,EAAAyV,OAAA,GAAAjB,EAAA,2ICEA,WAQP,IAAAlf,EAAApJ,UAAA7E,OAAA,QAAAuC,IAAAsC,UAAA,GAAAA,UAAA,GAAJ,CAAC,EAPHg8F,EAOM5yF,EAPN4yF,mBACAswF,EAMMljL,EANNkjL,YACAC,EAKMnjL,EALNmjL,WACAhI,EAIMn7K,EAJNm7K,YAIMiI,EAAApjL,EAHNw5D,OAAAA,OAGM,IAAA4pH,EAHG,SAGHA,EAFN9yH,EAEMtwD,EAFNswD,gBACG+yH,GACG,EAAAC,EAAAnjJ,SAAAngC,EAAAujL,GACoB,qBAAfJ,IACT/rL,QAAQ8O,KAAK,4FAEbi1K,EAAcgI,GAGhB,IAAKD,EAAa,CAChB,IAAKtwF,IAAuBtiC,EAC1B,MAAM,IAAIj1D,MAAM,iEAEhBjE,QAAQ8O,KACN,oMAGFg9K,EAAW,eAAAz7I,GAAG,EAAHozI,EAAA16I,SAAA26I,EAAA36I,QAAAlhB,MAAG,SAAAC,IAAA,OAAA47J,EAAA36I,QAAA3gB,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,WACZosF,EADY,CAAAloF,EAAAlE,KAAA,eAAAkE,EAAAlE,KAAA,GAEoB,EAAAg9K,EAAArjJ,SAA6ByyD,GAFjD,OAAAloF,EAAA0yK,GAAA1yK,EAAAsV,KAAAtV,EAAAs1K,GAEsExmH,EAFtE9uD,EAAAygK,GAAA,CAENv4E,mBAFMloF,EAAA0yK,GAEsE5jH,OAFtE9uD,EAAAs1K,IAAAt1K,EAAAlE,KAAA,uBAAAkE,EAAAw1K,GAGN1mH,EAHM9uD,EAAAlE,KAAA,IAGyB,EAAAg9K,EAAArjJ,SAA6BmwB,GAHtD,QAAA5lD,EAAA+4K,GAAA/4K,EAAAsV,KAAAtV,EAAAygK,GAAA,CAGN3xG,OAHM9uD,EAAAw1K,GAGE5vH,gBAHF5lD,EAAA+4K,IAAA,eAAA/4K,EAAAwV,OAAA,SAAAxV,EAAAygK,IAAA,yBAAAzgK,EAAAyV,OAAA,GAAAjB,EAAA,KAAH,yBAAAuoB,EAAA3hC,MAAA,KAAAlP,UAAA,IAKd,CAED,OAAAsmB,EAAAA,EAAA,GACKmmK,GADL,IAEE3F,iBAAkB,WAAF,IAAAgG,GAAA,EAAA7I,EAAA16I,SAAA26I,EAAA36I,QAAAlhB,MAAE,SAAAosJ,IAAA,IAAAsY,EAAA/wF,EAAAgvF,EAAApoH,EAAAukH,EAAA8D,EAAAvxH,EAAAszH,EAAA,OAAA9I,EAAA36I,QAAA3gB,MAAA,SAAA+rJ,GAAA,cAAAA,EAAAx4J,KAAAw4J,EAAA/kK,MAAA,cAAA+kK,EAAA/kK,KAAA,GAQN,EAAAg9K,EAAArjJ,SAA6B+iJ,GARvB,UAAAS,EAAApY,EAAAvrJ,KAEd4yE,EAFc+wF,EAEd/wF,mBACAgvF,EAHc+B,EAGd/B,oBACApoH,EAJcmqH,EAIdnqH,OACAukH,EALc4F,EAKd5F,0BACA8D,EANc8B,EAMd9B,wBACAvxH,EAPcqzH,EAOdrzH,mBAGIsiC,IAAuBtiC,GAAqBsiC,GAAsBtiC,GAVxD,CAAAi7G,EAAA/kK,KAAA,eAWR,IAAInL,MACR,qGAZY,WAcJm+D,GAAYukH,GAA6B8D,EAdrC,CAAAtW,EAAA/kK,KAAA,eAeR,IAAInL,MACR,4HAhBY,YAkBLm+D,KAAWooH,GAAuB7D,GAA6B8D,GAlB1D,CAAAtW,EAAA/kK,KAAA,eAmBR,IAAInL,MACR,uJApBY,YAsBLu3F,EAtBK,CAAA24E,EAAA/kK,KAAA,YAuBoB,kBAAvBosF,EAvBG,CAAA24E,EAAA/kK,KAAA,eAwBN,IAAInL,MAAM,yEAxBJ,QAAAkwK,EAAA/kK,KAAA,oBA0BsB,kBAApB8pD,EA1BF,CAAAi7G,EAAA/kK,KAAA,eA2BR,IAAInL,MAAM,sEA3BF,eA8BZwoL,GAA+BvzH,IACjCl5D,QAAQ8O,KACN,8IAGF29K,GAA8B,GAG1BD,EAAsBhxF,EAAqB,CAAEA,mBAAAA,GAAuB,CAAEtiC,gBAAAA,GAExEkJ,EACFoqH,EAAoBpqH,OAASA,GAE7BoqH,EAAoBhC,oBAAsBA,EAC1CgC,EAAoB7F,0BAA4BA,EAChD6F,EAAoB/B,wBAA0BA,GA7ChCtW,EAAArrJ,OAAA,SAgDT0jK,GAhDS,yBAAArY,EAAAprJ,OAAA,GAAAkrJ,EAAA,KAAF,yBAAAqY,EAAA59K,MAAA,KAAAlP,UAAA,EAAE,GAkDlBukL,YAAAA,GAEH,8DAxFDqI,EAAApjJ,EAAA3lB,EAAA,grBAEA,IAAIopK,GAA8B,+FCFnB,SAAsCC,GACnD,MAA4B,oBAAdA,EAA2BA,IAAcA,CACxD,gHCFc,SAAS/3I,EAAOg4I,GAC7B,IAAMhoL,EAAGmhB,EAAAA,EAAAA,EAAA,GACJ,GAAGk9J,OAAO1nL,KACXq5C,GACA,SAAChwC,EAAKxI,EAAOgT,GAGX,OAFAxK,EAAIwK,GAAShT,EAENwI,CACR,GACD,CAAC,IAEAgoL,GAVI,MAAAC,EAAA7jJ,SAAA,CAWPpuC,OAAQg6C,EAAMh6C,QACbimC,OAAOhL,UAAW,iBAAM,GAAG9wB,MAAMxJ,KAAKqJ,GAAKi8B,OAAOhL,WAAhC,KAGrB,OAAOjxB,CACR,8sBCfc,WACb,IAAIkoL,EACEnzJ,EAAQ,GAqBd,MAAO,CACL59B,KApBW,SAAAK,GACX,GAAI0wL,EAAe,CACjB,IAAQ3rK,EAAY2rK,EAAZ3rK,QAER2rK,EAAgB,KAChB3rK,EAAQ/kB,EACT,MACCu9B,EAAM59B,KAAKK,EAEd,EAYC4J,MAVY,WACZ,OAAI2zB,EAAM/+B,OACDsmB,QAAQC,QAAQwY,EAAM3zB,UAGvB8mL,IAAkBA,GAAgB,EAAArD,EAAAzgJ,aAAmBnmB,OAC9D,EAMF,EA7BD,IAAA4mK,EAAAxgJ,EAAA3lB,EAAA,oECAA,MAAA2lB,EAAA3lB,EAAA,QAEe0lB,yKCFf/uC,EAAOC,QAAU,EAAjB,0BCKAD,EAAOC,QALP,SAAgCiB,GAC9B,OAAOA,GAAOA,EAAImuI,WAAanuI,EAAM,CACnC,QAAWA,EAEf,EACyClB,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCA9GD,EAAOC,QALP,SAA2BI,EAAKK,IACnB,MAAPA,GAAeA,EAAML,EAAIM,UAAQD,EAAML,EAAIM,QAC/C,IAAK,IAAIF,EAAI,EAAGm7K,EAAO,IAAItrK,MAAM5P,GAAMD,EAAIC,EAAKD,IAAKm7K,EAAKn7K,GAAKJ,EAAII,GACnE,OAAOm7K,CACT,EACoC57K,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCFzGD,EAAOC,QAHP,SAAyBI,GACvB,GAAIiQ,MAAMkf,QAAQnvB,GAAM,OAAOA,CACjC,EACkCL,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCHvG,IAAI6yL,EAAmB,EAAQ,OAI/B9yL,EAAOC,QAHP,SAA4BI,GAC1B,GAAIiQ,MAAMkf,QAAQnvB,GAAM,OAAOyyL,EAAiBzyL,EAClD,EACqCL,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCE1GD,EAAOC,QANP,SAAgCqW,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIu/H,eAAe,6DAE3B,OAAOv/H,CACT,EACyCtW,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCN9G,SAASo2K,EAAmBC,EAAKpvJ,EAASC,EAAQovJ,EAAOC,EAAQ/xK,EAAKoc,GACpE,IACE,IAAI1H,EAAOm9J,EAAI7xK,GAAKoc,GAChB1e,EAAQgX,EAAKhX,KACnB,CAAE,MAAOuH,GAEP,YADAyd,EAAOzd,EAET,CACIyP,EAAKqU,KACPtG,EAAQ/kB,GAER8kB,QAAQC,QAAQ/kB,GAAOuT,KAAK6gK,EAAOC,EAEvC,CAiBAx2K,EAAOC,QAhBP,SAA2BK,GACzB,OAAO,WACL,IAAIgW,EAAO1P,KACTyB,EAAO7C,UACT,OAAO,IAAIyhB,SAAQ,SAAUC,EAASC,GACpC,IAAImvJ,EAAMh2K,EAAGoU,MAAM4B,EAAMjO,GACzB,SAASkuK,EAAMp0K,GACbk0K,EAAmBC,EAAKpvJ,EAASC,EAAQovJ,EAAOC,EAAQ,OAAQr0K,EAClE,CACA,SAASq0K,EAAOvpK,GACdopK,EAAmBC,EAAKpvJ,EAASC,EAAQovJ,EAAOC,EAAQ,QAASvpK,EACnE,CACAspK,OAAMrzK,EACR,GACF,CACF,EACoClD,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCzBzGD,EAAOC,QALP,SAAyB+uD,EAAUzpB,GACjC,KAAMypB,aAAoBzpB,GACxB,MAAM,IAAI/8B,UAAU,oCAExB,EACkCxI,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,8BCLvG,IAAIi9B,EAAiB,EAAQ,MACzB61J,EAA2B,EAAQ,OACvC,SAASC,EAAWC,EAAQ5qL,EAAM6qL,GAahC,OAZIH,KACF/yL,EAAOC,QAAU+yL,EAAal7J,QAAQ0C,UAAUl0B,OAAQtG,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,UAE7HD,EAAOC,QAAU+yL,EAAa,SAAoBC,EAAQ5qL,EAAM6qL,GAC9D,IAAI/tK,EAAI,CAAC,MACTA,EAAErjB,KAAK4S,MAAMyQ,EAAG9c,GAChB,IACI2mD,EAAW,IADGn3B,SAASvxB,KAAKoO,MAAMu+K,EAAQ9tK,IAG9C,OADI+tK,GAAOh2J,EAAe8xB,EAAUkkI,EAAM9xL,WACnC4tD,CACT,EAAGhvD,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,SAEnE+yL,EAAWt+K,MAAM,KAAMlP,UAChC,CACAxF,EAAOC,QAAU+yL,EAAYhzL,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCjBlG,IAAIuiC,EAAgB,EAAQ,OAC5B,SAASi0I,EAAkBlxK,EAAQ4C,GACjC,IAAK,IAAI1H,EAAI,EAAGA,EAAI0H,EAAMxH,OAAQF,IAAK,CACrC,IAAIoyB,EAAa1qB,EAAM1H,GACvBoyB,EAAWH,WAAaG,EAAWH,aAAc,EACjDG,EAAWF,cAAe,EACtB,UAAWE,IAAYA,EAAWD,UAAW,GACjDzxB,OAAOgsB,eAAe5nB,EAAQi9B,EAAc3P,EAAWpuB,KAAMouB,EAC/D,CACF,CASA7yB,EAAOC,QARP,SAAsBslC,EAAaovG,EAAYC,GAM7C,OALID,GAAY8hC,EAAkBlxI,EAAYnkC,UAAWuzI,GACrDC,GAAa6hC,EAAkBlxI,EAAaqvG,GAChDzzI,OAAOgsB,eAAeoY,EAAa,YAAa,CAC9C3S,UAAU,IAEL2S,CACT,EAC+BvlC,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BClBpG,IAAIkzL,EAA6B,EAAQ,OAoDzCnzL,EAAOC,QAnDP,SAAoC8M,EAAGqmL,GACrC,IAAIpjK,EAAuB,qBAAX4W,QAA0B75B,EAAE65B,OAAOhL,WAAa7uB,EAAE,cAClE,IAAKijB,EAAI,CACP,GAAI1f,MAAMkf,QAAQziB,KAAOijB,EAAKmjK,EAA2BpmL,KAAOqmL,GAAkBrmL,GAAyB,kBAAbA,EAAEpM,OAAqB,CAC/GqvB,IAAIjjB,EAAIijB,GACZ,IAAIvvB,EAAI,EACJ2xB,EAAI,WAAc,EACtB,MAAO,CACLttB,EAAGstB,EACH/qB,EAAG,WACD,OAAI5G,GAAKsM,EAAEpM,OAAe,CACxB6sB,MAAM,GAED,CACLA,MAAM,EACNrrB,MAAO4K,EAAEtM,KAEb,EACA8K,EAAG,SAAWu6E,GACZ,MAAMA,CACR,EACAxjF,EAAG8vB,EAEP,CACA,MAAM,IAAI5pB,UAAU,wIACtB,CACA,IAEEyE,EAFEomL,GAAmB,EACrBC,GAAS,EAEX,MAAO,CACLxuL,EAAG,WACDkrB,EAAKA,EAAG1uB,KAAKyL,EACf,EACA1F,EAAG,WACD,IAAIy0B,EAAO9L,EAAG5a,OAEd,OADAi+K,EAAmBv3J,EAAKtO,KACjBsO,CACT,EACAvwB,EAAG,SAAWgoL,GACZD,GAAS,EACTrmL,EAAMsmL,CACR,EACAjxL,EAAG,WACD,IACO+wL,GAAoC,MAAhBrjK,EAAW,QAAWA,EAAW,QAC5D,CAAE,QACA,GAAIsjK,EAAQ,MAAMrmL,CACpB,CACF,EAEJ,EAC6CjN,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCpDlH,IAAIqyB,EAAiB,EAAQ,OACzBygK,EAA2B,EAAQ,OACnCS,EAA4B,EAAQ,OAexCxzL,EAAOC,QAdP,SAAsBggD,GACpB,IAAIC,EAA4B6yI,IAChC,OAAO,WACL,IACEnxL,EADEy+C,EAAQ/tB,EAAe2tB,GAE3B,GAAIC,EAA2B,CAC7B,IAAII,EAAYhuB,EAAe1rB,MAAMyrB,YACrCzwB,EAASk2B,QAAQ0C,UAAU6lB,EAAO76C,UAAW86C,EAC/C,MACE1+C,EAASy+C,EAAM3rC,MAAM9N,KAAMpB,WAE7B,OAAOguL,EAA0B5sL,KAAMhF,EACzC,CACF,EAC+B5B,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCjBpG,IAAIuiC,EAAgB,EAAQ,OAe5BxiC,EAAOC,QAdP,SAAyBiB,EAAKuD,EAAKtC,GAYjC,OAXAsC,EAAM+9B,EAAc/9B,MACTvD,EACTC,OAAOgsB,eAAejsB,EAAKuD,EAAK,CAC9BtC,MAAOA,EACPuwB,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZ1xB,EAAIuD,GAAOtC,EAENjB,CACT,EACkClB,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCfvG,IAAIwzL,EAAgB,EAAQ,MAC5B,SAAS30I,IAcP,MAbuB,qBAAZhnB,SAA2BA,QAAQ/nB,KAC5C/P,EAAOC,QAAU6+C,EAAOhnB,QAAQ/nB,IAAIzJ,OAAQtG,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,UAEjHD,EAAOC,QAAU6+C,EAAO,SAAcv5C,EAAQi8K,EAAUkS,GACtD,IAAI18K,EAAOy8K,EAAcluL,EAAQi8K,GACjC,GAAKxqK,EAAL,CACA,IAAI8oK,EAAO3+K,OAAO+wB,yBAAyBlb,EAAMwqK,GACjD,OAAI1B,EAAK/vK,IACA+vK,EAAK/vK,IAAIzO,KAAKkE,UAAU7E,OAAS,EAAI4E,EAASmuL,GAEhD5T,EAAK39K,KALK,CAMnB,EAAGnC,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,SAEnE6+C,EAAKpqC,MAAM9N,KAAMpB,UAC1B,CACAxF,EAAOC,QAAU6+C,EAAM9+C,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCjB5F,SAAS++C,EAAgBjyC,GAIvB,OAHA/M,EAAOC,QAAU++C,EAAkB79C,OAAO+7B,eAAiB/7B,OAAOmxB,eAAehsB,OAAS,SAAyByG,GACjH,OAAOA,EAAE62B,WAAaziC,OAAOmxB,eAAevlB,EAC9C,EAAG/M,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,QACjE++C,EAAgBjyC,EACzB,CACA/M,EAAOC,QAAU++C,EAAiBh/C,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCNvG,IAAIi9B,EAAiB,EAAQ,MAiB7Bl9B,EAAOC,QAhBP,SAAmB43I,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAItvI,UAAU,sDAEtBqvI,EAASz2I,UAAYD,OAAO2S,OAAOgkI,GAAcA,EAAW12I,UAAW,CACrEixB,YAAa,CACXlwB,MAAO01I,EACPjlH,UAAU,EACVD,cAAc,KAGlBxxB,OAAOgsB,eAAe0qH,EAAU,YAAa,CAC3CjlH,UAAU,IAERklH,GAAY56G,EAAe26G,EAAUC,EAC3C,EAC4B93I,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCZjGD,EAAOC,QALP,SAAgCiB,GAC9B,OAAOA,GAAOA,EAAImuI,WAAanuI,EAAM,CACnC,QAAWA,EAEf,EACyClB,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCF9GD,EAAOC,QAHP,SAA2BK,GACzB,OAAgE,IAAzDu3B,SAASx2B,SAASC,KAAKhB,GAAI8J,QAAQ,gBAC5C,EACoCpK,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCQzGD,EAAOC,QAXP,WACE,GAAuB,qBAAZ63B,UAA4BA,QAAQ0C,UAAW,OAAO,EACjE,GAAI1C,QAAQ0C,UAAU/C,KAAM,OAAO,EACnC,GAAqB,oBAAV0oB,MAAsB,OAAO,EACxC,IAEE,OADAn3C,QAAQ5H,UAAU2iC,QAAQziC,KAAKw2B,QAAQ0C,UAAUxxB,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOuC,GACP,OAAO,CACT,CACF,EAC4CvL,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCRjHD,EAAOC,QAHP,SAA0Bg7K,GACxB,GAAsB,qBAAXr0I,QAAmD,MAAzBq0I,EAAKr0I,OAAOhL,WAA2C,MAAtBq/I,EAAK,cAAuB,OAAO3qK,MAAMoU,KAAKu2J,EACtH,EACmCj7K,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCwBxGD,EAAOC,QA3BP,SAA+BI,EAAKI,GAClC,IAAIokD,EAAK,MAAQxkD,EAAM,KAAO,oBAAsBumC,QAAUvmC,EAAIumC,OAAOhL,WAAav7B,EAAI,cAC1F,GAAI,MAAQwkD,EAAI,CACd,IAAI22H,EACF11F,EACA92D,EACA2kK,EACArY,EAAO,GACPC,GAAK,EACL11F,GAAK,EACP,IACE,GAAI72D,GAAM61B,EAAKA,EAAGvjD,KAAKjB,IAAM+U,KAAM,IAAM3U,EAAG,CAC1C,GAAIU,OAAO0jD,KAAQA,EAAI,OACvB02H,GAAK,CACP,MAAO,OAASA,GAAMC,EAAKxsJ,EAAG1tB,KAAKujD,IAAKr3B,QAAU8tJ,EAAKx5K,KAAK05K,EAAGr5K,OAAQm5K,EAAK36K,SAAWF,GAAI86K,GAAK,GAClG,CAAE,MAAOtuK,GACP44E,GAAK,EAAIC,EAAK74E,CAChB,CAAE,QACA,IACE,IAAKsuK,GAAM,MAAQ12H,EAAW,SAAM8uI,EAAK9uI,EAAW,SAAK1jD,OAAOwyL,KAAQA,GAAK,MAC/E,CAAE,QACA,GAAI9tG,EAAI,MAAMC,CAChB,CACF,CACA,OAAOw1F,CACT,CACF,EACwCt7K,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCxB7GD,EAAOC,QAHP,WACE,MAAM,IAAIuI,UAAU,4IACtB,EACmCxI,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCAxGD,EAAOC,QAHP,WACE,MAAM,IAAIuI,UAAU,uIACtB,EACqCxI,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCH1G,IAAIktB,EAAiB,EAAQ,OAC7B,SAAS2E,EAAQV,EAAQmvB,GACvB,IAAItuB,EAAO9wB,OAAO8wB,KAAKb,GACvB,GAAIjwB,OAAO+hC,sBAAuB,CAChC,IAAIsd,EAAUr/C,OAAO+hC,sBAAsB9R,GAC3CmvB,IAAmBC,EAAUA,EAAQ/1C,QAAO,SAAUg2C,GACpD,OAAOt/C,OAAO+wB,yBAAyBd,EAAQqvB,GAAK/tB,UACtD,KAAKT,EAAKnwB,KAAK4S,MAAMud,EAAMuuB,EAC7B,CACA,OAAOvuB,CACT,CAYAjyB,EAAOC,QAXP,SAAwBsF,GACtB,IAAK,IAAI9E,EAAI,EAAGA,EAAI+E,UAAU7E,OAAQF,IAAK,CACzC,IAAIgF,EAAS,MAAQD,UAAU/E,GAAK+E,UAAU/E,GAAK,CAAC,EACpDA,EAAI,EAAIqxB,EAAQ3wB,OAAOsE,IAAS,GAAI4pB,SAAQ,SAAU5qB,GACpD0oB,EAAe5nB,EAAQd,EAAKgB,EAAOhB,GACrC,IAAKtD,OAAOu/C,0BAA4Bv/C,OAAOmhC,iBAAiB/8B,EAAQpE,OAAOu/C,0BAA0Bj7C,IAAWqsB,EAAQ3wB,OAAOsE,IAAS4pB,SAAQ,SAAU5qB,GAC5JtD,OAAOgsB,eAAe5nB,EAAQd,EAAKtD,OAAO+wB,yBAAyBzsB,EAAQhB,GAC7E,GACF,CACA,OAAOc,CACT,EACiCvF,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCtBtG,IAAIi/C,EAAU,iBACV00I,EAAwB,EAAQ,OASpC5zL,EAAOC,QARP,SAAoCqW,EAAMhV,GACxC,GAAIA,IAA2B,WAAlB49C,EAAQ59C,IAAsC,oBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAIkH,UAAU,4DAEtB,OAAOorL,EAAsBt9K,EAC/B,EAC6CtW,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCVlH,IAAIi/C,EAAU,iBACd,SAASrzB,IACP,aACA7rB,EAAOC,QAAU4rB,EAAsB,WACrC,OAAO5rB,CACT,EAAGD,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,QACxE,IAAIA,EAAU,CAAC,EACb4zL,EAAK1yL,OAAOC,UACZywB,EAASgiK,EAAGhyL,eACZsrB,EAAiBhsB,OAAOgsB,gBAAkB,SAAUjsB,EAAKuD,EAAKq7K,GAC5D5+K,EAAIuD,GAAOq7K,EAAK39K,KAClB,EACAg5B,EAAU,mBAAqByL,OAASA,OAAS,CAAC,EAClDktJ,EAAiB34J,EAAQS,UAAY,aACrCm4J,EAAsB54J,EAAQ64J,eAAiB,kBAC/CC,EAAoB94J,EAAQmmJ,aAAe,gBAC7C,SAASphL,EAAOgB,EAAKuD,EAAKtC,GACxB,OAAOhB,OAAOgsB,eAAejsB,EAAKuD,EAAK,CACrCtC,MAAOA,EACPuwB,YAAY,EACZC,cAAc,EACdC,UAAU,IACR1xB,EAAIuD,EACV,CACA,IACEvE,EAAO,CAAC,EAAG,GACb,CAAE,MAAO+M,GACP/M,EAAS,SAAgBgB,EAAKuD,EAAKtC,GACjC,OAAOjB,EAAIuD,GAAOtC,CACpB,CACF,CACA,SAASisB,EAAK8lK,EAASC,EAAS79K,EAAM89K,GACpC,IAAIC,EAAiBF,GAAWA,EAAQ/yL,qBAAqBkzL,EAAYH,EAAUG,EACjFC,EAAYpzL,OAAO2S,OAAOugL,EAAejzL,WACzCmD,EAAU,IAAI0wE,EAAQm/G,GAAe,IACvC,OAAOjnK,EAAeonK,EAAW,UAAW,CAC1CpyL,MAAOqyL,EAAiBN,EAAS59K,EAAM/R,KACrCgwL,CACN,CACA,SAASE,EAASn0L,EAAIY,EAAK2f,GACzB,IACE,MAAO,CACLpa,KAAM,SACNoa,IAAKvgB,EAAGgB,KAAKJ,EAAK2f,GAEtB,CAAE,MAAO5T,GACP,MAAO,CACLxG,KAAM,QACNoa,IAAK5T,EAET,CACF,CACAhN,EAAQmuB,KAAOA,EACf,IAAIsmK,EAAmB,CAAC,EACxB,SAASJ,IAAa,CACtB,SAASK,IAAqB,CAC9B,SAASC,IAA8B,CACvC,IAAIp4J,EAAoB,CAAC,EACzBt8B,EAAOs8B,EAAmBs3J,GAAgB,WACxC,OAAOltL,IACT,IACA,IAAIiuL,EAAW1zL,OAAOmxB,eACpBwiK,EAA0BD,GAAYA,EAASA,EAASr2J,EAAO,MACjEs2J,GAA2BA,IAA4BjB,GAAMhiK,EAAOvwB,KAAKwzL,EAAyBhB,KAAoBt3J,EAAoBs4J,GAC1I,IAAIC,EAAKH,EAA2BxzL,UAAYkzL,EAAUlzL,UAAYD,OAAO2S,OAAO0oB,GACpF,SAASw4J,EAAsB5zL,GAC7B,CAAC,OAAQ,QAAS,UAAUiuB,SAAQ,SAAUzqB,GAC5C1E,EAAOkB,EAAWwD,GAAQ,SAAUic,GAClC,OAAOja,KAAKquL,QAAQrwL,EAAQic,EAC9B,GACF,GACF,CACA,SAASq0K,EAAcX,EAAWY,GAChC,SAASC,EAAOxwL,EAAQic,EAAKqG,EAASC,GACpC,IAAIoxC,EAASk8H,EAASF,EAAU3vL,GAAS2vL,EAAW1zK,GACpD,GAAI,UAAY03C,EAAO9xD,KAAM,CAC3B,IAAI7E,EAAS22D,EAAO13C,IAClB1e,EAAQP,EAAOO,MACjB,OAAOA,GAAS,UAAY+8C,EAAQ/8C,IAAU0vB,EAAOvwB,KAAKa,EAAO,WAAagzL,EAAYjuK,QAAQ/kB,EAAMkzL,SAAS3/K,MAAK,SAAUvT,GAC9HizL,EAAO,OAAQjzL,EAAO+kB,EAASC,EACjC,IAAG,SAAUla,GACXmoL,EAAO,QAASnoL,EAAKia,EAASC,EAChC,IAAKguK,EAAYjuK,QAAQ/kB,GAAOuT,MAAK,SAAU4/K,GAC7C1zL,EAAOO,MAAQmzL,EAAWpuK,EAAQtlB,EACpC,IAAG,SAAU8H,GACX,OAAO0rL,EAAO,QAAS1rL,EAAOwd,EAASC,EACzC,GACF,CACAA,EAAOoxC,EAAO13C,IAChB,CACA,IAAI00K,EACJpoK,EAAevmB,KAAM,UAAW,CAC9BzE,MAAO,SAAeyC,EAAQic,GAC5B,SAAS20K,IACP,OAAO,IAAIL,GAAY,SAAUjuK,EAASC,GACxCiuK,EAAOxwL,EAAQic,EAAKqG,EAASC,EAC/B,GACF,CACA,OAAOouK,EAAkBA,EAAkBA,EAAgB7/K,KAAK8/K,EAA4BA,GAA8BA,GAC5H,GAEJ,CACA,SAAShB,EAAiBN,EAAS59K,EAAM/R,GACvC,IAAIgL,EAAQ,iBACZ,OAAO,SAAU3K,EAAQic,GACvB,GAAI,cAAgBtR,EAAO,MAAM,IAAItF,MAAM,gCAC3C,GAAI,cAAgBsF,EAAO,CACzB,GAAI,UAAY3K,EAAQ,MAAMic,EAC9B,OAAO40K,GACT,CACA,IAAKlxL,EAAQK,OAASA,EAAQL,EAAQsc,IAAMA,IAAO,CACjD,IAAI60K,EAAWnxL,EAAQmxL,SACvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUnxL,GACnD,GAAIoxL,EAAgB,CAClB,GAAIA,IAAmBjB,EAAkB,SACzC,OAAOiB,CACT,CACF,CACA,GAAI,SAAWpxL,EAAQK,OAAQL,EAAQqqB,KAAOrqB,EAAQsxL,MAAQtxL,EAAQsc,SAAS,GAAI,UAAYtc,EAAQK,OAAQ,CAC7G,GAAI,mBAAqB2K,EAAO,MAAMA,EAAQ,YAAahL,EAAQsc,IACnEtc,EAAQuxL,kBAAkBvxL,EAAQsc,IACpC,KAAO,WAAatc,EAAQK,QAAUL,EAAQuqB,OAAO,SAAUvqB,EAAQsc,KACvEtR,EAAQ,YACR,IAAIgpD,EAASk8H,EAASP,EAAS59K,EAAM/R,GACrC,GAAI,WAAag0D,EAAO9xD,KAAM,CAC5B,GAAI8I,EAAQhL,EAAQipB,KAAO,YAAc,iBAAkB+qC,EAAO13C,MAAQ6zK,EAAkB,SAC5F,MAAO,CACLvyL,MAAOo2D,EAAO13C,IACd2M,KAAMjpB,EAAQipB,KAElB,CACA,UAAY+qC,EAAO9xD,OAAS8I,EAAQ,YAAahL,EAAQK,OAAS,QAASL,EAAQsc,IAAM03C,EAAO13C,IAClG,CACF,CACF,CACA,SAAS+0K,EAAoBF,EAAUnxL,GACrC,IAAIwxL,EAAaxxL,EAAQK,OACvBA,EAAS8wL,EAAS95J,SAASm6J,GAC7B,QAAI7yL,IAAc0B,EAAQ,OAAOL,EAAQmxL,SAAW,KAAM,UAAYK,GAAcL,EAAS95J,SAAiB,SAAMr3B,EAAQK,OAAS,SAAUL,EAAQsc,SAAM3d,EAAW0yL,EAAoBF,EAAUnxL,GAAU,UAAYA,EAAQK,SAAW,WAAamxL,IAAexxL,EAAQK,OAAS,QAASL,EAAQsc,IAAM,IAAIrY,UAAU,oCAAsCutL,EAAa,aAAcrB,EAClY,IAAIn8H,EAASk8H,EAAS7vL,EAAQ8wL,EAAS95J,SAAUr3B,EAAQsc,KACzD,GAAI,UAAY03C,EAAO9xD,KAAM,OAAOlC,EAAQK,OAAS,QAASL,EAAQsc,IAAM03C,EAAO13C,IAAKtc,EAAQmxL,SAAW,KAAMhB,EACjH,IAAIv7K,EAAOo/C,EAAO13C,IAClB,OAAO1H,EAAOA,EAAKqU,MAAQjpB,EAAQmxL,EAASM,YAAc78K,EAAKhX,MAAOoC,EAAQ6Q,KAAOsgL,EAASO,QAAS,WAAa1xL,EAAQK,SAAWL,EAAQK,OAAS,OAAQL,EAAQsc,SAAM3d,GAAYqB,EAAQmxL,SAAW,KAAMhB,GAAoBv7K,GAAQ5U,EAAQK,OAAS,QAASL,EAAQsc,IAAM,IAAIrY,UAAU,oCAAqCjE,EAAQmxL,SAAW,KAAMhB,EACrW,CACA,SAASwB,EAAaC,GACpB,IAAI/wJ,EAAQ,CACVgxJ,OAAQD,EAAK,IAEf,KAAKA,IAAS/wJ,EAAMixJ,SAAWF,EAAK,IAAK,KAAKA,IAAS/wJ,EAAMkxJ,WAAaH,EAAK,GAAI/wJ,EAAMmxJ,SAAWJ,EAAK,IAAKvvL,KAAK4vL,WAAW10L,KAAKsjC,EACrI,CACA,SAASqxJ,EAAcrxJ,GACrB,IAAImzB,EAASnzB,EAAMsxJ,YAAc,CAAC,EAClCn+H,EAAO9xD,KAAO,gBAAiB8xD,EAAO13C,IAAKukB,EAAMsxJ,WAAan+H,CAChE,CACA,SAAS0c,EAAQm/G,GACfxtL,KAAK4vL,WAAa,CAAC,CACjBJ,OAAQ,SACNhC,EAAY/kK,QAAQ6mK,EAActvL,MAAOA,KAAKqX,OAAM,EAC1D,CACA,SAASugB,EAAO9C,GACd,GAAIA,EAAU,CACZ,IAAI5C,EAAiB4C,EAASo4J,GAC9B,GAAIh7J,EAAgB,OAAOA,EAAex3B,KAAKo6B,GAC/C,GAAI,mBAAqBA,EAAStmB,KAAM,OAAOsmB,EAC/C,IAAKp0B,MAAMo0B,EAAS/6B,QAAS,CAC3B,IAAIF,GAAK,EACP2U,EAAO,SAASA,IACd,OAAS3U,EAAIi7B,EAAS/6B,QAAS,GAAIkxB,EAAOvwB,KAAKo6B,EAAUj7B,GAAI,OAAO2U,EAAKjT,MAAQu5B,EAASj7B,GAAI2U,EAAKoY,MAAO,EAAIpY,EAC9G,OAAOA,EAAKjT,WAAQe,EAAWkS,EAAKoY,MAAO,EAAIpY,CACjD,EACF,OAAOA,EAAKA,KAAOA,CACrB,CACF,CACA,MAAO,CACLA,KAAMqgL,EAEV,CACA,SAASA,IACP,MAAO,CACLtzL,WAAOe,EACPsqB,MAAM,EAEV,CACA,OAAOmnK,EAAkBvzL,UAAYwzL,EAA4BznK,EAAe4nK,EAAI,cAAe,CACjG5yL,MAAOyyL,EACPjiK,cAAc,IACZxF,EAAeynK,EAA4B,cAAe,CAC5DzyL,MAAOwyL,EACPhiK,cAAc,IACZgiK,EAAkB9pI,YAAc3qD,EAAO00L,EAA4BX,EAAmB,qBAAsBh0L,EAAQ02L,oBAAsB,SAAUC,GACtJ,IAAIC,EAAO,mBAAqBD,GAAUA,EAAOvkK,YACjD,QAASwkK,IAASA,IAASlC,GAAqB,uBAAyBkC,EAAKhsI,aAAegsI,EAAKxxL,MACpG,EAAGpF,EAAQ4tB,KAAO,SAAU+oK,GAC1B,OAAOz1L,OAAO+7B,eAAiB/7B,OAAO+7B,eAAe05J,EAAQhC,IAA+BgC,EAAOhzJ,UAAYgxJ,EAA4B10L,EAAO02L,EAAQ3C,EAAmB,sBAAuB2C,EAAOx1L,UAAYD,OAAO2S,OAAOihL,GAAK6B,CAC5O,EAAG32L,EAAQ62L,MAAQ,SAAUj2K,GAC3B,MAAO,CACLw0K,QAASx0K,EAEb,EAAGm0K,EAAsBE,EAAc9zL,WAAYlB,EAAOg1L,EAAc9zL,UAAW2yL,GAAqB,WACtG,OAAOntL,IACT,IAAI3G,EAAQi1L,cAAgBA,EAAej1L,EAAQ82L,MAAQ,SAAU7C,EAASC,EAAS79K,EAAM89K,EAAae,QACxG,IAAWA,IAAgBA,EAAcluK,SACzC,IAAIg0J,EAAO,IAAIia,EAAc9mK,EAAK8lK,EAASC,EAAS79K,EAAM89K,GAAce,GACxE,OAAOl1L,EAAQ02L,oBAAoBxC,GAAWlZ,EAAOA,EAAK7lK,OAAOM,MAAK,SAAU9T,GAC9E,OAAOA,EAAO4rB,KAAO5rB,EAAOO,MAAQ84K,EAAK7lK,MAC3C,GACF,EAAG4/K,EAAsBD,GAAK70L,EAAO60L,EAAId,EAAmB,aAAc/zL,EAAO60L,EAAIjB,GAAgB,WACnG,OAAOltL,IACT,IAAI1G,EAAO60L,EAAI,YAAY,WACzB,MAAO,oBACT,IAAI90L,EAAQgyB,KAAO,SAAUzxB,GAC3B,IAAI4wB,EAASjwB,OAAOX,GAClByxB,EAAO,GACT,IAAK,IAAIxtB,KAAO2sB,EAAQa,EAAKnwB,KAAK2C,GAClC,OAAOwtB,EAAK+kK,UAAW,SAAS5hL,IAC9B,KAAO6c,EAAKtxB,QAAS,CACnB,IAAI8D,EAAMwtB,EAAKjnB,MACf,GAAIvG,KAAO2sB,EAAQ,OAAOhc,EAAKjT,MAAQsC,EAAK2Q,EAAKoY,MAAO,EAAIpY,CAC9D,CACA,OAAOA,EAAKoY,MAAO,EAAIpY,CACzB,CACF,EAAGnV,EAAQu+B,OAASA,EAAQy2C,EAAQ7zE,UAAY,CAC9CixB,YAAa4iD,EACbh3D,MAAO,SAAeg5K,GACpB,GAAIrwL,KAAK+a,KAAO,EAAG/a,KAAKwO,KAAO,EAAGxO,KAAKgoB,KAAOhoB,KAAKivL,WAAQ3yL,EAAW0D,KAAK4mB,MAAO,EAAI5mB,KAAK8uL,SAAW,KAAM9uL,KAAKhC,OAAS,OAAQgC,KAAKia,SAAM3d,EAAW0D,KAAK4vL,WAAWnnK,QAAQonK,IAAiBQ,EAAe,IAAK,IAAI5xL,KAAQuB,KAAM,MAAQvB,EAAKsC,OAAO,IAAMkqB,EAAOvwB,KAAKsF,KAAMvB,KAAUiC,OAAOjC,EAAKyF,MAAM,MAAQlE,KAAKvB,QAAQnC,EACtU,EACA6rB,KAAM,WACJnoB,KAAK4mB,MAAO,EACZ,IAAI0pK,EAAatwL,KAAK4vL,WAAW,GAAGE,WACpC,GAAI,UAAYQ,EAAWzwL,KAAM,MAAMywL,EAAWr2K,IAClD,OAAOja,KAAKuwL,IACd,EACArB,kBAAmB,SAA2BsB,GAC5C,GAAIxwL,KAAK4mB,KAAM,MAAM4pK,EACrB,IAAI7yL,EAAUqC,KACd,SAASywL,EAAOC,EAAKC,GACnB,OAAOh/H,EAAO9xD,KAAO,QAAS8xD,EAAO13C,IAAMu2K,EAAW7yL,EAAQ6Q,KAAOkiL,EAAKC,IAAWhzL,EAAQK,OAAS,OAAQL,EAAQsc,SAAM3d,KAAcq0L,CAC5I,CACA,IAAK,IAAI92L,EAAImG,KAAK4vL,WAAW71L,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI2kC,EAAQx+B,KAAK4vL,WAAW/1L,GAC1B83D,EAASnzB,EAAMsxJ,WACjB,GAAI,SAAWtxJ,EAAMgxJ,OAAQ,OAAOiB,EAAO,OAC3C,GAAIjyJ,EAAMgxJ,QAAUxvL,KAAK+a,KAAM,CAC7B,IAAI61K,EAAW3lK,EAAOvwB,KAAK8jC,EAAO,YAChCqyJ,EAAa5lK,EAAOvwB,KAAK8jC,EAAO,cAClC,GAAIoyJ,GAAYC,EAAY,CAC1B,GAAI7wL,KAAK+a,KAAOyjB,EAAMixJ,SAAU,OAAOgB,EAAOjyJ,EAAMixJ,UAAU,GAC9D,GAAIzvL,KAAK+a,KAAOyjB,EAAMkxJ,WAAY,OAAOe,EAAOjyJ,EAAMkxJ,WACxD,MAAO,GAAIkB,GACT,GAAI5wL,KAAK+a,KAAOyjB,EAAMixJ,SAAU,OAAOgB,EAAOjyJ,EAAMixJ,UAAU,OACzD,CACL,IAAKoB,EAAY,MAAM,IAAIxtL,MAAM,0CACjC,GAAIrD,KAAK+a,KAAOyjB,EAAMkxJ,WAAY,OAAOe,EAAOjyJ,EAAMkxJ,WACxD,CACF,CACF,CACF,EACAxnK,OAAQ,SAAgBroB,EAAMoa,GAC5B,IAAK,IAAIpgB,EAAImG,KAAK4vL,WAAW71L,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI2kC,EAAQx+B,KAAK4vL,WAAW/1L,GAC5B,GAAI2kC,EAAMgxJ,QAAUxvL,KAAK+a,MAAQkQ,EAAOvwB,KAAK8jC,EAAO,eAAiBx+B,KAAK+a,KAAOyjB,EAAMkxJ,WAAY,CACjG,IAAIoB,EAAetyJ,EACnB,KACF,CACF,CACAsyJ,IAAiB,UAAYjxL,GAAQ,aAAeA,IAASixL,EAAatB,QAAUv1K,GAAOA,GAAO62K,EAAapB,aAAeoB,EAAe,MAC7I,IAAIn/H,EAASm/H,EAAeA,EAAahB,WAAa,CAAC,EACvD,OAAOn+H,EAAO9xD,KAAOA,EAAM8xD,EAAO13C,IAAMA,EAAK62K,GAAgB9wL,KAAKhC,OAAS,OAAQgC,KAAKwO,KAAOsiL,EAAapB,WAAY5B,GAAoB9tL,KAAKu0E,SAAS5iB,EAC5J,EACA4iB,SAAU,SAAkB5iB,EAAQg+H,GAClC,GAAI,UAAYh+H,EAAO9xD,KAAM,MAAM8xD,EAAO13C,IAC1C,MAAO,UAAY03C,EAAO9xD,MAAQ,aAAe8xD,EAAO9xD,KAAOG,KAAKwO,KAAOmjD,EAAO13C,IAAM,WAAa03C,EAAO9xD,MAAQG,KAAKuwL,KAAOvwL,KAAKia,IAAM03C,EAAO13C,IAAKja,KAAKhC,OAAS,SAAUgC,KAAKwO,KAAO,OAAS,WAAamjD,EAAO9xD,MAAQ8vL,IAAa3vL,KAAKwO,KAAOmhL,GAAW7B,CACtQ,EACAzI,OAAQ,SAAgBqK,GACtB,IAAK,IAAI71L,EAAImG,KAAK4vL,WAAW71L,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI2kC,EAAQx+B,KAAK4vL,WAAW/1L,GAC5B,GAAI2kC,EAAMkxJ,aAAeA,EAAY,OAAO1vL,KAAKu0E,SAAS/1C,EAAMsxJ,WAAYtxJ,EAAMmxJ,UAAWE,EAAcrxJ,GAAQsvJ,CACrH,CACF,EACA,MAAS,SAAgB0B,GACvB,IAAK,IAAI31L,EAAImG,KAAK4vL,WAAW71L,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI2kC,EAAQx+B,KAAK4vL,WAAW/1L,GAC5B,GAAI2kC,EAAMgxJ,SAAWA,EAAQ,CAC3B,IAAI79H,EAASnzB,EAAMsxJ,WACnB,GAAI,UAAYn+H,EAAO9xD,KAAM,CAC3B,IAAIkxL,EAASp/H,EAAO13C,IACpB41K,EAAcrxJ,EAChB,CACA,OAAOuyJ,CACT,CACF,CACA,MAAM,IAAI1tL,MAAM,wBAClB,EACA8hL,cAAe,SAAuBrwJ,EAAUs6J,EAAYC,GAC1D,OAAOrvL,KAAK8uL,SAAW,CACrB95J,SAAU4C,EAAO9C,GACjBs6J,WAAYA,EACZC,QAASA,GACR,SAAWrvL,KAAKhC,SAAWgC,KAAKia,SAAM3d,GAAYwxL,CACvD,GACCz0L,CACL,CACAD,EAAOC,QAAU4rB,EAAqB7rB,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BC/S3G,IAAIwzL,EAAgB,EAAQ,MACxBtmK,EAAiB,EAAQ,OAC7B,SAASsM,EAAIl0B,EAAQi8K,EAAUr/K,EAAOuxL,GA6BpC,OA3BEj6J,EADqB,qBAAZ3B,SAA2BA,QAAQ2B,IACtC3B,QAAQ2B,IAER,SAAal0B,EAAQi8K,EAAUr/K,EAAOuxL,GAC1C,IACI5T,EADA9oK,EAAOy8K,EAAcluL,EAAQi8K,GAEjC,GAAIxqK,EAAM,CAER,IADA8oK,EAAO3+K,OAAO+wB,yBAAyBlb,EAAMwqK,IACpC/nJ,IAEP,OADAqmJ,EAAKrmJ,IAAIn4B,KAAKoyL,EAAUvxL,IACjB,EACF,IAAK29K,EAAKltJ,SACf,OAAO,CAEX,CAEA,GADAktJ,EAAO3+K,OAAO+wB,yBAAyBwhK,EAAUlS,GACvC,CACR,IAAK1B,EAAKltJ,SACR,OAAO,EAETktJ,EAAK39K,MAAQA,EACbhB,OAAOgsB,eAAeumK,EAAUlS,EAAU1B,EAC5C,MACE3yJ,EAAeumK,EAAUlS,EAAUr/K,GAErC,OAAO,CACT,EAEKs3B,EAAIl0B,EAAQi8K,EAAUr/K,EAAOuxL,EACtC,CAQA1zL,EAAOC,QAPP,SAAcsF,EAAQi8K,EAAUr/K,EAAOuxL,EAAUkE,GAE/C,IADQn+J,EAAIl0B,EAAQi8K,EAAUr/K,EAAOuxL,GAAYnuL,IACvCqyL,EACR,MAAM,IAAIpvL,UAAU,0BAEtB,OAAOrG,CACT,EACuBnC,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,0BCxC5F,SAASyiL,EAAgB31K,EAAG9H,GAK1B,OAJAjF,EAAOC,QAAUyiL,EAAkBvhL,OAAO+7B,eAAiB/7B,OAAO+7B,eAAe52B,OAAS,SAAyByG,EAAG9H,GAEpH,OADA8H,EAAE62B,UAAY3+B,EACP8H,CACT,EAAG/M,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,QACjEyiL,EAAgB31K,EAAG9H,EAC5B,CACAjF,EAAOC,QAAUyiL,EAAiB1iL,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCPvG,IAAI43L,EAAiB,EAAQ,OACzBC,EAAuB,EAAQ,OAC/B3E,EAA6B,EAAQ,OACrC4E,EAAkB,EAAQ,OAI9B/3L,EAAOC,QAHP,SAAwBI,EAAKI,GAC3B,OAAOo3L,EAAex3L,IAAQy3L,EAAqBz3L,EAAKI,IAAM0yL,EAA2B9yL,EAAKI,IAAMs3L,GACtG,EACiC/3L,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,8BCPtG,IAAIqyB,EAAiB,EAAQ,OAQ7BtyB,EAAOC,QAPP,SAAwBmxB,EAAQowJ,GAC9B,MAAQrgL,OAAOC,UAAUS,eAAeP,KAAK8vB,EAAQowJ,IAEpC,QADfpwJ,EAASkB,EAAelB,MAG1B,OAAOA,CACT,EACiCpxB,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,6BCRtG,IAAI+3L,EAAoB,EAAQ,OAC5BC,EAAkB,EAAQ,OAC1B9E,EAA6B,EAAQ,OACrC+E,EAAoB,EAAQ,OAIhCl4L,EAAOC,QAHP,SAA4BI,GAC1B,OAAO23L,EAAkB33L,IAAQ43L,EAAgB53L,IAAQ8yL,EAA2B9yL,IAAQ63L,GAC9F,EACqCl4L,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCP1G,IAAIi/C,EAAU,iBAWdl/C,EAAOC,QAVP,SAAsB4jC,EAAOs0J,GAC3B,GAAuB,WAAnBj5I,EAAQrb,IAAiC,OAAVA,EAAgB,OAAOA,EAC1D,IAAIu0J,EAAOv0J,EAAM+C,OAAO+B,aACxB,QAAazlC,IAATk1L,EAAoB,CACtB,IAAIzrK,EAAMyrK,EAAK92L,KAAKuiC,EAAOs0J,GAAQ,WACnC,GAAqB,WAAjBj5I,EAAQvyB,GAAmB,OAAOA,EACtC,MAAM,IAAInkB,UAAU,+CACtB,CACA,OAAiB,WAAT2vL,EAAoBhvL,OAASD,QAAQ26B,EAC/C,EAC+B7jC,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCXpG,IAAIi/C,EAAU,iBACVvW,EAAc,EAAQ,OAK1B3oC,EAAOC,QAJP,SAAwB4gB,GACtB,IAAIpc,EAAMkkC,EAAY9nB,EAAK,UAC3B,MAAwB,WAAjBq+B,EAAQz6C,GAAoBA,EAAM0E,OAAO1E,EAClD,EACiCzE,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCNtG,SAASi/C,EAAQh+C,GAGf,OAAQlB,EAAOC,QAAUi/C,EAAU,mBAAqBtY,QAAU,iBAAmBA,OAAOhL,SAAW,SAAU16B,GAC/G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqB0lC,QAAU1lC,EAAImxB,cAAgBuU,QAAU1lC,IAAQ0lC,OAAOxlC,UAAY,gBAAkBF,CAC1H,EAAGlB,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,QAAUi/C,EAAQh+C,EAC5F,CACAlB,EAAOC,QAAUi/C,EAASl/C,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCT/F,IAAI6yL,EAAmB,EAAQ,OAS/B9yL,EAAOC,QARP,SAAqC8M,EAAG4uK,GACtC,GAAK5uK,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO+lL,EAAiB/lL,EAAG4uK,GACtD,IAAIt0K,EAAIlG,OAAOC,UAAUC,SAASC,KAAKyL,GAAGjC,MAAM,GAAI,GAEpD,MADU,WAANzD,GAAkB0F,EAAEslB,cAAahrB,EAAI0F,EAAEslB,YAAYhtB,MAC7C,QAANgC,GAAqB,QAANA,EAAoBiJ,MAAMoU,KAAK3X,GACxC,cAAN1F,GAAqB,2CAA2CtC,KAAKsC,GAAWyrL,EAAiB/lL,EAAG4uK,QAAxG,CALc,CAMhB,EAC8C37K,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCTnH,IAAIqyB,EAAiB,EAAQ,OACzB4K,EAAiB,EAAQ,MACzBm7J,EAAmB,EAAQ,OAC3B79J,EAAY,EAAQ,MACxB,SAASlO,EAAiB4mK,GACxB,IAAIoF,EAAwB,oBAARhwH,IAAqB,IAAIA,SAAQplE,EAuBrD,OAtBAlD,EAAOC,QAAUqsB,EAAmB,SAA0B4mK,GAC5D,GAAc,OAAVA,IAAmBmF,EAAiBnF,GAAQ,OAAOA,EACvD,GAAqB,oBAAVA,EACT,MAAM,IAAI1qL,UAAU,sDAEtB,GAAsB,qBAAX8vL,EAAwB,CACjC,GAAIA,EAAOzpK,IAAIqkK,GAAQ,OAAOoF,EAAOvoL,IAAImjL,GACzCoF,EAAO7+J,IAAIy5J,EAAO38J,EACpB,CACA,SAASA,IACP,OAAOiE,EAAU04J,EAAO1tL,UAAW8sB,EAAe1rB,MAAMyrB,YAC1D,CASA,OARAkE,EAAQn1B,UAAYD,OAAO2S,OAAOo/K,EAAM9xL,UAAW,CACjDixB,YAAa,CACXlwB,MAAOo0B,EACP7D,YAAY,EACZE,UAAU,EACVD,cAAc,KAGXuK,EAAe3G,EAAS28J,EACjC,EAAGlzL,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,QACjEqsB,EAAiB4mK,EAC1B,CACAlzL,EAAOC,QAAUqsB,EAAkBtsB,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCpBxGD,EAAOC,QAVP,SAA2BI,EAAKK,IACnB,MAAPA,GAAeA,EAAML,EAAIM,UAAQD,EAAML,EAAIM,QAE/C,IAAK,IAAIF,EAAI,EAAGm7K,EAAO,IAAItrK,MAAM5P,GAAMD,EAAIC,EAAKD,IAC9Cm7K,EAAKn7K,GAAKJ,EAAII,GAGhB,OAAOm7K,CACT,EAEoC57K,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCVzG,IAAI6yL,EAAmB,EAAQ,OAM/B9yL,EAAOC,QAJP,SAA4BI,GAC1B,GAAIiQ,MAAMkf,QAAQnvB,GAAM,OAAOyyL,EAAiBzyL,EAClD,EAEqCL,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCE1GD,EAAOC,QARP,SAAgCqW,GAC9B,QAAa,IAATA,EACF,MAAM,IAAIu/H,eAAe,6DAG3B,OAAOv/H,CACT,EAEyCtW,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCR9G,SAASo2K,EAAmBC,EAAKpvJ,EAASC,EAAQovJ,EAAOC,EAAQ/xK,EAAKoc,GACpE,IACE,IAAI1H,EAAOm9J,EAAI7xK,GAAKoc,GAChB1e,EAAQgX,EAAKhX,KACnB,CAAE,MAAOuH,GAEP,YADAyd,EAAOzd,EAET,CAEIyP,EAAKqU,KACPtG,EAAQ/kB,GAER8kB,QAAQC,QAAQ/kB,GAAOuT,KAAK6gK,EAAOC,EAEvC,CAsBAx2K,EAAOC,QApBP,SAA2BK,GACzB,OAAO,WACL,IAAIgW,EAAO1P,KACPyB,EAAO7C,UACX,OAAO,IAAIyhB,SAAQ,SAAUC,EAASC,GACpC,IAAImvJ,EAAMh2K,EAAGoU,MAAM4B,EAAMjO,GAEzB,SAASkuK,EAAMp0K,GACbk0K,EAAmBC,EAAKpvJ,EAASC,EAAQovJ,EAAOC,EAAQ,OAAQr0K,EAClE,CAEA,SAASq0K,EAAOvpK,GACdopK,EAAmBC,EAAKpvJ,EAASC,EAAQovJ,EAAOC,EAAQ,QAASvpK,EACnE,CAEAspK,OAAMrzK,EACR,GACF,CACF,EAEoClD,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BC9BzGD,EAAOC,QANP,SAAyB+uD,EAAUzpB,GACjC,KAAMypB,aAAoBzpB,GACxB,MAAM,IAAI/8B,UAAU,oCAExB,EAEkCxI,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCNvG,SAASw2K,EAAkBlxK,EAAQ4C,GACjC,IAAK,IAAI1H,EAAI,EAAGA,EAAI0H,EAAMxH,OAAQF,IAAK,CACrC,IAAIoyB,EAAa1qB,EAAM1H,GACvBoyB,EAAWH,WAAaG,EAAWH,aAAc,EACjDG,EAAWF,cAAe,EACtB,UAAWE,IAAYA,EAAWD,UAAW,GACjDzxB,OAAOgsB,eAAe5nB,EAAQstB,EAAWpuB,IAAKouB,EAChD,CACF,CAWA7yB,EAAOC,QATP,SAAsBslC,EAAaovG,EAAYC,GAM7C,OALID,GAAY8hC,EAAkBlxI,EAAYnkC,UAAWuzI,GACrDC,GAAa6hC,EAAkBlxI,EAAaqvG,GAChDzzI,OAAOgsB,eAAeoY,EAAa,YAAa,CAC9C3S,UAAU,IAEL2S,CACT,EAE+BvlC,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCJpGD,EAAOC,QAfP,SAAyBiB,EAAKuD,EAAKtC,GAYjC,OAXIsC,KAAOvD,EACTC,OAAOgsB,eAAejsB,EAAKuD,EAAK,CAC9BtC,MAAOA,EACPuwB,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZ1xB,EAAIuD,GAAOtC,EAGNjB,CACT,EAEkClB,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCfvG,SAAS++C,EAAgBjyC,GAIvB,OAHA/M,EAAOC,QAAU++C,EAAkB79C,OAAO+7B,eAAiB/7B,OAAOmxB,eAAehsB,OAAS,SAAyByG,GACjH,OAAOA,EAAE62B,WAAaziC,OAAOmxB,eAAevlB,EAC9C,EAAG/M,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,QACjE++C,EAAgBjyC,EACzB,CAEA/M,EAAOC,QAAU++C,EAAiBh/C,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCPvG,IAAIi9B,EAAiB,EAAQ,OAoB7Bl9B,EAAOC,QAlBP,SAAmB43I,EAAUC,GAC3B,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAItvI,UAAU,sDAGtBqvI,EAASz2I,UAAYD,OAAO2S,OAAOgkI,GAAcA,EAAW12I,UAAW,CACrEixB,YAAa,CACXlwB,MAAO01I,EACPjlH,UAAU,EACVD,cAAc,KAGlBxxB,OAAOgsB,eAAe0qH,EAAU,YAAa,CAC3CjlH,UAAU,IAERklH,GAAY56G,EAAe26G,EAAUC,EAC3C,EAE4B93I,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCdjGD,EAAOC,QANP,SAAgCiB,GAC9B,OAAOA,GAAOA,EAAImuI,WAAanuI,EAAM,CACnC,QAAWA,EAEf,EAEyClB,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,0BCF9GD,EAAOC,QAJP,SAA0Bg7K,GACxB,GAAsB,qBAAXr0I,QAAmD,MAAzBq0I,EAAKr0I,OAAOhL,WAA2C,MAAtBq/I,EAAK,cAAuB,OAAO3qK,MAAMoU,KAAKu2J,EACtH,EAEmCj7K,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCAxGD,EAAOC,QAJP,WACE,MAAM,IAAIuI,UAAU,uIACtB,EAEqCxI,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCJ1G,IAAIs4L,EAA+B,EAAQ,OAqB3Cv4L,EAAOC,QAnBP,SAAkCwF,EAAQ+yL,GACxC,GAAc,MAAV/yL,EAAgB,MAAO,CAAC,EAC5B,IACIhB,EAAKhE,EADL8E,EAASgzL,EAA6B9yL,EAAQ+yL,GAGlD,GAAIr3L,OAAO+hC,sBAAuB,CAChC,IAAIu1J,EAAmBt3L,OAAO+hC,sBAAsBz9B,GAEpD,IAAKhF,EAAI,EAAGA,EAAIg4L,EAAiB93L,OAAQF,IACvCgE,EAAMg0L,EAAiBh4L,GACnB+3L,EAASpuL,QAAQ3F,IAAQ,GACxBtD,OAAOC,UAAUI,qBAAqBF,KAAKmE,EAAQhB,KACxDc,EAAOd,GAAOgB,EAAOhB,GAEzB,CAEA,OAAOc,CACT,EAE2CvF,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCNhHD,EAAOC,QAfP,SAAuCwF,EAAQ+yL,GAC7C,GAAc,MAAV/yL,EAAgB,MAAO,CAAC,EAC5B,IAEIhB,EAAKhE,EAFL8E,EAAS,CAAC,EACVmzL,EAAav3L,OAAO8wB,KAAKxsB,GAG7B,IAAKhF,EAAI,EAAGA,EAAIi4L,EAAW/3L,OAAQF,IACjCgE,EAAMi0L,EAAWj4L,GACb+3L,EAASpuL,QAAQ3F,IAAQ,IAC7Bc,EAAOd,GAAOgB,EAAOhB,IAGvB,OAAOc,CACT,EAEgDvF,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCfrH,IAAIi/C,EAAU,iBAEV00I,EAAwB,EAAQ,OAYpC5zL,EAAOC,QAVP,SAAoCqW,EAAMhV,GACxC,GAAIA,IAA2B,WAAlB49C,EAAQ59C,IAAsC,oBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAIkH,UAAU,4DAGtB,OAAOorL,EAAsBt9K,EAC/B,EAE6CtW,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCdlH,IAAIi/C,EAAU,iBAEd,SAASrzB,IACP,aAGA7rB,EAAOC,QAAU4rB,EAAsB,WACrC,OAAO5rB,CACT,EAAGD,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,QACxE,IAAIA,EAAU,CAAC,EACX4zL,EAAK1yL,OAAOC,UACZywB,EAASgiK,EAAGhyL,eACZs5B,EAAU,mBAAqByL,OAASA,OAAS,CAAC,EAClDktJ,EAAiB34J,EAAQS,UAAY,aACrCm4J,EAAsB54J,EAAQ64J,eAAiB,kBAC/CC,EAAoB94J,EAAQmmJ,aAAe,gBAE/C,SAASphL,EAAOgB,EAAKuD,EAAKtC,GACxB,OAAOhB,OAAOgsB,eAAejsB,EAAKuD,EAAK,CACrCtC,MAAOA,EACPuwB,YAAY,EACZC,cAAc,EACdC,UAAU,IACR1xB,EAAIuD,EACV,CAEA,IACEvE,EAAO,CAAC,EAAG,GACb,CAAE,MAAO+M,GACP/M,EAAS,SAAgBgB,EAAKuD,EAAKtC,GACjC,OAAOjB,EAAIuD,GAAOtC,CACpB,CACF,CAEA,SAASisB,EAAK8lK,EAASC,EAAS79K,EAAM89K,GACpC,IAAIC,EAAiBF,GAAWA,EAAQ/yL,qBAAqBkzL,EAAYH,EAAUG,EAC/EC,EAAYpzL,OAAO2S,OAAOugL,EAAejzL,WACzCmD,EAAU,IAAI0wE,EAAQm/G,GAAe,IACzC,OAAOG,EAAUU,QAAU,SAAUf,EAAS59K,EAAM/R,GAClD,IAAIgL,EAAQ,iBACZ,OAAO,SAAU3K,EAAQic,GACvB,GAAI,cAAgBtR,EAAO,MAAM,IAAItF,MAAM,gCAE3C,GAAI,cAAgBsF,EAAO,CACzB,GAAI,UAAY3K,EAAQ,MAAMic,EAC9B,OAAO40K,GACT,CAEA,IAAKlxL,EAAQK,OAASA,EAAQL,EAAQsc,IAAMA,IAAO,CACjD,IAAI60K,EAAWnxL,EAAQmxL,SAEvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUnxL,GAEnD,GAAIoxL,EAAgB,CAClB,GAAIA,IAAmBjB,EAAkB,SACzC,OAAOiB,CACT,CACF,CAEA,GAAI,SAAWpxL,EAAQK,OAAQL,EAAQqqB,KAAOrqB,EAAQsxL,MAAQtxL,EAAQsc,SAAS,GAAI,UAAYtc,EAAQK,OAAQ,CAC7G,GAAI,mBAAqB2K,EAAO,MAAMA,EAAQ,YAAahL,EAAQsc,IACnEtc,EAAQuxL,kBAAkBvxL,EAAQsc,IACpC,KAAO,WAAatc,EAAQK,QAAUL,EAAQuqB,OAAO,SAAUvqB,EAAQsc,KACvEtR,EAAQ,YACR,IAAIgpD,EAASk8H,EAASP,EAAS59K,EAAM/R,GAErC,GAAI,WAAag0D,EAAO9xD,KAAM,CAC5B,GAAI8I,EAAQhL,EAAQipB,KAAO,YAAc,iBAAkB+qC,EAAO13C,MAAQ6zK,EAAkB,SAC5F,MAAO,CACLvyL,MAAOo2D,EAAO13C,IACd2M,KAAMjpB,EAAQipB,KAElB,CAEA,UAAY+qC,EAAO9xD,OAAS8I,EAAQ,YAAahL,EAAQK,OAAS,QAASL,EAAQsc,IAAM03C,EAAO13C,IAClG,CACF,CACF,CAxC2B,CAwCzBqzK,EAAS59K,EAAM/R,GAAUgwL,CAC7B,CAEA,SAASE,EAASn0L,EAAIY,EAAK2f,GACzB,IACE,MAAO,CACLpa,KAAM,SACNoa,IAAKvgB,EAAGgB,KAAKJ,EAAK2f,GAEtB,CAAE,MAAO5T,GACP,MAAO,CACLxG,KAAM,QACNoa,IAAK5T,EAET,CACF,CAEAhN,EAAQmuB,KAAOA,EACf,IAAIsmK,EAAmB,CAAC,EAExB,SAASJ,IAAa,CAEtB,SAASK,IAAqB,CAE9B,SAASC,IAA8B,CAEvC,IAAIp4J,EAAoB,CAAC,EACzBt8B,EAAOs8B,EAAmBs3J,GAAgB,WACxC,OAAOltL,IACT,IACA,IAAIiuL,EAAW1zL,OAAOmxB,eAClBwiK,EAA0BD,GAAYA,EAASA,EAASr2J,EAAO,MACnEs2J,GAA2BA,IAA4BjB,GAAMhiK,EAAOvwB,KAAKwzL,EAAyBhB,KAAoBt3J,EAAoBs4J,GAC1I,IAAIC,EAAKH,EAA2BxzL,UAAYkzL,EAAUlzL,UAAYD,OAAO2S,OAAO0oB,GAEpF,SAASw4J,EAAsB5zL,GAC7B,CAAC,OAAQ,QAAS,UAAUiuB,SAAQ,SAAUzqB,GAC5C1E,EAAOkB,EAAWwD,GAAQ,SAAUic,GAClC,OAAOja,KAAKquL,QAAQrwL,EAAQic,EAC9B,GACF,GACF,CAEA,SAASq0K,EAAcX,EAAWY,GAChC,SAASC,EAAOxwL,EAAQic,EAAKqG,EAASC,GACpC,IAAIoxC,EAASk8H,EAASF,EAAU3vL,GAAS2vL,EAAW1zK,GAEpD,GAAI,UAAY03C,EAAO9xD,KAAM,CAC3B,IAAI7E,EAAS22D,EAAO13C,IAChB1e,EAAQP,EAAOO,MACnB,OAAOA,GAAS,UAAY+8C,EAAQ/8C,IAAU0vB,EAAOvwB,KAAKa,EAAO,WAAagzL,EAAYjuK,QAAQ/kB,EAAMkzL,SAAS3/K,MAAK,SAAUvT,GAC9HizL,EAAO,OAAQjzL,EAAO+kB,EAASC,EACjC,IAAG,SAAUla,GACXmoL,EAAO,QAASnoL,EAAKia,EAASC,EAChC,IAAKguK,EAAYjuK,QAAQ/kB,GAAOuT,MAAK,SAAU4/K,GAC7C1zL,EAAOO,MAAQmzL,EAAWpuK,EAAQtlB,EACpC,IAAG,SAAU8H,GACX,OAAO0rL,EAAO,QAAS1rL,EAAOwd,EAASC,EACzC,GACF,CAEAA,EAAOoxC,EAAO13C,IAChB,CAEA,IAAI00K,EAEJ3uL,KAAKquL,QAAU,SAAUrwL,EAAQic,GAC/B,SAAS20K,IACP,OAAO,IAAIL,GAAY,SAAUjuK,EAASC,GACxCiuK,EAAOxwL,EAAQic,EAAKqG,EAASC,EAC/B,GACF,CAEA,OAAOouK,EAAkBA,EAAkBA,EAAgB7/K,KAAK8/K,EAA4BA,GAA8BA,GAC5H,CACF,CAEA,SAASI,EAAoBF,EAAUnxL,GACrC,IAAIK,EAAS8wL,EAAS95J,SAASr3B,EAAQK,QAEvC,QAAI1B,IAAc0B,EAAQ,CACxB,GAAIL,EAAQmxL,SAAW,KAAM,UAAYnxL,EAAQK,OAAQ,CACvD,GAAI8wL,EAAS95J,SAAiB,SAAMr3B,EAAQK,OAAS,SAAUL,EAAQsc,SAAM3d,EAAW0yL,EAAoBF,EAAUnxL,GAAU,UAAYA,EAAQK,QAAS,OAAO8vL,EACpKnwL,EAAQK,OAAS,QAASL,EAAQsc,IAAM,IAAIrY,UAAU,iDACxD,CAEA,OAAOksL,CACT,CAEA,IAAIn8H,EAASk8H,EAAS7vL,EAAQ8wL,EAAS95J,SAAUr3B,EAAQsc,KACzD,GAAI,UAAY03C,EAAO9xD,KAAM,OAAOlC,EAAQK,OAAS,QAASL,EAAQsc,IAAM03C,EAAO13C,IAAKtc,EAAQmxL,SAAW,KAAMhB,EACjH,IAAIv7K,EAAOo/C,EAAO13C,IAClB,OAAO1H,EAAOA,EAAKqU,MAAQjpB,EAAQmxL,EAASM,YAAc78K,EAAKhX,MAAOoC,EAAQ6Q,KAAOsgL,EAASO,QAAS,WAAa1xL,EAAQK,SAAWL,EAAQK,OAAS,OAAQL,EAAQsc,SAAM3d,GAAYqB,EAAQmxL,SAAW,KAAMhB,GAAoBv7K,GAAQ5U,EAAQK,OAAS,QAASL,EAAQsc,IAAM,IAAIrY,UAAU,oCAAqCjE,EAAQmxL,SAAW,KAAMhB,EACrW,CAEA,SAASwB,EAAaC,GACpB,IAAI/wJ,EAAQ,CACVgxJ,OAAQD,EAAK,IAEf,KAAKA,IAAS/wJ,EAAMixJ,SAAWF,EAAK,IAAK,KAAKA,IAAS/wJ,EAAMkxJ,WAAaH,EAAK,GAAI/wJ,EAAMmxJ,SAAWJ,EAAK,IAAKvvL,KAAK4vL,WAAW10L,KAAKsjC,EACrI,CAEA,SAASqxJ,EAAcrxJ,GACrB,IAAImzB,EAASnzB,EAAMsxJ,YAAc,CAAC,EAClCn+H,EAAO9xD,KAAO,gBAAiB8xD,EAAO13C,IAAKukB,EAAMsxJ,WAAan+H,CAChE,CAEA,SAAS0c,EAAQm/G,GACfxtL,KAAK4vL,WAAa,CAAC,CACjBJ,OAAQ,SACNhC,EAAY/kK,QAAQ6mK,EAActvL,MAAOA,KAAKqX,OAAM,EAC1D,CAEA,SAASugB,EAAO9C,GACd,GAAIA,EAAU,CACZ,IAAI5C,EAAiB4C,EAASo4J,GAC9B,GAAIh7J,EAAgB,OAAOA,EAAex3B,KAAKo6B,GAC/C,GAAI,mBAAqBA,EAAStmB,KAAM,OAAOsmB,EAE/C,IAAKp0B,MAAMo0B,EAAS/6B,QAAS,CAC3B,IAAIF,GAAK,EACL2U,EAAO,SAASA,IAClB,OAAS3U,EAAIi7B,EAAS/6B,QACpB,GAAIkxB,EAAOvwB,KAAKo6B,EAAUj7B,GAAI,OAAO2U,EAAKjT,MAAQu5B,EAASj7B,GAAI2U,EAAKoY,MAAO,EAAIpY,EAGjF,OAAOA,EAAKjT,WAAQe,EAAWkS,EAAKoY,MAAO,EAAIpY,CACjD,EAEA,OAAOA,EAAKA,KAAOA,CACrB,CACF,CAEA,MAAO,CACLA,KAAMqgL,EAEV,CAEA,SAASA,IACP,MAAO,CACLtzL,WAAOe,EACPsqB,MAAM,EAEV,CAEA,OAAOmnK,EAAkBvzL,UAAYwzL,EAA4B10L,EAAO60L,EAAI,cAAeH,GAA6B10L,EAAO00L,EAA4B,cAAeD,GAAoBA,EAAkB9pI,YAAc3qD,EAAO00L,EAA4BX,EAAmB,qBAAsBh0L,EAAQ02L,oBAAsB,SAAUC,GAChV,IAAIC,EAAO,mBAAqBD,GAAUA,EAAOvkK,YACjD,QAASwkK,IAASA,IAASlC,GAAqB,uBAAyBkC,EAAKhsI,aAAegsI,EAAKxxL,MACpG,EAAGpF,EAAQ4tB,KAAO,SAAU+oK,GAC1B,OAAOz1L,OAAO+7B,eAAiB/7B,OAAO+7B,eAAe05J,EAAQhC,IAA+BgC,EAAOhzJ,UAAYgxJ,EAA4B10L,EAAO02L,EAAQ3C,EAAmB,sBAAuB2C,EAAOx1L,UAAYD,OAAO2S,OAAOihL,GAAK6B,CAC5O,EAAG32L,EAAQ62L,MAAQ,SAAUj2K,GAC3B,MAAO,CACLw0K,QAASx0K,EAEb,EAAGm0K,EAAsBE,EAAc9zL,WAAYlB,EAAOg1L,EAAc9zL,UAAW2yL,GAAqB,WACtG,OAAOntL,IACT,IAAI3G,EAAQi1L,cAAgBA,EAAej1L,EAAQ82L,MAAQ,SAAU7C,EAASC,EAAS79K,EAAM89K,EAAae,QACxG,IAAWA,IAAgBA,EAAcluK,SACzC,IAAIg0J,EAAO,IAAIia,EAAc9mK,EAAK8lK,EAASC,EAAS79K,EAAM89K,GAAce,GACxE,OAAOl1L,EAAQ02L,oBAAoBxC,GAAWlZ,EAAOA,EAAK7lK,OAAOM,MAAK,SAAU9T,GAC9E,OAAOA,EAAO4rB,KAAO5rB,EAAOO,MAAQ84K,EAAK7lK,MAC3C,GACF,EAAG4/K,EAAsBD,GAAK70L,EAAO60L,EAAId,EAAmB,aAAc/zL,EAAO60L,EAAIjB,GAAgB,WACnG,OAAOltL,IACT,IAAI1G,EAAO60L,EAAI,YAAY,WACzB,MAAO,oBACT,IAAI90L,EAAQgyB,KAAO,SAAUb,GAC3B,IAAIa,EAAO,GAEX,IAAK,IAAIxtB,KAAO2sB,EACda,EAAKnwB,KAAK2C,GAGZ,OAAOwtB,EAAK+kK,UAAW,SAAS5hL,IAC9B,KAAO6c,EAAKtxB,QAAS,CACnB,IAAI8D,EAAMwtB,EAAKjnB,MACf,GAAIvG,KAAO2sB,EAAQ,OAAOhc,EAAKjT,MAAQsC,EAAK2Q,EAAKoY,MAAO,EAAIpY,CAC9D,CAEA,OAAOA,EAAKoY,MAAO,EAAIpY,CACzB,CACF,EAAGnV,EAAQu+B,OAASA,EAAQy2C,EAAQ7zE,UAAY,CAC9CixB,YAAa4iD,EACbh3D,MAAO,SAAeg5K,GACpB,GAAIrwL,KAAK+a,KAAO,EAAG/a,KAAKwO,KAAO,EAAGxO,KAAKgoB,KAAOhoB,KAAKivL,WAAQ3yL,EAAW0D,KAAK4mB,MAAO,EAAI5mB,KAAK8uL,SAAW,KAAM9uL,KAAKhC,OAAS,OAAQgC,KAAKia,SAAM3d,EAAW0D,KAAK4vL,WAAWnnK,QAAQonK,IAAiBQ,EAAe,IAAK,IAAI5xL,KAAQuB,KAC/N,MAAQvB,EAAKsC,OAAO,IAAMkqB,EAAOvwB,KAAKsF,KAAMvB,KAAUiC,OAAOjC,EAAKyF,MAAM,MAAQlE,KAAKvB,QAAQnC,EAEjG,EACA6rB,KAAM,WACJnoB,KAAK4mB,MAAO,EACZ,IAAI0pK,EAAatwL,KAAK4vL,WAAW,GAAGE,WACpC,GAAI,UAAYQ,EAAWzwL,KAAM,MAAMywL,EAAWr2K,IAClD,OAAOja,KAAKuwL,IACd,EACArB,kBAAmB,SAA2BsB,GAC5C,GAAIxwL,KAAK4mB,KAAM,MAAM4pK,EACrB,IAAI7yL,EAAUqC,KAEd,SAASywL,EAAOC,EAAKC,GACnB,OAAOh/H,EAAO9xD,KAAO,QAAS8xD,EAAO13C,IAAMu2K,EAAW7yL,EAAQ6Q,KAAOkiL,EAAKC,IAAWhzL,EAAQK,OAAS,OAAQL,EAAQsc,SAAM3d,KAAcq0L,CAC5I,CAEA,IAAK,IAAI92L,EAAImG,KAAK4vL,WAAW71L,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI2kC,EAAQx+B,KAAK4vL,WAAW/1L,GACxB83D,EAASnzB,EAAMsxJ,WACnB,GAAI,SAAWtxJ,EAAMgxJ,OAAQ,OAAOiB,EAAO,OAE3C,GAAIjyJ,EAAMgxJ,QAAUxvL,KAAK+a,KAAM,CAC7B,IAAI61K,EAAW3lK,EAAOvwB,KAAK8jC,EAAO,YAC9BqyJ,EAAa5lK,EAAOvwB,KAAK8jC,EAAO,cAEpC,GAAIoyJ,GAAYC,EAAY,CAC1B,GAAI7wL,KAAK+a,KAAOyjB,EAAMixJ,SAAU,OAAOgB,EAAOjyJ,EAAMixJ,UAAU,GAC9D,GAAIzvL,KAAK+a,KAAOyjB,EAAMkxJ,WAAY,OAAOe,EAAOjyJ,EAAMkxJ,WACxD,MAAO,GAAIkB,GACT,GAAI5wL,KAAK+a,KAAOyjB,EAAMixJ,SAAU,OAAOgB,EAAOjyJ,EAAMixJ,UAAU,OACzD,CACL,IAAKoB,EAAY,MAAM,IAAIxtL,MAAM,0CACjC,GAAIrD,KAAK+a,KAAOyjB,EAAMkxJ,WAAY,OAAOe,EAAOjyJ,EAAMkxJ,WACxD,CACF,CACF,CACF,EACAxnK,OAAQ,SAAgBroB,EAAMoa,GAC5B,IAAK,IAAIpgB,EAAImG,KAAK4vL,WAAW71L,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI2kC,EAAQx+B,KAAK4vL,WAAW/1L,GAE5B,GAAI2kC,EAAMgxJ,QAAUxvL,KAAK+a,MAAQkQ,EAAOvwB,KAAK8jC,EAAO,eAAiBx+B,KAAK+a,KAAOyjB,EAAMkxJ,WAAY,CACjG,IAAIoB,EAAetyJ,EACnB,KACF,CACF,CAEAsyJ,IAAiB,UAAYjxL,GAAQ,aAAeA,IAASixL,EAAatB,QAAUv1K,GAAOA,GAAO62K,EAAapB,aAAeoB,EAAe,MAC7I,IAAIn/H,EAASm/H,EAAeA,EAAahB,WAAa,CAAC,EACvD,OAAOn+H,EAAO9xD,KAAOA,EAAM8xD,EAAO13C,IAAMA,EAAK62K,GAAgB9wL,KAAKhC,OAAS,OAAQgC,KAAKwO,KAAOsiL,EAAapB,WAAY5B,GAAoB9tL,KAAKu0E,SAAS5iB,EAC5J,EACA4iB,SAAU,SAAkB5iB,EAAQg+H,GAClC,GAAI,UAAYh+H,EAAO9xD,KAAM,MAAM8xD,EAAO13C,IAC1C,MAAO,UAAY03C,EAAO9xD,MAAQ,aAAe8xD,EAAO9xD,KAAOG,KAAKwO,KAAOmjD,EAAO13C,IAAM,WAAa03C,EAAO9xD,MAAQG,KAAKuwL,KAAOvwL,KAAKia,IAAM03C,EAAO13C,IAAKja,KAAKhC,OAAS,SAAUgC,KAAKwO,KAAO,OAAS,WAAamjD,EAAO9xD,MAAQ8vL,IAAa3vL,KAAKwO,KAAOmhL,GAAW7B,CACtQ,EACAzI,OAAQ,SAAgBqK,GACtB,IAAK,IAAI71L,EAAImG,KAAK4vL,WAAW71L,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI2kC,EAAQx+B,KAAK4vL,WAAW/1L,GAC5B,GAAI2kC,EAAMkxJ,aAAeA,EAAY,OAAO1vL,KAAKu0E,SAAS/1C,EAAMsxJ,WAAYtxJ,EAAMmxJ,UAAWE,EAAcrxJ,GAAQsvJ,CACrH,CACF,EACA,MAAS,SAAgB0B,GACvB,IAAK,IAAI31L,EAAImG,KAAK4vL,WAAW71L,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI2kC,EAAQx+B,KAAK4vL,WAAW/1L,GAE5B,GAAI2kC,EAAMgxJ,SAAWA,EAAQ,CAC3B,IAAI79H,EAASnzB,EAAMsxJ,WAEnB,GAAI,UAAYn+H,EAAO9xD,KAAM,CAC3B,IAAIkxL,EAASp/H,EAAO13C,IACpB41K,EAAcrxJ,EAChB,CAEA,OAAOuyJ,CACT,CACF,CAEA,MAAM,IAAI1tL,MAAM,wBAClB,EACA8hL,cAAe,SAAuBrwJ,EAAUs6J,EAAYC,GAC1D,OAAOrvL,KAAK8uL,SAAW,CACrB95J,SAAU4C,EAAO9C,GACjBs6J,WAAYA,EACZC,QAASA,GACR,SAAWrvL,KAAKhC,SAAWgC,KAAKia,SAAM3d,GAAYwxL,CACvD,GACCz0L,CACL,CAEAD,EAAOC,QAAU4rB,EAAqB7rB,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCjW3G,SAASyiL,EAAgB31K,EAAG9H,GAK1B,OAJAjF,EAAOC,QAAUyiL,EAAkBvhL,OAAO+7B,eAAiB/7B,OAAO+7B,eAAe52B,OAAS,SAAyByG,EAAG9H,GAEpH,OADA8H,EAAE62B,UAAY3+B,EACP8H,CACT,EAAG/M,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,QACjEyiL,EAAgB31K,EAAG9H,EAC5B,CAEAjF,EAAOC,QAAUyiL,EAAiB1iL,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCRvG,IAAI+3L,EAAoB,EAAQ,OAE5BC,EAAkB,EAAQ,MAE1B9E,EAA6B,EAAQ,OAErC+E,EAAoB,EAAQ,OAMhCl4L,EAAOC,QAJP,SAA4BI,GAC1B,OAAO23L,EAAkB33L,IAAQ43L,EAAgB53L,IAAQ8yL,EAA2B9yL,IAAQ63L,GAC9F,EAEqCl4L,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,2BCZ1G,SAASi/C,EAAQh+C,GAGf,OAAQlB,EAAOC,QAAUi/C,EAAU,mBAAqBtY,QAAU,iBAAmBA,OAAOhL,SAAW,SAAU16B,GAC/G,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqB0lC,QAAU1lC,EAAImxB,cAAgBuU,QAAU1lC,IAAQ0lC,OAAOxlC,UAAY,gBAAkBF,CAC1H,EAAGlB,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,QAAUi/C,EAAQh+C,EAC5F,CAEAlB,EAAOC,QAAUi/C,EAASl/C,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCV/F,IAAI6yL,EAAmB,EAAQ,OAW/B9yL,EAAOC,QATP,SAAqC8M,EAAG4uK,GACtC,GAAK5uK,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO+lL,EAAiB/lL,EAAG4uK,GACtD,IAAIt0K,EAAIlG,OAAOC,UAAUC,SAASC,KAAKyL,GAAGjC,MAAM,GAAI,GAEpD,MADU,WAANzD,GAAkB0F,EAAEslB,cAAahrB,EAAI0F,EAAEslB,YAAYhtB,MAC7C,QAANgC,GAAqB,QAANA,EAAoBiJ,MAAMoU,KAAK3X,GACxC,cAAN1F,GAAqB,2CAA2CtC,KAAKsC,GAAWyrL,EAAiB/lL,EAAG4uK,QAAxG,CALc,CAMhB,EAE8C37K,EAAOC,QAAQovI,YAAa,EAAMrvI,EAAOC,QAAiB,QAAID,EAAOC,+BCTnH,IAAI04L,EAAU,EAAQ,MAAR,GACd34L,EAAOC,QAAU04L,EAGjB,IACEC,mBAAqBD,CACvB,CAAE,MAAOE,GACmB,kBAAf1/J,WACTA,WAAWy/J,mBAAqBD,EAEhC9gK,SAAS,IAAK,yBAAdA,CAAwC8gK,EAE5C,ICbIG,EAA2B,CAAC,EAGhC,SAAS3X,EAAoBC,GAE5B,IAAI2X,EAAeD,EAAyB1X,GAC5C,QAAqBl+K,IAAjB61L,EACH,OAAOA,EAAa94L,QAGrB,IAAID,EAAS84L,EAAyB1X,GAAY,CAGjDnhL,QAAS,CAAC,GAOX,OAHA+4L,EAAoB5X,GAAU9/K,KAAKtB,EAAOC,QAASD,EAAQA,EAAOC,QAASkhL,GAGpEnhL,EAAOC,OACf,CCrBAkhL,EAAoB95K,EAAI,SAASrH,GAChC,IAAIqhL,EAASrhL,GAAUA,EAAOqvI,WAC7B,WAAa,OAAOrvI,EAAgB,OAAG,EACvC,WAAa,OAAOA,CAAQ,EAE7B,OADAmhL,EAAoB5mK,EAAE8mK,EAAQ,CAAEl8J,EAAGk8J,IAC5BA,CACR,aCPA,IACI4X,EADApE,EAAW1zL,OAAOmxB,eAAiB,SAASpxB,GAAO,OAAOC,OAAOmxB,eAAepxB,EAAM,EAAI,SAASA,GAAO,OAAOA,EAAI0iC,SAAW,EAQpIu9I,EAAoBrtI,EAAI,SAAS3xC,EAAO0jC,GAEvC,GADU,EAAPA,IAAU1jC,EAAQyE,KAAKzE,IAChB,EAAP0jC,EAAU,OAAO1jC,EACpB,GAAoB,kBAAVA,GAAsBA,EAAO,CACtC,GAAW,EAAP0jC,GAAa1jC,EAAMktI,WAAY,OAAOltI,EAC1C,GAAW,GAAP0jC,GAAoC,oBAAf1jC,EAAMuT,KAAqB,OAAOvT,CAC5D,CACA,IAAIo/K,EAAKpgL,OAAO2S,OAAO,MACvBqtK,EAAoBjzI,EAAEqzI,GACtB,IAAIzgE,EAAM,CAAC,EACXm4E,EAAiBA,GAAkB,CAAC,KAAMpE,EAAS,CAAC,GAAIA,EAAS,IAAKA,EAASA,IAC/E,IAAI,IAAI/xJ,EAAiB,EAAP+C,GAAY1jC,EAAyB,iBAAX2gC,KAAyBm2J,EAAe7uL,QAAQ04B,GAAUA,EAAU+xJ,EAAS/xJ,GACxH3hC,OAAO8hC,oBAAoBH,GAASzT,SAAQ,SAAS5qB,GAAOq8G,EAAIr8G,GAAO,WAAa,OAAOtC,EAAMsC,EAAM,CAAG,IAI3G,OAFAq8G,EAAa,QAAI,WAAa,OAAO3+G,CAAO,EAC5Cg/K,EAAoB5mK,EAAEgnK,EAAIzgE,GACnBygE,CACR,KCxBAJ,EAAoB5mK,EAAI,SAASta,EAAS65E,GACzC,IAAI,IAAIr1E,KAAOq1E,EACXqnG,EAAoBp0K,EAAE+sE,EAAYr1E,KAAS08K,EAAoBp0K,EAAE9M,EAASwE,IAC5EtD,OAAOgsB,eAAeltB,EAASwE,EAAK,CAAEiuB,YAAY,EAAM3iB,IAAK+pE,EAAWr1E,IAG3E,ECPA08K,EAAoB/0H,EAAI,WACvB,GAA0B,kBAAfjzB,WAAyB,OAAOA,WAC3C,IACC,OAAOvyB,MAAQ,IAAIixB,SAAS,cAAb,EAChB,CAAE,MAAOtsB,GACR,GAAsB,kBAAX3F,OAAqB,OAAOA,MACxC,CACA,CAPuB,GCAxBu7K,EAAoBp0K,EAAI,SAAS7L,EAAKS,GAAQ,OAAOR,OAAOC,UAAUS,eAAeP,KAAKJ,EAAKS,EAAO,ECCtGw/K,EAAoBjzI,EAAI,SAASjuC,GACX,qBAAX2mC,QAA0BA,OAAO06I,aAC1CngL,OAAOgsB,eAAeltB,EAAS2mC,OAAO06I,YAAa,CAAEn/K,MAAO,WAE7DhB,OAAOgsB,eAAeltB,EAAS,aAAc,CAAEkC,OAAO,GACvD,0BCNe,SAAS+8C,EAAQh+C,GAG9B,OAAOg+C,EAAU,mBAAqBtY,QAAU,iBAAmBA,OAAOhL,SAAW,SAAU16B,GAC7F,cAAcA,CAChB,EAAI,SAAUA,GACZ,OAAOA,GAAO,mBAAqB0lC,QAAU1lC,EAAImxB,cAAgBuU,QAAU1lC,IAAQ0lC,OAAOxlC,UAAY,gBAAkBF,CAC1H,EAAGg+C,EAAQh+C,EACb,CCPe,SAAS,IAEtB,EAAsB,WACpB,OAAOjB,CACT,EACA,IAAIA,EAAU,CAAC,EACb4zL,EAAK1yL,OAAOC,UACZywB,EAASgiK,EAAGhyL,eACZsrB,EAAiBhsB,OAAOgsB,gBAAkB,SAAUjsB,EAAKuD,EAAKq7K,GAC5D5+K,EAAIuD,GAAOq7K,EAAK39K,KAClB,EACAg5B,EAAU,mBAAqByL,OAASA,OAAS,CAAC,EAClDktJ,EAAiB34J,EAAQS,UAAY,aACrCm4J,EAAsB54J,EAAQ64J,eAAiB,kBAC/CC,EAAoB94J,EAAQmmJ,aAAe,gBAC7C,SAASphL,EAAOgB,EAAKuD,EAAKtC,GACxB,OAAOhB,OAAOgsB,eAAejsB,EAAKuD,EAAK,CACrCtC,MAAOA,EACPuwB,YAAY,EACZC,cAAc,EACdC,UAAU,IACR1xB,EAAIuD,EACV,CACA,IACEvE,EAAO,CAAC,EAAG,GACb,CAAE,MAAO+M,GACP/M,EAAS,SAAgBgB,EAAKuD,EAAKtC,GACjC,OAAOjB,EAAIuD,GAAOtC,CACpB,CACF,CACA,SAASisB,EAAK8lK,EAASC,EAAS79K,EAAM89K,GACpC,IAAIC,EAAiBF,GAAWA,EAAQ/yL,qBAAqBkzL,EAAYH,EAAUG,EACjFC,EAAYpzL,OAAO2S,OAAOugL,EAAejzL,WACzCmD,EAAU,IAAI0wE,EAAQm/G,GAAe,IACvC,OAAOjnK,EAAeonK,EAAW,UAAW,CAC1CpyL,MAAOqyL,EAAiBN,EAAS59K,EAAM/R,KACrCgwL,CACN,CACA,SAASE,EAASn0L,EAAIY,EAAK2f,GACzB,IACE,MAAO,CACLpa,KAAM,SACNoa,IAAKvgB,EAAGgB,KAAKJ,EAAK2f,GAEtB,CAAE,MAAO5T,GACP,MAAO,CACLxG,KAAM,QACNoa,IAAK5T,EAET,CACF,CACAhN,EAAQmuB,KAAOA,EACf,IAAIsmK,EAAmB,CAAC,EACxB,SAASJ,IAAa,CACtB,SAASK,IAAqB,CAC9B,SAASC,IAA8B,CACvC,IAAIp4J,EAAoB,CAAC,EACzBt8B,EAAOs8B,EAAmBs3J,GAAgB,WACxC,OAAOltL,IACT,IACA,IAAIiuL,EAAW1zL,OAAOmxB,eACpBwiK,EAA0BD,GAAYA,EAASA,EAASr2J,EAAO,MACjEs2J,GAA2BA,IAA4BjB,GAAMhiK,EAAOvwB,KAAKwzL,EAAyBhB,KAAoBt3J,EAAoBs4J,GAC1I,IAAIC,EAAKH,EAA2BxzL,UAAYkzL,EAAUlzL,UAAYD,OAAO2S,OAAO0oB,GACpF,SAASw4J,EAAsB5zL,GAC7B,CAAC,OAAQ,QAAS,UAAUiuB,SAAQ,SAAUzqB,GAC5C1E,EAAOkB,EAAWwD,GAAQ,SAAUic,GAClC,OAAOja,KAAKquL,QAAQrwL,EAAQic,EAC9B,GACF,GACF,CACA,SAASq0K,EAAcX,EAAWY,GAChC,SAASC,EAAOxwL,EAAQic,EAAKqG,EAASC,GACpC,IAAIoxC,EAASk8H,EAASF,EAAU3vL,GAAS2vL,EAAW1zK,GACpD,GAAI,UAAY03C,EAAO9xD,KAAM,CAC3B,IAAI7E,EAAS22D,EAAO13C,IAClB1e,EAAQP,EAAOO,MACjB,OAAOA,GAAS,UAAY+8C,EAAQ/8C,IAAU0vB,EAAOvwB,KAAKa,EAAO,WAAagzL,EAAYjuK,QAAQ/kB,EAAMkzL,SAAS3/K,MAAK,SAAUvT,GAC9HizL,EAAO,OAAQjzL,EAAO+kB,EAASC,EACjC,IAAG,SAAUla,GACXmoL,EAAO,QAASnoL,EAAKia,EAASC,EAChC,IAAKguK,EAAYjuK,QAAQ/kB,GAAOuT,MAAK,SAAU4/K,GAC7C1zL,EAAOO,MAAQmzL,EAAWpuK,EAAQtlB,EACpC,IAAG,SAAU8H,GACX,OAAO0rL,EAAO,QAAS1rL,EAAOwd,EAASC,EACzC,GACF,CACAA,EAAOoxC,EAAO13C,IAChB,CACA,IAAI00K,EACJpoK,EAAevmB,KAAM,UAAW,CAC9BzE,MAAO,SAAeyC,EAAQic,GAC5B,SAAS20K,IACP,OAAO,IAAIL,GAAY,SAAUjuK,EAASC,GACxCiuK,EAAOxwL,EAAQic,EAAKqG,EAASC,EAC/B,GACF,CACA,OAAOouK,EAAkBA,EAAkBA,EAAgB7/K,KAAK8/K,EAA4BA,GAA8BA,GAC5H,GAEJ,CACA,SAAShB,EAAiBN,EAAS59K,EAAM/R,GACvC,IAAIgL,EAAQ,iBACZ,OAAO,SAAU3K,EAAQic,GACvB,GAAI,cAAgBtR,EAAO,MAAM,IAAItF,MAAM,gCAC3C,GAAI,cAAgBsF,EAAO,CACzB,GAAI,UAAY3K,EAAQ,MAAMic,EAC9B,OAAO40K,GACT,CACA,IAAKlxL,EAAQK,OAASA,EAAQL,EAAQsc,IAAMA,IAAO,CACjD,IAAI60K,EAAWnxL,EAAQmxL,SACvB,GAAIA,EAAU,CACZ,IAAIC,EAAiBC,EAAoBF,EAAUnxL,GACnD,GAAIoxL,EAAgB,CAClB,GAAIA,IAAmBjB,EAAkB,SACzC,OAAOiB,CACT,CACF,CACA,GAAI,SAAWpxL,EAAQK,OAAQL,EAAQqqB,KAAOrqB,EAAQsxL,MAAQtxL,EAAQsc,SAAS,GAAI,UAAYtc,EAAQK,OAAQ,CAC7G,GAAI,mBAAqB2K,EAAO,MAAMA,EAAQ,YAAahL,EAAQsc,IACnEtc,EAAQuxL,kBAAkBvxL,EAAQsc,IACpC,KAAO,WAAatc,EAAQK,QAAUL,EAAQuqB,OAAO,SAAUvqB,EAAQsc,KACvEtR,EAAQ,YACR,IAAIgpD,EAASk8H,EAASP,EAAS59K,EAAM/R,GACrC,GAAI,WAAag0D,EAAO9xD,KAAM,CAC5B,GAAI8I,EAAQhL,EAAQipB,KAAO,YAAc,iBAAkB+qC,EAAO13C,MAAQ6zK,EAAkB,SAC5F,MAAO,CACLvyL,MAAOo2D,EAAO13C,IACd2M,KAAMjpB,EAAQipB,KAElB,CACA,UAAY+qC,EAAO9xD,OAAS8I,EAAQ,YAAahL,EAAQK,OAAS,QAASL,EAAQsc,IAAM03C,EAAO13C,IAClG,CACF,CACF,CACA,SAAS+0K,EAAoBF,EAAUnxL,GACrC,IAAIwxL,EAAaxxL,EAAQK,OACvBA,EAAS8wL,EAAS95J,SAASm6J,GAC7B,QAAI7yL,IAAc0B,EAAQ,OAAOL,EAAQmxL,SAAW,KAAM,UAAYK,GAAcL,EAAS95J,SAAiB,SAAMr3B,EAAQK,OAAS,SAAUL,EAAQsc,SAAM3d,EAAW0yL,EAAoBF,EAAUnxL,GAAU,UAAYA,EAAQK,SAAW,WAAamxL,IAAexxL,EAAQK,OAAS,QAASL,EAAQsc,IAAM,IAAIrY,UAAU,oCAAsCutL,EAAa,aAAcrB,EAClY,IAAIn8H,EAASk8H,EAAS7vL,EAAQ8wL,EAAS95J,SAAUr3B,EAAQsc,KACzD,GAAI,UAAY03C,EAAO9xD,KAAM,OAAOlC,EAAQK,OAAS,QAASL,EAAQsc,IAAM03C,EAAO13C,IAAKtc,EAAQmxL,SAAW,KAAMhB,EACjH,IAAIv7K,EAAOo/C,EAAO13C,IAClB,OAAO1H,EAAOA,EAAKqU,MAAQjpB,EAAQmxL,EAASM,YAAc78K,EAAKhX,MAAOoC,EAAQ6Q,KAAOsgL,EAASO,QAAS,WAAa1xL,EAAQK,SAAWL,EAAQK,OAAS,OAAQL,EAAQsc,SAAM3d,GAAYqB,EAAQmxL,SAAW,KAAMhB,GAAoBv7K,GAAQ5U,EAAQK,OAAS,QAASL,EAAQsc,IAAM,IAAIrY,UAAU,oCAAqCjE,EAAQmxL,SAAW,KAAMhB,EACrW,CACA,SAASwB,EAAaC,GACpB,IAAI/wJ,EAAQ,CACVgxJ,OAAQD,EAAK,IAEf,KAAKA,IAAS/wJ,EAAMixJ,SAAWF,EAAK,IAAK,KAAKA,IAAS/wJ,EAAMkxJ,WAAaH,EAAK,GAAI/wJ,EAAMmxJ,SAAWJ,EAAK,IAAKvvL,KAAK4vL,WAAW10L,KAAKsjC,EACrI,CACA,SAASqxJ,EAAcrxJ,GACrB,IAAImzB,EAASnzB,EAAMsxJ,YAAc,CAAC,EAClCn+H,EAAO9xD,KAAO,gBAAiB8xD,EAAO13C,IAAKukB,EAAMsxJ,WAAan+H,CAChE,CACA,SAAS0c,EAAQm/G,GACfxtL,KAAK4vL,WAAa,CAAC,CACjBJ,OAAQ,SACNhC,EAAY/kK,QAAQ6mK,EAActvL,MAAOA,KAAKqX,OAAM,EAC1D,CACA,SAASugB,EAAO9C,GACd,GAAIA,EAAU,CACZ,IAAI5C,EAAiB4C,EAASo4J,GAC9B,GAAIh7J,EAAgB,OAAOA,EAAex3B,KAAKo6B,GAC/C,GAAI,mBAAqBA,EAAStmB,KAAM,OAAOsmB,EAC/C,IAAKp0B,MAAMo0B,EAAS/6B,QAAS,CAC3B,IAAIF,GAAK,EACP2U,EAAO,SAASA,IACd,OAAS3U,EAAIi7B,EAAS/6B,QAAS,GAAIkxB,EAAOvwB,KAAKo6B,EAAUj7B,GAAI,OAAO2U,EAAKjT,MAAQu5B,EAASj7B,GAAI2U,EAAKoY,MAAO,EAAIpY,EAC9G,OAAOA,EAAKjT,WAAQe,EAAWkS,EAAKoY,MAAO,EAAIpY,CACjD,EACF,OAAOA,EAAKA,KAAOA,CACrB,CACF,CACA,MAAO,CACLA,KAAMqgL,EAEV,CACA,SAASA,IACP,MAAO,CACLtzL,WAAOe,EACPsqB,MAAM,EAEV,CACA,OAAOmnK,EAAkBvzL,UAAYwzL,EAA4BznK,EAAe4nK,EAAI,cAAe,CACjG5yL,MAAOyyL,EACPjiK,cAAc,IACZxF,EAAeynK,EAA4B,cAAe,CAC5DzyL,MAAOwyL,EACPhiK,cAAc,IACZgiK,EAAkB9pI,YAAc3qD,EAAO00L,EAA4BX,EAAmB,qBAAsBh0L,EAAQ02L,oBAAsB,SAAUC,GACtJ,IAAIC,EAAO,mBAAqBD,GAAUA,EAAOvkK,YACjD,QAASwkK,IAASA,IAASlC,GAAqB,uBAAyBkC,EAAKhsI,aAAegsI,EAAKxxL,MACpG,EAAGpF,EAAQ4tB,KAAO,SAAU+oK,GAC1B,OAAOz1L,OAAO+7B,eAAiB/7B,OAAO+7B,eAAe05J,EAAQhC,IAA+BgC,EAAOhzJ,UAAYgxJ,EAA4B10L,EAAO02L,EAAQ3C,EAAmB,sBAAuB2C,EAAOx1L,UAAYD,OAAO2S,OAAOihL,GAAK6B,CAC5O,EAAG32L,EAAQ62L,MAAQ,SAAUj2K,GAC3B,MAAO,CACLw0K,QAASx0K,EAEb,EAAGm0K,EAAsBE,EAAc9zL,WAAYlB,EAAOg1L,EAAc9zL,UAAW2yL,GAAqB,WACtG,OAAOntL,IACT,IAAI3G,EAAQi1L,cAAgBA,EAAej1L,EAAQ82L,MAAQ,SAAU7C,EAASC,EAAS79K,EAAM89K,EAAae,QACxG,IAAWA,IAAgBA,EAAcluK,SACzC,IAAIg0J,EAAO,IAAIia,EAAc9mK,EAAK8lK,EAASC,EAAS79K,EAAM89K,GAAce,GACxE,OAAOl1L,EAAQ02L,oBAAoBxC,GAAWlZ,EAAOA,EAAK7lK,OAAOM,MAAK,SAAU9T,GAC9E,OAAOA,EAAO4rB,KAAO5rB,EAAOO,MAAQ84K,EAAK7lK,MAC3C,GACF,EAAG4/K,EAAsBD,GAAK70L,EAAO60L,EAAId,EAAmB,aAAc/zL,EAAO60L,EAAIjB,GAAgB,WACnG,OAAOltL,IACT,IAAI1G,EAAO60L,EAAI,YAAY,WACzB,MAAO,oBACT,IAAI90L,EAAQgyB,KAAO,SAAUzxB,GAC3B,IAAI4wB,EAASjwB,OAAOX,GAClByxB,EAAO,GACT,IAAK,IAAIxtB,KAAO2sB,EAAQa,EAAKnwB,KAAK2C,GAClC,OAAOwtB,EAAK+kK,UAAW,SAAS5hL,IAC9B,KAAO6c,EAAKtxB,QAAS,CACnB,IAAI8D,EAAMwtB,EAAKjnB,MACf,GAAIvG,KAAO2sB,EAAQ,OAAOhc,EAAKjT,MAAQsC,EAAK2Q,EAAKoY,MAAO,EAAIpY,CAC9D,CACA,OAAOA,EAAKoY,MAAO,EAAIpY,CACzB,CACF,EAAGnV,EAAQu+B,OAASA,EAAQy2C,EAAQ7zE,UAAY,CAC9CixB,YAAa4iD,EACbh3D,MAAO,SAAeg5K,GACpB,GAAIrwL,KAAK+a,KAAO,EAAG/a,KAAKwO,KAAO,EAAGxO,KAAKgoB,KAAOhoB,KAAKivL,WAAQ3yL,EAAW0D,KAAK4mB,MAAO,EAAI5mB,KAAK8uL,SAAW,KAAM9uL,KAAKhC,OAAS,OAAQgC,KAAKia,SAAM3d,EAAW0D,KAAK4vL,WAAWnnK,QAAQonK,IAAiBQ,EAAe,IAAK,IAAI5xL,KAAQuB,KAAM,MAAQvB,EAAKsC,OAAO,IAAMkqB,EAAOvwB,KAAKsF,KAAMvB,KAAUiC,OAAOjC,EAAKyF,MAAM,MAAQlE,KAAKvB,QAAQnC,EACtU,EACA6rB,KAAM,WACJnoB,KAAK4mB,MAAO,EACZ,IAAI0pK,EAAatwL,KAAK4vL,WAAW,GAAGE,WACpC,GAAI,UAAYQ,EAAWzwL,KAAM,MAAMywL,EAAWr2K,IAClD,OAAOja,KAAKuwL,IACd,EACArB,kBAAmB,SAA2BsB,GAC5C,GAAIxwL,KAAK4mB,KAAM,MAAM4pK,EACrB,IAAI7yL,EAAUqC,KACd,SAASywL,EAAOC,EAAKC,GACnB,OAAOh/H,EAAO9xD,KAAO,QAAS8xD,EAAO13C,IAAMu2K,EAAW7yL,EAAQ6Q,KAAOkiL,EAAKC,IAAWhzL,EAAQK,OAAS,OAAQL,EAAQsc,SAAM3d,KAAcq0L,CAC5I,CACA,IAAK,IAAI92L,EAAImG,KAAK4vL,WAAW71L,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI2kC,EAAQx+B,KAAK4vL,WAAW/1L,GAC1B83D,EAASnzB,EAAMsxJ,WACjB,GAAI,SAAWtxJ,EAAMgxJ,OAAQ,OAAOiB,EAAO,OAC3C,GAAIjyJ,EAAMgxJ,QAAUxvL,KAAK+a,KAAM,CAC7B,IAAI61K,EAAW3lK,EAAOvwB,KAAK8jC,EAAO,YAChCqyJ,EAAa5lK,EAAOvwB,KAAK8jC,EAAO,cAClC,GAAIoyJ,GAAYC,EAAY,CAC1B,GAAI7wL,KAAK+a,KAAOyjB,EAAMixJ,SAAU,OAAOgB,EAAOjyJ,EAAMixJ,UAAU,GAC9D,GAAIzvL,KAAK+a,KAAOyjB,EAAMkxJ,WAAY,OAAOe,EAAOjyJ,EAAMkxJ,WACxD,MAAO,GAAIkB,GACT,GAAI5wL,KAAK+a,KAAOyjB,EAAMixJ,SAAU,OAAOgB,EAAOjyJ,EAAMixJ,UAAU,OACzD,CACL,IAAKoB,EAAY,MAAM,IAAIxtL,MAAM,0CACjC,GAAIrD,KAAK+a,KAAOyjB,EAAMkxJ,WAAY,OAAOe,EAAOjyJ,EAAMkxJ,WACxD,CACF,CACF,CACF,EACAxnK,OAAQ,SAAgBroB,EAAMoa,GAC5B,IAAK,IAAIpgB,EAAImG,KAAK4vL,WAAW71L,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI2kC,EAAQx+B,KAAK4vL,WAAW/1L,GAC5B,GAAI2kC,EAAMgxJ,QAAUxvL,KAAK+a,MAAQkQ,EAAOvwB,KAAK8jC,EAAO,eAAiBx+B,KAAK+a,KAAOyjB,EAAMkxJ,WAAY,CACjG,IAAIoB,EAAetyJ,EACnB,KACF,CACF,CACAsyJ,IAAiB,UAAYjxL,GAAQ,aAAeA,IAASixL,EAAatB,QAAUv1K,GAAOA,GAAO62K,EAAapB,aAAeoB,EAAe,MAC7I,IAAIn/H,EAASm/H,EAAeA,EAAahB,WAAa,CAAC,EACvD,OAAOn+H,EAAO9xD,KAAOA,EAAM8xD,EAAO13C,IAAMA,EAAK62K,GAAgB9wL,KAAKhC,OAAS,OAAQgC,KAAKwO,KAAOsiL,EAAapB,WAAY5B,GAAoB9tL,KAAKu0E,SAAS5iB,EAC5J,EACA4iB,SAAU,SAAkB5iB,EAAQg+H,GAClC,GAAI,UAAYh+H,EAAO9xD,KAAM,MAAM8xD,EAAO13C,IAC1C,MAAO,UAAY03C,EAAO9xD,MAAQ,aAAe8xD,EAAO9xD,KAAOG,KAAKwO,KAAOmjD,EAAO13C,IAAM,WAAa03C,EAAO9xD,MAAQG,KAAKuwL,KAAOvwL,KAAKia,IAAM03C,EAAO13C,IAAKja,KAAKhC,OAAS,SAAUgC,KAAKwO,KAAO,OAAS,WAAamjD,EAAO9xD,MAAQ8vL,IAAa3vL,KAAKwO,KAAOmhL,GAAW7B,CACtQ,EACAzI,OAAQ,SAAgBqK,GACtB,IAAK,IAAI71L,EAAImG,KAAK4vL,WAAW71L,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI2kC,EAAQx+B,KAAK4vL,WAAW/1L,GAC5B,GAAI2kC,EAAMkxJ,aAAeA,EAAY,OAAO1vL,KAAKu0E,SAAS/1C,EAAMsxJ,WAAYtxJ,EAAMmxJ,UAAWE,EAAcrxJ,GAAQsvJ,CACrH,CACF,EACA,MAAS,SAAgB0B,GACvB,IAAK,IAAI31L,EAAImG,KAAK4vL,WAAW71L,OAAS,EAAGF,GAAK,IAAKA,EAAG,CACpD,IAAI2kC,EAAQx+B,KAAK4vL,WAAW/1L,GAC5B,GAAI2kC,EAAMgxJ,SAAWA,EAAQ,CAC3B,IAAI79H,EAASnzB,EAAMsxJ,WACnB,GAAI,UAAYn+H,EAAO9xD,KAAM,CAC3B,IAAIkxL,EAASp/H,EAAO13C,IACpB41K,EAAcrxJ,EAChB,CACA,OAAOuyJ,CACT,CACF,CACA,MAAM,IAAI1tL,MAAM,wBAClB,EACA8hL,cAAe,SAAuBrwJ,EAAUs6J,EAAYC,GAC1D,OAAOrvL,KAAK8uL,SAAW,CACrB95J,SAAU4C,EAAO9C,GACjBs6J,WAAYA,EACZC,QAASA,GACR,SAAWrvL,KAAKhC,SAAWgC,KAAKia,SAAM3d,GAAYwxL,CACvD,GACCz0L,CACL,CC9SA,SAASo2K,EAAmBC,EAAKpvJ,EAASC,EAAQovJ,EAAOC,EAAQ/xK,EAAKoc,GACpE,IACE,IAAI1H,EAAOm9J,EAAI7xK,GAAKoc,GAChB1e,EAAQgX,EAAKhX,KACnB,CAAE,MAAOuH,GAEP,YADAyd,EAAOzd,EAET,CACIyP,EAAKqU,KACPtG,EAAQ/kB,GAER8kB,QAAQC,QAAQ/kB,GAAOuT,KAAK6gK,EAAOC,EAEvC,CACe,SAAS,EAAkBl2K,GACxC,OAAO,WACL,IAAIgW,EAAO1P,KACTyB,EAAO7C,UACT,OAAO,IAAIyhB,SAAQ,SAAUC,EAASC,GACpC,IAAImvJ,EAAMh2K,EAAGoU,MAAM4B,EAAMjO,GACzB,SAASkuK,EAAMp0K,GACbk0K,EAAmBC,EAAKpvJ,EAASC,EAAQovJ,EAAOC,EAAQ,OAAQr0K,EAClE,CACA,SAASq0K,EAAOvpK,GACdopK,EAAmBC,EAAKpvJ,EAASC,EAAQovJ,EAAOC,EAAQ,QAASvpK,EACnE,CACAspK,OAAMrzK,EACR,GACF,CACF,KCtBYg2L,kCCPG,SAAS7d,EAAgBh7K,GACtC,GAAIiQ,MAAMkf,QAAQnvB,GAAM,OAAOA,CACjC,CCFe,SAAS06K,EAAkB16K,EAAKK,IAClC,MAAPA,GAAeA,EAAML,EAAIM,UAAQD,EAAML,EAAIM,QAC/C,IAAK,IAAIF,EAAI,EAAGm7K,EAAO,IAAItrK,MAAM5P,GAAMD,EAAIC,EAAKD,IAAKm7K,EAAKn7K,GAAKJ,EAAII,GACnE,OAAOm7K,CACT,CCHe,SAAST,EAA4BpuK,EAAG4uK,GACrD,GAAK5uK,EAAL,CACA,GAAiB,kBAANA,EAAgB,OAAO,EAAiBA,EAAG4uK,GACtD,IAAIt0K,EAAIlG,OAAOC,UAAUC,SAASC,KAAKyL,GAAGjC,MAAM,GAAI,GAEpD,MADU,WAANzD,GAAkB0F,EAAEslB,cAAahrB,EAAI0F,EAAEslB,YAAYhtB,MAC7C,QAANgC,GAAqB,QAANA,EAAoBiJ,MAAMoU,KAAK3X,GACxC,cAAN1F,GAAqB,2CAA2CtC,KAAKsC,GAAW,EAAiB0F,EAAG4uK,QAAxG,CALc,CAMhB,CCRe,SAASD,IACtB,MAAM,IAAIlzK,UAAU,4IACtB,CCEe,SAAS,EAAenI,EAAKI,GAC1C,OAAO,EAAeJ,ICLT,SAA+BA,EAAKI,GACjD,IAAIokD,EAAK,MAAQxkD,EAAM,KAAO,oBAAsBumC,QAAUvmC,EAAIumC,OAAOhL,WAAav7B,EAAI,cAC1F,GAAI,MAAQwkD,EAAI,CACd,IAAI22H,EACF11F,EACA92D,EACA2kK,EACArY,EAAO,GACPC,GAAK,EACL11F,GAAK,EACP,IACE,GAAI72D,GAAM61B,EAAKA,EAAGvjD,KAAKjB,IAAM+U,KAAM,IAAM3U,EAAG,CAC1C,GAAIU,OAAO0jD,KAAQA,EAAI,OACvB02H,GAAK,CACP,MAAO,OAASA,GAAMC,EAAKxsJ,EAAG1tB,KAAKujD,IAAKr3B,QAAU8tJ,EAAKx5K,KAAK05K,EAAGr5K,OAAQm5K,EAAK36K,SAAWF,GAAI86K,GAAK,GAClG,CAAE,MAAOtuK,GACP44E,GAAK,EAAIC,EAAK74E,CAChB,CAAE,QACA,IACE,IAAKsuK,GAAM,MAAQ12H,EAAW,SAAM8uI,EAAK9uI,EAAW,SAAK1jD,OAAOwyL,KAAQA,GAAK,MAC/E,CAAE,QACA,GAAI9tG,EAAI,MAAMC,CAChB,CACF,CACA,OAAOw1F,CACT,CACF,CDrBgC,CAAqBj7K,EAAKI,IAAM,EAA2BJ,EAAKI,IAAM,GACtG,CELe,SAAS,EAA2BsM,EAAGqmL,GACpD,IAAIpjK,EAAuB,qBAAX4W,QAA0B75B,EAAE65B,OAAOhL,WAAa7uB,EAAE,cAClE,IAAKijB,EAAI,CACP,GAAI1f,MAAMkf,QAAQziB,KAAOijB,EAAK,EAA2BjjB,KAAOqmL,GAAkBrmL,GAAyB,kBAAbA,EAAEpM,OAAqB,CAC/GqvB,IAAIjjB,EAAIijB,GACZ,IAAIvvB,EAAI,EACJ2xB,EAAI,WAAc,EACtB,MAAO,CACLttB,EAAGstB,EACH/qB,EAAG,WACD,OAAI5G,GAAKsM,EAAEpM,OAAe,CACxB6sB,MAAM,GAED,CACLA,MAAM,EACNrrB,MAAO4K,EAAEtM,KAEb,EACA8K,EAAG,SAAWu6E,GACZ,MAAMA,CACR,EACAxjF,EAAG8vB,EAEP,CACA,MAAM,IAAI5pB,UAAU,wIACtB,CACA,IAEEyE,EAFEomL,GAAmB,EACrBC,GAAS,EAEX,MAAO,CACLxuL,EAAG,WACDkrB,EAAKA,EAAG1uB,KAAKyL,EACf,EACA1F,EAAG,WACD,IAAIy0B,EAAO9L,EAAG5a,OAEd,OADAi+K,EAAmBv3J,EAAKtO,KACjBsO,CACT,EACAvwB,EAAG,SAAWgoL,GACZD,GAAS,EACTrmL,EAAMsmL,CACR,EACAjxL,EAAG,WACD,IACO+wL,GAAoC,MAAhBrjK,EAAW,QAAWA,EAAW,QAC5D,CAAE,QACA,GAAIsjK,EAAQ,MAAMrmL,CACpB,CACF,EAEJ,CCnDe,SAASiuK,EAAiBD,GACvC,GAAsB,qBAAXr0I,QAAmD,MAAzBq0I,EAAKr0I,OAAOhL,WAA2C,MAAtBq/I,EAAK,cAAuB,OAAO3qK,MAAMoU,KAAKu2J,EACtH,CCEe,SAAS,EAAmB56K,GACzC,OCJa,SAA4BA,GACzC,GAAIiQ,MAAMkf,QAAQnvB,GAAM,OAAO,EAAiBA,EAClD,CDES,CAAkBA,IAAQ,EAAgBA,IAAQ,EAA2BA,IELvE,WACb,MAAM,IAAImI,UAAU,uIACtB,CFG8F,EAC9F,CGNe,SAAS,EAAgBwmD,EAAUzpB,GAChD,KAAMypB,aAAoBzpB,GACxB,MAAM,IAAI/8B,UAAU,oCAExB,CCFe,SAAS2wL,EAAet4K,GACrC,IAAIpc,ECFS,SAAsBo/B,EAAOs0J,GAC1C,GAAuB,WAAnBj5I,EAAQrb,IAAiC,OAAVA,EAAgB,OAAOA,EAC1D,IAAIu0J,EAAOv0J,EAAM+C,OAAO+B,aACxB,QAAazlC,IAATk1L,EAAoB,CACtB,IAAIzrK,EAAMyrK,EAAK92L,KAAKuiC,EAAOs0J,GAAQ,WACnC,GAAqB,WAAjBj5I,EAAQvyB,GAAmB,OAAOA,EACtC,MAAM,IAAInkB,UAAU,+CACtB,CACA,OAAiB,WAAT2vL,EAAoBhvL,OAASD,QAAQ26B,EAC/C,CDPY,CAAYhjB,EAAK,UAC3B,MAAwB,WAAjBq+B,EAAQz6C,GAAoBA,EAAM0E,OAAO1E,EAClD,CEJA,SAASgyK,EAAkBlxK,EAAQ4C,GACjC,IAAK,IAAI1H,EAAI,EAAGA,EAAI0H,EAAMxH,OAAQF,IAAK,CACrC,IAAIoyB,EAAa1qB,EAAM1H,GACvBoyB,EAAWH,WAAaG,EAAWH,aAAc,EACjDG,EAAWF,cAAe,EACtB,UAAWE,IAAYA,EAAWD,UAAW,GACjDzxB,OAAOgsB,eAAe5nB,EAAQ,EAAcstB,EAAWpuB,KAAMouB,EAC/D,CACF,CACe,SAAS,EAAa0S,EAAaovG,EAAYC,GAM5D,OALID,GAAY8hC,EAAkBlxI,EAAYnkC,UAAWuzI,GACrDC,GAAa6hC,EAAkBlxI,EAAaqvG,GAChDzzI,OAAOgsB,eAAeoY,EAAa,YAAa,CAC9C3S,UAAU,IAEL2S,CACT,CCjBe,SAASm9I,EAAgB31K,EAAG9H,GAKzC,OAJAy9K,EAAkBvhL,OAAO+7B,eAAiB/7B,OAAO+7B,eAAe52B,OAAS,SAAyByG,EAAG9H,GAEnG,OADA8H,EAAE62B,UAAY3+B,EACP8H,CACT,EACO21K,EAAgB31K,EAAG9H,EAC5B,CCLe,SAASmnB,EAAUyrH,EAAUC,GAC1C,GAA0B,oBAAfA,GAA4C,OAAfA,EACtC,MAAM,IAAItvI,UAAU,sDAEtBqvI,EAASz2I,UAAYD,OAAO2S,OAAOgkI,GAAcA,EAAW12I,UAAW,CACrEixB,YAAa,CACXlwB,MAAO01I,EACPjlH,UAAU,EACVD,cAAc,KAGlBxxB,OAAOgsB,eAAe0qH,EAAU,YAAa,CAC3CjlH,UAAU,IAERklH,GAAY,EAAeD,EAAUC,EAC3C,CChBe,SAAS94F,EAAgBjyC,GAItC,OAHAiyC,EAAkB79C,OAAO+7B,eAAiB/7B,OAAOmxB,eAAehsB,OAAS,SAAyByG,GAChG,OAAOA,EAAE62B,WAAaziC,OAAOmxB,eAAevlB,EAC9C,EACOiyC,EAAgBjyC,EACzB,CCLe,SAASqzC,IACtB,GAAuB,qBAAZtoB,UAA4BA,QAAQ0C,UAAW,OAAO,EACjE,GAAI1C,QAAQ0C,UAAU/C,KAAM,OAAO,EACnC,GAAqB,oBAAV0oB,MAAsB,OAAO,EACxC,IAEE,OADAn3C,QAAQ5H,UAAU2iC,QAAQziC,KAAKw2B,QAAQ0C,UAAUxxB,QAAS,IAAI,WAAa,MACpE,CACT,CAAE,MAAOuC,GACP,OAAO,CACT,CACF,CCVe,SAAS4e,EAAuB7T,GAC7C,QAAa,IAATA,EACF,MAAM,IAAIu/H,eAAe,6DAE3B,OAAOv/H,CACT,CCFe,SAAS+V,EAAa4zB,GACnC,IAAIC,EAA4B,IAChC,OAAO,WACL,IACEt+C,EADEy+C,EAAQ,EAAeJ,GAE3B,GAAIC,EAA2B,CAC7B,IAAII,EAAY,EAAe15C,MAAMyrB,YACrCzwB,EAASk2B,QAAQ0C,UAAU6lB,EAAO76C,UAAW86C,EAC/C,MACE1+C,EAASy+C,EAAM3rC,MAAM9N,KAAMpB,WAE7B,OCZW,SAAoC8Q,EAAMhV,GACvD,GAAIA,IAA2B,WAAlB49C,EAAQ59C,IAAsC,oBAATA,GAChD,OAAOA,EACF,QAAa,IAATA,EACT,MAAM,IAAIkH,UAAU,4DAEtB,OAAO,EAAsB8N,EAC/B,CDKW,CAA0B1P,KAAMhF,EACzC,CACF,CEfe,SAAS,EAAgBV,EAAKuD,EAAKtC,GAYhD,OAXAsC,EAAM,EAAcA,MACTvD,EACTC,OAAOgsB,eAAejsB,EAAKuD,EAAK,CAC9BtC,MAAOA,EACPuwB,YAAY,EACZC,cAAc,EACdC,UAAU,IAGZ1xB,EAAIuD,GAAOtC,EAENjB,CACT,CCZe,SAAS8xL,EAAWC,EAAQ5qL,EAAM6qL,GAa/C,OAXEF,EADE,IACWl7J,QAAQ0C,UAAUl0B,OAElB,SAAoB2sL,EAAQ5qL,EAAM6qL,GAC7C,IAAI/tK,EAAI,CAAC,MACTA,EAAErjB,KAAK4S,MAAMyQ,EAAG9c,GAChB,IACI2mD,EAAW,IADGn3B,SAASvxB,KAAKoO,MAAMu+K,EAAQ9tK,IAG9C,OADI+tK,GAAO,EAAelkI,EAAUkkI,EAAM9xL,WACnC4tD,CACT,EAEKgkI,EAAWt+K,MAAM,KAAMlP,UAChC,CCZe,SAAS8mB,EAAiB4mK,GACvC,IAAIoF,EAAwB,oBAARhwH,IAAqB,IAAIA,SAAQplE,EAuBrD,OAtBAopB,EAAmB,SAA0B4mK,GAC3C,GAAc,OAAVA,ICPkC5yL,EDOE4yL,GCNsB,IAAzDr7J,SAASx2B,SAASC,KAAKhB,GAAI8J,QAAQ,kBDMQ,OAAO8oL,ECP5C,IAA2B5yL,EDQtC,GAAqB,oBAAV4yL,EACT,MAAM,IAAI1qL,UAAU,sDAEtB,GAAsB,qBAAX8vL,EAAwB,CACjC,GAAIA,EAAOzpK,IAAIqkK,GAAQ,OAAOoF,EAAOvoL,IAAImjL,GACzCoF,EAAO7+J,IAAIy5J,EAAO38J,EACpB,CACA,SAASA,IACP,OAAO,EAAU28J,EAAO1tL,UAAW,EAAeoB,MAAMyrB,YAC1D,CASA,OARAkE,EAAQn1B,UAAYD,OAAO2S,OAAOo/K,EAAM9xL,UAAW,CACjDixB,YAAa,CACXlwB,MAAOo0B,EACP7D,YAAY,EACZE,UAAU,EACVD,cAAc,KAGX,EAAe4D,EAAS28J,EACjC,EACO5mK,EAAiB4mK,EAC1B,sOzBtBA,SAAYgG,GAQVA,EAAA,UAOAA,EAAA,YAMAA,EAAA,iBArBF,EAAYA,IAAAA,EAsBX,KAkKD,I2BrLYE,E3BqLNC,EAAoB,WAqKV,SAAAC,EACdtyK,GAoBA,YApBmC,IAAnCA,IAAAA,EAAiC,CAAC,GAoB3BuyK,GAlBP,SACE3zL,EACA4zL,GAEA,IAAAC,EAAiC7zL,EAAOC,SACxC,OAAO6zL,EACL,GACA,CAAEp7K,SAHAm7K,EAAEn7K,SAGQ+G,OAHVo0K,EAAYp0K,OAGMC,KAHEm0K,EAAAn0K,MAKrBk0K,EAAcjqL,OAASiqL,EAAcjqL,MAAMoqL,KAAQ,KACnDH,EAAcjqL,OAASiqL,EAAcjqL,MAAM9K,KAAQ,UAEvD,IAED,SAA2BmB,EAAgBgf,GACzC,MAAqB,kBAAPA,EAAkBA,EAAKg1K,EAAWh1K,EACjD,GAKC,KACAoC,EAEH,CA8Fe,SAAA6yK,EAAU13L,EAAYY,GACpC,IAAc,IAAVZ,GAA6B,OAAVA,GAAmC,qBAAVA,EAC9C,MAAM,IAAI8H,MAAMlH,EAEnB,CAEe,SAAA+2L,EAAQC,EAAWh3L,GACjC,IAAKg3L,EAAM,CAEc,qBAAZ/zL,SAAyBA,QAAQ8O,KAAK/R,GAEjD,IAME,MAAM,IAAIkH,MAAMlH,EAEjB,CAAC,MAAOwI,GAAI,CACd,CACF,CASD,SAASyuL,EAAgBn0L,EAAoBsP,GAC3C,MAAO,CACLwkL,IAAK9zL,EAAS0J,MACd9K,IAAKoB,EAASpB,IACdg2F,IAAKtlF,EAER,CAKK,SAAUukL,EACd52J,EACAle,EACArV,EACA9K,GAcA,YAdY,IADZ8K,IAAAA,EAAa,MAGDxJ,EAAA,CACVuY,SAA6B,kBAAZwkB,EAAuBA,EAAUA,EAAQxkB,SAC1D+G,OAAQ,GACRC,KAAM,IACY,kBAAPV,EAAkBq1K,EAAUr1K,GAAMA,EAJnC,CAKVrV,MAAAA,EAKA9K,IAAMmgB,GAAOA,EAAgBngB,KAAQA,GAjChCyS,KAAKG,SAAShW,SAAS,IAAI+U,OAAO,EAAG,IAoC7C,CAKe,SAAAwjL,EAIAhrL,GAAA,IAAAsrL,EAAAtrL,EAHd0P,SAAAA,OAAQ,IAAA47K,EAAG,IADcA,EAAAC,EAIXvrL,EAFdyW,OAAAA,OAAM,IAAA80K,EAAG,GAFgBA,EAAAC,EAIXxrL,EADd0W,KAAAA,OAAI,IAAA80K,EAAG,GAAAA,EAMP,OAJI/0K,GAAqB,MAAXA,IACZ/G,GAAiC,MAArB+G,EAAO1d,OAAO,GAAa0d,EAAS,IAAMA,GACpDC,GAAiB,MAATA,IACVhH,GAA+B,MAAnBgH,EAAK3d,OAAO,GAAa2d,EAAO,IAAMA,GAC7ChH,CACR,CAKK,SAAU27K,EAAU1sL,GACxB,IAAI8sL,EAA4B,CAAC,EAEjC,GAAI9sL,EAAM,CACR,IAAI+sL,EAAY/sL,EAAKnD,QAAQ,KACzBkwL,GAAa,IACfD,EAAW/0K,KAAO/X,EAAK6I,OAAOkkL,GAC9B/sL,EAAOA,EAAK6I,OAAO,EAAGkkL,IAGxB,IAAIC,EAAchtL,EAAKnD,QAAQ,KAC3BmwL,GAAe,IACjBF,EAAWh1K,OAAS9X,EAAK6I,OAAOmkL,GAChChtL,EAAOA,EAAK6I,OAAO,EAAGmkL,IAGpBhtL,IACF8sL,EAAW/7K,SAAW/Q,EAEzB,CAED,OAAO8sL,CACR,CASD,SAASd,EACPiB,EACAC,EACAC,EACA1zK,QAA+B,IAA/BA,IAAAA,EAA6B,CAAC,GAE9B,IAAA2zK,EAA2D3zK,EAA3D4zK,EAAAD,EAAM/0L,OAAAA,OAAM,IAAAg1L,EAAGr7K,SAASq0I,YAApBgnC,EAAAC,EAAAF,EAAkCG,SAAAA,OAAQ,IAAAD,GAAGA,EAC7CrB,EAAgB5zL,EAAOmf,QACvBo1D,EAAS++G,EAAO6B,IAChBzyK,EAA4B,KAE5BnT,EAAQ6lL,IASZ,SAASA,IAEP,OADYxB,EAAcjqL,OAAS,CAAEkrF,IAAK,OAC7BA,GACd,CAED,SAASwgG,IACP9gH,EAAS++G,EAAO6B,IAChB,IAAIG,EAAYF,IACZG,EAAqB,MAAbD,EAAoB,KAAOA,EAAY/lL,EACnDA,EAAQ+lL,EACJ5yK,GACFA,EAAS,CAAE6xD,OAAAA,EAAQt0E,SAAUkf,EAAQlf,SAAUs1L,MAAAA,GAElD,CAwCD,SAASC,EAAUx2K,GAIjB,IAAI5N,EACyB,SAA3BpR,EAAOC,SAASw1L,OACZz1L,EAAOC,SAASw1L,OAChBz1L,EAAOC,SAASoa,KAElBA,EAAqB,kBAAP2E,EAAkBA,EAAKg1K,EAAWh1K,GAKpD,OAJAi1K,EACE7iL,EACsE,sEAAAiJ,GAEjE,IAAIoO,IAAIpO,EAAMjJ,EACtB,CAzEY,MAAT7B,IACFA,EAAQ,EACRqkL,EAAcx0K,aAAkBjf,EAAA,GAAAyzL,EAAcjqL,MAA9C,CAAqDkrF,IAAKtlF,IAAS,KAyErE,IAAI4P,EAAmB,CACjBo1D,aACF,OAAOA,GAELt0E,eACF,OAAO20L,EAAY50L,EAAQ4zL,IAE7BjiI,OAAM,SAACj3D,GACL,GAAIgoB,EACF,MAAM,IAAIre,MAAM,8CAKlB,OAHArE,EAAO2d,iBAAiB81K,EAAmB4B,GAC3C3yK,EAAWhoB,EAEJ,WACLsF,EAAO8gB,oBAAoB2yK,EAAmB4B,GAC9C3yK,EAAW,OAGfmyK,WAAU,SAAC71K,GACT,OAAO61K,EAAW70L,EAAQgf,IAE5Bw2K,UAAAA,EACAE,eAAc,SAAC12K,GAEb,IAAIrI,EAAM6+K,EAAUx2K,GACpB,MAAO,CACLtG,SAAU/B,EAAI+B,SACd+G,OAAQ9I,EAAI8I,OACZC,KAAM/I,EAAI+I,OAGdxjB,KAvFF,SAAc8iB,EAAQrV,GACpB4qE,EAAS++G,EAAOqC,KAChB,IAAI11L,EAAW6zL,EAAe30K,EAAQlf,SAAU+e,EAAIrV,GAChDmrL,GAAkBA,EAAiB70L,EAAU+e,GAGjD,IAAI42K,EAAexB,EAAgBn0L,EADnCsP,EAAQ6lL,IAAa,GAEjBz+K,EAAMwI,EAAQ01K,WAAW50L,GAG7B,IACE2zL,EAAct0K,UAAUs2K,EAAc,GAAIj/K,GAC1C,MAAO7S,GAGP9D,EAAOC,SAAS6uI,OAAOn4H,EACxB,CAEGu+K,GAAYxyK,GACdA,EAAS,CAAE6xD,OAAAA,EAAQt0E,SAAUkf,EAAQlf,SAAUs1L,MAAO,GAEzD,EAmEC5wL,QAjEF,SAAiBqa,EAAQrV,GACvB4qE,EAAS++G,EAAOuC,QAChB,IAAI51L,EAAW6zL,EAAe30K,EAAQlf,SAAU+e,EAAIrV,GAChDmrL,GAAkBA,EAAiB70L,EAAU+e,GAGjD,IAAI42K,EAAexB,EAAgBn0L,EADnCsP,EAAQ6lL,KAEJz+K,EAAMwI,EAAQ01K,WAAW50L,GAC7B2zL,EAAcx0K,aAAaw2K,EAAc,GAAIj/K,GAEzCu+K,GAAYxyK,GACdA,EAAS,CAAE6xD,OAAAA,EAAQt0E,SAAUkf,EAAQlf,SAAUs1L,MAAO,GAEzD,EAqDCO,GAAE,SAACr0L,GACD,OAAOmyL,EAAckC,GAAGr0L,EACzB,GAGH,OAAO0d,CACR,E2BpsBD,SAAYq0K,GACVA,EAAA,YACAA,EAAA,oBACAA,EAAA,oBACAA,EAAA,aAJF,EAAYA,IAAAA,EAKX,KAuKM,IAAMuC,EAAqB,IAAIxsK,IAAuB,CAC3D,OACA,gBACA,OACA,KACA,QACA,aAsJI,SAAUysK,EACdC,EACAC,EACAC,EACAC,GAEA,YAF4B,IAD5BD,IAAAA,EAAuB,SACK,IAA5BC,IAAAA,EAA0B,CAAC,GAEpBH,EAAOlxL,KAAI,SAACsxL,EAAO9mL,GACxB,IAAI+mL,EAAW,GAAHp7L,OAAA89C,EAAOm9I,GAAJ,CAAgB5mL,IAC3BxC,EAAyB,kBAAbspL,EAAMtpL,GAAkBspL,EAAMtpL,GAAKupL,EAAS73L,KAAK,KAWjE,GAVAw1L,GACkB,IAAhBoC,EAAM9mL,QAAmB8mL,EAAMrxK,SADjC,6CAIAivK,GACGmC,EAASrpL,GACV,qCAAqCA,EAArC,qEAvBN,SACEspL,GAEA,OAAuB,IAAhBA,EAAM9mL,KACd,CAuBOgnL,CAAaF,GAAQ,CACvB,IAAIG,EAAUr2L,EAAA,GACTk2L,EADS,CAEZI,iBAAkBP,EAAoBG,GACtCtpL,GAAAA,IAGF,OADAqpL,EAASrpL,GAAMypL,EACRA,CACR,CACC,IAAIE,EAAiBv2L,EAAA,GAChBk2L,EADgB,CAEnBtpL,GAAAA,EACA0pL,iBAAkBP,EAAoBG,GACtCrxK,cAAU1nB,IAaZ,OAXA84L,EAASrpL,GAAM2pL,EAEXL,EAAMrxK,WACR0xK,EAAkB1xK,SAAWgxK,EAC3BK,EAAMrxK,SACNkxK,EACAI,EACAF,IAIGM,CAEV,GACF,CAOK,SAAUC,EAGdV,EACAW,EACAC,QAAc,IAAdA,IAAAA,EAAW,KAEX,IAGIn+K,EAAWo+K,IAFU,kBAAhBF,EAA2BvC,EAAUuC,GAAeA,GAEvBl+K,UAAY,IAAKm+K,GAEvD,GAAgB,MAAZn+K,EACF,OAAO,KAGT,IAAIq+K,EAAWC,EAAcf,IA4K/B,SAA2Bc,GACzBA,EAAS3lF,MAAK,SAAC7xF,EAAG1L,GAAJ,OACZ0L,EAAE85G,QAAUxlH,EAAEwlH,MACVxlH,EAAEwlH,MAAQ95G,EAAE85G,MAyCpB,SAAwB95G,EAAa1L,GACnC,IAAIojL,EACF13K,EAAExkB,SAAW8Y,EAAE9Y,QAAUwkB,EAAEra,MAAM,GAAI,GAAGgyL,OAAM,SAACz1L,EAAG5G,GAAJ,OAAU4G,IAAMoS,EAAEhZ,EAAvC,IAE3B,OAAOo8L,EAKH13K,EAAEA,EAAExkB,OAAS,GAAK8Y,EAAEA,EAAE9Y,OAAS,GAG/B,CACL,CArDOo8L,CACE53K,EAAE63K,WAAWryL,KAAK,SAAAo3I,GAAD,OAAUA,EAAKk7C,aAAhC,IACAxjL,EAAEujL,WAAWryL,KAAK,SAAAo3I,GAAD,OAAUA,EAAKk7C,aAAhC,IALR,GAQD,CApLCC,CAAkBP,GAGlB,IADA,IAAIrxL,EAAU,KACL7K,EAAI,EAAc,MAAX6K,GAAmB7K,EAAIk8L,EAASh8L,SAAUF,EACxD6K,EAAU6xL,GACRR,EAASl8L,GAOT28L,GAAgB9+K,IAIpB,OAAOhT,CACR,CAmBD,SAASsxL,EAGPf,EACAc,EACAU,EACAtB,QAAe,IAFfY,IAAAA,EAA2C,SAE5B,IADfU,IAAAA,EAA4C,SAC7B,IAAftB,IAAAA,EAAa,IAEb,IAAIuB,EAAe,SACjBrB,EACA9mL,EACAooL,GAEA,IAAIx7C,EAAmC,CACrCw7C,kBACmBr6L,IAAjBq6L,EAA6BtB,EAAM1uL,MAAQ,GAAKgwL,EAClDC,eAAuC,IAAxBvB,EAAMuB,cACrBP,cAAe9nL,EACf8mL,MAAAA,GAGEl6C,EAAKw7C,aAAahuK,WAAW,OAC/BsqK,EACE93C,EAAKw7C,aAAahuK,WAAWwsK,GAC7B,wBAAwBh6C,EAAKw7C,aAA7B,wBACMxB,EADN,4GAKFh6C,EAAKw7C,aAAex7C,EAAKw7C,aAAazyL,MAAMixL,EAAWp7L,SAGzD,IAAI4M,EAAOkwL,GAAU,CAAC1B,EAAYh6C,EAAKw7C,eACnCP,EAAaK,EAAYv8L,OAAOihJ,GAKhCk6C,EAAMrxK,UAAYqxK,EAAMrxK,SAASjqB,OAAS,IAC5Ck5L,GAGkB,IAAhBoC,EAAM9mL,MACN,4FACuC5H,EADvC,MAIFqvL,EAAcX,EAAMrxK,SAAU+xK,EAAUK,EAAYzvL,KAKpC,MAAd0uL,EAAM1uL,MAAiB0uL,EAAM9mL,QAIjCwnL,EAAS76L,KAAK,CACZyL,KAAAA,EACA0xH,MAAOy+D,EAAanwL,EAAM0uL,EAAM9mL,OAChC6nL,WAAAA,KAcJ,OAXAnB,EAAOxsK,SAAQ,SAAC4sK,EAAO9mL,GAAS,IAAAwoL,EAE9B,GAAmB,KAAf1B,EAAM1uL,MAAe,OAACowL,EAAA1B,EAAM1uL,OAANowL,EAAYhtK,SAAS,KAExC,KACLtD,EADKC,EAAArB,EACgB2xK,EAAwB3B,EAAM1uL,OAAnD,QAAA+f,EAAAxoB,MAAAuoB,EAAAC,EAAAjmB,KAAAmmB,MAA0D,KAAjDqwK,EAATxwK,EAAAlrB,MACEm7L,EAAarB,EAAO9mL,EAAO0oL,EAC5B,QAAA5wL,GAAAqgB,EAAA/hB,EAAA0B,EAAA,SAAAqgB,EAAAhrB,GAAA,CACF,MALCg7L,EAAarB,EAAO9mL,MAQjBwnL,CACR,CAgBD,SAASiB,EAAwBrwL,GAC/B,IAAIuwL,EAAWvwL,EAAK/C,MAAM,KAC1B,GAAwB,IAApBszL,EAASn9L,OAAc,MAAO,GAElC,ICxhB+BN,EDwhB/B09L,ECvhBO,EADwB19L,EDwhBRy9L,ICvhBO,EAAgBz9L,IAAQ,EAA2BA,IAAQ,IDuhBpFkmC,EAADw3J,EAAC,GAAU/iJ,EAAX+iJ,EAAAjzL,MAAA,GAGAkzL,EAAaz3J,EAAMopC,SAAS,KAE5B5mC,EAAWxC,EAAMh8B,QAAQ,MAAO,IAEpC,GAAoB,IAAhBywC,EAAKr6C,OAGP,OAAOq9L,EAAa,CAACj1J,EAAU,IAAM,CAACA,GAGxC,IAAIk1J,EAAeL,EAAwB5iJ,EAAK32C,KAAK,MAEjDzC,EAAmB,GAqBvB,OAZAA,EAAOE,KAAP4S,MAAA9S,EAAMg9C,EACDq/I,EAAatzL,KAAK,SAAAuzL,GAAD,MACN,KAAZA,EAAiBn1J,EAAW,CAACA,EAAUm1J,GAAS75L,KAAK,IADpD,MAMD25L,GACFp8L,EAAOE,KAAP4S,MAAA9S,EAAMg9C,EAASq/I,IAIVr8L,EAAO+I,KAAK,SAAAkzL,GAAD,OAChBtwL,EAAKgiB,WAAW,MAAqB,KAAbsuK,EAAkB,IAAMA,CAD3C,GAGR,CAaD,IAAMM,EAAU,SACVC,EAAsB,EACtBC,EAAkB,EAClBC,EAAoB,EACpBC,EAAqB,GACrBC,GAAgB,EAChBC,EAAW,SAAA35L,GAAD,MAAqB,MAANA,CAA/B,EAEA,SAAS44L,EAAanwL,EAAc4H,GAClC,IAAI2oL,EAAWvwL,EAAK/C,MAAM,KACtBk0L,EAAeZ,EAASn9L,OAS5B,OARIm9L,EAASa,KAAKF,KAChBC,GAAgBF,GAGdrpL,IACFupL,GAAgBL,GAGXP,EACJrzL,QAAQ,SAAA3F,GAAD,OAAQ25L,EAAQ35L,EADnB,IAEJkkL,QACC,SAAC/pD,EAAO2/D,GAAR,OACE3/D,GACCk/D,EAAQp5L,KAAK65L,GACVR,EACY,KAAZQ,EACAN,EACAC,EATH,GAUHG,EAEL,CAiBD,SAASvB,GAIP0B,EACAvgL,GAOA,IALA,IAAM0+K,EAAe6B,EAAf7B,WAEF8B,EAAgB,CAAC,EACjBC,EAAkB,IAClBzzL,EAA2D,GACtD7K,EAAI,EAAGA,EAAIu8L,EAAWr8L,SAAUF,EAAG,CAC1C,IAAIshJ,EAAOi7C,EAAWv8L,GAClB8hB,EAAM9hB,IAAMu8L,EAAWr8L,OAAS,EAChCq+L,EACkB,MAApBD,EACIzgL,EACAA,EAASxT,MAAMi0L,EAAgBp+L,SAAW,IAC5CmJ,EAAQm1L,GACV,CAAE1xL,KAAMw0I,EAAKw7C,aAAcC,cAAez7C,EAAKy7C,cAAej7K,IAAAA,GAC9Dy8K,GAGF,IAAKl1L,EAAO,OAAO,KAEnB3I,OAAOuzI,OAAOoqD,EAAeh1L,EAAM+iB,QAEnC,IAAIovK,EAAQl6C,EAAKk6C,MAEjB3wL,EAAQxJ,KAAK,CAEX+qB,OAAQiyK,EACRxgL,SAAUm/K,GAAU,CAACsB,EAAiBj1L,EAAMwU,WAC5C4gL,aAAcC,GACZ1B,GAAU,CAACsB,EAAiBj1L,EAAMo1L,gBAEpCjD,MAAAA,IAGyB,MAAvBnyL,EAAMo1L,eACRH,EAAkBtB,GAAU,CAACsB,EAAiBj1L,EAAMo1L,eAEvD,CAED,OAAO5zL,CACR,CAwHe,SAAA2zL,GAId3qJ,EACAh2B,GAEuB,kBAAZg2B,IACTA,EAAU,CAAE/mC,KAAM+mC,EAASkpJ,eAAe,EAAOj7K,KAAK,IAGxD,IAAA68K,EAwCF,SACE7xL,EACAiwL,EACAj7K,QAAU,IADVi7K,IAAAA,GAAgB,QACN,IAAVj7K,IAAAA,GAAM,GAENu3K,EACW,MAATvsL,IAAiBA,EAAKoiE,SAAS,MAAQpiE,EAAKoiE,SAAS,MACrD,eAAepiE,EAAf,oCACMA,EAAKhD,QAAQ,MAAO,MAD1B,qIAGsCgD,EAAKhD,QAAQ,MAAO,MAH1D,MAMF,IAAI80L,EAAuB,GACvBC,EACF,IACA/xL,EACGhD,QAAQ,UAAW,IACnBA,QAAQ,OAAQ,KAChBA,QAAQ,sBAAuB,QAC/BA,QAAQ,aAAa,SAAC09C,EAAWoZ,GAEhC,OADAg+H,EAAWv9L,KAAKu/D,GACT,YACR,IAED9zD,EAAKoiE,SAAS,MAChB0vH,EAAWv9L,KAAK,KAChBw9L,GACW,MAAT/xL,GAAyB,OAATA,EACZ,QACA,qBACGgV,EAET+8K,GAAgB,QACE,KAAT/xL,GAAwB,MAATA,IAQxB+xL,GAAgB,iBAKlB,IAAIC,EAAU,IAAIhvL,OAAO+uL,EAAc9B,OAAgBt6L,EAAY,KAEnE,MAAO,CAACq8L,EAASF,EAClB,CA1F6BG,CAC1BlrJ,EAAQ/mC,KACR+mC,EAAQkpJ,cACRlpJ,EAAQ/xB,KAHVk9K,EAAAzzK,EAAAozK,EAAA,GAAKG,EAADE,EAAC,GAASJ,EAAVI,EAAC,GAMD31L,EAAQwU,EAASxU,MAAMy1L,GAC3B,IAAKz1L,EAAO,OAAO,KAEnB,IAAIi1L,EAAkBj1L,EAAM,GACxBo1L,EAAeH,EAAgBx0L,QAAQ,UAAW,MAClDm1L,EAAgB51L,EAAMgB,MAAM,GAC5B+hB,EAAiBwyK,EAAWrW,QAC9B,SAAC5C,EAAM/kH,EAAWlsD,GAGhB,GAAkB,MAAdksD,EAAmB,CACrB,IAAIs+H,EAAaD,EAAcvqL,IAAU,GACzC+pL,EAAeH,EACZj0L,MAAM,EAAGi0L,EAAgBp+L,OAASg/L,EAAWh/L,QAC7C4J,QAAQ,UAAW,KACvB,CAMD,OAJA67K,EAAK/kH,GAoFX,SAAkCl/D,EAAek/D,GAC/C,IACE,OAAOu+H,mBAAmBz9L,GAC1B,MAAOuH,GAQP,OAPAowL,GACE,EACA,gCAAgCz4H,EAAhC,6CACkBl/D,EADlB,iFAEqCuH,EAFrC,MAKKvH,CACR,CACF,CAjGuB09L,CAChBH,EAAcvqL,IAAU,GACxBksD,GAEK+kH,IAET,CAAC,GAGH,MAAO,CACLv5J,OAAAA,EACAvO,SAAUygL,EACVG,aAAAA,EACA5qJ,QAAAA,EAEH,CAsDD,SAAS8oJ,GAAgBj7L,GACvB,IACE,OAAO29L,UAAU39L,GACjB,MAAOuH,GAQP,OAPAowL,GACE,EACA,iBAAiB33L,EAAjB,oHAEeuH,EAFf,MAKKvH,CACR,CACF,CAoBe,SAAAu6L,GACdp+K,EACAm+K,GAEA,GAAiB,MAAbA,EAAkB,OAAOn+K,EAE7B,IAAKA,EAAS5Q,cAAc6hB,WAAWktK,EAAS/uL,eAC9C,OAAO,KAKT,IAAIqyL,EAAatD,EAAS9sH,SAAS,KAC/B8sH,EAAS97L,OAAS,EAClB87L,EAAS97L,OACTq/L,EAAW1hL,EAAS3W,OAAOo4L,GAC/B,OAAIC,GAAyB,MAAbA,EAEP,KAGF1hL,EAASxT,MAAMi1L,IAAe,GACtC,CA2CD,SAASE,GACPxoC,EACAyoC,EACAC,EACA5yL,GAEA,MACE,qBAAqBkqJ,EAArB,2CACQyoC,EAAkB,YAAA3zL,KAAKC,UAC7Be,GAFF,yCAIQ4yL,EAJR,2HAOH,CAyBK,SAAUC,GAEd90L,GACA,OAAOA,EAAQb,QACb,SAACX,EAAOqL,GAAR,OACY,IAAVA,GAAgBrL,EAAMmyL,MAAM1uL,MAAQzD,EAAMmyL,MAAM1uL,KAAK5M,OAAS,CAF3D,GAIR,CAKK,SAAU0/L,GACdC,EACAC,EACAC,EACAC,GAEA,IAAI77K,OAFkB,IAAtB67K,IAAAA,GAAiB,GAGI,kBAAVH,EACT17K,EAAKq1K,EAAUqG,IAIfzG,IAFAj1K,EAAE7e,EAAA,GAAQu6L,IAGJhiL,WAAasG,EAAGtG,SAASqS,SAAS,KACtCsvK,GAAoB,IAAK,WAAY,SAAUr7K,IAEjDi1K,GACGj1K,EAAGtG,WAAasG,EAAGtG,SAASqS,SAAS,KACtCsvK,GAAoB,IAAK,WAAY,OAAQr7K,IAE/Ci1K,GACGj1K,EAAGS,SAAWT,EAAGS,OAAOsL,SAAS,KAClCsvK,GAAoB,IAAK,SAAU,OAAQr7K,KAI/C,IAGIF,EAHAg8K,EAAwB,KAAVJ,GAAgC,KAAhB17K,EAAGtG,SACjCqiL,EAAaD,EAAc,IAAM97K,EAAGtG,SAaxC,GAAImiL,GAAgC,MAAdE,EACpBj8K,EAAO87K,MACF,CACL,IAAII,EAAqBL,EAAe5/L,OAAS,EAEjD,GAAIggM,EAAWpxK,WAAW,MAAO,CAM/B,IALA,IAAIsxK,EAAaF,EAAWn2L,MAAM,KAKT,OAAlBq2L,EAAW,IAChBA,EAAW90L,QACX60L,GAAsB,EAGxBh8K,EAAGtG,SAAWuiL,EAAWx8L,KAAK,IAC/B,CAIDqgB,EAAOk8K,GAAsB,EAAIL,EAAeK,GAAsB,GACvE,CAED,IAAIrzL,WAvJsBqX,EAAQk8K,QAAkB,IAAlBA,IAAAA,EAAe,KACjD,IAAAxqJ,EAIkB,kBAAP1xB,EAAkBq1K,EAAUr1K,GAAMA,EAHjC+7K,EADRrqJ,EACFh4B,SAAQyiL,EAAAzqJ,EACRjxB,OAAAA,OAAM,IAAA07K,EAAG,GAFPA,EAAAC,EAAA1qJ,EAGFhxB,KAAAA,OAAI,IAAA07K,EAAG,GAAAA,EAGL1iL,EAAWqiL,EACXA,EAAWpxK,WAAW,KACpBoxK,EAWR,SAAyBpD,EAAsBuD,GAC7C,IAAIhD,EAAWgD,EAAav2L,QAAQ,OAAQ,IAAIC,MAAM,KAYtD,OAXuB+yL,EAAa/yL,MAAM,KAEzB6kB,SAAS,SAAAuvK,GACR,OAAZA,EAEEd,EAASn9L,OAAS,GAAGm9L,EAAS9yL,MACb,MAAZ4zL,GACTd,EAASh8L,KAAK88L,MAIXd,EAASn9L,OAAS,EAAIm9L,EAASz5L,KAAK,KAAO,GACnD,CAxBO48L,CAAgBN,EAAYG,GAC9BA,EAEJ,MAAO,CACLxiL,SAAAA,EACA+G,OAAQ67K,GAAgB77K,GACxBC,KAAM67K,GAAc77K,GAEvB,CAqIY87K,CAAYx8K,EAAIF,GAGvB28K,EACFV,GAA6B,MAAfA,GAAsBA,EAAWhxH,SAAS,KAEtD2xH,GACDZ,GAA8B,MAAfC,IAAuBH,EAAiB7wH,SAAS,KAQnE,OANGpiE,EAAK+Q,SAASqxD,SAAS,OACvB0xH,IAA4BC,IAE7B/zL,EAAK+Q,UAAY,KAGZ/Q,CACR,KAiBYkwL,GAAa,SAAAnwL,GAAD,OACvBA,EAAMjJ,KAAK,KAAKkG,QAAQ,SAAU,IAAlC,EAKW40L,GAAqB,SAAA7gL,GAAD,OAC/BA,EAAS/T,QAAQ,OAAQ,IAAIA,QAAQ,OAAQ,IAA7C,EAKW22L,GAAmB,SAAA77K,GAAD,OAC5BA,GAAqB,MAAXA,EAEPA,EAAOkK,WAAW,KAClBlK,EACA,IAAMA,EAHN,EAFC,EAUM87K,GAAiB,SAAA77K,GAAD,OAC1BA,GAAiB,MAATA,EAAoBA,EAAKiK,WAAW,KAAOjK,EAAO,IAAMA,EAAzC,EADnB,EAgCMi8K,GAAP,SAAA90K,GAAAL,EAAAm1K,EAAA90K,GAAA,IAAAC,EAAAL,EAAAk1K,GAAA,SAAAA,IAAA,OAAAp1K,EAAA,KAAAo1K,GAAA70K,EAAAhY,MAAA,KAAAlP,UAAA,QAAA0mB,EAAAq1K,EAAA,EAAAj1K,EAAoCriB,QAuLnC,IAoCMu3L,GAAAt1K,GAOX,SAAAs1K,EACE3jL,EACA2iD,EACAt0D,EACAu1L,GAAgBt1K,EAAA,KAAAq1K,QAAA,IAAhBC,IAAAA,GAAW,GAEX76L,KAAKiX,OAASA,EACdjX,KAAK45D,WAAaA,GAAc,GAChC55D,KAAK66L,SAAWA,EACZv1L,aAAgBjC,OAClBrD,KAAKsF,KAAOA,EAAK7K,WACjBuF,KAAK8C,MAAQwC,GAEbtF,KAAKsF,KAAOA,CAEf,IAOG,SAAUw1L,GAAqBh4L,GACnC,OACW,MAATA,GACwB,kBAAjBA,EAAMmU,QACe,kBAArBnU,EAAM82D,YACa,mBAAnB92D,EAAM+3L,UACb,SAAU/3L,CAEb,CE11BD,IAAMi4L,GAAgD,CACpD,OACA,MACA,QACA,UAEIC,GAAuB,IAAIzyK,IAC/BwyK,IAGIE,GAAsB,CAC1B,OAD2C/gM,OAExC6gM,IAECG,GAAsB,IAAI3yK,IAAgB0yK,IAE1CE,GAAsB,IAAI5yK,IAAI,CAAC,IAAK,IAAK,IAAK,IAAK,MACnD6yK,GAAoC,IAAI7yK,IAAI,CAAC,IAAK,MAE3C8yK,GAA4C,CACvD1yL,MAAO,OACP1J,cAAU3C,EACVg/L,gBAAYh/L,EACZi/L,gBAAYj/L,EACZk/L,iBAAal/L,EACbm/L,cAAUn/L,GAGCo/L,GAAsC,CACjD/yL,MAAO,OACPrD,UAAMhJ,EACNg/L,gBAAYh/L,EACZi/L,gBAAYj/L,EACZk/L,iBAAal/L,EACbm/L,cAAUn/L,GAGCq/L,GAAiC,CAC5ChzL,MAAO,YACPizL,aAASt/L,EACT+a,WAAO/a,EACP2C,cAAU3C,GAGNu/L,GAAqB,gCAErBC,GACc,qBAAX98L,QACoB,qBAApBA,OAAO2Z,UAC2B,qBAAlC3Z,OAAO2Z,SAAS6F,cACnBu9K,IAAYD,GAEZE,GAA8B,SAAA3G,GAAD,OACjCjzL,QAAQizL,EAAMI,iBADhB,EAWM,SAAUwG,GAAap7E,GAC3BoyE,EACEpyE,EAAKo0E,OAAOl7L,OAAS,EACrB,6DAGF,IAYImiM,EAZAhH,EACFr0E,EAAKq0E,qBAAuB8G,GAG1B5G,EAA0B,CAAC,EAE3B+G,EAAanH,EACfn0E,EAAKo0E,OACLC,OACA54L,EACA84L,GAIEgH,EAAMj9L,EAAA,CACRk9L,wBAAwB,GACrBx7E,EAAKu7E,QAGNE,EAAuC,KAEvClsB,EAAc,IAAI7nJ,IAElBg0K,EAAsD,KAEtDC,EAAkE,KAElEC,EAAsD,KAOtDC,EAA8C,MAAtB77E,EAAK87E,cAE7BC,EAAiBjH,EACnBwG,EACAt7E,EAAK1iG,QAAQlf,SACb4hH,EAAKg1E,UAEHgH,EAAkC,KAEtC,GAAsB,MAAlBD,EAAwB,CAG1B,IAAI95L,EAAQg6L,GAAuB,IAAK,CACtCplL,SAAUmpG,EAAK1iG,QAAQlf,SAASyY,WAElCqlL,EAAyBC,GAAuBb,GAChDS,EADIG,EAAEr4L,QAENm4L,EAAaxkJ,EAAA,GAFE0kJ,EAAA1H,MAEUtpL,GAAKjJ,EAC/B,CAED,IAOIm6L,EA2BAC,EAlCAC,GAGDP,EAAe7E,MAAM,SAAAx1K,GAAD,OAAOA,EAAE8yK,MAAMtyK,IAAnC,OAEC65K,EAAe7E,MAAM,SAAAx1K,GAAD,OAAOA,EAAE8yK,MAAM+H,MAAnC,KAAoE,MAAtBv8E,EAAK87E,eAGnDh0L,EAAqB,CACvB00L,cAAex8E,EAAK1iG,QAAQo1D,OAC5Bt0E,SAAU4hH,EAAK1iG,QAAQlf,SACvByF,QAASk4L,EACTO,YAAAA,EACAG,WAAYjC,GAEZkC,sBAA6C,MAAtB18E,EAAK87E,eAAgC,KAC5Da,oBAAoB,EACpBC,aAAc,OACdC,WAAa78E,EAAK87E,eAAiB97E,EAAK87E,cAAce,YAAe,CAAC,EACtEC,WAAa98E,EAAK87E,eAAiB97E,EAAK87E,cAAcgB,YAAe,KACrEzyL,OAAS21G,EAAK87E,eAAiB97E,EAAK87E,cAAczxL,QAAW2xL,EAC7De,SAAU,IAAIl8H,IACdm8H,SAAU,IAAIn8H,KAKZo8H,EAA+BxL,EAAc6B,IAI7C4J,GAA4B,EAO5BC,GAA8B,EAM9BC,GAAyB,EAIzBC,EAAoC,GAIpCC,EAAkC,GAGlCC,EAAmB,IAAI18H,IAGvB28H,EAAqB,EAKrBC,GAA2B,EAG3BC,EAAiB,IAAI78H,IAGrB88H,EAAmB,IAAIj2K,IAGvBk2K,EAAmB,IAAI/8H,IAMvBg9H,EAAkB,IAAIh9H,IAItBi9H,EAAmB,IAAIj9H,IAIvBk9H,GAA0B,EA8F9B,SAASC,EAAYz8D,GACnBz5H,EACKxJ,EAAA,GAAAwJ,EACAy5H,GAELguC,EAAY3nJ,SAAS,SAAA+sF,GAAD,OAAgBA,EAAW7sG,EAA/C,GACD,CAOD,SAASm2L,EACP7/L,EACAmjI,GAA0E,IAAA28D,EAAAC,EActErB,EAPAsB,EACkB,MAApBt2L,EAAMg1L,YACyB,MAA/Bh1L,EAAM20L,WAAWhC,YACjB4D,GAAiBv2L,EAAM20L,WAAWhC,aACP,YAA3B3yL,EAAM20L,WAAW30L,QACe,KAAhB,OAAhBo2L,EAAA9/L,EAAS0J,YAAO,EAAAo2L,EAAAI,aAKdxB,EAFAv7D,EAASu7D,WACPpjM,OAAO8wB,KAAK+2G,EAASu7D,YAAY5jM,OAAS,EAC/BqoI,EAASu7D,WAGT,KAENsB,EAEIt2L,EAAMg1L,WAGN,KAIf,IAWAyB,EAXI1B,EAAat7D,EAASs7D,WACtB2B,GACE12L,EAAM+0L,WACNt7D,EAASs7D,WACTt7D,EAAS19H,SAAW,GACpB09H,EAASl3H,QAEXvC,EAAM+0L,WAGV4B,EAAAj6K,EACkBs5K,GAAlB,QAAAW,EAAAphM,MAAAkhM,EAAAE,EAAA7+L,KAAAmmB,MAAoC,CAClC24K,GADkCn6K,EAAAg6K,EAAA7jM,MAAA,GAA1B,GAET,CAGD,OAAA8K,GAAAi5L,EAAA36L,EAAA0B,EAAA,SAAAi5L,EAAA5jM,GAAA,CACA,IAAI8hM,GAC4B,IAA9BO,GACgC,MAA/Bp1L,EAAM20L,WAAWhC,YAChB4D,GAAiBv2L,EAAM20L,WAAWhC,cACF,KAAhB,OAAhB0D,EAAA//L,EAAS0J,YAAO,EAAAq2L,EAAAG,aAEhBjD,IACFC,EAAaD,EACbA,OAAqB5/L,GAGvBuiM,EAAW1/L,EAAC,CAAC,EACRijI,EADM,CAETu7D,WAAAA,EACAD,WAAAA,EACAL,cAAeS,EACf7+L,SAAAA,EACAk+L,aAAa,EACbG,WAAYjC,GACZoC,aAAc,OACdF,sBAAuBiC,GACrBvgM,EACAmjI,EAAS19H,SAAWiE,EAAMjE,SAE5B84L,mBAAAA,EACAK,SAAU,IAAIn8H,IAAI/4D,EAAMk1L,aAGtBG,GAEOF,IAAkBxL,EAAc6B,MAEhC2J,IAAkBxL,EAAcqC,KACzC9zE,EAAK1iG,QAAQjjB,KAAK+D,EAAUA,EAAS0J,OAC5Bm1L,IAAkBxL,EAAcuC,SACzCh0E,EAAK1iG,QAAQxa,QAAQ1E,EAAUA,EAAS0J,QAI1Cm1L,EAAgBxL,EAAc6B,IAC9B4J,GAA4B,EAC5BC,GAA8B,EAC9BC,GAAyB,EACzBC,EAA0B,GAC1BC,EAAwB,EACzB,CAGD,SACesB,EAAfp3K,EAAAq3K,GAAA,OAAAC,EAAA7xL,MAAA,KAAAlP,UAAA,CA6FA,SAAA+gM,IA7b2C,OA6b3CA,EAAAx6K,EAAAF,IAAAgC,MA7FA,SAAAosJ,EACEr1J,EACAvY,GAFF,IAAAm6L,EAAAj5L,EAAAk5L,EAAA/8L,EAAAg9L,EAAAC,EAAAC,EAAA3C,EAAAG,EAAAyC,EAAA,OAAAh7K,IAAAuC,MAAA,SAAA+rJ,GAAA,cAAAA,EAAAx4J,KAAAw4J,EAAA/kK,MAAA,UAIoB,kBAAPwP,EAAX,CAAAu1J,EAAA/kK,KAAA,QACE,OAAAqyG,EAAK1iG,QAAQ22K,GAAG92K,GAAhBu1J,EAAArrJ,OAAA,iBAgDF,GAhDE03K,EAIgCM,GAChCliL,EACAo+K,EACA32L,GAHIkB,EAAFi5L,EAAEj5L,KAAMk5L,EAARD,EAAQC,WAAY/8L,EAAA88L,EAAA98L,MAMpBg9L,EAAkBn3L,EAAM1J,SAQ5B8gM,EAAY5gM,EAAA,GAPR4gM,EAAejN,EAAenqL,EAAM1J,SAAU0H,EAAMlB,GAAQA,EAAKkD,OAShEk4G,EAAK1iG,QAAQu2K,eAAeqL,IAG7BC,EAAcv6L,GAAwB,MAAhBA,EAAK9B,QAAkB8B,EAAK9B,aAAUrH,EAE5D+gM,EAAgB/K,EAAcqC,MAEd,IAAhBqL,EACF3C,EAAgB/K,EAAcuC,SACL,IAAhBmL,GAGK,MAAdH,GACAX,GAAiBW,EAAWvE,aAC5BuE,EAAWtE,aAAe5yL,EAAM1J,SAASyY,SAAW/O,EAAM1J,SAASwf,SAMnE4+K,EAAgB/K,EAAcuC,SAG5B2I,EACF/3L,GAAQ,uBAAwBA,GACA,IAA5BA,EAAK+3L,wBACLlhM,IAEF2jM,EAAaE,GAAsB,CACrCL,gBAAAA,EACAC,aAAAA,EACA1C,cAAAA,KAEF,CAAA9pB,EAAA/kK,KAAA,SAEE,OAAA4xL,GAAcH,EAAY,CACxBt3L,MAAO,UACP1J,SAAU8gM,EACVnE,QAAO,WACLwE,GAAcH,EAAa,CACzBt3L,MAAO,aACPizL,aAASt/L,EACT+a,WAAO/a,EACP2C,SAAU8gM,IAGZN,EAASzhL,EAAIvY,IAEf4R,MAAK,WACHkoL,GAAcU,GACdpB,EAAY,CAAEhB,SAAU,IAAIn8H,IAAI/4D,EAAMk1L,WACvC,IAhBHtqB,EAAArrJ,OAAA,yBAAAqrJ,EAAA/kK,KAAA,GAqBW6xL,EAAgBhD,EAAe0C,EAAc,CACxDF,WAAAA,EAGAS,aAAcx9L,EACd06L,mBAAAA,EACA75L,QAAS8B,GAAQA,EAAK9B,UANxB,eAAA4vK,EAAArrJ,OAAA,SAAAqrJ,EAAAvrJ,MAAA,yBAAAurJ,EAAAprJ,OAAA,GAAAkrJ,EAAA,KAjbyCssB,EAAA7xL,MAAA,KAAAlP,UAAA,CA8d3C,SACeyhM,EAAfE,EAAAC,EAAAC,GAAA,OAAAC,GAAA5yL,MAAA,KAAAlP,UAAA,CA6IA,SAAA8hM,KA5mB2C,OA4mB3CA,GAAAv7K,EAAAF,IAAAgC,MA7IA,SAAAwsJ,EACE4pB,EACAp+L,EACAwG,GAHF,IAAAk7L,EAAAC,EAAAl8L,EAAAm8L,EAAAC,EAAAC,EAAAC,EAAAt2L,EAAAu2L,EAAAX,EAAAY,EAAA5D,EAAA6D,EAAAC,EAAA1D,EAAAxyL,EAAA,OAAA+Z,IAAAuC,MAAA,SAAAmsJ,GAAA,cAAAA,EAAA54J,KAAA44J,EAAAnlK,MAAA,OAWG,GAKD0uL,GAA+BA,EAA4B/qB,QAC3D+qB,EAA8B,KAC9BY,EAAgBT,EAChBW,GACoD,KAAjDv4L,GAAQA,EAAK47L,gCAIhBC,GAAmB34L,EAAM1J,SAAU0J,EAAMjE,SACzCq5L,GAAkE,KAArCt4L,GAAQA,EAAK+3L,oBAEtCmD,EAAczE,GAAsBC,EACpCyE,EAAoBn7L,GAAQA,EAAK87L,mBACjC78L,EAAUixL,EAAYgL,EAAa1hM,EAAU4hH,EAAKg1E,UAGtD,CAAAliB,EAAAnlK,KAAA,SAME,OALI1L,EAAQg6L,GAAuB,IAAK,CAAEplL,SAAUzY,EAASyY,WAA7DopL,EAEE9D,GAAuB2D,GADVI,EAAXD,EAAEp8L,QAA0B2wL,EAAAyL,EAAAzL,MAGhCmM,KACA1C,EAAmB7/L,EAAU,CAC3ByF,QAASq8L,EACTrD,WAAY,CAAC,EACbxyL,OAAMmtC,EAAA,GACHg9I,EAAMtpL,GAAKjJ,KAJhB6wK,EAAAzrJ,OAAA,sBAcAu5K,GAAiB94L,EAAM1J,SAAUA,IAC/BwG,GAAQA,EAAKo6L,YAAcX,GAAiBz5L,EAAKo6L,WAAWvE,YAFhE,CAAA3nB,EAAAnlK,KAAA,SAIE,OAAAswL,EAAmB7/L,EAAU,CAAEyF,QAAAA,IAA/BivK,EAAAzrJ,OAAA,kBAMF,GADAg1K,EAA8B,IAAIwE,gBAC9Bh3L,EAAUi3L,GACZ9gF,EAAK1iG,QACLlf,EACAi+L,EAA4Br8I,OAC5Bp7C,GAAQA,EAAKo6L,aAKXp6L,IAAQA,EAAK66L,aAAjB,CAAA3sB,EAAAnlK,KAAA,SAKE8xL,EAAYjoJ,EAAA,GACTupJ,GAAoBl9L,GAAS2wL,MAAMtpL,GAAKtG,EAAK66L,cADhD3sB,EAAAnlK,KAAA,sBAIA/I,GACAA,EAAKo6L,YACLX,GAAiBz5L,EAAKo6L,WAAWvE,aAH5B,CAAA3nB,EAAAnlK,KAAA,gBAAAmlK,EAAAnlK,KAAA,GAMoBqzL,GACvBn3L,EACAzL,EACAwG,EAAKo6L,WACLn7L,EACA,CAAEf,QAAS8B,EAAK9B,UALlB,QAAgB,KAAZu9L,EAAYvtB,EAAA3rJ,MAQCo5K,eAAjB,CAAAztB,EAAAnlK,KAAA,gBAAAmlK,EAAAzrJ,OAAA,kBAIA+4K,EAAoBC,EAAaD,kBACjCX,EAAeY,EAAaY,mBAExBxE,EAAUn+L,EAAA,CACZwJ,MAAO,UACP1J,SAAAA,GACGwG,EAAKo6L,YAEVe,EAAoBtD,EAGpB5yL,EAAU,IAAIq3L,QAAQr3L,EAAQiL,IAAK,CAAEkrC,OAAQn2C,EAAQm2C,SAArD,eAAA8yH,EAAAnlK,KAAA,GAIiDwzL,GACjDt3L,EACAzL,EACAyF,EACAk8L,EACAn7L,GAAQA,EAAKo6L,WACbp6L,GAAQA,EAAKw8L,kBACbx8L,GAAQA,EAAK9B,QACbs9L,EACAX,GATF,QAAkC,GAAlCa,EAAAxtB,EAAA3rJ,KAAMo5K,EAAFD,EAAEC,eAAgB1D,EAAlByD,EAAkBzD,WAAYxyL,EAAAi2L,EAAAj2L,QAY9Bk2L,EAAJ,CAAAztB,EAAAnlK,KAAA,gBAAAmlK,EAAAzrJ,OAAA,kBAOAg1K,EAA8B,KAE9B4B,EAAmB7/L,EAADE,EAAC,CACjBuF,QAAAA,GACIu8L,EAAoB,CAAEtD,WAAYsD,GAAsB,CAAC,EAF7C,CAGhBvD,WAAAA,EACAxyL,OAAAA,KAJF,yBAAAyoK,EAAAxrJ,OAAA,GAAAsrJ,EAAA,KAnmByCitB,GAAA5yL,MAAA,KAAAlP,UAAA,UA6mB5BijM,GAAfK,EAAAC,EAAAC,EAAAC,EAAAC,GAAA,OAAAC,GAAAz0L,MAAA,KAAAlP,UAAA,CA2FA,SAAA2jM,KAxsB2C,OAwsB3CA,GAAAp9K,EAAAF,IAAAgC,MA3FA,SAAA4sJ,EACEnpK,EACAzL,EACA4gM,EACAn7L,EACAe,GALF,IAAAzK,EAAAwnM,EAAA7+L,EAAA8+L,EAAA,OAAAx9K,IAAAuC,MAAA,SAAAssJ,GAAA,cAAAA,EAAA/4J,KAAA+4J,EAAAtlK,MAAA,OAmBE,GAZAk0L,KAQA7D,EAAY,CAAEvB,WALAn+L,EAAA,CACZwJ,MAAO,aACP1J,SAAAA,GACG4gM,MAMD2C,EAAcG,GAAej+L,EAASzF,IAEzBo2L,MAAM9hH,QAAWivH,EAAYnN,MAAMtyK,KAApD,CAAA+wJ,EAAAtlK,KAAA,QACExT,EAAS,CACP6E,KAAM2yL,EAAW1vL,MACjBA,MAAOg6L,GAAuB,IAAK,CACjC9+L,OAAQ0M,EAAQ1M,OAChB0Z,SAAUzY,EAASyY,SACnBkrL,QAASJ,EAAYnN,MAAMtpL,MAL/B+nK,EAAAtlK,KAAA,uBAAAslK,EAAAtlK,KAAA,GASeq0L,GACb,SACAn4L,EACA83L,EACA99L,EACA0wL,EACAF,EACA+H,EAAOpH,UAPT,QAAM,GAAN76L,EAAM84K,EAAA9rJ,MAUFtd,EAAQm2C,OAAOuB,QAAnB,CAAA0xH,EAAAtlK,KAAA,gBAAAslK,EAAA5rJ,OAAA,SACS,CAAEk5K,gBAAgB,IAAzB,YAIA0B,GAAiB9nM,GAArB,CAAA84K,EAAAtlK,KAAA,SAUG,OAPC7K,EADE8B,GAAwB,MAAhBA,EAAK9B,QACL8B,EAAK9B,QAMb3I,EAAOiE,WAAa0J,EAAM1J,SAASyY,SAAW/O,EAAM1J,SAASwf,OAChEq1J,EAAAtlK,KAAA,GACKu0L,GAAwBp6L,EAAO3N,EAAQ,CAAE6kM,WAAAA,EAAYl8L,QAAAA,IAA3D,eAAAmwK,EAAA5rJ,OAAA,SACO,CAAEk5K,gBAAgB,IAAzB,YAGE4B,GAAchoM,GAAlB,CAAA84K,EAAAtlK,KAAA,SAWG,OARGi0L,EAAgBb,GAAoBl9L,EAAS89L,EAAYnN,MAAMtpL,KAMpC,KAA1BtG,GAAQA,EAAK9B,WAChBm6L,EAAgBxL,EAAcqC,MAC/B7gB,EAAA5rJ,OAAA,SAEM,CAEL+4K,kBAAmB,CAAC,EACpBa,mBAAkBzpJ,EAAA,GAAKoqJ,EAAcpN,MAAMtpL,GAAK/Q,EAAO8H,SAHzD,YAOEmgM,GAAiBjoM,GAArB,CAAA84K,EAAAtlK,KAAA,eACQsuL,GAAuB,IAAK,CAAEj9L,KAAM,iBAA1C,eAAAi0K,EAAA5rJ,OAAA,SAGK,CACL+4K,kBAAiB5oJ,EAAA,GAAKmqJ,EAAYnN,MAAMtpL,GAAK/Q,EAAOsK,QADtD,yBAAAwuK,EAAA3rJ,OAAA,GAAA0rJ,EAAA,KAlsByC0uB,GAAAz0L,MAAA,KAAAlP,UAAA,UAysB5BojM,GAAfkB,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAA,OAAAC,GAAA71L,MAAA,KAAAlP,UAAA,UAAA+kM,KAiLC,OAjLDA,GAAAx+K,EAAAF,IAAAgC,MAAA,SAAA28K,EACEl5L,EACAzL,EACAyF,EACA68L,EACA1B,EACAoC,EACAt+L,EACAs9L,EACAX,GATF,IAAAM,EAAAtD,EAAAuG,EAAAlD,EAAAmD,EAAAC,EAAAC,EAAAC,EAAAtG,EAAAuG,EAAA98D,EAAA+8D,EAAAC,EAAAC,EAAAC,EAAA5G,EAAAxyL,EAAAq5L,EAAA,OAAAt/K,IAAAuC,MAAA,SAAAw+J,GAAA,cAAAA,EAAAjrK,KAAAirK,EAAAx3K,MAAA,OAS0B,IAGpBoyL,EAAoBW,KAElBjE,EAAUn+L,EAAA,CACZwJ,MAAO,UACP1J,SAAAA,EACAq8L,gBAAYh/L,EACZi/L,gBAAYj/L,EACZk/L,iBAAal/L,EACbm/L,cAAUn/L,GACPujM,GAELe,EAAoBtD,GAKlBuG,EACFhE,GAAcoC,EACVpC,GAAcoC,EACdrB,EAAkBtF,YAClBsF,EAAkBrF,YAClBqF,EAAkBnF,UAClBmF,EAAkBpF,YAClB,CACEF,WAAYsF,EAAkBtF,WAC9BC,WAAYqF,EAAkBrF,WAC9BE,SAAUmF,EAAkBnF,SAC5BD,YAAaoF,EAAkBpF,kBAEjCl/L,EAEFqkM,EAAczE,GAAsBC,EAAxC2H,EAC4CU,GAC1C3jF,EAAK1iG,QACLxV,EACAjE,EACAm/L,EACA5kM,EACAg/L,EACAC,EACAC,EACAM,EACAkC,EACA9/E,EAAKg1E,SACLoL,EACAX,GAbFyD,EAAA3+K,EAAA0+K,EAAA,GAAKE,EAADD,EAAC,GAAeE,EAAhBF,EAAC,GAmBLvC,IACG,SAAAoB,GAAD,QACIl+L,GAAWA,EAAQqzL,MAAM,SAAAx1K,GAAD,OAAOA,EAAE8yK,MAAMtpL,KAAO62L,CAAnC,MACZoB,GAAiBA,EAAcjM,MAAM,SAAAx1K,GAAD,OAAOA,EAAE8yK,MAAMtpL,KAAO62L,CAAzC,GAHD,IAOQ,IAAzBoB,EAAcjqM,QAAgD,IAAhCkqM,EAAqBlqM,OAAvD,CAAAisL,EAAAx3K,KAAA,QACE,OAAAswL,EAAmB7/L,EAADE,EAAC,CACjBuF,QAAAA,EACAg5L,WAAY,CAAC,EAEbxyL,OAAQo1L,GAAgB,MACpBW,EAAoB,CAAEtD,WAAYsD,GAAsB,CAAC,IAL/Djb,EAAA99J,OAAA,SAOO,CAAEk5K,gBAAgB,IAAzB,OAoCF,OA7BKpD,IACHiG,EAAqBx7K,SAAS,SAAAwnI,GAC5B,IAAIw0C,EAAU97L,EAAMi1L,SAASz0L,IAAI8mJ,EAAGpyJ,KAChC6mM,EAAgD,CAClD/7L,MAAO,UACPrD,KAAMm/L,GAAWA,EAAQn/L,KACzBg2L,gBAAYh/L,EACZi/L,gBAAYj/L,EACZk/L,iBAAal/L,EACbm/L,cAAUn/L,EACV,6BAA6B,GAE/BqM,EAAMi1L,SAAS/qK,IAAIo9H,EAAGpyJ,IAAK6mM,MAEzB/G,EAAasD,GAAqBt4L,EAAMg1L,WAC5CkB,EAAW1/L,EAAC,CACVm+L,WAAYsD,GACRjD,EACmC,IAAnCpjM,OAAO8wB,KAAKsyK,GAAY5jM,OACtB,CAAE4jM,WAAY,MACd,CAAEA,WAAAA,GACJ,CAAC,EACDsG,EAAqBlqM,OAAS,EAC9B,CAAE6jM,SAAU,IAAIl8H,IAAI/4D,EAAMi1L,WAC1B,CAAC,KAITU,IAA4BD,EAC5B4F,EAAqBx7K,SAAS,SAAAwnI,GAAD,OAC3BmuC,EAAiBvrK,IAAIo9H,EAAGpyJ,IAAKq/L,EAD/B,IAAAlX,EAAAx3K,KAAA,GAKQm2L,GACJh8L,EAAMjE,QACNA,EACAs/L,EACAC,EACAv5L,GANJ,QAA8B,GAA9Bw5L,EAAAle,EAAAh+J,KAAMo/G,EAAF88D,EAAE98D,QAAS+8D,EAAXD,EAAWC,cAAeC,EAAAF,EAAAE,gBAS1B15L,EAAQm2C,OAAOuB,QAAnB,CAAA4jI,EAAAx3K,KAAA,gBAAAw3K,EAAA99J,OAAA,SACS,CAAEk5K,gBAAgB,IAAzB,QASF,GAHA6C,EAAqBx7K,SAAS,SAAAwnI,GAAD,OAAQmuC,EAAiBrpH,OAAOk7E,EAAGpyJ,IAAhE,MAGIwmM,EAAWO,GAAax9D,IAC5B,CAAA4+C,EAAAx3K,KAAA,gBAAAw3K,EAAAx3K,KAAA,GACQu0L,GAAwBp6L,EAAO07L,EAAU,CAAE1gM,QAAAA,IAAjD,eAAAqiL,EAAA99J,OAAA,SACO,CAAEk5K,gBAAgB,IAAzB,QA4BF,OA/JwBkD,EAuIKO,GAC3Bl8L,EACAjE,EACAs/L,EACAG,EACA7D,EACA2D,EACAG,EACA1F,GARIhB,EAAF4G,EAAE5G,WAAYxyL,EAAAo5L,EAAAp5L,OAYlBwzL,EAAgBj2K,SAAQ,SAACq8K,EAAclC,GACrCkC,EAAa1sB,WAAW,SAAAh2H,IAIlBA,GAAW0iJ,EAAal+K,OAC1B83K,EAAgB3pH,OAAO6tH,SAK7BmC,KACIR,EAAqBS,GAAqB1G,GAA9CtY,EAAA99J,OAAA,SAEA/oB,EAAA,CACEu+L,WAAAA,EACAxyL,OAAAA,GACIq5L,GAAsBN,EAAqBlqM,OAAS,EACpD,CAAE6jM,SAAU,IAAIl8H,IAAI/4D,EAAMi1L,WAC1B,CAAC,IALP,yBAAA5X,EAAA79J,OAAA,GAAAy7K,EAAA,KAODD,GAAA71L,MAAA,KAAAlP,UAAA,CAED,SAASqmM,GAAwBpnM,GAC/B,OAAO8K,EAAMi1L,SAASz0L,IAAItL,IAAQ69L,EACnC,CA93B0C,SAAAwJ,KAAA,OAAAA,GAAA//K,EAAAF,IAAAgC,MAm7B3C,SAAAk+K,EACEtnM,EACA+kM,EACAj8L,EACAzD,EACAkiM,EACAvF,GANF,IAAAwF,EAAAC,EAAAb,EAAAc,EAAAC,EAAAC,EAAAC,EAAA3F,EAAA4F,EAAAhF,EAAAj8L,EAAAkhM,EAAAC,EAAAC,EAAAC,EAAA/B,EAAAC,EAAA+B,EAAA5+D,EAAA+8D,EAAAC,GAAAC,GAAA4B,GAAAvI,GAAAxyL,GAAAg7L,GAAA3B,GAAA,OAAAt/K,IAAAuC,MAAA,SAAA2+K,GAAA,cAAAA,EAAAprL,KAAAorL,EAAA33L,MAAA,OASE,GADAk0L,KACAjE,EAAiB1pH,OAAOl3E,GAEnBqF,EAAMmyL,MAAM9hH,QAAWrwE,EAAMmyL,MAAMtyK,KAAxC,CAAAojL,EAAA33L,KAAA,QAME,OALI1L,EAAQg6L,GAAuB,IAAK,CACtC9+L,OAAQ6hM,EAAWvE,WACnB5jL,SAAU/Q,EACVi8L,QAASA,IAEXwD,GAAgBvoM,EAAK+kM,EAAS9/L,GAA9BqjM,EAAAj+K,OAAA,iBAuBF,OAlBIo9K,EAAkB38L,EAAMi1L,SAASz0L,IAAItL,GACrC4mM,EAAOtlM,EAAA,CACTwJ,MAAO,cACJk3L,EAFM,CAGTv6L,KAAMggM,GAAmBA,EAAgBhgM,KACzC,6BAA6B,IAE/BqD,EAAMi1L,SAAS/qK,IAAIh1B,EAAK4mM,GACxB5F,EAAY,CAAEjB,SAAU,IAAIl8H,IAAI/4D,EAAMi1L,YAGlC2H,EAAkB,IAAI7D,gBACtB8D,EAAe7D,GACjB9gF,EAAK1iG,QACLxX,EACA4+L,EAAgB1kJ,OAChBg/I,GAEFzB,EAAiBvrK,IAAIh1B,EAAK0nM,GAA1BY,EAAA33L,KAAA,GAEyBq0L,GACvB,SACA2C,EACAtiM,EACAkiM,EACAhQ,EACAF,EACA+H,EAAOpH,UAPT,QAAgB,GAAZ4P,EAAYU,EAAAn+K,MAUZw9K,EAAa3kJ,OAAOuB,QAAxB,CAAA+jJ,EAAA33L,KAAA,SAKG,OAFG4vL,EAAiBj1L,IAAItL,KAAS0nM,GAChCnH,EAAiBrpH,OAAOl3E,GACzBsoM,EAAAj+K,OAAA,sBAIC46K,GAAiB2C,GAArB,CAAAU,EAAA33L,KAAA,SAUE,OATA4vL,EAAiBrpH,OAAOl3E,GACxB2gM,EAAiBh3L,IAAI3J,GACjB6nM,EAAcvmM,EAAA,CAChBwJ,MAAO,WACJk3L,EAFa,CAGhBv6L,UAAMhJ,EACN,6BAA6B,IAE/BqM,EAAMi1L,SAAS/qK,IAAIh1B,EAAK6nM,GACxB7G,EAAY,CAAEjB,SAAU,IAAIl8H,IAAI/4D,EAAMi1L,YAAtCuI,EAAAj+K,OAAA,SAEO66K,GAAwBp6L,EAAO88L,EAAc,CAClD5F,WAAAA,EACAwG,uBAAuB,KAFzB,YAOErD,GAAcyC,GAAlB,CAAAU,EAAA33L,KAAA,SACE,OAAA43L,GAAgBvoM,EAAK+kM,EAAS6C,EAAa3iM,OAA3CqjM,EAAAj+K,OAAA,sBAIE+6K,GAAiBwC,GAArB,CAAAU,EAAA33L,KAAA,eACQsuL,GAAuB,IAAK,CAAEj9L,KAAM,iBAA1C,QAoEF,OA/DIkgM,EAAep3L,EAAM20L,WAAWr+L,UAAY0J,EAAM1J,SAClD0mM,EAAsBhE,GACxB9gF,EAAK1iG,QAEL4hL,EACAwF,EAAgB1kJ,QAEd8/I,EAAczE,GAAsBC,EAMxClJ,EALIvuL,EACyB,SAA3BiE,EAAM20L,WAAW30L,MACbgtL,EAAYgL,EAAah4L,EAAM20L,WAAWr+L,SAAU4hH,EAAKg1E,UACzDltL,EAAMjE,QAEO,gDAEfkhM,IAAWvH,EACfE,EAAe1rK,IAAIh1B,EAAK+nM,GAEpBC,EAAW1mM,EAAA,CACbwJ,MAAO,UACPrD,KAAMmgM,EAAangM,MAChBu6L,EAHU,CAIb,6BAA6B,IAE/Bl3L,EAAMi1L,SAAS/qK,IAAIh1B,EAAKgoM,GAAxBC,EAE4CtB,GAC1C3jF,EAAK1iG,QACLxV,EACAjE,EACAm7L,EACAE,EACA9B,EACAC,EACAC,EACAM,EACAkC,EACA9/E,EAAKg1E,SAXqDx9I,EAAC,CAAD,EAYvDn1C,EAAMmyL,MAAMtpL,GAAK05L,EAAangM,WACjChJ,GAbFypM,EAAA3gL,EAAA0gL,EAAA,GAAK9B,EAAD+B,EAAC,IAAe9B,EAAhB8B,EAAC,IAoBFliM,QAAQ,SAAAosJ,GAAD,OAAQA,EAAGpyJ,MAAQA,CAD7B,IAEG4qB,SAAS,SAAAwnI,GACR,IAAIq2C,EAAWr2C,EAAGpyJ,IACdynM,EAAkB38L,EAAMi1L,SAASz0L,IAAIm9L,GACrC5B,EAAgD,CAClD/7L,MAAO,UACPrD,KAAMggM,GAAmBA,EAAgBhgM,KACzCg2L,gBAAYh/L,EACZi/L,gBAAYj/L,EACZk/L,iBAAal/L,EACbm/L,cAAUn/L,EACV,6BAA6B,GAE/BqM,EAAMi1L,SAAS/qK,IAAIyzK,EAAU5B,GAC7BtG,EAAiBvrK,IAAIyzK,EAAUf,MAGnC1G,EAAY,CAAEjB,SAAU,IAAIl8H,IAAI/4D,EAAMi1L,YAAtCuI,EAAA33L,KAAA,GAGQm2L,GACJh8L,EAAMjE,QACNA,EACAs/L,EACAC,EACA0B,GANJ,QAA8B,GAA9BK,EAAAG,EAAAn+K,KAAMo/G,EAAF4+D,EAAE5+D,QAAS+8D,EAAX6B,EAAW7B,cAAeC,GAAA4B,EAAA5B,gBAS1BmB,EAAgB1kJ,OAAOuB,QAA3B,CAAA+jJ,EAAA33L,KAAA,gBAAA23L,EAAAj+K,OAAA,kBAQA,GAJAq2K,EAAexpH,OAAOl3E,GACtBugM,EAAiBrpH,OAAOl3E,GACxBomM,EAAqBx7K,SAAS,SAAA6e,GAAD,OAAO82J,EAAiBrpH,OAAOztC,EAAEzpC,IAA9D,MAEIwmM,GAAWO,GAAax9D,IAC5B,CAAA++D,EAAA33L,KAAA,gBAAA23L,EAAAj+K,OAAA,SACS66K,GAAwBp6L,EAAO07L,KAAtC,QAzKoB4B,GA6KOpB,GAC3Bl8L,EACAA,EAAMjE,QACNs/L,EACAG,OACA7nM,EACA2nM,EACAG,GACA1F,GARIhB,GAAFuI,GAAEvI,WAAYxyL,GAAA+6L,GAAA/6L,OAWdg7L,GAAqC,CACvCv9L,MAAO,OACPrD,KAAMmgM,EAAangM,KACnBg2L,gBAAYh/L,EACZi/L,gBAAYj/L,EACZk/L,iBAAal/L,EACbm/L,cAAUn/L,EACV,6BAA6B,GAE/BqM,EAAMi1L,SAAS/qK,IAAIh1B,EAAKqoM,IAEpB3B,GAAqBS,GAAqBY,GAMjB,YAA3Bj9L,EAAM20L,WAAW30L,OACjBi9L,EAAStH,GAETrL,EAAU6K,EAAe,2BACzBZ,GAA+BA,EAA4B/qB,QAE3D2sB,EAAmBn2L,EAAM20L,WAAWr+L,SAAU,CAC5CyF,QAAAA,EACAg5L,WAAAA,GACAxyL,OAAAA,GACA0yL,SAAU,IAAIl8H,IAAI/4D,EAAMi1L,cAM1BiB,EAAW1/L,EAAC,CACV+L,OAAAA,GACAwyL,WAAY2B,GACV12L,EAAM+0L,WACNA,GACAh5L,EACAwG,KAEEq5L,GAAqB,CAAE3G,SAAU,IAAIl8H,IAAI/4D,EAAMi1L,WAAc,CAAC,IAEpEK,GAAyB,GAC1B,yBAAAkI,EAAAh+K,OAAA,GAAAg9K,EAAA,KA7pCwCD,GAAAp3L,MAAA,KAAAlP,UAAA,CAqwC3C,SAAA2nM,KAFC,OAEDA,GAAAphL,EAAAF,IAAAgC,MApGA,SAAAu/K,EACE3oM,EACA+kM,EACAj8L,EACAzD,EACAwB,EACAm7L,GANF,IAAAyF,EAAAI,EAAAH,EAAAC,EAAAxqM,EAAAynM,EAAAyD,EAAA,OAAAjhL,IAAAuC,MAAA,SAAAi/K,GAAA,cAAAA,EAAA1rL,KAAA0rL,EAAAj4L,MAAA,OA8BE,OAtBI82L,EAAkB38L,EAAMi1L,SAASz0L,IAAItL,GAErC6nM,EAAcvmM,EAAA,CAChBwJ,MAAO,UACP2yL,gBAAYh/L,EACZi/L,gBAAYj/L,EACZk/L,iBAAal/L,EACbm/L,cAAUn/L,GACPujM,EANa,CAOhBv6L,KAAMggM,GAAmBA,EAAgBhgM,KACzC,6BAA6B,IAE/BqD,EAAMi1L,SAAS/qK,IAAIh1B,EAAK6nM,GACxB7G,EAAY,CAAEjB,SAAU,IAAIl8H,IAAI/4D,EAAMi1L,YAGlC2H,EAAkB,IAAI7D,gBACtB8D,EAAe7D,GACjB9gF,EAAK1iG,QACLxX,EACA4+L,EAAgB1kJ,QAElBu9I,EAAiBvrK,IAAIh1B,EAAK0nM,GAA1BkB,EAAAj4L,KAAA,EAE+Bq0L,GAC7B,SACA2C,EACAtiM,EACAwB,EACA0wL,EACAF,EACA+H,EAAOpH,UAPT,OAAU,IAcNoN,GAdAjoM,EAAMyrM,EAAAz+K,MAcV,CAAAy+K,EAAAj4L,KAAA,gBAAAi4L,EAAAj4L,KAAA,GAEWk4L,GAAoB1rM,EAAQwqM,EAAa3kJ,QAAQ,GAAxD,WAAA4lJ,EAAAtzB,GAAAszB,EAAAz+K,KAAAy+K,EAAAtzB,GAAA,CAAAszB,EAAAj4L,KAAA,SAAAi4L,EAAAtzB,GACAn4K,EAFF,QAAAA,EAAMyrM,EAAAtzB,GAAA,QASP,GAFGirB,EAAiBj1L,IAAItL,KAAS0nM,GAChCnH,EAAiBrpH,OAAOl3E,IAGtB2nM,EAAa3kJ,OAAOuB,QAAxB,CAAAqkJ,EAAAj4L,KAAA,gBAAAi4L,EAAAv+K,OAAA,sBAKI46K,GAAiB9nM,GAArB,CAAAyrM,EAAAj4L,KAAA,gBAAAi4L,EAAAj4L,KAAA,GACQu0L,GAAwBp6L,EAAO3N,GAArC,eAAAyrM,EAAAv+K,OAAA,sBAKE86K,GAAchoM,GAAlB,CAAAyrM,EAAAj4L,KAAA,SAME,OALIi0L,EAAgBb,GAAoBj5L,EAAMjE,QAASk+L,GACvDj6L,EAAMi1L,SAAS7oH,OAAOl3E,GAItBghM,EAAY,CACVjB,SAAU,IAAIl8H,IAAI/4D,EAAMi1L,UACxB1yL,OAAMmtC,EAAA,GACHoqJ,EAAcpN,MAAMtpL,GAAK/Q,EAAO8H,SAHrC2jM,EAAAv+K,OAAA,kBASF+qK,GAAWgQ,GAAiBjoM,GAAS,mCAGjCkrM,EAAqC,CACvCv9L,MAAO,OACPrD,KAAMtK,EAAOsK,KACbg2L,gBAAYh/L,EACZi/L,gBAAYj/L,EACZk/L,iBAAal/L,EACbm/L,cAAUn/L,EACV,6BAA6B,GAE/BqM,EAAMi1L,SAAS/qK,IAAIh1B,EAAKqoM,GACxBrH,EAAY,CAAEjB,SAAU,IAAIl8H,IAAI/4D,EAAMi1L,YAAtC,yBAAA6I,EAAAt+K,OAAA,GAAAq+K,EAAA,KACDD,GAAAz4L,MAAA,KAAAlP,UAAA,UAqBcmkM,GAAf4D,EAAAC,EAAAC,GAAA,OAAAC,GAAAh5L,MAAA,KAAAlP,UAAA,UAAAkoM,KAqHC,OArHDA,GAAA3hL,EAAAF,IAAAgC,MAAA,SAAA8/K,EACEp+L,EACA07L,EASMl1D,GAAA,IAAA63D,EAAAz1J,EAAAsuJ,EAAAl8L,EAAA0iM,EAAAY,EAAAtxL,EAAAuxL,EAAAC,EAAAC,EAAA9L,EAAAC,EAAAC,EAAAC,EAAA,OAAAx2K,IAAAuC,MAAA,SAAA6/K,GAAA,cAAAA,EAAAtsL,KAAAssL,EAAA74L,MAAA,UAPJqxL,GAOItuJ,OAAA,IAAA49F,EAAF,CAAC,EAACA,GAPJ0wD,WACAl8L,EAFF4tC,EAEE5tC,QACA0iM,EAAA90J,EAAA80J,sBAOEhC,EAASiD,aACXrJ,GAAyB,GAY3BhL,EATIgU,EAAmBnU,EACrBnqL,EAAM1J,SACNolM,EAASplM,SAF0BE,EAAC,CAKlCggM,aAAa,GACTkH,EAAwB,CAAEkB,wBAAwB,GAAS,CAAC,IAKlE,mDAIA1L,GAAmB19L,KAAKkmM,EAASplM,YACjC68L,IAC4B,qBAA5B,OAAAkL,EAAOhoM,aAAP,EAAOgoM,EAAQ/nM,UAHjB,CAAAooM,EAAA74L,KAAA,SAME,GADImH,EAAMkrG,EAAK1iG,QAAQq2K,UAAU6P,EAASplM,UACtCioM,EACmD,MAArDpR,GAAcngL,EAAI+B,SAAUmpG,EAAKg1E,UAAY,KAE3C72L,OAAOC,SAASw1L,SAAW9+K,EAAI8+K,SAAUyS,EAA7C,CAAAG,EAAA74L,KAAA,SAKG,OAJG7K,EACF3E,OAAOC,SAAS0E,QAAQ0gM,EAASplM,UAEjCD,OAAOC,SAAS6uI,OAAOu2D,EAASplM,UACjCooM,EAAAn/K,OAAA,kBA0BL,GAnBAg1K,EAA8B,KAE1BiK,GACU,IAAZxjM,EAAmB2uL,EAAcuC,QAAUvC,EAAcqC,KAG3DyS,EACwDz+L,EAAM20L,WAAxDhC,EAAF8L,EAAE9L,WAAYC,EAAd6L,EAAc7L,WAAYC,EAA1B4L,EAA0B5L,YAAaC,EAAA2L,EAAA3L,UACtCoE,GAAcvE,GAAcC,GAAcE,GAAYD,IACzDqE,EAAa,CACXvE,WAAAA,EACAC,WAAAA,EACAC,YAAAA,EACAC,SAAAA,MAQFL,GAAkCnzK,IAAIo8K,EAASptL,SAC/C4oL,GACAX,GAAiBW,EAAWvE,aAH9B,CAAA+L,EAAA74L,KAAA,gBAAA64L,EAAA74L,KAAA,GAKQ6xL,EAAgB8G,EAAuBF,EAAkB,CAC7DpH,WAAU1gM,EAAA,GACL0gM,EADK,CAERtE,WAAY8I,EAASplM,WAGvBu+L,mBAAoBO,IANtB,QAWA,QAAAsJ,EAAA74L,KAAA,SAXA,YAQS63L,EAAJ,CAAAgB,EAAA74L,KAAA,gBAAA64L,EAAA74L,KAAA,GAGC6xL,EAAgB8G,EAAuBF,EAAkB,CAC7D1F,mBAAoB,CAClB54L,MAAO,UACP1J,SAAUgoM,EACV3L,gBAAYh/L,EACZi/L,gBAAYj/L,EACZk/L,iBAAal/L,EACbm/L,cAAUn/L,GAEZ2lM,kBAAmBpC,EAEnBrC,mBAAoBO,IAXtB,eAAAsJ,EAAA74L,KAAA,GAgBM6xL,EAAgB8G,EAAuBF,EAAkB,CAC7D1F,mBAAoB,CAClB54L,MAAO,UACP1J,SAAUgoM,EACV3L,WAAYuE,EAAaA,EAAWvE,gBAAah/L,EACjDi/L,WAAYsE,EAAaA,EAAWtE,gBAAaj/L,EACjDk/L,YAAaqE,EAAaA,EAAWrE,iBAAcl/L,EACnDm/L,SAAUoE,EAAaA,EAAWpE,cAAWn/L,GAG/CkhM,mBAAoBO,IAVtB,yBAAAsJ,EAAAl/K,OAAA,GAAA4+K,EAAA,KAaHD,GAAAh5L,MAAA,KAAAlP,UAAA,UAEc+lM,GAAf6C,EAAAC,EAAAC,EAAAC,EAAAC,GAAA,OAAAC,GAAA/5L,MAAA,KAAAlP,UAAA,UAAAipM,KAgEC,OAhEDA,GAAA1iL,EAAAF,IAAAgC,MAAA,SAAA6gL,EACEC,EACArjM,EACAs/L,EACAgE,EACAt9L,GALF,IAAA08H,EAAA+8D,EAAAC,EAAA,OAAAn/K,IAAAuC,MAAA,SAAAygL,GAAA,cAAAA,EAAAltL,KAAAktL,EAAAz5L,MAAA,cAAAy5L,EAAAz5L,KAAA,EAUsB6R,QAAQgM,IAAR,GAAAnyB,OAAA89C,EACfgsJ,EAAcjgM,KAAK,SAAAb,GAAD,OACnB2/L,GACE,SACAn4L,EACAxH,EACAwB,EACA0wL,EACAF,EACA+H,EAAOpH,SARR,KAD2B79I,EAY3BgwJ,EAAejkM,KAAK,SAAArI,GACrB,OAAIA,EAAEgJ,SAAWhJ,EAAEwH,MACV2/L,GACL,SACAlB,GAAwB9gF,EAAK1iG,QAASziB,EAAEiL,KAAM+D,EAAQm2C,QACtDnlD,EAAEwH,MACFxH,EAAEgJ,QACF0wL,EACAF,EACA+H,EAAOpH,UAGgB,CACvBh2L,KAAM2yL,EAAW1vL,MACjBA,MAAOg6L,GAAuB,IAAK,CAAEplL,SAAUhc,EAAEiL,cA1BzD,OAiCA,OAjCIygI,EAAO6gE,EAAAjgL,KAgCPm8K,EAAgB/8D,EAAQljI,MAAM,EAAG8/L,EAAcjqM,QAC/CqqM,EAAiBh9D,EAAQljI,MAAM8/L,EAAcjqM,QAAjDkuM,EAAAz5L,KAAA,EAEM6R,QAAQgM,IAAI,CAChB67K,GACEH,EACA/D,EACAG,EACAz5L,EAAQm2C,QACR,EACAl4C,EAAM+0L,YAERwK,GACEH,EACAC,EAAejkM,KAAK,SAAArI,GAAD,OAAOA,EAAEwH,KAA5B,IACAkhM,EACA15L,EAAQm2C,QACR,KAdJ,cAAAonJ,EAAA//K,OAAA,SAkBO,CAAEk/G,QAAAA,EAAS+8D,cAAAA,EAAeC,eAAAA,IAAjC,wBAAA6D,EAAA9/K,OAAA,GAAA2/K,EAAA,KACDD,GAAA/5L,MAAA,KAAAlP,UAAA,CAED,SAAS8jM,KAAoB,IAAAyF,EAE3BlK,GAAyB,GAIzBkK,EAAAjK,GAAwBhjM,KAAxB4S,MAAAq6L,EAAAnwJ,EAAgCwpJ,OAGhC/C,EAAiBh2K,SAAQ,SAAC44B,EAAGxjD,GACvBugM,EAAiBn2K,IAAIpqB,KACvBsgM,EAAsBjjM,KAAK2C,GAC3BuqM,GAAavqM,MAGlB,CAED,SAASuoM,GAAgBvoM,EAAa+kM,EAAiB9/L,GACrD,IAAI2/L,EAAgBb,GAAoBj5L,EAAMjE,QAASk+L,GACvDyF,GAAcxqM,GACdghM,EAAY,CACV3zL,OAAMmtC,EAAA,GACHoqJ,EAAcpN,MAAMtpL,GAAKjJ,GAE5B86L,SAAU,IAAIl8H,IAAI/4D,EAAMi1L,WAE3B,CAED,SAASyK,GAAcxqM,GACjBugM,EAAiBn2K,IAAIpqB,IAAMuqM,GAAavqM,GAC5C4gM,EAAiB1pH,OAAOl3E,GACxB0gM,EAAexpH,OAAOl3E,GACtB2gM,EAAiBzpH,OAAOl3E,GACxB8K,EAAMi1L,SAAS7oH,OAAOl3E,EACvB,CAED,SAASuqM,GAAavqM,GACpB,IAAIyqM,EAAalK,EAAiBj1L,IAAItL,GACtCo1L,EAAUqV,EAA0C,8BAAAzqM,GACpDyqM,EAAWn2B,QACXisB,EAAiBrpH,OAAOl3E,EACzB,CAED,SAAS0qM,GAAiBl9K,GAAc,IACtCm9K,EADsCC,EAAApjL,EACtBgG,GAAhB,QAAAo9K,EAAAvqM,MAAAsqM,EAAAC,EAAAhoM,KAAAmmB,MAAsB,KAAb/oB,EAAT2qM,EAAAjtM,MAEM2qM,EAAqC,CACvCv9L,MAAO,OACPrD,KAHY2/L,GAAWpnM,GAGTyH,KACdg2L,gBAAYh/L,EACZi/L,gBAAYj/L,EACZk/L,iBAAal/L,EACbm/L,cAAUn/L,EACV,6BAA6B,GAE/BqM,EAAMi1L,SAAS/qK,IAAIh1B,EAAKqoM,EACzB,QAAA7/L,GAAAoiM,EAAA9jM,EAAA0B,EAAA,SAAAoiM,EAAA/sM,GAAA,CACF,CAED,SAASqpM,KACP,IACA2D,EADIC,EAAW,GAAfC,EAAAvjL,EACgBm5K,GAAhB,QAAAoK,EAAA1qM,MAAAwqM,EAAAE,EAAAnoM,KAAAmmB,MAAkC,KAAzB/oB,EAAT6qM,EAAAntM,MACMkpM,EAAU97L,EAAMi1L,SAASz0L,IAAItL,GACjCo1L,EAAUwR,EAA8B,qBAAA5mM,GAClB,YAAlB4mM,EAAQ97L,QACV61L,EAAiBzpH,OAAOl3E,GACxB8qM,EAASztM,KAAK2C,GAEjB,QAAAwI,GAAAuiM,EAAAjkM,EAAA0B,EAAA,SAAAuiM,EAAAltM,GAAA,CACD6sM,GAAiBI,EAClB,CAED,SAAS3D,GAAqB6D,GAC5B,IACAC,EADIC,EAAa,GAAjBC,EAAA3jL,EACsBk5K,GAAtB,QAAAyK,EAAA9qM,MAAA4qM,EAAAE,EAAAvoM,KAAAmmB,MAAsC,KAAAqiL,EAAA7jL,EAAA0jL,EAAAvtM,MAAA,GAA5BsC,EAADorM,EAAC,GACR,GADOA,EAAC,GACCJ,EAAU,CACjB,IAAIpE,EAAU97L,EAAMi1L,SAASz0L,IAAItL,GACjCo1L,EAAUwR,EAA8B,qBAAA5mM,GAClB,YAAlB4mM,EAAQ97L,QACVy/L,GAAavqM,GACb0gM,EAAexpH,OAAOl3E,GACtBkrM,EAAW7tM,KAAK2C,GAEnB,CACF,QAAAwI,GAAA2iM,EAAArkM,EAAA0B,EAAA,SAAA2iM,EAAAttM,GAAA,CAED,OADA6sM,GAAiBQ,GACVA,EAAWhvM,OAAS,CAC5B,CAYD,SAASwlM,GAAc1hM,GACrB8K,EAAMk1L,SAAS9oH,OAAOl3E,GACtB8gM,EAAiB5pH,OAAOl3E,EACzB,CAGD,SAASuiM,GAAcviM,EAAaqrM,GAClC,IAAIC,EAAUxgM,EAAMk1L,SAAS10L,IAAItL,IAAQ89L,GAIzC1I,EACqB,cAAlBkW,EAAQxgM,OAA8C,YAArBugM,EAAWvgM,OACxB,YAAlBwgM,EAAQxgM,OAA4C,YAArBugM,EAAWvgM,OACxB,YAAlBwgM,EAAQxgM,OAA4C,eAArBugM,EAAWvgM,OACxB,YAAlBwgM,EAAQxgM,OAA4C,cAArBugM,EAAWvgM,OACxB,eAAlBwgM,EAAQxgM,OAA+C,cAArBugM,EAAWvgM,MALzC,qCAM8BwgM,EAAQxgM,MANtC,OAMkDugM,EAAWvgM,OAGtEA,EAAMk1L,SAAShrK,IAAIh1B,EAAKqrM,GACxBrK,EAAY,CAAEhB,SAAU,IAAIn8H,IAAI/4D,EAAMk1L,WACvC,CAED,SAASsC,GAQR1wJ,GAAA,IAPCqwJ,EAODrwJ,EAPCqwJ,gBACAC,EAMDtwJ,EANCswJ,aACA1C,EAKD5tJ,EALC4tJ,cAMA,GAA8B,IAA1BsB,EAAiBpvL,KAArB,CAMIovL,EAAiBpvL,KAAO,GAC1B2jL,GAAQ,EAAO,gDAGjB,IAAIvsK,EAAUjd,MAAMoU,KAAK6gL,EAAiBh4K,WAC1CyiL,EAAAhkL,EAAoCuB,EAAQA,EAAQ5sB,OAAS,GAA7D,GAAKkmM,EAADmJ,EAAC,GAAYC,EAAbD,EAAC,GACDD,EAAUxgM,EAAMk1L,SAAS10L,IAAI82L,GAEjC,IAAIkJ,GAA6B,eAAlBA,EAAQxgM,MAQvB,OAAI0gM,EAAgB,CAAEvJ,gBAAAA,EAAiBC,aAAAA,EAAc1C,cAAAA,IAC5C4C,OADT,CApBC,CAuBF,CAED,SAASuB,GACPxtJ,GAEA,IAAIs1J,EAA8B,GAWlC,OAVA5K,EAAgBj2K,SAAQ,SAAC8gL,EAAK3G,GACvB5uJ,IAAaA,EAAU4uJ,KAI1B2G,EAAIC,SACJF,EAAkBpuM,KAAK0nM,GACvBlE,EAAgB3pH,OAAO6tH,OAGpB0G,CACR,CA+BD,SAAShI,GACPriM,EACAyF,GAEA,GAAI63L,GAAwBC,GAA2BC,EAAmB,CACxE,IAAIgN,EAAc/kM,EAAQX,KAAK,SAAAwe,GAAD,OAC5BmnL,GAAsBnnL,EAAG5Z,EAAM+0L,WADf,IAGd7/L,EAAM2+L,EAAwBv9L,EAAUwqM,IAAgBxqM,EAASpB,IACrE0+L,EAAqB1+L,GAAO4+L,GAC7B,CACF,CAED,SAAS+C,GACPvgM,EACAyF,GAEA,GAAI63L,GAAwBC,GAA2BC,EAAmB,CACxE,IAAIgN,EAAc/kM,EAAQX,KAAK,SAAAwe,GAAD,OAC5BmnL,GAAsBnnL,EAAG5Z,EAAM+0L,WADf,IAGd7/L,EAAM2+L,EAAwBv9L,EAAUwqM,IAAgBxqM,EAASpB,IACjEqsC,EAAIqyJ,EAAqB1+L,GAC7B,GAAiB,kBAANqsC,EACT,OAAOA,CAEV,CACD,OAAO,IACR,CAsCD,OAhCA+yJ,EAAS,CACHpH,eACF,OAAOh1E,EAAKg1E,UAEVltL,YACF,OAAOA,GAELssL,aACF,OAAOkH,GAETwN,WAnjDF,WAoEE,OAjEArN,EAAkBz7E,EAAK1iG,QAAQwyC,QAC7B,SAAA3oD,GAA+C,IAApCq1L,EAAoCr1L,EAA5CurE,OAAuBt0E,EAAqB+I,EAArB/I,SAAUs1L,EAAWvsL,EAAXusL,MAGlC,IAAIqK,EAAJ,CAKA1L,EAC4B,IAA1ByL,EAAiBpvL,MAAuB,MAATglL,EAC/B,8YAQF,IAAI0L,EAAaE,GAAsB,CACrCL,gBAAiBn3L,EAAM1J,SACvB8gM,aAAc9gM,EACdo+L,cAAAA,IAGF,OAAI4C,GAAuB,MAAT1L,GAEhBqK,GAA0B,EAC1B/9E,EAAK1iG,QAAQ22K,IAAY,EAATP,QAGhB6L,GAAcH,EAAY,CACxBt3L,MAAO,UACP1J,SAAAA,EACA28L,QAAO,WACLwE,GAAcH,EAAa,CACzBt3L,MAAO,aACPizL,aAASt/L,EACT+a,WAAO/a,EACP2C,SAAAA,IAGF4hH,EAAK1iG,QAAQ22K,GAAGP,IAElBl9K,MAAK,WACHkoL,GAAcU,GACdpB,EAAY,CAAEhB,SAAU,IAAIn8H,IAAIu7H,EAAOt0L,MAAMk1L,WAC9C,KAKEwC,EAAgBhD,EAAep+L,EA7CrC,CAFC2/L,GAA0B,KAwD3Bj2L,EAAMw0L,aACTkD,EAAgB/N,EAAc6B,IAAKxrL,EAAM1J,UAGpCg+L,CACR,EA++CC7kB,UAj+CF,SAAmB1+K,GAEjB,OADA02K,EAAY5oK,IAAI9N,GACT,kBAAM02K,EAAYr7F,OAAOr7E,EAAhC,CACD,EA+9CCkwM,wBAzEF,SACEC,EACAC,EACAC,GASA,GAPAxN,EAAuBsN,EACvBpN,EAAoBqN,EACpBtN,EAA0BuN,GAAY,SAAA9qM,GAAD,OAAcA,EAASpB,GAA5B,GAK3B6+L,GAAyB/zL,EAAM20L,aAAejC,GAAiB,CAClEqB,GAAwB,EACxB,IAAIxyJ,EAAIs1J,GAAuB72L,EAAM1J,SAAU0J,EAAMjE,SAC5C,MAALwlC,GACF20J,EAAY,CAAEtB,sBAAuBrzJ,GAExC,CAED,OAAO,WACLqyJ,EAAuB,KACvBE,EAAoB,KACpBD,EAA0B,KAE7B,EAiDCiD,SAAAA,EACA1/K,MA70BF,SACEliB,EACA+kM,EACAvpL,EACA5T,GAEA,GAAIs2L,GACF,MAAM,IAAI14L,MACR,oMAMA+6L,EAAiBn2K,IAAIpqB,IAAMuqM,GAAavqM,GAE5C,IACI6G,EAAUixL,EADIuG,GAAsBC,EACD9iL,EAAMwnG,EAAKg1E,UAClD,GAAKnxL,EAAL,CASA,IAAAslM,EAA2B9J,GACzB7mL,EACA+iL,EACA32L,GACA,GAJIkB,EAAFqjM,EAAErjM,KAAMk5L,EAAAmK,EAAAnK,WAMR38L,EAAQy/L,GAAej+L,EAASiC,GAEpCo3L,GAAkE,KAArCt4L,GAAQA,EAAK+3L,oBAEtCqC,GAAcX,GAAiBW,EAAWvE,YAYhD,SACA2O,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAApF,GAAAp3L,MAAA,KAAAlP,UAAA,CAZI2rM,CAAoB1sM,EAAK+kM,EAASj8L,EAAMzD,EAAOwB,EAASm7L,IAM1DpB,EAAiB5rK,IAAIh1B,EAAK,CAAE+kM,QAAAA,EAASj8L,KAAAA,IA76BI,SAiqC3C6jM,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAAtE,GAAAz4L,MAAA,KAAAlP,UAAA,CAnPEksM,CAAoBjtM,EAAK+kM,EAASj8L,EAAMzD,EAAOwB,EAASm7L,GApBvD,MANCuG,GACEvoM,EACA+kM,EACA9F,GAAuB,IAAK,CAAEplL,SAAU2B,IAwB7C,EAgyBCiuL,WAjxCF,WACE5E,KACA7D,EAAY,CAAEpB,aAAc,YAIG,eAA3B90L,EAAM20L,WAAW30L,QAOU,SAA3BA,EAAM20L,WAAW30L,MAUrB03L,EACEvC,GAAiBn1L,EAAM00L,cACvB10L,EAAM20L,WAAWr+L,SACjB,CAAEsiM,mBAAoB54L,EAAM20L,aAZ5B+C,EAAgB13L,EAAM00L,cAAe10L,EAAM1J,SAAU,CACnDoiM,gCAAgC,IAarC,EAwvCCxN,WAAa,SAAA71K,GAAD,OAAY6iG,EAAK1iG,QAAQ01K,WAAW71K,EAlBzC,EAmBP02K,eAAiB,SAAA12K,GAAD,OAAY6iG,EAAK1iG,QAAQu2K,eAAe12K,EAnBjD,EAoBPinL,WAAAA,GACAoD,cAAAA,GACAvtI,QAv/CF,WACMwhI,GACFA,IAEFlsB,EAAYjoK,QACZ+0L,GAA+BA,EAA4B/qB,QAC3DxpK,EAAMi1L,SAASn1K,SAAQ,SAAC44B,EAAGxjD,GAAJ,OAAYwqM,GAAcxqM,EAAjD,IACA8K,EAAMk1L,SAASp1K,SAAQ,SAAC44B,EAAGxjD,GAAJ,OAAY0hM,GAAc1hM,EAAjD,GACD,EAg/CCktM,WA7KF,SAAoBltM,EAAanE,GAC/B,IAAIyvM,EAAmBxgM,EAAMk1L,SAAS10L,IAAItL,IAAQ89L,GAMlD,OAJIgD,EAAiBx1L,IAAItL,KAASnE,GAChCilM,EAAiB9rK,IAAIh1B,EAAKnE,GAGrByvM,CACR,EAsKC5J,cAAAA,GACAyL,0BAA2B5M,EAC3B6M,yBAA0BvM,EAG1BwM,mBAjCF,SAA4BC,GAC1BjP,EAAqBiP,CACtB,GAkCMlO,CACR,CAOqCj9J,OAAO,YAmhB7C,SAASkgK,GACPliL,EACAo+K,EACA32L,EACA2lM,QAAiB,IAAjBA,IAAAA,GAAY,GAMZ,IAeIvL,EAfAl5L,EAAqB,kBAAPqX,EAAkBA,EAAKg1K,EAAWh1K,GAGpD,IAAKvY,IArBP,SACEA,GAEA,OAAe,MAARA,GAAgB,aAAcA,CACtC,CAiBe4lM,CAAuB5lM,GACnC,MAAO,CAAEkB,KAAAA,GAGX,GAAIlB,EAAK61L,aAAegQ,GAAc7lM,EAAK61L,YACzC,MAAO,CACL30L,KAAAA,EACA7D,MAAOg6L,GAAuB,IAAK,CAAE9+L,OAAQyH,EAAK61L,cAMtD,GAAI71L,EAAKg2L,SAAU,CACjB,IAAIH,EAAa71L,EAAK61L,YAAc,MAWpC,GAAI4D,IAVJW,EAAa,CACXvE,WAAYc,EAAOC,uBACdf,EAAWt6L,cACXs6L,EAAWx0L,cAChBy0L,WAAYgQ,GAAkB5kM,GAC9B60L,YACG/1L,GAAQA,EAAK+1L,aAAgB,oCAChCC,SAAUh2L,EAAKg2L,WAGeH,YAC9B,MAAO,CAAE30L,KAAAA,EAAMk5L,WAAAA,EAElB,CAGD,IAAIpM,EAAaJ,EAAU1sL,GACvBq2F,EAAewuG,GAA8B/lM,EAAKg2L,UAStD,OALI2P,GAAa3X,EAAWh1K,QAAUgtL,GAAmBhY,EAAWh1K,SAClEu+E,EAAa0uG,OAAO,QAAS,IAE/BjY,EAAWh1K,OAAX,IAAwBu+E,EAEjB,CAAEr2F,KAAMqsL,EAAWS,GAAaoM,WAAAA,EACxC,CAID,SAAS8L,GACPjnM,EACAknM,GAEA,IAAIC,EAAkBnnM,EACtB,GAAIknM,EAAY,CACd,IAAIr9L,EAAQ7J,EAAQuvC,WAAW,SAAA1xB,GAAD,OAAOA,EAAE8yK,MAAMtpL,KAAO6/L,CAAxC,IACRr9L,GAAS,IACXs9L,EAAkBnnM,EAAQR,MAAM,EAAGqK,GAEtC,CACD,OAAOs9L,CACR,CAED,SAASrH,GACPrmL,EACAxV,EACAjE,EACAm7L,EACA5gM,EACAg/L,EACAC,EACAC,EACAM,EACAkC,EACA9K,EACAoL,EACAX,GAEA,IAAImF,EAAenF,EACf/lM,OAAOq9B,OAAO0oK,GAAc,GAC5BW,EACA1mM,OAAOq9B,OAAOqpK,GAAmB,QACjC3kM,EAEAwvM,EAAa3tL,EAAQq2K,UAAU7rL,EAAM1J,UACrC8sM,EAAU5tL,EAAQq2K,UAAUv1L,GAE5B+sM,EAEF/N,GAEA6N,EAAWrxM,aAAesxM,EAAQtxM,YAElCqxM,EAAWrtL,SAAWstL,EAAQttL,OAG5BmtL,EAAatL,EAAe/lM,OAAO8wB,KAAKi1K,GAAc,QAAKhkM,EAG3D2vM,EAFkBN,GAA8BjnM,EAASknM,GAErB/nM,QAAO,SAACX,EAAOqL,GACrD,GAAIrL,EAAMmyL,MAAMtyK,KAEd,OAAO,EAET,GAA0B,MAAtB7f,EAAMmyL,MAAM+H,OACd,OAAO,EAIT,GAkFJ,SACE8O,EACAC,EACAjpM,GAEA,IAAIkpM,GAEDD,GAEDjpM,EAAMmyL,MAAMtpL,KAAOogM,EAAa9W,MAAMtpL,GAIpCsgM,OAAsD/vM,IAAtC4vM,EAAkBhpM,EAAMmyL,MAAMtpL,IAGlD,OAAOqgM,GAASC,CACjB,CAlGKC,CAAY3jM,EAAM+0L,WAAY/0L,EAAMjE,QAAQ6J,GAAQrL,IACpDg7L,EAAwBnG,MAAM,SAAAhsL,GAAD,OAAQA,IAAO7I,EAAMmyL,MAAMtpL,EAAxD,IAEA,OAAO,EAOT,IAAIwgM,EAAoB5jM,EAAMjE,QAAQ6J,GAClCi+L,EAAiBtpM,EAErB,OAAOupM,GAAuBvpM,EAAD/D,EAAC,CAC5B2sM,WAAAA,EACAY,cAAeH,EAAkBtmL,OACjC8lL,QAAAA,EACAY,WAAYH,EAAevmL,QACxB45K,EALwB,CAM3B4F,aAAAA,EACAuG,wBACEA,GACAY,GAAmBL,EAAmBC,SAKxCvI,EAA8C,GAmDlD,OAlDAxF,EAAiBh2K,SAAQ,SAAC/sB,EAAGmC,GAE3B,GAAK6G,EAAQqzL,MAAM,SAAAx1K,GAAD,OAAOA,EAAE8yK,MAAMtpL,KAAOrQ,EAAEknM,OAArC,IAAL,CAIA,IAAIiK,EAAiBlX,EAAYgL,EAAajlM,EAAEiL,KAAMkvL,GAItD,GAAKgX,EAAL,CAKA,IAAIC,EAAenK,GAAekK,EAAgBnxM,EAAEiL,MAEpD,GAAIw3L,EAAsBp0K,SAASlsB,GACjComM,EAAqB/oM,KAArBiE,EAAA,CACEtB,IAAAA,EACA6G,QAASmoM,EACT3pM,MAAO4pM,GACJpxM,SASgB+wM,GAAuBK,EAAD3tM,EAAC,CAC5C2sM,WAAAA,EACAY,cAAe/jM,EAAMjE,QAAQiE,EAAMjE,QAAQ3K,OAAS,GAAGksB,OACvD8lL,QAAAA,EACAY,WAAYjoM,EAAQA,EAAQ3K,OAAS,GAAGksB,QACrC45K,EALwC,CAM3C4F,aAAAA,EACAuG,wBAAAA,MAGA/H,EAAqB/oM,KAArBiE,EAAA,CACEtB,IAAAA,EACA6G,QAASmoM,EACT3pM,MAAO4pM,GACJpxM,GAhCN,MAFCuoM,EAAqB/oM,KAArBiE,EAAA,CAA4BtB,IAAAA,GAAQnC,EAApC,CAAuCgJ,QAAS,KAAMxB,MAAO,OAP9D,KA8CI,CAAC+oM,EAAmBhI,EAC5B,CAqBD,SAAS2I,GACPT,EACAjpM,GAEA,IAAI2b,EAAcstL,EAAa9W,MAAM1uL,KACrC,OAEEwlM,EAAaz0L,WAAaxU,EAAMwU,UAGhB,MAAfmH,GACCA,EAAYkqD,SAAS,MACrBojI,EAAalmL,OAAO,OAAS/iB,EAAM+iB,OAAO,IAE/C,CAED,SAASwmL,GACPM,EACA9yL,GAEA,GAAI8yL,EAAY1X,MAAM2X,iBAAkB,CACtC,IAAIC,EAAcF,EAAY1X,MAAM2X,iBAAiB/yL,GACrD,GAA2B,mBAAhBgzL,EACT,OAAOA,CAEV,CAED,OAAOhzL,EAAI+xL,uBACZ,CAED,SAKekB,GAAfC,EAAAC,EAAAC,GAAA,OAAAC,GAAAx/L,MAAA,KAAAlP,UAAA,UAAA0uM,KAsEC,OAtEDA,GAAAnoL,EAAAF,IAAAgC,MAAA,SAAAsmL,EACElY,EACAH,EACAE,GAHF,IAAAoY,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAA,OAAA5oL,IAAAuC,MAAA,SAAAsmL,GAAA,cAAAA,EAAA/yL,KAAA+yL,EAAAt/L,MAAA,UAKO6mL,EAAMtyK,KAAX,CAAA+qL,EAAAt/L,KAAA,eAAAs/L,EAAA5lL,OAAA,wBAAA4lL,EAAAt/L,KAAA,EAIsB6mL,EAAMtyK,OAA5B,OAAa,GAATyqL,EAASM,EAAA9lL,KAKRqtK,EAAMtyK,KAAX,CAAA+qL,EAAAt/L,KAAA,eAAAs/L,EAAA5lL,OAAA,iBAgBA,IAASylL,KAXT1a,EADIwa,EAAgBrY,EAASC,EAAMtpL,IACV,8BAUrB2hM,EAAoC,CAAC,EACXF,EACxBI,EACFH,EAAcE,GAQhBza,IANI2a,OACmBvxM,IAArBsxM,GAGsB,qBAAtBD,GAIA,UAAUF,EAAc1hM,GAA8B,4BAAA4hM,EAAtD,yGAE8BA,EAF9B,sBAMCE,GACA9Y,EAAmB9sK,IAAI0lL,KAExBD,EAAaC,GACXH,EAAUG,IAMhBpzM,OAAOuzI,OAAO2/D,EAAeC,GAK7BnzM,OAAOuzI,OAAO2/D,EAAe,CAI3BhY,iBAAkBP,EAAyB/1L,EAAA,GAAAsuM,IAC3C1qL,UAAMzmB,IALR,yBAAAwxM,EAAA3lL,OAAA,GAAAolL,EAAA,KAODD,GAAAx/L,MAAA,KAAAlP,UAAA,UAEcikM,GAAfkL,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAA,OAAAC,GAAA3gM,MAAA,KAAAlP,UAAA,CA8MA,SAAA6vM,KAJC,OAIDA,GAAAtpL,EAAAF,IAAAgC,MA9MA,SAAAynL,EACE7uM,EACA6K,EACAxH,EACAwB,EACA0wL,EACAF,EACAW,EACA8Y,EACAC,EACAC,GAVF,IAAAlkH,EAAA3vF,EAAAs4E,EAAAw7H,EAAA5tK,EAAAtJ,EAAA3gB,EAAAhY,EAAA8vM,EAAApV,EAAAqV,EAAAroM,EAAAmlM,EAAAn2L,EAAAs5L,EAAA3pM,EAAAg+E,EAAA4rH,EAAAC,EAAA,OAAAlqL,IAAAuC,MAAA,SAAA4nL,GAAA,cAAAA,EAAAr0L,KAAAq0L,EAAA5gM,MAAA,OA6BI,QAnBsB,IAHxBqnL,IAAAA,EAAW,UAGa,IAFxB8Y,IAAAA,GAA2B,QAEH,IADxBC,IAAAA,GAA0B,GAOtBE,EAAc,SAAA5tK,GAEhB,IAAI3gB,EACA8uL,EAAe,IAAIhvL,SAAQ,SAACghC,EAAG/Z,GAAJ,OAAW/mB,EAAS+mB,CAAhC,IAGnB,OAFAgsC,EAAW,kBAAM/yD,GAAjB,EACA7V,EAAQm2C,OAAOlkC,iBAAiB,QAAS22D,GAClCjzD,QAAQgnB,KAAK,CAClBnG,EAAQ,CAAEx2B,QAAAA,EAASub,OAAQ/iB,EAAM+iB,OAAQtoB,QAASkxM,IAClDQ,KARJD,EAAAr0L,KAAA,EAaMmmB,EAAUh+B,EAAMmyL,MAAMx1L,IAEtBqD,EAAMmyL,MAAMtyK,KAAhB,CAAAqsL,EAAA5gM,KAAA,aACM0yB,EAAJ,CAAAkuK,EAAA5gM,KAAA,gBAAA4gM,EAAA5gM,KAAA,GAEqB6R,QAAQgM,IAAI,CAC7ByiL,EAAW5tK,GACXgsK,GAAoBhqM,EAAMmyL,MAAOH,EAAqBE,KAFxD,QAAIx9J,EAAMw3K,EAAApnL,KAIVhtB,EAAS48B,EAAO,GAAhBw3K,EAAA5gM,KAAA,wBAAA4gM,EAAA5gM,KAAA,GAGM0+L,GAAoBhqM,EAAMmyL,MAAOH,EAAqBE,GAA5D,QAEA,KAAAl0J,EAAUh+B,EAAMmyL,MAAMx1L,IACtB,CAAAuvM,EAAA5gM,KAAA,gBAAA4gM,EAAA5gM,KAAA,GAIiBsgM,EAAW5tK,GAA1B,QAAAlmC,EAAMo0M,EAAApnL,KAAAonL,EAAA5gM,KAAG,GAAH,iBACY,WAAT3O,EAAJ,CAAAuvM,EAAA5gM,KAAA,eACCsuL,GAAuB,IAAK,CAChC9+L,OAAQ0M,EAAQ1M,OAChB0Z,SAAU,IAAI+P,IAAI/c,EAAQiL,KAAK+B,SAC/BkrL,QAAS1/L,EAAMmyL,MAAMtpL,KAHvB,eAAAqjM,EAAAlnL,OAAA,SAQO,CAAEroB,KAAM2yL,EAAWltL,KAAMA,UAAMhJ,IAAtC,QAAA8yM,EAAA5gM,KAAA,iBAIJ,OAAAykL,EACE/xJ,EADO,sBAEerhC,EAFf,mBAEsCqD,EAAMmyL,MAAMtpL,GAF3D,WAAAqjM,EAAA5gM,KAAA,GAKesgM,EAAW5tK,GAA1B,QAAAlmC,EAAMo0M,EAAApnL,KAAA,QAGRirK,OACa32L,IAAXtB,EACA,gBAAwB,WAAT6E,EAAoB,YAAc,YAAjD,eACMqD,EAAMmyL,MAAMtpL,GADlB,4CACgElM,EADhE,gDAFFuvM,EAAA5gM,KAAA,iBAAA4gM,EAAAr0L,KAAA,GAAAq0L,EAAAj8B,GAAAi8B,EAAA,SAOAzkH,EAAa6nG,EAAW1vL,MACxB9H,EAAMo0M,EAAAj8B,GAAN,QAIC,OAJDi8B,EAAAr0L,KAAA,GAEIu4D,GACF5oE,EAAQm2C,OAAO/gC,oBAAoB,QAASwzD,GAC7C87H,EAAA/pB,OAAA,gBAGCiqB,GAAWt0M,GAAf,CAAAo0M,EAAA5gM,KAAA,SAAwB,GAClByI,EAASjc,EAAOic,QAGhBkkL,GAAoBlzK,IAAIhR,GAA5B,CAAAm4L,EAAA5gM,KAAA,SAgDE,GA9CAykL,EADIh0L,EAAWjE,EAAOwrB,QAAQrd,IAAI,YAGhC,8EAIG0yL,GAAmB19L,KAAKc,GAuBjB0vM,IAIN7C,EAAa,IAAIrkL,IAAI/c,EAAQiL,KAC7BA,EAAM1W,EAAS0pB,WAAW,MAC1B,IAAIlB,IAAIqkL,EAAWt1L,SAAWvX,GAC9B,IAAIwoB,IAAIxoB,GACRgwM,EAA0D,MAAzCnZ,GAAcngL,EAAI+B,SAAUm+K,GAC7ClgL,EAAI8+K,SAAWqX,EAAWrX,QAAUwa,IACtChwM,EAAW0W,EAAI+B,SAAW/B,EAAI8I,OAAS9I,EAAI+I,QAhCzCqwL,EAAgBrqM,EAAQR,MAAM,EAAGQ,EAAQlB,QAAQN,GAAS,GAC1Dy2L,EAAiBH,GAA2BuV,GAAehrM,KAC5D,SAAAb,GAAD,OAAWA,EAAMo1L,YADE,IAQrBrF,EACED,EANEgc,EAAmBvV,GACrBx6L,EACA06L,EACA,IAAIlyK,IAAI/c,EAAQiL,KAAK+B,WAImB,wCAAAzY,GAItC42L,IACElvL,EAAOqoM,EAAiBt3L,SAC5Bs3L,EAAiBt3L,SACN,MAAT/Q,EAAekvL,EAAWgB,GAAU,CAAChB,EAAUlvL,KAGnD1H,EAAW+zL,EAAWgc,KAmBpBL,EAAJ,CAAAS,EAAA5gM,KAAA,SACE,MAAAxT,EAAOwrB,QAAQqM,IAAI,WAAY5zB,GACzBjE,EAAN,eAAAo0M,EAAAlnL,OAAA,SAGK,CACLroB,KAAM2yL,EAAW6R,SACjBptL,OAAAA,EACAhY,SAAAA,EACAqoM,WAAyD,OAA7CtsM,EAAOwrB,QAAQrd,IAAI,wBAJjC,YAWEylM,EAAJ,CAAAQ,EAAA5gM,KAAA,cAEQ,CACJ3O,KAAM8qF,GAAc6nG,EAAWltL,KAC/Bka,SAAUxkB,GAFZ,QASF,KAFIsoF,EAActoF,EAAOwrB,QAAQrd,IAAI,mBAGlB,wBAAwBhL,KAAKmlF,GAAhD,CAAA8rH,EAAA5gM,KAAA,gBAAA4gM,EAAA5gM,KAAA,GACexT,EAAOqrB,OAApB,QAAA/gB,EAAI8pM,EAAApnL,KAAAonL,EAAA5gM,KAAG,GAAH,qBAAA4gM,EAAA5gM,KAAG,GAEMxT,EAAOmiB,OAApB,QAAA7X,EAAI8pM,EAAApnL,KAAA,WAGF2iE,IAAe6nG,EAAW1vL,MAA9B,CAAAssM,EAAA5gM,KAAA,gBAAA4gM,EAAAlnL,OAAA,SACS,CACLroB,KAAM8qF,EACN7nF,MAAO,IAAI83L,GAAc3jL,EAAQjc,EAAO4+D,WAAYt0D,GACpDkhB,QAASxrB,EAAOwrB,UAHlB,eAAA4oL,EAAAlnL,OAAA,SAOK,CACLroB,KAAM2yL,EAAWltL,KACjBA,KAAAA,EACA8gB,WAAYprB,EAAOic,OACnBuP,QAASxrB,EAAOwrB,UAJlB,WAQEmkE,IAAe6nG,EAAW1vL,MAA9B,CAAAssM,EAAA5gM,KAAA,gBAAA4gM,EAAAlnL,OAAA,SACS,CAAEroB,KAAM8qF,EAAY7nF,MAAO9H,IAAlC,YAGEu0M,GAAev0M,GAAnB,CAAAo0M,EAAA5gM,KAAA,gBAAA4gM,EAAAlnL,OAAA,SACS,CACLroB,KAAM2yL,EAAWz6I,SACjB+sJ,aAAc9pM,EACdorB,WAAU,OAAA8oL,EAAEl0M,EAAO6lH,WAAT,EAAEquF,EAAaj4L,OACzBuP,SAAsB,OAAb2oL,EAAAn0M,EAAO6lH,WAAM,EAAAsuF,EAAA3oL,UAAW,IAAIuB,QAAQ/sB,EAAO6lH,KAAKr6F,WAJ3D,eAAA4oL,EAAAlnL,OAAA,SAQK,CAAEroB,KAAM2yL,EAAWltL,KAAMA,KAAMtK,IAAtC,yBAAAo0M,EAAAjnL,OAAA,GAAAumL,EAAA,yBACDD,GAAA3gM,MAAA,KAAAlP,UAAA,CAKD,SAAS+iM,GACPxjL,EACAlf,EACA4hD,EACAg/I,GAEA,IAAIlqL,EAAMwI,EAAQq2K,UAAU+W,GAAkBtsM,IAAWxE,WACrDomH,EAAoB,CAAEhgE,OAAAA,GAE1B,GAAIg/I,GAAcX,GAAiBW,EAAWvE,YAAa,CACzD,IAAMA,EAAsCuE,EAAtCvE,WAAYE,EAA0BqE,EAA1BrE,YAAaC,EAAaoE,EAAbpE,SAI/B56E,EAAK7iH,OAASs9L,EAAWt6L,cACzB6/G,EAAKhrG,KACa,sCAAhB2lL,EACIgQ,GAA8B/P,GAC9BA,CACP,CAGD,OAAO,IAAIsG,QAAQpsL,EAAKkrG,EACzB,CAED,SAAS2qF,GAA8B/P,GACrC,IAEA+T,EAFIxyG,EAAe,IAAIyyG,gBAAvBC,EAAArqL,EAEyBo2K,EAAS90K,WAAlC,QAAA+oL,EAAAxxM,MAAAsxM,EAAAE,EAAAjvM,KAAAmmB,MAA6C,KAAA+oL,EAAAvqL,EAAAoqL,EAAAj0M,MAAA,GAAnCsC,EAAD8xM,EAAC,GAAKp0M,EAANo0M,EAAC,GAER3yG,EAAa0uG,OAAO7tM,EAAKtC,aAAiBsxD,KAAOtxD,EAAMkD,KAAOlD,EAC/D,QAAA8K,GAAAqpM,EAAA/qM,EAAA0B,EAAA,SAAAqpM,EAAAh0M,GAAA,CAED,OAAOshG,CACR,CAED,SAAS4yG,GACPlrM,EACAs/L,EACA58D,EACAk5D,EACA5B,GAQA,IAEIt4K,EAFAs3K,EAAwC,CAAC,EACzCxyL,EAAuC,KAEvC2kM,GAAa,EACbC,EAAyC,CAAC,EA0E9C,OAvEA1oE,EAAQ3+G,SAAQ,SAACztB,EAAQuT,GACvB,IAAIxC,EAAKi4L,EAAcz1L,GAAO8mL,MAAMtpL,GAKpC,GAJAknL,GACG6P,GAAiB9nM,GAClB,uDAEEgoM,GAAchoM,GAAS,CAGzB,IAAIynM,EAAgBb,GAAoBl9L,EAASqH,GAC7CjJ,EAAQ9H,EAAO8H,MAIfw9L,IACFx9L,EAAQvI,OAAOq9B,OAAO0oK,GAAc,GACpCA,OAAehkM,GAMqB,OAHtC4O,EAASA,GAAU,CAAC,GAGTu3L,EAAcpN,MAAMtpL,MAC7Bb,EAAOu3L,EAAcpN,MAAMtpL,IAAMjJ,GAInC46L,EAAW3xL,QAAMzP,EAIZuzM,IACHA,GAAa,EACbzpL,EAAa00K,GAAqB9/L,EAAO8H,OACrC9H,EAAO8H,MAAMmU,OACb,KAEFjc,EAAOwrB,UACTspL,EAAc/jM,GAAM/Q,EAAOwrB,QAE9B,MACKy8K,GAAiBjoM,IACnB0jM,EAAgB7rK,IAAI9mB,EAAI/Q,EAAO8pM,cAC/BpH,EAAW3xL,GAAM/Q,EAAO8pM,aAAax/L,MAErCo4L,EAAW3xL,GAAM/Q,EAAOsK,KAMH,MAArBtK,EAAOorB,YACe,MAAtBprB,EAAOorB,YACNypL,IAEDzpL,EAAaprB,EAAOorB,YAElBprB,EAAOwrB,UACTspL,EAAc/jM,GAAM/Q,EAAOwrB,QAGhC,IAKG85K,IACFp1L,EAASo1L,EACT5C,EAAWnjM,OAAO8wB,KAAKi1K,GAAc,SAAMhkM,GAGtC,CACLohM,WAAAA,EACAxyL,OAAAA,EACAkb,WAAYA,GAAc,IAC1B0pL,cAAAA,EAEH,CAED,SAASjL,GACPl8L,EACAjE,EACAs/L,EACA58D,EACAk5D,EACA2D,EACAG,EACA1F,GAcA,IATA,IAAAqR,EAA6BH,GAC3BlrM,EACAs/L,EACA58D,EACAk5D,EACA5B,GALIhB,EAAFqS,EAAErS,WAAYxyL,EAAA6kM,EAAA7kM,OASTqD,EAAQ,EAAGA,EAAQ01L,EAAqBlqM,OAAQwU,IAAS,CAChE,IAAAyhM,EAAqB/L,EAAqB11L,GAApC1Q,EAAFmyM,EAAEnyM,IAAKqF,EAAA8sM,EAAA9sM,MACX+vL,OACqB32L,IAAnB8nM,QAA0D9nM,IAA1B8nM,EAAe71L,GAC/C,6CAEF,IAAIvT,EAASopM,EAAe71L,GAG5B,GAAIy0L,GAAchoM,GAAS,CACzB,IAAIynM,EAAgBb,GAAoBj5L,EAAMjE,QAAP,MAAgBxB,OAAhB,EAAgBA,EAAOmyL,MAAMtpL,IAC9Db,GAAUA,EAAOu3L,EAAcpN,MAAMtpL,MACzCb,EAAM/L,EAAA,GACD+L,EADCmtC,EAAA,GAEHoqJ,EAAcpN,MAAMtpL,GAAK/Q,EAAO8H,SAGrC6F,EAAMi1L,SAAS7oH,OAAOl3E,EACvB,MAAM,GAAIilM,GAAiB9nM,GAG1Bi4L,GAAU,EAAO,gDACZ,GAAIgQ,GAAiBjoM,GAG1Bi4L,GAAU,EAAO,uCACZ,CACL,IAAIiT,EAAqC,CACvCv9L,MAAO,OACPrD,KAAMtK,EAAOsK,KACbg2L,gBAAYh/L,EACZi/L,gBAAYj/L,EACZk/L,iBAAal/L,EACbm/L,cAAUn/L,EACV,6BAA6B,GAE/BqM,EAAMi1L,SAAS/qK,IAAIh1B,EAAKqoM,EACzB,CACF,CAED,MAAO,CAAExI,WAAAA,EAAYxyL,OAAAA,EACtB,CAED,SAASm0L,GACP3B,EACAuS,EACAvrM,EACAwG,GAEA,IACAglM,EADIC,EAAwBhxM,EAAA,GAAA8wM,GAA5BG,EAAA/qL,EACkB3gB,GAAlB,QAAA0rM,EAAAlyM,MAAAgyM,EAAAE,EAAA3vM,KAAAmmB,MAA2B,KAAlB1jB,EAATgtM,EAAA30M,MACMwQ,EAAK7I,EAAMmyL,MAAMtpL,GAerB,GAdIkkM,EAAch1M,eAAe8Q,QACLzP,IAAtB2zM,EAAclkM,KAChBokM,EAAiBpkM,GAAMkkM,EAAclkM,SAMXzP,IAAnBohM,EAAW3xL,IAAqB7I,EAAMmyL,MAAM+H,SAGrD+S,EAAiBpkM,GAAM2xL,EAAW3xL,IAGhCb,GAAUA,EAAOjQ,eAAe8Q,GAElC,KAEH,QAAA1F,GAAA+pM,EAAAzrM,EAAA0B,EAAA,SAAA+pM,EAAA10M,GAAA,CACD,OAAOy0M,CACR,CAKD,SAASvO,GACPl9L,EACAk+L,GAEA,IAAIyN,EAAkBzN,EAClBl+L,EAAQR,MAAM,EAAGQ,EAAQuvC,WAAW,SAAA1xB,GAAD,OAAOA,EAAE8yK,MAAMtpL,KAAO62L,CAAxC,IAAmD,GAD3C5qJ,EAErBtzC,GACR,OACE2rM,EAAgBjgB,UAAU9pL,MAAM,SAAAic,GAAD,OAAoC,IAA7BA,EAAE8yK,MAAMI,gBAA9C,KACA/wL,EAAQ,EAEX,CAED,SAASs4L,GAAuB/H,GAK9B,IAAII,EAAQJ,EAAO3uL,MAAM,SAAAghC,GAAD,OAAOA,EAAE/4B,QAAU+4B,EAAE3gC,MAAmB,MAAX2gC,EAAE3gC,IAA3C,KAA4D,CACtEoF,GAAI,wBAGN,MAAO,CACLrH,QAAS,CACP,CACEuhB,OAAQ,CAAC,EACTvO,SAAU,GACV4gL,aAAc,GACdjD,MAAAA,IAGJA,MAAAA,EAEH,CAED,SAASyH,GACP7lL,EAWMq5L,GAAA,IAAAxrB,OAAA,IAAAwrB,EAAF,CAAC,EAACA,EATJ54L,EADFotK,EACEptK,SACAkrL,EAFF9d,EAEE8d,QACA5kM,EAHF8mL,EAGE9mL,OACA6B,EAAAilL,EAAAjlL,KAQE+5D,EAAa,uBACb5vD,EAAe,kCA8BnB,OA5Be,MAAXiN,GACF2iD,EAAa,cACT57D,GAAU0Z,GAAYkrL,EACxB54L,EACE,cAAchM,EAAd,gBAAoC0Z,EAApC,+CAC2CkrL,EAD3C,+CAGgB,iBAAT/iM,IACTmK,EAAe,wCAEG,MAAXiN,GACT2iD,EAAa,YACb5vD,EAAyB,UAAA44L,EAAgC,yBAAAlrL,EAAzD,KACoB,MAAXT,GACT2iD,EAAa,YACb5vD,EAAe,yBAAyB0N,EAAxC,KACoB,MAAXT,IACT2iD,EAAa,qBACT57D,GAAU0Z,GAAYkrL,EACxB54L,EACE,cAAchM,EAAOgD,cAA6B,gBAAA0W,EAAlD,gDAC4CkrL,EAD5C,+CAGO5kM,IACTgM,EAA0C,2BAAAhM,EAAOgD,cAAjD,MAIG,IAAI45L,GACT3jL,GAAU,IACV2iD,EACA,IAAIv2D,MAAM2G,IACV,EAEH,CAGD,SAAS46L,GAAax9D,GACpB,IAAK,IAAIvtI,EAAIutI,EAAQrtI,OAAS,EAAGF,GAAK,EAAGA,IAAK,CAC5C,IAAImB,EAASosI,EAAQvtI,GACrB,GAAIipM,GAAiB9nM,GACnB,OAAOA,CAEV,CACF,CAED,SAASuwM,GAAkB5kM,GAEzB,OAAOqsL,EAAU7zL,EAAC,CAAC,EADc,kBAATwH,EAAoB0sL,EAAU1sL,GAAQA,EAC7C,CAAkB+X,KAAM,KAC1C,CAED,SAAS+iL,GAAiBljL,EAAa1L,GACrC,OACE0L,EAAE7G,WAAa7E,EAAE6E,UAAY6G,EAAEE,SAAW5L,EAAE4L,QAAUF,EAAEG,OAAS7L,EAAE6L,IAEtE,CAED,SAASukL,GAAiBjoM,GACxB,OAAOA,EAAO6E,OAAS2yL,EAAWz6I,QACnC,CAED,SAASirJ,GAAchoM,GACrB,OAAOA,EAAO6E,OAAS2yL,EAAW1vL,KACnC,CAED,SAASggM,GAAiB9nM,GACxB,OAAQA,GAAUA,EAAO6E,QAAU2yL,EAAW6R,QAC/C,CAEK,SAAUkL,GAAeh0M,GAC7B,IAAIw8C,EAAyBx8C,EAC7B,OACEw8C,GACoB,kBAAbA,GACkB,kBAAlBA,EAASzyC,MACc,oBAAvByyC,EAASqgI,WACW,oBAApBrgI,EAASyxJ,QACgB,oBAAzBzxJ,EAASw4J,WAEnB,CAED,SAASjB,GAAW/zM,GAClB,OACW,MAATA,GACwB,kBAAjBA,EAAM0b,QACe,kBAArB1b,EAAMq+D,YACY,kBAAlBr+D,EAAMirB,SACS,qBAAfjrB,EAAMsa,IAEhB,CAoBD,SAASy1L,GAActtM,GACrB,OAAOk9L,GAAoBjzK,IAAIjqB,EAAO8I,cACvC,CAED,SAASo4L,GACPlhM,GAEA,OAAOg9L,GAAqB/yK,IAAIjqB,EAAO8I,cACxC,UAEcohM,GAAfsI,EAAAC,EAAAC,EAAAC,EAAAC,EAAAC,GAAA,OAAAC,GAAAhjM,MAAA,KAAAlP,UAAA,UAAAkyM,KAqCC,OArCDA,GAAA3rL,EAAAF,IAAAgC,MAAA,SAAA8pL,EACEhJ,EACA/D,EACA58D,EACAvmF,EACAuqJ,EACAc,GANF,IAAAluJ,EAAAzvC,EAAA,OAAA0W,IAAAuC,MAAA,SAAAwpL,GAAA,cAAAA,EAAAj2L,KAAAi2L,EAAAxiM,MAAA,OAAAwvC,EAAA/4B,IAAAgC,MAAA,SAAA+2B,EAAAzvC,GAAA,IAAAvT,EAAAkI,EAAAipM,EAAA8E,EAAA,OAAAhsL,IAAAuC,MAAA,SAAA0pL,GAAA,cAAAA,EAAAn2L,KAAAm2L,EAAA1iM,MAAA,OAaI,GAJIxT,EAASosI,EAAQ74H,GACjBrL,EAAQ8gM,EAAcz1L,GAI1B,CAAA2iM,EAAA1iM,KAAA,eAAA0iM,EAAAhpL,OAAA,4BAOA,GAHIikL,EAAepE,EAAezhM,MAC/B,SAAAic,GAAD,OAAOA,EAAE8yK,MAAMtpL,KAAO7I,EAAOmyL,MAAMtpL,EADlB,IAGfklM,EACc,MAAhB9E,IACCS,GAAmBT,EAAcjpM,SAC2B5G,KAA5D4vM,GAAqBA,EAAkBhpM,EAAMmyL,MAAMtpL,MAElDk3L,GAAiBjoM,KAAYowM,IAAa6F,EAA9C,CAAAC,EAAA1iM,KAAA,eAAA0iM,EAAA1iM,KAAA,EAIQk4L,GAAoB1rM,EAAQ6lD,EAAQuqJ,GAAWt8L,MAAM,SAAA9T,GACrDA,IACFosI,EAAQ74H,GAASvT,GAAUosI,EAAQ74H,GAEtC,IAJD,wBAAA2iM,EAAA/oL,OAAA,GAAA61B,EAAA,IAtBKzvC,EAAQ,EAAjB,YAAoBA,EAAQ64H,EAAQrtI,QAApC,CAAAi3M,EAAAxiM,KAAA,gBAAAwiM,EAAA7rB,cAAAnnI,EAAAzvC,GAAA,+BAAAyiM,EAAA79B,GAAA,CAAA69B,EAAAxiM,KAAA,eAAAwiM,EAAA9oL,OAAA,qBAA4C3Z,IAA5CyiM,EAAAxiM,KAAA,iCAAAwiM,EAAA7oL,OAAA,GAAA4oL,EAAA,KA6BDD,GAAAhjM,MAAA,KAAAlP,UAAA,UAEc8nM,GAAfyK,EAAAC,EAAAC,GAAA,OAAAC,GAAAxjM,MAAA,KAAAlP,UAAA,UAAA0yM,KA6BC,OA7BDA,GAAAnsL,EAAAF,IAAAgC,MAAA,SAAAsqL,EACEv2M,EACA6lD,EACAja,GAHF,OAAA3hB,IAAAuC,MAAA,SAAAgqL,GAAA,cAAAA,EAAAz2L,KAAAy2L,EAAAhjM,MAAA,OAGgB,gBAAdo4B,IAAAA,GAAS,GAAK4qK,EAAAhjM,KAAA,EAEMxT,EAAO8pM,aAAayL,YAAY1vJ,GAApD,OAAW,IAAA2wJ,EAAAxpL,KACX,CAAAwpL,EAAAhjM,KAAA,eAAAgjM,EAAAtpL,OAAA,qBAII0e,EAAJ,CAAA4qK,EAAAhjM,KAAA,gBAAAgjM,EAAAz2L,KAAA,EAAAy2L,EAAAtpL,OAAA,SAEW,CACLroB,KAAM2yL,EAAWltL,KACjBA,KAAMtK,EAAO8pM,aAAa2M,gBAF5B,eAAAD,EAAAz2L,KAAA,GAAAy2L,EAAAr+B,GAAAq+B,EAAA,SAAAA,EAAAtpL,OAAA,SAMO,CACLroB,KAAM2yL,EAAW1vL,MACjBA,MAAK0uM,EAAAr+B,KAFP,eAAAq+B,EAAAtpL,OAAA,SAOG,CACLroB,KAAM2yL,EAAWltL,KACjBA,KAAMtK,EAAO8pM,aAAax/L,OAF5B,yBAAAksM,EAAArpL,OAAA,GAAAopL,EAAA,oBAIDzjM,MAAA,KAAAlP,UAAA,CAED,SAAS6sM,GAAmBhtL,GAC1B,OAAO,IAAIgxL,gBAAgBhxL,GAAQizL,OAAO,SAAS3Z,MAAM,SAAAp2L,GAAD,MAAa,KAANA,CAAxD,GACR,CAID,SAAS+nM,GACPxmM,EACAw6L,GAEA,IAAMrI,EAA4BnyL,EAA5BmyL,MAAO39K,EAAqBxU,EAArBwU,SAAUuO,EAAW/iB,EAAX+iB,OACvB,MAAO,CACLla,GAAIspL,EAAMtpL,GACV2L,SAAAA,EACAuO,OAAAA,EACA3gB,KAAMo4L,EAAWrI,EAAMtpL,IACvB0kL,OAAQ4E,EAAM5E,OAEjB,CAED,SAASkS,GACPj+L,EACAzF,GAEA,IAAIwf,EACkB,kBAAbxf,EAAwBo0L,EAAUp0L,GAAUwf,OAASxf,EAASwf,OACvE,GACE/Z,EAAQA,EAAQ3K,OAAS,GAAGs7L,MAAM9mL,OAClCk9L,GAAmBhtL,GAAU,IAG7B,OAAO/Z,EAAQA,EAAQ3K,OAAS,GAIlC,IAAI43M,EAAcnY,GAA2B90L,GAC7C,OAAOitM,EAAYA,EAAY53M,OAAS,EACzC,CC55HD,IAAMwhJ,GACiB,oBAAdhhJ,OAAOghJ,GAAoBhhJ,OAAOghJ,GAP3C,SAAoBnhJ,EAAQ8vC,GAC1B,OACG9vC,IAAM8vC,IAAY,IAAN9vC,GAAW,EAAIA,IAAM,EAAI8vC,IAAQ9vC,IAAMA,GAAK8vC,IAAMA,CAElE,EAOO41H,GAAwDh9I,EAAAA,SAA9Cy8I,GAA8Cz8I,EAAAA,UAAnC48I,GAAmC58I,EAAAA,gBAAlBi9I,GAAkBj9I,EAAAA,cAsHhE,SAAS8uL,GAAuBC,GAC9B,IAAMC,EAAoBD,EAAKv0C,YACzBy0C,EAAYF,EAAKt2M,MACvB,IACE,IAAMy2M,EAAYF,IAClB,OAAQv2D,GAAGw2D,EAAWC,GACtB,MAAOlvM,GACP,OAAO,CACR,CACF,CClImB,qBAAX9D,QACoB,qBAApBA,OAAO2Z,UACP3Z,OAAO2Z,SAAS6F,cAHzB,IAQa2hJ,GAEmCr9I,EAAtBq9I,qBC0Cb8xC,GACXnvL,EAAAA,cAAoD,MAK/C,IAAMovL,GAAyBpvL,EAAAA,cAEpC,MAKK,IAAMqvL,GAAervL,EAAAA,cAA2C,MAsChE,IAAMsvL,GAAoBtvL,EAAAA,cAC/B,MAYK,IAAMuvL,GAAkBvvL,EAAAA,cAC7B,UAYWwvL,GAAexvL,EAAAA,cAAwC,CAClEyvL,OAAQ,KACR7tM,QAAS,KAOJ,IAAM8tM,GAAoB1vL,EAAAA,cAAyB,6OC3EnD,SAAS2vL,KACd,OAA4C,MAArC3vL,EAAAA,WAAiBuvL,GACzB,CAYM,SAASK,KAQd,OANED,MADFE,GAAA,GAOO7vL,EAAAA,WAAiBuvL,IAAiBpzM,QAC1C,CAmDM,SAAS2zM,KAEZH,MADFE,GAAA,GAOA,IAAAE,EAA8B/vL,EAAAA,WAAiBsvL,IAAzCvc,EAAFgd,EAAEhd,SAAUhmL,EAAAgjM,EAAAhjM,UACVnL,EAAYoe,EAAAA,WAAiBwvL,IAA7B5tM,QACUk1L,EAAqB8Y,KAA/Bh7L,SAEFo7L,EAAqBntM,KAAKC,UAC5BmtM,GAA2BruM,GAASX,KAAK,SAAAb,GAAD,OAAWA,EAAMo1L,YAAzD,KAGE0a,EAAYlwL,EAAAA,QAAa,GAC7BA,EAAAA,WAAgB,WACdkwL,EAAU92K,SAAU,KAGtB,IAAIujK,EAA6B38K,EAAAA,aAC/B,SAAC9E,EAAiBoC,GAOhB,QAPkD,IAAlCA,IAAAA,EAA2B,CAAC,GAOvC4yL,EAAU92K,QAEf,GAAkB,kBAAPle,EAAX,CAKA,IAAIrX,EAAO8yL,GACTz7K,EACArY,KAAK9C,MAAMiwM,GACXlZ,EACqB,SAArBx5K,EAAQqoK,UAOO,MAAboN,IACFlvL,EAAK+Q,SACe,MAAlB/Q,EAAK+Q,SACDm+K,EACAgB,GAAU,CAAChB,EAAUlvL,EAAK+Q,aAG/B0I,EAAQzc,QAAUkM,EAAUlM,QAAUkM,EAAU3U,MACjDyL,EACAyZ,EAAQzX,MACRyX,EAvBD,MAFCvQ,EAAUilL,GAAG92K,KA4BjB,CAAC63K,EAAUhmL,EAAWijM,EAAoBlZ,IAG5C,OAAO6F,CACR,CAED,IAAMwT,GAAgBnwL,EAAAA,cAA6B,MAgD5C,SAASowL,GACdl1L,EAEM6vH,GAAA,IADJ46C,QACI,IAAA56C,EAD6C,CAAC,EAC9CA,GADJ46C,SAEI/jL,EAAYoe,EAAAA,WAAiBwvL,IAA7B5tM,QACUk1L,EAAqB8Y,KAA/Bh7L,SAEFo7L,EAAqBntM,KAAKC,UAC5BmtM,GAA2BruM,GAASX,KAAK,SAAAb,GAAD,OAAWA,EAAMo1L,YAAzD,KAGF,OAAOx1K,EAAAA,SACL,kBACE22K,GACEz7K,EACArY,KAAK9C,MAAMiwM,GACXlZ,EACa,SAAbnR,EANC,GAQL,CAACzqK,EAAI80L,EAAoBlZ,EAAkBnR,GAE9C,CAoKD,SAAS0qB,KACP,IAAIrwM,EAAQswM,KACRj3M,EAAU2+L,GAAqBh4L,GAC5BA,EAAMmU,OAAU,IAAAnU,EAAM82D,WACzB92D,aAAiBO,MACjBP,EAAM3G,QACNwJ,KAAKC,UAAU9C,GACfG,EAAQH,aAAiBO,MAAQP,EAAMG,MAAQ,KAC/CowM,EAAY,yBACZC,EAAY,CAAEC,QAAS,SAAUC,gBAAiBH,GAkBtD,OACEvwL,EAAAA,cAAAA,EAAAA,SAAA,KACEA,EAAAA,cAAA,2CACAA,EAAAA,cAAA,MAAImY,MAAO,CAAEw4K,UAAW,WAAat3M,GACpC8G,EAAQ6f,EAAAA,cAAA,OAAKmY,MAAOq4K,GAAYrwM,GAAe,KAnBtC,KAuBf,KA8LIywM,GAKAC,GArLQC,GAAN,SAAAvwL,GAAAmC,EAAAouL,EAAAvwL,GAAA,IAAAyC,EAAAL,EAAAmuL,GAIL,SAAAA,EAAYryM,GAAiC,IAAAwQ,EAE3C,OAF2CwT,EAAA,KAAAquL,IAC3C7hM,EAAA+T,EAAAprB,KAAA,KAAM6G,IACDoH,MAAQ,CACX1J,SAAUsC,EAAMtC,SAChB6D,MAAOvB,EAAMuB,OAFfiP,CAID,CAiCA,OAjCAuT,EAAAsuL,EAAA,EAAA/1M,IAAA,oBAAAtC,MAmCD,SAAkBuH,EAAY+wM,GAC5Bz0M,QAAQ0D,MACN,wDACAA,EACA+wM,EAEH,IAAAh2M,IAAA,SAAAtC,MAED,WACE,OAAOyE,KAAK2I,MAAM7F,MAChBggB,EAAAA,cAACwvL,GAAatzB,SAAd,CAAuBzjL,MAAOyE,KAAKuB,MAAMuyM,cACvChxL,EAAAA,cAAC0vL,GAAkBxzB,SAAnB,CACEzjL,MAAOyE,KAAK2I,MAAM7F,MAClBkhB,SAAUhkB,KAAKuB,MAAM8L,aAIzBrN,KAAKuB,MAAMyiB,QAEd,MAAAnmB,IAAA,2BAAAtC,MApD8B,SAACuH,GAC9B,MAAO,CAAEA,MAAOA,EACjB,IAAAjF,IAAA,2BAAAtC,MAE8B,SAC7BgG,EACAoH,GAUA,OAAIA,EAAM1J,WAAasC,EAAMtC,SACpB,CACL6D,MAAOvB,EAAMuB,MACb7D,SAAUsC,EAAMtC,UAQb,CACL6D,MAAOvB,EAAMuB,OAAS6F,EAAM7F,MAC5B7D,SAAU0J,EAAM1J,SAEnB,KAAA20M,CAAA,CA3CI,CAAkC9wL,EAAAA,WAyEzC,SAASixL,GAAqE/rM,GAAA,IAArD8rM,EAAqD9rM,EAArD8rM,aAAc5wM,EAAuC8E,EAAvC9E,MAAO8gB,EAAgChc,EAAhCgc,SACxCgwL,EAAoBlxL,EAAAA,WAAiBmvL,IAazC,OARE+B,GACAA,EAAkBC,QAClBD,EAAkBE,gBACjBhxM,EAAMmyL,MAAM8e,cAAgBjxM,EAAMmyL,MAAMryK,iBAEzCgxL,EAAkBE,cAAcE,2BAA6BlxM,EAAMmyL,MAAMtpL,IAIzE+W,EAAAA,cAACwvL,GAAatzB,SAAd,CAAuBzjL,MAAOu4M,GAC3B9vL,EAGN,CAEM,SAASqwL,GACd3vM,EACA4vM,EACAC,GAEA,QAD2B,IAF3BD,IAAAA,EAA8B,IAGf,MAAX5vM,EAAiB,CACnB,SAAI6vM,IAAAA,EAAiBrpM,OAKnB,OAAO,KAFPxG,EAAU6vM,EAAgB7vM,OAI7B,CAED,IAAI8vM,EAAkB9vM,EAGlBwG,EAAS,MAAAqpM,OAAA,EAAAA,EAAiBrpM,OAC9B,GAAc,MAAVA,EAAgB,CAClB,IAAIupM,EAAaD,EAAgBvgK,WAC9B,SAAA1xB,GAAD,OAAOA,EAAE8yK,MAAMtpL,KAAM,MAAAb,OAAA,EAAAA,EAASqX,EAAE8yK,MAAMtpL,IADvB,IAIf0oM,GAAc,GADhB9B,GAAA,GAIA6B,EAAkBA,EAAgBtwM,MAChC,EACAoM,KAAKlV,IAAIo5M,EAAgBz6M,OAAQ06M,EAAa,GAEjD,CAED,OAAOD,EAAgBE,aAAY,SAACnC,EAAQrvM,EAAOqL,GACjD,IAAIzL,EAAQI,EAAMmyL,MAAMtpL,GAAZ,MAAiBb,OAAjB,EAAiBA,EAAShI,EAAMmyL,MAAMtpL,IAAM,KAEpDooM,EAAuC,KACvCI,IAEAJ,EADEjxM,EAAMmyL,MAAMryK,cACCF,EAAAA,cAAC5f,EAAMmyL,MAAMryK,cAA5B,MACS9f,EAAMmyL,MAAM8e,aACNjxM,EAAMmyL,MAAM8e,aAEZrxL,EAAAA,cAACqwL,GAAhB,OAGJ,IAAIzuM,EAAU4vM,EAAcp6M,OAAOs6M,EAAgBtwM,MAAM,EAAGqK,EAAQ,IAChEomM,EAAc,WAChB,IAAI3wL,EAA4BuuL,EAQhC,OAPIzvM,EACFkhB,EAAWmwL,EACFjxM,EAAMmyL,MAAMpxK,UACrBD,EAAWlB,EAAAA,cAAC5f,EAAMmyL,MAAMpxK,UAAxB,MACS/gB,EAAMmyL,MAAMnoD,UACrBlpH,EAAW9gB,EAAMmyL,MAAMnoD,SAGvBpqH,EAAAA,cAACixL,GAAD,CACE7wM,MAAOA,EACP4wM,aAAc,CAAEvB,OAAAA,EAAQ7tM,QAAAA,GACxBsf,SAAUA,GAGf,EAID,OAAOuwL,IACJrxM,EAAMmyL,MAAMryK,eAAiB9f,EAAMmyL,MAAM8e,cAA0B,IAAV5lM,GAC1DuU,EAAAA,cAAC8wL,GAAD,CACE30M,SAAUs1M,EAAgBt1M,SAC1BoO,UAAW8mM,EACXrxM,MAAOA,EACPkhB,SAAU2wL,IACVb,aAAc,CAAEvB,OAAQ,KAAM7tM,QAAAA,KAGhCiwM,MAED,KACJ,CAwBD,SAASC,GAAqBC,GAC5B,IAAIC,EAAMhyL,EAAAA,WAAiBmvL,IAE3B,OADU6C,GAAVnC,GAAA,GACOmC,CACR,CAED,SAASC,GAAmBF,GAC1B,IAAIlsM,EAAQma,EAAAA,WAAiBovL,IAE7B,OADUvpM,GAAVgqM,GAAA,GACOhqM,CACR,CAQD,SAASqsM,GAAkBH,GACzB,IAAIxf,EAPN,SAAyBwf,GACvB,IAAIxf,EAAQvyK,EAAAA,WAAiBwvL,IAE7B,OADUjd,GAAVsd,GAAA,GACOtd,CACR,CAGa4f,GACRC,EAAY7f,EAAM3wL,QAAQ2wL,EAAM3wL,QAAQ3K,OAAS,GAKrD,OAHEm7M,EAAU7f,MAAMtpL,IADlB4mM,GAAA,GAIOuC,EAAU7f,MAAMtpL,EACxB,CAsDM,SAASopM,KACd,IAAIxsM,EAAQosM,GAAmBpB,GAAoByB,eAC/CxS,EAAUoS,GAAkBrB,GAAoByB,eAEpD,IAAIzsM,EAAMuC,QAAmC,MAAzBvC,EAAMuC,OAAO03L,GAMjC,OAAOj6L,EAAM+0L,WAAWkF,GALtBxjM,QAAQ0D,MAAR,2DAC+D8/L,EAD/D,IAMH,CA2BM,SAASwQ,KAAyB,IAAAiC,EACnCvyM,EAAQggB,EAAAA,WAAiB0vL,IACzB7pM,EAAQosM,GAAmBpB,GAAoB2B,eAC/C1S,EAAUoS,GAAkBrB,GAAoB2B,eAIpD,OAAIxyM,IAKG,OAAPuyM,EAAO1sM,EAAMuC,aAAN,EAAAmqM,EAAezS,GACvB,WAzJI8Q,GAAAA,EAAA,wBAAAA,EAAA,iCAAAA,KAAAA,GAAA,cAKAC,GAAAA,EAAA,wBAAAA,EAAA,8BAAAA,EAAA,8BAAAA,EAAA,8BAAAA,EAAA,8BAAAA,EAAA,wCAAAA,EAAA,wBAAAA,EAAA,iCAAAA,KAAAA,GAAA,KAyML,IClcK4B,GA9XE,SAASC,GAG4BxtM,GAAA,IAF1CytM,EAE0CztM,EAF1CytM,gBACAxY,EAC0Cj1L,EAD1Ci1L,OAEIyY,EAAW5yL,EAAAA,aAAkB,kBAAMm6K,EAAOt0L,KAA/B,GAAsC,CAACs0L,IAGlDt0L,EAAqBw3J,GACvB88B,EAAO7kB,UACPs9B,EAIAA,GAGE7lM,EAAYiT,EAAAA,SAAc,WAC5B,MAAO,CACL+wK,WAAYoJ,EAAOpJ,WACnBa,eAAgBuI,EAAOvI,eACvBI,GAAK,SAAAr0L,GAAD,OAAOw8L,EAAOwC,SAASh/L,EAHtB,EAILvF,KAAM,SAAC8iB,EAAIrV,EAAOlD,GAAZ,OACJw3L,EAAOwC,SAASzhL,EAAI,CAClBrV,MAAAA,EACA60L,mBAAoB,MAAA/3L,OAAA,EAAAA,EAAM+3L,oBAPzB,EASL75L,QAAS,SAACqa,EAAIrV,EAAOlD,GAAZ,OACPw3L,EAAOwC,SAASzhL,EAAI,CAClBra,SAAS,EACTgF,MAAAA,EACA60L,mBAAoB,MAAA/3L,OAAA,EAAAA,EAAM+3L,oBAH5B,EAML,GAAE,CAACP,IAEApH,EAAWoH,EAAOpH,UAAY,IAE9Bme,EAAoBlxL,EAAAA,SACtB,iBAAO,CACLm6K,OAAAA,EACAptL,UAAAA,EACAokM,QAAQ,EACRpe,SAAAA,EAJF,GAMA,CAACoH,EAAQptL,EAAWgmL,IAStB,OACE/yK,EAAAA,cACEA,EAAAA,SAAA,KAAAA,EAAAA,cAACmvL,GAAkBjzB,SAAnB,CAA4BzjL,MAAOy4M,GACjClxL,EAAAA,cAACovL,GAAuBlzB,SAAxB,CAAiCzjL,MAAOoN,GACtCma,EAAAA,cAAC6yL,GAAD,CACE9f,SAAUoH,EAAOpH,SACjB52L,SAAUg+L,EAAOt0L,MAAM1J,SACvB22M,eAAgB3Y,EAAOt0L,MAAM00L,cAC7BxtL,UAAWA,GAEVotL,EAAOt0L,MAAMw0L,YAAcr6K,EAAAA,cAAC+yL,GAA5B,MAAwCJ,KAI9C,KAGN,CA6GM,SAASK,GAAOv0M,GACrB,ODKK,SAAmB5D,GACxB,IAAI40M,EAASzvL,EAAAA,WAAiBwvL,IAAcC,OAC5C,OAAIA,EAEAzvL,EAAAA,cAACmwL,GAAcj0B,SAAf,CAAwBzjL,MAAOoC,GAAU40M,GAGtCA,CACR,CCbQwD,CAAUx0M,EAAM5D,QACxB,CA+CM,SAASq4M,GAAM7kE,GACpBwhE,GAAA,EAKD,CAoBM,SAASgD,GAO2BxkK,GAAA,IAAA8kK,EAAA9kK,EANzC0kJ,SAAUqgB,OAAY,IAAAD,EAAG,IADJA,EAAAE,EAOoBhlK,EALzCntB,SAAAA,OAAQ,IAAAmyL,EAAG,KAFUA,EAGXC,EAI+BjlK,EAJzClyC,SAAQo3M,EAIiCllK,EAHzCykK,eAAAA,OAAc,IAAAS,EAAG/jB,EAAAA,IAJI+jB,EAKrBxmM,EAEyCshC,EAFzCthC,UALqBymM,EAOoBnlK,EADzC8iK,OAAQsC,OAAU,IAAAD,GAAGA,EAGlB7D,MADHE,GAAA,GAQA,IAAI9c,EAAWqgB,EAAavyM,QAAQ,OAAQ,KACxC6yM,EAAoB1zL,EAAAA,SACtB,iBAAO,CAAE+yK,SAAAA,EAAUhmL,UAAAA,EAAWokM,OAAQsC,EAAtC,GACA,CAAC1gB,EAAUhmL,EAAW0mM,IAGI,kBAAjBH,IACTA,EAAe/iB,EAAU+iB,IAG3B,IAAAK,EAMIL,EANJM,EAAAD,EACE/+L,SAAAA,OAAQ,IAAAg/L,EAAG,IADTA,EAAAC,EAAAF,EAEFh4L,OAAAA,OAAM,IAAAk4L,EAAG,GAFPA,EAAAC,EAAAH,EAGF/3L,KAAAA,OAAI,IAAAk4L,EAAG,GAHLA,EAAAC,EAAAJ,EAIF9tM,MAAAA,OAAK,IAAAkuM,EAAG,KAJNA,EAAAC,EAAAL,EAKF54M,IAAAA,OAAG,IAAAi5M,EAAG,UAAAA,EAGJC,EAAkBj0L,EAAAA,SAAc,WAClC,IAAIk0L,EAAmBlhB,GAAcp+K,EAAUm+K,GAE/C,OAAwB,MAApBmhB,EACK,KAGF,CACL/3M,SAAU,CACRyY,SAAUs/L,EACVv4L,OAAAA,EACAC,KAAAA,EACA/V,MAAAA,EACA9K,IAAAA,GAEF+3M,eAAAA,EAEH,GAAE,CAAC/f,EAAUn+K,EAAU+G,EAAQC,EAAM/V,EAAO9K,EAAK+3M,IASlD,OAAuB,MAAnBmB,EACK,KAIPj0L,EAAAA,cAACsvL,GAAkBpzB,SAAnB,CAA4BzjL,MAAOi7M,GACjC1zL,EAAAA,cAACuvL,GAAgBrzB,SAAjB,CAA0Bh7J,SAAUA,EAAUzoB,MAAOw7M,IAG1D,CAaM,SAASlB,GAG2BvkK,GAAA,IAFzCttB,EAEyCstB,EAFzCttB,SACA/kB,EACyCqyC,EADzCryC,SAEI+0M,EAAoBlxL,EAAAA,WAAiBmvL,IAQzC,ODrGK,SACLhd,EACAW,GAGE6c,MADFE,GAAA,GAOA,IA8CI1zM,EA9CE4Q,EAAciT,EAAAA,WAAiBsvL,IAA/BviM,UACFonM,EAAyBn0L,EAAAA,WAAiBovL,IAC/BoC,EAAkBxxL,EAAAA,WAAiBwvL,IAA5C5tM,QACFwyM,EAAa5C,EAAcA,EAAcv6M,OAAS,GAClDo9M,EAAeD,EAAaA,EAAWjxL,OAAS,CAAC,EAEjDmxL,GADiBF,GAAaA,EAAWx/L,SACpBw/L,EAAaA,EAAW5e,aAAe,KAsC5D+e,GArCcH,GAAcA,EAAW7hB,MAqCjBqd,MAG1B,GAAI9c,EAAa,KAAA0hB,EACXC,EACqB,kBAAhB3hB,EAA2BvC,EAAUuC,GAAeA,EAGpC,MAAvBwhB,IACE,OAAAE,EAAAC,EAAkB7/L,eAAlB,EAAA4/L,EAA4B3uL,WAAWyuL,KAF3CzE,GAAA,GASA1zM,EAAWs4M,CACZ,MACCt4M,EAAWo4M,EAGb,IAAI3/L,EAAWzY,EAASyY,UAAY,IAMhChT,EAAUixL,EAAYV,EAAQ,CAAEv9K,SAJX,MAAvB0/L,EACI1/L,EACAA,EAASxT,MAAMkzM,EAAmBr9M,SAAW,MAoB/Cy6M,EAAkBH,GACpB3vM,GACEA,EAAQX,KAAK,SAAAb,GAAD,OACV3I,OAAOuzI,OAAO,CAAC,EAAG5qI,EAAO,CACvB+iB,OAAQ1rB,OAAOuzI,OAAO,CAAC,EAAGqpE,EAAcj0M,EAAM+iB,QAC9CvO,SAAUm/K,GAAU,CAClBugB,EAEAvnM,EAAU6kL,eACN7kL,EAAU6kL,eAAexxL,EAAMwU,UAAUA,SACzCxU,EAAMwU,WAEZ4gL,aACyB,MAAvBp1L,EAAMo1L,aACF8e,EACAvgB,GAAU,CACRugB,EAEAvnM,EAAU6kL,eACN7kL,EAAU6kL,eAAexxL,EAAMo1L,cAAc5gL,SAC7CxU,EAAMo1L,gBAlBtB,IAsBFgc,EACA2C,QAA0B36M,GAM5B,OAAIs5L,GAAe4e,EAEf1xL,EAAAA,cAACuvL,GAAgBrzB,SAAjB,CACEzjL,MAAO,CACL0D,SAAQE,GAAA,CACNuY,SAAU,IACV+G,OAAQ,GACRC,KAAM,GACN/V,MAAO,KACP9K,IAAK,WACFoB,GAEL22M,eAAgBtjB,EAAAA,MAGjBkiB,GAKAA,CACR,CCnDQgD,CAHLxD,IAAsBhwL,EACjBgwL,EAAkB/W,OAAOhI,OAC1BwiB,GAAyBzzL,GACN/kB,EAC1B,WAiCIs2M,GAAAA,EAAAA,EAAA,qBAAAA,EAAAA,EAAA,qBAAAA,EAAAA,EAAA,kBAAAA,KAAAA,GAAA,KAML,IAAMmC,GAAsB,IAAIr3L,SAAQ,WAAO,IAEdyC,EAAAA,UAkH1B,SAAS20L,GACdzzL,EACAmxK,QACe,IADfA,IAAAA,EAAuB,IAEvB,IAAIF,EAAwB,GA6D5B,OA3DAnyK,EAAAA,SAAAA,QAAuBkB,GAAU,SAACkpH,EAAS3+H,GACzC,GAAKuU,EAAAA,eAAqBoqH,GAA1B,CAMA,IAAIooD,EAAW,GAAHp7L,OAAA89C,EAAOm9I,GAAJ,CAAgB5mL,IAE/B,GAAI2+H,EAAQrtI,OAASijB,EAAAA,SAArB,CAUEoqH,EAAQrtI,OAASm2M,IADnBrD,GAAA,GAQGzlE,EAAQ3rI,MAAMgN,OAAU2+H,EAAQ3rI,MAAMyiB,UADzC2uL,GAAA,GAKA,IAAItd,EAAqB,CACvBtpL,GAAImhI,EAAQ3rI,MAAMwK,IAAMupL,EAAS73L,KAAK,KACtCm5L,cAAe1pD,EAAQ3rI,MAAMq1L,cAC7B1pD,QAASA,EAAQ3rI,MAAM2rI,QACvBjpH,UAAWipH,EAAQ3rI,MAAM0iB,UACzB1V,MAAO2+H,EAAQ3rI,MAAMgN,MACrB5H,KAAMumI,EAAQ3rI,MAAMoF,KACpBy2L,OAAQlwD,EAAQ3rI,MAAM67L,OACtB7pH,OAAQ25D,EAAQ3rI,MAAMgyE,OACtB4gI,aAAcjnE,EAAQ3rI,MAAM4yM,aAC5BnxL,cAAekqH,EAAQ3rI,MAAMyhB,cAC7ByyK,iBACiC,MAA/BvoD,EAAQ3rI,MAAMyhB,eACgB,MAA9BkqH,EAAQ3rI,MAAM4yM,aAChBnH,iBAAkB9/D,EAAQ3rI,MAAMyrM,iBAChCvc,OAAQvjD,EAAQ3rI,MAAMkvL,OACtB1tK,KAAMmqH,EAAQ3rI,MAAMwhB,MAGlBmqH,EAAQ3rI,MAAMyiB,WAChBqxK,EAAMrxK,SAAWyzL,GACfvqE,EAAQ3rI,MAAMyiB,SACdsxK,IAIJL,EAAO/5L,KAAKm6L,EAxCX,MALCJ,EAAO/5L,KAAK4S,MACVmnL,EACAwiB,GAAyBvqE,EAAQ3rI,MAAMyiB,SAAUsxK,GARpD,KAsDIL,CACR,CChaD,SAASC,GAAoBG,GAoB3B,OAAOjzL,QAAQizL,EAAMryK,gBAAkB5gB,QAAQizL,EAAM8e,aACtD,+WC/Je,SAAAwD,GACd92F,GAEA,YAF8B,IAA9BA,IAAAA,EAA4B,IAErB,IAAI4uF,gBACO,kBAAT5uF,GACPn3G,MAAMkf,QAAQi4F,IACdA,aAAgB4uF,gBACZ5uF,EACAtmH,OAAO8wB,KAAKw1F,GAAMuhE,QAAO,SAAC5C,EAAM3hL,GAC9B,IAAItC,EAAQslH,EAAKhjH,GACjB,OAAO2hL,EAAKtlL,OACVwP,MAAMkf,QAAQrtB,GAASA,EAAMwI,KAAK,SAAApC,GAAD,MAAO,CAAC9D,EAAK8D,EAAvB,IAA6B,CAAC,CAAC9D,EAAKtC,OAE5D,IAEV,mLC0JD,SAASq8M,KAAkB,IAAA5Q,EACrBr+L,EAAK,OAAAq+L,EAAGhoM,aAAH,EAAGgoM,EAAQ6Q,4BAOpB,OANIlvM,GAASA,EAAMuC,SACjBvC,EAAKxJ,GAAA,GACAwJ,EADA,CAEHuC,OAAQ4sM,GAAkBnvM,EAAMuC,WAG7BvC,CACR,CAED,SAASmvM,GACP5sM,GAEA,IAAKA,EAAQ,OAAO,KAGpB,IAFA,IACI6sM,EAA6C,CAAC,EAClDr5J,EAAA,EAAA0qJ,EAFc7uM,OAAOosB,QAAQzb,GAE7BwzC,EAAA0qJ,EAAArvM,OAAA2kD,IAAgC,CAA3B,IAAAs5J,EAAA5yL,EAAAgkL,EAAA1qJ,GAAA,GAAK7gD,EAADm6M,EAAC,GAAKp+M,EAANo+M,EAAC,GAGR,GAAIp+M,GAAsB,uBAAfA,EAAIwR,OACb2sM,EAAWl6M,GAAO,IAAI+8L,GACpBhhM,EAAIqd,OACJrd,EAAIggE,WACJhgE,EAAI0L,MACa,IAAjB1L,EAAIihM,eAED,GAAIjhM,GAAsB,UAAfA,EAAIwR,OAAoB,CACxC,IAAItI,EAAQ,IAAIO,MAAMzJ,EAAIuC,SAG1B2G,EAAMG,MAAQ,GACd80M,EAAWl6M,GAAOiF,CACnB,MACCi1M,EAAWl6M,GAAOjE,CAErB,CACD,OAAOm+M,CACR,CAgID,IAAMjc,GACc,qBAAX98L,QACoB,qBAApBA,OAAO2Z,UAC2B,qBAAlC3Z,OAAO2Z,SAAS6F,cAEnBq9K,GAAqB,gCAKdoc,GAAOn1L,EAAAA,YAClB,SAYEquB,EAAAmgG,GAAG,IAKC4mE,EAfF5oE,EAUCn+F,EAVDm+F,QACAm5C,EASCt3I,EATDs3I,SACA0vB,EAQChnK,EARDgnK,eACAx0M,EAOCwtC,EAPDxtC,QACAgF,EAMCwoC,EANDxoC,MACAhK,EAKCwyC,EALDxyC,OACAqf,EAICmzB,EAJDnzB,GACAw/K,EAGCrsJ,EAHDqsJ,mBACGppJ,EAEFgkK,GAAAjnK,EAAAo6I,IAEGsK,EAAa/yK,EAAAA,WAAiBu1L,IAA9BxiB,SAIFyiB,GAAa,EAEjB,GAAkB,kBAAPt6L,GAAmB69K,GAAmB19L,KAAK6f,KAEpDk6L,EAAel6L,EAGX89K,IAAW,CACb,IAAIgQ,EAAa,IAAIrkL,IAAIzoB,OAAOC,SAASoa,MACrCk/L,EAAYv6L,EAAG2K,WAAW,MAC1B,IAAIlB,IAAIqkL,EAAWt1L,SAAWwH,GAC9B,IAAIyJ,IAAIzJ,GACRrX,EAAOmvL,GAAcyiB,EAAU7gM,SAAUm+K,GAEzC0iB,EAAU9jB,SAAWqX,EAAWrX,QAAkB,MAAR9tL,EAE5CqX,EAAKrX,EAAO4xM,EAAU95L,OAAS85L,EAAU75L,KAEzC45L,GAAa,CAEhB,CAIH,IAAIj/L,EJzZD,SACL2E,EAEQmxH,GAAA,IADNs5C,QACM,IAAAt5C,EAD2C,CAAC,EAC5CA,GADNs5C,SAGAgqB,MADFE,GAAA,GAOA,IAAA6F,EAA8B11L,EAAAA,WAAiBsvL,IAAzCvc,EAAF2iB,EAAE3iB,SAAUhmL,EAAA2oM,EAAA3oM,UAChB4oM,EAAiCvF,GAAgBl1L,EAAI,CAAEyqK,SAAAA,IAAjD/pK,EAAF+5L,EAAE/5L,KAAMhH,EAAR+gM,EAAQ/gM,SAAU+G,EAAAg6L,EAAAh6L,OAElBi6L,EAAiBhhM,EAWrB,MALiB,MAAbm+K,IACF6iB,EACe,MAAbhhM,EAAmBm+K,EAAWgB,GAAU,CAAChB,EAAUn+K,KAGhD7H,EAAUgkL,WAAW,CAAEn8K,SAAUghM,EAAgBj6L,OAAAA,EAAQC,KAAAA,GACjE,CI+Xci6L,CAAQ36L,EAAI,CAAEyqK,SAAAA,IAErBmwB,WAsVN56L,EAaMmxH,GAAA,IAAAy1C,OAAA,IAAAz1C,EAAF,CAAC,EAACA,EAXJxwI,EADFimL,EACEjmL,OACSk6M,EAFXj0B,EAEEjhL,QACAgF,EAHFi8K,EAGEj8K,MACA60L,EAJF5Y,EAIE4Y,mBACA/U,EAAA7D,EAAA6D,SASEgX,EAAWmT,KACX3zM,EAAWyzM,KACX/rM,EAAOusM,GAAgBl1L,EAAI,CAAEyqK,SAAAA,IAEjC,OAAO3lK,EAAAA,aACJ,SAAAxV,GACC,GDzxBU,SACdA,EACA3O,GAEA,OACmB,IAAjB2O,EAAM+hI,UACJ1wI,GAAqB,UAAXA,KAVhB,SAAyB2O,GACvB,SAAUA,EAAMk4I,SAAWl4I,EAAMi4I,QAAUj4I,EAAM+3I,SAAW/3I,EAAMg4I,SACnE,CASIwzD,CAAgBxrM,EAEpB,CCgxBSyrM,CAAuBzrM,EAAO3O,GAAS,CACzC2O,EAAM0xC,iBAIN,IAAIr7C,OACcrH,IAAhBu8M,EACIA,EACA7lB,EAAW/zL,KAAc+zL,EAAWrsL,GAE1C84L,EAASzhL,EAAI,CAAEra,QAAAA,EAASgF,MAAAA,EAAO60L,mBAAAA,EAAoB/U,SAAAA,GACpD,IAEH,CACExpL,EACAwgM,EACA94L,EACAkyM,EACAlwM,EACAhK,EACAqf,EACAw/K,EACA/U,GAGL,CApYyBuwB,CAAoBh7L,EAAI,CAC5Cra,QAAAA,EACAgF,MAAAA,EACAhK,OAAAA,EACA6+L,mBAAAA,EACA/U,SAAAA,IAWF,OAEE3lK,EAAAA,cAAA,IAAA3jB,GAAA,GACMi1C,EADN,CAEE/6B,KAAM6+L,GAAgB7+L,EACtBi2H,QAASgpE,GAAcH,EAAiB7oE,EAd5C,SACEhiI,GAEIgiI,GAASA,EAAQhiI,GAChBA,EAAMkxC,kBACTo6J,EAAgBtrM,EAEnB,EAQGgkI,IAAKA,EACL3yI,OAAQA,IAGb,IA+BI,IAAMs6M,GAAUn2L,EAAAA,YACrB,SAWEwuB,EAAAggG,GAAG,IAAA4nE,EAAA5nK,EATD,gBAAgB6nK,OAAe,IAAAD,EAAG,OADpCA,EAAAE,EAUG9nK,EARDslJ,cAAAA,OAAa,IAAAwiB,GAFfA,EAAAC,EAUG/nK,EAPD/zB,UAAW+7L,OAAa,IAAAD,EAAG,GAH7BA,EAAAE,EAUGjoK,EAND31B,IAAAA,OAAG,IAAA49L,GAJLA,EAKSC,EAKNloK,EALDrW,MACAjd,EAICszB,EAJDtzB,GACAgG,EAGCstB,EAHDttB,SACGowB,EAEFgkK,GAAA9mK,EAAAmoK,IAEC9yM,EAAOusM,GAAgBl1L,EAAI,CAAEyqK,SAAUr0I,EAAKq0I,WAC5CxpL,EAAWyzM,KACXgH,EAAc52L,EAAAA,WAAiB62L,IAC7B9pM,EAAciT,EAAAA,WAAiBu1L,IAA/BxoM,UAEFkqL,EAAalqL,EAAU6kL,eACvB7kL,EAAU6kL,eAAe/tL,GAAM+Q,SAC/B/Q,EAAK+Q,SACLkiL,EAAmB36L,EAASyY,SAC5BkiM,EACFF,GAAeA,EAAYpc,YAAcoc,EAAYpc,WAAWr+L,SAC5Dy6M,EAAYpc,WAAWr+L,SAASyY,SAChC,KAEDk/K,IACHgD,EAAmBA,EAAiB9yL,cACpC8yM,EAAuBA,EACnBA,EAAqB9yM,cACrB,KACJizL,EAAaA,EAAWjzL,eAG1B,IAeIyW,EAfAs8L,EACFjgB,IAAqBG,IACnBp+K,GACAi+K,EAAiBjxK,WAAWoxK,IACmB,MAA/CH,EAAiB74L,OAAOg5L,EAAWhgM,QAEnC+/M,EACsB,MAAxBF,IACCA,IAAyB7f,IACtBp+K,GACAi+L,EAAqBjxL,WAAWoxK,IACmB,MAAnD6f,EAAqB74M,OAAOg5L,EAAWhgM,SAEzCggN,EAAcF,EAAWV,OAAkB78M,EAI7CihB,EAD2B,oBAAlB+7L,EACGA,EAAc,CAAEO,SAAAA,EAAUC,UAAAA,IAO1B,CACVR,EACAO,EAAW,SAAW,KACtBC,EAAY,UAAY,MAEvBj2M,OAAOzB,SACP3E,KAAK,KAGV,IAAIw9B,EACmB,oBAAdu+K,EACHA,EAAU,CAAEK,SAAAA,EAAUC,UAAAA,IACtBN,EAEN,OACE12L,EAAAA,cAACm1L,GAAD94M,GAAA,GACMi1C,EADN,CAEgB,eAAA2lK,EACdx8L,UAAWA,EACX+zH,IAAKA,EACLr2G,MAAOA,EACPjd,GAAIA,IAEiB,oBAAbgG,EACJA,EAAS,CAAE61L,SAAAA,EAAUC,UAAAA,IACrB91L,EAGT,IAgFH,IAkFK0vL,GAMAC,GAiFC,SAAUqG,GACdC,GAcA,IAAIC,EAAyBp3L,EAAAA,OAAa60L,GAAmBsC,IACzDE,EAAwBr3L,EAAAA,QAAa,GAErC7jB,EAAWyzM,KACX11G,EAAel6E,EAAAA,SACjB,kBDnxBY,SACds3L,EACAC,GAEA,IAAIr9G,EAAe26G,GAAmByC,GAEtC,GAAIC,EAAqB,KACvB5zL,EADuBC,EAAArB,EACPg1L,EAAoBhvL,QAApC,QAAA2yB,EAAA,WAA4C,IAAnCngD,EAAT4oB,EAAAlrB,MACOyhG,EAAa/0E,IAAIpqB,IACpBw8M,EAAoB3I,OAAO7zM,GAAK4qB,SAAS,SAAAltB,GACvCyhG,EAAa0uG,OAAO7tM,EAAKtC,KAG9B,EAND,IAAAmrB,EAAAxoB,MAAAuoB,EAAAC,EAAAjmB,KAAAmmB,MAAAo3B,GAMC,OAAA33C,GAAAqgB,EAAA/hB,EAAA0B,EAAA,SAAAqgB,EAAAhrB,GAAA,CACF,CAED,OAAOshG,CACR,CCkwBG,CAKI/9F,EAASwf,OACT07L,EAAsBj+K,QAAU,KAAOg+K,EAAuBh+K,QAPjD,GASjB,CAACj9B,EAASwf,SAGRghL,EAAWmT,KACX0H,EAAkBx3L,EAAAA,aACpB,SAACy3L,EAAUC,GACT,IAAMC,EAAkB9C,GACF,oBAAb4C,EAA0BA,EAASv9G,GAAgBu9G,GAE5DJ,EAAsBj+K,SAAU,EAChCujK,EAAS,IAAMgb,EAAiBD,EACjC,GACD,CAAC/a,EAAUziG,IAGb,MAAO,CAACA,EAAcs9G,EACvB,EAnID,SAAK5G,GACHA,EAAA,4CACAA,EAAA,8BACAA,EAAA,uBAHF,GAAKA,KAAAA,GAIJ,KAED,SAAKC,GACHA,EAAA,0BACAA,EAAA,2CAFF,EAAKA,KAAAA,GAGJ,KCxwBD,SAASzoL,GAAQV,EAAQmvB,GACvB,IAAItuB,EAAO9wB,OAAO8wB,KAAKb,GACvB,GAAIjwB,OAAO+hC,sBAAuB,CAChC,IAAIsd,EAAUr/C,OAAO+hC,sBAAsB9R,GAC3CmvB,IAAmBC,EAAUA,EAAQ/1C,QAAO,SAAUg2C,GACpD,OAAOt/C,OAAO+wB,yBAAyBd,EAAQqvB,GAAK/tB,UACtD,KAAKT,EAAKnwB,KAAK4S,MAAMud,EAAMuuB,EAC7B,CACA,OAAOvuB,CACT,CACe,SAAS,GAAe1sB,GACrC,IAAK,IAAI9E,EAAI,EAAGA,EAAI+E,UAAU7E,OAAQF,IAAK,CACzC,IAAIgF,EAAS,MAAQD,UAAU/E,GAAK+E,UAAU/E,GAAK,CAAC,EACpDA,EAAI,EAAIqxB,GAAQ3wB,OAAOsE,IAAS,GAAI4pB,SAAQ,SAAU5qB,GACpD,EAAec,EAAQd,EAAKgB,EAAOhB,GACrC,IAAKtD,OAAOu/C,0BAA4Bv/C,OAAOmhC,iBAAiB/8B,EAAQpE,OAAOu/C,0BAA0Bj7C,IAAWqsB,GAAQ3wB,OAAOsE,IAAS4pB,SAAQ,SAAU5qB,GAC5JtD,OAAOgsB,eAAe5nB,EAAQd,EAAKtD,OAAO+wB,yBAAyBzsB,EAAQhB,GAC7E,GACF,CACA,OAAOc,CACT,CCpBe,SAAS,GAAyBE,EAAQ+yL,GACvD,GAAc,MAAV/yL,EAAgB,MAAO,CAAC,EAC5B,IACIhB,EAAKhE,EADL8E,ECHS,SAAuCE,EAAQ+yL,GAC5D,GAAc,MAAV/yL,EAAgB,MAAO,CAAC,EAC5B,IAEIhB,EAAKhE,EAFL8E,EAAS,CAAC,EACVmzL,EAAav3L,OAAO8wB,KAAKxsB,GAE7B,IAAKhF,EAAI,EAAGA,EAAIi4L,EAAW/3L,OAAQF,IACjCgE,EAAMi0L,EAAWj4L,GACb+3L,EAASpuL,QAAQ3F,IAAQ,IAC7Bc,EAAOd,GAAOgB,EAAOhB,IAEvB,OAAOc,CACT,CDRe,CAA6BE,EAAQ+yL,GAElD,GAAIr3L,OAAO+hC,sBAAuB,CAChC,IAAIu1J,EAAmBt3L,OAAO+hC,sBAAsBz9B,GACpD,IAAKhF,EAAI,EAAGA,EAAIg4L,EAAiB93L,OAAQF,IACvCgE,EAAMg0L,EAAiBh4L,GACnB+3L,EAASpuL,QAAQ3F,IAAQ,GACxBtD,OAAOC,UAAUI,qBAAqBF,KAAKmE,EAAQhB,KACxDc,EAAOd,GAAOgB,EAAOhB,GAEzB,CACA,OAAOc,CACT,CEfA,SAAS2oC,GAAE3iC,GAAG,IAAIuoC,EAAExxC,EAAE+E,EAAE,GAAG,GAAG,iBAAiBkE,GAAG,iBAAiBA,EAAElE,GAAGkE,OAAO,GAAG,iBAAiBA,EAAE,GAAG+E,MAAMkf,QAAQjkB,GAAG,IAAIuoC,EAAE,EAAEA,EAAEvoC,EAAE5K,OAAOmzC,IAAIvoC,EAAEuoC,KAAKxxC,EAAE4rC,GAAE3iC,EAAEuoC,OAAOzsC,IAAIA,GAAG,KAAKA,GAAG/E,QAAQ,IAAIwxC,KAAKvoC,EAAEA,EAAEuoC,KAAKzsC,IAAIA,GAAG,KAAKA,GAAGysC,GAAG,OAAOzsC,CAAC,CAA2H,OAAnH,WAAgB,IAAI,IAAIkE,EAAEuoC,EAAExxC,EAAE,EAAE+E,EAAE,GAAG/E,EAAEkD,UAAU7E,SAAS4K,EAAE/F,UAAUlD,QAAQwxC,EAAE5F,GAAE3iC,MAAMlE,IAAIA,GAAG,KAAKA,GAAGysC,GAAG,OAAOzsC,CAAC,6CCEpVoqC,GAAS,SAAAqC,GAAA,MACP,iBAANA,IAAmBxsC,MAAMwsC,EAAA,EAErBv5B,GAAS,SAAAu5B,GAAA,MAAqC,iBAANA,CAAA,EAExC7uC,GAAQ,SAAA6uC,GAAA,MAAuC,mBAANA,CAAA,EAEzC3qB,GAAkB,SAAA2qB,GAAA,OAAYv5B,GAAMu5B,IAAM7uC,GAAK6uC,GAAKA,EAAI,MAUxDxxC,GAAoB,SAAAwxC,GAAA,OAC/BvoC,EAAAA,EAAAA,gBAAeuoC,IAAYv5B,GAAMu5B,IAAY7uC,GAAK6uC,IAAYrC,GAAMqC,EAAA,ECC/C,SCmCPX,GAAA5nC,GAAA,IACd4Z,EAIA5Z,EAL4By0B,MAE5BkO,EAGA3iC,EAL4Bu0B,KAAAwhL,EAK5B/1M,EAL4Bg2M,eAG5B9gN,OAAA,IAAA6gN,GAAiBA,EAAAE,EAEjBj2M,EAL4Bk2M,SAI5Bp1J,OAAA,IAAAm1J,GAAWA,EAAAE,EACXn2M,EAL4Bo2M,iBAK5B7qM,OAAA,IAAA4qM,EAAA,IAAAA,EAEA,OAAO,SAAPn2M,GAAA,IACEkmC,EAKAlmC,EAN8Bqf,SAE9BrQ,EAIAhP,EAN8Bk7B,SAG9BxhC,EAGAsG,EAN8Bq2M,sBAI9Bz4L,EAEA5d,EAN8BiiB,KAK9BlrB,EACAiJ,EAN8Bs2M,QAM9B1uK,EAAA5nC,EAN8Bu2M,KAQxBhxK,EAAiBrwC,EAAA,GAAAK,OAAoBqkB,EAAA,MAAArkB,OAAUyZ,GAAa4K,EAC5D5c,EAAgB9H,EAAA,GAAAK,OAAoBotC,EAAA,MAAAptC,OAASyZ,GAAa2zB,EAC1D8F,GAAgB3sC,EAAAA,EAAAA,QAAA,GA8CtB,OA5CA0F,EAAAA,EAAAA,kBAAgB,eAAAg1M,EACRjuK,EAAOxxC,EAAQwgC,QACfv3B,EAAeulC,EAAetmC,MAAM,KAEpCnD,EAAa,SAAbA,EAAa0F,GAAA,IAAAi1M,EACbj1M,EAAExH,SAAWjD,EAAQwgC,UAEzBgR,EAAKvH,cAAc,IAAI77B,MAAA,MACvBojC,EAAKptB,oBAAoB,eAAgBrf,GACzCysC,EAAKptB,oBAAoB,kBAAmBrf,GAAA,IAE1C2sC,EAAclR,SACH,oBAAX/1B,EAAEtG,OAEFu7M,EAAAluK,EAAK+gG,WAAU/+B,OAAAphG,MAAAstM,EAAApjK,EAAUrzC,IAAA,GAK3Bw2M,EAAAjuK,EAAK+gG,WAAUzmI,IAAAsG,MAAAqtM,EAAAnjK,EAAOrzC,IACtBuoC,EAAKvwB,iBAAiB,eAAgBlc,GACtCysC,EAAKvwB,iBAAiB,kBAAmBlc,EAAA,GAI1C,KAEHvC,EAAAA,EAAAA,YAAU,WACR,IAAMgvC,EAAOxxC,EAAQwgC,QAEfv3B,EAAW,SAAXA,IACJuoC,EAAKptB,oBAAoB,eAAgBnb,GACzC8gD,EFvF8D,SCdpEvY,EACAvoC,EACAlE,QAAA,IAAAA,IAAAA,EAAA,KAEA,IAAQ0F,EAAwB+mC,EAA1BmuK,aAAgBn9M,EAAUgvC,EAA1BjS,MAENqgL,uBAAsB,WACpBp9M,EAAMq9M,UAAY,UAClBr9M,EAAMkqJ,OAASjiJ,EAAe,KAC9BjI,EAAM+kJ,WAAA,OAAA/oJ,OAAoBuG,EAAA,MAE1B66M,uBAAsB,WACpBp9M,EAAMkqJ,OAAS,IACflqJ,EAAMq1M,QAAU,IAChBr1M,EAAMs9M,OAAS,IACfzsM,WAAWpK,EAAMlE,EAAA,OCsFJ+kD,CAActY,EAAM3qB,EAAMrS,GAAoBqS,GAAA,EAStDgqB,IAAMluC,EAAwBsG,KALjCyoC,EAAclR,QAAA,EACdgR,EAAK3vB,WAAA,IAAArjB,OAAiByH,GACtBurC,EAAKvwB,iBAAiB,eAAgBhY,IAAA,GAIvC,CAAC4nC,IAEGW,EAAAA,cAAAA,EAAAA,SAAA,KAAGrC,EAAA,WCrHEX,GAAYgD,EAAcvoC,GACxC,MAAO,CACLkX,QAASqxB,EAAMrxB,QACf4/L,YAAavuK,EAAM3rC,MAAMk6M,YACzB1vM,GAAImhC,EAAM3rC,MAAMm6M,QAChBC,MAAOzuK,EAAM3rC,MAAMo6M,MACnB97M,KAAMqtC,EAAM3rC,MAAM1B,KAClByF,KAAM4nC,EAAM3rC,MAAM+D,MAAQ,CAAC,EAC3Bs2M,UAAW1uK,EAAM3rC,MAAMq6M,UACvBC,KAAM3uK,EAAM3rC,MAAMs6M,KAClB5kM,OAAAtS,EAAA,KCoDShD,GAA6B,CACxC++C,KAAM,IAAIghB,IACVo6I,UAAW,IAAIp6I,IAEfkxC,GAAA,SAAG1lE,EAAcvoC,GAGf,OAFA3E,KAAK0gD,KAAKz4B,IAAIilB,IAAUltC,KAAK0gD,KAAK7tB,IAAIqa,EAAO,IAC7CltC,KAAK0gD,KAAKv3C,IAAI+jC,GAAQhyC,KAAKyJ,GAAA,MAI7Bo3M,IAAA,SAAI7uK,EAAOvoC,GACT,GAAIA,EAAU,CACZ,IAAMlE,EAAKT,KAAK0gD,KAAKv3C,IAAI+jC,GAAQrpC,QAAO,SAAAqpC,GAAA,OAAMA,IAAOvoC,CAAA,IAErD,OADA3E,KAAK0gD,KAAK7tB,IAAIqa,EAAOzsC,GAAA,KAIvB,OADAT,KAAK0gD,KAAKq0B,OAAO7nC,GAAA,MAInB8uK,WAAA,SAAW9uK,GACT,IAAMvoC,EAAS3E,KAAK87M,UAAU3yM,IAAI+jC,GAMlC,OALIvoC,IACFA,EAAO8jB,QAAQgsD,cACfz0E,KAAK87M,UAAU/mI,OAAO7nC,IAAA,MAc1BvG,KAAA,SAAKuG,GAAA,IAAAhtB,EAAAthB,UAAAmT,EAAA,KACH/R,KAAK0gD,KAAKz4B,IAAIilB,IACZltC,KAAK0gD,KAAKv3C,IAAI+jC,GAAQzkB,SAAS,SAAA9jB,GAC7B,IAAMlE,EAAmBsO,YAAW,WAElCpK,EAAAmJ,WAAA,EAAAkqC,EAAA,GAAA9zC,MAAAxJ,KAAAkE,EAAA,OACC,GAEHmT,EAAK+pM,UAAU7zL,IAAIilB,IAAUn7B,EAAK+pM,UAAUjpL,IAAIqa,EAAO,IACvDn7B,EAAK+pM,UAAU3yM,IAAI+jC,GAAQhyC,KAAKuF,EAAA,MChGlC2sC,GAAkC,SAAAzoC,GAAA,IAAGlE,EAAgBkE,EAAlBg3M,MAASx1M,EAASxB,EAAlB9E,KAAkB3B,EAAA+9M,GAAAt3M,EAAA4mL,IAAA,OACzDr+I,EAAAA,cAAA,MAAAhoB,GAAA,CACEg3L,QAAQ,YACRjyK,MAAM,OACNm+G,OAAO,OACP+zD,KACY,YAAV17M,EACI,4CAAAvG,OAC6BiM,EAAA,MAE/BjI,GAAA,EAwCK0tC,GAAQ,CACnBr5B,KA7BF,SAAc5N,GACZ,OACEuoC,EAAAA,cAACE,GAAAloB,GAAA,GAAQvgB,GACPuoC,EAAAA,cAAA,QAAMv5B,EAAE,oPA2BZu/K,QAtCF,SAAiBvuL,GACf,OACEuoC,EAAAA,cAACE,GAAAloB,GAAA,GAAQvgB,GACPuoC,EAAAA,cAAA,QAAMv5B,EAAE,ifAoCZq0G,QAvBF,SAAiBrjH,GACf,OACEuoC,EAAAA,cAACE,GAAAloB,GAAA,GAAQvgB,GACPuoC,EAAAA,cAAA,QAAMv5B,EAAE,iLAqBZ7Q,MAhBF,SAAe6B,GACb,OACEuoC,EAAAA,cAACE,GAAAloB,GAAA,GAAQvgB,GACPuoC,EAAAA,cAAA,QAAMv5B,EAAE,yUAcZyoM,QATF,WACE,OAAOlvK,EAAAA,cAAA,OAAK3vB,UAAA,iCCZEgS,GAAkB2d,GAChC,IAAA6/I,GAAwBzlJ,EAAAA,EAAAA,aAAW,SAAA4F,GAAA,OAAKA,EAAI,IAAG,GAAtC/mC,EAAsCif,EAAA2nK,EAAA,GAAtC,GACsCruI,EAAAt5B,GAAfvrB,EAAAA,EAAAA,UAAe,OAAxC4rD,EAAA/G,EAAA,GAAUxuC,EAAAwuC,EAAA,GACX8G,GAAe/kD,EAAAA,EAAAA,QAAO,MACtB8rC,GAAgB9rC,EAAAA,EAAAA,QAAO,IAAIihE,KAAkBxlC,QAC7CkR,EAAiB,SAAAF,GAAA,OAAqC,IAA1BuY,EAASjiD,QAAQ0pC,EAAA,EAC7C3d,GAAW9uB,EAAAA,EAAAA,QAA0B,CACzC47M,SAAU,EACVC,eAAgB,EAChB5mK,MAAO,EACP5c,MAAO,GACPv3B,MAAA2rC,EACAuuK,YAAa,KACbc,cAAAnvK,EACAovK,SAAU,SAAAtvK,GAAA,OAAMX,EAAcpjC,IAAI+jC,EAAA,IACjChR,QAuBH,SAASrpB,EAAAq6B,GAAA,IAAoBvoC,EAAAuoC,EAAFuuK,aACPlsL,EAAShuB,MAArBk7M,OACS93M,GAAe4qB,EAASksL,cAAgB92M,IACrD4qB,EAASmmB,OAASnmB,EAASuJ,MAAM/+B,OACjCw1B,EAASuJ,MAAQ,IAIrB,SAASyS,EAAY2B,GACnBh9B,GAAY,SAAAvL,GAAA,OACC,MAAXuoC,EAAkB,GAAKvoC,EAAMd,QAAO,SAAAc,GAAA,OAAMA,IAAOuoC,CAAA,OAIrD,SAASmU,IACP,IAAAq7J,EACEntL,EAASuJ,MAAM3zB,QACjB2kB,EAFQ4yL,EAAFC,aAAgBD,EAAhBE,WAA4BF,EAA5BG,QAEgC,CAkBxC,SAASzxK,EACP8B,EAAAzsC,GAAA,IACEvC,EAAmBuC,EAArBqkF,MAASx9C,EAAY7mC,EAArBo8M,QAAqBhjN,EAAAoiN,GAAAx7M,EAAAg5M,IAErB,GAAK/9M,GAAcwxC,KAdrB,SAAoBA,GAClB,OACGsY,EAAatpB,SACb3M,EAAShuB,MAAMu7M,sBACd5vK,EAAQuuK,cAAgBlsL,EAAShuB,MAAMk6M,aACxClvK,EAActkB,IAAIilB,EAAQwuK,UAAgC,MAApBxuK,EAAQ6vK,QAAA,CALnD,CAc4CljN,GAA1C,CAEA,IAAQ4rD,EAA4B5rD,EAA9B6hN,QAAWxrM,EAAmBrW,EAA9BkjN,SAAqB3vK,EAASvzC,EAA9ByL,KACEuN,EAAU0c,EAAZhuB,MACA6pC,EAAa,WAAb,OAAmBG,EAAYka,EAAA,EAC/B8kF,EAA4B,MAAZr6H,EAElBq6H,GAAeh7G,EAASmmB,QAE5B,IN5HF/K,EACAU,EM2HQH,EAAAhmB,GAAAA,GAAAA,GAAA,GACDrS,GAAA,IACHooB,MAAOpoB,EAAMmqM,WACbn/M,IAAK0xB,EAAS8sL,YACX9hN,OAAO0iN,YACR1iN,OAAOosB,QAAQ9sB,GAASgK,QAAO,SAAAqpC,GAAA,IAAAgwK,EAAA93L,EAAK8nB,EAAA,GAAHgwK,EAAA,GAAG,OAAY,MAAZA,EAAA,EAAO,UAE7CxB,QAAAj2J,EACAs3J,SAAA7sM,EACA5K,KAAA8nC,EACA+vK,WAAA/xK,EACA8vK,MAAA,EACA39L,UAAWgF,GAAe1oB,EAAQ0jB,WAAa1K,EAAMuqM,gBACrDC,cAAe96L,GACb1oB,EAAQwjN,eAAiBxqM,EAAMwqM,eAEjCC,kBAAmB/6L,GACjB1oB,EAAQyjN,mBAAqBzqM,EAAMyqM,mBAErC3iG,WAAW9gH,EAAQ+hN,YN/IvBjxK,EMiJ0B9wC,EAAQ8gH,UNhJlCtvE,EMgJ6Cx4B,EAAM8nG,WAAA,IN9InDhwE,GAA6BE,GAAMF,IAAmBA,EAAiB,EACnEA,EACAU,GM6IAkyK,YAAA,WACE,IAAMrwK,EAAUhD,GAAYqC,EAAcpjC,IAAIs8C,GAAW,WACzDlZ,EAAcwoC,OAAOtvB,GAErB9jD,GAAaglC,KAAA,EAAmBuG,GAEhC,IAAMvoC,EAAW4qB,EAASuJ,MAAM/+B,OAQhC,GAPAw1B,EAASmmB,MACI,MAAX+P,EACIl2B,EAASmmB,MAAQnmB,EAAS+sL,eAC1B/sL,EAASmmB,MAAQ,EAEnBnmB,EAASmmB,MAAQ,IAAGnmB,EAASmmB,MAAQ,GAErC/wC,EAAW,EAAG,CAChB,IAAMuoC,EAAsB,MAAXuY,EAAkBl2B,EAAShuB,MAAMk7M,MAAS,EAE3D,GAAiB,IAAb93M,GAA+B,IAAbuoC,EACpB3d,EAAS+sL,iBACTj7J,QACK,CACL,IAAM5gD,EAAYysC,EAAWvoC,EAAWA,EAAWuoC,EACnD3d,EAAS+sL,eAAiB77M,EAE1B,IAAK,IAAIysC,EAAI,EAAGA,EAAIzsC,EAAWysC,IAAKmU,GAAA,OAGtCl7C,GAAA,IAKN+kC,EAAWsyK,QAAA,SAAAtwK,GAAA,IDnHWzsC,EAAwBysC,EAA1ByuK,MAASx1M,EAAiB+mC,EAA1BrtC,KAAe3B,EAAWgvC,EAA1B0uK,UAA0Bt0K,EAAA4F,EAA1B2uK,KAClBhiN,EAAwB,KACtB4rD,EAAY,CAAEk2J,MAAAl7M,EAAOZ,KAAAsG,GAgB3B,OAAO,IAdHmhC,IAEOjpC,GAAKipC,GACdztC,EAAOytC,EAAKme,IACH9gD,EAAAA,EAAAA,gBAAe2iC,GACxBztC,GAAO0kB,EAAAA,EAAAA,cAAa+oB,EAAMme,GACjB9xC,GAAM2zB,IAASuD,GAAMvD,GAC9BztC,EAAOytC,EACEppC,EACTrE,EAAO+xC,GAAMwwK,UAfE,SAAAlvK,GAAA,OAA6CA,KAAQtB,EAAA,CAArD,CAgBIzlC,KACnBtM,EAAO+xC,GAAMzlC,GAAMs/C,KAGd5rD,CAAA,CCiGM,CAAkBqxC,GAEzB7sC,GAAKxE,EAAQ4jN,UAASvyK,EAAWuyK,OAAS5jN,EAAQ4jN,QAClDp/M,GAAKxE,EAAQ0jE,WAAUryB,EAAWqyB,QAAU1jE,EAAQ0jE,SAExDryB,EAAWwyK,YAAc7qM,EAAM6qM,aAAA,IAE3B7jN,EAAQ6jN,aAAyBhiN,GAAc7B,EAAQ6jN,aACzDxyK,EAAWwyK,YAAc7jN,EAAQ6jN,aAAA,IACxB7jN,EAAQ6jN,cACjBxyK,EAAWwyK,aAAchiN,GAAcmX,EAAM6qM,cACzC7qM,EAAM6qM,aAIZ,IAAItjN,EAAe8yC,GAEfvoC,EAAAA,EAAAA,gBAAeuoC,KAAav5B,GAAMu5B,EAAQrtC,MAC5CzF,GAAemkB,EAAAA,EAAAA,cAAa2uB,EAAyB,CACnDiwK,WAAA/xK,EACAwxK,WAAA1xK,EACA5lC,KAAA8nC,IAEO/uC,GAAK6uC,KACd9yC,EAAe8yC,EAAQ,CAAEiwK,WAAA/xK,EAAYwxK,WAAA1xK,EAAY5lC,KAAA8nC,KAKjDv6B,EAAM4pM,OACN5pM,EAAM4pM,MAAQ,GACdltL,EAASmmB,MAAQ7iC,EAAM4pM,OACvBlyE,EAEAh7G,EAASuJ,MAAM59B,KAAK,CAAEyhN,aAAAviN,EAAcwiN,WAAA1xK,EAAY2xK,QAAAv1K,IACvCuD,GAAM3sC,GACf6Q,YAAW,WACT+a,EAAY1vB,EAAc8wC,EAAY5D,EAAA,GACrCppC,GAEH4rB,EAAY1vB,EAAc8wC,EAAY5D,EAvGkB,CAuGlB,CAI1C,SAASxd,EACPojB,EACAvoC,EACAlE,GAEA,IAAQ0F,EAAYxB,EAAd+2M,QAEFj7M,GAAS8rC,EAAcwoC,OAAOt0E,GAElC,IAAMvC,EAAQ,CACZ2d,QAAAqxB,EACA3rC,MAAOoD,GAET4nC,EAAc1Z,IAAI1sB,EAASjI,GAE3BgS,GAAY,SAAAg9B,GAAA,MAAS,GAAAhzC,OAAA89C,EAAI9K,GAAA,CAAO/mC,IAAStC,QAAO,SAAAqpC,GAAA,OAAMA,IAAOzsC,CAAA,OAC7DkB,GAAaglC,KAAA,EAEXuD,GAAYhsC,EAA+B,MAAxBA,EAAMqD,MAAMw7M,SAAmB,QAAU,YAqBhE,OA9MA7+M,EAAAA,EAAAA,YAAU,kBACRqxB,EAASksL,YAAcvuK,EAAMuuK,YAC7B95M,GACGq6M,WAAA,GACAppG,GAAA,EAAexnE,GACfwnE,GAAA,GAAgB,SAAA1lE,GAAA,OAAWsY,EAAatpB,SAAWqP,EAAY2B,EAAA,IAC/D0lE,GAAA,EAA4B//F,GAC5B8zB,KAAA,EAAqBpX,GAEjB,WACLgd,EAAcpkC,QACdxG,GAAaglC,KAAA,EAAwBpX,EAAA,IAEtC,KAEHrxB,EAAAA,EAAAA,YAAU,WACRqxB,EAAShuB,MAAQ2rC,EACjB3d,EAASgtL,cAAgBnvK,EACzB7d,EAAS+sL,eAAiB72J,EAAS1rD,MAAA,IA4L9B,CACL4jN,iBAlBF,SACEh5M,GAEA,IAAMlE,EAAW,IAAIihE,IACfv7D,EAAauD,MAAMoU,KAAKyuB,EAAc3U,UAU5C,OARIsV,EAAM0wK,aAAaz3M,EAAWiqL,UAElCjqL,EAAWsiB,SAAQ,SAAAykB,GACjB,IAAQvoC,EAAauoC,EAAM3rC,MAArBs+B,SACNp/B,EAASwnB,IAAItjB,IAAalE,EAASoyB,IAAIluB,EAAU,IACjDlE,EAAS0I,IAAIxE,GAAWzJ,KAAKgyC,EAAA,IAGxBxjC,MAAMoU,KAAKrd,GAAU,SAAAysC,GAAA,OAAKvoC,EAAGuoC,EAAE,GAAIA,EAAE,QAK5C2wK,aAAAr4J,EACA+2J,cAAAnvK,EAAA,CC3PJ,SAASv6B,GAAKq6B,GACZ,OAAOA,EAAE47G,eAAiB57G,EAAE47G,cAAc/uJ,QAAU,EAChDmzC,EAAE47G,cAAc,GAAG7D,QACnB/3G,EAAE+3G,OAAA,CAGR,SAAS15G,GAAK2B,GACZ,OAAOA,EAAE47G,eAAiB57G,EAAE47G,cAAc/uJ,QAAU,EAChDmzC,EAAE47G,cAAc,GAAG5D,QACnBh4G,EAAEg4G,OAAA,UAGQ7jG,GAASnU,GACvB,IAA2CsT,EAAAp7B,GAATvrB,EAAAA,EAAAA,WAAA,GAAS,GAApCsM,EAAAq6C,EAAA,GAAWjiC,EAAAiiC,EAAA,GACiDmC,EAAAv9B,GAATvrB,EAAAA,EAAAA,WAAA,GAAS,GAA5DytC,EAAAqb,EAAA,GAAuB8C,EAAA9C,EAAA,GACxBzyC,GAAWzP,EAAAA,EAAAA,QAAuB,MAClCoqC,GAAOpqC,EAAAA,EAAAA,QAAkB,CAC7Bib,MAAO,EACPthB,EAAG,EACH8vC,EAAG,EACHqqJ,MAAO,EACPupB,gBAAiB,EACjBC,iBAAA,EACAC,SAAA,EACAC,aAAc,KACdC,SAAA,IACChiL,QACGvoB,GAAYlT,EAAAA,EAAAA,QAAOysC,GACjB3qB,EAA+D2qB,EAAjEytE,UAAaj/G,EAAoDwxC,EAAjEixK,aAA2B34J,EAAsCtY,EAAjEiwK,WAAuC5wK,EAA0BW,EAAjEoiG,QAAgDplG,EAAiBgD,EAAjEkxK,aA+BN,SAASz8M,EACPgD,GAEA,GAAIuoC,EAAMmxK,UAAW,CAEQ,eAAvB15M,EAAEk9I,YAAYhiJ,MAAuB8E,EAAEk9I,YAAY7iG,iBAoEzDnU,EAAKqzK,SAAA,EACLvlM,SAASgE,iBAAiB,YAAa0kC,GACvC1oC,SAASgE,iBAAiB,UAAWyuB,GAErCzyB,SAASgE,iBAAiB,YAAa0kC,GACvC1oC,SAASgE,iBAAiB,WAAYyuB,GAtEpC,IAAM3qC,EAAQyP,EAASgsB,QACvB2O,EAAKkzK,iBAAA,EACLlzK,EAAKmzK,SAAA,EACLnzK,EAAKozK,aAAex9M,EAAM08K,wBAC1B18K,EAAMw6B,MAAMgoH,WAAa,GACzBp4G,EAAKzwC,EAAIyY,GAAKlO,EAAEk9I,aAChBh3G,EAAKX,EAAIqB,GAAK5mC,EAAEk9I,aAAA,MAEZ30G,EAAMoxK,oBACRzzK,EAAKnvB,MAAQmvB,EAAKzwC,EAClBywC,EAAKizK,gBACHr9M,EAAM89M,aAAerxK,EAAMsxK,iBAAmB,OAEhD3zK,EAAKnvB,MAAQmvB,EAAKX,EAClBW,EAAKizK,gBACHr9M,EAAMg+M,cAAA,KACLvxK,EAAMsxK,iBACsB,IAAzBtxK,EAAMsxK,iBACNtxK,EAAMsxK,iBAAmB,OAKrC,SAASpxK,EACPzoC,GAEA,GAAIkmC,EAAKozK,aAAc,CACrB,IAAAS,EAAqC7zK,EAAKozK,aAAlCx9M,EAAAi+M,EAAF3wD,IAAO5nJ,EAAAu4M,EAAPxjC,OAAeh9K,EAAAwgN,EAAf7wD,KAAqBtvI,EAAAmgM,EAArBvjC,MAGmB,aAAvBx2K,EAAEk9I,YAAYhiJ,MACdqtC,EAAMixK,cACNtzK,EAAKzwC,GAAK8D,GACV2sC,EAAKzwC,GAAKmkB,GACVssB,EAAKX,GAAKzpC,GACVoqC,EAAKX,GAAK/jC,EAEVopB,IAEAqc,GAAA,EAKN,SAASA,IACPrtB,GAAA,EAAa,CAGf,SAASgR,IACPhR,GAAA,EAAa,CAgCf,SAAS8iC,EAAW18C,GAClB,IAAMlE,EAAQyP,EAASgsB,QACnB2O,EAAKmzK,SAAWv9M,IAClBoqC,EAAKqzK,SAAA,EACD/3M,GAAWopB,IACfsb,EAAKzwC,EAAIyY,GAAKlO,GACdkmC,EAAKX,EAAIqB,GAAK5mC,GAEZkmC,EAAK0pJ,MAAA,MADHrnJ,EAAMoxK,mBACKzzK,EAAKzwC,EAAIywC,EAAKnvB,MAEdmvB,EAAKX,EAAIW,EAAKnvB,MAIzBmvB,EAAKnvB,QAAUmvB,EAAKzwC,IAAGywC,EAAKkzK,iBAAA,GAChCt9M,EAAMw6B,MAAM0jL,UAAA,YAAAzkN,OAAwBgzC,EAAMoxK,mBAAA,KAAApkN,OAAsB2wC,EAAK0pJ,MAAA,OACrE9zL,EAAMw6B,MAAMs+G,QAAA,IACV,EAAIjpI,KAAK43B,IAAI2C,EAAK0pJ,MAAQ1pJ,EAAKizK,kBAAA,CAKrC,SAAS1yK,IA7BPzyB,SAASmH,oBAAoB,YAAauhC,GAC1C1oC,SAASmH,oBAAoB,UAAWsrB,GAExCzyB,SAASmH,oBAAoB,YAAauhC,GAC1C1oC,SAASmH,oBAAoB,WAAYsrB,GA2BzC,IAAMzmC,EAAQuL,EAASgsB,QACvB,GAAI2O,EAAKmzK,SAAWnzK,EAAKqzK,SAAWv5M,EAAO,CAEzC,GADAkmC,EAAKmzK,SAAA,EACD1tM,KAAK43B,IAAI2C,EAAK0pJ,OAAS1pJ,EAAKizK,gBAG9B,OAFAr4J,GAAA,QACAvY,EAAMiwK,aAGRx4M,EAAMs2B,MAAMgoH,WAAa,+BACzBt+I,EAAMs2B,MAAM0jL,UAAA,YAAAzkN,OAAwBgzC,EAAMoxK,mBAAA,OAC1C35M,EAAMs2B,MAAMs+G,QAAU,MAxJ1Br7I,EAAAA,EAAAA,YAAU,WACRyV,EAAUuoB,QAAUgR,CAAA,KAGtBhvC,EAAAA,EAAAA,YAAU,kBACJgS,EAASgsB,SACXhsB,EAASgsB,QAAQvf,iBAAA,IAEfivB,EACA,CAAEgV,MAAA,IAGFviD,GAAK6uC,EAAMuwK,SACbvwK,EAAMuwK,QAAO94M,EAAAA,EAAAA,gBAAeuoC,EAAMlpB,WAAakpB,EAAMlpB,SAASziB,OAEzD,WACL,IAAM2rC,EAAQv5B,EAAUuoB,QACpB79B,GAAK6uC,EAAMqwB,UACbrwB,EAAMqwB,SAAQ54D,EAAAA,EAAAA,gBAAeuoC,EAAMlpB,WAAakpB,EAAMlpB,SAASziB,MAAA,IAElE,KAEHrD,EAAAA,EAAAA,YAAU,kBACRgvC,EAAM0xK,mBAmEDjmM,SAASkmM,YAAYtvL,IAE1BvwB,OAAO2d,iBAAiB,QAASivB,GACjC5sC,OAAO2d,iBAAiB,OAAQ4S,IArEzB,WACL2d,EAAM0xK,mBAwER5/M,OAAO8gB,oBAAoB,QAAS8rB,GACpC5sC,OAAO8gB,oBAAoB,OAAQyP,GAAA,IAvElC,CAAC2d,EAAM0xK,mBAiIV,IAAM90L,EAA4C,CAChDg1L,YAAan9M,EACbo9M,aAAcp9M,EACdq9M,UAAW5xK,EACX6xK,WAAY7xK,GAgBd,OAbI7qB,GAAa7mB,IACfouB,EAAco1L,aAAe3vL,EAC7BzF,EAAcq1L,aAAevzK,GAI3B1B,IACFpgB,EAAcwlH,QAAW,SAAApiG,GACvBX,GAAWA,EAAQW,GACnBrC,EAAKkzK,iBAAmBv4J,GAAA,GAIrB,CACL45J,UAAAxzK,EACAyzK,WAAA9vL,EACA+vL,UAAAn5M,EACA60M,sBAAA1zK,EACAi4K,SAAArvM,EACAsvM,cAAA11L,EAAA,UClOYshB,GAAAzmC,GAAA,IACdlE,EAEYkE,EAHcw4M,WAE1Bh3M,EACYxB,EAHcg3M,MAAA8D,EAGd96M,EAHc+6M,UAG1BxhN,OAAA,IAAAuhN,EAAY,QAAAA,EAEZ,OACEvyK,EAAAA,cAAA,UACE3vB,UAAA,kDAAArjB,OAA6FiM,GAC7FtG,KAAK,SACLyvI,QAAS,SAAApiG,GACPA,EAAE4R,kBACFr+C,EAAWysC,EAAA,eAEDhvC,GAEZgvC,EAAAA,cAAA,qBAAiB,OAAOgvK,QAAQ,aAC9BhvK,EAAAA,cAAA,QACEyyK,SAAS,UACThsM,EAAE,wICuCImW,GAAAnlB,GAAA,IACdlE,EAWAkE,EAZ0BmgF,MAE1B3+E,EAUAxB,EAZ0B26M,UAG1BphN,EASAyG,EAZ0Bw4M,WAAAyC,EAY1Bj7M,EAZ0B9E,KAI1B0e,OAAA,IAAAqhM,EAAA,UAAAA,EACAt4K,EAOA3iC,EAZ0Bk7M,KAM1BhmN,EAMA8K,EAZ0B4Y,UAOnBkoC,EAKP9gD,EALAs2B,MACA4P,EAIAlmC,EAZ0Bm7M,mBAS1BnsM,EAGAhP,EAZ0Bo7M,SAU1Bx9L,EAEA5d,EAZ0Bq7M,IAW1BtkN,EACAiJ,EAZ0Bu2M,KAY1B11J,EAAA7gD,EAZ0Bg3M,MAcpBpvK,EAAWjF,GAASuD,GAAmC,IAAbl3B,EAC1Cu2B,EAAAhlB,GAAAA,GAAA,GACDugC,GAAA,IACHw6J,kBAAA,GAAA/lN,OAAsBuG,EAAA,MACtBy/M,mBAAoB/5M,EAAY,UAAY,SAC5CozI,QAAShtG,EAAW,EAAI,IAGtB1B,IAAoBX,EAAMy0K,UAAA,UAAAzkN,OAAsByZ,EAAA,MACpD,IAAMhS,EAAmBuO,GAAA,yBAEvB26B,EAAA,yGAAA3wC,OAGiDsrD,GAAA,2BAAAtrD,OACNqkB,GAC3C,CACE,8BAAiDgE,IAG/C6qB,EAAa/uC,GAAKxE,GACpBA,EAAU,CACRmmN,IAAAz9L,EACA1iB,KAAA0e,EACA4hM,iBAAAx+M,IAEFuO,GAAGvO,EAAkB9H,GAkBzB,OACEqzC,EAAAA,cAAA,MAAAmL,EAAA,CACE+nK,KAAK,4BACQ7zK,EAAW,OAAS,qBACtB,qBACXhvB,UAAW6vB,EACXnS,MAAOiP,GAlBRW,GAAsBl3B,GAAa,EAChC,kBACA,iBACFk3B,GAAsBl3B,EAAY,EAC9B,KACA,WACEjY,GAAQwC,GAAA,QC/GPqsI,GAA8B,SAAA9pI,GACzC,IAAAuH,EACEq5C,GAAS5gD,GADH0F,EAAA6B,EAAFs3M,UAAaphN,EAAA8J,EAAbgzM,sBAAoC1zK,EAAAt/B,EAApCu3M,SAA8C1lN,EAAAmO,EAA9Cw3M,cAGJ/5J,EA0BEhlD,EA3BEi9M,YAEJ7yK,EAyBEpqC,EA3BEujB,SAGJrQ,EAwBElT,EA3BEk6G,UAIJp4F,EAuBE9hB,EA3BE6uI,QAKJ5zI,EAsBE+E,EA3BEZ,KAMJ2lD,EAqBE/kD,EA3BE4/M,gBAOJ9zK,EAoBE9rC,EA3BE08M,WAQQjzK,EAmBVzpC,EAnBFwiJ,WACAthJ,EAkBElB,EA3BEo/B,SAUJuN,EAiBE3sC,EA3BE8c,UAWJquB,EAgBEnrC,EA3BEw6B,MAYJ1L,EAeE9uB,EA3BE48M,cAaJxqM,EAcEpS,EA3BE6/M,UAcJ/0K,EAaE9qC,EA3BE68M,kBAeJ/yE,EAYE9pI,EA3BE8/M,cAgBJr1K,EAWEzqC,EA3BEs8M,SAiBJpyK,EAUElqC,EA3BE2/M,KAkBJ/0K,EASE5qC,EA3BEs/M,SAmBJ3lN,EAQEqG,EA3BEu/M,IAoBJ9pL,EAOEz1B,EA3BEi7M,QAqBJ7+M,EAME4D,EA3BE88M,YAsBJnrL,EAKE3xB,EA3BEy6M,KAuBJ5uK,EAIE7rC,EA3BEm7M,UAwBJlwK,EAGEjrC,EA3BE+8M,QAyBJ73J,EAEEllD,EA3BE29M,aA0BJnxK,EACExsC,EA3BEk7M,MA4BAnwL,EAAmBtb,GAAA,4CAAAhW,OAEmB+yC,GAAA,oBAAA/yC,OACNwB,GACpC,CACE,uBAA0CtB,GAE5C,CACE,kCAAqDurD,IAGnDnZ,EAAanuC,GAAK+uC,GACpBA,EAAU,CACR4yK,IAAA5lN,EACAylC,SAAAl+B,EACA9B,KAAAnE,EACAykN,iBAAA30L,IAEFtb,GAAGsb,EAAkB4hB,GACnB9N,IAAyB+L,IAAa13B,EAEtCs3B,EAAmB,CAAEkyK,WAAA5wK,EAAY1sC,KAAAnE,EAAMigN,MAAA1uK,GACzCnC,EAAyB,KAY7B,OAAO,IAVH2a,IAGF3a,EADSzsC,GAAKonD,GACNA,EAAYxa,IACXtmC,EAAAA,EAAAA,gBAAe8gD,IAChBlnC,EAAAA,EAAAA,cAAaknC,EAAaxa,GAE1BG,GAAYH,IAIpBiC,EAAAA,cAAChD,EAAA,CACCgxK,KAAM9oL,EACNxL,KAAM/pB,EACNgjC,SAAUl+B,EACVq5M,sBAAuB98M,EACvB+8M,QAAS3zK,GAET4F,EAAAA,cAAA,MAAAhoB,GAAAA,GAAA,CACEnZ,GAAImqB,EACJo5G,QAAS/sH,EACThF,UAAWivB,GACP3yC,GAAA,IACJohC,MAAO2Q,EACP0lG,IAAKhqG,IAEL4F,EAAAA,cAAA,MAAAhoB,GAAAA,GAAA,GACOkN,GAAQ,CAAEguL,KAAMz1K,IAAA,IACrBptB,UACElf,GAAKkxB,GACDA,EAAc,CAAE1vB,KAAAnE,IAChBwU,GAAA,uBAA2Cqf,GAEjD0L,MAAOpoB,IAEK,MAAX64B,GACCwB,EAAAA,cAAA,OACE3vB,UAAWrN,GAAA,uBAA2C,CACpD,+CACGo8B,KAGJZ,GAGLwB,EAAAA,cAAA,WAAMrC,IAEPC,EACDoC,EAAAA,cAACpjB,GAAA5E,GAAAA,GAAA,GACMgmB,IAAa5L,EACd,CAAEzhC,IAAA,MAAA3D,OAAWgxC,IACb,CAAC,GAAD,IACJ80K,IAAK5lN,EACLuhN,MAAO1uK,EACP63C,MAAOnxE,EACP2rM,UAAWn5M,EACX+0M,KAAM9oL,EACN+qL,WAAY5wK,EACZszK,KAAMr6J,EACN3lD,KAAMnE,EACNu/B,MAAOsvG,EACPhtH,UAAWguB,EACXu0K,mBAAoBxgL,EACpBygL,SAAU10K,GAAY,QC7H1BH,GAAY,SAACgC,EAAuBvoC,GAAA,gBAAAA,IAAAA,GAAA,GAA4B,CACpEy0B,MAAA,+BAAAl/B,OAAsEgzC,EAAA,UACtEhU,KAAA,+BAAAh/B,OAAqEgzC,EAAA,SACrEytK,eAAAh2M,EAAA,EAGIgmC,GAAS4B,GAAcrB,GAAU,cCI1BruC,IDFC0vC,GAAcrB,GAAU,aAEzBqB,GAAcrB,GAAU,SAExBqB,GAAcrB,GAAU,UCFPua,EAAAA,EAAAA,aAC5B,SAAC9gD,EAAOlE,GACN,IAAA+/M,EACEjxL,GAAkB5qB,GADZwB,EAAAq6M,EAAF7C,iBAAoBp/L,EAAAiiM,EAApB3C,aAAkCv2K,EAAAk5K,EAAlCjE,cAEE1iN,EAAuC8K,EAAzC4Y,UAAakoC,EAA4B9gD,EAAzCs2B,MAAoB4P,EAAqBlmC,EAAzCq7M,IAAyBrsM,EAAgBhP,EAAzC82M,YAEN,SAAS//M,EAAawxC,GACpB,IAAMvoC,EAAmBuL,GAAA,0DAAAhW,OAEuBgzC,GAC9C,CAAE,iCAAoDrC,IAExD,OAAOxsC,GAAKxE,GACRA,EAAU,CACRgmC,SAAAqN,EACA8yK,IAAAn1K,EACAs1K,iBAAAx7M,IAEFuL,GAAGvL,EAAkB4d,GAAe1oB,GAAA,CAU1C,OAPAqE,EAAAA,EAAAA,YAAU,WACJuC,IACDA,EAA+Cy7B,QAC9C3d,EAAa2d,QAAA,GAEhB,IAGDgR,EAAAA,cAAA,OACEokG,IAAK/yH,EACLhB,UAAW,WACXxR,GAAI4H,GAEHxN,GAAiB,SAACxB,EAAUlE,GAC3B,IAAM0F,EAAuC1F,EAAU1G,OAAAmrB,GAAA,GAE9CugC,GAAAvgC,GAAAA,GAAA,GADAugC,GAAA,IAAOg7J,cAAe,SAG/B,OACEvzK,EAAAA,cAAA,OACE3vB,UAAW7hB,EAAaiJ,GACxBs2B,MAAO90B,EACPtI,IAAA,aAAA3D,OAAkByK,IAEjBlE,EAAUsD,KAAI,SAAAY,EAAiCwB,GAAA,IAA9BjI,EAAgByG,EAAlBkX,QAAkB0C,EAAA5Z,EAAPpD,MACzB,OACE2rC,EAAAA,cAACq9F,GAAArlH,GAAAA,GAAA,GACK3G,GAAA,IACJ28L,KAAM5zK,EAAc/oB,EAAWm9L,SAC/BzgL,MAAA/V,GAAAA,GAAA,GAEO3G,EAAW0c,OAAA,IACd,QAAS90B,EAAI,EACb,QAAS1F,EAAU1G,SAGvB8D,IAAA,SAAA3D,OAAcqkB,EAAW1gB,OAExBK,EAAA,aAYrBrB,GAAeonD,YAAc,iBAE7BpnD,GAAemnD,aAAe,CAC5BnkB,SAAU,YACVojH,WAAYt4G,GACZgwE,UAAW,IACX+iG,YAAatyK,GACb+yK,cAAA,EACAS,kBAAA,EACAR,cAAA,EACAC,WAAA,EACAG,iBAAkB,GAClBF,mBAAA,IACA8B,KAAM,QACNzE,MAAO,SC9ET,IACIvpL,GADAka,GAAa,IAAIo1B,IAEjBh2B,GAAyB,GACzBia,GAAW,EAaf,SAAS1Y,KACP,MAAO,GAAG0Y,IAAA,CAMZ,SAASn6B,GAAW0hB,GAClB,OAAOA,IAAYv5B,GAAMu5B,EAAQwuK,UAAY7wK,GAAMqC,EAAQwuK,UACvDxuK,EAAQwuK,QACRzuK,IAAA,CAON,SAAST,GACPU,EACAvoC,GAQA,OANI2nC,GAAW/8B,KAAO,EACpB5N,GAAaglC,KAAA,EAAiBuG,EAASvoC,GAEvC+mC,GAAMxwC,KAAK,CAAE2gB,QAAAqxB,EAAS9sB,QAAAzb,IAGjBA,EAAQ+2M,OAAA,CAMjB,SAASp8K,GAAa4N,EAAcvoC,GAClC,OAAAugB,GAAAA,GAAA,GACKvgB,GAAA,IACH9E,KAAO8E,GAAWA,EAAQ9E,MAASqtC,EACnCwuK,QAASlwL,GAAW7mB,IAAA,CAIxB,SAASsmC,GAAkBiC,GACzB,OAAO,SACLvoC,EACAlE,GAAA,OACG+rC,GAAc7nC,EAAS26B,GAAa4N,EAAMzsC,GAAA,EAGjD,SAASqqC,GACPoC,EACAvoC,GAEA,OAAO6nC,GAAcU,EAAS5N,GAAA,UAA2B36B,GAAA,CAG3DmmC,GAAM41K,QAAU,SACdxzK,EACAvoC,GAAA,OAEA6nC,GACEU,EACA5N,GAAA,UAAApa,GAAA,CACE02L,WAAA,EACAjhG,WAAA,EACAyjG,cAAA,EACAV,aAAA,EACAW,WAAA,GACG15M,IAAA,EAqFTmmC,GAAM9oB,QAvEN,SACEkrB,EAAAvoC,EAEAlE,GAEI,IAAA0F,EAHFjI,EAAgByG,EAAlB+yJ,QAAWn5I,EAAO5Z,EAAlB7B,MAAkBwkC,EAAA3iC,EAAlBqjH,QAKI9pH,IACFiI,EAAKwN,GAAMzV,GACP4sC,GAAM41K,QAAQxiN,EAASuC,GACvBqqC,GAAM41K,QAAQxiN,EAAQ2lB,OAAAqB,GAAAA,GAAA,GACjBzkB,GACCvC,KAIZ,IAAMrE,EAAc,CAClB+hN,UAAW,KACXjhG,UAAW,KACXyjG,aAAc,KACdV,YAAa,KACbW,UAAW,MAGP54J,EAAW,SACfvY,EACAvoC,EACAzG,GAIA,GAAa,MAATyG,EAAJ,CAKA,IAAM4Z,EAAA2G,GAAAA,GAAAA,GAAA,CACJrlB,KAAAqtC,GACGrzC,GACA4G,GAAA,IACH6E,KAAMpH,IAEFopC,EAAS3zB,GAAMhP,GAAS,CAAEkf,OAAQlf,GAAUA,EAgBlD,OAbIwB,EACF2kC,GAAM61K,OAAOx6M,EAAA+e,GAAAA,GAAA,GACR3G,GACA+oB,IAILwD,GAAMxD,EAAQzjB,OAAAqB,GAAAA,GAAA,GACT3G,GACA+oB,IAIAppC,CA1BS,CAAd4sC,GAAM81K,QAAQz6M,EA0BT,EAGH+J,EAAI7R,GAAK6uC,GAAWA,IAAYA,EAOtC,OAJAh9B,EAAEpB,MAAK,SAAAo+B,GAAA,OAAUuY,EAAS,UAAWne,EAAS4F,EAAA,IAASmjB,OAAM,SAAAnjB,GAAA,OAC3DuY,EAAS,QAASlnC,EAAO2uB,EAAA,IAGpBh9B,CAAA,EAIT46B,GAAMk9E,QAAU/8E,GAAA,WAChBH,GAAMv4B,KAAO04B,GAAA,QACbH,GAAMhoC,MAAQmoC,GAAA,SACdH,GAAMooJ,QAAUjoJ,GAAA,WAChBH,GAAM58B,KAAO48B,GAAMooJ,QACnBpoJ,GAAM+1K,KAAO,SAAC3zK,EAAuBvoC,GAAA,OACnC6nC,GACEU,EACA5N,GAAA,UAAApa,GAAA,CACEy2L,MAAO,QACJh3M,IAAA,EAOTmmC,GAAM81K,QAAW,SAAA1zK,GACXZ,GAAW/8B,KAAO,EACpB5N,GAAaglC,KAAA,EAAkBuG,GAE/BxB,GAAQA,GAAM7nC,QAAO,SAAAc,GAAA,OAAW,MAANuoC,GAAcvoC,EAAEyb,QAAQs7L,UAAYxuK,CAAA,KAOlEpC,GAAMg2K,kBAAoB,SAAC5zK,GAAA,gBAAAA,IAAAA,EAAkC,CAAC,GAC5DvrC,GAAaglC,KAAA,EAA8BuG,EAAA,EAK7CpC,GAAM+uK,SAAY,SAAA3sK,GAChB,IAAIvoC,GAAA,EAQJ,OANA2nC,GAAW7jB,SAAQ,SAAAhoB,GACbA,EAAU87M,eAAiB97M,EAAU87M,cAAcrvK,KACrDvoC,GAAA,EAAgB,IAIbA,CAAA,EAGTmmC,GAAM61K,OAAS,SACbzzK,EACAvoC,QAAA,IAAAA,IAAAA,EAAgC,CAAC,GAEjCoK,YAAW,WACT,IAAMtO,EApNV,SAAkBysC,EAAAvoC,GAAA,IAAelE,EAAAkE,EAAF82M,YACvBt1M,EAAYmmC,GAAWnjC,IAAI1I,GAAe2xB,IAChD,OAAOjsB,GAAaA,EAAUq2M,SAAStvK,EAAA,CAFzC,CAoN2BA,EAASvoC,GAChC,GAAIlE,EAAO,CACT,IAAe0F,EAAoC1F,EAA3Cc,MAA4BrD,EAAeuC,EAAxBob,QAErB0C,EAAA2G,GAAAA,GAAAA,GAAA,CACJ4/D,MAAO,KACJ3+E,GACAxB,GAAA,IACH+2M,QAAS/2M,EAAQ+2M,SAAWxuK,EAC5B6vK,SAAU9vK,OAGR1uB,EAAYm9L,UAAYxuK,IAAS3uB,EAAYs+L,QAAU3vK,GAE3D,IAAM5F,EAAU/oB,EAAYsF,QAAU3lB,SAC/BqgB,EAAYsF,OAEnB2oB,GAAclF,EAAS/oB,EAAA,IAExB,IAMLusB,GAAMlkB,KAAQ,SAAAsmB,GACZpC,GAAM61K,OAAOzzK,EAAI,CACf6yK,SAAU,KAwBdj1K,GAAM+yI,SAAY,SAAA3wI,GAAA,OAChBvrC,GAAaixG,GAAA,EAAiB1lE,GACvB,WACLvrC,GAAao6M,IAAA,EAAkB7uK,EAAA,GAQnCpC,GAAMi2K,SC9R6D,CACjEC,SAAU,WACVC,UAAW,YACXC,WAAY,aACZC,YAAa,cACbC,aAAc,eACdC,cAAe,iBD8RjBv2K,GAAMtX,KCxRmD,CACvD8tL,KAAM,OACNC,QAAS,UACTC,QAAS,UACTC,MAAO,QACPzqL,QAAS,WDyRXr1B,GACGixG,GAAA,GAAoB,SAAA1lE,GACnB9a,GAAiB8a,EAAkBuuK,aAAevuK,EAClDZ,GAAWzZ,IAAIT,GAAgB8a,GAE/BxB,GAAMjjB,SAAQ,SAAAykB,GACZvrC,GAAaglC,KAAA,EAAiBuG,EAAKrxB,QAASqxB,EAAK9sB,QAAA,IAGnDsrB,GAAQ,MAETknE,GAAA,GAAuB,SAAA1lE,GACtBZ,GAAWyoC,OAAO7nC,EAAkBuuK,aAAevuK,GAE3B,IAApBZ,GAAW/8B,MACb5N,GACGo6M,IAAA,GACAA,IAAA,GACAA,IAAA,wDE3UH2F,GAAY,SAACnmN,GAAK,OAAe,IAAVA,IAA4B,IAAVA,CAAe,EACxD+tB,GAAW,SAAC/tB,GAAK,QAAOA,GAA0B,kBAAVA,IAAuBmO,MAAMkf,QAAQrtB,EAAM,EACnFomN,GAAW,SAACpmN,GAAK,MAAsB,kBAAVA,GAAsB+G,OAAO1B,SAASrF,KAAW+G,OAAO5B,MAAMnF,EAAM,EACjGqmN,GAAW,SAACrmN,GAAK,MAAsB,kBAAVA,CAAkB,EAC/CsmN,GAAqB,SAACtmN,GAAK,OAAKqmN,GAASrmN,IAAUA,EAAMxB,OAAS,CAAC,EAOnE+nN,GAAwB,SAACvmN,GAAK,OAAKmO,MAAMkf,QAAQrtB,IAAUA,EAAM26L,OAAM,SAAAj8L,GAAI,OAAI4nN,GAAmB5nN,IAASA,aAAgB0P,MAAM,GAAC,EAMxI,IAAMo4M,GAAgB,SAACxmN,GAAK,OAAK+tB,GAAS/tB,IAClB,kBAAbA,EAAMwQ,IACY,kBAAlBxQ,EAAMymN,SACY,oBAAlBzmN,EAAM0mN,OAAsB,ECpBI,IAErCC,GAAc,WAChB,SAAAA,EAAYC,GAAe58L,EAAA,KAAA28L,GACvBliN,KAAKoiN,WAAaD,CACtB,CAWC,OAXA78L,EAAA48L,EAAA,EAAArkN,IAAA,MAAAtC,MACD,SAAIkD,EAAMlD,IACe,kBAAVA,GAAuC,mBAAVA,GAAuBomN,GAASpmN,KACpEyE,KAAKoiN,WAAWvvL,IAAIp0B,EAAMlD,EAElC,GAAC,CAAAsC,IAAA,SAAAtC,MACD,SAAOkD,GACHuB,KAAKoiN,WAAWrtI,OAAOt2E,EAC3B,GAAC,CAAAZ,IAAA,SAAAtC,MACD,WACI,OAAOmO,MAAMoU,KAAK9d,KAAKoiN,YAAYr+M,KAAI,SAAAiE,GAAA,IAAAynC,EAAArqB,EAAApd,EAAA,GAAY,OAgB3D,SAAyBnK,EAAKwkN,GAC1B,cAAeA,GACX,IAAK,SACD,GAAI//M,OAAO5B,MAAM2hN,KAAe//M,OAAO1B,SAASyhN,GAC5C,OAGJ,MAAY,uBAARxkN,GAAgCyE,OAAOggN,UAAUD,GAC1C,CAAExkN,IAAAA,EAAKtC,MAAO,CAAEgnN,SAAU,GAAFroN,OAAKmoN,KAEjC,CAAExkN,IAAAA,EAAKtC,MAAO,CAAEinN,YAAaH,IACxC,IAAK,UACD,MAAO,CAAExkN,IAAAA,EAAKtC,MAAO,CAAEknN,UAAWJ,IACtC,IAAK,SACD,MAAO,CAAExkN,IAAAA,EAAKtC,MAAO,CAAEmnN,YAAaL,IACxC,QACI,OAEZ,CAlCiEM,CAAblzK,EAAA,GAAOA,EAAA,GAAiC,GACxF,KAACyyK,CAAA,CAde,GAgBdU,GAAkB,SAAAC,GAAAr9L,EAAAo9L,EAAAC,GAAA,IAAA/8L,EAAAL,EAAAm9L,GACpB,SAAAA,EAAYtlN,EAAcjB,EAAYymN,EAASC,GAAYx9L,EAAA,KAAAq9L,GACvD,IAAMT,EAAgB,IAAIzgJ,IAAI,CAC1B,CAAC,yBAA0BpkE,GAC3B,CAAC,qBAAsBwlN,GACvB,CAAC,wBAAyBC,KAI7B,OAFG1mN,EAAWtC,OAAS,GACpBooN,EAActvL,IAAI,kBAAmBx2B,GACxCypB,EAAAprB,KAAA,KACKynN,EACV,CAAC,OAAA78L,EAAAs9L,EAAA,CAXmB,CAASV,IClBjC,IAAMc,GAA8B,ICEpC,IAAMhnN,GAAS,CACXK,WAAY,CACRH,aAAc,GACdC,QAAS,qBACTC,SAAUylN,IAEdxrM,SAAU,CACNna,aAAc,qCACdC,QAAS,qBACTC,SAAUylN,IAEd5lN,OAAQ,CACJC,aAAc,GACdC,QAAS,8CACTC,SAAU,SAACb,GAAK,OAAKqmN,GAASrmN,IAAU,iBAAiB4C,KAAK5C,EAAM,GAExEwC,OAAQ,CACJ7B,aAAc,CACVmD,MAAK,SAAClD,GAAWiD,QAAQC,MAAMlD,EAAU,EACzCoW,KAAI,SAACpW,GAAWiD,QAAQmT,KAAKpW,EAAU,EACvC+R,KAAI,SAAC/R,GAAWiD,QAAQ8O,KAAK/R,EAAU,EACvC2G,MAAK,SAAC3G,GAAWiD,QAAQ0D,MAAM3G,EAAU,GAE7CA,QAAS,4BACTC,SHrBS,SAACb,GAAK,OAAK+tB,GAAS/tB,IACV,oBAAhBA,EAAM8D,OACS,oBAAf9D,EAAMgX,MACS,oBAAfhX,EAAM2S,MACU,oBAAhB3S,EAAMuH,KAAoB,GGmBjCxF,aAAc,CACVpB,aAAc,aACdC,QAAS,qBACTC,SAAUylN,IAEdxkN,qBAAsB,CAClBnB,aAAc,KACdC,QAAS,gCACTC,SAAU,SAACb,GAAK,OAAe,OAAVA,GH1BP,SAACA,GAAK,OAAKmO,MAAMkf,QAAQrtB,IAAUA,EAAM26L,MAAM2rB,GAAmB,CG0BzCoB,CAAc1nN,EAAM,GAE/D2nN,oBAAqB,CACjBhnN,aAAc,EACdC,QAAS,qCACTC,SAAU,SAACb,GAAK,OAAKomN,GAASpmN,IAAUA,GAAS,GAAKA,GAAS,CAAC,QCzClE4nN,GAAc,WAChB,SAAAA,EAAYC,EAAUxxM,EAAeyxM,EAAYC,EAASC,EAAoBC,GAASj+L,EAAA,KAAA49L,GACnFnjN,KAAKyjN,MAAQ,GACbzjN,KAAKg3D,QAAU,KACfh3D,KAAKojN,SAAWA,EAChBpjN,KAAK4R,cAAgBA,EACrB5R,KAAKqjN,WAAaA,EAClBrjN,KAAKsjN,QAAUA,EACftjN,KAAKujN,mBAAqBA,EAC1BvjN,KAAKwjN,QAAUA,EACfxjN,KAAK+4B,MAAQ/4B,KAAK+4B,MAAMr5B,KAAKM,KACjC,CA+EC,OA/EAslB,EAAA69L,EAAA,EAAAtlN,IAAA,OAAAtC,MACD,WACyB,OAAjByE,KAAKg3D,UACLyd,aAAaz0E,KAAKg3D,SAClBh3D,KAAKg3D,QAAU,KAEvB,GAAC,CAAAn5D,IAAA,QAAAtC,MACD,WACIyE,KAAKmoB,OACLnoB,KAAKg3D,QAAUjoD,WAAW/O,KAAK+4B,MAAO/4B,KAAK4R,cAAc8xM,yBAC7D,GAAC,CAAA7lN,IAAA,MAAAtC,MACD,SAAIooN,GACI3jN,KAAK4R,cAAcvU,uBAClB2C,KAAK4R,cAAcvU,qBAAqB0sB,SAAS/pB,KAAK4R,cAActU,gBAGzE0C,KAAKyjN,MAAMvoN,KAAKyoN,GACZ3jN,KAAKyjN,MAAM1pN,QAAUiG,KAAK4R,cAAcgyM,iBACxC5jN,KAAK+4B,QAGL/4B,KAAK0b,QAEb,GAAC,CAAA7d,IAAA,QAAAtC,MAAA,eAAAsoN,EAAA1+L,EAAAF,IAAAgC,MACD,SAAAC,IAAA,IAAAu8L,EAAAluM,EAAAuuM,EAAAtkM,EAAA,OAAAyF,IAAAuC,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,OAGI,GAFAxO,KAAKmoB,OACCs7L,EAAQzjN,KAAK+jN,eAEP,CAAFrxM,EAAAlE,KAAA,eAAAkE,EAAAwV,OAAA,wBAAAxV,EAAAlE,KAAA,EAGYxO,KAAKwjN,QAAQl/L,OAAOm/L,GAAM,OACpB,OADtBluM,EAAO7C,EAAAsV,KACP87L,EAAY/jN,KAAKwX,MAAK7E,EAAAqI,KAAA,EAAArI,EAAAlE,KAAA,GAEDxO,KAAKojN,SAAShtM,KAAKb,GAAQ,aACbjZ,KAD/BkjB,EAAQ9M,EAAAsV,MACDk7L,qBACTljN,KAAKujN,mBAAmBS,eAAexkM,EAAS0jM,qBACnDxwM,EAAAygK,GACO3zJ,EAAS7W,MAAK+J,EAAAlE,KACb,YADakE,EAAAygK,GACJ,GAGT,oBAHSzgK,EAAAygK,GAGQ,GAGjB,sBAHiBzgK,EAAAygK,GAGE,oBALI,OAAxBnzK,KAAKqjN,WAAWtqL,QAAQrmB,EAAAwV,OAAA,oBAG0B,OAAlDloB,KAAK4R,cAAc7T,OAAOmQ,KAAK,mBAAmBwE,EAAAwV,OAAA,oBAIV,OADxCloB,KAAK4R,cAAc7T,OAAOwU,KAAK,0CAC/BvS,KAAKqjN,WAAW77M,IAAI+N,EAASuuM,GAAWpxM,EAAAwV,OAAA,oBAGxC1I,EAAS7W,MAAM,QAAA+J,EAAAlE,KAAA,iBAAAkE,EAAAqI,KAAA,GAAArI,EAAA0yK,GAAA1yK,EAAA,SAIvB1S,KAAK4R,cAAc7T,OAAOmQ,KAAK,mBAAmB,yBAAAwE,EAAAyV,OAAA,GAAAjB,EAAA,mBAEzD,yBAAA28L,EAAA/1M,MAAA,KAAAlP,UAAA,EAjCA,IAiCA,CAAAf,IAAA,eAAAtC,MACD,WACI,GAA0B,IAAtByE,KAAKyjN,MAAM1pN,OAAf,CAIA,IAE6B0sB,EAFvBg9L,EAAQ,GACRQ,EAAcjkN,KAAKsjN,QAAQY,gBAAgBx9L,EAAArB,EAC9BrlB,KAAKyjN,OAAK,IAA7B,IAAA/8L,EAAAxoB,MAAAuoB,EAAAC,EAAAjmB,KAAAmmB,MAA+B,KAApB+8L,EAAIl9L,EAAAlrB,MACPooN,EAAKT,oBAAoBiB,IAAMF,EAAYE,MAC3CR,EAAKT,oBAAsBe,GAE3BjkN,KAAKsjN,QAAQc,OAAOT,IACpBF,EAAMvoN,KAAKyoN,EAEnB,CACA,OAAAt9M,GAAAqgB,EAAA/hB,EAAA0B,EAAA,SAAAqgB,EAAAhrB,GAAA,CAGA,GAFAsE,KAAKyjN,MAAQ,GAEQ,IAAjBA,EAAM1pN,OAGV,OAAO0pN,CAlBP,CAmBJ,KAACN,CAAA,CA1Fe,GCAdkB,GAAU,WACZ,SAAAA,IAAc9+L,EAAA,KAAA8+L,GACVrkN,KAAKoR,OAAS,EAClB,CAMC,OANAkU,EAAA++L,EAAA,EAAAxmN,IAAA,MAAAtC,MACD,SAAIkD,EAAMya,GACNlZ,KAAKoR,OAAOlW,KAAK,CAAEuD,KAAAA,EAAMya,KAAAA,GAC7B,GAAC,CAAArb,IAAA,SAAAtC,MACD,SAAO+oN,GACH,OAAOtkN,KAAKoR,OAAOrN,KAAI,SAAAiE,GAAA,IAAGvJ,EAAIuJ,EAAJvJ,KAAMya,EAAIlR,EAAJkR,KAAI,MAAQ,CAAEza,KAAAA,EAAM8lN,aAAcD,EAAME,2BAA2BtrM,GAAO,GAC9G,KAACmrM,CAAA,CATW,GCIhB,SAASI,GAAWd,EAAMW,GACtB,MAAO,CACH7lN,KAAMklN,EAAKllN,KACXg3B,KAAMkuL,EAAKluL,KACXivL,OAAQf,EAAK53M,GACbi2M,QAAS2B,EAAK3B,QACd2C,aAAchB,EAAKgB,aACnBC,kBAAmBN,EAAME,2BAA2Bb,EAAKlyG,WACzDozG,gBAAiBP,EAAME,2BAA2Bb,EAAKmB,SACvD1C,WAAYuB,EAAKvB,WAAW2C,SAC5B3zM,OAAQuyM,EAAKvyM,OAAO2zM,OAAOT,GAEnC,CAAC,IACKU,GAAY,WACd,SAAAA,EAAYj5M,EAAIi2M,EAASvjN,EAAMgzG,EAAW2wG,EAAYuC,GAAcp/L,EAAA,KAAAy/L,GAChEhlN,KAAKy1B,KAAO,EACZz1B,KAAKoR,OAAS,IAAIizM,GAClBrkN,KAAK+L,GAAKA,EACV/L,KAAKgiN,QAAUA,EACfhiN,KAAK2kN,aAAeA,EACpB3kN,KAAKvB,KAAOA,EACZuB,KAAKyxG,UAAYA,EACjBzxG,KAAKoiN,WAAaA,EAClBpiN,KAAKilN,aCTb,SAA+BjD,GAE3B,IADA,IAAIiD,EAAe,EACVprN,EAAI,EAAGA,EAAImoN,EAAQjoN,OAAS,EAAGF,IAAK,CACzC,IAAMgmC,EAAe,EAAJhmC,EAEjBorN,GAAgBA,EADA3iN,OAAO9G,SAASwmN,EAAQ99M,MAAM27B,EAAUA,EAAW,GAAI,OAC3B,CAChD,CACA,OAAOolL,CACX,CDC4BC,CAAsBllN,KAAKgiN,QACnD,CAiCC,OAjCA18L,EAAA0/L,EAAA,EAAAnnN,IAAA,WAAAtC,MACD,SAASkD,EAAMya,GACXlZ,KAAKoR,OAAO5J,IAAI/I,EAAMya,EAC1B,GAAC,CAAArb,IAAA,eAAAtC,MACD,SAAakD,EAAMlD,GACfyE,KAAKoiN,WAAWvvL,IAAIp0B,EAAMlD,EAC9B,GAAC,CAAAsC,IAAA,MAAAtC,MACD,SAAIupN,EAAS5B,GACTljN,KAAK8kN,QAAUA,EACf,IAAIK,EAAuBjC,EAE3B,OADAljN,KAAKoiN,WAAWvvL,IAAI,qBAAsBsyL,EAAqBhB,KACxD,CACHp4M,GAAI/L,KAAK+L,GACTtN,KAAMuB,KAAKvB,KACXg3B,KAAMz1B,KAAKy1B,KACXusL,QAAShiN,KAAKgiN,QACdvwG,UAAWzxG,KAAKyxG,UAChB2wG,WAAYpiN,KAAKoiN,WACjBhxM,OAAQpR,KAAKoR,OACb6zM,aAAcjlN,KAAKilN,aACnBH,QAAAA,EACI5B,0BACA,OAAOiC,CACX,EACIjC,wBAAoBA,GACpBiC,EAAuBjC,EACvBljN,KAAKoiN,WAAWvvL,IAAI,qBAAsBsyL,EAAqBhB,IACnE,EACAQ,aAAc3kN,KAAK2kN,aAE3B,GAAC,CAAA9mN,IAAA,UAAAtC,MACD,WACI,YAAwBe,IAAjB0D,KAAK8kN,OAChB,KAACE,CAAA,CA5Ca,GA8CZI,GAAuB,CACzB3zG,UAAW,CACPt1G,QAAS,6BACTkpN,gBAAiB,WAAe,EAChCjpN,SN9CR,SAAgBb,GACZ,OAAOomN,GAASpmN,IAAUA,aAAiBwE,IAC/C,GM8CIulN,cAAe,CACXnpN,QAAS,0BACTkpN,gBAAiB,WAAe,EAChCjpN,SAAU,SAACb,GAAK,OAAe,OAAVA,GAAkBwmN,GAAcxmN,EAAM,GAE/DgqN,mBAAoB,CAChBppN,QAAS,uBACTkpN,gBAAiB,WAAe,EAChCjpN,SAAUslN,IAEd8D,aAAc,CACVrpN,QAAS,uBACTkpN,gBAAiB,WAAe,EAChCjpN,SAAUslN,KEhFZ+D,GAAmB,WACrB,SAAAA,EAAYnB,EAAO1yM,EAAe8zM,GAAyBngM,EAAA,KAAAkgM,GACvDzlN,KAAKskN,MAAQA,EACbtkN,KAAK4R,cAAgBA,EACrB5R,KAAK0lN,wBAA0BA,CACnC,CAwCC,OAxCApgM,EAAAmgM,EAAA,EAAA5nN,IAAA,SAAAtC,MAAA,eAAAoqN,EAAAxgM,EAAAF,IAAAgC,MACD,SAAAC,EAAa0+L,GAAK,IAAAC,EAAAC,EAAAjsN,EAAAksN,EAAA,OAAA9gM,IAAAuC,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,cAAAkE,EAAAlE,KAAA,EACmBxO,KAAK0lN,wBAAwB1lN,KAAK4R,eAAc,OAEjF,IAFMi0M,EAAkBnzM,EAAAsV,KAClB89L,EAAYp8M,MAAMk8M,EAAM7rN,QACrBF,EAAI,EAAGA,EAAI+rN,EAAM7rN,SAAUF,EAChCisN,EAAUjsN,GAAK4qN,GAAWmB,EAAM/rN,GAAImG,KAAKskN,OAS5C,OAPKyB,EAAkB,CACpBC,cAAe,CACX,CACIC,SAAU,CAAE7D,WAAYyD,EAAmBd,UAC3CmB,WAAY,CAAC,CAAEN,MAAOE,OAGjCpzM,EAAAwV,OAAA,SACM,CACHrS,KAAMkwM,EACNv/L,QAAS,CACL,kBAAmBxmB,KAAK4R,cAAc3V,OACtC,eAAgB,mBAChB,wBAAyB+D,KAAKmmN,uBAAuBP,MAE5D,wBAAAlzM,EAAAyV,OAAA,GAAAjB,EAAA,UACJ,gBAAAkB,GAAA,OAAAu9L,EAAA73M,MAAA,KAAAlP,UAAA,EAvBA,IAuBA,CAAAf,IAAA,yBAAAtC,MACD,SAAuBqqN,GACnB,GAAqB,IAAjBA,EAAM7rN,OACN,MAAO,MAEX,IACwB0sB,EADlB2/L,EAAa7rN,OAAO2S,OAAO,MAAMwZ,EAAArB,EACpBugM,GAAK,IAAxB,IAAAl/L,EAAAxoB,MAAAuoB,EAAAC,EAAAjmB,KAAAmmB,MAA0B,KAAf+8L,EAAIl9L,EAAAlrB,MACL8qN,EAAgBD,EAAWzC,EAAKT,oBAAoBiB,MAAQ,EAClEiC,EAAWzC,EAAKT,oBAAoBiB,KAAOkC,EAAgB,CAC/D,CAAC,OAAAhgN,GAAAqgB,EAAA/hB,EAAA0B,EAAA,SAAAqgB,EAAAhrB,GAAA,CAGD,IAFA,IAAM4qN,EAAmB/rN,OAAO8wB,KAAK+6L,GAC/BG,EAAQ78M,MAAM48M,EAAiBvsN,QAC5BF,EAAI,EAAGA,EAAIysN,EAAiBvsN,SAAUF,EAAG,CAC9C,IAAM2sN,EAAiBF,EAAiBzsN,GACxC0sN,EAAM1sN,GAAK,GAAHK,OAAMssN,EAAc,KAAAtsN,OAAIksN,EAAWI,GAC/C,CACA,OAAOD,EAAM9oN,KAAK,IACtB,KAACgoN,CAAA,CA7CoB,GA+CnBgB,GAAa,IAAIl+L,IAAI,CAAC,IAAK,IAAK,IAAK,MChD3C,IACMm+L,GAAkB,WACpB,SAAAA,EAAYtD,EAAUnnN,GAAQspB,EAAA,KAAAmhM,GAC1B1mN,KAAKojN,SAAWA,EAChBpjN,KAAKuV,QAAU,CACXM,KAAM,CAAEmwM,cAAe,IACvBx/L,QAAS,CACL,kBAAmBvqB,EACnB,eAAgB,mBAChB,wBAAyB,SAGrC,CAiBC,OAjBAqpB,EAAAohM,EAAA,EAAA7oN,IAAA,oBAAAtC,MAAA,eAAAorN,EAAAxhM,EAAAF,IAAAgC,MACD,SAAAC,IAAA,IAAA1H,EAAA,OAAAyF,IAAAuC,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,OAEe,OAAAkE,EAAAlE,KAAA,EACgBxO,KAAKojN,SAAShtM,KAAKpW,KAAKuV,SAAQ,OAAzC,QAGuBjZ,KAH/BkjB,EAAQ9M,EAAAsV,MAGDk7L,oBAAiC,CAAAxwM,EAAAlE,KAAA,eAAAkE,EAAAwV,OAAA,SACnC1I,EAAS0jM,qBAAmB,cAAAxwM,EAAAlE,KAAA,EAEjCxO,KAAK4mN,qBAAoB,OAAAl0M,EAAAlE,KAAA,iCAAAkE,EAAAyV,OAAA,GAAAjB,EAAA,UAEtC,yBAAAy/L,EAAA74M,MAAA,KAAAlP,UAAA,EAZA,IAYA,CAAAf,IAAA,qBAAAtC,MACD,WACI,OAAO,IAAI8kB,SAAQ,SAAAC,GACfvR,WAAWuR,EA3BI,IA4BnB,GACJ,KAAComM,CAAA,CA5BmB,GCDlBG,GAAmC,MACnCC,GAAkB,WA+BpB,SAAAA,EAAYC,EAAazD,EAAS0D,EAAoBC,EAAuBC,GAAwB3hM,EAAA,KAAAuhM,GACjG9mN,KAAKg3D,aAAU16D,EACf0D,KAAK+mN,YAAcA,EACnB/mN,KAAKsjN,QAAUA,EACftjN,KAAKgnN,mBAAqBA,EAC1BhnN,KAAKmnN,oBAAsBD,EAC3BlnN,KAAKonN,sBAAsBH,EAC/B,CARC,OAQA3hM,EAAAwhM,EAAA,EAAAjpN,IAAA,iBAAAtC,MACD,SAAe8rN,GAOX,OANArnN,KAAKmnN,oBAAsBpnN,KAAKwX,MAChCvX,KAAKsjN,QAAQW,YAAcoD,EAC3BrnN,KAAKonN,sBAAsBP,IAIpB7mN,KAAK+mN,YAAYO,KAAK,+BAAgC,CACzD/rN,MAAO8rN,EACPnuM,KAAMlZ,KAAKmnN,qBAEnB,GAAC,CAAAtpN,IAAA,wBAAAtC,MACD,SAAsB+xC,GAAc,IAAAv7B,EAAA,KAChC0iE,aAAaz0E,KAAKg3D,SAClB,IAAMuwJ,EAAmCvnN,KAAKmnN,oBAC9CnnN,KAAKg3D,QAAUjoD,WAAUoW,EAAAF,IAAAgC,MAAC,SAAAC,IAAA,IAAA+8L,EAAA,OAAAh/L,IAAAuC,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,cAAAkE,EAAAlE,KAAA,EACIuD,EAAKi1M,mBAAmBQ,oBAAmB,OAA/DvD,EAAWvxM,EAAAsV,KAGbu/L,IAAqCx1M,EAAKo1M,qBAC1Cp1M,EAAKiyM,eAAeC,GACvB,wBAAAvxM,EAAAyV,OAAA,GAAAjB,EAAA,KACFomB,EACP,IAAC,EAAAzvC,IAAA,SAAAtC,MAAA,eAAAksN,EAAAtiM,EAAAF,IAAAgC,MA7DD,SAAAosJ,EAAoB0zC,EAAazD,EAAS0D,GAAkB,IAAAU,EAAAR,EAAAD,EAAA,OAAAhiM,IAAAuC,MAAA,SAAA+rJ,GAAA,cAAAA,EAAAx4J,KAAAw4J,EAAA/kK,MAAA,cAAA+kK,EAAA/kK,KAAA,EACrBu4M,EAAYzoN,KAAK,gCAA+B,OA0BlF,YAvB4BhC,KAHvBorN,EAAoBn0C,EAAAvrJ,OAMtBs7L,EAAQW,YAAc,EACtBiD,EAAyB,EAEzBD,EAAwB,GAEnBS,EAAqBxuM,KAAOnZ,KAAKwX,MAAQsvM,IAG9CvD,EAAQW,YAAcyD,EAAqBnsN,MAC3C2rN,EAAyBQ,EAAqBxuM,KAE9C+tM,EAAwB,IAKxB3D,EAAQW,YAAcyD,EAAqBnsN,MAC3C2rN,EAAyBQ,EAAqBxuM,KAE9C+tM,EAAwBJ,IAAoC9mN,KAAKwX,MAAQ2vM,IAC5E3zC,EAAArrJ,OAAA,SACM,IAAI4+L,EAAmBC,EAAazD,EAAS0D,EAAoBC,EAAuBC,IAAuB,wBAAA3zC,EAAAprJ,OAAA,GAAAkrJ,EAAA,KACzH,gBAAAjrJ,EAAAC,EAAAq3K,GAAA,OAAA+nB,EAAA35M,MAAA,KAAAlP,UAAA,EAgCA,MAhCAkoN,CAAA,CA9BmB,GCClBa,GAAkB,WACpB,SAAAA,IAAcpiM,EAAA,KAAAoiM,GACV3nN,KAAK4lN,MAAQ,EACjB,CAGC,OAHAtgM,EAAAqiM,EAAA,EAAA9pN,IAAA,MAAAtC,MACD,SAAIooN,GACA3jN,KAAK4lN,MAAM1qN,KAAKyoN,EACpB,KAACgE,CAAA,CANmB,GCAxB,SAASC,GAAoC3D,GACzC,OAAO3zM,KAAK2nB,MAAoB,WAAdgsL,EACtB,CAAC,IACK4D,GAAO,WACT,SAAAA,EAAYC,GAAoBviM,EAAA,KAAAsiM,GAI5B7nN,KAAK+nN,aAAeD,EACpB9nN,KAAKgoN,kBAAoBJ,GAAoCE,EACjE,CA4BC,OA3BDxiM,EAAAuiM,EAAA,EAAAhqN,IAAA,cAAAsL,IAGA,WACI,OAAOnJ,KAAK+nN,YAChB,EAACl1L,IACD,SAAgBoxL,GACZjkN,KAAK+nN,aAAe9D,EACpBjkN,KAAKgoN,kBAAoBJ,GAAoC3D,EACjE,GACA,CAAApmN,IAAA,kBAAAsL,IASA,WACI,MAAO,CACHg7M,IAAKnkN,KAAK+nN,aACVE,OAAQjoN,KAAKgoN,kBAErB,GAAC,CAAAnqN,IAAA,SAAAtC,MACD,SAAOooN,GACH,OAAOA,EAAKsB,cAAgBtB,EAAKT,oBAAoB+E,MACzD,KAACJ,CAAA,CAnCQ,GCCZ,IACKK,GAAyB,SAAAC,GAC3B,SAAAD,EAAYE,GAA0C,IAAAr2M,EAAA,KAAnBs2M,EAAYzpN,UAAA7E,OAAA,QAAAuC,IAAAsC,UAAA,GAAAA,UAAA,GAAG,GAAE2mB,EAAA,KAAA2iM,GAChDloN,KAAKsoN,gBAAiB,EACtBtoN,KAAKuoN,wBAA0B,SAAC5/M,GAC5BoJ,EAAKu2M,eAA2B,kBAAV3/M,EAGtBoJ,EAAKs2M,aAAatuN,OAAS,CAC/B,EACAiG,KAAKqoN,aAAeA,EACpBD,EAAsBI,cAAcxoN,KAAKuoN,wBAC7C,CAkCC,OAlCAjjM,EAAA4iM,EAAA,EAAArqN,IACCmiC,OAAOhL,SADRz5B,MAAA0pB,IAAAgC,MACD,SAAA1rB,IAAA,IAAA1B,EAAA,OAAAorB,IAAAuC,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,OACa3U,EAAImG,KAAKqoN,aAAatuN,OAAS,EAAC,YAAEF,GAAK,GAAC,CAAA6Y,EAAAlE,KAAA,QAC7C,OAD6CkE,EAAAlE,KAAA,EACvCxO,KAAKqoN,aAAaxuN,GAAE,SADuBA,EAAC6Y,EAAAlE,KAAA,gCAAAkE,EAAAyV,OAAA,GAAA5sB,EAAA,UAGzD,CAAAsC,IAAA,OAAAtC,MACD,SAAKoC,GACGA,EAAQskN,WAAajiN,KAAKsoN,gBAC1BtoN,KAAKqoN,aAAantN,KAAKyC,EAE/B,GAAC,CAAAE,IAAA,MAAAtC,MACD,SAAIoC,GA9BR,IAA2B8qN,EAAOC,EAAPD,EA+BG9qN,EA/BI+qN,EA+BK1oN,KAAKk8B,SA9BpCusL,IAAUC,QAEApsN,IAAVmsN,QAAiCnsN,IAAVosN,GAChBD,EAAM18M,KAAO28M,EAAM38M,IAAM08M,EAAMzG,UAAY0G,EAAM1G,UA4BpDhiN,KAAKqoN,aAAajkN,MAEtBpE,KAAK2oN,sBACT,GAAC,CAAA9qN,IAAA,QAAAsL,IACD,WAEI,OADAnJ,KAAK2oN,uBACE3oN,KAAKqoN,aAAatuN,OAAS,EAC5BiG,KAAKqoN,aAAa,QAClB/rN,CACV,GAAC,CAAAuB,IAAA,UAAAsL,IACD,WAEI,OADAnJ,KAAK2oN,uBACE3oN,KAAKqoN,aAAatuN,OAAS,EAC5BiG,KAAKqoN,aAAaroN,KAAKqoN,aAAatuN,OAAS,QAC7CuC,CACV,GAAC,CAAAuB,IAAA,uBAAAtC,MACD,WACI,KAAOyE,KAAKqoN,aAAatuN,OAAS,IACgC,IAA9DiG,KAAKqoN,aAAaroN,KAAKqoN,aAAatuN,OAAS,GAAGkoN,WAChDjiN,KAAKqoN,aAAajkN,KAE1B,KAAC8jN,CAAA,CA7C0B,GCN/B,SAASU,GAAatE,EAAOprM,GACzB,OAAIyoM,GAASzoM,GAGFA,EAEPA,aAAgBnZ,KACTukN,EAAMuE,QAAQ3vM,GAElBorM,EAAM/sM,KACjB,CCT0D,IAEpDuxM,GAAW,WACb,SAAAA,EAAYC,EAAWzF,EAAS0F,EAAaC,EAAsB3E,EAAO8D,EAAuBrqN,EAAQmrN,GAAoB,IAAAn3M,EAAA,KAAAwT,EAAA,KAAAujM,GACzH9oN,KAAKmpN,UAAY,IAAI7jD,QACrBtlK,KAAKsoN,gBAAiB,EACtBtoN,KAAKuoN,wBAA0B,SAAC5/M,GAC5BoJ,EAAKu2M,eAA2B,kBAAV3/M,EAGtBoJ,EAAKo3M,UAAY,IAAI7jD,OACzB,EACAtlK,KAAK+oN,UAAYA,EACjB/oN,KAAKsjN,QAAUA,EACftjN,KAAKgpN,YAAcA,EACnBhpN,KAAKipN,qBAAuBA,EAC5BjpN,KAAKskN,MAAQA,EACbtkN,KAAKjC,OAASA,EACdiC,KAAKkpN,mBAAqBA,EAE1Bd,EAAsBI,cAAcxoN,KAAKuoN,wBAC7C,CA6FC,OA7FAjjM,EAAAwjM,EAAA,EAAAjrN,IAAA,YAAAtC,MACD,SAAUkD,EAAM2hB,GACZ,IAAMgpM,EAAgBR,GAAa5oN,KAAKskN,MAAOlkM,EAAQqxF,WACjDizG,EAAS1kN,KAAKgpN,YAAYK,SAAS,IAInC/D,EAAgBvD,GAAc3hM,EAAQklM,gBAA4C,OAA1BllM,EAAQklM,cAChEllM,EAAQklM,cACRtlN,KAAKkpN,mBAAmBhtL,QACxByoL,EAAeW,EAAgBA,EAAcv5M,QAAKzP,EAClD0lN,EAAUsD,EAAgBA,EAActD,QAAUhiN,KAAKgpN,YAAYK,SAAS,KAC5EjH,EAAa,IAAIF,GAAe,IAAIxgJ,KACN,mBAAzBthD,EAAQolM,cACfpD,EAAWvvL,IAAI,2BAA4BzS,EAAQolM,cAEvD,IAAM7B,EAAO,IAAIqB,GAAaN,EAAQ1C,EAASvjN,EAAM2qN,EAAehH,EAAYuC,GAQhF,OANI3kN,KAAKsoN,iBACLtoN,KAAKmpN,UAAU3hN,IAAIm8M,IACgB,IAA/BvjM,EAAQmlM,oBACRvlN,KAAKkpN,mBAAmBhuN,KAAKyoN,IAG9BA,CACX,GAAC,CAAA9lN,IAAA,YAAAtC,MACD,SAAUwtN,EAAWhrN,GACjBiC,KAAK+oN,UAAYA,EACjB/oN,KAAKjC,OAASA,CAClB,GAAC,CAAAF,IAAA,UAAAtC,MACD,SAAQooN,EAAMmB,GAEV,GAAK9kN,KAAKmpN,UAAUp0I,OAAO4uI,GAA3B,CAQA3jN,KAAKipN,qBAAqBK,kBAAkB3F,GAC5C,IAAM4F,EAAY5F,EAAKhoM,IAAImpM,EAAS9kN,KAAKsjN,QAAQY,iBACjDlkN,KAAKkpN,mBAAmB9kN,IAAIu/M,GACxB3jN,KAAKsjN,QAAQc,OAAOmF,IACpBvpN,KAAK+oN,UAAUvhN,IAAI+hN,EALvB,MAJS5F,EAAK1B,WACNjiN,KAAKjC,OAAOmQ,KAAK,mDAU7B,GAAC,CAAArQ,IAAA,cAAAtC,MACD,SAAYooN,GAAM,IAAA5uM,EAAA,KACd,MAAO,CACChJ,SACA,OAAO43M,EAAK53M,EAChB,EACIi2M,cACA,OAAO2B,EAAK3B,OAChB,EACAC,QAAS,kBAAM0B,EAAK1B,SAAS,EAC7BtmM,IAAK,SAACmpM,GACF,IAAM0E,EAAcZ,GAAa7zM,EAAKuvM,MAAOQ,GAC7C/vM,EAAK00M,QAAQ9F,EAAM6F,EACvB,EAER,GAAC,CAAA3rN,IAAA,sBAAAtC,MACD,SAAoBkD,EAAM2hB,GAAwC,IAA/BpkB,EAAM4C,UAAA7E,OAAA,QAAAuC,IAAAsC,UAAA,GAAAA,UAAA,GAAGwmN,GACpCsE,EAAW,GACTC,EAAe,CAAC,EAKtB,GAJoB,kBAATlrN,IACPirN,GAAY,sCAAJxvN,cAAiDuE,GACzDA,EAAO8D,OAAO9D,SAEFnC,IAAZ8jB,GAA0BkJ,GAASlJ,GAKnC,IADA,IAAMwpM,EAAcxpM,GAAW,CAAC,EAChC69B,EAAA,EAAA4rK,EAAqBtvN,OAAO8wB,KAAKrvB,GAAOiiD,EAAA4rK,EAAA9vN,OAAAkkD,IAAE,CAArC,IAAM6rK,EAAMD,EAAA5rK,GACT1jD,OAAOC,UAAUS,eAAeP,KAAKkvN,EAAaE,SAAmCxtN,IAAxBstN,EAAYE,GACrE9tN,EAAO8tN,GAAQ1tN,SAASwtN,EAAYE,IACpCH,EAAaG,GAAUF,EAAYE,IAGnCJ,GAAY,SAAJxvN,OAAa4vN,EAAM,KAAA5vN,OAAI8B,EAAO8tN,GAAQ3tN,QAAO,UAAAjC,cAAgB0vN,EAAYE,IACjFH,EAAaG,GAAU9tN,EAAO8tN,GAAQzE,gBAAgBuE,EAAYE,KAItEH,EAAaG,GAAU9tN,EAAO8tN,GAAQzE,gBAAgBuE,EAAYE,GAE1E,MAjBAJ,GAAY,iCAsBhB,OAHIA,EAAS3vN,OAAS,GAClBiG,KAAKjC,OAAOmQ,KAAK,uBAADhU,OAAwBwvN,IAErC,CAAEjrN,KAAAA,EAAM2hB,QAASupM,EAC5B,KAACb,CAAA,CAhHY,GCLoD,IAE/DiB,GAAmB,WACrB,SAAAA,IAAcxkM,EAAA,KAAAwkM,GACV/pN,KAAKgqN,eAAiB,IAAItoJ,GAC9B,CAMC,OANAp8C,EAAAykM,EAAA,EAAAlsN,IAAA,OAAAtC,MAAA,eAAA0uN,EAAA9kM,EAAAF,IAAAgC,MACD,SAAAC,EAAWrpB,GAAG,OAAAonB,IAAAuC,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,cAAAkE,EAAAwV,OAAA,SACHloB,KAAKgqN,eAAe7gN,IAAItL,IAAI,wBAAA6U,EAAAyV,OAAA,GAAAjB,EAAA,UACtC,gBAAAkB,GAAA,OAAA6hM,EAAAn8M,MAAA,KAAAlP,UAAA,EAHA,IAGA,CAAAf,IAAA,OAAAtC,MAAA,eAAA2uN,EAAA/kM,EAAAF,IAAAgC,MACD,SAAAosJ,EAAWx1K,EAAKtC,GAAK,OAAA0pB,IAAAuC,MAAA,SAAA+rJ,GAAA,cAAAA,EAAAx4J,KAAAw4J,EAAA/kK,MAAA,OACjBxO,KAAKgqN,eAAen3L,IAAIh1B,EAAKtC,GAAO,wBAAAg4K,EAAAprJ,OAAA,GAAAkrJ,EAAA,UACvC,gBAAAhrJ,EAAAq3K,GAAA,OAAAwqB,EAAAp8M,MAAA,KAAAlP,UAAA,EAHA,MAGAmrN,CAAA,CAToB,GAWzB,SAASI,GAAmBtsN,EAAKsmN,GAC7B,OAAQtmN,GACJ,IAAK,+BACD,IAAMwoB,EAAO1gB,KAAK9C,MAAMshN,GACxB,OhBJD76L,GADqB/tB,EgBKU8qB,IhBHlCs7L,GAASpmN,EAAMA,QACfomN,GAASpmN,EAAM2d,MgBGLmN,OACA/pB,EAEV,IAAK,uBACD,OhBIZ,SAAoBf,GAEhB,MAAwB,kBAAVA,GAAsB,qBAAqB4C,KAAK5C,EAClE,CgBPmB6uN,CAAWjG,GACZA,OACA7nN,EhBZlB,IAAgCf,CgBchC,CC1BA,IACM8uN,GAAa,WACf,SAAAA,EAAYjH,EAAUkH,GAAmB/kM,EAAA,KAAA8kM,GACrCrqN,KAAKojN,SAAWA,EAChBpjN,KAAKsqN,kBAAoBA,EACzBtqN,KAAKuqN,aAAelqM,QAAQC,UAC5BtgB,KAAKwqN,SAAW,EACpB,CAuCC,OAvCAllM,EAAA+kM,EAAA,EAAAxsN,IAAA,MAAAtC,MACD,SAAIga,EAAS2D,GACTlZ,KAAKwqN,SAAStvN,KAAK,CAAEqa,QAAAA,EAAS2D,KAAAA,IAE9B,IADA,IAAIuxM,EAAYzqN,KAAKwqN,SAASpoC,QAAO,SAAC1sI,EAAK1tC,GAAW,OAAO0tC,EAAQg1K,GAAf1iN,EAAPuN,QAAkD,GAAE,GAC5Fk1M,EAAYzqN,KAAKsqN,mBAAmB,CACvC,IAAM/0M,EAAUvV,KAAKwqN,SAASrlN,QAC9B,IAAKoQ,EACD,MAEJk1M,GAAaC,GAAoBn1M,EAAQA,QAC7C,CACJ,GAAC,CAAA1X,IAAA,QAAAtC,MAAA,eAAAsoN,EAAA1+L,EAAAF,IAAAgC,MACD,SAAAosJ,IAAA,IAAAm3C,EAAAz4M,EAAA,YAAAkT,IAAAuC,MAAA,SAAA+rJ,GAAA,cAAAA,EAAAx4J,KAAAw4J,EAAA/kK,MAAA,UACiC,IAAzBxO,KAAKwqN,SAASzwN,OAAY,CAAAw5K,EAAA/kK,KAAA,eAAA+kK,EAAArrJ,OAAA,iBAwB3B,OAtBGsiM,EAAWxqN,KAAKwqN,SACtBxqN,KAAKwqN,SAAW,GAChBxqN,KAAKuqN,aAAevqN,KAAKuqN,aAAaz7M,KAAIqW,EAAAF,IAAAgC,MAAC,SAAAC,IAAA,IAAAR,EAAAD,EAAAI,EAAAtR,EAAA2D,EAAAyxM,EAAAhiN,EAAA,OAAAsc,IAAAuC,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,OAAAkY,EAAArB,EACPmlM,GAAQ93M,EAAAqI,KAAA,EAAA2L,EAAAxoB,IAAA,WAAAuoB,EAAAC,EAAAjmB,KAAAmmB,KAAE,CAAFlU,EAAAlE,KAAA,SAAd,GAAcqY,EAAAJ,EAAAlrB,MAA3Bga,EAAOsR,EAAPtR,QAAS2D,EAAI2N,EAAJ3N,OAEdnZ,KAAKwX,OAAS2B,EA3BlB,OA2BgC,CAAAxG,EAAAlE,KAAA,eAAAkE,EAAAwV,OAAA,6BAAAxV,EAAAqI,KAAA,EAAArI,EAAAlE,KAAA,GAGJuD,EAAKqxM,SAAShtM,KAAKb,GAAQ,QAAAo1M,EAAAj4M,EAAAsV,KAA3Crf,EAAKgiN,EAALhiN,MAAK+J,EAAAygK,GACLxqK,EAAK+J,EAAAlE,KACJ,YADIkE,EAAAygK,IAEJ,oBADSzgK,EAAAygK,GAAA,GAGT,sBAFiBzgK,EAAAygK,GAEE,2BAAAzgK,EAAAwV,OAAA,oBACI,OAAxBnW,EAAKvK,IAAI+N,EAAS2D,GAAMxG,EAAAwV,OAAA,oBAGlB,QAAAxV,EAAAlE,KAAA,iBAAAkE,EAAAqI,KAAA,GAAArI,EAAA0yK,GAAA1yK,EAAA,iBAAAA,EAAAlE,KAAA,gBAAAkE,EAAAlE,KAAA,iBAAAkE,EAAAqI,KAAA,GAAArI,EAAAs1K,GAAAt1K,EAAA,SAAAgU,EAAA/hB,EAAA+N,EAAAs1K,IAAA,eAAAt1K,EAAAqI,KAAA,GAAA2L,EAAAhrB,IAAAgX,EAAA2yK,OAAA,6BAAA3yK,EAAAyV,OAAA,GAAAjB,EAAA,iCAKvBqsJ,EAAA/kK,KAAA,EACGxO,KAAKuqN,aAAY,wBAAAh3C,EAAAprJ,OAAA,GAAAkrJ,EAAA,UAC1B,yBAAAwwC,EAAA/1M,MAAA,KAAAlP,UAAA,EA5BA,MA4BAyrN,CAAA,CA7Cc,GA+CnB,SAASK,GAAoBn1M,GAEzB,IADA,IAAImgC,EAAQ,EACH77C,EAAI,EAAGA,EAAI0b,EAAQM,KAAKmwM,cAAcjsN,SAAUF,EAErD,IADA,IAAMqsN,EAAa3wM,EAAQM,KAAKmwM,cAAcnsN,GAAGqsN,WACxC7jN,EAAI,EAAGA,EAAI6jN,EAAWnsN,SAAUsI,EACrCqzC,GAASwwK,EAAW7jN,GAAGujN,MAAM7rN,OAGrC,OAAO27C,CACX,CCvDA,SAASk1K,GAA+BpkM,GACpC,IAAMjrB,EAAQirB,EAAQrd,IAAI,gCAC1B,GAAqB,kBAAV5N,EAAX,CAGA,IAAMsvN,EAAWvoN,OAAO3B,WAAWpF,GACnC,KAAI+G,OAAO5B,MAAMmqN,IAAaA,EAAW,GAAKA,EAAW,GAGzD,OAAOA,CALP,CAMJ,KCZMC,GAAc,WAChB,SAAAA,IAAcvlM,EAAA,KAAAulM,GACV9qN,KAAK0O,UAAY,EACrB,CAgBC,OAhBA4W,EAAAwlM,EAAA,EAAAjtN,IAAA,UAAAtC,MACD,SAAQwvN,GACJ/qN,KAAK0O,UAAUxT,KAAK6vN,EACxB,GAAC,CAAAltN,IAAA,QAAAtC,MACD,SAAMoC,GACF,IAC0C8oB,EADpCukM,EAAe,GAAGtkM,EAAArB,EACIrlB,KAAK0O,WAAS,IAA1C,IAAAgY,EAAAxoB,MAAAuoB,EAAAC,EAAAjmB,KAAAmmB,MAA4C,KAClCqkM,GAAcF,EADAtkM,EAAAlrB,OACcoC,GAC9BstN,GACAD,EAAa9vN,KAAK+vN,EAC1B,CAAC,OAAA5kN,GAAAqgB,EAAA/hB,EAAA0B,EAAA,SAAAqgB,EAAAhrB,GAAA,CACD,OAAO,SAACwvN,GACJ,IAAK,IAALjtK,EAAA,EAAAktK,EAA0BH,EAAY/sK,EAAAktK,EAAApxN,OAAAkkD,IAAE,EACpCgtK,EADkBE,EAAAltK,IACNitK,EAChB,CACJ,CACJ,KAACJ,CAAA,CAnBe,GCApB,SAASM,GAAez1M,EAAK01M,GAEzB,GAAgC,IAA5B11M,EAAInS,QAAQ,aAAgD,IAA3BmS,EAAInS,QAAQ,WAC7C,OAAOmS,EACX,IACI,IAAM21M,EAAc,IAAI7jM,IAAI9R,EAAK01M,GAAShyM,KAE1C,OAAK1D,EAAIozD,SAAS,MAAQuiJ,EAAYviJ,SAAS,KACpCuiJ,EAAYpnN,MAAM,GAAI,GAE1BonN,CACX,CACA,MAAOlxK,GAEH,OAAOzkC,CACX,CACJ,CCbA,SAAS41M,GAAmB95G,EAAWx0E,EAAO4jF,EAAMwqG,GAChD,IAAMG,EAKV,SAAmBvuL,GACf,QAASA,GAA0B,kBAAVA,KAAwBA,aAAiBxV,IACtE,CAP2BgkM,CAAUxuL,GAC3BtnB,EAAM61M,EAAiBvuL,EAAMtnB,IAAMpT,OAAO06B,GAC1Cj/B,IAAY6iH,GAAQA,EAAK7iH,QAAYwtN,GAAkBvuL,EAAMj/B,QAAW,MAC9E,MAAO,CAAE2X,IAAKy1M,GAAez1M,EAAK01M,GAAUrtN,OAAAA,EAAQyzG,UAAAA,EAAW5xG,KAAM,QACzE,CCNA,IAAM6rN,GAA4B,CAC9BC,UAAU,EACV/sM,OAAO,EACPjJ,KAAK,GAET,SAASi2M,GAAuBC,GAC5B,OAAOtxN,OAAOuzI,OAAOvzI,OAAOuzI,OAAO,CAAC,EAAG49E,IAA4BG,EACvE,CACA,SAASC,GAAqBxxN,GAC1B,IAAMyxN,EAAe,CAAC,YAAa,WAC7B1gM,EAAO9wB,OAAO8wB,KAAKqgM,IACzB,OAAOpiM,GAAShvB,IAAQ+wB,EAAK6qK,OAAM,SAAAr4L,GAAG,OAAIkuN,EAAahiM,gBAAgBzvB,EAAIuD,GAAK,GACpF,CCVA,ICFMmuN,GAAuB,SAACr2M,GAAG,OAAKA,EAAI+B,UAAY,GAAG,ECEnDu0M,GAAkB,WACpB,SAAAA,EAAYtzM,EAAU1Z,EAAUitN,EAAaC,EAAWC,EAAUhE,EAAuBhwG,GAAa,IAAArmG,EAAA,KAAAwT,EAAA,KAAA0mM,GAGlGjsN,KAAKqsN,iBAAkB,EACvBrsN,KAAK2Y,SAAWA,EAChB3Y,KAAKf,SAAWA,EAChBe,KAAKksN,YAAcA,EACnBlsN,KAAKmsN,UAAYA,EACjBnsN,KAAKosN,SAAWA,EAChBpsN,KAAKo4G,YAAcA,EACnBgwG,EAAsBI,eAAc,SAAA7/M,GAC3BoJ,EAAKs6M,iBAA6B,kBAAV1jN,IACzBoJ,EAAKs6M,iBAAkB,EAE/B,GACJ,CA+BC,OA/BA/mM,EAAA2mM,EAAA,EAAApuN,IAAA,YAAAtC,MACD,SAAUqW,GAAe,IAAAmD,EAAA,KAGrB,GAAKnD,EAAc06M,8BAA+BtsN,KAAKqsN,gBAAvD,CAGA,IAAM1I,EAAO3jN,KAAKksN,YAAYK,UAAU,iBAAkB,CAAE96G,UAAW,EAAG6zG,cAAe,OACnFkH,EAAsBZ,GAAuBh6M,EAAci6M,oBAC3Dl2M,EAAM,IAAI8R,IAAIznB,KAAKf,SAASoa,MAClCrZ,KAAKosN,UAAS,SAACtH,GACX,IAAI/vM,EAAKs3M,gBAAT,CAKA,IAAMh3B,EAAQzjL,EAAc66M,gBAAgBC,aAAa/2M,IAAQq2M,GAAqBr2M,GACtFguM,EAAKllN,MAAQ42L,EFjCY,SAAC62B,EAAa9zG,EAAai9E,EAAOiwB,GACnE,SAASqH,EAAwBC,EAAOn7G,EAAWqzG,GAC/C,IANR,SAAwBrzG,EAAWqzG,GAC/B,YAAsBxoN,IAAdm1G,QAAuCn1G,IAAZwoN,GAChB,IAAdrzG,GAA+B,IAAZqzG,CAC5B,CAGY+H,CAAep7G,EAAWqzG,GAA9B,CAEA,IAAMnB,EAAOuI,EAAYK,UAAU,kBAADryN,OAAmB0yN,EAAK,KAAA1yN,OAAIm7L,GAAS,CACnE5jF,UAAAA,EACA6zG,cAAAA,EACAC,oBAAoB,IAExB5B,EAAKr1E,aAAa,wBAAyB,mBAC3Cq1E,EAAKr1E,aAAa,gBAAiBs+E,GACnCV,EAAYzC,QAAQ9F,EAAMmB,EARhB,CASd,CACA,IAAMtmL,EAAQ45E,EAAY00G,iBAAiB,cAAc,GACzD,GAAItuL,EAAO,CACPmuL,EAAwB,SAAUnuL,EAAMuuL,iBAAkBvuL,EAAMwuL,gBAChEL,EAAwB,WAAYnuL,EAAMyuL,cAAezuL,EAAM0uL,aAC/DP,EAAwB,gBAAiBnuL,EAAM2uL,WAAY3uL,EAAM4uL,mBACjET,EAAwB,YAAanuL,EAAM4uL,kBAAmB5uL,EAAM6uL,iBAEpE,IAAMC,EAAkB9uL,EAAM+uL,uBAAyB/uL,EAAMgvL,WAC7Db,EAAwB,eAAgBnuL,EAAMivL,aAAcH,GAC5DX,EAAwB,MAAOnuL,EAAM+uL,sBAAuB/uL,EAAMgvL,YAClEb,EAAwB,cAAenuL,EAAMkvL,aAAclvL,EAAMmvL,eACjEhB,EAAwB,eAAgBnuL,EAAMmvL,cAAenvL,EAAMovL,aACnEjB,EAAwB,wBAAyBnuL,EAAMqvL,2BAA4BrvL,EAAMsvL,0BACzFnB,EAAwB,YAAanuL,EAAMuvL,eAAgBvvL,EAAMwvL,aACrE,CACJ,CEMYC,CAA6Bl5M,EAAKm3M,YAAan3M,EAAKqjG,YAAai9E,EAAOsuB,GAExEA,EAAKr1E,aAAa,wBAAyB,kBAC3Cq1E,EAAKr1E,aAAa,6BAA8B+mD,GAC5Cm3B,EAAoBb,UACpBhI,EAAKr1E,aAAa,gCAAiCv5H,EAAK4D,SAASgzM,UACjEa,EAAoB5tM,OACpB+kM,EAAKr1E,aAAa,6BAA8Bv5H,EAAK4D,SAASiG,OAC9D4tM,EAAoB72M,KACpBguM,EAAKr1E,aAAa,2BAA4B34H,EAAIlb,YACtDsa,EAAKo3M,UAAU+B,SAASvK,GACxB5uM,EAAKm3M,YAAYzC,QAAQ9F,EAAMmB,EAjBrB,CAkBd,GAxBA,CAyBJ,KAACmH,CAAA,CA/CmB,GCJxB,SAASkC,GAA8BC,GACnC,OAAOA,CACX,CACA,SAASC,GAAyB9yN,GAC9B,MAAwB,oBAAVA,CAClB,CCHA,IAAM+yN,GAAoB,CAAC,UAAW,WAAY,IAAK,KAAM,OACvDC,GAAoB,WACtB,SAAAA,EAAYrC,EAAasC,EAAcC,GAAY,IAAA18M,EAAA,KAAAwT,EAAA,KAAAgpM,GAC/CvuN,KAAKksN,YAAcA,EACnBlsN,KAAKwuN,aAAeA,EACpBxuN,KAAKyuN,WAAaA,EAClBzuN,KAAK0uN,eAAiB,GACtB1uN,KAAK2uN,uBAAyBR,GAC9BnuN,KAAKjC,OAAS,CAAEsB,MAAOD,QAAQC,MAAO6O,KAAM9O,QAAQ8O,KAAMqE,KAAMnT,QAAQmT,KAAMzP,MAAO1D,QAAQ0D,OAC7F9C,KAAK4uN,aAAe,SAACC,GACjB,GAAK98M,EAAK+8M,mBAAmBD,GAA7B,CAEA,IAAMT,EAAqBr8M,EAAK48M,uBAAuB,CAAEh5M,IAAKk5M,EAAal5M,IAAK9V,KAAMgvN,EAAahvN,OACnG,GAAKuuN,EAAL,CAEA,GAAsC,kBAA3BA,EAAmBz4M,IAA9B,CAIA,IAAMguM,EAAO5xM,EAAKm6M,YAAYK,UAAU,UAADryN,OAAW20N,EAAa7wN,OAAOgD,eAAiB,CAAEywG,UAAWo9G,EAAap9G,UAAW8zG,oBAAoB,IAIhJ,OAHA5B,EAAKr1E,aAAa,wBAAyB,WAC3Cq1E,EAAKr1E,aAAa,cAAeugF,EAAa7wN,QAC9C2lN,EAAKr1E,aAAa,WAAY8/E,EAAmBz4M,KAC1C,SAACu1M,GACqB,YAArBA,EAAWviN,QACXg7M,EAAKr1E,aAAa,mBAAoB48E,EAAWj0M,QACjDlF,EAAKm6M,YAAYzC,QAAQ9F,EAAMuH,EAAWpG,SAElD,CAVA,CAFI/yM,EAAKhU,OAAOmQ,KAAK,uEAADhU,cAA+Ek0N,EAAmBz4M,KAF5G,CAHA,CAkBd,CACJ,CAYC,OAZA2P,EAAAipM,EAAA,EAAA1wN,IAAA,YAAAtC,MACD,SAAUqW,GACN5R,KAAKjC,OAAS6T,EAAc7T,OACxB6T,EAAcm9M,gCACd/uN,KAAK0uN,eAAiB98M,EAAcyE,SACpCrW,KAAKyuN,WAAWO,QAAQhvN,KAAK4uN,cAC7B5uN,KAAKwuN,aAAaQ,QAAQhvN,KAAK4uN,cAC/B5uN,KAAK2uN,uBAAyB/8M,EAAc+8M,uBAEpD,GAAC,CAAA9wN,IAAA,qBAAAtC,MACD,SAAmBszN,GACf,OAAOA,EAAal5M,MAAQ3V,KAAK0uN,gBAAkBJ,GAAkBv2B,MAAK,SAACk3B,GAAM,OAAKJ,EAAal5M,IAAIgT,WAAWsmM,EAAO,GAC7H,KAACV,CAAA,CAzCqB,GCH1B,SAASW,GAAe14M,GACpB,OAAQA,GACJ,IAAK,GACD,OACJ,IAAK,WACD,MAAO,MACX,IAAK,WACD,MAAO,MACX,IAAK,KACL,IAAK,MACD,MAAO,MACX,IAAK,KACD,MAAO,MACX,IAAK,SACL,IAAK,SACL,IAAK,SACD,MAAO,OACX,QACI,OAAOA,EAEnB,CAKC,IACK24M,GAAkB,WACpB,SAAAA,EAAYjD,EAAahD,EAAoBkG,GAA0B7pM,EAAA,KAAA4pM,GACnEnvN,KAAKksN,YAAcA,EACnBlsN,KAAKkpN,mBAAqBA,EAC1BlpN,KAAKovN,yBAA2BA,CACpC,CA0DC,OA1DA9pM,EAAA6pM,EAAA,EAAAtxN,IAAA,YAAAtC,MACD,SAAUqW,GAAe,IAAAG,EAAA,KACrB,IAZuBq9M,EAYIpvN,KAAKovN,2BAVhC1lN,MAAMkf,QAAQwmM,EAAyBC,sBACvCD,EAAyBC,oBAAoBtlM,SAAS,YAStD,CAZR,IAA+BqlM,EAcjBE,EAAW,IAAItvN,KAAKovN,0BAAyB,SAAC1uK,GAChD,IAC2Bj6B,EADOC,EAAArB,EAAlBq7B,EAAK6uK,cACM,IAA3B,IAAA7oM,EAAAxoB,MAAAuoB,EAAAC,EAAAjmB,KAAAmmB,MAA6B,KAAlB4X,EAAK/X,EAAAlrB,MACZ,GAA4B,UAAxBijC,EAAMgxL,eAAqD,mBAAxBhxL,EAAMgxL,cAA7C,CAGA,IAAMlK,EAAgBvzM,EAAKm3M,mBAAmBvpL,MAC9C,GAAI2lL,EAAe,CACf,IAAM8I,EAAqBx8M,EAAc+8M,uBAAuB,CAAEh5M,IAAK6oB,EAAM//B,KAAMoB,KAAM2+B,EAAMgxL,gBAC/F,IAAKpB,EACD,OACJ,GAAsC,kBAA3BA,EAAmBz4M,IAE1B,YADA/D,EAAc7T,OAAOmQ,KAAK,uEAADhU,cAA+Ek0N,EAAmBz4M,MAG/H,IAAIlX,EAAO,GACX,IACI,IAAMkX,EAAM,IAAI8R,IAAI2mM,EAAmBz4M,KACvCA,EAAI8I,OAAS,GACbhgB,EAAOkX,EAAI0D,IACf,CACA,MAAOhT,GAEH,YADAuL,EAAc7T,OAAOmQ,KAAK,6DAADhU,OAA8Dk0N,EAAmBz4M,KAE9G,CACA,IAAMguM,EAAO5xM,EAAKm6M,YAAYK,UAAU,iBAADryN,OAAkBuE,GAAQ,CAC7D6mN,cAAAA,EACA7zG,UAAWjzE,EAAMizE,UACjB8zG,oBAAoB,IAExB5B,EAAKr1E,aAAa,wBAAyB,iBAC3Cq1E,EAAKr1E,aAAa,WAAY8/E,EAAmBz4M,KACjD,IAAM85M,EAAaP,GAAe1wL,EAAMkxL,iBACpCD,GACA9L,EAAKr1E,aAAa,cAAemhF,GAEjCjxL,EAAMmxL,iBAAmBnxL,EAAMoxL,kBAC/BjM,EAAKr1E,aAAa,+BAAgC9vG,EAAMmxL,iBACxDhM,EAAKr1E,aAAa,4CAA6C9vG,EAAMoxL,kBAErEpxL,EAAMqxL,gBACNlM,EAAKr1E,aAAa,mBAAoB9vG,EAAMqxL,gBAEhD99M,EAAKm6M,YAAYzC,QAAQ9F,EAAMnlL,EAAMovL,YACzC,CAvCA,CAwCJ,CAAC,OAAAvnN,GAAAqgB,EAAA/hB,EAAA0B,EAAA,SAAAqgB,EAAAhrB,GAAA,CACL,IACA,IACI4zN,EAAS/1L,QAAQ,CAAE15B,KAAM,WAAYiwN,UAAU,GACnD,CACA,MAAOzpN,GACHuL,EAAc7T,OAAOmQ,KAAK,4HAC1BohN,EAAS/1L,QAAQ,CAAEw2L,WAAY,CAAC,aACpC,CAtDU,CAuDd,KAACZ,CAAA,CA/DmB,GCpBlBa,GAA8B,CAChCv+G,UAFqD2zG,GAAAA,UAGrDE,cAHqDF,GAAAA,cAIrDG,mBAJqDH,GAAAA,mBAKrD6K,QAAS,CACL5K,gBAAiB,SAAC9pN,GAAK,OAAKgH,OAAOhH,EAAM,EACzCY,QAAS,qBACTC,SAAUwlN,KAGZsO,GAAiB,WACnB,SAAAA,EAAYhE,EAAajtN,EAAU0Z,GAAU4M,EAAA,KAAA2qM,GACzClwN,KAAKksN,YAAcA,EACnBlsN,KAAKf,SAAWA,EAChBe,KAAK2Y,SAAWA,CACpB,CAoDC,OApDA2M,EAAA4qM,EAAA,EAAAryN,IAAA,YAAAtC,MACD,SAAUqW,GAAe,IAAAG,EAAA,KACrB,GAAKH,EAAcu+M,2BAAnB,CAEA,IAAMC,EAAc,IAAI3oM,IAAIznB,KAAKf,SAASoa,MACtCg3M,EAAgBz+M,EAAc66M,gBAAgBC,aAAa0D,IAAgBpE,GAAqBoE,GAC9F5D,EAAsBZ,GAAuBh6M,EAAci6M,oBACjEj6M,EAAc66M,gBAAgB6D,uBAAsB,SAAC36M,EAAKs6M,EAAS7vM,GAC/D,IAAIkrM,EACJ,GAAI31M,aAAe8R,IACf6jM,EAAc31M,OAGd,IACI,IAAM46M,EAAYhuN,OAAOoT,GACzB21M,EAAc,IAAI7jM,IAAI8oM,EAC1B,CACA,MAAOlqN,GAEH,OADAuL,EAAc7T,OAAOmQ,KAAK,iDACnB,CACHnC,GAAI,GACJi2M,QAAS,GACTC,QAAS,kBAAM,CAAK,EACpBtmM,IAAK,WAAQ,EAErB,CAGJ,IAAM60M,EAAyBj2N,OAAOuzI,OAAOvzI,OAAOuzI,OAAO,CAAC,EAAG1tH,GAAU,CAAE6vM,QAAAA,IACrEtG,EAAe53M,EAAKm6M,YAAYuE,oBAAoB,gBAAiBD,EAAwBR,IAC7F36B,EAAQzjL,EAAc66M,gBAAgBC,aAAapB,IAAgBU,GAAqBV,GAE9F3B,EAAalrN,MAAQ42L,EACrB,IAAMsuB,EAAO5xM,EAAKm6M,YAAYK,UAAU5C,EAAalrN,KAAMkrN,EAAavpM,SAQxE,OAPAujM,EAAKr1E,aAAa,wBAAyB,gBAC3Cq1E,EAAKr1E,aAAa,6BAA8B+mD,GAChDsuB,EAAKr1E,aAAa,sCAAuC+hF,GACzD1M,EAAKr1E,aAAa,4CAA6Cq7E,EAAavpM,QAAQ6vM,SAChFzD,EAAoB72M,KACpBguM,EAAKr1E,aAAa,2BAA4B34H,EAAIlb,YACtD41N,EAAgBh7B,EACT,CACHtpL,GAAI43M,EAAK53M,GACTi2M,QAAS2B,EAAK3B,QACdC,QAAS0B,EAAK1B,QACdtmM,IAAK,SAACmpM,GACE0H,EAAoB5tM,OACpB+kM,EAAKr1E,aAAa,6BAA8Bv8H,EAAK4G,SAASiG,OAClE7M,EAAKm6M,YAAYwE,YAAY/M,GAAMhoM,IAAImpM,EAC3C,EAER,GAhDU,CAiDd,KAACoL,CAAA,CAzDkB,GCbvB,IAAMS,GAAqB,IAC3B,SAASC,GAAsBC,EAAYz4G,GAIvC,OAAI9nG,KAAK43B,IAAInoC,KAAKwX,OAASs5M,EAAaz4G,EAAY7gG,QAAUo5M,GACnD5wN,KAAKwX,MAAQ6gG,EAAY7gG,MAE7Bs5M,CACX,CCVA,IAAMC,GAAoB,SAACv1N,GAAK,OAAK+tB,GAAS/tB,IACZ,oBAAvBA,EAAMmxN,cAC0B,oBAAhCnxN,EAAM+0N,qBAAoC,ECJrD,SAASS,GAAMx1N,GACX,IAAMguI,EAAMhuI,EAAMd,SAAS,IAE3B,OAAmB,IAAf8uI,EAAIxvI,OACG,IAAMwvI,EAEVA,CACX,CACA,IAAMy/E,GAAc,CAChBK,SAAQ,SAAC2H,GACL,IAAMxsM,EAAQ,IAAIJ,WAAW4sM,EAAO,GAG9BC,EAAejyN,OAAOkrI,OAAOE,gBAAgB5lH,GACnD,OAAO9a,MAAMoU,KAAKmzM,EAAcF,IAAOtzN,KAAK,GAChD,GCfEyzN,GAAO,WACT,SAAAA,EAAY5M,GAAO/+L,EAAA,KAAA2rM,GACflxN,KAAKmxN,SAAU,EACfnxN,KAAK0O,UAAY,IAAI6Z,IACrBvoB,KAAKskN,MAAQA,CACjB,CAmBC,OAnBAh/L,EAAA4rM,EAAA,EAAArzN,IAAA,YAAAtC,MACD,SAAU0kD,GACNjgD,KAAK0O,UAAUlH,IAAIy4C,GAEfjgD,KAAKoxN,aACLnxK,EAASjgD,KAAKskN,MAAM/sM,MAE5B,GAAC,CAAA1Z,IAAA,cAAAtC,MACD,SAAY0kD,GACRjgD,KAAK0O,UAAUqmE,OAAO90B,EAC1B,GAAC,CAAApiD,IAAA,YAAAtC,MACD,WACI,OAAOyE,KAAKmxN,OAChB,GAAC,CAAAtzN,IAAA,SAAAtC,MACD,SAAO81N,GACHrxN,KAAKmxN,SAAU,EAAK,IACiB1qM,EADjBC,EAAArB,EACGrlB,KAAK0O,WAAS,IAArC,IAAAgY,EAAAxoB,MAAAuoB,EAAAC,EAAAjmB,KAAAmmB,MAAuC,EACnCq5B,EADex5B,EAAAlrB,OACN81N,EACb,CAAC,OAAAhrN,GAAAqgB,EAAA/hB,EAAA0B,EAAA,SAAAqgB,EAAAhrB,GAAA,CACL,KAACw1N,CAAA,CAxBQ,GCEPI,GAAkB,SAAAC,GAAA/rM,EAAA8rM,EAAAC,GAAA,IAAAzrM,EAAAL,EAAA6rM,GACpB,SAAAA,EAAYhN,EAAO3lN,GAAQ,IAAAoT,EAWR,OAXQwT,EAAA,KAAA+rM,IACvBv/M,EAAA+T,EAAAprB,KAAA,KAAM4pN,IACDttJ,aAAU16D,EACE,IAAIo8B,kBAAiB,WAAQ3mB,EAAKy/M,SAAW,IACrDj4L,QAAQ56B,EAAQ,CACrB8yN,SAAS,EACTC,WAAW,EACXl4L,eAAe,IAInBznB,EAAKy/M,UAAUz/M,CACnB,CASC,OATAuT,EAAAgsM,EAAA,EAAAzzN,IAAA,UAAAtC,MACD,WAAU,IAAAwZ,EAAA,KACN0/D,aAAaz0E,KAAKg3D,SAClBh3D,KAAKmxN,SAAU,EAIf,IAAME,EAAcrxN,KAAKskN,MAAM/sM,MAC/BvX,KAAKg3D,QAAUjoD,YAAW,WAAQgG,EAAK48M,OAAON,EAAc,GAAG,IACnE,KAACC,CAAA,CAtBmB,CAASJ,ICGhC,IACKU,GAAmB,SAAAL,GAAA/rM,EAAAosM,EAAAL,GAAA,IAAAzrM,EAAAL,EAAAmsM,GACrB,SAAAA,EAAYtN,EAAO3nM,EAAkBy7F,EAAaz/F,GAAU,IAAA5G,EAYvD,OAZuDwT,EAAA,KAAAqsM,GACxD7/M,EAAA+T,EAAAprB,KAAA,KAAM4pN,GAIsB,aAAxB3rM,EAAS5B,WACThI,YAAW,WAAQgD,EAAK8/M,uBAAuBz5G,EAAc,GAAG,GAGhEz7F,EAAiB,QAAQ,WACrB5N,YAAW,WAAQgD,EAAK8/M,uBAAuBz5G,EAAc,GAAG,EACpE,IACHrmG,CACL,CAoBC,OApBAuT,EAAAssM,EAAA,EAAA/zN,IAAA,yBAAAtC,MACD,SAAuB68G,GACnB,IAIIi5G,EAJE95M,EAAMvX,KAAKskN,MAAM/sM,MAGjBinB,EAAgD,oBAAjC45E,EAAY00G,iBAAkC10G,EAAY00G,iBAAiB,cAAc,QAAKxwN,IAM/G+0N,EA5BZ,SAAuC7yL,GACnC,QAASA,GAA6B,eAApBA,EAAMszL,SAC5B,CAsBYC,CAA8BvzL,GAChBA,EAAMwvL,aAGN51G,EAAY45G,OAAOhE,aAAe51G,EAAY45G,OAAOC,kBAKpD,GAAKZ,EAAc95M,KAClC85M,EAAc95M,GAElBvX,KAAK2xN,OAAON,EAChB,KAACO,CAAA,CAlCoB,CAASV,ICJ5BgB,GAAc,SAAAX,GAAA/rM,EAAA0sM,EAAAX,GAAA,IAAAzrM,EAAAL,EAAAysM,GAChB,SAAAA,EAAY5N,EAAO6N,GAAgB,IAAApgN,EAUwB,OAVxBwT,EAAA,KAAA2sM,IAC/BngN,EAAA+T,EAAAprB,KAAA,KAAM4pN,IACDttJ,aAAU16D,EACfyV,EAAKqgN,aAAe,GACpBrgN,EAAKsgN,oBAAsB,EAK3BtgN,EAAKo/M,SAAU,EACfgB,EAAenD,QAAQj9M,EAAKugN,eAAe5yN,KAAI6jB,EAAAxR,KAAQA,CAC3D,CAuBC,OAvBAuT,EAAA4sM,EAAA,EAAAr0N,IAAA,kBAAAtC,MACD,SAAgB62N,GACZpyN,KAAKoyN,aAAeA,CACxB,GAAC,CAAAv0N,IAAA,iBAAAtC,MACD,SAAeszN,GAAc,IAAA95M,EAAA,KAEzB,IAAI/U,KAAKuyN,gBAAgB1D,EAAal5M,KAKtC,OAHA8+D,aAAaz0E,KAAKg3D,SAClBh3D,KAAKmxN,SAAU,IACbnxN,KAAKqyN,oBACA,SAACnH,GACJ,GAAmC,MAA7Bn2M,EAAKs9M,oBAA2B,CAIlC,IAAMhB,EAAct8M,EAAKuvM,MAAM/sM,MAC/BxC,EAAKiiD,QAAUjoD,YAAW,WAAQgG,EAAK48M,OAAON,EAAc,GAAG,IACnE,CACJ,CACJ,GAAC,CAAAxzN,IAAA,kBAAAtC,MACD,SAAgBoa,GACZ,OAAO3V,KAAKoyN,aAAar6B,MAAK,SAAAy6B,GAAM,OAAIA,EAAOr0N,KAAKwX,EAAI,GAC5D,KAACu8M,CAAA,CAnCe,CAAShB,ICDd,SAASh5K,KActB,OAZEA,GADqB,qBAAZhnB,SAA2BA,QAAQ/nB,IACrC+nB,QAAQ/nB,IAAIzJ,OAEZ,SAAcf,EAAQi8K,EAAUkS,GACrC,IAAI18K,ECLK,SAAwBoa,EAAQowJ,GAC7C,MAAQrgL,OAAOC,UAAUS,eAAeP,KAAK8vB,EAAQowJ,IAEpC,QADfpwJ,EAAS,EAAeA,MAG1B,OAAOA,CACT,CDDiB,CAAc7rB,EAAQi8K,GACjC,GAAKxqK,EAAL,CACA,IAAI8oK,EAAO3+K,OAAO+wB,yBAAyBlb,EAAMwqK,GACjD,OAAI1B,EAAK/vK,IACA+vK,EAAK/vK,IAAIzO,KAAKkE,UAAU7E,OAAS,EAAI4E,EAASmuL,GAEhD5T,EAAK39K,KALK,CAMnB,EAEK28C,GAAKpqC,MAAM9N,KAAMpB,UAC1B,CEdA,IAIM6zN,GAAgB,SAAAlB,GAAA/rM,EAAAitM,EAAAlB,GAAA,IAAAzrM,EAAAL,EAAAgtM,GAClB,SAAAA,EAAYnO,EAAOoO,GAAU,IAAA3gN,EAAAwT,EAAA,KAAAktM,IACzB1gN,EAAA+T,EAAAprB,KAAA,KAAM4pN,IACDoO,SAAWA,EAAS,IACKjsM,EADLC,EAAArB,EACHqtM,GAAQ,IAA9B,IAAAhsM,EAAAxoB,MAAAuoB,EAAAC,EAAAjmB,KAAAmmB,MAAgC,CAAdH,EAAAlrB,MACN68K,WAAU,SAACi5C,GAGXt/M,EAAK4gN,qBACL5gN,EAAK4/M,OAAON,GAGZt/M,EAAKo/M,SAAU,CAEvB,GACJ,CAAC,OAAA9qN,GAAAqgB,EAAA/hB,EAAA0B,EAAA,SAAAqgB,EAAAhrB,GAAA,QAAAqW,CACL,CAaC,OAbAuT,EAAAmtM,EAAA,EAAA50N,IAAA,YAAAtC,MACD,WAGI,OAAO28C,GAAAE,EAAAq6K,EAAAj4N,WAAA,kBAAAE,KAAA,OAAqBsF,KAAK2yN,oBACrC,GAAC,CAAA90N,IAAA,qBAAAtC,MACD,WAAqB,IACkB6jM,EADlBE,EAAAj6K,EACKrlB,KAAK0yN,UAAQ,IAAnC,IAAApzB,EAAAphM,MAAAkhM,EAAAE,EAAA7+L,KAAAmmB,MAAqC,CACjC,IADcw4K,EAAA7jM,MACD61N,YACT,OAAO,CAEf,CAAC,OAAA/qN,GAAAi5L,EAAA36L,EAAA0B,EAAA,SAAAi5L,EAAA5jM,GAAA,CACD,OAAO,CACX,KAAC+2N,CAAA,CA7BiB,CAASvB,ICQ/B,SAASz2N,GAASoD,EAAKtC,GACnB,OAAQsC,GACJ,IAAK,+BACD,OAAO8H,KAAKC,UAAUrK,GAC1B,IAAK,uBACD,OAAOA,EACX,QACI,OAAOsC,EAEnB,CAAC,IACK+0N,GAAkB,WACpB,SAAAA,EAAY96M,GAAcyN,EAAA,KAAAqtM,GACtB5yN,KAAK6X,QAAUC,CACnB,CAeC,OAfAwN,EAAAstM,EAAA,EAAA/0N,IAAA,OAAAtC,MAAA,eAAA0uN,EAAA9kM,EAAAF,IAAAgC,MACD,SAAAC,EAAWrpB,GAAG,IAAAsmN,EAAA,OAAAl/L,IAAAuC,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,OAE+B,GAF/BkE,EAAAqI,KAAA,IAEAopM,EAAMnkN,KAAK6X,QAAQE,QAAQla,IACxB,CAAF6U,EAAAlE,KAAA,eAAAkE,EAAAwV,OAAA,SACIiiM,GAAmBtsN,EAAKsmN,IAAI,OAAAzxM,EAAAlE,KAAA,eAAAkE,EAAAqI,KAAA,EAAArI,EAAAygK,GAAAzgK,EAAA,iCAAAA,EAAAyV,OAAA,GAAAjB,EAAA,kBAI9C,gBAAAkB,GAAA,OAAA6hM,EAAAn8M,MAAA,KAAAlP,UAAA,EATA,IASA,CAAAf,IAAA,OAAAtC,MAAA,eAAA2uN,EAAA/kM,EAAAF,IAAAgC,MACD,SAAAosJ,EAAWx1K,EAAKtC,GAAK,OAAA0pB,IAAAuC,MAAA,SAAA+rJ,GAAA,cAAAA,EAAAx4J,KAAAw4J,EAAA/kK,MAAA,OACjB,IACIxO,KAAK6X,QAAQI,QAAQpa,EAAKpD,GAASoD,EAAKtC,GAC5C,CACA,MAAO6+C,GAAM,CAAC,wBAAAm5H,EAAAprJ,OAAA,GAAAkrJ,EAAA,UACjB,gBAAAhrJ,EAAAq3K,GAAA,OAAAwqB,EAAAp8M,MAAA,KAAAlP,UAAA,EANA,MAMAg0N,CAAA,CAlBmB,eCxBxB,ICKsB7+F,GAAU8+F,GCL1BC,GAAS,WACX,SAAAA,EAAY16G,EAAaksG,EAAO8K,GAI5B,GAJsD7pM,EAAA,KAAAutM,GACtD9yN,KAAKo4G,YAAcA,EACnBp4G,KAAKskN,MAAQA,EACbtkN,KAAK+yN,UAAY,GACb3D,GAA4B1lN,MAAMkf,QAAQwmM,EAAyBC,qBAAsB,CACzF,IAAMA,EAAsBD,EAAyBC,oBACjDA,EAAoBtlM,SAAS,6BAC7B/pB,KAAKgzN,8BAA8B5D,GAEnCC,EAAoBtlM,SAAS,iBAC7B/pB,KAAKizN,mBAAmB7D,EAEhC,CACJ,CAwGC,OAxGA9pM,EAAAwtM,EAAA,EAAAj1N,IAAA,WAAAtC,MACD,SAASooN,GACL,IAAMuP,EAAuBlzN,KAAKkzN,uBAC9BA,GACAvP,EAAKwP,SAAS,MAAOD,GAEzB,IAAME,EAAkBpzN,KAAKozN,kBACzBA,GACAzP,EAAKwP,SAAS,OAAQC,GAE1B,IAAMC,EAAkBrzN,KAAKqzN,kBACzBA,IACA1P,EAAKwP,SAAS,YAAaE,EAAgB33M,OAC3CioM,EAAKwP,SAAS,UAAWE,EAAgB13M,MAEzC3b,KAAKszN,uBACL3P,EAAKr1E,aAAa,sBAAuBtuI,KAAKszN,uBAE9CtzN,KAAKuzN,wBACL5P,EAAKwP,SAAS,MAAOnzN,KAAKuzN,wBAG9B,IACqC9sM,EADrCC,EAAArB,EACuBrlB,KAAK+yN,WAAS,IAArC,IAAArsM,EAAAxoB,MAAAuoB,EAAAC,EAAAjmB,KAAAmmB,MAAuC,CAApBH,EAAAlrB,MACNw4D,YACb,CAAC,OAAA1tD,GAAAqgB,EAAA/hB,EAAA0B,EAAA,SAAAqgB,EAAAhrB,GAAA,CACL,GAAC,CAAAmC,IAAA,uBAAAtC,MACD,WACI,IAAMijC,EAAQx+B,KAAKo4G,YAAYo7G,iBAAiB,yBAA0B,SAAS,GACnF,GAAIh1L,EACA,OAAOA,EAAMizE,SAErB,GAAC,CAAA5zG,IAAA,kBAAAtC,MACD,WACI,IACIoyN,EADEnvL,EAAQx+B,KAAKo4G,YAAY00G,iBAAiB,cAAc,GAW9D,IARIa,EADAnvL,EACgBA,EAAMmvL,cAGN3tN,KAAKo4G,YAAY45G,OAAOrE,cAAgB3tN,KAAKo4G,YAAY45G,OAAOC,iBAKhE,GAAKtE,GAAiB3tN,KAAKskN,MAAM/sM,MACjD,OAAOo2M,CAEf,GAAC,CAAA9vN,IAAA,kBAAAtC,MACD,WACI,IAAMijC,EAAQx+B,KAAKo4G,YAAY00G,iBAAiB,eAAe,GAC/D,GAAItuL,EACA,MAAO,CACH9iB,MAAO8iB,EAAMizE,UACb91F,IAAK6iB,EAAMi1L,gBAGvB,GAAC,CAAA51N,IAAA,gCAAAtC,MACD,SAA8B6zN,GAA0B,IAAAr9M,EAAA,KAC9Cu9M,EAAW,IAAIF,GAAyB,SAAC1uK,GAC3C,IAAM/5B,EAAU+5B,EAAK6uK,aACjB5oM,EAAQ5sB,OAAS,IAEjBgY,EAAKwhN,uBAAyB5sM,EAAQA,EAAQ5sB,OAAS,GAAG03G,UAElE,IACA69G,EAAS/1L,QAAQ,CAAE15B,KAAM,2BAA4BiwN,UAAU,IAC/D9vN,KAAK+yN,UAAU73N,KAAKo0N,EACxB,GAAC,CAAAzxN,IAAA,qBAAAtC,MACD,SAAmB6zN,GAA0B,IACrC/iN,EADqC0I,EAAA,KAEnCu6M,EAAW,IAAIF,GAAyB,SAAC1uK,GAAS,IACf0+I,EADeE,EAAAj6K,EAChCq7B,EAAK6uK,cAAY,IAArC,IAAAjwB,EAAAphM,MAAAkhM,EAAAE,EAAA7+L,KAAAmmB,MAAuC,KAA5B4X,EAAK4gK,EAAA7jM,MAIRijC,EAAMk1L,iBAONrnN,GACAmyB,EAAMizE,UAAYplG,EAAQsnN,kBAAoB,KAC9Cn1L,EAAMizE,UAAYplG,EAAQunN,eAAiB,KAC3CvnN,EAAQ9Q,OAASijC,EAAMjjC,MACvB8Q,EAAQsnN,kBAAoBn1L,EAAMizE,WAGlCplG,EAAU,CACN9Q,MAAOijC,EAAMjjC,MACbq4N,eAAgBp1L,EAAMizE,UACtBkiH,kBAAmBn1L,EAAMizE,WAGrC,CAAC,OAAAprG,GAAAi5L,EAAA36L,EAAA0B,EAAA,SAAAi5L,EAAA5jM,GAAA,CACG2Q,SACgC/P,IAA/ByY,EAAKu+M,uBAAuCjnN,EAAQ9Q,MAAQwZ,EAAKu+M,yBAClEv+M,EAAKu+M,sBAAwBjnN,EAAQ9Q,MAE7C,IACA+zN,EAAS/1L,QAAQ,CAAE15B,KAAM,eAAgBiwN,UAAU,IACnD9vN,KAAK+yN,UAAU73N,KAAKo0N,EACxB,KAACwD,CAAA,CAtHU,GCkBT1K,GClBN,SAA4CppN,GACxC,IAAM0P,EAAY,GACd/F,EAA4C,WAApC3J,EAAO2Z,SAASk7M,gBACtB,gBACA,gBACAzL,EAAwB,CAC1BI,cAAa,SAACsL,GACVplN,EAAUxT,KAAK44N,GAED,kBAAVnrN,GACAmrN,EAA8BnrN,EAEtC,GAEEorN,EAAyB,SAAC3xF,GAC5B,GAAIz5H,IAAUy5H,EAAd,CAEAz5H,EAAQy5H,EACR,IAAK,IAALnkF,EAAA,EAAA+1K,EAAuBtlN,EAASuvC,EAAA+1K,EAAAj6N,OAAAkkD,IAAE,EAC9BgC,EADe+zK,EAAA/1K,IACNt1C,EACb,CAJU,CAKd,EAeA,OAdA3J,EAAO2Z,SAASgE,iBAAiB,oBAAoB,WACjD,IAAMylH,EAA+C,WAApCpjI,EAAO2Z,SAASk7M,gBAC3B,gBACA,gBACNE,EAAuB3xF,EAC3B,IAGApjI,EAAO2d,iBAAiB,YAAY,WAChCo3M,EAAuB,gBAC3B,IACA/0N,EAAO2d,iBAAiB,YAAY,WAChCo3M,EAAuB,gBAC3B,IACO3L,CACX,CDnB8B6L,CAAmCj1N,QAC3DiqN,GHnB6B,SAACtwM,GAChC,IAAMu7M,EAAoB,CACtBv+M,IAAK,CACDlX,KAAM,2BACNw2I,SAAU,kBAAMt8H,EAAS1Z,SAASoa,IAAI,EACtC86M,WAAW,GAEfv1M,MAAO,CACHngB,KAAM,6BACNw2I,SAAU,kBAAMt8H,EAASiG,KAAK,EAC9Bu1M,WAAW,IAGnB,MAAO,CACHC,UAAS,SAACxiN,GACNsiN,EAAkBt1M,MAAMu1M,UAAYviN,EAAci6M,mBAAmBjtM,QAAS,EAC9Es1M,EAAkBv+M,IAAIw+M,UAAYviN,EAAci6M,mBAAmBl2M,MAAO,CAC9E,EACA2zM,kBAAiB,SAAC3F,GACd,IAAK,IAAL1lK,EAAA,EAAAo2K,EAAwB95N,OAAOq9B,OAAOs8L,GAAkBj2K,EAAAo2K,EAAAt6N,OAAAkkD,IAAE,CAArD,IAAMokK,EAASgS,EAAAp2K,GACZokK,EAAU8R,WACVxQ,EAAKr1E,aAAa+zE,EAAU5jN,KAAM4jN,EAAUptE,WAEpD,CACJ,EAER,CGP6Bq/E,CAA2B37M,UAClD2rM,GdPN,SAAqBlsG,EAAagwG,GAC9B,IAMImM,EAAuB3D,QAN0Bt0N,IAA3B87G,EAAYy4G,WAChCz4G,EAAY45G,OAAOC,gBACnB75G,EAAYy4G,WAIkDz4G,GAMpE,OALAgwG,EAAsBI,eAAc,SAAA7/M,GAClB,kBAAVA,IACA4rN,EAAuB3D,GAAsB2D,EAAsBn8G,GAE3E,IACO,CACH7gG,IAAK,kBAAM6gG,EAAY7gG,KAAK,EAC5BqyB,KAAM,kBAAM,IAAI7pC,KAAKw0N,EAAuBn8G,EAAY7gG,MAAM,EAC9DsxM,QAAS,SAACj/K,GAAI,OAAKA,EAAKh5B,UAAY2jN,CAAoB,EAExD/P,2BAA4B,SAACtrM,GAAI,O5B9BNo0B,E4B8BqCinL,EAAuBr7M,E5B7BpF5I,KAAK6+B,MAAM7B,EAAe01K,K4B6BgEvoN,W5B9BrG,IAAmC6yC,C4B8B4E,EAE/G,CcbcknL,CAAYp8G,YAAagwG,IACjCrB,GJnBN,SAAgC/nN,GAG5B,IACI,GAAIA,EAAO8Y,aACP,OAAO,IAAI86M,GAAmB5zN,EAAO8Y,aAE7C,CACA,MAAOsiC,GAAM,CAEb,OAAO,IAAI2vK,EACf,CIQoB0K,CAAuBz1N,QACrC01N,GEnBN,SAAwC7kN,EAAWk3M,GAC/C,IAAInvM,EACAw3C,EACJ,OAAO,SAAkC77C,GACrC,IAAM6uM,EAAa,IAAIQ,GAAmBrvM,EAAOjW,aAAciW,EAAOlX,WAAY,8BAA+B,SAOjH,GANA+lN,EAAWvvL,IAAI,qBAAsBhjB,EAAUG,WAE3CH,EAAU8kN,gBACVvS,EAAWvvL,IAAI,mBAAoBhjB,EAAU8kN,cAAcr4I,UAC3D8lI,EAAWvvL,IAAI,iBAAkBhjB,EAAU8kN,cAAcC,SAEzDrhN,EAAOwF,oBAAqB,CAkB5B,GAdKnB,IACDA,EAAcmvM,EAAYzoN,KAAK,wBAC1BwQ,MAAK,SAAA+lN,GAEN,IAAMC,EAAcD,GAAoBlkN,KAOxC,OALKkkN,GACD9N,EAAYO,KAAK,uBAAwBwN,GAG7C1lK,EAAW0lK,CAEf,MAEA1lK,EAMA,OAAOx3C,EACF9I,MAAK,SAAAsgD,GAEN,OADAgzJ,EAAWvvL,IAAI,YAAau8B,GACrBgzJ,CACX,IARAA,EAAWvvL,IAAI,YAAau8B,EAUpC,CACA,OAAO/uC,QAAQC,QAAQ8hM,EAC3B,CACJ,CFzBiC2S,CAA+BllN,UAAWk3M,IACrEiO,GvBXN,SAAmC7oM,EAAQm4L,GACvC,IAAM6N,EAAiB,IAAIrH,GACrBmK,EAAgB9oM,EAAOpM,MAY7B,OAXAoM,EAAOpM,MAAQ,SAAekd,EAAO4jF,GACjC,IAAMguG,EAAetD,GAAmBjH,EAAM/sM,MAAO0lB,EAAO4jF,EAAM10F,EAAOxT,UAAYwT,EAAOxT,SAASu8M,SAC/FC,EAAehD,EAAez2M,MAAMmzM,GAC1C,OAAOoG,EAAcv6N,KAAKsF,KAAMi9B,EAAO4jF,GAAM/xG,MAAK,SAAA0Q,GAE9C,OADA21M,EAAa,CAAEl+M,OAAQuI,EAASvI,OAAQ6tM,QAASR,EAAM/sM,MAAO5O,MAAO,YAC9D6W,CACX,IAAG6wC,OAAM,SAAAvtD,GAEL,MADAqyN,EAAa,CAAEryN,MAAAA,EAAOgiN,QAASR,EAAM/sM,MAAO5O,MAAO,UAC7C7F,CACV,GACJ,EACOqvN,CACX,CuBJ4BiD,CAA0Bp2N,OAAQslN,IACxD+Q,GGrBN,SAAqCC,EAAKhR,EAAO3rM,GAC7C,IAAMw5M,EAAiB,IAAIrH,GACrByK,EAAkB,IAAIpiM,QACtBqiM,EAAkB,IAAIriM,QACtBsiM,EAAeH,EAAI96N,UAAU2b,KACnCm/M,EAAI96N,UAAU2b,KAAO,SAAcnY,EAAQ2X,GACvC4/M,EAAgB1iM,IAAI7yB,KAAM,CAAEhC,OAAAA,EAAQ2X,IAAKy1M,GAAe7oN,OAAOoT,GAAMgD,GAAYA,EAASu8M,WAC1F,QAAAn7M,EAAAnb,UAAA7E,OAF+Cq6C,EAAI,IAAA1qC,MAAAqQ,EAAA,EAAAA,EAAA,KAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJo6B,EAAIp6B,EAAA,GAAApb,UAAAob,GAGnDy7M,EAAa/6N,KAAIoT,MAAjB2nN,EAAY,CAAMz1N,KAAMhC,EAAQ2X,GAAGzb,OAAKk6C,GAC5C,EACA,IAAMshL,EAAeJ,EAAI96N,UAAU4b,KA6BnC,OA5BAk/M,EAAI96N,UAAU4b,KAAO,SAAcP,GAAM,IAAA9D,EAAA,KAC/B4jN,EAAcJ,EAAgBpsN,IAAInJ,MACxC,GAAI21N,EAAa,CAGb,IAAMC,EAAkBJ,EAAgBrsN,IAAInJ,MACxC41N,GACA51N,KAAK8f,oBAAoB,mBAAoB81M,GACjD,IAAMT,EAAehD,EAAez2M,MAAM,CACtC7b,KAAM,iBACN7B,OAAQ23N,EAAY33N,OACpB2X,IAAKggN,EAAYhgN,IACjB87F,UAAW6yG,EAAM/sM,QAEfs+M,EAAqB,SAACl0M,GACxB,GAAI5P,EAAKgF,aAAeu+M,EAAIt+M,MAAQm+M,EAAc,CAE9C,IAAMjK,EAAan5M,EAAKkF,OAAS,EAC3B,CAAE6tM,QAASR,EAAM/sM,MAAON,OAAQlF,EAAKkF,OAAQtO,MAAO,WACpD,CAAEm8M,QAASR,EAAM/sM,MAAO5O,MAAO,SACrCwsN,EAAajK,EACjB,CACJ,EACAlrN,KAAK2c,iBAAiB,mBAAoBk5M,GAC1CL,EAAgB3iM,IAAI7yB,KAAM61N,EAC9B,CACAH,EAAah7N,KAAKsF,KAAM6V,EAC5B,EACOs8M,CACX,CHnB0B2D,CAA4Bj/M,eAAgBytM,GAAO3rM,UACvEwzM,GAAY,IAAI2G,GAAU16G,YAAaksG,GAAOtlN,OAAO+2N,qBACrD3J,GIpBN,SAAwB9H,EAAOtlN,EAAQg2N,EAAqBK,EAAmBj9G,GAC3E,IAAM49G,EAAqB,IAAI1E,GAAmBhN,EAAOtlN,EAAO2Z,UAC1Ds9M,EAAsB,IAAI/D,GAAe5N,EAAO0Q,GAChDkB,EAAoB,IAAIhE,GAAe5N,EAAO+Q,GAC9Cc,EAAsB,IAAIvE,GAAoBtN,EAAOtlN,EAAO2d,iBAAkBy7F,EAAap5G,EAAO2Z,UAClGy9M,EAAU,IAAI3D,GAAiBnO,EAAO,CACxC0R,EACAG,EACAF,EACAC,IAEJ,SAASG,EAAep2K,GACpB,IAAMmsK,EAAW,SAAXA,EAAYiF,GACd58I,aAAazd,GAGbo/J,EAAQ/9C,YAAY+zC,GACpBnsK,EAASoxK,EACb,EACMr6J,EAAUjoD,YAAW,WACvB,IAAMsiN,EAAc/M,EAAM/sM,MAC1B6+M,EAAQ/9C,YAAY+zC,GACpBnsK,EAASoxK,EACb,GAxBqB,KA6BfiF,EAAWF,EAAQhF,YAAc,IAAM,EACvCC,EAAc/M,EAAM/sM,MAC1BxI,YAAW,WACHqnN,EAAQhF,YAERhF,EAASiF,GAIT+E,EAAQh+C,UAAUg0C,EAE1B,GAAGkK,EACP,CAMA,OALAD,EAAejC,UAAY,SAAUxiN,GACjC,IAAM2kN,EAAmB3kN,EAAc2kN,iBAAiBxyN,KAAI,SAAC4R,GAAG,MAAoB,kBAARA,EAAmBhM,OAAOgM,GAAOA,CAAG,IAAEzb,OAAOyP,OAAOiI,EAAcyE,WAC9I4/M,EAAoBO,gBAAgBD,GACpCL,EAAkBM,gBAAgBD,EACtC,EACOF,CACX,CJ3BiBI,CAAenS,GAAOtlN,OAAQg2N,GAAqBK,GAAmBj9G,aACjFs+G,GpBxB+B,SAACtK,EAAUntN,GAC5C,kBACI,SAAAy3N,IAAiD,IAArChK,EAAY9tN,UAAA7E,OAAA,QAAAuC,IAAAsC,UAAA,GAAAA,UAAA,GAAGotN,GAAoBzmM,EAAA,KAAAmxM,GAC3C12N,KAAK0sN,aAAeA,CACxB,CAqBC,OArBApnM,EAAAoxM,EAAA,EAAA74N,IAAA,wBAAAtC,MACD,SAAsBo7N,GAClBh6M,iBAAiB,YAAY,SAACoyC,GAC1B,IAAMp5C,EAAM,IAAI8R,IAAIxoB,EAASoa,MACvBsqM,EAAOgT,EAAqBhhN,EAAK,YACvCy2M,GAAS,SAACtH,GACNnB,EAAKhoM,IAAImpM,EACb,GACJ,IACA,IAAM8R,EAAoBz4M,QAAQG,UAClCH,QAAQG,UAAY,WAAmB,QAAAvE,EAAAnb,UAAA7E,OAAN0H,EAAI,IAAAiI,MAAAqQ,GAAAC,EAAA,EAAAA,EAAAD,EAAAC,IAAJvY,EAAIuY,GAAApb,UAAAob,GACjC,IAAMrE,EAAMlU,EAAK,GACjB,GAAIkU,EAAK,CACL,IAAMkhN,EAAc,IAAIpvM,IAAI2jM,GAAez1M,EAAIlb,WAAYke,SAASu8M,UAC9DvR,EAAOgT,EAAqBE,EAAa,aAC/CzK,GAAS,SAACtH,GACNnB,EAAKhoM,IAAImpM,EACb,GACJ,CACA8R,EAAkB9oN,MAAM9N,KAAMyB,EAClC,CACJ,KAACi1N,CAAA,CAxBL,EA0BJ,CoBH+BI,CAA6B1K,GAAUptN,OAAOC,UACvE83N,GKlBN,SAAsB32M,GAClB,IAAM42M,EAAqB,IAAIrP,GAC3BoB,EAAYiO,EACV9N,EAAqB9oM,EAAQ8oM,oBAAsB,IAAIhB,GAA0B9nM,EAAQgoM,uBAC3FrqN,EAASqiB,EAAQpkB,OAAO+B,OAAO7B,aAC7BonN,EAAU,IAAIuE,GAAQ,GACtBqE,EAAc,IAAIpD,GAAYC,EAAWzF,EAASljM,EAAQ4oM,YAAa5oM,EAAQ6oM,qBAAsB7oM,EAAQkkM,MAAOlkM,EAAQgoM,sBAAuBrqN,EAAQmrN,GAC3J9qN,EAAUgiB,EAAQhiB,QAAQ8tN,EAAahD,GAC7C,OAAO3uN,OAAOuzI,OAAO,CAAEpyH,MAAO,SAACnI,GACvB,IAAM3B,E9CyBlB,SAAwB2B,EAAQvX,GAI5B,GAHsB,kBAAXuX,IACPA,EAAS,CAAEtX,OAAQsX,KAElB+V,GAAS/V,KAAYquM,GAASruM,EAAOtX,SAAoC,IAAzBsX,EAAOtX,OAAOlC,OAC/D,MAAM,IAAIsJ,MAAM,0BAIpB,IAFA,IAAIqmN,EAAW,GACTuN,EAAqB,CAAC,EAC5Bh5K,EAAA,EAAA4rK,EAAqBtvN,OAAO8wB,KAAKrvB,GAAOiiD,EAAA4rK,EAAA9vN,OAAAkkD,IAAE,CAArC,IAAM6rK,EAAMD,EAAA5rK,GACT1jD,OAAOC,UAAUS,eAAeP,KAAK6Y,EAAQu2M,GACzC9tN,EAAO8tN,GAAQ1tN,SAASmX,EAAOu2M,IAC/BmN,EAAmBnN,GAAUv2M,EAAOu2M,IAGpCJ,GAAY,SAAJxvN,OAAa4vN,EAAM,KAAA5vN,OAAI8B,EAAO8tN,GAAQ3tN,QAAO,UAAAjC,cAAgBqZ,EAAOu2M,IAC5EmN,EAAmBnN,GAAU9tN,EAAO8tN,GAAQ5tN,cAIhD+6N,EAAmBnN,GAAU9tN,EAAO8tN,GAAQ5tN,YAEpD,CAQA,OANA+6N,EAAmBh7N,OAASsX,EAAOtX,OACnCg7N,EAAmBrT,iBAAmBrwM,EAAOqwM,kBAAoB,IACjEqT,EAAmBvT,yBAA2BnwM,EAAOmwM,0BAA4B,IAC7EgG,EAAS3vN,OAAS,GAClBk9N,EAAmBl5N,OAAOmQ,KAAK,wBAADhU,OAAyBwvN,IAEpDuN,CACX,C8CxDkCC,CAAe3jN,EAAQ6M,EAAQpkB,QAC/ConN,EAAWhjM,EAAQ+2M,gBAAgBvlN,EAAcyE,UACvD+J,EAAQ6oM,qBAAqBmL,UAAUxiN,GACvCk1M,GAAmB55M,OAAOkT,EAAQ2mM,YAAazD,EAAS,IAAIoD,GAAmBtD,EAAUxxM,EAAc3V,SAAS6S,MAAK,SAAC4kE,GAClHq1I,EAAY,IAAI5F,GAAeC,EAAUxxM,EAAewO,EAAQg3M,kBAAkBhU,EAAUxxM,EAAc04M,mBAAoBhH,EAAS5vI,EAAS,IAAI+xI,GAAoBrlM,EAAQkkM,MAAO1yM,EAAewO,EAAQs0M,2BAC9M,IAC2CjuM,EAD3CC,EAAArB,EACmB2xM,EAAmBpR,OAAK,IAA3C,IAAAl/L,EAAAxoB,MAAAuoB,EAAAC,EAAAjmB,KAAAmmB,MAA6C,KAAlC+8L,EAAIl9L,EAAAlrB,MACXwtN,EAAUvhN,IAAIm8M,EAClB,CAIA,OAAAt9M,GAAAqgB,EAAA/hB,EAAA0B,EAAA,SAAAqgB,EAAAhrB,GAAA,CACA0kB,EAAQgoM,sBAAsBI,eAAc,SAAA7/M,GACxCogN,EAAUhwL,OACd,IACAh7B,EAAS6T,EAAc7T,OACvBmuN,EAAYkI,UAAUrL,EAAWhrN,EACrC,IAAG,IACyBqhM,EADzBE,EAAAj6K,EACkBjnB,GAAO,IAA5B,IAAAkhM,EAAAphM,MAAAkhM,EAAAE,EAAA7+L,KAAAmmB,MAA8B,CAAbw4K,EAAA7jM,MACN64N,UAAUxiN,EACrB,CAAC,OAAAvL,GAAAi5L,EAAA36L,EAAA0B,EAAA,SAAAi5L,EAAA5jM,GAAA,CACL,EAAG6wN,UAAW,SAAC9tN,EAAMmrN,GACjB,IAAMD,EAAeuC,EAAYuE,oBAAoBhyN,EAAMmrN,GACrDjG,EAAOuI,EAAYK,UAAU5C,EAAalrN,KAAMkrN,EAAavpM,SAEnE,OADAujM,EAAKr1E,aAAa,wBAAyB,UACpC49E,EAAYwE,YAAY/M,EACnC,EAAO0T,yBACH,OAAOnO,EAAmBhtL,OAC9B,GAAM9b,EAAQk3M,oBAAsBl3M,EAAQk3M,mBAAmBpL,EAAahD,GACpF,CLrB2B9mM,CAAa,CACpCgmM,sBAAAA,GACA9D,MAAAA,GACAoQ,yBAAAA,GACAzL,qBAAAA,GACAkO,gB1BpBJ,SAAoCp3M,EAAOukM,EAAO8D,GAM9C,IAAImP,GAAY,EAMhB,OALInP,GACAA,EAAsBI,eAAc,SAAA7/M,GAChC4uN,EAAsB,kBAAV5uN,CAChB,IAEG,SAA8B0N,GACjC,MAAO,CACGD,KAAI,SAACb,GAAS,OAAA4P,EAAAF,IAAAgC,MAAA,SAAAC,IAAA,IAAArR,EAAA2J,EAAA,OAAAyF,IAAAuC,MAAA,SAAA9U,GAAA,cAAAA,EAAAqI,KAAArI,EAAAlE,MAAA,OAEgD,OAD1DqH,EAAOlQ,KAAKC,UAAU2P,EAAQM,MACpCN,EAAQiR,QAAQ,mBAAqB89L,EAAM16K,OAAOzyB,cAAczE,EAAAqI,KAAA,EAAArI,EAAAlE,KAAA,EAErCuR,EAAM1J,EAAU,CACnCrY,OAAQ,OACRu5N,UAAAA,EACA1hN,KAAAA,EACA2Q,QAASjR,EAAQiR,UACnB,OALY,OAARhH,EAAQ9M,EAAAsV,KAAAtV,EAAAwV,OAAA,SAMP,CACHvf,OVYayd,EUZsB5G,EAASvI,OVa5DmP,GAAc,KAAOA,EAAa,IAC3B,UAEPA,GAAc,KAAOA,EAAa,MAAQqgM,GAAWx+L,IAAI7B,GAClD,kBAEJ,qBUlBa88L,oBAAqB0H,GAA+BprM,EAASgH,WAChE,UAAA9T,EAAAqI,KAAA,EAAArI,EAAAygK,GAAAzgK,EAAA,WAGGmD,EAAK9b,OAAS,KAAI,CAAA2Y,EAAAlE,KAAA,gBAAAkE,EAAAwV,OAAA,SACX,CAAEvf,MAAO,oBAAmB,eAAA+J,EAAAwV,OAAA,SAEhC,CAAEvf,MAAO,sBAAqB,yBAAA+J,EAAAyV,OVIzD,IAAqC/B,CUJoB,GAAAc,EAAA,iBAnBzB/B,EAqBpB,EAER,CACJ,C0BlBqBqyM,CAA2Bx4N,OAAO+gB,MAAOukM,GAAO8D,IACjEY,YAAAA,GACAhtN,QF9BkB+3H,GE8BG/0H,OAAOC,SAAS80H,SF9BT8+F,GE8BmB,IAAI6D,GF7B5Cn8N,OAAOuzI,OAAOvzI,OAAOuzI,OAAO,CAAC,EAAG9xI,IAAS,CAAEsB,aAAc/C,OAAOuzI,OAAOvzI,OAAOuzI,OAAO,CAAC,EAAG9xI,GAAOsB,cAAe,CAAEpB,aAA2B,cAAb63H,GAA2B,cAAgB,eAAiBu4F,4BAA6B,CACvNpwN,cAAc,EACdC,QAAS,uBACTC,SAAUslN,IACXqN,8BAA+B,CAC9B7yN,cAAc,EACdC,QAAS,uBACTC,SAAUslN,IACXyO,2BAA4B,CAC3Bj0N,cAAc,EACdC,QAAS,uBACTC,SAAUslN,IACX3oM,oBAAqB,CACpB7c,cAAc,EACdC,QAAS,uBACTC,SAAUslN,IACX+K,gBAAiB,CAChBvwN,aAAc22N,GACd12N,QAAS,+BACTC,SAAU00N,IACXyF,iBAAkB,CACjBr6N,aAAc,GACdC,QAAS,sCACTC,SAAU0lN,IACX6M,uBAAwB,CACvBzyN,aAAciyN,GACdhyN,QAAS,uBACTC,SAAUiyN,IACXxC,mBAAoB,CACnB3vN,aAAcwvN,GACdvvN,QAAS,sBACTC,SAAU0vN,OEDlB1tN,QAAS,SAAC8tN,EAAahD,GAAkB,MAAK,CAC1CkD,GACA,IAAIH,GAAmBtzM,SAAU3Z,OAAOC,SAAUitN,EAAaC,GAAWC,GAAUhE,GAAuBhwG,aAG3G,IAAI+2G,GAAmBjD,EAAahD,EAAoBlqN,OAAO+2N,qBAC/D,IAAIxH,GAAqBrC,EAAa8I,GAAqBK,IAC3D,IAAInF,GAAkBhE,EAAaltN,OAAOC,SAAU0Z,UACvD,EACDouM,YAAAA,GACAqQ,kBAAmB,SAAChU,EAAUkH,GAAiB,OAAK,IAAID,GAAcjH,EAAUkH,EAAkB,IM9ClGmN,GAAY,gBACZ34L,GAAM,EACN44L,IAAmB,EAmBhB,SAASC,GAAeC,EAAe3xM,GAC1C,IAAI4xM,EAAa5xM,EAEjB,OADA4xM,EAAWhpH,aAAQvyG,GACZ,IAAK20B,SAASz2B,UAAUkF,KAAKoO,MAAM8pN,EAAeC,GAC7D,CAQO,SAASt3L,GAAaW,GACzB,IAAI42L,EAEAxoN,EAAM,IAAIyoN,YAAY,IACV/4N,OAAOg5N,UAAYh5N,OAAOkrI,QAChCE,gBAAgB96H,GAC1B,IAAIq9H,EAAS,MA2cjB,SAAsBr9H,GAElB,IADA,IAAIT,EAAM,GACDhV,EAAI,EAAGA,EAAI,EAAGA,IACnBgV,IAAQhV,EAAI,IAAM,IAAMyV,EAAI9T,SAAS3B,EAAEY,WAAY,KAEvD,OAAOoU,CACX,CAjdyBopN,CAAa3oN,GAE9B4oN,EAAiB,SAAU5qN,GACvBA,EAAMzO,SAAWG,QAAgC,kBAAfsO,EAAMhI,MAAqBgI,EAAMhI,KAAKvL,QAAU,IAAMuT,EAAMhI,OAASqnI,IACvGzrG,IACA42L,IAER,EAGA,OAFA94N,OAAO2d,iBAAiB,UAAWu7M,GAAgB,GACnDl5N,OAAOiiC,YAAY0rG,EAAQ,KACpBmrF,EAAS,WACZ94N,OAAO8gB,oBAAoB,UAAWo4M,GACtCh3L,EAAUg3L,EAAiBvrF,OAASrwI,CACxC,CACJ,CAUO,SAAS24I,GAASkjF,EAAW79N,GAIhC,IAFA,IAAIiB,EAAQjB,EACR89N,EAASD,EAAUx0N,QAAQ,MAAO,KAAKA,QAAQ,MAAO,IAAIC,MAAM,KAC3D/J,EAAI,EAAGA,EAAIu+N,EAAOr+N,SAAWs+N,GAAY98N,GAAQ1B,IACtD0B,EAAQA,EAAM68N,EAAO58N,SAAS3B,EAAEY,WAAY,MAEhD,OAAOc,CACX,CAWO,SAAS25I,GAASijF,EAAW58N,EAAOjB,GACvC,IAKIT,EAEAgE,EAPAwtB,EAAO8sM,EAAUx0N,QAAQ,MAAO,KAAKA,QAAQ,MAAO,IAAIC,MAAM,KAE9D8X,EAAQphB,GAAO,CAAC,EAEhBg+N,EAAU58M,EAEV3hB,EAASsxB,EAAKtxB,OAElB,IAAKF,EAAI,EAAGA,EAAIE,EAAQF,IACpBgE,EAAMwtB,EAAK7vB,SAAS3B,EAAEY,WAAY,KAC9BZ,EAAI,IAAME,EACVu+N,EAAQ,GAAKz6N,QAAiBvB,IAAVf,EAAsB,CAAC,EAAIA,EAE1Cs2B,GAAkBymM,EAAQ,GAAKz6N,MACpCy6N,EAAQ,GAAKz6N,GAAO,CAAC,GAEzBy6N,EAAUA,EAAQ,GAAKz6N,GAE3B,OAAO6d,CACX,CAUO,SAAS68M,GAAaj+N,EAAKuD,UACvBvD,EAAI,GAAKuD,EACpB,CAKO,IAAI26N,GAAoC,qBAAXx5N,OAAyBA,OAAS,CAAC,EAShE,SAASsqB,GAAShvB,GAErB,OAASu3B,GAAkBv3B,IAAQA,EAAImxB,cAD1B,CAAC,EACgDA,WAClE,CAsBO,SAAS5jB,GAAMhJ,EAAQw0D,GAC1B,IAAKxhC,GAAkBwhC,GAKnB,IAJA,IAAIolK,EAAU55N,EACV65N,EAAWrlK,EAEXslK,EAAY,YACP16K,EAAK,EAAG26K,EAFNr+N,OAAO8wB,KAAKgoC,GAESpV,EAAK26K,EAAO7+N,OAAQkkD,IAAM,CACtD,IAAIpgD,EAAM+6N,EAAO36K,GACZpsB,GAAkB4mM,EAAQ,GAAKE,MAA0D,IAA1CF,EAAQ,GAAKE,GAAWn1N,QAAQ3F,KAC/EyrB,GAASovM,EAAS,GAAK76N,MAAS6L,MAAMkf,QAAQ8vM,EAAS,GAAK76N,IAI7D46N,EAAQ,GAAK56N,GAAO66N,EAAS,GAAK76N,GAHlCqvJ,GAAOurE,EAAQ,GAAK56N,GAAM46N,EAAQ,GAAK56N,GAAM66N,EAAS,GAAK76N,IAAM,EAKzE,CAER,CAWO,SAASqvJ,GAAO2rE,EAAQl5L,EAAOC,EAAQk5L,GAC1C,IAAI99N,EAAS69N,GAA4B,kBAAXA,EAAsBA,EAAS,CAAC,EAC1D9+N,EAAS6E,UAAU7E,OACnB++N,IACA/+N,GAAkB,GAwCtB,IAtCA,IAAIg/N,EAAU,SAAUl/N,GAEpB,IAAKm/N,EAAYn/N,GACb,MAAO,WAGX,IAAIo/N,EAAOD,EAAYn/N,GACvBU,OAAO8wB,KAAK4tM,GAAMxwM,SAAQ,SAAU5qB,GAChC,IAEI0iG,EAFAnlE,EAAMpgC,EAAO,GAAK6C,GAClBq7N,EAAOD,EAAK,GAAKp7N,GAEjBs7N,EAAiBzvN,MAAMkf,QAAQswM,IAASxvN,MAAMkf,QAAQwS,IAAS89L,EAAKn/N,SAAWqhC,EAAIrhC,OAEnFq/N,GAAoBC,QAAgBj+L,aAAetxB,SAAWqvN,EAC9DL,GAAQM,IAAsB9vM,GAAS4vM,IAASxvN,MAAMkf,QAAQswM,IAC1D5vM,GAAS4vM,IACT34H,EAAQnlE,GAAY,CAAC,EAEjB1xB,MAAMkf,QAAQ23E,IAAUA,EAAMtlG,eAAe,kBAC7CiyJ,GAAO3sD,EAAO,CAAC,EAAG24H,EAAMJ,GAGxB99N,EAAO,GAAK6C,GAAOqvJ,GAAO3sD,EAAO,CAAC,EAAG24H,EAAMJ,KAK/Cv4H,EAAQ84H,KAAaj+L,GAAO7gC,OAAO8wB,KAAK6tM,GAAMn/N,OAASqhC,GAAY,GAEnEpgC,EAAO,GAAK6C,GAAOqvJ,GAAO,GAAI3sD,EAAO24H,EAAO34H,GAASA,EAAMxmG,QAAYm/N,GAAQA,EAAKn/N,SAIxFiB,EAAO,GAAK6C,GAAOq7N,CAE3B,GACJ,EACIF,EAAcp6N,UACT/E,EAAI,EAAGA,EAAIE,EAAQF,IACxBk/N,EAAQl/N,GAEZ,OAAOmB,CACX,CAQO,SAAS62B,GAAkBt2B,GAC9B,YAAiBe,IAAVf,GAAiC,OAAVA,CAClC,CAQO,SAAS88N,GAAY98N,GACxB,MAAQ,qBAAuBA,CACnC,CAQO,SAAS+9N,GAAYC,GACxB,OAAOA,EAAc,IAAMz6L,IAC/B,CAiEO,SAAS06L,GAAqB77E,EAAO3kH,GAExC,OADW2kH,IACE3kH,KADF2kH,IAIOhlI,WAJPglI,IAQA67E,GARA77E,EAQ0BlgI,WAAYub,EAErD,CAQO,SAASygM,GAAWt9N,GACvB,IACI,MAAM,IAAIkH,MAAMlH,EACpB,CACA,MAAOwI,GAEH,MAAMA,EAAExI,QAAU,KAAOwI,EAAE1B,KAC/B,CACJ,CA+CO,SAASy2N,GAAWn+N,GACvB,IAAIP,EAASO,EAAQ,GACrB,OAAIP,EAAOkI,MAAM,yDACNlI,EAEJA,EAAS,IACpB,CAgBO,SAASq+N,KACZ,OAAO3B,EACX,CAQO,SAASiC,GAAWzsF,GACvB,IAAI0sF,EAAQ,QACZ,OAAM1sF,aAAmB2sF,OAASR,MAAexnM,GAAkBq7G,EAAQ,GAAK0sF,IAGzE1sF,EAFIv0H,SAASmhN,SAAS5sF,EAAQ,GAAK0sF,GAAQjhN,SAAU,KAAMohN,YAAYC,wBAAyB,MAAMC,eAGjH,CAUO,SAASC,GAAYhtF,EAAS7/H,GAEjC,IAAI8sN,EAA6B,kBAAbjtF,EAAyBv0H,SAASyhN,cAAcltF,GAAWA,EAC/E,GAAIitF,EAAK,GAAK1C,IACV,IAAK,IAAIx5K,EAAK,EAAG7D,EAAK+/K,EAAK,GAAK1C,IAAYx5K,EAAK7D,EAAGrgD,OAAQkkD,IAAM,CAC9D,IAAI4zJ,EAAOz3J,EAAG6D,GACd,GAAI4zJ,aAAgBxkM,EAChB,OAAOwkM,CAEf,CAEJ,OAAO,IACX,CCvcA,ICCWwoB,GDDPC,GAAyB,CACzB,KAAQ,CACJ,QAAW,aACX,MAAS,YAIbC,GAAuB,CACvB,QAAW,IACX,MAAS,IACT,YAAe,IACf,SAAY,IACZ,UAAa,IACb,SAAY,SACZ,IAAO,MACP,YAAe,KAEfC,GAAmB,CAAC,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,EAAG,GAM/CC,GAA4B,WAC5B,SAASA,IACT,CA6KA,OArKAA,EAAWC,cAAgB,SAAUpgO,EAAKqgO,GAEtC,OAAO1lF,GADKokF,KAAasB,EAAQ,QAAUA,EACpBrgO,EAC3B,EAOAmgO,EAAWG,mBAAqB,SAAUtgO,GACtC,OAAO26I,GAAS,gCAAiC36I,IAAQ0F,KAAK66N,gBAClE,EAQAJ,EAAWK,cAAgB,SAAU//N,EAAMswB,GAGvC,IAFA,IACItF,EAAM,CAAC,EACFk4B,EAAK,EAAG88K,EAFF1vM,GAAQ9wB,OAAO8wB,KAAKtwB,GAEKkjD,EAAK88K,EAAWhhO,OAAQkkD,IAAM,CAClE,IAAIpgD,EAAMk9N,EAAW98K,GAEhBl4B,EAAI9qB,eAAeF,EAAK8C,MAEzBkoB,EAAIhrB,EAAK8C,IAAQA,EAEzB,CACA,OAAOkoB,CACX,EAOA00M,EAAWO,eAAiB,SAAUz5N,GAClC,IAAI05N,EAAW15N,EAAMwC,KAAI,SAAUjD,GAC/B,OAAOA,EAAI6C,QAAQ,4BAA6B,OACpD,IAAGlG,KAAK,KAER,OAAO,IADMkM,OACKsxN,EAAU,IAChC,EAMAR,EAAWS,eAAiB,SAAUngO,GAGlC,IAFA,IACI8T,EAAM,CAAC,EACFovC,EAAK,EAAGk9K,EAFD5gO,OAAO8wB,KAAKkvM,IAEct8K,EAAKk9K,EAAYphO,OAAQkkD,IAAM,CACrE,IAAIpgD,EAAMs9N,EAAYl9K,GAEtBpvC,EAAI9T,EAAK8C,IAAQ08N,GAAqB18N,EAC1C,CACA,OAAOgR,CACX,EAOA4rN,EAAWW,eAAiB,SAAUxhO,GAGlC,IAFA,IAAIE,EAAMF,EAAIG,OACV8U,EAAM,GACDhV,EAAI,EAAGA,EAAIC,EAAKD,IAEjBgV,GADAhV,IAAMC,EAAM,EACLF,EAAI4B,SAAS3B,EAAEY,WAAY,KAAO,IAGlCb,EAAI4B,SAAS3B,EAAEY,WAAY,KAG1C,OAAOoU,CACX,EASA4rN,EAAWY,kBAAoB,SAAU9/N,EAAO+/N,EAAOhhO,GACnD,OAAOiB,EAAMoI,QAAQ23N,GAAO,SAAUx6N,GAElC,OAAOxG,EAAIwG,EACf,GACJ,EAOA25N,EAAWc,0BAA4B,SAAUjhO,GAC7C,IAAIuU,EAAM,CAAC,EAGX,OAFAA,EAAIvU,IAAM26I,GAAS,UAAW36I,GAC9BuU,EAAI2sN,QAAUvmF,GAAS,yBAA0BpmI,EAAIvU,KAC9CuU,CACX,EAUA4rN,EAAWgB,yBAA2B,SAAUC,EAAQC,EAAcC,EAAaC,GAC/E,IAAIhtN,EAAM,CAAC,EACPitN,EAAM97N,KAAKu7N,0BAA0BG,GACzC,IAAKrD,GAAYyD,EAAIN,UAAYK,EAAY,CACzC,IAAIE,EAASF,EAAa5mF,GAAS,mBAAoB6mF,GAAO7mF,GAAS6mF,EAAIN,QAAU,WAAYG,GACjG,IAAKtD,GAAY0D,GAAS,CACtBltN,EAAImtN,YAAch8N,KAAK86N,cAAciB,EAAQvB,IAC7C,IAAIyB,EAAStyN,OACbkF,EAAIqtN,iBAAmB,IAAID,EAAOj8N,KAAKo7N,eAAeW,GAAS,KAC/DltN,EAAIstN,aAAe,IAAMJ,EAAO,GAAK,IAAMA,EAAO,GAAK,IACnDH,IACA/sN,EAAIstN,aAAeJ,EAAO,GAAK,IAAMA,EAAO,GAC5CltN,EAAIutN,mBAAqBnnF,GAAS4mF,EAAa,gBAAkB,wBAA0BC,EAAIN,QAASM,EAAIxhO,KAC5GuU,EAAIwtN,YAAcr8N,KAAKk7N,eAAersN,EAAIutN,oBAC1CvtN,EAAI8sN,aAAeG,EAAIN,QAE/B,CACJ,CACA,OAAO3sN,CACX,EAUA4rN,EAAW6B,gBAAkB,SAAUZ,EAAQC,EAAcha,GACzD,IAAI9yM,EAAM,CAAE0tN,OAAQ,CAAC,GACjBT,EAAM97N,KAAKu7N,0BAA0BG,GACzC,IAAKrD,GAAYyD,EAAIN,SAAU,CAC3B3sN,EAAI8sN,aAAeG,EAAIN,QACvB3sN,EAAI2tN,cAAgBvnF,GAAS,wBAA0B6mF,EAAIN,QAASM,EAAIxhO,KACxEuU,EAAI4tN,cAAgBxnF,GAAS,gBAAiBpmI,EAAI2tN,eAClD,IAAIT,EAAS9mF,GAAS6mF,EAAIN,QAAU,WAAYG,GAChD,IAAKtD,GAAY0D,GACb,IAAK,IAAI99K,EAAK,EAAGy+K,EAAqBlC,GAAkBv8K,EAAKy+K,EAAmB3iO,OAAQkkD,IAAM,CAC1F,IAAIpkD,EAAI6iO,EAAmBz+K,GAE3BpvC,EAAI0tN,OAAO1iO,GAAKkiO,EAAOliO,EAC3B,CAER,CACA,OAAOgV,CACX,EACA4rN,EAAWkC,MAAQ,cACnBlC,EAAWmC,OAAS,eACpBnC,EAAWI,iBAAmBP,GACvBG,CACX,CAhLgC,GAqL5BoC,GAAqB,CACrB,IAAO,MACP,IAAO,MACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,WACP,IAAO,MACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,SACP,IAAO,iBACP,IAAO,iBACP,IAAO,KACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,IACP,IAAO,OACP,IAAO,iBACP,IAAO,iBACP,IAAO,iBACP,IAAO,IACP,IAAO,SACP,IAAO,MACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,KACP,IAAO,IACP,IAAO,gBACP,IAAO,SACP,IAAO,MACP,IAAO,SACP,IAAO,OACP,IAAO,eACP,IAAO,MACP,IAAO,IACP,IAAO,UACP,IAAO,OACP,IAAO,MACP,IAAO,MACP,IAAO,MACP,IAAO,UACP,IAAO,MACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,MACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,OACP,IAAO,OACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,SACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,OACP,IAAO,IACP,IAAO,KACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,IACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,SACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,MACP,IAAO,KACP,IAAO,SACP,IAAO,IACP,IAAO,OACP,IAAO,2BACP,IAAO,KACP,IAAO,KACP,IAAO,IACP,IAAO,OACP,IAAO,KACP,IAAO,KACP,IAAO,SACP,IAAO,KACP,IAAO,OACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,SACP,IAAO,qBACP,IAAO,KACP,IAAO,SACP,IAAO,MACP,IAAO,qBACP,IAAO,SACP,IAAO,IACP,IAAO,IACP,IAAO,KACP,IAAO,eACP,IAAO,OACP,IAAO,IACP,IAAO,UACP,IAAO,SACP,IAAO,KACP,IAAO,IACP,IAAO,MACP,IAAO,SACP,IAAO,gBACP,IAAO,UACP,IAAO,sBACP,IAAO,qBACP,IAAO,SACP,IAAO,KACP,IAAO,SACP,IAAO,qBACP,IAAO,SACP,IAAO,QCpWX,SAAWxC,GACP,IAAIyC,EAAiB,CAAC,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAC7G,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,KAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MACvH,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,MAAO,M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V,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,OAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,KACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,OAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,KACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,OAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,IACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,SACV,SAAU,UAEdjG,EAASoB,YAAc,CAWnBkH,MAAO,SAAUvqE,EAAQwqE,EAAU1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","sources":["../node_modules/@bugsnag/node_modules/browser-pack-flat/_prelude","../node_modules/@bugsnag/browser/core/lib/breadcrumb-types.js","../node_modules/@bugsnag/browser/core/lib/es-utils/reduce.js","../node_modules/@bugsnag/browser/core/lib/es-utils/filter.js","../node_modules/@bugsnag/browser/core/lib/es-utils/includes.js","../node_modules/@bugsnag/browser/core/lib/es-utils/is-array.js","../node_modules/@bugsnag/browser/core/lib/es-utils/keys.js","../node_modules/@bugsnag/browser/core/lib/validators/int-range.js","../node_modules/@bugsnag/browser/core/lib/validators/list-of-functions.js","../node_modules/@bugsnag/browser/core/lib/validators/string-with-length.js","../node_modules/@bugsnag/browser/core/config.js","../node_modules/@bugsnag/browser/core/lib/es-utils/assign.js","../node_modules/@bugsnag/browser/core/lib/es-utils/map.js","../node_modules/@bugsnag/browser/dist/src/config.js","../node_modules/@bugsnag/browser/core/breadcrumb.js","../node_modules/@bugsnag/browser/core/node_modules/stackframe/stackframe.js","../node_modules/@bugsnag/browser/core/node_modules/error-stack-parser/error-stack-parser.js","../node_modules/@bugsnag/browser/core/lib/error-stack-parser.js","../node_modules/@bugsnag/browser/core/node_modules/@bugsnag/safe-json-stringify/index.js","../node_modules/@bugsnag/browser/core/lib/feature-flag-delegate.js","../node_modules/@bugsnag/browser/core/lib/has-stack.js","../node_modules/@bugsnag/browser/core/node_modules/iserror/index.js","../node_modules/@bugsnag/browser/core/lib/iserror.js","../node_modules/@bugsnag/browser/core/lib/metadata-delegate.js","../node_modules/@bugsnag/browser/core/node_modules/stack-generator/stack-generator.js","../node_modules/@bugsnag/browser/core/event.js","../node_modules/@bugsnag/browser/core/lib/async-every.js","../node_modules/@bugsnag/browser/core/lib/callback-runner.js","../node_modules/@bugsnag/browser/core/lib/sync-callback-runner.js","../node_modules/@bugsnag/browser/core/node_modules/@bugsnag/cuid/lib/pad.js","../node_modules/@bugsnag/browser/core/node_modules/@bugsnag/cuid/lib/fingerprint.browser.js","../node_modules/@bugsnag/browser/core/node_modules/@bugsnag/cuid/index.js","../node_modules/@bugsnag/browser/core/session.js","../node_modules/@bugsnag/browser/core/client.js","../node_modules/@bugsnag/browser/core/lib/json-payload.js","../node_modules/@bugsnag/browser/delivery-x-domain-request/delivery.js","../node_modules/@bugsnag/browser/delivery-xml-http-request/delivery.js","../node_modules/@bugsnag/browser/plugin-app-duration/app.js","../node_modules/@bugsnag/browser/plugin-browser-context/context.js","../node_modules/@bugsnag/browser/plugin-browser-device/device.js","../node_modules/@bugsnag/browser/plugin-browser-request/request.js","../node_modules/@bugsnag/browser/plugin-browser-session/session.js","../node_modules/@bugsnag/browser/plugin-client-ip/client-ip.js","../node_modules/@bugsnag/browser/plugin-console-breadcrumbs/console-breadcrumbs.js","../node_modules/@bugsnag/browser/plugin-inline-script-content/inline-script-content.js","../node_modules/@bugsnag/browser/plugin-interaction-breadcrumbs/interaction-breadcrumbs.js","../node_modules/@bugsnag/browser/plugin-navigation-breadcrumbs/navigation-breadcrumbs.js","../node_modules/@bugsnag/browser/plugin-network-breadcrumbs/network-breadcrumbs.js","../node_modules/@bugsnag/browser/plugin-simple-throttle/throttle.js","../node_modules/@bugsnag/browser/plugin-strip-query-string/strip-query-string.js","../node_modules/@bugsnag/browser/plugin-window-onerror/onerror.js","../node_modules/@bugsnag/browser/plugin-window-unhandled-rejection/unhandled-rejection.js","../node_modules/@bugsnag/browser/dist/src/notifier.js","../node_modules/@bugsnag/node_modules/browser-pack-flat/_postlude","../node_modules/@bugsnag/cuid/index.js","../node_modules/@bugsnag/cuid/lib/fingerprint.browser.js","../node_modules/@bugsnag/cuid/lib/pad.js","../node_modules/@bugsnag/js/browser/notifier.js","../node_modules/@bugsnag/plugin-react/dist/src/index.js","../node_modules/src/index.ts","../node_modules/bent/src/browser.js","../node_modules/bent/src/core.js","../node_modules/core-js-pure/es/promise/index.js","../node_modules/core-js-pure/internals/a-callable.js","../node_modules/core-js-pure/internals/a-constructor.js","../node_modules/core-js-pure/internals/a-possible-prototype.js","../node_modules/core-js-pure/internals/add-to-unscopables.js","../node_modules/core-js-pure/internals/an-instance.js","../node_modules/core-js-pure/internals/an-object.js","../node_modules/core-js-pure/internals/array-includes.js","../node_modules/core-js-pure/internals/array-slice.js","../node_modules/core-js-pure/internals/check-correctness-of-iteration.js","../node_modules/core-js-pure/internals/classof-raw.js","../node_modules/core-js-pure/internals/classof.js","../node_modules/core-js-pure/internals/copy-constructor-properties.js","../node_modules/core-js-pure/internals/correct-prototype-getter.js","../node_modules/core-js-pure/internals/create-iter-result-object.js","../node_modules/core-js-pure/internals/create-non-enumerable-property.js","../node_modules/core-js-pure/internals/create-property-descriptor.js","../node_modules/core-js-pure/internals/define-built-in-accessor.js","../node_modules/core-js-pure/internals/define-built-in.js","../node_modules/core-js-pure/internals/define-global-property.js","../node_modules/core-js-pure/internals/descriptors.js","../node_modules/core-js-pure/internals/document-all.js","../node_modules/core-js-pure/internals/document-create-element.js","../node_modules/core-js-pure/internals/dom-iterables.js","../node_modules/core-js-pure/internals/engine-is-browser.js","../node_modules/core-js-pure/internals/engine-is-deno.js","../node_modules/core-js-pure/internals/engine-is-ios-pebble.js","../node_modules/core-js-pure/internals/engine-is-ios.js","../node_modules/core-js-pure/internals/engine-is-node.js","../node_modules/core-js-pure/internals/engine-is-webos-webkit.js","../node_modules/core-js-pure/internals/engine-user-agent.js","../node_modules/core-js-pure/internals/engine-v8-version.js","../node_modules/core-js-pure/internals/enum-bug-keys.js","../node_modules/core-js-pure/internals/error-stack-clear.js","../node_modules/core-js-pure/internals/error-stack-install.js","../node_modules/core-js-pure/internals/error-stack-installable.js","../node_modules/core-js-pure/internals/export.js","../node_modules/core-js-pure/internals/fails.js","../node_modules/core-js-pure/internals/function-apply.js","../node_modules/core-js-pure/internals/function-bind-context.js","../node_modules/core-js-pure/internals/function-bind-native.js","../node_modules/core-js-pure/internals/function-call.js","../node_modules/core-js-pure/internals/function-name.js","../node_modules/core-js-pure/internals/function-uncurry-this-accessor.js","../node_modules/core-js-pure/internals/function-uncurry-this-clause.js","../node_modules/core-js-pure/internals/function-uncurry-this.js","../node_modules/core-js-pure/internals/get-built-in.js","../node_modules/core-js-pure/internals/get-iterator-method.js","../node_modules/core-js-pure/internals/get-iterator.js","../node_modules/core-js-pure/internals/get-method.js","../node_modules/core-js-pure/internals/global.js","../node_modules/core-js-pure/internals/has-own-property.js","../node_modules/core-js-pure/internals/hidden-keys.js","../node_modules/core-js-pure/internals/host-report-errors.js","../node_modules/core-js-pure/internals/html.js","../node_modules/core-js-pure/internals/ie8-dom-define.js","../node_modules/core-js-pure/internals/indexed-object.js","../node_modules/core-js-pure/internals/inspect-source.js","../node_modules/core-js-pure/internals/install-error-cause.js","../node_modules/core-js-pure/internals/internal-state.js","../node_modules/core-js-pure/internals/is-array-iterator-method.js","../node_modules/core-js-pure/internals/is-callable.js","../node_modules/core-js-pure/internals/is-constructor.js","../node_modules/core-js-pure/internals/is-forced.js","../node_modules/core-js-pure/internals/is-null-or-undefined.js","../node_modules/core-js-pure/internals/is-object.js","../node_modules/core-js-pure/internals/is-pure.js","../node_modules/core-js-pure/internals/is-symbol.js","../node_modules/core-js-pure/internals/iterate.js","../node_modules/core-js-pure/internals/iterator-close.js","../node_modules/core-js-pure/internals/iterator-create-constructor.js","../node_modules/core-js-pure/internals/iterator-define.js","../node_modules/core-js-pure/internals/iterators-core.js","../node_modules/core-js-pure/internals/iterators.js","../node_modules/core-js-pure/internals/length-of-array-like.js","../node_modules/core-js-pure/internals/math-trunc.js","../node_modules/core-js-pure/internals/microtask.js","../node_modules/core-js-pure/internals/new-promise-capability.js","../node_modules/core-js-pure/internals/normalize-string-argument.js","../node_modules/core-js-pure/internals/object-create.js","../node_modules/core-js-pure/internals/object-define-properties.js","../node_modules/core-js-pure/internals/object-define-property.js","../node_modules/core-js-pure/internals/object-get-own-property-descriptor.js","../node_modules/core-js-pure/internals/object-get-own-property-names.js","../node_modules/core-js-pure/internals/object-get-own-property-symbols.js","../node_modules/core-js-pure/internals/object-get-prototype-of.js","../node_modules/core-js-pure/internals/object-is-prototype-of.js","../node_modules/core-js-pure/internals/object-keys-internal.js","../node_modules/core-js-pure/internals/object-keys.js","../node_modules/core-js-pure/internals/object-property-is-enumerable.js","../node_modules/core-js-pure/internals/object-set-prototype-of.js","../node_modules/core-js-pure/internals/object-to-string.js","../node_modules/core-js-pure/internals/ordinary-to-primitive.js","../node_modules/core-js-pure/internals/own-keys.js","../node_modules/core-js-pure/internals/path.js","../node_modules/core-js-pure/internals/perform.js","../node_modules/core-js-pure/internals/promise-constructor-detection.js","../node_modules/core-js-pure/internals/promise-native-constructor.js","../node_modules/core-js-pure/internals/promise-resolve.js","../node_modules/core-js-pure/internals/promise-statics-incorrect-iteration.js","../node_modules/core-js-pure/internals/queue.js","../node_modules/core-js-pure/internals/require-object-coercible.js","../node_modules/core-js-pure/internals/set-species.js","../node_modules/core-js-pure/internals/set-to-string-tag.js","../node_modules/core-js-pure/internals/shared-key.js","../node_modules/core-js-pure/internals/shared-store.js","../node_modules/core-js-pure/internals/shared.js","../node_modules/core-js-pure/internals/species-constructor.js","../node_modules/core-js-pure/internals/string-multibyte.js","../node_modules/core-js-pure/internals/symbol-constructor-detection.js","../node_modules/core-js-pure/internals/task.js","../node_modules/core-js-pure/internals/to-absolute-index.js","../node_modules/core-js-pure/internals/to-indexed-object.js","../node_modules/core-js-pure/internals/to-integer-or-infinity.js","../node_modules/core-js-pure/internals/to-length.js","../node_modules/core-js-pure/internals/to-object.js","../node_modules/core-js-pure/internals/to-primitive.js","../node_modules/core-js-pure/internals/to-property-key.js","../node_modules/core-js-pure/internals/to-string-tag-support.js","../node_modules/core-js-pure/internals/to-string.js","../node_modules/core-js-pure/internals/try-to-string.js","../node_modules/core-js-pure/internals/uid.js","../node_modules/core-js-pure/internals/use-symbol-as-uid.js","../node_modules/core-js-pure/internals/v8-prototype-define-bug.js","../node_modules/core-js-pure/internals/validate-arguments-length.js","../node_modules/core-js-pure/internals/weak-map-basic-detection.js","../node_modules/core-js-pure/internals/well-known-symbol.js","../node_modules/core-js-pure/modules/es.aggregate-error.constructor.js","../node_modules/core-js-pure/modules/es.aggregate-error.js","../node_modules/core-js-pure/modules/es.array.iterator.js","../node_modules/core-js-pure/modules/es.promise.all-settled.js","../node_modules/core-js-pure/modules/es.promise.all.js","../node_modules/core-js-pure/modules/es.promise.any.js","../node_modules/core-js-pure/modules/es.promise.catch.js","../node_modules/core-js-pure/modules/es.promise.constructor.js","../node_modules/core-js-pure/modules/es.promise.finally.js","../node_modules/core-js-pure/modules/es.promise.js","../node_modules/core-js-pure/modules/es.promise.race.js","../node_modules/core-js-pure/modules/es.promise.reject.js","../node_modules/core-js-pure/modules/es.promise.resolve.js","../node_modules/core-js-pure/modules/es.string.iterator.js","../node_modules/core-js-pure/modules/web.dom-collections.iterator.js","../node_modules/core-js-pure/stable/promise/index.js","../node_modules/date-fns/_lib/addLeadingZeros/index.js","../node_modules/date-fns/_lib/defaultLocale/index.js","../node_modules/date-fns/_lib/defaultOptions/index.js","../node_modules/date-fns/_lib/format/formatters/index.js","../node_modules/date-fns/_lib/format/lightFormatters/index.js","../node_modules/date-fns/_lib/format/longFormatters/index.js","../node_modules/date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js","../node_modules/date-fns/_lib/getUTCDayOfYear/index.js","../node_modules/date-fns/_lib/getUTCISOWeek/index.js","../node_modules/date-fns/_lib/getUTCISOWeekYear/index.js","../node_modules/date-fns/_lib/getUTCWeek/index.js","../node_modules/date-fns/_lib/getUTCWeekYear/index.js","../node_modules/date-fns/_lib/protectedTokens/index.js","../node_modules/date-fns/_lib/requiredArgs/index.js","../node_modules/date-fns/_lib/startOfUTCISOWeek/index.js","../node_modules/date-fns/_lib/startOfUTCISOWeekYear/index.js","../node_modules/date-fns/_lib/startOfUTCWeek/index.js","../node_modules/date-fns/_lib/startOfUTCWeekYear/index.js","../node_modules/date-fns/_lib/toInteger/index.js","../node_modules/date-fns/addMilliseconds/index.js","../node_modules/date-fns/format/index.js","../node_modules/date-fns/isDate/index.js","../node_modules/date-fns/isValid/index.js","../node_modules/date-fns/locale/_lib/buildFormatLongFn/index.js","../node_modules/date-fns/locale/_lib/buildLocalizeFn/index.js","../node_modules/date-fns/locale/_lib/buildMatchFn/index.js","../node_modules/date-fns/locale/_lib/buildMatchPatternFn/index.js","../node_modules/date-fns/locale/en-US/_lib/formatDistance/index.js","../node_modules/date-fns/locale/en-US/_lib/formatLong/index.js","../node_modules/date-fns/locale/en-US/_lib/formatRelative/index.js","../node_modules/date-fns/locale/en-US/_lib/localize/index.js","../node_modules/date-fns/locale/en-US/_lib/match/index.js","../node_modules/date-fns/locale/en-US/index.js","../node_modules/date-fns/subMilliseconds/index.js","../node_modules/date-fns/toDate/index.js","../node_modules/event-as-promise/src/external/p-defer.js","../node_modules/event-as-promise/src/index.js","../node_modules/event-target-shim/es5.js","../node_modules/hoist-non-react-statics/dist/hoist-non-react-statics.cjs.js","../node_modules/hoist-non-react-statics/node_modules/react-is/cjs/react-is.production.min.js","../node_modules/hoist-non-react-statics/node_modules/react-is/index.js","../node_modules/memoize-one/dist/memoize-one.esm.js","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/microsoft.cognitiveservices.speech.sdk.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/ConsoleLoggingListener.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/FileAudioSource.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/MicAudioSource.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/PCMRecorder.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/ProxyInfo.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/ReplayableAudioNode.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/RestConfigBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/RestMessageAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/WebsocketConnection.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.browser/src/common.browser/WebsocketMessageAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/AddedLmIntent.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/AgentConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/CognitiveSubscriptionKeyAuthentication.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/CognitiveTokenAuthentication.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/ConnectionFactoryBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/ConversationServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/DialogConnectorFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/DialogServiceAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/DialogServiceTurnState.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/DialogServiceTurnStateManager.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/DynamicGrammarBuilder.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/EnumTranslation.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/HeaderNames.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/IAuthentication.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/IntentConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/IntentServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/QueryParameterNames.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/RecognitionEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/RecognizerConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/RequestSession.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/ActivityResponsePayload.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/DetailedSpeechPhrase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/Enums.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/IntentResponse.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/SimpleSpeechPhrase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/SpeechDetected.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/SpeechHypothesis.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/SpeechKeyword.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/SynthesisAudioMetadata.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/TranslationHypothesis.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/TranslationPhrase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/TranslationSynthesisEnd.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/ServiceMessages/src/common.speech/ServiceMessages/TurnStatusPayload.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/ServiceRecognizerBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/ServiceTelemetryListener.Internal.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeakerRecognitionConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeakerRecognitionConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeakerServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechConnectionMessage.Internal.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechContext.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SpeechSynthesisConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesisAdapterBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesisContext.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesisEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesisRestAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesisTurn.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/SynthesizerConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/TranscriberConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationConnectionConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationConnectionMessage.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationManager.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationRequestSession.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationServiceAdapter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationTranslatorConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationTranslatorEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationTranslatorInterfaces.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationTranslatorRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/ConversationWebsocketMessageFormatter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/ServiceMessages/src/common.speech/Transcription/ServiceMessages/CommandResponsePayload.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/ServiceMessages/src/common.speech/Transcription/ServiceMessages/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/ServiceMessages/src/common.speech/Transcription/ServiceMessages/ParticipantResponsePayload.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/ServiceMessages/src/common.speech/Transcription/ServiceMessages/TranslationResponsePayload.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/Transcription/src/common.speech/Transcription/TranscriberRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/TranscriptionServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/TranslationConnectionFactory.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/TranslationServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/TranslationStatus.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/VoiceServiceRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common.speech/src/common.speech/WebsocketMessageFormatter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/AudioSourceEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/BackgroundError.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/ChunkedArrayBufferStream.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/ConnectionEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/ConnectionMessage.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/ConnectionOpenResponse.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/DeferralMap.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/DialogEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Error.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/EventSource.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Events.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Guid.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/IConnection.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/List.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/OCSPEvents.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/PlatformEvent.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Promise.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Queue.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/RawWebsocketMessage.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/RiffPcmEncoder.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Stream.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/StringUtils.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/common/src/common/Timeout.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ActivityReceivedEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioFileWriter.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioInputStream.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioOutputFormat.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioOutputStream.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/AudioStreamFormat.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/BaseAudioPlayer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/PullAudioInputStreamCallback.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/PushAudioOutputStreamCallback.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Audio/src/sdk/Audio/SpeakerAudioDestination.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/AutoDetectSourceLanguageConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/AutoDetectSourceLanguageResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/BotFrameworkConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CancellationDetails.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CancellationDetailsBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CancellationErrorCodes.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CancellationEventArgsBase.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CancellationReason.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Connection.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ConnectionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ConnectionMessage.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ConnectionMessageEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Contracts.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ConversationTranscriptionCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/CustomCommandsConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Diagnostics.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/DialogServiceConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/DialogServiceConnector.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/IntentRecognitionCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/IntentRecognitionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/IntentRecognitionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/IntentRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/KeywordRecognitionModel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/LanguageIdMode.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/LanguageUnderstandingModel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/LogLevel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/NoMatchDetails.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/NoMatchReason.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/OutputFormat.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PhraseListGrammar.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ProfanityOption.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PronunciationAssessmentConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PronunciationAssessmentGradingSystem.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PronunciationAssessmentGranularity.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PronunciationAssessmentResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PropertyCollection.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/PropertyId.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/RecognitionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/RecognitionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Recognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ResultReason.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ServiceEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/ServicePropertyChannel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SessionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SourceLanguageConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeakerIdentificationModel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeakerRecognitionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeakerRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeakerVerificationModel.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechRecognitionCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechRecognitionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechRecognitionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisBookmarkEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisBoundaryType.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisOutputFormat.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisVisemeEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesisWordBoundaryEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechSynthesizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SpeechTranslationConfig.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SynthesisResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/SynthesisVoicesResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/Conversation.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationCommon.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationExpirationEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationParticipantsChangedEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranscriber.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranslationCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranslationEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranslationResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ConversationTranslator.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/Exports.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/IParticipant.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/Transcription/src/sdk/Transcription/ParticipantChangedReason.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationRecognitionCanceledEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationRecognitionEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationRecognitionResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationRecognizer.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationSynthesisEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TranslationSynthesisResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/Translations.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/TurnStatusReceivedEventArgs.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceInfo.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfile.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfileClient.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfileEnrollmentResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfilePhraseResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfileResult.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/distrib/lib/src/sdk/src/sdk/VoiceProfileType.ts","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/index.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/md5.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/native.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/nil.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/parse.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/regex.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/rng.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/sha1.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/stringify.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/v1.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/v3.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/v35.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/v4.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/v5.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/validate.js","../node_modules/microsoft-cognitiveservices-speech-sdk/node_modules/uuid/dist/commonjs-browser/version.js","../node_modules/on-error-resume-next/lib/index.js","../node_modules/p-defer-es5/lib/index.js","../node_modules/prop-types/factoryWithThrowingShims.js","../node_modules/prop-types/index.js","../node_modules/prop-types/lib/ReactPropTypesSecret.js","../node_modules/react-confirm-alert/lib/index.js","../node_modules/react-dom/cjs/react-dom.production.min.js","../node_modules/react-dom/client.js","../node_modules/react-dom/index.js","../node_modules/react-speech-recognition/lib/NativeSpeechRecognition.js","../node_modules/react-speech-recognition/lib/RecognitionManager.js","../node_modules/react-speech-recognition/lib/SpeechRecognition.js","../node_modules/react-speech-recognition/lib/actions.js","../node_modules/react-speech-recognition/lib/constants.js","../node_modules/react-speech-recognition/lib/index.js","../node_modules/react-speech-recognition/lib/isAndroid.js","../node_modules/react-speech-recognition/lib/reducers.js","../node_modules/react-speech-recognition/lib/utils.js","../node_modules/react-visibility-sensor/dist/visibility-sensor.js","../node_modules/react/cjs/react-jsx-runtime.production.min.js","../node_modules/react/cjs/react.production.min.js","../node_modules/react/index.js","../node_modules/react/jsx-runtime.js","../node_modules/scheduler/cjs/scheduler.production.min.js","../node_modules/scheduler/index.js","../node_modules/web-speech-cognitive-services/src/SpeechServices.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/SpeechSDK.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/SpeechToText.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/SpeechToText/SpeechGrammarList.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/SpeechToText/cognitiveServiceEventResultToWebSpeechRecognitionResultList.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/SpeechToText/createSpeechRecognitionPonyfill.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/TextToSpeech.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/TextToSpeech/AudioContextConsumer.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/TextToSpeech/AudioContextQueue.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/TextToSpeech/SpeechSynthesisEvent.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/TextToSpeech/SpeechSynthesisUtterance.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/TextToSpeech/SpeechSynthesisVoice.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/TextToSpeech/buildSSML.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/TextToSpeech/createSpeechSynthesisPonyfill.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/TextToSpeech/fetchCustomVoices.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/TextToSpeech/fetchSpeechData.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/TextToSpeech/fetchVoices.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/TextToSpeech/isSSML.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/TextToSpeech/subscribeEvent.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/fetchAuthorizationToken.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/patchOptions.js","../node_modules/web-speech-cognitive-services/src/SpeechServices/resolveFunctionOrReturnValue.js","../node_modules/web-speech-cognitive-services/src/Util/arrayToMap.js","../node_modules/web-speech-cognitive-services/src/Util/createPromiseQueue.js","../node_modules/web-speech-cognitive-services/src/index.js","../node_modules/@babel/runtime-corejs3/core-js-stable/promise.js","../node_modules/@babel/runtime-corejs3/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/asyncToGenerator.js","../node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/@babel/runtime/helpers/construct.js","../node_modules/@babel/runtime/helpers/createClass.js","../node_modules/@babel/runtime/helpers/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/createSuper.js","../node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/@babel/runtime/helpers/get.js","../node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/inherits.js","../node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/@babel/runtime/helpers/isNativeFunction.js","../node_modules/@babel/runtime/helpers/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/@babel/runtime/helpers/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/nonIterableRest.js","../node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/objectSpread2.js","../node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/set.js","../node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/slicedToArray.js","../node_modules/@babel/runtime/helpers/superPropBase.js","../node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/@babel/runtime/helpers/toPrimitive.js","../node_modules/@babel/runtime/helpers/toPropertyKey.js","../node_modules/@babel/runtime/helpers/typeof.js","../node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/wrapNativeSuper.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/arrayLikeToArray.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/arrayWithoutHoles.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/assertThisInitialized.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/asyncToGenerator.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/classCallCheck.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/createClass.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/defineProperty.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/getPrototypeOf.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/inherits.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/interopRequireDefault.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/iterableToArray.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/nonIterableSpread.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/objectWithoutProperties.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/objectWithoutPropertiesLoose.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/possibleConstructorReturn.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/regeneratorRuntime.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/setPrototypeOf.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/toConsumableArray.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/typeof.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/helpers/unsupportedIterableToArray.js","../node_modules/web-speech-cognitive-services/node_modules/@babel/runtime/regenerator/index.js","../webpack/bootstrap","../webpack/runtime/compat get default export","../webpack/runtime/create fake namespace object","../webpack/runtime/define property getters","../webpack/runtime/global","../webpack/runtime/hasOwnProperty shorthand","../webpack/runtime/make namespace object","../node_modules/@babel/runtime/helpers/esm/typeof.js","../node_modules/@babel/runtime/helpers/esm/regeneratorRuntime.js","../node_modules/@babel/runtime/helpers/esm/asyncToGenerator.js","../node_modules/@remix-run/router/history.ts","../node_modules/@babel/runtime/helpers/esm/arrayWithHoles.js","../node_modules/@babel/runtime/helpers/esm/arrayLikeToArray.js","../node_modules/@babel/runtime/helpers/esm/unsupportedIterableToArray.js","../node_modules/@babel/runtime/helpers/esm/nonIterableRest.js","../node_modules/@babel/runtime/helpers/esm/slicedToArray.js","../node_modules/@babel/runtime/helpers/esm/iterableToArrayLimit.js","../node_modules/@babel/runtime/helpers/esm/createForOfIteratorHelper.js","../node_modules/@babel/runtime/helpers/esm/iterableToArray.js","../node_modules/@babel/runtime/helpers/esm/toConsumableArray.js","../node_modules/@babel/runtime/helpers/esm/arrayWithoutHoles.js","../node_modules/@babel/runtime/helpers/esm/nonIterableSpread.js","../node_modules/@babel/runtime/helpers/esm/classCallCheck.js","../node_modules/@babel/runtime/helpers/esm/toPropertyKey.js","../node_modules/@babel/runtime/helpers/esm/toPrimitive.js","../node_modules/@babel/runtime/helpers/esm/createClass.js","../node_modules/@babel/runtime/helpers/esm/setPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/inherits.js","../node_modules/@babel/runtime/helpers/esm/getPrototypeOf.js","../node_modules/@babel/runtime/helpers/esm/isNativeReflectConstruct.js","../node_modules/@babel/runtime/helpers/esm/assertThisInitialized.js","../node_modules/@babel/runtime/helpers/esm/createSuper.js","../node_modules/@babel/runtime/helpers/esm/possibleConstructorReturn.js","../node_modules/@babel/runtime/helpers/esm/defineProperty.js","../node_modules/@babel/runtime/helpers/esm/construct.js","../node_modules/@babel/runtime/helpers/esm/wrapNativeSuper.js","../node_modules/@babel/runtime/helpers/esm/isNativeFunction.js","../node_modules/@remix-run/router/utils.ts","../node_modules/@babel/runtime/helpers/esm/toArray.js","../node_modules/@remix-run/router/router.ts","../node_modules/react-router/lib/use-sync-external-store-shim/useSyncExternalStoreShimClient.ts","../node_modules/react-router/lib/use-sync-external-store-shim/index.ts","../node_modules/react-router/lib/context.ts","../node_modules/react-router/lib/hooks.tsx","../node_modules/react-router/lib/components.tsx","../node_modules/react-router/index.ts","../node_modules/react-router-dom/dom.ts","../node_modules/react-router-dom/index.tsx","../node_modules/@babel/runtime/helpers/esm/objectSpread2.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutProperties.js","../node_modules/@babel/runtime/helpers/esm/objectWithoutPropertiesLoose.js","../node_modules/clsx/dist/clsx.m.js","../node_modules/react-toastify/src/utils/propValidator.ts","../node_modules/react-toastify/src/utils/collapseToast.ts","../node_modules/react-toastify/src/utils/cssTransition.tsx","../node_modules/react-toastify/src/utils/mapper.ts","../node_modules/react-toastify/src/core/eventManager.ts","../node_modules/react-toastify/src/components/Icons.tsx","../node_modules/react-toastify/src/hooks/useToastContainer.ts","../node_modules/react-toastify/src/hooks/useToast.ts","../node_modules/react-toastify/src/components/CloseButton.tsx","../node_modules/react-toastify/src/components/ProgressBar.tsx","../node_modules/react-toastify/src/components/Toast.tsx","../node_modules/react-toastify/src/components/Transitions.tsx","../node_modules/react-toastify/src/components/ToastContainer.tsx","../node_modules/react-toastify/src/core/toast.ts","../node_modules/react-toastify/src/utils/constant.ts","../node_modules/@bugsnag/core-performance/dist/validation.js","../node_modules/@bugsnag/core-performance/dist/attributes.js","../node_modules/@bugsnag/core-performance/dist/clock.js","../node_modules/@bugsnag/core-performance/dist/config.js","../node_modules/@bugsnag/core-performance/dist/batch-processor.js","../node_modules/@bugsnag/core-performance/dist/events.js","../node_modules/@bugsnag/core-performance/dist/span.js","../node_modules/@bugsnag/core-performance/dist/trace-id-to-sampling-rate.js","../node_modules/@bugsnag/core-performance/dist/delivery.js","../node_modules/@bugsnag/core-performance/dist/probability-fetcher.js","../node_modules/@bugsnag/core-performance/dist/probability-manager.js","../node_modules/@bugsnag/core-performance/dist/processor.js","../node_modules/@bugsnag/core-performance/dist/sampler.js","../node_modules/@bugsnag/core-performance/dist/span-context.js","../node_modules/@bugsnag/core-performance/dist/time.js","../node_modules/@bugsnag/core-performance/dist/span-factory.js","../node_modules/@bugsnag/core-performance/dist/persistence.js","../node_modules/@bugsnag/core-performance/dist/retry-queue.js","../node_modules/@bugsnag/delivery-fetch-performance/dist/delivery.js","../node_modules/@bugsnag/request-tracker-performance/dist/request-tracker.js","../node_modules/@bugsnag/request-tracker-performance/dist/url-helpers.js","../node_modules/@bugsnag/request-tracker-performance/dist/request-tracker-fetch.js","../node_modules/@bugsnag/browser-performance/dist/send-page-attributes.js","../node_modules/@bugsnag/browser-performance/dist/auto-instrumentation/page-load-phase-spans.js","../node_modules/@bugsnag/browser-performance/dist/default-routing-provider.js","../node_modules/@bugsnag/browser-performance/dist/auto-instrumentation/full-page-load-plugin.js","../node_modules/@bugsnag/request-tracker-performance/dist/network-request-callback.js","../node_modules/@bugsnag/browser-performance/dist/auto-instrumentation/network-request-plugin.js","../node_modules/@bugsnag/browser-performance/dist/auto-instrumentation/resource-load-plugin.js","../node_modules/@bugsnag/browser-performance/dist/auto-instrumentation/route-change-plugin.js","../node_modules/@bugsnag/browser-performance/dist/clock.js","../node_modules/@bugsnag/browser-performance/dist/routing-provider.js","../node_modules/@bugsnag/browser-performance/dist/id-generator.js","../node_modules/@bugsnag/browser-performance/dist/on-settle/settler.js","../node_modules/@bugsnag/browser-performance/dist/on-settle/dom-mutation-settler.js","../node_modules/@bugsnag/browser-performance/dist/on-settle/load-event-end-settler.js","../node_modules/@bugsnag/browser-performance/dist/on-settle/request-settler.js","../node_modules/@babel/runtime/helpers/esm/get.js","../node_modules/@babel/runtime/helpers/esm/superPropBase.js","../node_modules/@bugsnag/browser-performance/dist/on-settle/settler-aggregate.js","../node_modules/@bugsnag/browser-performance/dist/persistence.js","../node_modules/@bugsnag/browser-performance/dist/span-attributes-source.js","../node_modules/@bugsnag/browser-performance/dist/config.js","../node_modules/@bugsnag/browser-performance/dist/web-vitals.js","../node_modules/@bugsnag/browser-performance/dist/browser.js","../node_modules/@bugsnag/browser-performance/dist/backgrounding-listener.js","../node_modules/@bugsnag/browser-performance/dist/resource-attributes-source.js","../node_modules/@bugsnag/request-tracker-performance/dist/request-tracker-xhr.js","../node_modules/@bugsnag/browser-performance/dist/on-settle/index.js","../node_modules/@bugsnag/core-performance/dist/core.js","../node_modules/@syncfusion/ej2-base/src/util.js","../node_modules/@syncfusion/ej2-base/src/intl/parser-base.js","../node_modules/@syncfusion/ej2-base/src/hijri-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/date-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/number-formatter.js","../node_modules/@syncfusion/ej2-base/src/intl/date-parser.js","../node_modules/@syncfusion/ej2-base/src/intl/number-parser.js","../node_modules/@syncfusion/ej2-base/src/observer.js","../node_modules/@syncfusion/ej2-base/src/internationalization.js","../node_modules/@syncfusion/ej2-base/src/intl/intl-base.js","../node_modules/@syncfusion/ej2-base/src/ajax.js","../node_modules/@syncfusion/ej2-base/src/fetch.js","../node_modules/@syncfusion/ej2-base/src/browser.js","../node_modules/@syncfusion/ej2-base/src/event-handler.js","../node_modules/@syncfusion/ej2-base/src/dom.js","../node_modules/@syncfusion/ej2-base/src/base.js","../node_modules/@syncfusion/ej2-base/src/notify-property-change.js","../node_modules/@syncfusion/ej2-base/src/animation.js","../node_modules/@syncfusion/ej2-base/src/module-loader.js","../node_modules/@syncfusion/ej2-base/src/validate-lic.js","../node_modules/@syncfusion/ej2-base/src/child-property.js","../node_modules/@syncfusion/ej2-base/src/component.js","../node_modules/@syncfusion/ej2-base/src/draggable.js","../node_modules/@syncfusion/ej2-base/src/droppable.js","../node_modules/@syncfusion/ej2-base/src/keyboard.js","../node_modules/@syncfusion/ej2-base/src/l10n.js","../node_modules/@syncfusion/ej2-base/src/touch.js","../node_modules/@syncfusion/ej2-base/src/template.js","../node_modules/@syncfusion/ej2-base/src/template-engine.js","../node_modules/@syncfusion/ej2-base/src/sanitize-helper.js","utils/Context.js","components/Footer/Footer.js","components/Menu/Menu.js","pages/Root.js","../node_modules/axios/lib/helpers/bind.js","../node_modules/axios/lib/utils.js","../node_modules/axios/lib/core/AxiosError.js","../node_modules/axios/lib/helpers/null.js","../node_modules/axios/lib/helpers/toFormData.js","../node_modules/axios/lib/helpers/AxiosURLSearchParams.js","../node_modules/axios/lib/helpers/buildURL.js","../node_modules/axios/lib/core/InterceptorManager.js","../node_modules/axios/lib/defaults/transitional.js","../node_modules/axios/lib/platform/browser/index.js","../node_modules/axios/lib/platform/browser/classes/URLSearchParams.js","../node_modules/axios/lib/platform/browser/classes/FormData.js","../node_modules/axios/lib/platform/browser/classes/Blob.js","../node_modules/axios/lib/helpers/formDataToJSON.js","../node_modules/axios/lib/defaults/index.js","../node_modules/axios/lib/helpers/toURLEncodedForm.js","../node_modules/axios/lib/helpers/parseHeaders.js","../node_modules/axios/lib/core/AxiosHeaders.js","../node_modules/axios/lib/core/transformData.js","../node_modules/axios/lib/cancel/isCancel.js","../node_modules/axios/lib/cancel/CanceledError.js","../node_modules/axios/lib/helpers/cookies.js","../node_modules/axios/lib/core/buildFullPath.js","../node_modules/axios/lib/helpers/isAbsoluteURL.js","../node_modules/axios/lib/helpers/combineURLs.js","../node_modules/axios/lib/helpers/isURLSameOrigin.js","../node_modules/axios/lib/helpers/speedometer.js","../node_modules/axios/lib/adapters/xhr.js","../node_modules/axios/lib/core/settle.js","../node_modules/axios/lib/helpers/parseProtocol.js","../node_modules/axios/lib/adapters/adapters.js","../node_modules/axios/lib/core/dispatchRequest.js","../node_modules/axios/lib/core/mergeConfig.js","../node_modules/axios/lib/env/data.js","../node_modules/axios/lib/helpers/validator.js","../node_modules/axios/lib/core/Axios.js","../node_modules/axios/lib/cancel/CancelToken.js","../node_modules/axios/lib/helpers/HttpStatusCode.js","../node_modules/axios/lib/axios.js","../node_modules/axios/lib/helpers/spread.js","../node_modules/axios/lib/helpers/isAxiosError.js","utils/API.js","utils/Toast.js","components/Patient/NewPatient.js","../node_modules/date-fns-tz/esm/_lib/tzTokenizeDate/index.js","../node_modules/date-fns-tz/esm/_lib/newDateUTC/index.js","../node_modules/date-fns-tz/esm/_lib/tzParseTimezone/index.js","../node_modules/date-fns-tz/esm/toDate/index.js","../node_modules/date-fns-tz/esm/_lib/tzPattern/index.js","../node_modules/date-fns-tz/esm/_lib/tzIntlTimeZoneName/index.js","../node_modules/date-fns-tz/esm/format/formatters/index.js","../node_modules/date-fns-tz/esm/format/index.js","components/SpeechToText/SpeechToText.js","components/Timeline/Timeline.js","components/Timeline/TimelineItem.js","components/Loader/Loader.js","utils/regex.js","components/Patient/PatientDetails.js","../node_modules/date-fns-tz/esm/utcToZonedTime/index.js","pages/Patients.js","../node_modules/react-select/dist/useStateManager-7e1e8489.esm.js","../node_modules/@babel/runtime/helpers/esm/extends.js","../node_modules/@emotion/sheet/dist/emotion-sheet.browser.esm.js","../node_modules/stylis/src/Utility.js","../node_modules/stylis/src/Tokenizer.js","../node_modules/stylis/src/Enum.js","../node_modules/stylis/src/Serializer.js","../node_modules/stylis/src/Parser.js","../node_modules/@emotion/cache/dist/emotion-cache.browser.esm.js","../node_modules/stylis/src/Middleware.js","../node_modules/@emotion/utils/dist/emotion-utils.browser.esm.js","../node_modules/@emotion/unitless/dist/emotion-unitless.esm.js","../node_modules/@emotion/memoize/dist/emotion-memoize.esm.js","../node_modules/@emotion/serialize/dist/emotion-serialize.browser.esm.js","../node_modules/@emotion/hash/dist/emotion-hash.esm.js","../node_modules/@emotion/use-insertion-effect-with-fallbacks/dist/emotion-use-insertion-effect-with-fallbacks.browser.esm.js","../node_modules/@emotion/react/dist/emotion-element-c39617d8.browser.esm.js","../node_modules/@emotion/react/dist/emotion-react.browser.esm.js","../node_modules/@floating-ui/core/dist/floating-ui.core.browser.min.mjs","../node_modules/@floating-ui/dom/dist/floating-ui.dom.browser.min.mjs","../node_modules/use-isomorphic-layout-effect/dist/use-isomorphic-layout-effect.browser.esm.js","../node_modules/@babel/runtime/helpers/esm/taggedTemplateLiteral.js","../node_modules/react-select/dist/react-select.esm.js","utils/Hooks.js","pages/Signup.js","pages/Hello.js","pages/Feedback.js","pages/Billing.js","pages/Settings.js","pages/Reset.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/base/css-constant.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/base/constant.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/base/util.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/view-base.js","../node_modules/@syncfusion/ej2-data/src/query.js","../node_modules/@syncfusion/ej2-data/src/util.js","../node_modules/@syncfusion/ej2-data/src/adaptors.js","../node_modules/@syncfusion/ej2-data/src/manager.js","../node_modules/@syncfusion/ej2-schedule/src/common/calendar-util.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/timezone/timezone.js","../node_modules/@syncfusion/ej2-schedule/src/recurrence-editor/date-generator.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/event-base.js","../node_modules/@syncfusion/ej2-lists/src/common/list-base.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/vertical-view.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/month.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/vertical-view.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/day.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/week.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/agenda-base.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/agenda.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/action-base.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/timeline-view.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/year.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/drag.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/resize.js","../node_modules/@syncfusion/ej2-react-base/src/component-base.js","../node_modules/@syncfusion/ej2-react-base/src/complex-base.js","../node_modules/@syncfusion/ej2-react-base/src/services.js","../node_modules/@syncfusion/ej2-react-base/src/template.js","../node_modules/@syncfusion/ej2-react-schedule/src/schedule/views-directive.js","../node_modules/@syncfusion/ej2-popups/src/common/position.js","../node_modules/@syncfusion/ej2-popups/src/spinner/spinner.js","../node_modules/@syncfusion/ej2-popups/src/common/collision.js","../node_modules/@syncfusion/ej2-popups/src/popup/popup.js","../node_modules/@syncfusion/ej2-buttons/src/common/common.js","../node_modules/@syncfusion/ej2-buttons/src/button/button.js","../node_modules/@syncfusion/ej2-popups/src/common/resize.js","../node_modules/@syncfusion/ej2-navigations/src/common/h-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/common/v-scroll.js","../node_modules/@syncfusion/ej2-navigations/src/toolbar/toolbar.js","../node_modules/@syncfusion/ej2-calendars/src/calendar/calendar.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/header-renderer.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/scroll.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/touch.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/keyboard.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/data.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/event-renderer/inline-edit.js","../node_modules/@syncfusion/ej2-popups/src/dialog/dialog.js","../node_modules/@syncfusion/ej2-inputs/src/input/input.js","../node_modules/@syncfusion/ej2-inputs/src/form-validator/form-validator.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/popups/form-validator.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/popups/quick-popups.js","../node_modules/@syncfusion/ej2-popups/src/tooltip/tooltip.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/popups/event-tooltip.js","../node_modules/@syncfusion/ej2-buttons/src/check-box/check-box.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-base/drop-down-base.js","../node_modules/@syncfusion/ej2-dropdowns/src/common/incremental-search.js","../node_modules/@syncfusion/ej2-dropdowns/src/multi-select/float-label.js","../node_modules/@syncfusion/ej2-dropdowns/src/multi-select/multi-select.js","../node_modules/@syncfusion/ej2-notifications/src/skeleton/skeleton.js","../node_modules/@syncfusion/ej2-calendars/src/timepicker/timepicker.js","../node_modules/@syncfusion/ej2-dropdowns/src/drop-down-list/drop-down-list.js","../node_modules/@syncfusion/ej2-calendars/src/datepicker/datepicker.js","../node_modules/@syncfusion/ej2-react-base/src/util.js","../node_modules/@syncfusion/ej2-calendars/src/datetimepicker/datetimepicker.js","../node_modules/@syncfusion/ej2-inputs/src/numerictextbox/numerictextbox.js","../node_modules/@syncfusion/ej2-buttons/src/radio-button/radio-button.js","../node_modules/@syncfusion/ej2-schedule/src/recurrence-editor/recurrence-editor.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/popups/event-window.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/virtual-scroll.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/renderer/renderer.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/work-hours.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/time-scale.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/quick-info-templates.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/header-rows.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/crud.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/actions/work-cells.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/field-options.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/fields.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/event-settings.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/group.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/resources.js","../node_modules/@syncfusion/ej2-navigations/src/treeview/treeview.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/base/resource.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/models/toolbar.js","../node_modules/@syncfusion/ej2-schedule/src/schedule/base/schedule.js","../node_modules/@syncfusion/ej2-react-schedule/src/schedule/schedule.component.js","../node_modules/@syncfusion/ej2-react-schedule/src/schedule/resources-directive.js","pages/Calendar.js","components/ErrorPage.js","components/RequireAuth.js","utils/AuthProvider.js","utils/LoadingProvider.js","index.js"],"sourcesContent":["(function(f){if(typeof exports===\"object\"&&typeof module!==\"undefined\"){module.exports=f()}else if(typeof define===\"function\"&&define.amd){define([],f)}else{var g;if(typeof window!==\"undefined\"){g=window}else if(typeof global!==\"undefined\"){g=global}else if(typeof self!==\"undefined\"){g=self}else{g=this}g.Bugsnag = f()}})(function(){var define,module,exports;\n","module.exports = ['navigation', 'request', 'process', 'log', 'user', 'state', 'error', 'manual']\n","// Array#reduce\nmodule.exports = (arr, fn, accum) => {\n let val = accum\n for (let i = 0, len = arr.length; i < len; i++) val = fn(val, arr[i], i, arr)\n return val\n}\n","const reduce = require('./reduce')\n\n// Array#filter\nmodule.exports = (arr, fn) =>\n reduce(arr, (accum, item, i, arr) => !fn(item, i, arr) ? accum : accum.concat(item), [])\n","const reduce = require('./reduce')\n// Array#includes\nmodule.exports = (arr, x) =>\n reduce(arr, (accum, item, i, arr) => accum === true || item === x, false)\n","// Array#isArray\nmodule.exports = obj => Object.prototype.toString.call(obj) === '[object Array]'\n","/* eslint-disable-next-line no-prototype-builtins */\nconst _hasDontEnumBug = !({ toString: null }).propertyIsEnumerable('toString')\nconst _dontEnums = [\n 'toString', 'toLocaleString', 'valueOf', 'hasOwnProperty',\n 'isPrototypeOf', 'propertyIsEnumerable', 'constructor'\n]\n\n// Object#keys\nmodule.exports = obj => {\n // stripped down version of\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/Keys\n const result = []\n let prop\n for (prop in obj) {\n if (Object.prototype.hasOwnProperty.call(obj, prop)) result.push(prop)\n }\n if (!_hasDontEnumBug) return result\n for (let i = 0, len = _dontEnums.length; i < len; i++) {\n if (Object.prototype.hasOwnProperty.call(obj, _dontEnums[i])) result.push(_dontEnums[i])\n }\n return result\n}\n","module.exports = (min = 1, max = Infinity) => value =>\n typeof value === 'number' &&\n parseInt('' + value, 10) === value &&\n value >= min && value <= max\n","const filter = require('../es-utils/filter')\nconst isArray = require('../es-utils/is-array')\n\nmodule.exports = value => typeof value === 'function' || (isArray(value) && filter(value, f => typeof f === 'function').length === value.length)\n","module.exports = value => typeof value === 'string' && !!value.length\n","const filter = require('./lib/es-utils/filter')\nconst reduce = require('./lib/es-utils/reduce')\nconst keys = require('./lib/es-utils/keys')\nconst isArray = require('./lib/es-utils/is-array')\nconst includes = require('./lib/es-utils/includes')\nconst intRange = require('./lib/validators/int-range')\nconst stringWithLength = require('./lib/validators/string-with-length')\nconst listOfFunctions = require('./lib/validators/list-of-functions')\n\nconst BREADCRUMB_TYPES = require('./lib/breadcrumb-types')\nconst defaultErrorTypes = () => ({ unhandledExceptions: true, unhandledRejections: true })\n\nmodule.exports.schema = {\n apiKey: {\n defaultValue: () => null,\n message: 'is required',\n validate: stringWithLength\n },\n appVersion: {\n defaultValue: () => undefined,\n message: 'should be a string',\n validate: value => value === undefined || stringWithLength(value)\n },\n appType: {\n defaultValue: () => undefined,\n message: 'should be a string',\n validate: value => value === undefined || stringWithLength(value)\n },\n autoDetectErrors: {\n defaultValue: () => true,\n message: 'should be true|false',\n validate: value => value === true || value === false\n },\n enabledErrorTypes: {\n defaultValue: () => defaultErrorTypes(),\n message: 'should be an object containing the flags { unhandledExceptions:true|false, unhandledRejections:true|false }',\n allowPartialObject: true,\n validate: value => {\n // ensure we have an object\n if (typeof value !== 'object' || !value) return false\n const providedKeys = keys(value)\n const defaultKeys = keys(defaultErrorTypes())\n // ensure it only has a subset of the allowed keys\n if (filter(providedKeys, k => includes(defaultKeys, k)).length < providedKeys.length) return false\n // ensure all of the values are boolean\n if (filter(keys(value), k => typeof value[k] !== 'boolean').length > 0) return false\n return true\n }\n },\n onError: {\n defaultValue: () => [],\n message: 'should be a function or array of functions',\n validate: listOfFunctions\n },\n onSession: {\n defaultValue: () => [],\n message: 'should be a function or array of functions',\n validate: listOfFunctions\n },\n onBreadcrumb: {\n defaultValue: () => [],\n message: 'should be a function or array of functions',\n validate: listOfFunctions\n },\n endpoints: {\n defaultValue: () => ({\n notify: 'https://notify.bugsnag.com',\n sessions: 'https://sessions.bugsnag.com'\n }),\n message: 'should be an object containing endpoint URLs { notify, sessions }',\n validate: val =>\n // first, ensure it's an object\n (val && typeof val === 'object') &&\n (\n // notify and sessions must always be set\n stringWithLength(val.notify) && stringWithLength(val.sessions)\n ) &&\n // ensure no keys other than notify/session are set on endpoints object\n filter(keys(val), k => !includes(['notify', 'sessions'], k)).length === 0\n },\n autoTrackSessions: {\n defaultValue: val => true,\n message: 'should be true|false',\n validate: val => val === true || val === false\n },\n enabledReleaseStages: {\n defaultValue: () => null,\n message: 'should be an array of strings',\n validate: value => value === null || (isArray(value) && filter(value, f => typeof f === 'string').length === value.length)\n },\n releaseStage: {\n defaultValue: () => 'production',\n message: 'should be a string',\n validate: value => typeof value === 'string' && value.length\n },\n maxBreadcrumbs: {\n defaultValue: () => 25,\n message: 'should be a number ≤100',\n validate: value => intRange(0, 100)(value)\n },\n enabledBreadcrumbTypes: {\n defaultValue: () => BREADCRUMB_TYPES,\n message: `should be null or a list of available breadcrumb types (${BREADCRUMB_TYPES.join(',')})`,\n validate: value => value === null || (isArray(value) && reduce(value, (accum, maybeType) => {\n if (accum === false) return accum\n return includes(BREADCRUMB_TYPES, maybeType)\n }, true))\n },\n context: {\n defaultValue: () => undefined,\n message: 'should be a string',\n validate: value => value === undefined || typeof value === 'string'\n },\n user: {\n defaultValue: () => ({}),\n message: 'should be an object with { id, email, name } properties',\n validate: value =>\n (value === null) ||\n (value && reduce(\n keys(value),\n (accum, key) => accum && includes(['id', 'email', 'name'], key),\n true\n ))\n },\n metadata: {\n defaultValue: () => ({}),\n message: 'should be an object',\n validate: (value) => typeof value === 'object' && value !== null\n },\n logger: {\n defaultValue: () => undefined,\n message: 'should be null or an object with methods { debug, info, warn, error }',\n validate: value =>\n (!value) ||\n (value && reduce(\n ['debug', 'info', 'warn', 'error'],\n (accum, method) => accum && typeof value[method] === 'function',\n true\n ))\n },\n redactedKeys: {\n defaultValue: () => ['password'],\n message: 'should be an array of strings|regexes',\n validate: value =>\n isArray(value) && value.length === filter(value, s =>\n (typeof s === 'string' || (s && typeof s.test === 'function'))\n ).length\n },\n plugins: {\n defaultValue: () => ([]),\n message: 'should be an array of plugin objects',\n validate: value =>\n isArray(value) && value.length === filter(value, p =>\n (p && typeof p === 'object' && typeof p.load === 'function')\n ).length\n },\n featureFlags: {\n defaultValue: () => [],\n message: 'should be an array of objects that have a \"name\" property',\n validate: value =>\n isArray(value) && value.length === filter(value, feature =>\n feature && typeof feature === 'object' && typeof feature.name === 'string'\n ).length\n }\n}\n","// extends helper from babel\n// https://github.com/babel/babel/blob/916429b516e6466fd06588ee820e40e025d7f3a3/packages/babel-helpers/src/helpers.js#L377-L393\nmodule.exports = function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i]\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key]\n }\n }\n }\n return target\n}\n","const reduce = require('./reduce')\n\n// Array#map\nmodule.exports = (arr, fn) =>\n reduce(arr, (accum, item, i, arr) => accum.concat(fn(item, i, arr)), [])\n","const { schema } = require('@bugsnag/core/config')\nconst map = require('@bugsnag/core/lib/es-utils/map')\nconst assign = require('@bugsnag/core/lib/es-utils/assign')\n\nmodule.exports = {\n releaseStage: assign({}, schema.releaseStage, {\n defaultValue: () => {\n if (/^localhost(:\\d+)?$/.test(window.location.host)) return 'development'\n return 'production'\n }\n }),\n appType: {\n ...schema.appType,\n defaultValue: () => 'browser'\n },\n logger: assign({}, schema.logger, {\n defaultValue: () =>\n // set logger based on browser capability\n (typeof console !== 'undefined' && typeof console.debug === 'function')\n ? getPrefixedConsole()\n : undefined\n })\n}\n\nconst getPrefixedConsole = () => {\n const logger = {}\n const consoleLog = console.log\n map(['debug', 'info', 'warn', 'error'], (method) => {\n const consoleMethod = console[method]\n logger[method] = typeof consoleMethod === 'function'\n ? consoleMethod.bind(console, '[bugsnag]')\n : consoleLog.bind(console, '[bugsnag]')\n })\n return logger\n}\n","class Breadcrumb {\n constructor (message, metadata, type, timestamp = new Date()) {\n this.type = type\n this.message = message\n this.metadata = metadata\n this.timestamp = timestamp\n }\n\n toJSON () {\n return {\n type: this.type,\n name: this.message,\n timestamp: this.timestamp,\n metaData: this.metadata\n }\n }\n}\n\nmodule.exports = Breadcrumb\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stackframe', [], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory();\n } else {\n root.StackFrame = factory();\n }\n}(this, function() {\n 'use strict';\n function _isNumber(n) {\n return !isNaN(parseFloat(n)) && isFinite(n);\n }\n\n function _capitalize(str) {\n return str.charAt(0).toUpperCase() + str.substring(1);\n }\n\n function _getter(p) {\n return function() {\n return this[p];\n };\n }\n\n var booleanProps = ['isConstructor', 'isEval', 'isNative', 'isToplevel'];\n var numericProps = ['columnNumber', 'lineNumber'];\n var stringProps = ['fileName', 'functionName', 'source'];\n var arrayProps = ['args'];\n\n var props = booleanProps.concat(numericProps, stringProps, arrayProps);\n\n function StackFrame(obj) {\n if (obj instanceof Object) {\n for (var i = 0; i < props.length; i++) {\n if (obj.hasOwnProperty(props[i]) && obj[props[i]] !== undefined) {\n this['set' + _capitalize(props[i])](obj[props[i]]);\n }\n }\n }\n }\n\n StackFrame.prototype = {\n getArgs: function() {\n return this.args;\n },\n setArgs: function(v) {\n if (Object.prototype.toString.call(v) !== '[object Array]') {\n throw new TypeError('Args must be an Array');\n }\n this.args = v;\n },\n\n getEvalOrigin: function() {\n return this.evalOrigin;\n },\n setEvalOrigin: function(v) {\n if (v instanceof StackFrame) {\n this.evalOrigin = v;\n } else if (v instanceof Object) {\n this.evalOrigin = new StackFrame(v);\n } else {\n throw new TypeError('Eval Origin must be an Object or StackFrame');\n }\n },\n\n toString: function() {\n var functionName = this.getFunctionName() || '{anonymous}';\n var args = '(' + (this.getArgs() || []).join(',') + ')';\n var fileName = this.getFileName() ? ('@' + this.getFileName()) : '';\n var lineNumber = _isNumber(this.getLineNumber()) ? (':' + this.getLineNumber()) : '';\n var columnNumber = _isNumber(this.getColumnNumber()) ? (':' + this.getColumnNumber()) : '';\n return functionName + args + fileName + lineNumber + columnNumber;\n }\n };\n\n for (var i = 0; i < booleanProps.length; i++) {\n StackFrame.prototype['get' + _capitalize(booleanProps[i])] = _getter(booleanProps[i]);\n StackFrame.prototype['set' + _capitalize(booleanProps[i])] = (function(p) {\n return function(v) {\n this[p] = Boolean(v);\n };\n })(booleanProps[i]);\n }\n\n for (var j = 0; j < numericProps.length; j++) {\n StackFrame.prototype['get' + _capitalize(numericProps[j])] = _getter(numericProps[j]);\n StackFrame.prototype['set' + _capitalize(numericProps[j])] = (function(p) {\n return function(v) {\n if (!_isNumber(v)) {\n throw new TypeError(p + ' must be a Number');\n }\n this[p] = Number(v);\n };\n })(numericProps[j]);\n }\n\n for (var k = 0; k < stringProps.length; k++) {\n StackFrame.prototype['get' + _capitalize(stringProps[k])] = _getter(stringProps[k]);\n StackFrame.prototype['set' + _capitalize(stringProps[k])] = (function(p) {\n return function(v) {\n this[p] = String(v);\n };\n })(stringProps[k]);\n }\n\n return StackFrame;\n}));\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('error-stack-parser', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.ErrorStackParser = factory(root.StackFrame);\n }\n}(this, function ErrorStackParser(StackFrame) {\n 'use strict';\n\n var FIREFOX_SAFARI_STACK_REGEXP = /(^|@)\\S+\\:\\d+/;\n var CHROME_IE_STACK_REGEXP = /^\\s*at .*(\\S+\\:\\d+|\\(native\\))/m;\n var SAFARI_NATIVE_CODE_REGEXP = /^(eval@)?(\\[native code\\])?$/;\n\n return {\n /**\n * Given an Error object, extract the most information from it.\n *\n * @param {Error} error object\n * @return {Array} of StackFrames\n */\n parse: function ErrorStackParser$$parse(error) {\n if (typeof error.stacktrace !== 'undefined' || typeof error['opera#sourceloc'] !== 'undefined') {\n return this.parseOpera(error);\n } else if (error.stack && error.stack.match(CHROME_IE_STACK_REGEXP)) {\n return this.parseV8OrIE(error);\n } else if (error.stack) {\n return this.parseFFOrSafari(error);\n } else {\n throw new Error('Cannot parse given Error object');\n }\n },\n\n // Separate line and column numbers from a string of the form: (URI:Line:Column)\n extractLocation: function ErrorStackParser$$extractLocation(urlLike) {\n // Fail-fast but return locations like \"(native)\"\n if (urlLike.indexOf(':') === -1) {\n return [urlLike];\n }\n\n var regExp = /(.+?)(?:\\:(\\d+))?(?:\\:(\\d+))?$/;\n var parts = regExp.exec(urlLike.replace(/[\\(\\)]/g, ''));\n return [parts[1], parts[2] || undefined, parts[3] || undefined];\n },\n\n parseV8OrIE: function ErrorStackParser$$parseV8OrIE(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(CHROME_IE_STACK_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n if (line.indexOf('(eval ') > -1) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n line = line.replace(/eval code/g, 'eval').replace(/(\\(eval at [^\\()]*)|(\\)\\,.*$)/g, '');\n }\n var sanitizedLine = line.replace(/^\\s+/, '').replace(/\\(eval code/g, '(');\n\n // capture and preseve the parenthesized location \"(/foo/my bar.js:12:87)\" in\n // case it has spaces in it, as the string is split on \\s+ later on\n var location = sanitizedLine.match(/ (\\((.+):(\\d+):(\\d+)\\)$)/);\n\n // remove the parenthesized location from the line, if it was matched\n sanitizedLine = location ? sanitizedLine.replace(location[0], '') : sanitizedLine;\n\n var tokens = sanitizedLine.split(/\\s+/).slice(1);\n // if a location was matched, pass it to extractLocation() otherwise pop the last token\n var locationParts = this.extractLocation(location ? location[1] : tokens.pop());\n var functionName = tokens.join(' ') || undefined;\n var fileName = ['eval', ''].indexOf(locationParts[0]) > -1 ? undefined : locationParts[0];\n\n return new StackFrame({\n functionName: functionName,\n fileName: fileName,\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n },\n\n parseFFOrSafari: function ErrorStackParser$$parseFFOrSafari(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !line.match(SAFARI_NATIVE_CODE_REGEXP);\n }, this);\n\n return filtered.map(function(line) {\n // Throw away eval information until we implement stacktrace.js/stackframe#8\n if (line.indexOf(' > eval') > -1) {\n line = line.replace(/ line (\\d+)(?: > eval line \\d+)* > eval\\:\\d+\\:\\d+/g, ':$1');\n }\n\n if (line.indexOf('@') === -1 && line.indexOf(':') === -1) {\n // Safari eval frames only have function names and nothing else\n return new StackFrame({\n functionName: line\n });\n } else {\n var functionNameRegex = /((.*\".+\"[^@]*)?[^@]*)(?:@)/;\n var matches = line.match(functionNameRegex);\n var functionName = matches && matches[1] ? matches[1] : undefined;\n var locationParts = this.extractLocation(line.replace(functionNameRegex, ''));\n\n return new StackFrame({\n functionName: functionName,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }\n }, this);\n },\n\n parseOpera: function ErrorStackParser$$parseOpera(e) {\n if (!e.stacktrace || (e.message.indexOf('\\n') > -1 &&\n e.message.split('\\n').length > e.stacktrace.split('\\n').length)) {\n return this.parseOpera9(e);\n } else if (!e.stack) {\n return this.parseOpera10(e);\n } else {\n return this.parseOpera11(e);\n }\n },\n\n parseOpera9: function ErrorStackParser$$parseOpera9(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)/i;\n var lines = e.message.split('\\n');\n var result = [];\n\n for (var i = 2, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(new StackFrame({\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n }));\n }\n }\n\n return result;\n },\n\n parseOpera10: function ErrorStackParser$$parseOpera10(e) {\n var lineRE = /Line (\\d+).*script (?:in )?(\\S+)(?:: In function (\\S+))?$/i;\n var lines = e.stacktrace.split('\\n');\n var result = [];\n\n for (var i = 0, len = lines.length; i < len; i += 2) {\n var match = lineRE.exec(lines[i]);\n if (match) {\n result.push(\n new StackFrame({\n functionName: match[3] || undefined,\n fileName: match[2],\n lineNumber: match[1],\n source: lines[i]\n })\n );\n }\n }\n\n return result;\n },\n\n // Opera 10.65+ Error.stack very similar to FF/Safari\n parseOpera11: function ErrorStackParser$$parseOpera11(error) {\n var filtered = error.stack.split('\\n').filter(function(line) {\n return !!line.match(FIREFOX_SAFARI_STACK_REGEXP) && !line.match(/^Error created at/);\n }, this);\n\n return filtered.map(function(line) {\n var tokens = line.split('@');\n var locationParts = this.extractLocation(tokens.pop());\n var functionCall = (tokens.shift() || '');\n var functionName = functionCall\n .replace(//, '$2')\n .replace(/\\([^\\)]*\\)/g, '') || undefined;\n var argsRaw;\n if (functionCall.match(/\\(([^\\)]*)\\)/)) {\n argsRaw = functionCall.replace(/^[^\\(]+\\(([^\\)]*)\\)$/, '$1');\n }\n var args = (argsRaw === undefined || argsRaw === '[arguments not available]') ?\n undefined : argsRaw.split(',');\n\n return new StackFrame({\n functionName: functionName,\n args: args,\n fileName: locationParts[0],\n lineNumber: locationParts[1],\n columnNumber: locationParts[2],\n source: line\n });\n }, this);\n }\n };\n}));\n","module.exports = require('error-stack-parser')\n","module.exports = function (data, replacer, space, opts) {\n var redactedKeys = opts && opts.redactedKeys ? opts.redactedKeys : []\n var redactedPaths = opts && opts.redactedPaths ? opts.redactedPaths : []\n return JSON.stringify(\n prepareObjForSerialization(data, redactedKeys, redactedPaths),\n replacer,\n space\n )\n}\n\nvar MAX_DEPTH = 20\nvar MAX_EDGES = 25000\nvar MIN_PRESERVED_DEPTH = 8\n\nvar REPLACEMENT_NODE = '...'\n\nfunction isError (o) {\n return o instanceof Error ||\n /^\\[object (Error|(Dom)?Exception)\\]$/.test(Object.prototype.toString.call(o))\n}\n\nfunction throwsMessage (err) {\n return '[Throws: ' + (err ? err.message : '?') + ']'\n}\n\nfunction find (haystack, needle) {\n for (var i = 0, len = haystack.length; i < len; i++) {\n if (haystack[i] === needle) return true\n }\n return false\n}\n\n// returns true if the string `path` starts with any of the provided `paths`\nfunction isDescendent (paths, path) {\n for (var i = 0, len = paths.length; i < len; i++) {\n if (path.indexOf(paths[i]) === 0) return true\n }\n return false\n}\n\nfunction shouldRedact (patterns, key) {\n for (var i = 0, len = patterns.length; i < len; i++) {\n if (typeof patterns[i] === 'string' && patterns[i].toLowerCase() === key.toLowerCase()) return true\n if (patterns[i] && typeof patterns[i].test === 'function' && patterns[i].test(key)) return true\n }\n return false\n}\n\nfunction isArray (obj) {\n return Object.prototype.toString.call(obj) === '[object Array]'\n}\n\nfunction safelyGetProp (obj, prop) {\n try {\n return obj[prop]\n } catch (err) {\n return throwsMessage(err)\n }\n}\n\nfunction prepareObjForSerialization (obj, redactedKeys, redactedPaths) {\n var seen = [] // store references to objects we have seen before\n var edges = 0\n\n function visit (obj, path) {\n function edgesExceeded () {\n return path.length > MIN_PRESERVED_DEPTH && edges > MAX_EDGES\n }\n\n edges++\n\n if (path.length > MAX_DEPTH) return REPLACEMENT_NODE\n if (edgesExceeded()) return REPLACEMENT_NODE\n if (obj === null || typeof obj !== 'object') return obj\n if (find(seen, obj)) return '[Circular]'\n\n seen.push(obj)\n\n if (typeof obj.toJSON === 'function') {\n try {\n // we're not going to count this as an edge because it\n // replaces the value of the currently visited object\n edges--\n var fResult = visit(obj.toJSON(), path)\n seen.pop()\n return fResult\n } catch (err) {\n return throwsMessage(err)\n }\n }\n\n var er = isError(obj)\n if (er) {\n edges--\n var eResult = visit({ name: obj.name, message: obj.message }, path)\n seen.pop()\n return eResult\n }\n\n if (isArray(obj)) {\n var aResult = []\n for (var i = 0, len = obj.length; i < len; i++) {\n if (edgesExceeded()) {\n aResult.push(REPLACEMENT_NODE)\n break\n }\n aResult.push(visit(obj[i], path.concat('[]')))\n }\n seen.pop()\n return aResult\n }\n\n var result = {}\n try {\n for (var prop in obj) {\n if (!Object.prototype.hasOwnProperty.call(obj, prop)) continue\n if (isDescendent(redactedPaths, path.join('.')) && shouldRedact(redactedKeys, prop)) {\n result[prop] = '[REDACTED]'\n continue\n }\n if (edgesExceeded()) {\n result[prop] = REPLACEMENT_NODE\n break\n }\n result[prop] = visit(safelyGetProp(obj, prop), path.concat(prop))\n }\n } catch (e) {}\n seen.pop()\n return result\n }\n\n return visit(obj, [])\n}\n","const map = require('./es-utils/map')\nconst filter = require('./es-utils/filter')\nconst isArray = require('./es-utils/is-array')\nconst jsonStringify = require('@bugsnag/safe-json-stringify')\n\nfunction add (existingFeatures, existingFeatureKeys, name, variant) {\n if (typeof name !== 'string') {\n return\n }\n\n if (variant === undefined) {\n variant = null\n } else if (variant !== null && typeof variant !== 'string') {\n variant = jsonStringify(variant)\n }\n\n const existingIndex = existingFeatureKeys[name]\n if (typeof existingIndex === 'number') {\n existingFeatures[existingIndex] = { name, variant }\n return\n }\n\n existingFeatures.push({ name, variant })\n existingFeatureKeys[name] = existingFeatures.length - 1\n}\n\nfunction merge (existingFeatures, newFeatures, existingFeatureKeys) {\n if (!isArray(newFeatures)) {\n return\n }\n\n for (let i = 0; i < newFeatures.length; ++i) {\n const feature = newFeatures[i]\n\n if (feature === null || typeof feature !== 'object') {\n continue\n }\n\n // 'add' will handle if 'name' doesn't exist & 'variant' is optional\n add(existingFeatures, existingFeatureKeys, feature.name, feature.variant)\n }\n\n return existingFeatures\n}\n\n// convert feature flags from a map of 'name -> variant' into the format required\n// by the Bugsnag Event API:\n// [{ featureFlag: 'name', variant: 'variant' }, { featureFlag: 'name 2' }]\nfunction toEventApi (featureFlags) {\n return map(\n filter(featureFlags, Boolean),\n ({ name, variant }) => {\n const flag = { featureFlag: name }\n\n // don't add a 'variant' property unless there's actually a value\n if (typeof variant === 'string') {\n flag.variant = variant\n }\n\n return flag\n }\n )\n}\n\nfunction clear (features, featuresIndex, name) {\n const existingIndex = featuresIndex[name]\n if (typeof existingIndex === 'number') {\n features[existingIndex] = null\n delete featuresIndex[name]\n }\n}\n\nmodule.exports = { add, clear, merge, toEventApi }\n","// Given `err` which may be an error, does it have a stack property which is a string?\nmodule.exports = err =>\n !!err &&\n (!!err.stack || !!err.stacktrace || !!err['opera#sourceloc']) &&\n typeof (err.stack || err.stacktrace || err['opera#sourceloc']) === 'string' &&\n err.stack !== `${err.name}: ${err.message}`\n","\n/**\n * Expose `isError`.\n */\n\nmodule.exports = isError;\n\n/**\n * Test whether `value` is error object.\n *\n * @param {*} value\n * @returns {boolean}\n */\n\nfunction isError(value) {\n switch (Object.prototype.toString.call(value)) {\n case '[object Error]': return true;\n case '[object Exception]': return true;\n case '[object DOMException]': return true;\n default: return value instanceof Error;\n }\n}\n","module.exports = require('iserror')\n","const assign = require('./es-utils/assign')\n\nconst add = (state, section, keyOrObj, maybeVal) => {\n if (!section) return\n let updates\n\n // addMetadata(\"section\", null) -> clears section\n if (keyOrObj === null) return clear(state, section)\n\n // normalise the two supported input types into object form\n if (typeof keyOrObj === 'object') updates = keyOrObj\n if (typeof keyOrObj === 'string') updates = { [keyOrObj]: maybeVal }\n\n // exit if we don't have an updates object at this point\n if (!updates) return\n\n // ensure a section with this name exists\n if (!state[section]) state[section] = {}\n\n // merge the updates with the existing section\n state[section] = assign({}, state[section], updates)\n}\n\nconst get = (state, section, key) => {\n if (typeof section !== 'string') return undefined\n if (!key) {\n return state[section]\n }\n if (state[section]) {\n return state[section][key]\n }\n return undefined\n}\n\nconst clear = (state, section, key) => {\n if (typeof section !== 'string') return\n\n // clear an entire section\n if (!key) {\n delete state[section]\n return\n }\n\n // clear a single value from a section\n if (state[section]) {\n delete state[section][key]\n }\n}\n\nmodule.exports = { add, get, clear }\n","(function(root, factory) {\n 'use strict';\n // Universal Module Definition (UMD) to support AMD, CommonJS/Node.js, Rhino, and browsers.\n\n /* istanbul ignore next */\n if (typeof define === 'function' && define.amd) {\n define('stack-generator', ['stackframe'], factory);\n } else if (typeof exports === 'object') {\n module.exports = factory(require('stackframe'));\n } else {\n root.StackGenerator = factory(root.StackFrame);\n }\n}(this, function(StackFrame) {\n return {\n backtrace: function StackGenerator$$backtrace(opts) {\n var stack = [];\n var maxStackSize = 10;\n\n if (typeof opts === 'object' && typeof opts.maxStackSize === 'number') {\n maxStackSize = opts.maxStackSize;\n }\n\n var curr = arguments.callee;\n while (curr && stack.length < maxStackSize && curr['arguments']) {\n // Allow V8 optimizations\n var args = new Array(curr['arguments'].length);\n for (var i = 0; i < args.length; ++i) {\n args[i] = curr['arguments'][i];\n }\n if (/function(?:\\s+([\\w$]+))+\\s*\\(/.test(curr.toString())) {\n stack.push(new StackFrame({functionName: RegExp.$1 || undefined, args: args}));\n } else {\n stack.push(new StackFrame({args: args}));\n }\n\n try {\n curr = curr.caller;\n } catch (e) {\n break;\n }\n }\n return stack;\n }\n };\n}));\n","const ErrorStackParser = require('./lib/error-stack-parser')\nconst StackGenerator = require('stack-generator')\nconst hasStack = require('./lib/has-stack')\nconst map = require('./lib/es-utils/map')\nconst reduce = require('./lib/es-utils/reduce')\nconst filter = require('./lib/es-utils/filter')\nconst assign = require('./lib/es-utils/assign')\nconst metadataDelegate = require('./lib/metadata-delegate')\nconst featureFlagDelegate = require('./lib/feature-flag-delegate')\nconst isError = require('./lib/iserror')\n\nclass Event {\n constructor (errorClass, errorMessage, stacktrace = [], handledState = defaultHandledState(), originalError) {\n this.apiKey = undefined\n this.context = undefined\n this.groupingHash = undefined\n this.originalError = originalError\n\n this._handledState = handledState\n this.severity = this._handledState.severity\n this.unhandled = this._handledState.unhandled\n\n this.app = {}\n this.device = {}\n this.request = {}\n\n this.breadcrumbs = []\n this.threads = []\n\n this._metadata = {}\n this._features = []\n this._featuresIndex = {}\n this._user = {}\n this._session = undefined\n\n this.errors = [\n createBugsnagError(errorClass, errorMessage, Event.__type, stacktrace)\n ]\n\n // Flags.\n // Note these are not initialised unless they are used\n // to save unnecessary bytes in the browser bundle\n\n /* this.attemptImmediateDelivery, default: true */\n }\n\n addMetadata (section, keyOrObj, maybeVal) {\n return metadataDelegate.add(this._metadata, section, keyOrObj, maybeVal)\n }\n\n getMetadata (section, key) {\n return metadataDelegate.get(this._metadata, section, key)\n }\n\n clearMetadata (section, key) {\n return metadataDelegate.clear(this._metadata, section, key)\n }\n\n addFeatureFlag (name, variant = null) {\n featureFlagDelegate.add(this._features, this._featuresIndex, name, variant)\n }\n\n addFeatureFlags (featureFlags) {\n featureFlagDelegate.merge(this._features, featureFlags, this._featuresIndex)\n }\n\n getFeatureFlags () {\n return featureFlagDelegate.toEventApi(this._features)\n }\n\n clearFeatureFlag (name) {\n featureFlagDelegate.clear(this._features, this._featuresIndex, name)\n }\n\n clearFeatureFlags () {\n this._features = []\n this._featuresIndex = {}\n }\n\n getUser () {\n return this._user\n }\n\n setUser (id, email, name) {\n this._user = { id, email, name }\n }\n\n toJSON () {\n return {\n payloadVersion: '4',\n exceptions: map(this.errors, er => assign({}, er, { message: er.errorMessage })),\n severity: this.severity,\n unhandled: this._handledState.unhandled,\n severityReason: this._handledState.severityReason,\n app: this.app,\n device: this.device,\n request: this.request,\n breadcrumbs: this.breadcrumbs,\n context: this.context,\n groupingHash: this.groupingHash,\n metaData: this._metadata,\n user: this._user,\n session: this._session,\n featureFlags: this.getFeatureFlags()\n }\n }\n}\n\n// takes a stacktrace.js style stackframe (https://github.com/stacktracejs/stackframe)\n// and returns a Bugsnag compatible stackframe (https://docs.bugsnag.com/api/error-reporting/#json-payload)\nconst formatStackframe = frame => {\n const f = {\n file: frame.fileName,\n method: normaliseFunctionName(frame.functionName),\n lineNumber: frame.lineNumber,\n columnNumber: frame.columnNumber,\n code: undefined,\n inProject: undefined\n }\n // Some instances result in no file:\n // - calling notify() from chrome's terminal results in no file/method.\n // - non-error exception thrown from global code in FF\n // This adds one.\n if (f.lineNumber > -1 && !f.file && !f.method) {\n f.file = 'global code'\n }\n return f\n}\n\nconst normaliseFunctionName = name => /^global code$/i.test(name) ? 'global code' : name\n\nconst defaultHandledState = () => ({\n unhandled: false,\n severity: 'warning',\n severityReason: { type: 'handledException' }\n})\n\nconst ensureString = (str) => typeof str === 'string' ? str : ''\n\nfunction createBugsnagError (errorClass, errorMessage, type, stacktrace) {\n return {\n errorClass: ensureString(errorClass),\n errorMessage: ensureString(errorMessage),\n type,\n stacktrace: reduce(stacktrace, (accum, frame) => {\n const f = formatStackframe(frame)\n // don't include a stackframe if none of its properties are defined\n try {\n if (JSON.stringify(f) === '{}') return accum\n return accum.concat(f)\n } catch (e) {\n return accum\n }\n }, [])\n }\n}\n\nfunction getCauseStack (error) {\n if (error.cause) {\n return [error, ...getCauseStack(error.cause)]\n } else {\n return [error]\n }\n}\n\n// Helpers\n\nEvent.getStacktrace = function (error, errorFramesToSkip, backtraceFramesToSkip) {\n if (hasStack(error)) return ErrorStackParser.parse(error).slice(errorFramesToSkip)\n // error wasn't provided or didn't have a stacktrace so try to walk the callstack\n try {\n return filter(StackGenerator.backtrace(), frame =>\n (frame.functionName || '').indexOf('StackGenerator$$') === -1\n ).slice(1 + backtraceFramesToSkip)\n } catch (e) {\n return []\n }\n}\n\nEvent.create = function (maybeError, tolerateNonErrors, handledState, component, errorFramesToSkip = 0, logger) {\n const [error, internalFrames] = normaliseError(maybeError, tolerateNonErrors, component, logger)\n let event\n try {\n const stacktrace = Event.getStacktrace(\n error,\n // if an error was created/throw in the normaliseError() function, we need to\n // tell the getStacktrace() function to skip the number of frames we know will\n // be from our own functions. This is added to the number of frames deep we\n // were told about\n internalFrames > 0 ? 1 + internalFrames + errorFramesToSkip : 0,\n // if there's no stacktrace, the callstack may be walked to generated one.\n // this is how many frames should be removed because they come from our library\n 1 + errorFramesToSkip\n )\n event = new Event(error.name, error.message, stacktrace, handledState, maybeError)\n } catch (e) {\n event = new Event(error.name, error.message, [], handledState, maybeError)\n }\n if (error.name === 'InvalidError') {\n event.addMetadata(`${component}`, 'non-error parameter', makeSerialisable(maybeError))\n }\n if (error.cause) {\n const causes = getCauseStack(error).slice(1)\n const normalisedCauses = map(causes, (cause) => {\n // Only get stacktrace for error causes that are a valid JS Error and already have a stack\n const stacktrace = (isError(cause) && hasStack(cause)) ? ErrorStackParser.parse(cause) : []\n const [error] = normaliseError(cause, true, 'error cause')\n if (error.name === 'InvalidError') event.addMetadata('error cause', makeSerialisable(cause))\n return createBugsnagError(error.name, error.message, Event.__type, stacktrace)\n })\n\n event.errors.push(...normalisedCauses)\n }\n\n return event\n}\n\nconst makeSerialisable = (err) => {\n if (err === null) return 'null'\n if (err === undefined) return 'undefined'\n return err\n}\n\nconst normaliseError = (maybeError, tolerateNonErrors, component, logger) => {\n let error\n let internalFrames = 0\n\n const createAndLogInputError = (reason) => {\n const verb = (component === 'error cause' ? 'was' : 'received')\n if (logger) logger.warn(`${component} ${verb} a non-error: \"${reason}\"`)\n const err = new Error(`${component} ${verb} a non-error. See \"${component}\" tab for more detail.`)\n err.name = 'InvalidError'\n return err\n }\n\n // In some cases:\n //\n // - the promise rejection handler (both in the browser and node)\n // - the node uncaughtException handler\n //\n // We are really limited in what we can do to get a stacktrace. So we use the\n // tolerateNonErrors option to ensure that the resulting error communicates as\n // such.\n if (!tolerateNonErrors) {\n if (isError(maybeError)) {\n error = maybeError\n } else {\n error = createAndLogInputError(typeof maybeError)\n internalFrames += 2\n }\n } else {\n switch (typeof maybeError) {\n case 'string':\n case 'number':\n case 'boolean':\n error = new Error(String(maybeError))\n internalFrames += 1\n break\n case 'function':\n error = createAndLogInputError('function')\n internalFrames += 2\n break\n case 'object':\n if (maybeError !== null && isError(maybeError)) {\n error = maybeError\n } else if (maybeError !== null && hasNecessaryFields(maybeError)) {\n error = new Error(maybeError.message || maybeError.errorMessage)\n error.name = maybeError.name || maybeError.errorClass\n internalFrames += 1\n } else {\n error = createAndLogInputError(maybeError === null ? 'null' : 'unsupported object')\n internalFrames += 2\n }\n break\n default:\n error = createAndLogInputError('nothing')\n internalFrames += 2\n }\n }\n\n if (!hasStack(error)) {\n // in IE10/11 a new Error() doesn't have a stacktrace until you throw it, so try that here\n try {\n throw error\n } catch (e) {\n if (hasStack(e)) {\n error = e\n // if the error only got a stacktrace after we threw it here, we know it\n // will only have one extra internal frame from this function, regardless\n // of whether it went through createAndLogInputError() or not\n internalFrames = 1\n }\n }\n }\n\n return [error, internalFrames]\n}\n\n// default value for stacktrace.type\nEvent.__type = 'browserjs'\n\nconst hasNecessaryFields = error =>\n (typeof error.name === 'string' || typeof error.errorClass === 'string') &&\n (typeof error.message === 'string' || typeof error.errorMessage === 'string')\n\nmodule.exports = Event\n","// This is a heavily modified/simplified version of\n// https://github.com/othiym23/async-some\n// with the logic flipped so that it is akin to the\n// synchronous \"every\" method instead of \"some\".\n\n// run the asynchronous test function (fn) over each item in the array (arr)\n// in series until:\n// - fn(item, cb) => calls cb(null, false)\n// - or the end of the array is reached\n// the callback (cb) will be passed (null, false) if any of the items in arr\n// caused fn to call back with false, otherwise it will be passed (null, true)\nmodule.exports = (arr, fn, cb) => {\n let index = 0\n\n const next = () => {\n if (index >= arr.length) return cb(null, true)\n fn(arr[index], (err, result) => {\n if (err) return cb(err)\n if (result === false) return cb(null, false)\n index++\n next()\n })\n }\n\n next()\n}\n","const some = require('./async-every')\n\nmodule.exports = (callbacks, event, onCallbackError, cb) => {\n // This function is how we support different kinds of callback:\n // - synchronous - return value\n // - node-style async with callback - cb(err, value)\n // - promise/thenable - resolve(value)\n // It normalises each of these into the lowest common denominator – a node-style callback\n const runMaybeAsyncCallback = (fn, cb) => {\n if (typeof fn !== 'function') return cb(null)\n try {\n // if function appears sync…\n if (fn.length !== 2) {\n const ret = fn(event)\n // check if it returned a \"thenable\" (promise)\n if (ret && typeof ret.then === 'function') {\n return ret.then(\n // resolve\n val => setTimeout(() => cb(null, val)),\n // reject\n err => {\n setTimeout(() => {\n onCallbackError(err)\n return cb(null, true)\n })\n }\n )\n }\n return cb(null, ret)\n }\n // if function is async…\n fn(event, (err, result) => {\n if (err) {\n onCallbackError(err)\n return cb(null)\n }\n cb(null, result)\n })\n } catch (e) {\n onCallbackError(e)\n cb(null)\n }\n }\n\n some(callbacks, runMaybeAsyncCallback, cb)\n}\n","module.exports = (callbacks, callbackArg, callbackType, logger) => {\n let ignore = false\n const cbs = callbacks.slice()\n while (!ignore) {\n if (!cbs.length) break\n try {\n ignore = cbs.pop()(callbackArg) === false\n } catch (e) {\n logger.error(`Error occurred in ${callbackType} callback, continuing anyway…`)\n logger.error(e)\n }\n }\n return ignore\n}\n","module.exports = function pad (num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n};\n","var pad = require('./pad.js');\n\nvar env = typeof window === 'object' ? window : self;\nvar globalCount = 0;\nfor (var prop in env) {\n if (Object.hasOwnProperty.call(env, prop)) globalCount++;\n}\nvar mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar clientId = pad((mimeTypesLength +\n navigator.userAgent.length).toString(36) +\n globalCount.toString(36), 4);\n\nmodule.exports = function fingerprint () {\n return clientId;\n};\n","/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n\nvar fingerprint = require('./lib/fingerprint.js');\nvar pad = require('./lib/pad.js');\n\nvar c = 0,\n blockSize = 4,\n base = 36,\n discreteValues = Math.pow(base, blockSize);\n\nfunction randomBlock () {\n return pad((Math.random() *\n discreteValues << 0)\n .toString(base), blockSize);\n}\n\nfunction safeCounter () {\n c = c < discreteValues ? c : 0;\n c++; // this is not subliminal\n return c - 1;\n}\n\nfunction cuid () {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c', // hard-coded allows for sequential access\n\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = (new Date().getTime()).toString(base),\n\n // Prevent same-machine collisions.\n counter = pad(safeCounter().toString(base), blockSize),\n\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = fingerprint(),\n\n // Grab some more chars from Math.random()\n random = randomBlock() + randomBlock();\n\n return letter + timestamp + counter + print + random;\n}\n\ncuid.fingerprint = fingerprint;\n\nmodule.exports = cuid;\n","const cuid = require('@bugsnag/cuid')\n\nclass Session {\n constructor () {\n this.id = cuid()\n this.startedAt = new Date()\n this._handled = 0\n this._unhandled = 0\n this._user = {}\n this.app = {}\n this.device = {}\n }\n\n getUser () {\n return this._user\n }\n\n setUser (id, email, name) {\n this._user = { id, email, name }\n }\n\n toJSON () {\n return {\n id: this.id,\n startedAt: this.startedAt,\n events: { handled: this._handled, unhandled: this._unhandled }\n }\n }\n\n _track (event) {\n this[event._handledState.unhandled ? '_unhandled' : '_handled'] += 1\n }\n}\n\nmodule.exports = Session\n","const config = require('./config')\nconst Event = require('./event')\nconst Breadcrumb = require('./breadcrumb')\nconst Session = require('./session')\nconst map = require('./lib/es-utils/map')\nconst includes = require('./lib/es-utils/includes')\nconst filter = require('./lib/es-utils/filter')\nconst reduce = require('./lib/es-utils/reduce')\nconst keys = require('./lib/es-utils/keys')\nconst assign = require('./lib/es-utils/assign')\nconst runCallbacks = require('./lib/callback-runner')\nconst metadataDelegate = require('./lib/metadata-delegate')\nconst runSyncCallbacks = require('./lib/sync-callback-runner')\nconst BREADCRUMB_TYPES = require('./lib/breadcrumb-types')\nconst { add, clear, merge } = require('./lib/feature-flag-delegate')\n\nconst noop = () => {}\n\nclass Client {\n constructor (configuration, schema = config.schema, internalPlugins = [], notifier) {\n // notifier id\n this._notifier = notifier\n\n // intialise opts and config\n this._config = {}\n this._schema = schema\n\n // i/o\n this._delivery = { sendSession: noop, sendEvent: noop }\n this._logger = { debug: noop, info: noop, warn: noop, error: noop }\n\n // plugins\n this._plugins = {}\n\n // state\n this._breadcrumbs = []\n this._session = null\n this._metadata = {}\n this._featuresIndex = {}\n this._features = []\n this._context = undefined\n this._user = {}\n\n // callbacks:\n // e: onError\n // s: onSession\n // sp: onSessionPayload\n // b: onBreadcrumb\n // (note these names are minified by hand because object\n // properties are not safe to minify automatically)\n this._cbs = {\n e: [],\n s: [],\n sp: [],\n b: []\n }\n\n // expose internal constructors\n this.Client = Client\n this.Event = Event\n this.Breadcrumb = Breadcrumb\n this.Session = Session\n\n this._config = this._configure(configuration, internalPlugins)\n map(internalPlugins.concat(this._config.plugins), pl => {\n if (pl) this._loadPlugin(pl)\n })\n\n // when notify() is called we need to know how many frames are from our own source\n // this inital value is 1 not 0 because we wrap notify() to ensure it is always\n // bound to have the client as its `this` value – see below.\n this._depth = 1\n\n const self = this\n const notify = this.notify\n this.notify = function () {\n return notify.apply(self, arguments)\n }\n }\n\n addMetadata (section, keyOrObj, maybeVal) {\n return metadataDelegate.add(this._metadata, section, keyOrObj, maybeVal)\n }\n\n getMetadata (section, key) {\n return metadataDelegate.get(this._metadata, section, key)\n }\n\n clearMetadata (section, key) {\n return metadataDelegate.clear(this._metadata, section, key)\n }\n\n addFeatureFlag (name, variant = null) {\n add(this._features, this._featuresIndex, name, variant)\n }\n\n addFeatureFlags (featureFlags) {\n merge(this._features, featureFlags, this._featuresIndex)\n }\n\n clearFeatureFlag (name) {\n clear(this._features, this._featuresIndex, name)\n }\n\n clearFeatureFlags () {\n this._features = []\n this._featuresIndex = {}\n }\n\n getContext () {\n return this._context\n }\n\n setContext (c) {\n this._context = c\n }\n\n _configure (opts, internalPlugins) {\n const schema = reduce(internalPlugins, (schema, plugin) => {\n if (plugin && plugin.configSchema) return assign({}, schema, plugin.configSchema)\n return schema\n }, this._schema)\n\n // accumulate configuration and error messages\n const { errors, config } = reduce(keys(schema), (accum, key) => {\n const defaultValue = schema[key].defaultValue(opts[key])\n\n if (opts[key] !== undefined) {\n const valid = schema[key].validate(opts[key])\n if (!valid) {\n accum.errors[key] = schema[key].message\n accum.config[key] = defaultValue\n } else {\n if (schema[key].allowPartialObject) {\n accum.config[key] = assign(defaultValue, opts[key])\n } else {\n accum.config[key] = opts[key]\n }\n }\n } else {\n accum.config[key] = defaultValue\n }\n\n return accum\n }, { errors: {}, config: {} })\n\n if (schema.apiKey) {\n // missing api key is the only fatal error\n if (!config.apiKey) throw new Error('No Bugsnag API Key set')\n // warn about an apikey that is not of the expected format\n if (!/^[0-9a-f]{32}$/i.test(config.apiKey)) errors.apiKey = 'should be a string of 32 hexadecimal characters'\n }\n\n // update and elevate some options\n this._metadata = assign({}, config.metadata)\n merge(this._features, config.featureFlags, this._featuresIndex)\n this._user = assign({}, config.user)\n this._context = config.context\n if (config.logger) this._logger = config.logger\n\n // add callbacks\n if (config.onError) this._cbs.e = this._cbs.e.concat(config.onError)\n if (config.onBreadcrumb) this._cbs.b = this._cbs.b.concat(config.onBreadcrumb)\n if (config.onSession) this._cbs.s = this._cbs.s.concat(config.onSession)\n\n // finally warn about any invalid config where we fell back to the default\n if (keys(errors).length) {\n this._logger.warn(generateConfigErrorMessage(errors, opts))\n }\n\n return config\n }\n\n getUser () {\n return this._user\n }\n\n setUser (id, email, name) {\n this._user = { id, email, name }\n }\n\n _loadPlugin (plugin) {\n const result = plugin.load(this)\n // JS objects are not the safest way to store arbitrarily keyed values,\n // so bookend the key with some characters that prevent tampering with\n // stuff like __proto__ etc. (only store the result if the plugin had a\n // name)\n if (plugin.name) this._plugins[`~${plugin.name}~`] = result\n return this\n }\n\n getPlugin (name) {\n return this._plugins[`~${name}~`]\n }\n\n _setDelivery (d) {\n this._delivery = d(this)\n }\n\n startSession () {\n const session = new Session()\n\n session.app.releaseStage = this._config.releaseStage\n session.app.version = this._config.appVersion\n session.app.type = this._config.appType\n\n session._user = assign({}, this._user)\n\n // run onSession callbacks\n const ignore = runSyncCallbacks(this._cbs.s, session, 'onSession', this._logger)\n\n if (ignore) {\n this._logger.debug('Session not started due to onSession callback')\n return this\n }\n return this._sessionDelegate.startSession(this, session)\n }\n\n addOnError (fn, front = false) {\n this._cbs.e[front ? 'unshift' : 'push'](fn)\n }\n\n removeOnError (fn) {\n this._cbs.e = filter(this._cbs.e, f => f !== fn)\n }\n\n _addOnSessionPayload (fn) {\n this._cbs.sp.push(fn)\n }\n\n addOnSession (fn) {\n this._cbs.s.push(fn)\n }\n\n removeOnSession (fn) {\n this._cbs.s = filter(this._cbs.s, f => f !== fn)\n }\n\n addOnBreadcrumb (fn, front = false) {\n this._cbs.b[front ? 'unshift' : 'push'](fn)\n }\n\n removeOnBreadcrumb (fn) {\n this._cbs.b = filter(this._cbs.b, f => f !== fn)\n }\n\n pauseSession () {\n return this._sessionDelegate.pauseSession(this)\n }\n\n resumeSession () {\n return this._sessionDelegate.resumeSession(this)\n }\n\n leaveBreadcrumb (message, metadata, type) {\n // coerce bad values so that the defaults get set\n message = typeof message === 'string' ? message : ''\n type = (typeof type === 'string' && includes(BREADCRUMB_TYPES, type)) ? type : 'manual'\n metadata = typeof metadata === 'object' && metadata !== null ? metadata : {}\n\n // if no message, discard\n if (!message) return\n\n const crumb = new Breadcrumb(message, metadata, type)\n\n // run onBreadcrumb callbacks\n const ignore = runSyncCallbacks(this._cbs.b, crumb, 'onBreadcrumb', this._logger)\n\n if (ignore) {\n this._logger.debug('Breadcrumb not attached due to onBreadcrumb callback')\n return\n }\n\n // push the valid crumb onto the queue and maintain the length\n this._breadcrumbs.push(crumb)\n if (this._breadcrumbs.length > this._config.maxBreadcrumbs) {\n this._breadcrumbs = this._breadcrumbs.slice(this._breadcrumbs.length - this._config.maxBreadcrumbs)\n }\n }\n\n _isBreadcrumbTypeEnabled (type) {\n const types = this._config.enabledBreadcrumbTypes\n\n return types === null || includes(types, type)\n }\n\n notify (maybeError, onError, postReportCallback = noop) {\n const event = Event.create(maybeError, true, undefined, 'notify()', this._depth + 1, this._logger)\n this._notify(event, onError, postReportCallback)\n }\n\n _notify (event, onError, postReportCallback = noop) {\n event.app = assign({}, event.app, {\n releaseStage: this._config.releaseStage,\n version: this._config.appVersion,\n type: this._config.appType\n })\n event.context = event.context || this._context\n event._metadata = assign({}, event._metadata, this._metadata)\n event._user = assign({}, event._user, this._user)\n event.breadcrumbs = this._breadcrumbs.slice()\n merge(event._features, this._features, event._featuresIndex)\n\n // exit early if events should not be sent on the current releaseStage\n if (this._config.enabledReleaseStages !== null && !includes(this._config.enabledReleaseStages, this._config.releaseStage)) {\n this._logger.warn('Event not sent due to releaseStage/enabledReleaseStages configuration')\n return postReportCallback(null, event)\n }\n\n const originalSeverity = event.severity\n\n const onCallbackError = err => {\n // errors in callbacks are tolerated but we want to log them out\n this._logger.error('Error occurred in onError callback, continuing anyway…')\n this._logger.error(err)\n }\n\n const callbacks = [].concat(this._cbs.e).concat(onError)\n runCallbacks(callbacks, event, onCallbackError, (err, shouldSend) => {\n if (err) onCallbackError(err)\n\n if (!shouldSend) {\n this._logger.debug('Event not sent due to onError callback')\n return postReportCallback(null, event)\n }\n\n if (this._isBreadcrumbTypeEnabled('error')) {\n // only leave a crumb for the error if actually got sent\n Client.prototype.leaveBreadcrumb.call(this, event.errors[0].errorClass, {\n errorClass: event.errors[0].errorClass,\n errorMessage: event.errors[0].errorMessage,\n severity: event.severity\n }, 'error')\n }\n\n if (originalSeverity !== event.severity) {\n event._handledState.severityReason = { type: 'userCallbackSetSeverity' }\n }\n\n if (event.unhandled !== event._handledState.unhandled) {\n event._handledState.severityReason.unhandledOverridden = true\n event._handledState.unhandled = event.unhandled\n }\n\n if (this._session) {\n this._session._track(event)\n event._session = this._session\n }\n\n this._delivery.sendEvent({\n apiKey: event.apiKey || this._config.apiKey,\n notifier: this._notifier,\n events: [event]\n }, (err) => postReportCallback(err, event))\n })\n }\n}\n\nconst generateConfigErrorMessage = (errors, rawInput) => {\n const er = new Error(\n `Invalid configuration\\n${map(keys(errors), key => ` - ${key} ${errors[key]}, got ${stringify(rawInput[key])}`).join('\\n\\n')}`)\n return er\n}\n\nconst stringify = val => {\n switch (typeof val) {\n case 'string':\n case 'number':\n case 'object':\n return JSON.stringify(val)\n default: return String(val)\n }\n}\n\nmodule.exports = Client\n","const jsonStringify = require('@bugsnag/safe-json-stringify')\nconst EVENT_REDACTION_PATHS = [\n 'events.[].metaData',\n 'events.[].breadcrumbs.[].metaData',\n 'events.[].request'\n]\n\nmodule.exports.event = (event, redactedKeys) => {\n let payload = jsonStringify(event, null, null, { redactedPaths: EVENT_REDACTION_PATHS, redactedKeys })\n if (payload.length > 10e5) {\n event.events[0]._metadata = {\n notifier:\n`WARNING!\nSerialized payload was ${payload.length / 10e5}MB (limit = 1MB)\nmetadata was removed`\n }\n payload = jsonStringify(event, null, null, { redactedPaths: EVENT_REDACTION_PATHS, redactedKeys })\n }\n return payload\n}\n\nmodule.exports.session = (session, redactedKeys) => {\n const payload = jsonStringify(session, null, null)\n return payload\n}\n","const payload = require('@bugsnag/core/lib/json-payload')\n\nmodule.exports = (client, win = window) => ({\n sendEvent: (event, cb = () => {}) => {\n const url = getApiUrl(client._config, 'notify', '4', win)\n const body = payload.event(event, client._config.redactedKeys)\n\n const req = new win.XDomainRequest()\n req.onload = function () {\n cb(null)\n }\n req.onerror = function () {\n const err = new Error('Event failed to send')\n client._logger.error('Event failed to send…', err)\n if (body.length > 10e5) {\n client._logger.warn(`Event oversized (${(body.length / 10e5).toFixed(2)} MB)`)\n }\n cb(err)\n }\n req.open('POST', url)\n setTimeout(() => {\n try {\n req.send(body)\n } catch (e) {\n client._logger.error(e)\n cb(e)\n }\n }, 0)\n },\n sendSession: (session, cb = () => {}) => {\n const url = getApiUrl(client._config, 'sessions', '1', win)\n const req = new win.XDomainRequest()\n req.onload = function () {\n cb(null)\n }\n req.open('POST', url)\n setTimeout(() => {\n try {\n req.send(payload.session(session, client._config.redactedKeys))\n } catch (e) {\n client._logger.error(e)\n cb(e)\n }\n }, 0)\n }\n})\n\nconst getApiUrl = (config, endpoint, version, win) => {\n // IE8 doesn't support Date.prototype.toISOstring(), but it does convert a date\n // to an ISO string when you use JSON stringify. Simply parsing the result of\n // JSON.stringify is smaller than using a toISOstring() polyfill.\n const isoDate = JSON.parse(JSON.stringify(new Date()))\n const url = matchPageProtocol(config.endpoints[endpoint], win.location.protocol)\n return `${url}?apiKey=${encodeURIComponent(config.apiKey)}&payloadVersion=${version}&sentAt=${encodeURIComponent(isoDate)}`\n}\n\nconst matchPageProtocol = module.exports._matchPageProtocol = (endpoint, pageProtocol) =>\n pageProtocol === 'http:'\n ? endpoint.replace(/^https:/, 'http:')\n : endpoint\n","const payload = require('@bugsnag/core/lib/json-payload')\n\nmodule.exports = (client, win = window) => ({\n sendEvent: (event, cb = () => {}) => {\n try {\n const url = client._config.endpoints.notify\n const req = new win.XMLHttpRequest()\n const body = payload.event(event, client._config.redactedKeys)\n\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) {\n const status = req.status\n if (status === 0 || status >= 400) {\n const err = new Error(`Request failed with status ${status}`)\n client._logger.error('Event failed to send…', err)\n if (body.length > 10e5) {\n client._logger.warn(`Event oversized (${(body.length / 10e5).toFixed(2)} MB)`)\n }\n cb(err)\n } else {\n cb(null)\n }\n }\n }\n\n req.open('POST', url)\n req.setRequestHeader('Content-Type', 'application/json')\n req.setRequestHeader('Bugsnag-Api-Key', event.apiKey || client._config.apiKey)\n req.setRequestHeader('Bugsnag-Payload-Version', '4')\n req.setRequestHeader('Bugsnag-Sent-At', (new Date()).toISOString())\n req.send(body)\n } catch (e) {\n client._logger.error(e)\n }\n },\n sendSession: (session, cb = () => {}) => {\n try {\n const url = client._config.endpoints.sessions\n const req = new win.XMLHttpRequest()\n\n req.onreadystatechange = function () {\n if (req.readyState === win.XMLHttpRequest.DONE) {\n const status = req.status\n if (status === 0 || status >= 400) {\n const err = new Error(`Request failed with status ${status}`)\n client._logger.error('Session failed to send…', err)\n cb(err)\n } else {\n cb(null)\n }\n }\n }\n\n req.open('POST', url)\n req.setRequestHeader('Content-Type', 'application/json')\n req.setRequestHeader('Bugsnag-Api-Key', client._config.apiKey)\n req.setRequestHeader('Bugsnag-Payload-Version', '1')\n req.setRequestHeader('Bugsnag-Sent-At', (new Date()).toISOString())\n req.send(payload.session(session, client._config.redactedKeys))\n } catch (e) {\n client._logger.error(e)\n }\n }\n})\n","let appStart = new Date()\nconst reset = () => { appStart = new Date() }\n\nmodule.exports = {\n name: 'appDuration',\n load: client => {\n client.addOnError(event => {\n const now = new Date()\n\n event.app.duration = now - appStart\n }, true)\n\n return { reset }\n }\n}\n","/*\n * Sets the default context to be the current URL\n */\nmodule.exports = (win = window) => ({\n load: (client) => {\n client.addOnError(event => {\n if (event.context !== undefined) return\n event.context = win.location.pathname\n }, true)\n }\n})\n","const assign = require('@bugsnag/core/lib/es-utils/assign')\nconst BUGSNAG_ANONYMOUS_ID_KEY = 'bugsnag-anonymous-id'\n\nconst getDeviceId = (win) => {\n try {\n const storage = win.localStorage\n\n let id = storage.getItem(BUGSNAG_ANONYMOUS_ID_KEY)\n\n // If we get an ID, make sure it looks like a valid cuid. The length can\n // fluctuate slightly, so some leeway is built in\n if (id && /^c[a-z0-9]{20,32}$/.test(id)) {\n return id\n }\n\n const cuid = require('@bugsnag/cuid')\n id = cuid()\n\n storage.setItem(BUGSNAG_ANONYMOUS_ID_KEY, id)\n\n return id\n } catch (err) {\n // If localStorage is not available (e.g. because it's disabled) then give up\n }\n}\n\n/*\n * Automatically detects browser device details\n */\nmodule.exports = (nav = navigator, win = window) => ({\n load: (client) => {\n const device = {\n locale: nav.browserLanguage || nav.systemLanguage || nav.userLanguage || nav.language,\n userAgent: nav.userAgent\n }\n\n if (win && win.screen && win.screen.orientation && win.screen.orientation.type) {\n device.orientation = win.screen.orientation.type\n } else if (win && win.document) {\n device.orientation =\n win.document.documentElement.clientWidth > win.document.documentElement.clientHeight\n ? 'landscape'\n : 'portrait'\n }\n\n if (client._config.generateAnonymousId) {\n device.id = getDeviceId(win)\n }\n\n client.addOnSession(session => {\n session.device = assign({}, session.device, device)\n // only set device id if collectUserIp is false\n if (!client._config.collectUserIp) setDefaultUserId(session)\n })\n\n // add time just as the event is sent\n client.addOnError((event) => {\n event.device = assign({},\n event.device,\n device,\n { time: new Date() }\n )\n if (!client._config.collectUserIp) setDefaultUserId(event)\n }, true)\n },\n configSchema: {\n generateAnonymousId: {\n validate: value => value === true || value === false,\n defaultValue: () => true,\n message: 'should be true|false'\n }\n }\n})\n\nconst setDefaultUserId = (eventOrSession) => {\n // device id is also used to populate the user id field, if it's not already set\n const user = eventOrSession.getUser()\n if (!user || !user.id) {\n eventOrSession.setUser(eventOrSession.device.id)\n }\n}\n","const assign = require('@bugsnag/core/lib/es-utils/assign')\n\n/*\n * Sets the event request: { url } to be the current href\n */\nmodule.exports = (win = window) => ({\n load: (client) => {\n client.addOnError(event => {\n if (event.request && event.request.url) return\n event.request = assign({}, event.request, { url: win.location.href })\n }, true)\n }\n})\n","const includes = require('@bugsnag/core/lib/es-utils/includes')\n\nmodule.exports = {\n load: client => { client._sessionDelegate = sessionDelegate }\n}\n\nconst sessionDelegate = {\n startSession: (client, session) => {\n const sessionClient = client\n sessionClient._session = session\n sessionClient._pausedSession = null\n\n // exit early if the current releaseStage is not enabled\n if (sessionClient._config.enabledReleaseStages !== null && !includes(sessionClient._config.enabledReleaseStages, sessionClient._config.releaseStage)) {\n sessionClient._logger.warn('Session not sent due to releaseStage/enabledReleaseStages configuration')\n return sessionClient\n }\n\n sessionClient._delivery.sendSession({\n notifier: sessionClient._notifier,\n device: session.device,\n app: session.app,\n sessions: [\n {\n id: session.id,\n startedAt: session.startedAt,\n user: session._user\n }\n ]\n })\n return sessionClient\n },\n resumeSession: (client) => {\n // Do nothing if there's already an active session\n if (client._session) {\n return client\n }\n\n // If we have a paused session then make it the active session\n if (client._pausedSession) {\n client._session = client._pausedSession\n client._pausedSession = null\n\n return client\n }\n\n // Otherwise start a new session\n return client.startSession()\n },\n pauseSession: (client) => {\n client._pausedSession = client._session\n client._session = null\n }\n}\n","const assign = require('@bugsnag/core/lib/es-utils/assign')\n\n/*\n * Prevent collection of user IPs\n */\nmodule.exports = {\n load: (client) => {\n if (client._config.collectUserIp) return\n\n client.addOnError(event => {\n // If user.id is explicitly undefined, it will be missing from the payload. It needs\n // removing so that the following line replaces it\n if (event._user && typeof event._user.id === 'undefined') delete event._user.id\n event._user = assign({ id: '[REDACTED]' }, event._user)\n event.request = assign({ clientIp: '[REDACTED]' }, event.request)\n })\n },\n configSchema: {\n collectUserIp: {\n defaultValue: () => true,\n message: 'should be true|false',\n validate: value => value === true || value === false\n }\n }\n}\n","const map = require('@bugsnag/core/lib/es-utils/map')\nconst reduce = require('@bugsnag/core/lib/es-utils/reduce')\nconst filter = require('@bugsnag/core/lib/es-utils/filter')\n\n/*\n * Leaves breadcrumbs when console log methods are called\n */\nexports.load = (client) => {\n const isDev = /^(local-)?dev(elopment)?$/.test(client._config.releaseStage)\n\n if (isDev || !client._isBreadcrumbTypeEnabled('log')) return\n\n map(CONSOLE_LOG_METHODS, method => {\n const original = console[method]\n console[method] = (...args) => {\n client.leaveBreadcrumb('Console output', reduce(args, (accum, arg, i) => {\n // do the best/simplest stringification of each argument\n let stringified = '[Unknown value]'\n // this may fail if the input is:\n // - an object whose [[Prototype]] is null (no toString)\n // - an object with a broken toString or @@toPrimitive implementation\n try { stringified = String(arg) } catch (e) {}\n // if it stringifies to [object Object] attempt to JSON stringify\n if (stringified === '[object Object]') {\n // catch stringify errors and fallback to [object Object]\n try { stringified = JSON.stringify(arg) } catch (e) {}\n }\n accum[`[${i}]`] = stringified\n return accum\n }, {\n severity: method.indexOf('group') === 0 ? 'log' : method\n }), 'log')\n original.apply(console, args)\n }\n console[method]._restore = () => { console[method] = original }\n })\n}\n\nif (process.env.NODE_ENV !== 'production') {\n exports.destroy = () => CONSOLE_LOG_METHODS.forEach(method => {\n if (typeof console[method]._restore === 'function') console[method]._restore()\n })\n}\n\nconst CONSOLE_LOG_METHODS = filter(['log', 'debug', 'info', 'warn', 'error'], method =>\n typeof console !== 'undefined' && typeof console[method] === 'function'\n)\n","const map = require('@bugsnag/core/lib/es-utils/map')\nconst reduce = require('@bugsnag/core/lib/es-utils/reduce')\nconst filter = require('@bugsnag/core/lib/es-utils/filter')\n\nconst MAX_LINE_LENGTH = 200\nconst MAX_SCRIPT_LENGTH = 500000\n\nmodule.exports = (doc = document, win = window) => ({\n load: (client) => {\n if (!client._config.trackInlineScripts) return\n\n const originalLocation = win.location.href\n let html = ''\n\n // in IE8-10 the 'interactive' state can fire too soon (before scripts have finished executing), so in those\n // we wait for the 'complete' state before assuming that synchronous scripts are no longer executing\n const isOldIe = !!doc.attachEvent\n let DOMContentLoaded = isOldIe ? doc.readyState === 'complete' : doc.readyState !== 'loading'\n const getHtml = () => doc.documentElement.outerHTML\n\n // get whatever HTML exists at this point in time\n html = getHtml()\n const prev = doc.onreadystatechange\n // then update it when the DOM content has loaded\n doc.onreadystatechange = function () {\n // IE8 compatible alternative to document#DOMContentLoaded\n if (doc.readyState === 'interactive') {\n html = getHtml()\n DOMContentLoaded = true\n }\n try { prev.apply(this, arguments) } catch (e) {}\n }\n\n let _lastScript = null\n const updateLastScript = script => {\n _lastScript = script\n }\n\n const getCurrentScript = () => {\n let script = doc.currentScript || _lastScript\n if (!script && !DOMContentLoaded) {\n const scripts = doc.scripts || doc.getElementsByTagName('script')\n script = scripts[scripts.length - 1]\n }\n return script\n }\n\n const addSurroundingCode = lineNumber => {\n // get whatever html has rendered at this point\n if (!DOMContentLoaded || !html) html = getHtml()\n // simulate the raw html\n const htmlLines = [''].concat(html.split('\\n'))\n const zeroBasedLine = lineNumber - 1\n const start = Math.max(zeroBasedLine - 3, 0)\n const end = Math.min(zeroBasedLine + 3, htmlLines.length)\n return reduce(htmlLines.slice(start, end), (accum, line, i) => {\n accum[start + 1 + i] = line.length <= MAX_LINE_LENGTH ? line : line.substr(0, MAX_LINE_LENGTH)\n return accum\n }, {})\n }\n\n client.addOnError(event => {\n // remove any of our own frames that may be part the stack this\n // happens before the inline script check as it happens for all errors\n event.errors[0].stacktrace = filter(event.errors[0].stacktrace, f => !(/__trace__$/.test(f.method)))\n\n const frame = event.errors[0].stacktrace[0]\n\n // remove hash and query string from url\n const cleanUrl = (url) => url.replace(/#.*$/, '').replace(/\\?.*$/, '')\n\n // if frame.file exists and is not the original location of the page, this can't be an inline script\n if (frame && frame.file && cleanUrl(frame.file) !== cleanUrl(originalLocation)) return\n\n // grab the last script known to have run\n const currentScript = getCurrentScript()\n if (currentScript) {\n const content = currentScript.innerHTML\n event.addMetadata(\n 'script',\n 'content',\n content.length <= MAX_SCRIPT_LENGTH ? content : content.substr(0, MAX_SCRIPT_LENGTH)\n )\n\n // only attempt to grab some surrounding code if we have a line number\n if (frame && frame.lineNumber) {\n frame.code = addSurroundingCode(frame.lineNumber)\n }\n }\n }, true)\n\n // Proxy all the timer functions whose callback is their 0th argument.\n // Keep a reference to the original setTimeout because we need it later\n const [_setTimeout] = map([\n 'setTimeout',\n 'setInterval',\n 'setImmediate',\n 'requestAnimationFrame'\n ], fn =>\n __proxy(win, fn, original =>\n __traceOriginalScript(original, args => ({\n get: () => args[0],\n replace: fn => { args[0] = fn }\n }))\n )\n )\n\n // Proxy all the host objects whose prototypes have an addEventListener function\n map([\n 'EventTarget', 'Window', 'Node', 'ApplicationCache', 'AudioTrackList', 'ChannelMergerNode',\n 'CryptoOperation', 'EventSource', 'FileReader', 'HTMLUnknownElement', 'IDBDatabase',\n 'IDBRequest', 'IDBTransaction', 'KeyOperation', 'MediaController', 'MessagePort', 'ModalWindow',\n 'Notification', 'SVGElementInstance', 'Screen', 'TextTrack', 'TextTrackCue', 'TextTrackList',\n 'WebSocket', 'WebSocketWorker', 'Worker', 'XMLHttpRequest', 'XMLHttpRequestEventTarget', 'XMLHttpRequestUpload'\n ], o => {\n if (!win[o] || !win[o].prototype || !Object.prototype.hasOwnProperty.call(win[o].prototype, 'addEventListener')) return\n __proxy(win[o].prototype, 'addEventListener', original =>\n __traceOriginalScript(original, eventTargetCallbackAccessor)\n )\n __proxy(win[o].prototype, 'removeEventListener', original =>\n __traceOriginalScript(original, eventTargetCallbackAccessor, true)\n )\n })\n\n function __traceOriginalScript (fn, callbackAccessor, alsoCallOriginal = false) {\n return function () {\n // this is required for removeEventListener to remove anything added with\n // addEventListener before the functions started being wrapped by Bugsnag\n const args = [].slice.call(arguments)\n try {\n const cba = callbackAccessor(args)\n const cb = cba.get()\n if (alsoCallOriginal) fn.apply(this, args)\n if (typeof cb !== 'function') return fn.apply(this, args)\n if (cb.__trace__) {\n cba.replace(cb.__trace__)\n } else {\n const script = getCurrentScript()\n // this function mustn't be annonymous due to a bug in the stack\n // generation logic, meaning it gets tripped up\n // see: https://github.com/stacktracejs/stack-generator/issues/6\n cb.__trace__ = function __trace__ () {\n // set the script that called this function\n updateLastScript(script)\n // immediately unset the currentScript synchronously below, however\n // if this cb throws an error the line after will not get run so schedule\n // an almost-immediate aysnc update too\n _setTimeout(function () { updateLastScript(null) }, 0)\n const ret = cb.apply(this, arguments)\n updateLastScript(null)\n return ret\n }\n cb.__trace__.__trace__ = cb.__trace__\n cba.replace(cb.__trace__)\n }\n } catch (e) {\n // swallow these errors on Selenium:\n // Permission denied to access property '__trace__'\n // WebDriverException: Message: Permission denied to access property \"handleEvent\"\n }\n // IE8 doesn't let you call .apply() on setTimeout/setInterval\n if (fn.apply) return fn.apply(this, args)\n switch (args.length) {\n case 1: return fn(args[0])\n case 2: return fn(args[0], args[1])\n default: return fn()\n }\n }\n }\n },\n configSchema: {\n trackInlineScripts: {\n validate: value => value === true || value === false,\n defaultValue: () => true,\n message: 'should be true|false'\n }\n }\n})\n\nfunction __proxy (host, name, replacer) {\n const original = host[name]\n if (!original) return original\n const replacement = replacer(original)\n host[name] = replacement\n return original\n}\n\nfunction eventTargetCallbackAccessor (args) {\n const isEventHandlerObj = !!args[1] && typeof args[1].handleEvent === 'function'\n return {\n get: function () {\n return isEventHandlerObj ? args[1].handleEvent : args[1]\n },\n replace: function (fn) {\n if (isEventHandlerObj) {\n args[1].handleEvent = fn\n } else {\n args[1] = fn\n }\n }\n }\n}\n","/*\n * Leaves breadcrumbs when the user interacts with the DOM\n */\nmodule.exports = (win = window) => ({\n load: (client) => {\n if (!('addEventListener' in win)) return\n if (!client._isBreadcrumbTypeEnabled('user')) return\n\n win.addEventListener('click', (event) => {\n let targetText, targetSelector\n try {\n targetText = getNodeText(event.target)\n targetSelector = getNodeSelector(event.target, win)\n } catch (e) {\n targetText = '[hidden]'\n targetSelector = '[hidden]'\n client._logger.error('Cross domain error when tracking click event. See docs: https://tinyurl.com/yy3rn63z')\n }\n client.leaveBreadcrumb('UI click', { targetText, targetSelector }, 'user')\n }, true)\n }\n})\n\nconst trimStart = /^\\s+/\nconst trimEnd = /(^|[^\\s])\\s+$/\n\nfunction getNodeText (el) {\n let text = el.textContent || el.innerText || ''\n\n if (!text && (el.type === 'submit' || el.type === 'button')) {\n text = el.value\n }\n\n text = text.replace(trimStart, '').replace(trimEnd, '$1')\n\n if (text.length > 140) {\n return text.slice(0, 135) + '(...)'\n }\n\n return text\n}\n\n// Create a label from tagname, id and css class of the element\nfunction getNodeSelector (el, win) {\n const parts = [el.tagName]\n if (el.id) parts.push('#' + el.id)\n if (el.className && el.className.length) parts.push(`.${el.className.split(' ').join('.')}`)\n // Can't get much more advanced with the current browser\n if (!win.document.querySelectorAll || !Array.prototype.indexOf) return parts.join('')\n try {\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join('')\n } catch (e) {\n // Sometimes the query selector can be invalid just return it as-is\n return parts.join('')\n }\n // try to get a more specific selector if this one matches more than one element\n if (el.parentNode.childNodes.length > 1) {\n const index = Array.prototype.indexOf.call(el.parentNode.childNodes, el) + 1\n parts.push(`:nth-child(${index})`)\n }\n if (win.document.querySelectorAll(parts.join('')).length === 1) return parts.join('')\n // try prepending the parent node selector\n if (el.parentNode) return `${getNodeSelector(el.parentNode, win)} > ${parts.join('')}`\n return parts.join('')\n}\n","/*\n* Leaves breadcrumbs when navigation methods are called or events are emitted\n*/\nmodule.exports = (win = window) => {\n const plugin = {\n load: (client) => {\n if (!('addEventListener' in win)) return\n if (!client._isBreadcrumbTypeEnabled('navigation')) return\n\n // returns a function that will drop a breadcrumb with a given name\n const drop = name => () => client.leaveBreadcrumb(name, {}, 'navigation')\n\n // simple drops – just names, no meta\n win.addEventListener('pagehide', drop('Page hidden'), true)\n win.addEventListener('pageshow', drop('Page shown'), true)\n win.addEventListener('load', drop('Page loaded'), true)\n win.document.addEventListener('DOMContentLoaded', drop('DOMContentLoaded'), true)\n // some browsers like to emit popstate when the page loads, so only add the popstate listener after that\n win.addEventListener('load', () => win.addEventListener('popstate', drop('Navigated back'), true))\n\n // hashchange has some metadata that we care about\n win.addEventListener('hashchange', event => {\n const metadata = event.oldURL\n ? { from: relativeLocation(event.oldURL, win), to: relativeLocation(event.newURL, win), state: getCurrentState(win) }\n : { to: relativeLocation(win.location.href, win) }\n client.leaveBreadcrumb('Hash changed', metadata, 'navigation')\n }, true)\n\n // the only way to know about replaceState/pushState is to wrap them… >_<\n\n if (win.history.replaceState) wrapHistoryFn(client, win.history, 'replaceState', win)\n if (win.history.pushState) wrapHistoryFn(client, win.history, 'pushState', win)\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n plugin.destroy = (win = window) => {\n win.history.replaceState._restore()\n win.history.pushState._restore()\n }\n }\n\n return plugin\n}\n\nif (process.env.NODE_ENV !== 'production') {\n exports.destroy = (win = window) => {\n win.history.replaceState._restore()\n win.history.pushState._restore()\n }\n}\n\n// takes a full url like http://foo.com:1234/pages/01.html?yes=no#section-2 and returns\n// just the path and hash parts, e.g. /pages/01.html?yes=no#section-2\nconst relativeLocation = (url, win) => {\n const a = win.document.createElement('A')\n a.href = url\n return `${a.pathname}${a.search}${a.hash}`\n}\n\nconst stateChangeToMetadata = (win, state, title, url) => {\n const currentPath = relativeLocation(win.location.href, win)\n return { title, state, prevState: getCurrentState(win), to: url || currentPath, from: currentPath }\n}\n\nconst wrapHistoryFn = (client, target, fn, win) => {\n const orig = target[fn]\n target[fn] = (state, title, url) => {\n client.leaveBreadcrumb(`History ${fn}`, stateChangeToMetadata(win, state, title, url), 'navigation')\n // if throttle plugin is in use, reset the event sent count\n if (typeof client.resetEventCount === 'function') client.resetEventCount()\n // if the client is operating in auto session-mode, a new route should trigger a new session\n if (client._config.autoTrackSessions) client.startSession()\n // Internet Explorer will convert `undefined` to a string when passed, causing an unintended redirect\n // to '/undefined'. therefore we only pass the url if it's not undefined.\n orig.apply(target, [state, title].concat(url !== undefined ? url : []))\n }\n if (process.env.NODE_ENV !== 'production') {\n target[fn]._restore = () => { target[fn] = orig }\n }\n}\n\nconst getCurrentState = (win) => {\n try {\n return win.history.state\n } catch (e) {}\n}\n","const BREADCRUMB_TYPE = 'request'\n\nconst includes = require('@bugsnag/core/lib/es-utils/includes')\n\n/*\n * Leaves breadcrumbs when network requests occur\n */\nmodule.exports = (_ignoredUrls = [], win = window) => {\n let restoreFunctions = []\n const plugin = {\n load: client => {\n if (!client._isBreadcrumbTypeEnabled('request')) return\n\n const ignoredUrls = [\n client._config.endpoints.notify,\n client._config.endpoints.sessions\n ].concat(_ignoredUrls)\n\n monkeyPatchXMLHttpRequest()\n monkeyPatchFetch()\n\n // XMLHttpRequest monkey patch\n function monkeyPatchXMLHttpRequest () {\n if (!('addEventListener' in win.XMLHttpRequest.prototype)) return\n const nativeOpen = win.XMLHttpRequest.prototype.open\n\n // override native open()\n win.XMLHttpRequest.prototype.open = function open (method, url) {\n let requestSetupKey = false\n\n const error = () => handleXHRError(method, url)\n const load = () => handleXHRLoad(method, url, this.status)\n\n // if we have already setup listeners, it means open() was called twice, we need to remove\n // the listeners and recreate them\n if (requestSetupKey) {\n this.removeEventListener('load', load)\n this.removeEventListener('error', error)\n }\n\n // attach load event listener\n this.addEventListener('load', load)\n // attach error event listener\n this.addEventListener('error', error)\n\n requestSetupKey = true\n\n nativeOpen.apply(this, arguments)\n }\n\n if (process.env.NODE_ENV !== 'production') {\n restoreFunctions.push(() => {\n win.XMLHttpRequest.prototype.open = nativeOpen\n })\n }\n }\n\n function handleXHRLoad (method, url, status) {\n if (url === undefined) {\n client._logger.warn('The request URL is no longer present on this XMLHttpRequest. A breadcrumb cannot be left for this request.')\n return\n }\n\n // an XMLHttpRequest's URL can be an object as long as its 'toString'\n // returns a URL, e.g. a HTMLAnchorElement\n if (typeof url === 'string' && includes(ignoredUrls, url.replace(/\\?.*$/, ''))) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return\n }\n const metadata = {\n status: status,\n request: `${method} ${url}`\n }\n if (status >= 400) {\n // contacted server but got an error response\n client.leaveBreadcrumb('XMLHttpRequest failed', metadata, BREADCRUMB_TYPE)\n } else {\n client.leaveBreadcrumb('XMLHttpRequest succeeded', metadata, BREADCRUMB_TYPE)\n }\n }\n\n function handleXHRError (method, url) {\n if (url === undefined) {\n client._logger.warn('The request URL is no longer present on this XMLHttpRequest. A breadcrumb cannot be left for this request.')\n return\n }\n\n if (typeof url === 'string' && includes(ignoredUrls, url.replace(/\\?.*$/, ''))) {\n // don't leave a network breadcrumb from bugsnag notify calls\n return\n }\n\n // failed to contact server\n client.leaveBreadcrumb('XMLHttpRequest error', {\n request: `${method} ${url}`\n }, BREADCRUMB_TYPE)\n }\n\n // window.fetch monkey patch\n function monkeyPatchFetch () {\n // only patch it if it exists and if it is not a polyfill (patching a polyfilled\n // fetch() results in duplicate breadcrumbs for the same request because the\n // implementation uses XMLHttpRequest which is also patched)\n if (!('fetch' in win) || win.fetch.polyfill) return\n\n const oldFetch = win.fetch\n win.fetch = function fetch () {\n const urlOrRequest = arguments[0]\n const options = arguments[1]\n\n let method\n let url = null\n\n if (urlOrRequest && typeof urlOrRequest === 'object') {\n url = urlOrRequest.url\n if (options && 'method' in options) {\n method = options.method\n } else if (urlOrRequest && 'method' in urlOrRequest) {\n method = urlOrRequest.method\n }\n } else {\n url = urlOrRequest\n if (options && 'method' in options) {\n method = options.method\n }\n }\n\n if (method === undefined) {\n method = 'GET'\n }\n\n return new Promise((resolve, reject) => {\n // pass through to native fetch\n oldFetch(...arguments)\n .then(response => {\n handleFetchSuccess(response, method, url)\n resolve(response)\n })\n .catch(error => {\n handleFetchError(method, url)\n reject(error)\n })\n })\n }\n\n if (process.env.NODE_ENV !== 'production') {\n restoreFunctions.push(() => {\n win.fetch = oldFetch\n })\n }\n }\n\n const handleFetchSuccess = (response, method, url) => {\n const metadata = {\n status: response.status,\n request: `${method} ${url}`\n }\n if (response.status >= 400) {\n // when the request comes back with a 4xx or 5xx status it does not reject the fetch promise,\n client.leaveBreadcrumb('fetch() failed', metadata, BREADCRUMB_TYPE)\n } else {\n client.leaveBreadcrumb('fetch() succeeded', metadata, BREADCRUMB_TYPE)\n }\n }\n\n const handleFetchError = (method, url) => {\n client.leaveBreadcrumb('fetch() error', { request: `${method} ${url}` }, BREADCRUMB_TYPE)\n }\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n plugin.destroy = () => {\n restoreFunctions.forEach(fn => fn())\n restoreFunctions = []\n }\n }\n\n return plugin\n}\n","const intRange = require('@bugsnag/core/lib/validators/int-range')\n\n/*\n * Throttles and dedupes events\n */\n\nmodule.exports = {\n load: (client) => {\n // track sent events for each init of the plugin\n let n = 0\n\n // add onError hook\n client.addOnError((event) => {\n // have max events been sent already?\n if (n >= client._config.maxEvents) {\n client._logger.warn(`Cancelling event send due to maxEvents per session limit of ${client._config.maxEvents} being reached`)\n return false\n }\n n++\n })\n\n client.resetEventCount = () => { n = 0 }\n },\n configSchema: {\n maxEvents: {\n defaultValue: () => 10,\n message: 'should be a positive integer ≤100',\n validate: val => intRange(1, 100)(val)\n }\n }\n}\n","/*\n * Remove query strings (and fragments) from stacktraces\n */\nconst map = require('@bugsnag/core/lib/es-utils/map')\nconst reduce = require('@bugsnag/core/lib/es-utils/reduce')\n\nmodule.exports = {\n load: (client) => {\n client.addOnError(event => {\n const allFrames = reduce(event.errors, (accum, er) => accum.concat(er.stacktrace), [])\n map(allFrames, frame => {\n frame.file = strip(frame.file)\n })\n })\n }\n}\n\nconst strip = module.exports._strip = str =>\n typeof str === 'string'\n ? str.replace(/\\?.*$/, '').replace(/#.*$/, '')\n : str\n","/*\n * Automatically notifies Bugsnag when window.onerror is called\n */\n\nmodule.exports = (win = window, component = 'window onerror') => ({\n load: (client) => {\n if (!client._config.autoDetectErrors) return\n if (!client._config.enabledErrorTypes.unhandledExceptions) return\n function onerror (messageOrEvent, url, lineNo, charNo, error) {\n // Ignore errors with no info due to CORS settings\n if (lineNo === 0 && /Script error\\.?/.test(messageOrEvent)) {\n client._logger.warn('Ignoring cross-domain or eval script error. See docs: https://tinyurl.com/yy3rn63z')\n } else {\n // any error sent to window.onerror is unhandled and has severity=error\n const handledState = { severity: 'error', unhandled: true, severityReason: { type: 'unhandledException' } }\n\n let event\n\n // window.onerror can be called in a number of ways. This big if-else is how we\n // figure out which arguments were supplied, and what kind of values it received.\n\n if (error) {\n // if the last parameter (error) was supplied, this is a modern browser's\n // way of saying \"this value was thrown and not caught\"\n event = client.Event.create(error, true, handledState, component, 1)\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo)\n } else if (\n // This complex case detects \"error\" events that are typically synthesised\n // by jquery's trigger method (although can be created in other ways). In\n // order to detect this:\n // - the first argument (message) must exist and be an object (most likely it's a jQuery event)\n // - the second argument (url) must either not exist or be something other than a string (if it\n // exists and is not a string, it'll be the extraParameters argument from jQuery's trigger()\n // function)\n // - the third, fourth and fifth arguments must not exist (lineNo, charNo and error)\n (typeof messageOrEvent === 'object' && messageOrEvent !== null) &&\n (!url || typeof url !== 'string') &&\n !lineNo && !charNo && !error\n ) {\n // The jQuery event may have a \"type\" property, if so use it as part of the error message\n const name = messageOrEvent.type ? `Event: ${messageOrEvent.type}` : 'Error'\n // attempt to find a message from one of the conventional properties, but\n // default to empty string (the event will fill it with a placeholder)\n const message = messageOrEvent.message || messageOrEvent.detail || ''\n\n event = client.Event.create({ name, message }, true, handledState, component, 1)\n\n // provide the original thing onerror received – not our error-like object we passed to _notify\n event.originalError = messageOrEvent\n\n // include the raw input as metadata – it might contain more info than we extracted\n event.addMetadata(component, { event: messageOrEvent, extraParameters: url })\n } else {\n // Lastly, if there was no \"error\" parameter this event was probably from an old\n // browser that doesn't support that. Instead we need to generate a stacktrace.\n event = client.Event.create(messageOrEvent, true, handledState, component, 1)\n decorateStack(event.errors[0].stacktrace, url, lineNo, charNo)\n }\n\n client._notify(event)\n }\n\n if (typeof prevOnError === 'function') prevOnError.apply(this, arguments)\n }\n\n const prevOnError = win.onerror\n win.onerror = onerror\n }\n})\n\n// Sometimes the stacktrace has less information than was passed to window.onerror.\n// This function will augment the first stackframe with any useful info that was\n// received as arguments to the onerror callback.\nconst decorateStack = (stack, url, lineNo, charNo) => {\n if (!stack[0]) stack.push({})\n const culprit = stack[0]\n if (!culprit.file && typeof url === 'string') culprit.file = url\n if (!culprit.lineNumber && isActualNumber(lineNo)) culprit.lineNumber = lineNo\n if (!culprit.columnNumber) {\n if (isActualNumber(charNo)) {\n culprit.columnNumber = charNo\n } else if (window.event && isActualNumber(window.event.errorCharacter)) {\n culprit.columnNumber = window.event.errorCharacter\n }\n }\n}\n\nconst isActualNumber = (n) => typeof n === 'number' && String.call(n) !== 'NaN'\n","const map = require('@bugsnag/core/lib/es-utils/map')\nconst isError = require('@bugsnag/core/lib/iserror')\n\nlet _listener\n/*\n * Automatically notifies Bugsnag when window.onunhandledrejection is called\n */\nmodule.exports = (win = window) => {\n const plugin = {\n load: (client) => {\n if (!client._config.autoDetectErrors || !client._config.enabledErrorTypes.unhandledRejections) return\n const listener = evt => {\n let error = evt.reason\n let isBluebird = false\n\n // accessing properties on evt.detail can throw errors (see #394)\n try {\n if (evt.detail && evt.detail.reason) {\n error = evt.detail.reason\n isBluebird = true\n }\n } catch (e) {}\n\n const event = client.Event.create(error, false, {\n severity: 'error',\n unhandled: true,\n severityReason: { type: 'unhandledPromiseRejection' }\n }, 'unhandledrejection handler', 1, client._logger)\n\n if (isBluebird) {\n map(event.errors[0].stacktrace, fixBluebirdStacktrace(error))\n }\n\n client._notify(event, (event) => {\n if (isError(event.originalError) && !event.originalError.stack) {\n event.addMetadata('unhandledRejection handler', {\n [Object.prototype.toString.call(event.originalError)]: {\n name: event.originalError.name,\n message: event.originalError.message,\n code: event.originalError.code\n }\n })\n }\n })\n }\n if ('addEventListener' in win) {\n win.addEventListener('unhandledrejection', listener)\n } else {\n win.onunhandledrejection = (reason, promise) => {\n listener({ detail: { reason, promise } })\n }\n }\n _listener = listener\n }\n }\n\n if (process.env.NODE_ENV !== 'production') {\n plugin.destroy = (win = window) => {\n if (_listener) {\n if ('addEventListener' in win) {\n win.removeEventListener('unhandledrejection', _listener)\n } else {\n win.onunhandledrejection = null\n }\n }\n _listener = null\n }\n }\n\n return plugin\n}\n\n// The stack parser on bluebird stacks in FF get a suprious first frame:\n//\n// Error: derp\n// b@http://localhost:5000/bluebird.html:22:24\n// a@http://localhost:5000/bluebird.html:18:9\n// @http://localhost:5000/bluebird.html:14:9\n//\n// results in\n// […]\n// 0: Object { file: \"Error: derp\", method: undefined, lineNumber: undefined, … }\n// 1: Object { file: \"http://localhost:5000/bluebird.html\", method: \"b\", lineNumber: 22, … }\n// 2: Object { file: \"http://localhost:5000/bluebird.html\", method: \"a\", lineNumber: 18, … }\n// 3: Object { file: \"http://localhost:5000/bluebird.html\", lineNumber: 14, columnNumber: 9, … }\n//\n// so the following reduce/accumulator function removes such frames\n//\n// Bluebird pads method names with spaces so trim that too…\n// https://github.com/petkaantonov/bluebird/blob/b7f21399816d02f979fe434585334ce901dcaf44/src/debuggability.js#L568-L571\nconst fixBluebirdStacktrace = (error) => (frame) => {\n if (frame.file === error.toString()) return\n if (frame.method) {\n frame.method = frame.method.replace(/^\\s+/, '')\n }\n}\n","const name = 'Bugsnag JavaScript'\nconst version = '7.20.2'\nconst url = 'https://github.com/bugsnag/bugsnag-js'\n\nconst Client = require('@bugsnag/core/client')\nconst Event = require('@bugsnag/core/event')\nconst Session = require('@bugsnag/core/session')\nconst Breadcrumb = require('@bugsnag/core/breadcrumb')\n\nconst map = require('@bugsnag/core/lib/es-utils/map')\nconst keys = require('@bugsnag/core/lib/es-utils/keys')\nconst assign = require('@bugsnag/core/lib/es-utils/assign')\n\n// extend the base config schema with some browser-specific options\nconst schema = assign({}, require('@bugsnag/core/config').schema, require('./config'))\n\nconst pluginWindowOnerror = require('@bugsnag/plugin-window-onerror')\nconst pluginUnhandledRejection = require('@bugsnag/plugin-window-unhandled-rejection')\nconst pluginApp = require('@bugsnag/plugin-app-duration')\nconst pluginDevice = require('@bugsnag/plugin-browser-device')\nconst pluginContext = require('@bugsnag/plugin-browser-context')\nconst pluginRequest = require('@bugsnag/plugin-browser-request')\nconst pluginThrottle = require('@bugsnag/plugin-simple-throttle')\nconst pluginConsoleBreadcrumbs = require('@bugsnag/plugin-console-breadcrumbs')\nconst pluginNetworkBreadcrumbs = require('@bugsnag/plugin-network-breadcrumbs')\nconst pluginNavigationBreadcrumbs = require('@bugsnag/plugin-navigation-breadcrumbs')\nconst pluginInteractionBreadcrumbs = require('@bugsnag/plugin-interaction-breadcrumbs')\nconst pluginInlineScriptContent = require('@bugsnag/plugin-inline-script-content')\nconst pluginSession = require('@bugsnag/plugin-browser-session')\nconst pluginIp = require('@bugsnag/plugin-client-ip')\nconst pluginStripQueryString = require('@bugsnag/plugin-strip-query-string')\n\n// delivery mechanisms\nconst dXDomainRequest = require('@bugsnag/delivery-x-domain-request')\nconst dXMLHttpRequest = require('@bugsnag/delivery-xml-http-request')\n\nconst Bugsnag = {\n _client: null,\n createClient: (opts) => {\n // handle very simple use case where user supplies just the api key as a string\n if (typeof opts === 'string') opts = { apiKey: opts }\n if (!opts) opts = {}\n\n const internalPlugins = [\n // add browser-specific plugins\n pluginApp,\n pluginDevice(),\n pluginContext(),\n pluginRequest(),\n pluginThrottle,\n pluginSession,\n pluginIp,\n pluginStripQueryString,\n pluginWindowOnerror(),\n pluginUnhandledRejection(),\n pluginNavigationBreadcrumbs(),\n pluginInteractionBreadcrumbs(),\n pluginNetworkBreadcrumbs(),\n pluginConsoleBreadcrumbs,\n\n // this one added last to avoid wrapping functionality before bugsnag uses it\n pluginInlineScriptContent()\n ]\n\n // configure a client with user supplied options\n const bugsnag = new Client(opts, schema, internalPlugins, { name, version, url })\n\n // set delivery based on browser capability (IE 8+9 have an XDomainRequest object)\n bugsnag._setDelivery(window.XDomainRequest ? dXDomainRequest : dXMLHttpRequest)\n\n bugsnag._logger.debug('Loaded!')\n bugsnag.leaveBreadcrumb('Bugsnag loaded', {}, 'state')\n\n return bugsnag._config.autoTrackSessions\n ? bugsnag.startSession()\n : bugsnag\n },\n start: (opts) => {\n if (Bugsnag._client) {\n Bugsnag._client._logger.warn('Bugsnag.start() was called more than once. Ignoring.')\n return Bugsnag._client\n }\n Bugsnag._client = Bugsnag.createClient(opts)\n return Bugsnag._client\n },\n isStarted: () => {\n return Bugsnag._client != null\n }\n}\n\nmap(['resetEventCount'].concat(keys(Client.prototype)), (m) => {\n if (/^_/.test(m)) return\n Bugsnag[m] = function () {\n if (!Bugsnag._client) return console.log(`Bugsnag.${m}() was called before Bugsnag.start()`)\n Bugsnag._client._depth += 1\n const ret = Bugsnag._client[m].apply(Bugsnag._client, arguments)\n Bugsnag._client._depth -= 1\n return ret\n }\n})\n\nmodule.exports = Bugsnag\n\nmodule.exports.Client = Client\nmodule.exports.Event = Event\nmodule.exports.Session = Session\nmodule.exports.Breadcrumb = Breadcrumb\n\n// Export a \"default\" property for compatibility with ESM imports\nmodule.exports.default = Bugsnag\n","\nreturn _$notifier_2;\n\n});\n","/**\n * cuid.js\n * Collision-resistant UID generator for browsers and node.\n * Sequential for fast db lookups and recency sorting.\n * Safe for element IDs and server-side lookups.\n *\n * Extracted from CLCTR\n *\n * Copyright (c) Eric Elliott 2012\n * MIT License\n */\n\nvar fingerprint = require('./lib/fingerprint.js');\nvar pad = require('./lib/pad.js');\n\nvar c = 0,\n blockSize = 4,\n base = 36,\n discreteValues = Math.pow(base, blockSize);\n\nfunction randomBlock () {\n return pad((Math.random() *\n discreteValues << 0)\n .toString(base), blockSize);\n}\n\nfunction safeCounter () {\n c = c < discreteValues ? c : 0;\n c++; // this is not subliminal\n return c - 1;\n}\n\nfunction cuid () {\n // Starting with a lowercase letter makes\n // it HTML element ID friendly.\n var letter = 'c', // hard-coded allows for sequential access\n\n // timestamp\n // warning: this exposes the exact date and time\n // that the uid was created.\n timestamp = (new Date().getTime()).toString(base),\n\n // Prevent same-machine collisions.\n counter = pad(safeCounter().toString(base), blockSize),\n\n // A few chars to generate distinct ids for different\n // clients (so different computers are far less\n // likely to generate the same id)\n print = fingerprint(),\n\n // Grab some more chars from Math.random()\n random = randomBlock() + randomBlock();\n\n return letter + timestamp + counter + print + random;\n}\n\ncuid.fingerprint = fingerprint;\n\nmodule.exports = cuid;\n","var pad = require('./pad.js');\n\nvar env = typeof window === 'object' ? window : self;\nvar globalCount = 0;\nfor (var prop in env) {\n if (Object.hasOwnProperty.call(env, prop)) globalCount++;\n}\nvar mimeTypesLength = navigator.mimeTypes ? navigator.mimeTypes.length : 0;\nvar clientId = pad((mimeTypesLength +\n navigator.userAgent.length).toString(36) +\n globalCount.toString(36), 4);\n\nmodule.exports = function fingerprint () {\n return clientId;\n};\n","module.exports = function pad (num, size) {\n var s = '000000000' + num;\n return s.substr(s.length - size);\n};\n","module.exports = require('@bugsnag/browser')\n","module.exports = class BugsnagPluginReact {\n constructor (...args) {\n // Fetch React from the window object, if it exists\n const globalReact = typeof window !== 'undefined' && window.React\n\n this.name = 'react'\n this.lazy = args.length === 0 && !globalReact\n\n if (!this.lazy) {\n this.React = args[0] || globalReact\n if (!this.React) throw new Error('@bugsnag/plugin-react reference to `React` was undefined')\n }\n }\n\n load (client) {\n if (!this.lazy) {\n const ErrorBoundary = createClass(this.React, client)\n ErrorBoundary.createErrorBoundary = () => ErrorBoundary\n return ErrorBoundary\n }\n\n const BugsnagPluginReactLazyInitializer = function () {\n throw new Error(`@bugsnag/plugin-react was used incorrectly. Valid usage is as follows:\nPass React to the plugin constructor\n\n \\`Bugsnag.start({ plugins: [new BugsnagPluginReact(React)] })\\`\nand then call \\`const ErrorBoundary = Bugsnag.getPlugin('react').createErrorBoundary()\\`\n\nOr if React is not available until after Bugsnag has started,\nconstruct the plugin with no arguments\n \\`Bugsnag.start({ plugins: [new BugsnagPluginReact()] })\\`,\nthen pass in React when available to construct your error boundary\n \\`const ErrorBoundary = Bugsnag.getPlugin('react').createErrorBoundary(React)\\``)\n }\n BugsnagPluginReactLazyInitializer.createErrorBoundary = (React) => {\n if (!React) throw new Error('@bugsnag/plugin-react reference to `React` was undefined')\n return createClass(React, client)\n }\n return BugsnagPluginReactLazyInitializer\n }\n}\n\nconst formatComponentStack = str => {\n const lines = str.split(/\\s*\\n\\s*/g)\n let ret = ''\n for (let line = 0, len = lines.length; line < len; line++) {\n if (lines[line].length) ret += `${ret.length ? '\\n' : ''}${lines[line]}`\n }\n return ret\n}\n\nconst createClass = (React, client) => class ErrorBoundary extends React.Component {\n constructor (props) {\n super(props)\n this.state = {\n error: null,\n info: null\n }\n this.handleClearError = this.handleClearError.bind(this)\n }\n\n handleClearError () {\n this.setState({ error: null, info: null })\n }\n\n componentDidCatch (error, info) {\n const { onError } = this.props\n const handledState = { severity: 'error', unhandled: true, severityReason: { type: 'unhandledException' } }\n const event = client.Event.create(\n error,\n true,\n handledState,\n 1\n )\n if (info && info.componentStack) info.componentStack = formatComponentStack(info.componentStack)\n event.addMetadata('react', info)\n client._notify(event, onError)\n this.setState({ error, info })\n }\n\n render () {\n const { error } = this.state\n if (error) {\n const { FallbackComponent } = this.props\n if (FallbackComponent) return React.createElement(FallbackComponent, { ...this.state, clearError: this.handleClearError })\n return null\n }\n return this.props.children\n }\n}\n\nmodule.exports.formatComponentStack = formatComponentStack\nmodule.exports.default = module.exports\n","const chars = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/';\n\n// Use a lookup table to find the index.\nconst lookup = typeof Uint8Array === 'undefined' ? [] : new Uint8Array(256);\nfor (let i = 0; i < chars.length; i++) {\n lookup[chars.charCodeAt(i)] = i;\n}\n\nexport const encode = (arraybuffer: ArrayBuffer): string => {\n let bytes = new Uint8Array(arraybuffer),\n i,\n len = bytes.length,\n base64 = '';\n\n for (i = 0; i < len; i += 3) {\n base64 += chars[bytes[i] >> 2];\n base64 += chars[((bytes[i] & 3) << 4) | (bytes[i + 1] >> 4)];\n base64 += chars[((bytes[i + 1] & 15) << 2) | (bytes[i + 2] >> 6)];\n base64 += chars[bytes[i + 2] & 63];\n }\n\n if (len % 3 === 2) {\n base64 = base64.substring(0, base64.length - 1) + '=';\n } else if (len % 3 === 1) {\n base64 = base64.substring(0, base64.length - 2) + '==';\n }\n\n return base64;\n};\n\nexport const decode = (base64: string): ArrayBuffer => {\n let bufferLength = base64.length * 0.75,\n len = base64.length,\n i,\n p = 0,\n encoded1,\n encoded2,\n encoded3,\n encoded4;\n\n if (base64[base64.length - 1] === '=') {\n bufferLength--;\n if (base64[base64.length - 2] === '=') {\n bufferLength--;\n }\n }\n\n const arraybuffer = new ArrayBuffer(bufferLength),\n bytes = new Uint8Array(arraybuffer);\n\n for (i = 0; i < len; i += 4) {\n encoded1 = lookup[base64.charCodeAt(i)];\n encoded2 = lookup[base64.charCodeAt(i + 1)];\n encoded3 = lookup[base64.charCodeAt(i + 2)];\n encoded4 = lookup[base64.charCodeAt(i + 3)];\n\n bytes[p++] = (encoded1 << 2) | (encoded2 >> 4);\n bytes[p++] = ((encoded2 & 15) << 4) | (encoded3 >> 2);\n bytes[p++] = ((encoded3 & 3) << 6) | (encoded4 & 63);\n }\n\n return arraybuffer;\n};\n","'use strict'\n/* global fetch, btoa, Headers */\nconst core = require('./core')\n\nclass StatusError extends Error {\n constructor (res, ...params) {\n super(...params)\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, StatusError)\n }\n\n this.name = 'StatusError'\n this.message = res.statusMessage\n this.statusCode = res.status\n this.res = res\n this.json = res.json.bind(res)\n this.text = res.text.bind(res)\n this.arrayBuffer = res.arrayBuffer.bind(res)\n let buffer\n const get = () => {\n if (!buffer) buffer = this.arrayBuffer()\n return buffer\n }\n Object.defineProperty(this, 'responseBody', { get })\n // match Node.js headers object\n this.headers = {}\n for (const [key, value] of res.headers.entries()) {\n this.headers[key.toLowerCase()] = value\n }\n }\n}\n\nconst mkrequest = (statusCodes, method, encoding, headers, baseurl) => async (_url, body, _headers = {}) => {\n _url = baseurl + (_url || '')\n let parsed = new URL(_url)\n\n if (!headers) headers = {}\n if (parsed.username) {\n headers.Authorization = 'Basic ' + btoa(parsed.username + ':' + parsed.password)\n parsed = new URL(parsed.protocol + '//' + parsed.host + parsed.pathname + parsed.search)\n }\n if (parsed.protocol !== 'https:' && parsed.protocol !== 'http:') {\n throw new Error(`Unknown protocol, ${parsed.protocol}`)\n }\n\n if (body) {\n if (body instanceof ArrayBuffer ||\n ArrayBuffer.isView(body) ||\n typeof body === 'string'\n ) {\n // noop\n } else if (typeof body === 'object') {\n body = JSON.stringify(body)\n headers['Content-Type'] = 'application/json'\n } else {\n throw new Error('Unknown body type.')\n }\n }\n\n _headers = new Headers({ ...(headers || {}), ..._headers })\n\n const resp = await fetch(parsed, { method, headers: _headers, body })\n resp.statusCode = resp.status\n\n if (!statusCodes.has(resp.status)) {\n throw new StatusError(resp)\n }\n\n if (encoding === 'json') return resp.json()\n else if (encoding === 'buffer') return resp.arrayBuffer()\n else if (encoding === 'string') return resp.text()\n else return resp\n}\n\nmodule.exports = core(mkrequest)\n","'use strict'\nconst encodings = new Set(['json', 'buffer', 'string'])\n\nmodule.exports = mkrequest => (...args) => {\n const statusCodes = new Set()\n let method\n let encoding\n let headers\n let baseurl = ''\n\n args.forEach(arg => {\n if (typeof arg === 'string') {\n if (arg.toUpperCase() === arg) {\n if (method) {\n const msg = `Can't set method to ${arg}, already set to ${method}.`\n throw new Error(msg)\n } else {\n method = arg\n }\n } else if (arg.startsWith('http:') || arg.startsWith('https:')) {\n baseurl = arg\n } else {\n if (encodings.has(arg)) {\n encoding = arg\n } else {\n throw new Error(`Unknown encoding, ${arg}`)\n }\n }\n } else if (typeof arg === 'number') {\n statusCodes.add(arg)\n } else if (typeof arg === 'object') {\n if (Array.isArray(arg) || arg instanceof Set) {\n arg.forEach(code => statusCodes.add(code))\n } else {\n if (headers) {\n throw new Error('Cannot set headers twice.')\n }\n headers = arg\n }\n } else {\n throw new Error(`Unknown type: ${typeof arg}`)\n }\n })\n\n if (!method) method = 'GET'\n if (statusCodes.size === 0) {\n statusCodes.add(200)\n }\n\n return mkrequest(statusCodes, method, encoding, headers, baseurl)\n}\n","require('../../modules/es.aggregate-error');\nrequire('../../modules/es.array.iterator');\nrequire('../../modules/es.object.to-string');\nrequire('../../modules/es.promise');\nrequire('../../modules/es.promise.all-settled');\nrequire('../../modules/es.promise.any');\nrequire('../../modules/es.promise.finally');\nrequire('../../modules/es.string.iterator');\nvar path = require('../../internals/path');\n\nmodule.exports = path.Promise;\n","var isCallable = require('../internals/is-callable');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsCallable(argument) is true`\nmodule.exports = function (argument) {\n if (isCallable(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a function');\n};\n","var isConstructor = require('../internals/is-constructor');\nvar tryToString = require('../internals/try-to-string');\n\nvar $TypeError = TypeError;\n\n// `Assert: IsConstructor(argument) is true`\nmodule.exports = function (argument) {\n if (isConstructor(argument)) return argument;\n throw $TypeError(tryToString(argument) + ' is not a constructor');\n};\n","var isCallable = require('../internals/is-callable');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument) {\n if (typeof argument == 'object' || isCallable(argument)) return argument;\n throw $TypeError(\"Can't set \" + $String(argument) + ' as a prototype');\n};\n","module.exports = function () { /* empty */ };\n","var isPrototypeOf = require('../internals/object-is-prototype-of');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (it, Prototype) {\n if (isPrototypeOf(Prototype, it)) return it;\n throw $TypeError('Incorrect invocation');\n};\n","var isObject = require('../internals/is-object');\n\nvar $String = String;\nvar $TypeError = TypeError;\n\n// `Assert: Type(argument) is Object`\nmodule.exports = function (argument) {\n if (isObject(argument)) return argument;\n throw $TypeError($String(argument) + ' is not an object');\n};\n","var toIndexedObject = require('../internals/to-indexed-object');\nvar toAbsoluteIndex = require('../internals/to-absolute-index');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\n\n// `Array.prototype.{ indexOf, includes }` methods implementation\nvar createMethod = function (IS_INCLUDES) {\n return function ($this, el, fromIndex) {\n var O = toIndexedObject($this);\n var length = lengthOfArrayLike(O);\n var index = toAbsoluteIndex(fromIndex, length);\n var value;\n // Array#includes uses SameValueZero equality algorithm\n // eslint-disable-next-line no-self-compare -- NaN check\n if (IS_INCLUDES && el != el) while (length > index) {\n value = O[index++];\n // eslint-disable-next-line no-self-compare -- NaN check\n if (value != value) return true;\n // Array#indexOf ignores holes, Array#includes - not\n } else for (;length > index; index++) {\n if ((IS_INCLUDES || index in O) && O[index] === el) return IS_INCLUDES || index || 0;\n } return !IS_INCLUDES && -1;\n };\n};\n\nmodule.exports = {\n // `Array.prototype.includes` method\n // https://tc39.es/ecma262/#sec-array.prototype.includes\n includes: createMethod(true),\n // `Array.prototype.indexOf` method\n // https://tc39.es/ecma262/#sec-array.prototype.indexof\n indexOf: createMethod(false)\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis([].slice);\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar SAFE_CLOSING = false;\n\ntry {\n var called = 0;\n var iteratorWithReturn = {\n next: function () {\n return { done: !!called++ };\n },\n 'return': function () {\n SAFE_CLOSING = true;\n }\n };\n iteratorWithReturn[ITERATOR] = function () {\n return this;\n };\n // eslint-disable-next-line es/no-array-from, no-throw-literal -- required for testing\n Array.from(iteratorWithReturn, function () { throw 2; });\n} catch (error) { /* empty */ }\n\nmodule.exports = function (exec, SKIP_CLOSING) {\n if (!SKIP_CLOSING && !SAFE_CLOSING) return false;\n var ITERATION_SUPPORT = false;\n try {\n var object = {};\n object[ITERATOR] = function () {\n return {\n next: function () {\n return { done: ITERATION_SUPPORT = true };\n }\n };\n };\n exec(object);\n } catch (error) { /* empty */ }\n return ITERATION_SUPPORT;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar toString = uncurryThis({}.toString);\nvar stringSlice = uncurryThis(''.slice);\n\nmodule.exports = function (it) {\n return stringSlice(toString(it), 8, -1);\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar isCallable = require('../internals/is-callable');\nvar classofRaw = require('../internals/classof-raw');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Object = Object;\n\n// ES3 wrong here\nvar CORRECT_ARGUMENTS = classofRaw(function () { return arguments; }()) == 'Arguments';\n\n// fallback for IE11 Script Access Denied error\nvar tryGet = function (it, key) {\n try {\n return it[key];\n } catch (error) { /* empty */ }\n};\n\n// getting tag from ES6+ `Object.prototype.toString`\nmodule.exports = TO_STRING_TAG_SUPPORT ? classofRaw : function (it) {\n var O, tag, result;\n return it === undefined ? 'Undefined' : it === null ? 'Null'\n // @@toStringTag case\n : typeof (tag = tryGet(O = $Object(it), TO_STRING_TAG)) == 'string' ? tag\n // builtinTag case\n : CORRECT_ARGUMENTS ? classofRaw(O)\n // ES3 arguments fallback\n : (result = classofRaw(O)) == 'Object' && isCallable(O.callee) ? 'Arguments' : result;\n};\n","var hasOwn = require('../internals/has-own-property');\nvar ownKeys = require('../internals/own-keys');\nvar getOwnPropertyDescriptorModule = require('../internals/object-get-own-property-descriptor');\nvar definePropertyModule = require('../internals/object-define-property');\n\nmodule.exports = function (target, source, exceptions) {\n var keys = ownKeys(source);\n var defineProperty = definePropertyModule.f;\n var getOwnPropertyDescriptor = getOwnPropertyDescriptorModule.f;\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n if (!hasOwn(target, key) && !(exceptions && hasOwn(exceptions, key))) {\n defineProperty(target, key, getOwnPropertyDescriptor(source, key));\n }\n }\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n function F() { /* empty */ }\n F.prototype.constructor = null;\n // eslint-disable-next-line es/no-object-getprototypeof -- required for testing\n return Object.getPrototypeOf(new F()) !== F.prototype;\n});\n","// `CreateIterResultObject` abstract operation\n// https://tc39.es/ecma262/#sec-createiterresultobject\nmodule.exports = function (value, done) {\n return { value: value, done: done };\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar definePropertyModule = require('../internals/object-define-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = DESCRIPTORS ? function (object, key, value) {\n return definePropertyModule.f(object, key, createPropertyDescriptor(1, value));\n} : function (object, key, value) {\n object[key] = value;\n return object;\n};\n","module.exports = function (bitmap, value) {\n return {\n enumerable: !(bitmap & 1),\n configurable: !(bitmap & 2),\n writable: !(bitmap & 4),\n value: value\n };\n};\n","var defineProperty = require('../internals/object-define-property');\n\nmodule.exports = function (target, name, descriptor) {\n return defineProperty.f(target, name, descriptor);\n};\n","var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\nmodule.exports = function (target, key, value, options) {\n if (options && options.enumerable) target[key] = value;\n else createNonEnumerableProperty(target, key, value);\n return target;\n};\n","var global = require('../internals/global');\n\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar defineProperty = Object.defineProperty;\n\nmodule.exports = function (key, value) {\n try {\n defineProperty(global, key, { value: value, configurable: true, writable: true });\n } catch (error) {\n global[key] = value;\n } return value;\n};\n","var fails = require('../internals/fails');\n\n// Detect IE8's incomplete defineProperty implementation\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty({}, 1, { get: function () { return 7; } })[1] != 7;\n});\n","var documentAll = typeof document == 'object' && document.all;\n\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot\n// eslint-disable-next-line unicorn/no-typeof-undefined -- required for testing\nvar IS_HTMLDDA = typeof documentAll == 'undefined' && documentAll !== undefined;\n\nmodule.exports = {\n all: documentAll,\n IS_HTMLDDA: IS_HTMLDDA\n};\n","var global = require('../internals/global');\nvar isObject = require('../internals/is-object');\n\nvar document = global.document;\n// typeof document.createElement is 'object' in old IE\nvar EXISTS = isObject(document) && isObject(document.createElement);\n\nmodule.exports = function (it) {\n return EXISTS ? document.createElement(it) : {};\n};\n","// iterable DOM collections\n// flag - `iterable` interface - 'entries', 'keys', 'values', 'forEach' methods\nmodule.exports = {\n CSSRuleList: 0,\n CSSStyleDeclaration: 0,\n CSSValueList: 0,\n ClientRectList: 0,\n DOMRectList: 0,\n DOMStringList: 0,\n DOMTokenList: 1,\n DataTransferItemList: 0,\n FileList: 0,\n HTMLAllCollection: 0,\n HTMLCollection: 0,\n HTMLFormElement: 0,\n HTMLSelectElement: 0,\n MediaList: 0,\n MimeTypeArray: 0,\n NamedNodeMap: 0,\n NodeList: 1,\n PaintRequestList: 0,\n Plugin: 0,\n PluginArray: 0,\n SVGLengthList: 0,\n SVGNumberList: 0,\n SVGPathSegList: 0,\n SVGPointList: 0,\n SVGStringList: 0,\n SVGTransformList: 0,\n SourceBufferList: 0,\n StyleSheetList: 0,\n TextTrackCueList: 0,\n TextTrackList: 0,\n TouchList: 0\n};\n","var IS_DENO = require('../internals/engine-is-deno');\nvar IS_NODE = require('../internals/engine-is-node');\n\nmodule.exports = !IS_DENO && !IS_NODE\n && typeof window == 'object'\n && typeof document == 'object';\n","/* global Deno -- Deno case */\nmodule.exports = typeof Deno == 'object' && Deno && typeof Deno.version == 'object';\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /ipad|iphone|ipod/i.test(userAgent) && typeof Pebble != 'undefined';\n","var userAgent = require('../internals/engine-user-agent');\n\n// eslint-disable-next-line redos/no-vulnerable -- safe\nmodule.exports = /(?:ipad|iphone|ipod).*applewebkit/i.test(userAgent);\n","var classof = require('../internals/classof-raw');\n\nmodule.exports = typeof process != 'undefined' && classof(process) == 'process';\n","var userAgent = require('../internals/engine-user-agent');\n\nmodule.exports = /web0s(?!.*chrome)/i.test(userAgent);\n","module.exports = typeof navigator != 'undefined' && String(navigator.userAgent) || '';\n","var global = require('../internals/global');\nvar userAgent = require('../internals/engine-user-agent');\n\nvar process = global.process;\nvar Deno = global.Deno;\nvar versions = process && process.versions || Deno && Deno.version;\nvar v8 = versions && versions.v8;\nvar match, version;\n\nif (v8) {\n match = v8.split('.');\n // in old Chrome, versions of V8 isn't V8 = Chrome / 10\n // but their correct versions are not interesting for us\n version = match[0] > 0 && match[0] < 4 ? 1 : +(match[0] + match[1]);\n}\n\n// BrowserFS NodeJS `process` polyfill incorrectly set `.v8` to `0.0`\n// so check `userAgent` even if `.v8` exists, but 0\nif (!version && userAgent) {\n match = userAgent.match(/Edge\\/(\\d+)/);\n if (!match || match[1] >= 74) {\n match = userAgent.match(/Chrome\\/(\\d+)/);\n if (match) version = +match[1];\n }\n}\n\nmodule.exports = version;\n","// IE8- don't enum bug keys\nmodule.exports = [\n 'constructor',\n 'hasOwnProperty',\n 'isPrototypeOf',\n 'propertyIsEnumerable',\n 'toLocaleString',\n 'toString',\n 'valueOf'\n];\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar $Error = Error;\nvar replace = uncurryThis(''.replace);\n\nvar TEST = (function (arg) { return String($Error(arg).stack); })('zxcasd');\n// eslint-disable-next-line redos/no-vulnerable -- safe\nvar V8_OR_CHAKRA_STACK_ENTRY = /\\n\\s*at [^:]*:[^\\n]*/;\nvar IS_V8_OR_CHAKRA_STACK = V8_OR_CHAKRA_STACK_ENTRY.test(TEST);\n\nmodule.exports = function (stack, dropEntries) {\n if (IS_V8_OR_CHAKRA_STACK && typeof stack == 'string' && !$Error.prepareStackTrace) {\n while (dropEntries--) stack = replace(stack, V8_OR_CHAKRA_STACK_ENTRY, '');\n } return stack;\n};\n","var createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar clearErrorStack = require('../internals/error-stack-clear');\nvar ERROR_STACK_INSTALLABLE = require('../internals/error-stack-installable');\n\n// non-standard V8\nvar captureStackTrace = Error.captureStackTrace;\n\nmodule.exports = function (error, C, stack, dropEntries) {\n if (ERROR_STACK_INSTALLABLE) {\n if (captureStackTrace) captureStackTrace(error, C);\n else createNonEnumerableProperty(error, 'stack', clearErrorStack(stack, dropEntries));\n }\n};\n","var fails = require('../internals/fails');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\n\nmodule.exports = !fails(function () {\n var error = Error('a');\n if (!('stack' in error)) return true;\n // eslint-disable-next-line es/no-object-defineproperty -- safe\n Object.defineProperty(error, 'stack', createPropertyDescriptor(1, 7));\n return error.stack !== 7;\n});\n","'use strict';\nvar global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar uncurryThis = require('../internals/function-uncurry-this-clause');\nvar isCallable = require('../internals/is-callable');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar isForced = require('../internals/is-forced');\nvar path = require('../internals/path');\nvar bind = require('../internals/function-bind-context');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\n\nvar wrapConstructor = function (NativeConstructor) {\n var Wrapper = function (a, b, c) {\n if (this instanceof Wrapper) {\n switch (arguments.length) {\n case 0: return new NativeConstructor();\n case 1: return new NativeConstructor(a);\n case 2: return new NativeConstructor(a, b);\n } return new NativeConstructor(a, b, c);\n } return apply(NativeConstructor, this, arguments);\n };\n Wrapper.prototype = NativeConstructor.prototype;\n return Wrapper;\n};\n\n/*\n options.target - name of the target object\n options.global - target is the global object\n options.stat - export as static methods of target\n options.proto - export as prototype methods of target\n options.real - real prototype method for the `pure` version\n options.forced - export even if the native feature is available\n options.bind - bind methods to the target, required for the `pure` version\n options.wrap - wrap constructors to preventing global pollution, required for the `pure` version\n options.unsafe - use the simple assignment of property instead of delete + defineProperty\n options.sham - add a flag to not completely full polyfills\n options.enumerable - export as enumerable property\n options.dontCallGetSet - prevent calling a getter on target\n options.name - the .name of the function if it does not match the key\n*/\nmodule.exports = function (options, source) {\n var TARGET = options.target;\n var GLOBAL = options.global;\n var STATIC = options.stat;\n var PROTO = options.proto;\n\n var nativeSource = GLOBAL ? global : STATIC ? global[TARGET] : (global[TARGET] || {}).prototype;\n\n var target = GLOBAL ? path : path[TARGET] || createNonEnumerableProperty(path, TARGET, {})[TARGET];\n var targetPrototype = target.prototype;\n\n var FORCED, USE_NATIVE, VIRTUAL_PROTOTYPE;\n var key, sourceProperty, targetProperty, nativeProperty, resultProperty, descriptor;\n\n for (key in source) {\n FORCED = isForced(GLOBAL ? key : TARGET + (STATIC ? '.' : '#') + key, options.forced);\n // contains in native\n USE_NATIVE = !FORCED && nativeSource && hasOwn(nativeSource, key);\n\n targetProperty = target[key];\n\n if (USE_NATIVE) if (options.dontCallGetSet) {\n descriptor = getOwnPropertyDescriptor(nativeSource, key);\n nativeProperty = descriptor && descriptor.value;\n } else nativeProperty = nativeSource[key];\n\n // export native or implementation\n sourceProperty = (USE_NATIVE && nativeProperty) ? nativeProperty : source[key];\n\n if (USE_NATIVE && typeof targetProperty == typeof sourceProperty) continue;\n\n // bind methods to global for calling from export context\n if (options.bind && USE_NATIVE) resultProperty = bind(sourceProperty, global);\n // wrap global constructors for prevent changes in this version\n else if (options.wrap && USE_NATIVE) resultProperty = wrapConstructor(sourceProperty);\n // make static versions for prototype methods\n else if (PROTO && isCallable(sourceProperty)) resultProperty = uncurryThis(sourceProperty);\n // default case\n else resultProperty = sourceProperty;\n\n // add a flag to not completely full polyfills\n if (options.sham || (sourceProperty && sourceProperty.sham) || (targetProperty && targetProperty.sham)) {\n createNonEnumerableProperty(resultProperty, 'sham', true);\n }\n\n createNonEnumerableProperty(target, key, resultProperty);\n\n if (PROTO) {\n VIRTUAL_PROTOTYPE = TARGET + 'Prototype';\n if (!hasOwn(path, VIRTUAL_PROTOTYPE)) {\n createNonEnumerableProperty(path, VIRTUAL_PROTOTYPE, {});\n }\n // export virtual prototype methods\n createNonEnumerableProperty(path[VIRTUAL_PROTOTYPE], key, sourceProperty);\n // export real prototype methods\n if (options.real && targetPrototype && (FORCED || !targetPrototype[key])) {\n createNonEnumerableProperty(targetPrototype, key, sourceProperty);\n }\n }\n }\n};\n","module.exports = function (exec) {\n try {\n return !!exec();\n } catch (error) {\n return true;\n }\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar apply = FunctionPrototype.apply;\nvar call = FunctionPrototype.call;\n\n// eslint-disable-next-line es/no-reflect -- safe\nmodule.exports = typeof Reflect == 'object' && Reflect.apply || (NATIVE_BIND ? call.bind(apply) : function () {\n return call.apply(apply, arguments);\n});\n","var uncurryThis = require('../internals/function-uncurry-this-clause');\nvar aCallable = require('../internals/a-callable');\nvar NATIVE_BIND = require('../internals/function-bind-native');\n\nvar bind = uncurryThis(uncurryThis.bind);\n\n// optional / simple context binding\nmodule.exports = function (fn, that) {\n aCallable(fn);\n return that === undefined ? fn : NATIVE_BIND ? bind(fn, that) : function (/* ...args */) {\n return fn.apply(that, arguments);\n };\n};\n","var fails = require('../internals/fails');\n\nmodule.exports = !fails(function () {\n // eslint-disable-next-line es/no-function-prototype-bind -- safe\n var test = (function () { /* empty */ }).bind();\n // eslint-disable-next-line no-prototype-builtins -- safe\n return typeof test != 'function' || test.hasOwnProperty('prototype');\n});\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar call = Function.prototype.call;\n\nmodule.exports = NATIVE_BIND ? call.bind(call) : function () {\n return call.apply(call, arguments);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar hasOwn = require('../internals/has-own-property');\n\nvar FunctionPrototype = Function.prototype;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getDescriptor = DESCRIPTORS && Object.getOwnPropertyDescriptor;\n\nvar EXISTS = hasOwn(FunctionPrototype, 'name');\n// additional protection from minified / mangled / dropped function names\nvar PROPER = EXISTS && (function something() { /* empty */ }).name === 'something';\nvar CONFIGURABLE = EXISTS && (!DESCRIPTORS || (DESCRIPTORS && getDescriptor(FunctionPrototype, 'name').configurable));\n\nmodule.exports = {\n EXISTS: EXISTS,\n PROPER: PROPER,\n CONFIGURABLE: CONFIGURABLE\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar aCallable = require('../internals/a-callable');\n\nmodule.exports = function (object, key, method) {\n try {\n // eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\n return uncurryThis(aCallable(Object.getOwnPropertyDescriptor(object, key)[method]));\n } catch (error) { /* empty */ }\n};\n","var classofRaw = require('../internals/classof-raw');\nvar uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = function (fn) {\n // Nashorn bug:\n // https://github.com/zloirock/core-js/issues/1128\n // https://github.com/zloirock/core-js/issues/1130\n if (classofRaw(fn) === 'Function') return uncurryThis(fn);\n};\n","var NATIVE_BIND = require('../internals/function-bind-native');\n\nvar FunctionPrototype = Function.prototype;\nvar call = FunctionPrototype.call;\nvar uncurryThisWithBind = NATIVE_BIND && FunctionPrototype.bind.bind(call, call);\n\nmodule.exports = NATIVE_BIND ? uncurryThisWithBind : function (fn) {\n return function () {\n return call.apply(fn, arguments);\n };\n};\n","var path = require('../internals/path');\nvar global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar aFunction = function (variable) {\n return isCallable(variable) ? variable : undefined;\n};\n\nmodule.exports = function (namespace, method) {\n return arguments.length < 2 ? aFunction(path[namespace]) || aFunction(global[namespace])\n : path[namespace] && path[namespace][method] || global[namespace] && global[namespace][method];\n};\n","var classof = require('../internals/classof');\nvar getMethod = require('../internals/get-method');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar ITERATOR = wellKnownSymbol('iterator');\n\nmodule.exports = function (it) {\n if (!isNullOrUndefined(it)) return getMethod(it, ITERATOR)\n || getMethod(it, '@@iterator')\n || Iterators[classof(it)];\n};\n","var call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar getIteratorMethod = require('../internals/get-iterator-method');\n\nvar $TypeError = TypeError;\n\nmodule.exports = function (argument, usingIterator) {\n var iteratorMethod = arguments.length < 2 ? getIteratorMethod(argument) : usingIterator;\n if (aCallable(iteratorMethod)) return anObject(call(iteratorMethod, argument));\n throw $TypeError(tryToString(argument) + ' is not iterable');\n};\n","var aCallable = require('../internals/a-callable');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\n\n// `GetMethod` abstract operation\n// https://tc39.es/ecma262/#sec-getmethod\nmodule.exports = function (V, P) {\n var func = V[P];\n return isNullOrUndefined(func) ? undefined : aCallable(func);\n};\n","var check = function (it) {\n return it && it.Math == Math && it;\n};\n\n// https://github.com/zloirock/core-js/issues/86#issuecomment-115759028\nmodule.exports =\n // eslint-disable-next-line es/no-global-this -- safe\n check(typeof globalThis == 'object' && globalThis) ||\n check(typeof window == 'object' && window) ||\n // eslint-disable-next-line no-restricted-globals -- safe\n check(typeof self == 'object' && self) ||\n check(typeof global == 'object' && global) ||\n // eslint-disable-next-line no-new-func -- fallback\n (function () { return this; })() || Function('return this')();\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toObject = require('../internals/to-object');\n\nvar hasOwnProperty = uncurryThis({}.hasOwnProperty);\n\n// `HasOwnProperty` abstract operation\n// https://tc39.es/ecma262/#sec-hasownproperty\n// eslint-disable-next-line es/no-object-hasown -- safe\nmodule.exports = Object.hasOwn || function hasOwn(it, key) {\n return hasOwnProperty(toObject(it), key);\n};\n","module.exports = {};\n","module.exports = function (a, b) {\n try {\n // eslint-disable-next-line no-console -- safe\n arguments.length == 1 ? console.error(a) : console.error(a, b);\n } catch (error) { /* empty */ }\n};\n","var getBuiltIn = require('../internals/get-built-in');\n\nmodule.exports = getBuiltIn('document', 'documentElement');\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\nvar createElement = require('../internals/document-create-element');\n\n// Thanks to IE8 for its funny defineProperty\nmodule.exports = !DESCRIPTORS && !fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(createElement('div'), 'a', {\n get: function () { return 7; }\n }).a != 7;\n});\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar classof = require('../internals/classof-raw');\n\nvar $Object = Object;\nvar split = uncurryThis(''.split);\n\n// fallback for non-array-like ES3 and non-enumerable old V8 strings\nmodule.exports = fails(function () {\n // throws an error in rhino, see https://github.com/mozilla/rhino/issues/346\n // eslint-disable-next-line no-prototype-builtins -- safe\n return !$Object('z').propertyIsEnumerable(0);\n}) ? function (it) {\n return classof(it) == 'String' ? split(it, '') : $Object(it);\n} : $Object;\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar isCallable = require('../internals/is-callable');\nvar store = require('../internals/shared-store');\n\nvar functionToString = uncurryThis(Function.toString);\n\n// this helper broken in `core-js@3.4.1-3.4.4`, so we can't use `shared` helper\nif (!isCallable(store.inspectSource)) {\n store.inspectSource = function (it) {\n return functionToString(it);\n };\n}\n\nmodule.exports = store.inspectSource;\n","var isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\n\n// `InstallErrorCause` abstract operation\n// https://tc39.es/proposal-error-cause/#sec-errorobjects-install-error-cause\nmodule.exports = function (O, options) {\n if (isObject(options) && 'cause' in options) {\n createNonEnumerableProperty(O, 'cause', options.cause);\n }\n};\n","var NATIVE_WEAK_MAP = require('../internals/weak-map-basic-detection');\nvar global = require('../internals/global');\nvar isObject = require('../internals/is-object');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar shared = require('../internals/shared-store');\nvar sharedKey = require('../internals/shared-key');\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar OBJECT_ALREADY_INITIALIZED = 'Object already initialized';\nvar TypeError = global.TypeError;\nvar WeakMap = global.WeakMap;\nvar set, get, has;\n\nvar enforce = function (it) {\n return has(it) ? get(it) : set(it, {});\n};\n\nvar getterFor = function (TYPE) {\n return function (it) {\n var state;\n if (!isObject(it) || (state = get(it)).type !== TYPE) {\n throw TypeError('Incompatible receiver, ' + TYPE + ' required');\n } return state;\n };\n};\n\nif (NATIVE_WEAK_MAP || shared.state) {\n var store = shared.state || (shared.state = new WeakMap());\n /* eslint-disable no-self-assign -- prototype methods protection */\n store.get = store.get;\n store.has = store.has;\n store.set = store.set;\n /* eslint-enable no-self-assign -- prototype methods protection */\n set = function (it, metadata) {\n if (store.has(it)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n store.set(it, metadata);\n return metadata;\n };\n get = function (it) {\n return store.get(it) || {};\n };\n has = function (it) {\n return store.has(it);\n };\n} else {\n var STATE = sharedKey('state');\n hiddenKeys[STATE] = true;\n set = function (it, metadata) {\n if (hasOwn(it, STATE)) throw TypeError(OBJECT_ALREADY_INITIALIZED);\n metadata.facade = it;\n createNonEnumerableProperty(it, STATE, metadata);\n return metadata;\n };\n get = function (it) {\n return hasOwn(it, STATE) ? it[STATE] : {};\n };\n has = function (it) {\n return hasOwn(it, STATE);\n };\n}\n\nmodule.exports = {\n set: set,\n get: get,\n has: has,\n enforce: enforce,\n getterFor: getterFor\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar ArrayPrototype = Array.prototype;\n\n// check on default Array iterator\nmodule.exports = function (it) {\n return it !== undefined && (Iterators.Array === it || ArrayPrototype[ITERATOR] === it);\n};\n","var $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\n// `IsCallable` abstract operation\n// https://tc39.es/ecma262/#sec-iscallable\nmodule.exports = $documentAll.IS_HTMLDDA ? function (argument) {\n return typeof argument == 'function' || argument === documentAll;\n} : function (argument) {\n return typeof argument == 'function';\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar classof = require('../internals/classof');\nvar getBuiltIn = require('../internals/get-built-in');\nvar inspectSource = require('../internals/inspect-source');\n\nvar noop = function () { /* empty */ };\nvar empty = [];\nvar construct = getBuiltIn('Reflect', 'construct');\nvar constructorRegExp = /^\\s*(?:class|function)\\b/;\nvar exec = uncurryThis(constructorRegExp.exec);\nvar INCORRECT_TO_STRING = !constructorRegExp.exec(noop);\n\nvar isConstructorModern = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n try {\n construct(noop, empty, argument);\n return true;\n } catch (error) {\n return false;\n }\n};\n\nvar isConstructorLegacy = function isConstructor(argument) {\n if (!isCallable(argument)) return false;\n switch (classof(argument)) {\n case 'AsyncFunction':\n case 'GeneratorFunction':\n case 'AsyncGeneratorFunction': return false;\n }\n try {\n // we can't check .prototype since constructors produced by .bind haven't it\n // `Function#toString` throws on some built-it function in some legacy engines\n // (for example, `DOMQuad` and similar in FF41-)\n return INCORRECT_TO_STRING || !!exec(constructorRegExp, inspectSource(argument));\n } catch (error) {\n return true;\n }\n};\n\nisConstructorLegacy.sham = true;\n\n// `IsConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-isconstructor\nmodule.exports = !construct || fails(function () {\n var called;\n return isConstructorModern(isConstructorModern.call)\n || !isConstructorModern(Object)\n || !isConstructorModern(function () { called = true; })\n || called;\n}) ? isConstructorLegacy : isConstructorModern;\n","var fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\n\nvar replacement = /#|\\.prototype\\./;\n\nvar isForced = function (feature, detection) {\n var value = data[normalize(feature)];\n return value == POLYFILL ? true\n : value == NATIVE ? false\n : isCallable(detection) ? fails(detection)\n : !!detection;\n};\n\nvar normalize = isForced.normalize = function (string) {\n return String(string).replace(replacement, '.').toLowerCase();\n};\n\nvar data = isForced.data = {};\nvar NATIVE = isForced.NATIVE = 'N';\nvar POLYFILL = isForced.POLYFILL = 'P';\n\nmodule.exports = isForced;\n","// we can't use just `it == null` since of `document.all` special case\n// https://tc39.es/ecma262/#sec-IsHTMLDDA-internal-slot-aec\nmodule.exports = function (it) {\n return it === null || it === undefined;\n};\n","var isCallable = require('../internals/is-callable');\nvar $documentAll = require('../internals/document-all');\n\nvar documentAll = $documentAll.all;\n\nmodule.exports = $documentAll.IS_HTMLDDA ? function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it) || it === documentAll;\n} : function (it) {\n return typeof it == 'object' ? it !== null : isCallable(it);\n};\n","module.exports = true;\n","var getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar $Object = Object;\n\nmodule.exports = USE_SYMBOL_AS_UID ? function (it) {\n return typeof it == 'symbol';\n} : function (it) {\n var $Symbol = getBuiltIn('Symbol');\n return isCallable($Symbol) && isPrototypeOf($Symbol.prototype, $Object(it));\n};\n","var bind = require('../internals/function-bind-context');\nvar call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar tryToString = require('../internals/try-to-string');\nvar isArrayIteratorMethod = require('../internals/is-array-iterator-method');\nvar lengthOfArrayLike = require('../internals/length-of-array-like');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getIterator = require('../internals/get-iterator');\nvar getIteratorMethod = require('../internals/get-iterator-method');\nvar iteratorClose = require('../internals/iterator-close');\n\nvar $TypeError = TypeError;\n\nvar Result = function (stopped, result) {\n this.stopped = stopped;\n this.result = result;\n};\n\nvar ResultPrototype = Result.prototype;\n\nmodule.exports = function (iterable, unboundFunction, options) {\n var that = options && options.that;\n var AS_ENTRIES = !!(options && options.AS_ENTRIES);\n var IS_RECORD = !!(options && options.IS_RECORD);\n var IS_ITERATOR = !!(options && options.IS_ITERATOR);\n var INTERRUPTED = !!(options && options.INTERRUPTED);\n var fn = bind(unboundFunction, that);\n var iterator, iterFn, index, length, result, next, step;\n\n var stop = function (condition) {\n if (iterator) iteratorClose(iterator, 'normal', condition);\n return new Result(true, condition);\n };\n\n var callFn = function (value) {\n if (AS_ENTRIES) {\n anObject(value);\n return INTERRUPTED ? fn(value[0], value[1], stop) : fn(value[0], value[1]);\n } return INTERRUPTED ? fn(value, stop) : fn(value);\n };\n\n if (IS_RECORD) {\n iterator = iterable.iterator;\n } else if (IS_ITERATOR) {\n iterator = iterable;\n } else {\n iterFn = getIteratorMethod(iterable);\n if (!iterFn) throw $TypeError(tryToString(iterable) + ' is not iterable');\n // optimisation for array iterators\n if (isArrayIteratorMethod(iterFn)) {\n for (index = 0, length = lengthOfArrayLike(iterable); length > index; index++) {\n result = callFn(iterable[index]);\n if (result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n }\n iterator = getIterator(iterable, iterFn);\n }\n\n next = IS_RECORD ? iterable.next : iterator.next;\n while (!(step = call(next, iterator)).done) {\n try {\n result = callFn(step.value);\n } catch (error) {\n iteratorClose(iterator, 'throw', error);\n }\n if (typeof result == 'object' && result && isPrototypeOf(ResultPrototype, result)) return result;\n } return new Result(false);\n};\n","var call = require('../internals/function-call');\nvar anObject = require('../internals/an-object');\nvar getMethod = require('../internals/get-method');\n\nmodule.exports = function (iterator, kind, value) {\n var innerResult, innerError;\n anObject(iterator);\n try {\n innerResult = getMethod(iterator, 'return');\n if (!innerResult) {\n if (kind === 'throw') throw value;\n return value;\n }\n innerResult = call(innerResult, iterator);\n } catch (error) {\n innerError = true;\n innerResult = error;\n }\n if (kind === 'throw') throw value;\n if (innerError) throw innerResult;\n anObject(innerResult);\n return value;\n};\n","'use strict';\nvar IteratorPrototype = require('../internals/iterators-core').IteratorPrototype;\nvar create = require('../internals/object-create');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar Iterators = require('../internals/iterators');\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (IteratorConstructor, NAME, next, ENUMERABLE_NEXT) {\n var TO_STRING_TAG = NAME + ' Iterator';\n IteratorConstructor.prototype = create(IteratorPrototype, { next: createPropertyDescriptor(+!ENUMERABLE_NEXT, next) });\n setToStringTag(IteratorConstructor, TO_STRING_TAG, false, true);\n Iterators[TO_STRING_TAG] = returnThis;\n return IteratorConstructor;\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar IS_PURE = require('../internals/is-pure');\nvar FunctionName = require('../internals/function-name');\nvar isCallable = require('../internals/is-callable');\nvar createIteratorConstructor = require('../internals/iterator-create-constructor');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar Iterators = require('../internals/iterators');\nvar IteratorsCore = require('../internals/iterators-core');\n\nvar PROPER_FUNCTION_NAME = FunctionName.PROPER;\nvar CONFIGURABLE_FUNCTION_NAME = FunctionName.CONFIGURABLE;\nvar IteratorPrototype = IteratorsCore.IteratorPrototype;\nvar BUGGY_SAFARI_ITERATORS = IteratorsCore.BUGGY_SAFARI_ITERATORS;\nvar ITERATOR = wellKnownSymbol('iterator');\nvar KEYS = 'keys';\nvar VALUES = 'values';\nvar ENTRIES = 'entries';\n\nvar returnThis = function () { return this; };\n\nmodule.exports = function (Iterable, NAME, IteratorConstructor, next, DEFAULT, IS_SET, FORCED) {\n createIteratorConstructor(IteratorConstructor, NAME, next);\n\n var getIterationMethod = function (KIND) {\n if (KIND === DEFAULT && defaultIterator) return defaultIterator;\n if (!BUGGY_SAFARI_ITERATORS && KIND in IterablePrototype) return IterablePrototype[KIND];\n switch (KIND) {\n case KEYS: return function keys() { return new IteratorConstructor(this, KIND); };\n case VALUES: return function values() { return new IteratorConstructor(this, KIND); };\n case ENTRIES: return function entries() { return new IteratorConstructor(this, KIND); };\n } return function () { return new IteratorConstructor(this); };\n };\n\n var TO_STRING_TAG = NAME + ' Iterator';\n var INCORRECT_VALUES_NAME = false;\n var IterablePrototype = Iterable.prototype;\n var nativeIterator = IterablePrototype[ITERATOR]\n || IterablePrototype['@@iterator']\n || DEFAULT && IterablePrototype[DEFAULT];\n var defaultIterator = !BUGGY_SAFARI_ITERATORS && nativeIterator || getIterationMethod(DEFAULT);\n var anyNativeIterator = NAME == 'Array' ? IterablePrototype.entries || nativeIterator : nativeIterator;\n var CurrentIteratorPrototype, methods, KEY;\n\n // fix native\n if (anyNativeIterator) {\n CurrentIteratorPrototype = getPrototypeOf(anyNativeIterator.call(new Iterable()));\n if (CurrentIteratorPrototype !== Object.prototype && CurrentIteratorPrototype.next) {\n if (!IS_PURE && getPrototypeOf(CurrentIteratorPrototype) !== IteratorPrototype) {\n if (setPrototypeOf) {\n setPrototypeOf(CurrentIteratorPrototype, IteratorPrototype);\n } else if (!isCallable(CurrentIteratorPrototype[ITERATOR])) {\n defineBuiltIn(CurrentIteratorPrototype, ITERATOR, returnThis);\n }\n }\n // Set @@toStringTag to native iterators\n setToStringTag(CurrentIteratorPrototype, TO_STRING_TAG, true, true);\n if (IS_PURE) Iterators[TO_STRING_TAG] = returnThis;\n }\n }\n\n // fix Array.prototype.{ values, @@iterator }.name in V8 / FF\n if (PROPER_FUNCTION_NAME && DEFAULT == VALUES && nativeIterator && nativeIterator.name !== VALUES) {\n if (!IS_PURE && CONFIGURABLE_FUNCTION_NAME) {\n createNonEnumerableProperty(IterablePrototype, 'name', VALUES);\n } else {\n INCORRECT_VALUES_NAME = true;\n defaultIterator = function values() { return call(nativeIterator, this); };\n }\n }\n\n // export additional methods\n if (DEFAULT) {\n methods = {\n values: getIterationMethod(VALUES),\n keys: IS_SET ? defaultIterator : getIterationMethod(KEYS),\n entries: getIterationMethod(ENTRIES)\n };\n if (FORCED) for (KEY in methods) {\n if (BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME || !(KEY in IterablePrototype)) {\n defineBuiltIn(IterablePrototype, KEY, methods[KEY]);\n }\n } else $({ target: NAME, proto: true, forced: BUGGY_SAFARI_ITERATORS || INCORRECT_VALUES_NAME }, methods);\n }\n\n // define iterator\n if ((!IS_PURE || FORCED) && IterablePrototype[ITERATOR] !== defaultIterator) {\n defineBuiltIn(IterablePrototype, ITERATOR, defaultIterator, { name: DEFAULT });\n }\n Iterators[NAME] = defaultIterator;\n\n return methods;\n};\n","'use strict';\nvar fails = require('../internals/fails');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar create = require('../internals/object-create');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_PURE = require('../internals/is-pure');\n\nvar ITERATOR = wellKnownSymbol('iterator');\nvar BUGGY_SAFARI_ITERATORS = false;\n\n// `%IteratorPrototype%` object\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-object\nvar IteratorPrototype, PrototypeOfArrayIteratorPrototype, arrayIterator;\n\n/* eslint-disable es/no-array-prototype-keys -- safe */\nif ([].keys) {\n arrayIterator = [].keys();\n // Safari 8 has buggy iterators w/o `next`\n if (!('next' in arrayIterator)) BUGGY_SAFARI_ITERATORS = true;\n else {\n PrototypeOfArrayIteratorPrototype = getPrototypeOf(getPrototypeOf(arrayIterator));\n if (PrototypeOfArrayIteratorPrototype !== Object.prototype) IteratorPrototype = PrototypeOfArrayIteratorPrototype;\n }\n}\n\nvar NEW_ITERATOR_PROTOTYPE = !isObject(IteratorPrototype) || fails(function () {\n var test = {};\n // FF44- legacy iterators case\n return IteratorPrototype[ITERATOR].call(test) !== test;\n});\n\nif (NEW_ITERATOR_PROTOTYPE) IteratorPrototype = {};\nelse if (IS_PURE) IteratorPrototype = create(IteratorPrototype);\n\n// `%IteratorPrototype%[@@iterator]()` method\n// https://tc39.es/ecma262/#sec-%iteratorprototype%-@@iterator\nif (!isCallable(IteratorPrototype[ITERATOR])) {\n defineBuiltIn(IteratorPrototype, ITERATOR, function () {\n return this;\n });\n}\n\nmodule.exports = {\n IteratorPrototype: IteratorPrototype,\n BUGGY_SAFARI_ITERATORS: BUGGY_SAFARI_ITERATORS\n};\n","module.exports = {};\n","var toLength = require('../internals/to-length');\n\n// `LengthOfArrayLike` abstract operation\n// https://tc39.es/ecma262/#sec-lengthofarraylike\nmodule.exports = function (obj) {\n return toLength(obj.length);\n};\n","var ceil = Math.ceil;\nvar floor = Math.floor;\n\n// `Math.trunc` method\n// https://tc39.es/ecma262/#sec-math.trunc\n// eslint-disable-next-line es/no-math-trunc -- safe\nmodule.exports = Math.trunc || function trunc(x) {\n var n = +x;\n return (n > 0 ? floor : ceil)(n);\n};\n","var global = require('../internals/global');\nvar bind = require('../internals/function-bind-context');\nvar getOwnPropertyDescriptor = require('../internals/object-get-own-property-descriptor').f;\nvar macrotask = require('../internals/task').set;\nvar Queue = require('../internals/queue');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_IOS_PEBBLE = require('../internals/engine-is-ios-pebble');\nvar IS_WEBOS_WEBKIT = require('../internals/engine-is-webos-webkit');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar MutationObserver = global.MutationObserver || global.WebKitMutationObserver;\nvar document = global.document;\nvar process = global.process;\nvar Promise = global.Promise;\n// Node.js 11 shows ExperimentalWarning on getting `queueMicrotask`\nvar queueMicrotaskDescriptor = getOwnPropertyDescriptor(global, 'queueMicrotask');\nvar microtask = queueMicrotaskDescriptor && queueMicrotaskDescriptor.value;\nvar notify, toggle, node, promise, then;\n\n// modern engines have queueMicrotask method\nif (!microtask) {\n var queue = new Queue();\n\n var flush = function () {\n var parent, fn;\n if (IS_NODE && (parent = process.domain)) parent.exit();\n while (fn = queue.get()) try {\n fn();\n } catch (error) {\n if (queue.head) notify();\n throw error;\n }\n if (parent) parent.enter();\n };\n\n // browsers with MutationObserver, except iOS - https://github.com/zloirock/core-js/issues/339\n // also except WebOS Webkit https://github.com/zloirock/core-js/issues/898\n if (!IS_IOS && !IS_NODE && !IS_WEBOS_WEBKIT && MutationObserver && document) {\n toggle = true;\n node = document.createTextNode('');\n new MutationObserver(flush).observe(node, { characterData: true });\n notify = function () {\n node.data = toggle = !toggle;\n };\n // environments with maybe non-completely correct, but existent Promise\n } else if (!IS_IOS_PEBBLE && Promise && Promise.resolve) {\n // Promise.resolve without an argument throws an error in LG WebOS 2\n promise = Promise.resolve(undefined);\n // workaround of WebKit ~ iOS Safari 10.1 bug\n promise.constructor = Promise;\n then = bind(promise.then, promise);\n notify = function () {\n then(flush);\n };\n // Node.js without promises\n } else if (IS_NODE) {\n notify = function () {\n process.nextTick(flush);\n };\n // for other environments - macrotask based on:\n // - setImmediate\n // - MessageChannel\n // - window.postMessage\n // - onreadystatechange\n // - setTimeout\n } else {\n // `webpack` dev server bug on IE global methods - use bind(fn, global)\n macrotask = bind(macrotask, global);\n notify = function () {\n macrotask(flush);\n };\n }\n\n microtask = function (fn) {\n if (!queue.head) notify();\n queue.add(fn);\n };\n}\n\nmodule.exports = microtask;\n","'use strict';\nvar aCallable = require('../internals/a-callable');\n\nvar $TypeError = TypeError;\n\nvar PromiseCapability = function (C) {\n var resolve, reject;\n this.promise = new C(function ($$resolve, $$reject) {\n if (resolve !== undefined || reject !== undefined) throw $TypeError('Bad Promise constructor');\n resolve = $$resolve;\n reject = $$reject;\n });\n this.resolve = aCallable(resolve);\n this.reject = aCallable(reject);\n};\n\n// `NewPromiseCapability` abstract operation\n// https://tc39.es/ecma262/#sec-newpromisecapability\nmodule.exports.f = function (C) {\n return new PromiseCapability(C);\n};\n","var toString = require('../internals/to-string');\n\nmodule.exports = function (argument, $default) {\n return argument === undefined ? arguments.length < 2 ? '' : $default : toString(argument);\n};\n","/* global ActiveXObject -- old IE, WSH */\nvar anObject = require('../internals/an-object');\nvar definePropertiesModule = require('../internals/object-define-properties');\nvar enumBugKeys = require('../internals/enum-bug-keys');\nvar hiddenKeys = require('../internals/hidden-keys');\nvar html = require('../internals/html');\nvar documentCreateElement = require('../internals/document-create-element');\nvar sharedKey = require('../internals/shared-key');\n\nvar GT = '>';\nvar LT = '<';\nvar PROTOTYPE = 'prototype';\nvar SCRIPT = 'script';\nvar IE_PROTO = sharedKey('IE_PROTO');\n\nvar EmptyConstructor = function () { /* empty */ };\n\nvar scriptTag = function (content) {\n return LT + SCRIPT + GT + content + LT + '/' + SCRIPT + GT;\n};\n\n// Create object with fake `null` prototype: use ActiveX Object with cleared prototype\nvar NullProtoObjectViaActiveX = function (activeXDocument) {\n activeXDocument.write(scriptTag(''));\n activeXDocument.close();\n var temp = activeXDocument.parentWindow.Object;\n activeXDocument = null; // avoid memory leak\n return temp;\n};\n\n// Create object with fake `null` prototype: use iframe Object with cleared prototype\nvar NullProtoObjectViaIFrame = function () {\n // Thrash, waste and sodomy: IE GC bug\n var iframe = documentCreateElement('iframe');\n var JS = 'java' + SCRIPT + ':';\n var iframeDocument;\n iframe.style.display = 'none';\n html.appendChild(iframe);\n // https://github.com/zloirock/core-js/issues/475\n iframe.src = String(JS);\n iframeDocument = iframe.contentWindow.document;\n iframeDocument.open();\n iframeDocument.write(scriptTag('document.F=Object'));\n iframeDocument.close();\n return iframeDocument.F;\n};\n\n// Check for document.domain and active x support\n// No need to use active x approach when document.domain is not set\n// see https://github.com/es-shims/es5-shim/issues/150\n// variation of https://github.com/kitcambridge/es5-shim/commit/4f738ac066346\n// avoid IE GC bug\nvar activeXDocument;\nvar NullProtoObject = function () {\n try {\n activeXDocument = new ActiveXObject('htmlfile');\n } catch (error) { /* ignore */ }\n NullProtoObject = typeof document != 'undefined'\n ? document.domain && activeXDocument\n ? NullProtoObjectViaActiveX(activeXDocument) // old IE\n : NullProtoObjectViaIFrame()\n : NullProtoObjectViaActiveX(activeXDocument); // WSH\n var length = enumBugKeys.length;\n while (length--) delete NullProtoObject[PROTOTYPE][enumBugKeys[length]];\n return NullProtoObject();\n};\n\nhiddenKeys[IE_PROTO] = true;\n\n// `Object.create` method\n// https://tc39.es/ecma262/#sec-object.create\n// eslint-disable-next-line es/no-object-create -- safe\nmodule.exports = Object.create || function create(O, Properties) {\n var result;\n if (O !== null) {\n EmptyConstructor[PROTOTYPE] = anObject(O);\n result = new EmptyConstructor();\n EmptyConstructor[PROTOTYPE] = null;\n // add \"__proto__\" for Object.getPrototypeOf polyfill\n result[IE_PROTO] = O;\n } else result = NullProtoObject();\n return Properties === undefined ? result : definePropertiesModule.f(result, Properties);\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar definePropertyModule = require('../internals/object-define-property');\nvar anObject = require('../internals/an-object');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar objectKeys = require('../internals/object-keys');\n\n// `Object.defineProperties` method\n// https://tc39.es/ecma262/#sec-object.defineproperties\n// eslint-disable-next-line es/no-object-defineproperties -- safe\nexports.f = DESCRIPTORS && !V8_PROTOTYPE_DEFINE_BUG ? Object.defineProperties : function defineProperties(O, Properties) {\n anObject(O);\n var props = toIndexedObject(Properties);\n var keys = objectKeys(Properties);\n var length = keys.length;\n var index = 0;\n var key;\n while (length > index) definePropertyModule.f(O, key = keys[index++], props[key]);\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\nvar V8_PROTOTYPE_DEFINE_BUG = require('../internals/v8-prototype-define-bug');\nvar anObject = require('../internals/an-object');\nvar toPropertyKey = require('../internals/to-property-key');\n\nvar $TypeError = TypeError;\n// eslint-disable-next-line es/no-object-defineproperty -- safe\nvar $defineProperty = Object.defineProperty;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar ENUMERABLE = 'enumerable';\nvar CONFIGURABLE = 'configurable';\nvar WRITABLE = 'writable';\n\n// `Object.defineProperty` method\n// https://tc39.es/ecma262/#sec-object.defineproperty\nexports.f = DESCRIPTORS ? V8_PROTOTYPE_DEFINE_BUG ? function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (typeof O === 'function' && P === 'prototype' && 'value' in Attributes && WRITABLE in Attributes && !Attributes[WRITABLE]) {\n var current = $getOwnPropertyDescriptor(O, P);\n if (current && current[WRITABLE]) {\n O[P] = Attributes.value;\n Attributes = {\n configurable: CONFIGURABLE in Attributes ? Attributes[CONFIGURABLE] : current[CONFIGURABLE],\n enumerable: ENUMERABLE in Attributes ? Attributes[ENUMERABLE] : current[ENUMERABLE],\n writable: false\n };\n }\n } return $defineProperty(O, P, Attributes);\n} : $defineProperty : function defineProperty(O, P, Attributes) {\n anObject(O);\n P = toPropertyKey(P);\n anObject(Attributes);\n if (IE8_DOM_DEFINE) try {\n return $defineProperty(O, P, Attributes);\n } catch (error) { /* empty */ }\n if ('get' in Attributes || 'set' in Attributes) throw $TypeError('Accessors not supported');\n if ('value' in Attributes) O[P] = Attributes.value;\n return O;\n};\n","var DESCRIPTORS = require('../internals/descriptors');\nvar call = require('../internals/function-call');\nvar propertyIsEnumerableModule = require('../internals/object-property-is-enumerable');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar toPropertyKey = require('../internals/to-property-key');\nvar hasOwn = require('../internals/has-own-property');\nvar IE8_DOM_DEFINE = require('../internals/ie8-dom-define');\n\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar $getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// `Object.getOwnPropertyDescriptor` method\n// https://tc39.es/ecma262/#sec-object.getownpropertydescriptor\nexports.f = DESCRIPTORS ? $getOwnPropertyDescriptor : function getOwnPropertyDescriptor(O, P) {\n O = toIndexedObject(O);\n P = toPropertyKey(P);\n if (IE8_DOM_DEFINE) try {\n return $getOwnPropertyDescriptor(O, P);\n } catch (error) { /* empty */ }\n if (hasOwn(O, P)) return createPropertyDescriptor(!call(propertyIsEnumerableModule.f, O, P), O[P]);\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\nvar hiddenKeys = enumBugKeys.concat('length', 'prototype');\n\n// `Object.getOwnPropertyNames` method\n// https://tc39.es/ecma262/#sec-object.getownpropertynames\n// eslint-disable-next-line es/no-object-getownpropertynames -- safe\nexports.f = Object.getOwnPropertyNames || function getOwnPropertyNames(O) {\n return internalObjectKeys(O, hiddenKeys);\n};\n","// eslint-disable-next-line es/no-object-getownpropertysymbols -- safe\nexports.f = Object.getOwnPropertySymbols;\n","var hasOwn = require('../internals/has-own-property');\nvar isCallable = require('../internals/is-callable');\nvar toObject = require('../internals/to-object');\nvar sharedKey = require('../internals/shared-key');\nvar CORRECT_PROTOTYPE_GETTER = require('../internals/correct-prototype-getter');\n\nvar IE_PROTO = sharedKey('IE_PROTO');\nvar $Object = Object;\nvar ObjectPrototype = $Object.prototype;\n\n// `Object.getPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.getprototypeof\n// eslint-disable-next-line es/no-object-getprototypeof -- safe\nmodule.exports = CORRECT_PROTOTYPE_GETTER ? $Object.getPrototypeOf : function (O) {\n var object = toObject(O);\n if (hasOwn(object, IE_PROTO)) return object[IE_PROTO];\n var constructor = object.constructor;\n if (isCallable(constructor) && object instanceof constructor) {\n return constructor.prototype;\n } return object instanceof $Object ? ObjectPrototype : null;\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nmodule.exports = uncurryThis({}.isPrototypeOf);\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar hasOwn = require('../internals/has-own-property');\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar indexOf = require('../internals/array-includes').indexOf;\nvar hiddenKeys = require('../internals/hidden-keys');\n\nvar push = uncurryThis([].push);\n\nmodule.exports = function (object, names) {\n var O = toIndexedObject(object);\n var i = 0;\n var result = [];\n var key;\n for (key in O) !hasOwn(hiddenKeys, key) && hasOwn(O, key) && push(result, key);\n // Don't enum bug & hidden keys\n while (names.length > i) if (hasOwn(O, key = names[i++])) {\n ~indexOf(result, key) || push(result, key);\n }\n return result;\n};\n","var internalObjectKeys = require('../internals/object-keys-internal');\nvar enumBugKeys = require('../internals/enum-bug-keys');\n\n// `Object.keys` method\n// https://tc39.es/ecma262/#sec-object.keys\n// eslint-disable-next-line es/no-object-keys -- safe\nmodule.exports = Object.keys || function keys(O) {\n return internalObjectKeys(O, enumBugKeys);\n};\n","'use strict';\nvar $propertyIsEnumerable = {}.propertyIsEnumerable;\n// eslint-disable-next-line es/no-object-getownpropertydescriptor -- safe\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\n\n// Nashorn ~ JDK8 bug\nvar NASHORN_BUG = getOwnPropertyDescriptor && !$propertyIsEnumerable.call({ 1: 2 }, 1);\n\n// `Object.prototype.propertyIsEnumerable` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.propertyisenumerable\nexports.f = NASHORN_BUG ? function propertyIsEnumerable(V) {\n var descriptor = getOwnPropertyDescriptor(this, V);\n return !!descriptor && descriptor.enumerable;\n} : $propertyIsEnumerable;\n","/* eslint-disable no-proto -- safe */\nvar uncurryThisAccessor = require('../internals/function-uncurry-this-accessor');\nvar anObject = require('../internals/an-object');\nvar aPossiblePrototype = require('../internals/a-possible-prototype');\n\n// `Object.setPrototypeOf` method\n// https://tc39.es/ecma262/#sec-object.setprototypeof\n// Works with __proto__ only. Old v8 can't work with null proto objects.\n// eslint-disable-next-line es/no-object-setprototypeof -- safe\nmodule.exports = Object.setPrototypeOf || ('__proto__' in {} ? function () {\n var CORRECT_SETTER = false;\n var test = {};\n var setter;\n try {\n setter = uncurryThisAccessor(Object.prototype, '__proto__', 'set');\n setter(test, []);\n CORRECT_SETTER = test instanceof Array;\n } catch (error) { /* empty */ }\n return function setPrototypeOf(O, proto) {\n anObject(O);\n aPossiblePrototype(proto);\n if (CORRECT_SETTER) setter(O, proto);\n else O.__proto__ = proto;\n return O;\n };\n}() : undefined);\n","'use strict';\nvar TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar classof = require('../internals/classof');\n\n// `Object.prototype.toString` method implementation\n// https://tc39.es/ecma262/#sec-object.prototype.tostring\nmodule.exports = TO_STRING_TAG_SUPPORT ? {}.toString : function toString() {\n return '[object ' + classof(this) + ']';\n};\n","var call = require('../internals/function-call');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\n\nvar $TypeError = TypeError;\n\n// `OrdinaryToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-ordinarytoprimitive\nmodule.exports = function (input, pref) {\n var fn, val;\n if (pref === 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n if (isCallable(fn = input.valueOf) && !isObject(val = call(fn, input))) return val;\n if (pref !== 'string' && isCallable(fn = input.toString) && !isObject(val = call(fn, input))) return val;\n throw $TypeError(\"Can't convert object to primitive value\");\n};\n","var getBuiltIn = require('../internals/get-built-in');\nvar uncurryThis = require('../internals/function-uncurry-this');\nvar getOwnPropertyNamesModule = require('../internals/object-get-own-property-names');\nvar getOwnPropertySymbolsModule = require('../internals/object-get-own-property-symbols');\nvar anObject = require('../internals/an-object');\n\nvar concat = uncurryThis([].concat);\n\n// all object keys, includes non-enumerable and symbols\nmodule.exports = getBuiltIn('Reflect', 'ownKeys') || function ownKeys(it) {\n var keys = getOwnPropertyNamesModule.f(anObject(it));\n var getOwnPropertySymbols = getOwnPropertySymbolsModule.f;\n return getOwnPropertySymbols ? concat(keys, getOwnPropertySymbols(it)) : keys;\n};\n","module.exports = {};\n","module.exports = function (exec) {\n try {\n return { error: false, value: exec() };\n } catch (error) {\n return { error: true, value: error };\n }\n};\n","var global = require('../internals/global');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar isCallable = require('../internals/is-callable');\nvar isForced = require('../internals/is-forced');\nvar inspectSource = require('../internals/inspect-source');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar IS_BROWSER = require('../internals/engine-is-browser');\nvar IS_DENO = require('../internals/engine-is-deno');\nvar IS_PURE = require('../internals/is-pure');\nvar V8_VERSION = require('../internals/engine-v8-version');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar SPECIES = wellKnownSymbol('species');\nvar SUBCLASSING = false;\nvar NATIVE_PROMISE_REJECTION_EVENT = isCallable(global.PromiseRejectionEvent);\n\nvar FORCED_PROMISE_CONSTRUCTOR = isForced('Promise', function () {\n var PROMISE_CONSTRUCTOR_SOURCE = inspectSource(NativePromiseConstructor);\n var GLOBAL_CORE_JS_PROMISE = PROMISE_CONSTRUCTOR_SOURCE !== String(NativePromiseConstructor);\n // V8 6.6 (Node 10 and Chrome 66) have a bug with resolving custom thenables\n // https://bugs.chromium.org/p/chromium/issues/detail?id=830565\n // We can't detect it synchronously, so just check versions\n if (!GLOBAL_CORE_JS_PROMISE && V8_VERSION === 66) return true;\n // We need Promise#{ catch, finally } in the pure version for preventing prototype pollution\n if (IS_PURE && !(NativePromisePrototype['catch'] && NativePromisePrototype['finally'])) return true;\n // We can't use @@species feature detection in V8 since it causes\n // deoptimization and performance degradation\n // https://github.com/zloirock/core-js/issues/679\n if (!V8_VERSION || V8_VERSION < 51 || !/native code/.test(PROMISE_CONSTRUCTOR_SOURCE)) {\n // Detect correctness of subclassing with @@species support\n var promise = new NativePromiseConstructor(function (resolve) { resolve(1); });\n var FakePromise = function (exec) {\n exec(function () { /* empty */ }, function () { /* empty */ });\n };\n var constructor = promise.constructor = {};\n constructor[SPECIES] = FakePromise;\n SUBCLASSING = promise.then(function () { /* empty */ }) instanceof FakePromise;\n if (!SUBCLASSING) return true;\n // Unhandled rejections tracking support, NodeJS Promise without it fails @@species test\n } return !GLOBAL_CORE_JS_PROMISE && (IS_BROWSER || IS_DENO) && !NATIVE_PROMISE_REJECTION_EVENT;\n});\n\nmodule.exports = {\n CONSTRUCTOR: FORCED_PROMISE_CONSTRUCTOR,\n REJECTION_EVENT: NATIVE_PROMISE_REJECTION_EVENT,\n SUBCLASSING: SUBCLASSING\n};\n","var global = require('../internals/global');\n\nmodule.exports = global.Promise;\n","var anObject = require('../internals/an-object');\nvar isObject = require('../internals/is-object');\nvar newPromiseCapability = require('../internals/new-promise-capability');\n\nmodule.exports = function (C, x) {\n anObject(C);\n if (isObject(x) && x.constructor === C) return x;\n var promiseCapability = newPromiseCapability.f(C);\n var resolve = promiseCapability.resolve;\n resolve(x);\n return promiseCapability.promise;\n};\n","var NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar checkCorrectnessOfIteration = require('../internals/check-correctness-of-iteration');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\nmodule.exports = FORCED_PROMISE_CONSTRUCTOR || !checkCorrectnessOfIteration(function (iterable) {\n NativePromiseConstructor.all(iterable).then(undefined, function () { /* empty */ });\n});\n","var Queue = function () {\n this.head = null;\n this.tail = null;\n};\n\nQueue.prototype = {\n add: function (item) {\n var entry = { item: item, next: null };\n var tail = this.tail;\n if (tail) tail.next = entry;\n else this.head = entry;\n this.tail = entry;\n },\n get: function () {\n var entry = this.head;\n if (entry) {\n var next = this.head = entry.next;\n if (next === null) this.tail = null;\n return entry.item;\n }\n }\n};\n\nmodule.exports = Queue;\n","var isNullOrUndefined = require('../internals/is-null-or-undefined');\n\nvar $TypeError = TypeError;\n\n// `RequireObjectCoercible` abstract operation\n// https://tc39.es/ecma262/#sec-requireobjectcoercible\nmodule.exports = function (it) {\n if (isNullOrUndefined(it)) throw $TypeError(\"Can't call method on \" + it);\n return it;\n};\n","'use strict';\nvar getBuiltIn = require('../internals/get-built-in');\nvar defineBuiltInAccessor = require('../internals/define-built-in-accessor');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar SPECIES = wellKnownSymbol('species');\n\nmodule.exports = function (CONSTRUCTOR_NAME) {\n var Constructor = getBuiltIn(CONSTRUCTOR_NAME);\n\n if (DESCRIPTORS && Constructor && !Constructor[SPECIES]) {\n defineBuiltInAccessor(Constructor, SPECIES, {\n configurable: true,\n get: function () { return this; }\n });\n }\n};\n","var TO_STRING_TAG_SUPPORT = require('../internals/to-string-tag-support');\nvar defineProperty = require('../internals/object-define-property').f;\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar hasOwn = require('../internals/has-own-property');\nvar toString = require('../internals/object-to-string');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nmodule.exports = function (it, TAG, STATIC, SET_METHOD) {\n if (it) {\n var target = STATIC ? it : it.prototype;\n if (!hasOwn(target, TO_STRING_TAG)) {\n defineProperty(target, TO_STRING_TAG, { configurable: true, value: TAG });\n }\n if (SET_METHOD && !TO_STRING_TAG_SUPPORT) {\n createNonEnumerableProperty(target, 'toString', toString);\n }\n }\n};\n","var shared = require('../internals/shared');\nvar uid = require('../internals/uid');\n\nvar keys = shared('keys');\n\nmodule.exports = function (key) {\n return keys[key] || (keys[key] = uid(key));\n};\n","var global = require('../internals/global');\nvar defineGlobalProperty = require('../internals/define-global-property');\n\nvar SHARED = '__core-js_shared__';\nvar store = global[SHARED] || defineGlobalProperty(SHARED, {});\n\nmodule.exports = store;\n","var IS_PURE = require('../internals/is-pure');\nvar store = require('../internals/shared-store');\n\n(module.exports = function (key, value) {\n return store[key] || (store[key] = value !== undefined ? value : {});\n})('versions', []).push({\n version: '3.30.1',\n mode: IS_PURE ? 'pure' : 'global',\n copyright: '© 2014-2023 Denis Pushkarev (zloirock.ru)',\n license: 'https://github.com/zloirock/core-js/blob/v3.30.1/LICENSE',\n source: 'https://github.com/zloirock/core-js'\n});\n","var anObject = require('../internals/an-object');\nvar aConstructor = require('../internals/a-constructor');\nvar isNullOrUndefined = require('../internals/is-null-or-undefined');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar SPECIES = wellKnownSymbol('species');\n\n// `SpeciesConstructor` abstract operation\n// https://tc39.es/ecma262/#sec-speciesconstructor\nmodule.exports = function (O, defaultConstructor) {\n var C = anObject(O).constructor;\n var S;\n return C === undefined || isNullOrUndefined(S = anObject(C)[SPECIES]) ? defaultConstructor : aConstructor(S);\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\nvar toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\nvar toString = require('../internals/to-string');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar charAt = uncurryThis(''.charAt);\nvar charCodeAt = uncurryThis(''.charCodeAt);\nvar stringSlice = uncurryThis(''.slice);\n\nvar createMethod = function (CONVERT_TO_STRING) {\n return function ($this, pos) {\n var S = toString(requireObjectCoercible($this));\n var position = toIntegerOrInfinity(pos);\n var size = S.length;\n var first, second;\n if (position < 0 || position >= size) return CONVERT_TO_STRING ? '' : undefined;\n first = charCodeAt(S, position);\n return first < 0xD800 || first > 0xDBFF || position + 1 === size\n || (second = charCodeAt(S, position + 1)) < 0xDC00 || second > 0xDFFF\n ? CONVERT_TO_STRING\n ? charAt(S, position)\n : first\n : CONVERT_TO_STRING\n ? stringSlice(S, position, position + 2)\n : (first - 0xD800 << 10) + (second - 0xDC00) + 0x10000;\n };\n};\n\nmodule.exports = {\n // `String.prototype.codePointAt` method\n // https://tc39.es/ecma262/#sec-string.prototype.codepointat\n codeAt: createMethod(false),\n // `String.prototype.at` method\n // https://github.com/mathiasbynens/String.prototype.at\n charAt: createMethod(true)\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar V8_VERSION = require('../internals/engine-v8-version');\nvar fails = require('../internals/fails');\n\n// eslint-disable-next-line es/no-object-getownpropertysymbols -- required for testing\nmodule.exports = !!Object.getOwnPropertySymbols && !fails(function () {\n var symbol = Symbol();\n // Chrome 38 Symbol has incorrect toString conversion\n // `get-own-property-symbols` polyfill symbols converted to object are not Symbol instances\n return !String(symbol) || !(Object(symbol) instanceof Symbol) ||\n // Chrome 38-40 symbols are not inherited from DOM collections prototypes to instances\n !Symbol.sham && V8_VERSION && V8_VERSION < 41;\n});\n","var global = require('../internals/global');\nvar apply = require('../internals/function-apply');\nvar bind = require('../internals/function-bind-context');\nvar isCallable = require('../internals/is-callable');\nvar hasOwn = require('../internals/has-own-property');\nvar fails = require('../internals/fails');\nvar html = require('../internals/html');\nvar arraySlice = require('../internals/array-slice');\nvar createElement = require('../internals/document-create-element');\nvar validateArgumentsLength = require('../internals/validate-arguments-length');\nvar IS_IOS = require('../internals/engine-is-ios');\nvar IS_NODE = require('../internals/engine-is-node');\n\nvar set = global.setImmediate;\nvar clear = global.clearImmediate;\nvar process = global.process;\nvar Dispatch = global.Dispatch;\nvar Function = global.Function;\nvar MessageChannel = global.MessageChannel;\nvar String = global.String;\nvar counter = 0;\nvar queue = {};\nvar ONREADYSTATECHANGE = 'onreadystatechange';\nvar $location, defer, channel, port;\n\nfails(function () {\n // Deno throws a ReferenceError on `location` access without `--location` flag\n $location = global.location;\n});\n\nvar run = function (id) {\n if (hasOwn(queue, id)) {\n var fn = queue[id];\n delete queue[id];\n fn();\n }\n};\n\nvar runner = function (id) {\n return function () {\n run(id);\n };\n};\n\nvar eventListener = function (event) {\n run(event.data);\n};\n\nvar globalPostMessageDefer = function (id) {\n // old engines have not location.origin\n global.postMessage(String(id), $location.protocol + '//' + $location.host);\n};\n\n// Node.js 0.9+ & IE10+ has setImmediate, otherwise:\nif (!set || !clear) {\n set = function setImmediate(handler) {\n validateArgumentsLength(arguments.length, 1);\n var fn = isCallable(handler) ? handler : Function(handler);\n var args = arraySlice(arguments, 1);\n queue[++counter] = function () {\n apply(fn, undefined, args);\n };\n defer(counter);\n return counter;\n };\n clear = function clearImmediate(id) {\n delete queue[id];\n };\n // Node.js 0.8-\n if (IS_NODE) {\n defer = function (id) {\n process.nextTick(runner(id));\n };\n // Sphere (JS game engine) Dispatch API\n } else if (Dispatch && Dispatch.now) {\n defer = function (id) {\n Dispatch.now(runner(id));\n };\n // Browsers with MessageChannel, includes WebWorkers\n // except iOS - https://github.com/zloirock/core-js/issues/624\n } else if (MessageChannel && !IS_IOS) {\n channel = new MessageChannel();\n port = channel.port2;\n channel.port1.onmessage = eventListener;\n defer = bind(port.postMessage, port);\n // Browsers with postMessage, skip WebWorkers\n // IE8 has postMessage, but it's sync & typeof its postMessage is 'object'\n } else if (\n global.addEventListener &&\n isCallable(global.postMessage) &&\n !global.importScripts &&\n $location && $location.protocol !== 'file:' &&\n !fails(globalPostMessageDefer)\n ) {\n defer = globalPostMessageDefer;\n global.addEventListener('message', eventListener, false);\n // IE8-\n } else if (ONREADYSTATECHANGE in createElement('script')) {\n defer = function (id) {\n html.appendChild(createElement('script'))[ONREADYSTATECHANGE] = function () {\n html.removeChild(this);\n run(id);\n };\n };\n // Rest old browsers\n } else {\n defer = function (id) {\n setTimeout(runner(id), 0);\n };\n }\n}\n\nmodule.exports = {\n set: set,\n clear: clear\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar max = Math.max;\nvar min = Math.min;\n\n// Helper for a popular repeating case of the spec:\n// Let integer be ? ToInteger(index).\n// If integer < 0, let result be max((length + integer), 0); else let result be min(integer, length).\nmodule.exports = function (index, length) {\n var integer = toIntegerOrInfinity(index);\n return integer < 0 ? max(integer + length, 0) : min(integer, length);\n};\n","// toObject with fallback for non-array-like ES3 strings\nvar IndexedObject = require('../internals/indexed-object');\nvar requireObjectCoercible = require('../internals/require-object-coercible');\n\nmodule.exports = function (it) {\n return IndexedObject(requireObjectCoercible(it));\n};\n","var trunc = require('../internals/math-trunc');\n\n// `ToIntegerOrInfinity` abstract operation\n// https://tc39.es/ecma262/#sec-tointegerorinfinity\nmodule.exports = function (argument) {\n var number = +argument;\n // eslint-disable-next-line no-self-compare -- NaN check\n return number !== number || number === 0 ? 0 : trunc(number);\n};\n","var toIntegerOrInfinity = require('../internals/to-integer-or-infinity');\n\nvar min = Math.min;\n\n// `ToLength` abstract operation\n// https://tc39.es/ecma262/#sec-tolength\nmodule.exports = function (argument) {\n return argument > 0 ? min(toIntegerOrInfinity(argument), 0x1FFFFFFFFFFFFF) : 0; // 2 ** 53 - 1 == 9007199254740991\n};\n","var requireObjectCoercible = require('../internals/require-object-coercible');\n\nvar $Object = Object;\n\n// `ToObject` abstract operation\n// https://tc39.es/ecma262/#sec-toobject\nmodule.exports = function (argument) {\n return $Object(requireObjectCoercible(argument));\n};\n","var call = require('../internals/function-call');\nvar isObject = require('../internals/is-object');\nvar isSymbol = require('../internals/is-symbol');\nvar getMethod = require('../internals/get-method');\nvar ordinaryToPrimitive = require('../internals/ordinary-to-primitive');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar $TypeError = TypeError;\nvar TO_PRIMITIVE = wellKnownSymbol('toPrimitive');\n\n// `ToPrimitive` abstract operation\n// https://tc39.es/ecma262/#sec-toprimitive\nmodule.exports = function (input, pref) {\n if (!isObject(input) || isSymbol(input)) return input;\n var exoticToPrim = getMethod(input, TO_PRIMITIVE);\n var result;\n if (exoticToPrim) {\n if (pref === undefined) pref = 'default';\n result = call(exoticToPrim, input, pref);\n if (!isObject(result) || isSymbol(result)) return result;\n throw $TypeError(\"Can't convert object to primitive value\");\n }\n if (pref === undefined) pref = 'number';\n return ordinaryToPrimitive(input, pref);\n};\n","var toPrimitive = require('../internals/to-primitive');\nvar isSymbol = require('../internals/is-symbol');\n\n// `ToPropertyKey` abstract operation\n// https://tc39.es/ecma262/#sec-topropertykey\nmodule.exports = function (argument) {\n var key = toPrimitive(argument, 'string');\n return isSymbol(key) ? key : key + '';\n};\n","var wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar test = {};\n\ntest[TO_STRING_TAG] = 'z';\n\nmodule.exports = String(test) === '[object z]';\n","var classof = require('../internals/classof');\n\nvar $String = String;\n\nmodule.exports = function (argument) {\n if (classof(argument) === 'Symbol') throw TypeError('Cannot convert a Symbol value to a string');\n return $String(argument);\n};\n","var $String = String;\n\nmodule.exports = function (argument) {\n try {\n return $String(argument);\n } catch (error) {\n return 'Object';\n }\n};\n","var uncurryThis = require('../internals/function-uncurry-this');\n\nvar id = 0;\nvar postfix = Math.random();\nvar toString = uncurryThis(1.0.toString);\n\nmodule.exports = function (key) {\n return 'Symbol(' + (key === undefined ? '' : key) + ')_' + toString(++id + postfix, 36);\n};\n","/* eslint-disable es/no-symbol -- required for testing */\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\n\nmodule.exports = NATIVE_SYMBOL\n && !Symbol.sham\n && typeof Symbol.iterator == 'symbol';\n","var DESCRIPTORS = require('../internals/descriptors');\nvar fails = require('../internals/fails');\n\n// V8 ~ Chrome 36-\n// https://bugs.chromium.org/p/v8/issues/detail?id=3334\nmodule.exports = DESCRIPTORS && fails(function () {\n // eslint-disable-next-line es/no-object-defineproperty -- required for testing\n return Object.defineProperty(function () { /* empty */ }, 'prototype', {\n value: 42,\n writable: false\n }).prototype != 42;\n});\n","var $TypeError = TypeError;\n\nmodule.exports = function (passed, required) {\n if (passed < required) throw $TypeError('Not enough arguments');\n return passed;\n};\n","var global = require('../internals/global');\nvar isCallable = require('../internals/is-callable');\n\nvar WeakMap = global.WeakMap;\n\nmodule.exports = isCallable(WeakMap) && /native code/.test(String(WeakMap));\n","var global = require('../internals/global');\nvar shared = require('../internals/shared');\nvar hasOwn = require('../internals/has-own-property');\nvar uid = require('../internals/uid');\nvar NATIVE_SYMBOL = require('../internals/symbol-constructor-detection');\nvar USE_SYMBOL_AS_UID = require('../internals/use-symbol-as-uid');\n\nvar Symbol = global.Symbol;\nvar WellKnownSymbolsStore = shared('wks');\nvar createWellKnownSymbol = USE_SYMBOL_AS_UID ? Symbol['for'] || Symbol : Symbol && Symbol.withoutSetter || uid;\n\nmodule.exports = function (name) {\n if (!hasOwn(WellKnownSymbolsStore, name)) {\n WellKnownSymbolsStore[name] = NATIVE_SYMBOL && hasOwn(Symbol, name)\n ? Symbol[name]\n : createWellKnownSymbol('Symbol.' + name);\n } return WellKnownSymbolsStore[name];\n};\n","'use strict';\nvar $ = require('../internals/export');\nvar isPrototypeOf = require('../internals/object-is-prototype-of');\nvar getPrototypeOf = require('../internals/object-get-prototype-of');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar copyConstructorProperties = require('../internals/copy-constructor-properties');\nvar create = require('../internals/object-create');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar createPropertyDescriptor = require('../internals/create-property-descriptor');\nvar installErrorCause = require('../internals/install-error-cause');\nvar installErrorStack = require('../internals/error-stack-install');\nvar iterate = require('../internals/iterate');\nvar normalizeStringArgument = require('../internals/normalize-string-argument');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\nvar $Error = Error;\nvar push = [].push;\n\nvar $AggregateError = function AggregateError(errors, message /* , options */) {\n var isInstance = isPrototypeOf(AggregateErrorPrototype, this);\n var that;\n if (setPrototypeOf) {\n that = setPrototypeOf($Error(), isInstance ? getPrototypeOf(this) : AggregateErrorPrototype);\n } else {\n that = isInstance ? this : create(AggregateErrorPrototype);\n createNonEnumerableProperty(that, TO_STRING_TAG, 'Error');\n }\n if (message !== undefined) createNonEnumerableProperty(that, 'message', normalizeStringArgument(message));\n installErrorStack(that, $AggregateError, that.stack, 1);\n if (arguments.length > 2) installErrorCause(that, arguments[2]);\n var errorsArray = [];\n iterate(errors, push, { that: errorsArray });\n createNonEnumerableProperty(that, 'errors', errorsArray);\n return that;\n};\n\nif (setPrototypeOf) setPrototypeOf($AggregateError, $Error);\nelse copyConstructorProperties($AggregateError, $Error, { name: true });\n\nvar AggregateErrorPrototype = $AggregateError.prototype = create($Error.prototype, {\n constructor: createPropertyDescriptor(1, $AggregateError),\n message: createPropertyDescriptor(1, ''),\n name: createPropertyDescriptor(1, 'AggregateError')\n});\n\n// `AggregateError` constructor\n// https://tc39.es/ecma262/#sec-aggregate-error-constructor\n$({ global: true, constructor: true, arity: 2 }, {\n AggregateError: $AggregateError\n});\n","// TODO: Remove this module from `core-js@4` since it's replaced to module below\nrequire('../modules/es.aggregate-error.constructor');\n","'use strict';\nvar toIndexedObject = require('../internals/to-indexed-object');\nvar addToUnscopables = require('../internals/add-to-unscopables');\nvar Iterators = require('../internals/iterators');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineProperty = require('../internals/object-define-property').f;\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\nvar IS_PURE = require('../internals/is-pure');\nvar DESCRIPTORS = require('../internals/descriptors');\n\nvar ARRAY_ITERATOR = 'Array Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(ARRAY_ITERATOR);\n\n// `Array.prototype.entries` method\n// https://tc39.es/ecma262/#sec-array.prototype.entries\n// `Array.prototype.keys` method\n// https://tc39.es/ecma262/#sec-array.prototype.keys\n// `Array.prototype.values` method\n// https://tc39.es/ecma262/#sec-array.prototype.values\n// `Array.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-array.prototype-@@iterator\n// `CreateArrayIterator` internal method\n// https://tc39.es/ecma262/#sec-createarrayiterator\nmodule.exports = defineIterator(Array, 'Array', function (iterated, kind) {\n setInternalState(this, {\n type: ARRAY_ITERATOR,\n target: toIndexedObject(iterated), // target\n index: 0, // next index\n kind: kind // kind\n });\n// `%ArrayIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%arrayiteratorprototype%.next\n}, function () {\n var state = getInternalState(this);\n var target = state.target;\n var kind = state.kind;\n var index = state.index++;\n if (!target || index >= target.length) {\n state.target = undefined;\n return createIterResultObject(undefined, true);\n }\n if (kind == 'keys') return createIterResultObject(index, false);\n if (kind == 'values') return createIterResultObject(target[index], false);\n return createIterResultObject([index, target[index]], false);\n}, 'values');\n\n// argumentsList[@@iterator] is %ArrayProto_values%\n// https://tc39.es/ecma262/#sec-createunmappedargumentsobject\n// https://tc39.es/ecma262/#sec-createmappedargumentsobject\nvar values = Iterators.Arguments = Iterators.Array;\n\n// https://tc39.es/ecma262/#sec-array.prototype-@@unscopables\naddToUnscopables('keys');\naddToUnscopables('values');\naddToUnscopables('entries');\n\n// V8 ~ Chrome 45- bug\nif (!IS_PURE && DESCRIPTORS && values.name !== 'values') try {\n defineProperty(values, 'name', { value: 'values' });\n} catch (error) { /* empty */ }\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.allSettled` method\n// https://tc39.es/ecma262/#sec-promise.allsettled\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n allSettled: function allSettled(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'fulfilled', value: value };\n --remaining || resolve(values);\n }, function (error) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = { status: 'rejected', reason: error };\n --remaining || resolve(values);\n });\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.all` method\n// https://tc39.es/ecma262/#sec-promise.all\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n all: function all(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n var values = [];\n var counter = 0;\n var remaining = 1;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyCalled = false;\n remaining++;\n call($promiseResolve, C, promise).then(function (value) {\n if (alreadyCalled) return;\n alreadyCalled = true;\n values[index] = value;\n --remaining || resolve(values);\n }, reject);\n });\n --remaining || resolve(values);\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar getBuiltIn = require('../internals/get-built-in');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\nvar PROMISE_ANY_ERROR = 'No one promise resolved';\n\n// `Promise.any` method\n// https://tc39.es/ecma262/#sec-promise.any\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n any: function any(iterable) {\n var C = this;\n var AggregateError = getBuiltIn('AggregateError');\n var capability = newPromiseCapabilityModule.f(C);\n var resolve = capability.resolve;\n var reject = capability.reject;\n var result = perform(function () {\n var promiseResolve = aCallable(C.resolve);\n var errors = [];\n var counter = 0;\n var remaining = 1;\n var alreadyResolved = false;\n iterate(iterable, function (promise) {\n var index = counter++;\n var alreadyRejected = false;\n remaining++;\n call(promiseResolve, C, promise).then(function (value) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyResolved = true;\n resolve(value);\n }, function (error) {\n if (alreadyRejected || alreadyResolved) return;\n alreadyRejected = true;\n errors[index] = error;\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n });\n --remaining || reject(new AggregateError(errors, PROMISE_ANY_ERROR));\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// `Promise.prototype.catch` method\n// https://tc39.es/ecma262/#sec-promise.prototype.catch\n$({ target: 'Promise', proto: true, forced: FORCED_PROMISE_CONSTRUCTOR, real: true }, {\n 'catch': function (onRejected) {\n return this.then(undefined, onRejected);\n }\n});\n\n// makes sure that native promise-based APIs `Promise#catch` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['catch'];\n if (NativePromisePrototype['catch'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'catch', method, { unsafe: true });\n }\n}\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar IS_NODE = require('../internals/engine-is-node');\nvar global = require('../internals/global');\nvar call = require('../internals/function-call');\nvar defineBuiltIn = require('../internals/define-built-in');\nvar setPrototypeOf = require('../internals/object-set-prototype-of');\nvar setToStringTag = require('../internals/set-to-string-tag');\nvar setSpecies = require('../internals/set-species');\nvar aCallable = require('../internals/a-callable');\nvar isCallable = require('../internals/is-callable');\nvar isObject = require('../internals/is-object');\nvar anInstance = require('../internals/an-instance');\nvar speciesConstructor = require('../internals/species-constructor');\nvar task = require('../internals/task').set;\nvar microtask = require('../internals/microtask');\nvar hostReportErrors = require('../internals/host-report-errors');\nvar perform = require('../internals/perform');\nvar Queue = require('../internals/queue');\nvar InternalStateModule = require('../internals/internal-state');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar PromiseConstructorDetection = require('../internals/promise-constructor-detection');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\n\nvar PROMISE = 'Promise';\nvar FORCED_PROMISE_CONSTRUCTOR = PromiseConstructorDetection.CONSTRUCTOR;\nvar NATIVE_PROMISE_REJECTION_EVENT = PromiseConstructorDetection.REJECTION_EVENT;\nvar NATIVE_PROMISE_SUBCLASSING = PromiseConstructorDetection.SUBCLASSING;\nvar getInternalPromiseState = InternalStateModule.getterFor(PROMISE);\nvar setInternalState = InternalStateModule.set;\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\nvar PromiseConstructor = NativePromiseConstructor;\nvar PromisePrototype = NativePromisePrototype;\nvar TypeError = global.TypeError;\nvar document = global.document;\nvar process = global.process;\nvar newPromiseCapability = newPromiseCapabilityModule.f;\nvar newGenericPromiseCapability = newPromiseCapability;\n\nvar DISPATCH_EVENT = !!(document && document.createEvent && global.dispatchEvent);\nvar UNHANDLED_REJECTION = 'unhandledrejection';\nvar REJECTION_HANDLED = 'rejectionhandled';\nvar PENDING = 0;\nvar FULFILLED = 1;\nvar REJECTED = 2;\nvar HANDLED = 1;\nvar UNHANDLED = 2;\n\nvar Internal, OwnPromiseCapability, PromiseWrapper, nativeThen;\n\n// helpers\nvar isThenable = function (it) {\n var then;\n return isObject(it) && isCallable(then = it.then) ? then : false;\n};\n\nvar callReaction = function (reaction, state) {\n var value = state.value;\n var ok = state.state == FULFILLED;\n var handler = ok ? reaction.ok : reaction.fail;\n var resolve = reaction.resolve;\n var reject = reaction.reject;\n var domain = reaction.domain;\n var result, then, exited;\n try {\n if (handler) {\n if (!ok) {\n if (state.rejection === UNHANDLED) onHandleUnhandled(state);\n state.rejection = HANDLED;\n }\n if (handler === true) result = value;\n else {\n if (domain) domain.enter();\n result = handler(value); // can throw\n if (domain) {\n domain.exit();\n exited = true;\n }\n }\n if (result === reaction.promise) {\n reject(TypeError('Promise-chain cycle'));\n } else if (then = isThenable(result)) {\n call(then, result, resolve, reject);\n } else resolve(result);\n } else reject(value);\n } catch (error) {\n if (domain && !exited) domain.exit();\n reject(error);\n }\n};\n\nvar notify = function (state, isReject) {\n if (state.notified) return;\n state.notified = true;\n microtask(function () {\n var reactions = state.reactions;\n var reaction;\n while (reaction = reactions.get()) {\n callReaction(reaction, state);\n }\n state.notified = false;\n if (isReject && !state.rejection) onUnhandled(state);\n });\n};\n\nvar dispatchEvent = function (name, promise, reason) {\n var event, handler;\n if (DISPATCH_EVENT) {\n event = document.createEvent('Event');\n event.promise = promise;\n event.reason = reason;\n event.initEvent(name, false, true);\n global.dispatchEvent(event);\n } else event = { promise: promise, reason: reason };\n if (!NATIVE_PROMISE_REJECTION_EVENT && (handler = global['on' + name])) handler(event);\n else if (name === UNHANDLED_REJECTION) hostReportErrors('Unhandled promise rejection', reason);\n};\n\nvar onUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n var value = state.value;\n var IS_UNHANDLED = isUnhandled(state);\n var result;\n if (IS_UNHANDLED) {\n result = perform(function () {\n if (IS_NODE) {\n process.emit('unhandledRejection', value, promise);\n } else dispatchEvent(UNHANDLED_REJECTION, promise, value);\n });\n // Browsers should not trigger `rejectionHandled` event if it was handled here, NodeJS - should\n state.rejection = IS_NODE || isUnhandled(state) ? UNHANDLED : HANDLED;\n if (result.error) throw result.value;\n }\n });\n};\n\nvar isUnhandled = function (state) {\n return state.rejection !== HANDLED && !state.parent;\n};\n\nvar onHandleUnhandled = function (state) {\n call(task, global, function () {\n var promise = state.facade;\n if (IS_NODE) {\n process.emit('rejectionHandled', promise);\n } else dispatchEvent(REJECTION_HANDLED, promise, state.value);\n });\n};\n\nvar bind = function (fn, state, unwrap) {\n return function (value) {\n fn(state, value, unwrap);\n };\n};\n\nvar internalReject = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n state.value = value;\n state.state = REJECTED;\n notify(state, true);\n};\n\nvar internalResolve = function (state, value, unwrap) {\n if (state.done) return;\n state.done = true;\n if (unwrap) state = unwrap;\n try {\n if (state.facade === value) throw TypeError(\"Promise can't be resolved itself\");\n var then = isThenable(value);\n if (then) {\n microtask(function () {\n var wrapper = { done: false };\n try {\n call(then, value,\n bind(internalResolve, wrapper, state),\n bind(internalReject, wrapper, state)\n );\n } catch (error) {\n internalReject(wrapper, error, state);\n }\n });\n } else {\n state.value = value;\n state.state = FULFILLED;\n notify(state, false);\n }\n } catch (error) {\n internalReject({ done: false }, error, state);\n }\n};\n\n// constructor polyfill\nif (FORCED_PROMISE_CONSTRUCTOR) {\n // 25.4.3.1 Promise(executor)\n PromiseConstructor = function Promise(executor) {\n anInstance(this, PromisePrototype);\n aCallable(executor);\n call(Internal, this);\n var state = getInternalPromiseState(this);\n try {\n executor(bind(internalResolve, state), bind(internalReject, state));\n } catch (error) {\n internalReject(state, error);\n }\n };\n\n PromisePrototype = PromiseConstructor.prototype;\n\n // eslint-disable-next-line no-unused-vars -- required for `.length`\n Internal = function Promise(executor) {\n setInternalState(this, {\n type: PROMISE,\n done: false,\n notified: false,\n parent: false,\n reactions: new Queue(),\n rejection: false,\n state: PENDING,\n value: undefined\n });\n };\n\n // `Promise.prototype.then` method\n // https://tc39.es/ecma262/#sec-promise.prototype.then\n Internal.prototype = defineBuiltIn(PromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var state = getInternalPromiseState(this);\n var reaction = newPromiseCapability(speciesConstructor(this, PromiseConstructor));\n state.parent = true;\n reaction.ok = isCallable(onFulfilled) ? onFulfilled : true;\n reaction.fail = isCallable(onRejected) && onRejected;\n reaction.domain = IS_NODE ? process.domain : undefined;\n if (state.state == PENDING) state.reactions.add(reaction);\n else microtask(function () {\n callReaction(reaction, state);\n });\n return reaction.promise;\n });\n\n OwnPromiseCapability = function () {\n var promise = new Internal();\n var state = getInternalPromiseState(promise);\n this.promise = promise;\n this.resolve = bind(internalResolve, state);\n this.reject = bind(internalReject, state);\n };\n\n newPromiseCapabilityModule.f = newPromiseCapability = function (C) {\n return C === PromiseConstructor || C === PromiseWrapper\n ? new OwnPromiseCapability(C)\n : newGenericPromiseCapability(C);\n };\n\n if (!IS_PURE && isCallable(NativePromiseConstructor) && NativePromisePrototype !== Object.prototype) {\n nativeThen = NativePromisePrototype.then;\n\n if (!NATIVE_PROMISE_SUBCLASSING) {\n // make `Promise#then` return a polyfilled `Promise` for native promise-based APIs\n defineBuiltIn(NativePromisePrototype, 'then', function then(onFulfilled, onRejected) {\n var that = this;\n return new PromiseConstructor(function (resolve, reject) {\n call(nativeThen, that, resolve, reject);\n }).then(onFulfilled, onRejected);\n // https://github.com/zloirock/core-js/issues/640\n }, { unsafe: true });\n }\n\n // make `.constructor === Promise` work for native promise-based APIs\n try {\n delete NativePromisePrototype.constructor;\n } catch (error) { /* empty */ }\n\n // make `instanceof Promise` work for native promise-based APIs\n if (setPrototypeOf) {\n setPrototypeOf(NativePromisePrototype, PromisePrototype);\n }\n }\n}\n\n$({ global: true, constructor: true, wrap: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n Promise: PromiseConstructor\n});\n\nsetToStringTag(PromiseConstructor, PROMISE, false, true);\nsetSpecies(PROMISE);\n","'use strict';\nvar $ = require('../internals/export');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar fails = require('../internals/fails');\nvar getBuiltIn = require('../internals/get-built-in');\nvar isCallable = require('../internals/is-callable');\nvar speciesConstructor = require('../internals/species-constructor');\nvar promiseResolve = require('../internals/promise-resolve');\nvar defineBuiltIn = require('../internals/define-built-in');\n\nvar NativePromisePrototype = NativePromiseConstructor && NativePromiseConstructor.prototype;\n\n// Safari bug https://bugs.webkit.org/show_bug.cgi?id=200829\nvar NON_GENERIC = !!NativePromiseConstructor && fails(function () {\n // eslint-disable-next-line unicorn/no-thenable -- required for testing\n NativePromisePrototype['finally'].call({ then: function () { /* empty */ } }, function () { /* empty */ });\n});\n\n// `Promise.prototype.finally` method\n// https://tc39.es/ecma262/#sec-promise.prototype.finally\n$({ target: 'Promise', proto: true, real: true, forced: NON_GENERIC }, {\n 'finally': function (onFinally) {\n var C = speciesConstructor(this, getBuiltIn('Promise'));\n var isFunction = isCallable(onFinally);\n return this.then(\n isFunction ? function (x) {\n return promiseResolve(C, onFinally()).then(function () { return x; });\n } : onFinally,\n isFunction ? function (e) {\n return promiseResolve(C, onFinally()).then(function () { throw e; });\n } : onFinally\n );\n }\n});\n\n// makes sure that native promise-based APIs `Promise#finally` properly works with patched `Promise#then`\nif (!IS_PURE && isCallable(NativePromiseConstructor)) {\n var method = getBuiltIn('Promise').prototype['finally'];\n if (NativePromisePrototype['finally'] !== method) {\n defineBuiltIn(NativePromisePrototype, 'finally', method, { unsafe: true });\n }\n}\n","// TODO: Remove this module from `core-js@4` since it's split to modules listed below\nrequire('../modules/es.promise.constructor');\nrequire('../modules/es.promise.all');\nrequire('../modules/es.promise.catch');\nrequire('../modules/es.promise.race');\nrequire('../modules/es.promise.reject');\nrequire('../modules/es.promise.resolve');\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar aCallable = require('../internals/a-callable');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar perform = require('../internals/perform');\nvar iterate = require('../internals/iterate');\nvar PROMISE_STATICS_INCORRECT_ITERATION = require('../internals/promise-statics-incorrect-iteration');\n\n// `Promise.race` method\n// https://tc39.es/ecma262/#sec-promise.race\n$({ target: 'Promise', stat: true, forced: PROMISE_STATICS_INCORRECT_ITERATION }, {\n race: function race(iterable) {\n var C = this;\n var capability = newPromiseCapabilityModule.f(C);\n var reject = capability.reject;\n var result = perform(function () {\n var $promiseResolve = aCallable(C.resolve);\n iterate(iterable, function (promise) {\n call($promiseResolve, C, promise).then(capability.resolve, reject);\n });\n });\n if (result.error) reject(result.value);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar call = require('../internals/function-call');\nvar newPromiseCapabilityModule = require('../internals/new-promise-capability');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\n\n// `Promise.reject` method\n// https://tc39.es/ecma262/#sec-promise.reject\n$({ target: 'Promise', stat: true, forced: FORCED_PROMISE_CONSTRUCTOR }, {\n reject: function reject(r) {\n var capability = newPromiseCapabilityModule.f(this);\n call(capability.reject, undefined, r);\n return capability.promise;\n }\n});\n","'use strict';\nvar $ = require('../internals/export');\nvar getBuiltIn = require('../internals/get-built-in');\nvar IS_PURE = require('../internals/is-pure');\nvar NativePromiseConstructor = require('../internals/promise-native-constructor');\nvar FORCED_PROMISE_CONSTRUCTOR = require('../internals/promise-constructor-detection').CONSTRUCTOR;\nvar promiseResolve = require('../internals/promise-resolve');\n\nvar PromiseConstructorWrapper = getBuiltIn('Promise');\nvar CHECK_WRAPPER = IS_PURE && !FORCED_PROMISE_CONSTRUCTOR;\n\n// `Promise.resolve` method\n// https://tc39.es/ecma262/#sec-promise.resolve\n$({ target: 'Promise', stat: true, forced: IS_PURE || FORCED_PROMISE_CONSTRUCTOR }, {\n resolve: function resolve(x) {\n return promiseResolve(CHECK_WRAPPER && this === PromiseConstructorWrapper ? NativePromiseConstructor : this, x);\n }\n});\n","'use strict';\nvar charAt = require('../internals/string-multibyte').charAt;\nvar toString = require('../internals/to-string');\nvar InternalStateModule = require('../internals/internal-state');\nvar defineIterator = require('../internals/iterator-define');\nvar createIterResultObject = require('../internals/create-iter-result-object');\n\nvar STRING_ITERATOR = 'String Iterator';\nvar setInternalState = InternalStateModule.set;\nvar getInternalState = InternalStateModule.getterFor(STRING_ITERATOR);\n\n// `String.prototype[@@iterator]` method\n// https://tc39.es/ecma262/#sec-string.prototype-@@iterator\ndefineIterator(String, 'String', function (iterated) {\n setInternalState(this, {\n type: STRING_ITERATOR,\n string: toString(iterated),\n index: 0\n });\n// `%StringIteratorPrototype%.next` method\n// https://tc39.es/ecma262/#sec-%stringiteratorprototype%.next\n}, function next() {\n var state = getInternalState(this);\n var string = state.string;\n var index = state.index;\n var point;\n if (index >= string.length) return createIterResultObject(undefined, true);\n point = charAt(string, index);\n state.index += point.length;\n return createIterResultObject(point, false);\n});\n","require('../modules/es.array.iterator');\nvar DOMIterables = require('../internals/dom-iterables');\nvar global = require('../internals/global');\nvar classof = require('../internals/classof');\nvar createNonEnumerableProperty = require('../internals/create-non-enumerable-property');\nvar Iterators = require('../internals/iterators');\nvar wellKnownSymbol = require('../internals/well-known-symbol');\n\nvar TO_STRING_TAG = wellKnownSymbol('toStringTag');\n\nfor (var COLLECTION_NAME in DOMIterables) {\n var Collection = global[COLLECTION_NAME];\n var CollectionPrototype = Collection && Collection.prototype;\n if (CollectionPrototype && classof(CollectionPrototype) !== TO_STRING_TAG) {\n createNonEnumerableProperty(CollectionPrototype, TO_STRING_TAG, COLLECTION_NAME);\n }\n Iterators[COLLECTION_NAME] = Iterators.Array;\n}\n","var parent = require('../../es/promise');\nrequire('../../modules/web.dom-collections.iterator');\n\nmodule.exports = parent;\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addLeadingZeros;\nfunction addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : '';\n var output = Math.abs(number).toString();\n while (output.length < targetLength) {\n output = '0' + output;\n }\n return sign + output;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../locale/en-US/index.js\"));\nvar _default = _index.default;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.getDefaultOptions = getDefaultOptions;\nexports.setDefaultOptions = setDefaultOptions;\nvar defaultOptions = {};\nfunction getDefaultOptions() {\n return defaultOptions;\n}\nfunction setDefaultOptions(newOptions) {\n defaultOptions = newOptions;\n}","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/getUTCDayOfYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/getUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../../../_lib/getUTCISOWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../../../_lib/getUTCWeek/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"../../../_lib/getUTCWeekYear/index.js\"));\nvar _index6 = _interopRequireDefault(require(\"../../addLeadingZeros/index.js\"));\nvar _index7 = _interopRequireDefault(require(\"../lightFormatters/index.js\"));\nvar dayPeriodEnum = {\n am: 'am',\n pm: 'pm',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n};\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | Milliseconds in day |\n * | b | AM, PM, noon, midnight | B | Flexible day period |\n * | c | Stand-alone local day of week | C* | Localized hour w/ day period |\n * | d | Day of month | D | Day of year |\n * | e | Local day of week | E | Day of week |\n * | f | | F* | Day of week in month |\n * | g* | Modified Julian day | G | Era |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | i! | ISO day of week | I! | ISO week of year |\n * | j* | Localized hour w/ day period | J* | Localized hour w/o day period |\n * | k | Hour [1-24] | K | Hour [0-11] |\n * | l* | (deprecated) | L | Stand-alone month |\n * | m | Minute | M | Month |\n * | n | | N | |\n * | o! | Ordinal number modifier | O | Timezone (GMT) |\n * | p! | Long localized time | P! | Long localized date |\n * | q | Stand-alone quarter | Q | Quarter |\n * | r* | Related Gregorian year | R! | ISO week-numbering year |\n * | s | Second | S | Fraction of second |\n * | t! | Seconds timestamp | T! | Milliseconds timestamp |\n * | u | Extended year | U* | Cyclic year |\n * | v* | Timezone (generic non-locat.) | V* | Timezone (location) |\n * | w | Local week of year | W* | Week of month |\n * | x | Timezone (ISO-8601 w/o Z) | X | Timezone (ISO-8601) |\n * | y | Year (abs) | Y | Local week-numbering year |\n * | z | Timezone (specific non-locat.) | Z* | Timezone (aliases) |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n *\n * Letters marked by ! are non-standard, but implemented by date-fns:\n * - `o` modifies the previous token to turn it into an ordinal (see `format` docs)\n * - `i` is ISO day of week. For `i` and `ii` is returns numeric ISO week days,\n * i.e. 7 for Sunday, 1 for Monday, etc.\n * - `I` is ISO week of year, as opposed to `w` which is local week of year.\n * - `R` is ISO week-numbering year, as opposed to `Y` which is local week-numbering year.\n * `R` is supposed to be used in conjunction with `I` and `i`\n * for universal ISO week-numbering date, whereas\n * `Y` is supposed to be used in conjunction with `w` and `e`\n * for week-numbering date specific to the locale.\n * - `P` is long localized date format\n * - `p` is long localized time format\n */\n\nvar formatters = {\n // Era\n G: function G(date, token, localize) {\n var era = date.getUTCFullYear() > 0 ? 1 : 0;\n switch (token) {\n // AD, BC\n case 'G':\n case 'GG':\n case 'GGG':\n return localize.era(era, {\n width: 'abbreviated'\n });\n // A, B\n case 'GGGGG':\n return localize.era(era, {\n width: 'narrow'\n });\n // Anno Domini, Before Christ\n case 'GGGG':\n default:\n return localize.era(era, {\n width: 'wide'\n });\n }\n },\n // Year\n y: function y(date, token, localize) {\n // Ordinal number\n if (token === 'yo') {\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return localize.ordinalNumber(year, {\n unit: 'year'\n });\n }\n return _index7.default.y(date, token);\n },\n // Local week-numbering year\n Y: function Y(date, token, localize, options) {\n var signedWeekYear = (0, _index5.default)(date, options);\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var weekYear = signedWeekYear > 0 ? signedWeekYear : 1 - signedWeekYear;\n\n // Two digit year\n if (token === 'YY') {\n var twoDigitYear = weekYear % 100;\n return (0, _index6.default)(twoDigitYear, 2);\n }\n\n // Ordinal number\n if (token === 'Yo') {\n return localize.ordinalNumber(weekYear, {\n unit: 'year'\n });\n }\n\n // Padding\n return (0, _index6.default)(weekYear, token.length);\n },\n // ISO week-numbering year\n R: function R(date, token) {\n var isoWeekYear = (0, _index3.default)(date);\n\n // Padding\n return (0, _index6.default)(isoWeekYear, token.length);\n },\n // Extended year. This is a single number designating the year of this calendar system.\n // The main difference between `y` and `u` localizers are B.C. years:\n // | Year | `y` | `u` |\n // |------|-----|-----|\n // | AC 1 | 1 | 1 |\n // | BC 1 | 1 | 0 |\n // | BC 2 | 2 | -1 |\n // Also `yy` always returns the last two digits of a year,\n // while `uu` pads single digit years to 2 characters and returns other years unchanged.\n u: function u(date, token) {\n var year = date.getUTCFullYear();\n return (0, _index6.default)(year, token.length);\n },\n // Quarter\n Q: function Q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'Q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'QQ':\n return (0, _index6.default)(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'Qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'QQQ':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'QQQQQ':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'formatting'\n });\n // 1st quarter, 2nd quarter, ...\n case 'QQQQ':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone quarter\n q: function q(date, token, localize) {\n var quarter = Math.ceil((date.getUTCMonth() + 1) / 3);\n switch (token) {\n // 1, 2, 3, 4\n case 'q':\n return String(quarter);\n // 01, 02, 03, 04\n case 'qq':\n return (0, _index6.default)(quarter, 2);\n // 1st, 2nd, 3rd, 4th\n case 'qo':\n return localize.ordinalNumber(quarter, {\n unit: 'quarter'\n });\n // Q1, Q2, Q3, Q4\n case 'qqq':\n return localize.quarter(quarter, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // 1, 2, 3, 4 (narrow quarter; could be not numerical)\n case 'qqqqq':\n return localize.quarter(quarter, {\n width: 'narrow',\n context: 'standalone'\n });\n // 1st quarter, 2nd quarter, ...\n case 'qqqq':\n default:\n return localize.quarter(quarter, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Month\n M: function M(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n case 'M':\n case 'MM':\n return _index7.default.M(date, token);\n // 1st, 2nd, ..., 12th\n case 'Mo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'MMM':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // J, F, ..., D\n case 'MMMMM':\n return localize.month(month, {\n width: 'narrow',\n context: 'formatting'\n });\n // January, February, ..., December\n case 'MMMM':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone month\n L: function L(date, token, localize) {\n var month = date.getUTCMonth();\n switch (token) {\n // 1, 2, ..., 12\n case 'L':\n return String(month + 1);\n // 01, 02, ..., 12\n case 'LL':\n return (0, _index6.default)(month + 1, 2);\n // 1st, 2nd, ..., 12th\n case 'Lo':\n return localize.ordinalNumber(month + 1, {\n unit: 'month'\n });\n // Jan, Feb, ..., Dec\n case 'LLL':\n return localize.month(month, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // J, F, ..., D\n case 'LLLLL':\n return localize.month(month, {\n width: 'narrow',\n context: 'standalone'\n });\n // January, February, ..., December\n case 'LLLL':\n default:\n return localize.month(month, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // Local week of year\n w: function w(date, token, localize, options) {\n var week = (0, _index4.default)(date, options);\n if (token === 'wo') {\n return localize.ordinalNumber(week, {\n unit: 'week'\n });\n }\n return (0, _index6.default)(week, token.length);\n },\n // ISO week of year\n I: function I(date, token, localize) {\n var isoWeek = (0, _index2.default)(date);\n if (token === 'Io') {\n return localize.ordinalNumber(isoWeek, {\n unit: 'week'\n });\n }\n return (0, _index6.default)(isoWeek, token.length);\n },\n // Day of the month\n d: function d(date, token, localize) {\n if (token === 'do') {\n return localize.ordinalNumber(date.getUTCDate(), {\n unit: 'date'\n });\n }\n return _index7.default.d(date, token);\n },\n // Day of year\n D: function D(date, token, localize) {\n var dayOfYear = (0, _index.default)(date);\n if (token === 'Do') {\n return localize.ordinalNumber(dayOfYear, {\n unit: 'dayOfYear'\n });\n }\n return (0, _index6.default)(dayOfYear, token.length);\n },\n // Day of week\n E: function E(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n switch (token) {\n // Tue\n case 'E':\n case 'EE':\n case 'EEE':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'EEEEE':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'EEEEEE':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'EEEE':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Local day of week\n e: function e(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (Nth day of week with current locale or weekStartsOn)\n case 'e':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'ee':\n return (0, _index6.default)(localDayOfWeek, 2);\n // 1st, 2nd, ..., 7th\n case 'eo':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'eee':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'eeeee':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'eeeeee':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'eeee':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Stand-alone local day of week\n c: function c(date, token, localize, options) {\n var dayOfWeek = date.getUTCDay();\n var localDayOfWeek = (dayOfWeek - options.weekStartsOn + 8) % 7 || 7;\n switch (token) {\n // Numerical value (same as in `e`)\n case 'c':\n return String(localDayOfWeek);\n // Padded numerical value\n case 'cc':\n return (0, _index6.default)(localDayOfWeek, token.length);\n // 1st, 2nd, ..., 7th\n case 'co':\n return localize.ordinalNumber(localDayOfWeek, {\n unit: 'day'\n });\n case 'ccc':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'standalone'\n });\n // T\n case 'ccccc':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'standalone'\n });\n // Tu\n case 'cccccc':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'standalone'\n });\n // Tuesday\n case 'cccc':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'standalone'\n });\n }\n },\n // ISO day of week\n i: function i(date, token, localize) {\n var dayOfWeek = date.getUTCDay();\n var isoDayOfWeek = dayOfWeek === 0 ? 7 : dayOfWeek;\n switch (token) {\n // 2\n case 'i':\n return String(isoDayOfWeek);\n // 02\n case 'ii':\n return (0, _index6.default)(isoDayOfWeek, token.length);\n // 2nd\n case 'io':\n return localize.ordinalNumber(isoDayOfWeek, {\n unit: 'day'\n });\n // Tue\n case 'iii':\n return localize.day(dayOfWeek, {\n width: 'abbreviated',\n context: 'formatting'\n });\n // T\n case 'iiiii':\n return localize.day(dayOfWeek, {\n width: 'narrow',\n context: 'formatting'\n });\n // Tu\n case 'iiiiii':\n return localize.day(dayOfWeek, {\n width: 'short',\n context: 'formatting'\n });\n // Tuesday\n case 'iiii':\n default:\n return localize.day(dayOfWeek, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM or PM\n a: function a(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'aaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'aaaaa':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'aaaa':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // AM, PM, midnight, noon\n b: function b(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours === 12) {\n dayPeriodEnumValue = dayPeriodEnum.noon;\n } else if (hours === 0) {\n dayPeriodEnumValue = dayPeriodEnum.midnight;\n } else {\n dayPeriodEnumValue = hours / 12 >= 1 ? 'pm' : 'am';\n }\n switch (token) {\n case 'b':\n case 'bb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'bbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n }).toLowerCase();\n case 'bbbbb':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'bbbb':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // in the morning, in the afternoon, in the evening, at night\n B: function B(date, token, localize) {\n var hours = date.getUTCHours();\n var dayPeriodEnumValue;\n if (hours >= 17) {\n dayPeriodEnumValue = dayPeriodEnum.evening;\n } else if (hours >= 12) {\n dayPeriodEnumValue = dayPeriodEnum.afternoon;\n } else if (hours >= 4) {\n dayPeriodEnumValue = dayPeriodEnum.morning;\n } else {\n dayPeriodEnumValue = dayPeriodEnum.night;\n }\n switch (token) {\n case 'B':\n case 'BB':\n case 'BBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'abbreviated',\n context: 'formatting'\n });\n case 'BBBBB':\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'narrow',\n context: 'formatting'\n });\n case 'BBBB':\n default:\n return localize.dayPeriod(dayPeriodEnumValue, {\n width: 'wide',\n context: 'formatting'\n });\n }\n },\n // Hour [1-12]\n h: function h(date, token, localize) {\n if (token === 'ho') {\n var hours = date.getUTCHours() % 12;\n if (hours === 0) hours = 12;\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return _index7.default.h(date, token);\n },\n // Hour [0-23]\n H: function H(date, token, localize) {\n if (token === 'Ho') {\n return localize.ordinalNumber(date.getUTCHours(), {\n unit: 'hour'\n });\n }\n return _index7.default.H(date, token);\n },\n // Hour [0-11]\n K: function K(date, token, localize) {\n var hours = date.getUTCHours() % 12;\n if (token === 'Ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return (0, _index6.default)(hours, token.length);\n },\n // Hour [1-24]\n k: function k(date, token, localize) {\n var hours = date.getUTCHours();\n if (hours === 0) hours = 24;\n if (token === 'ko') {\n return localize.ordinalNumber(hours, {\n unit: 'hour'\n });\n }\n return (0, _index6.default)(hours, token.length);\n },\n // Minute\n m: function m(date, token, localize) {\n if (token === 'mo') {\n return localize.ordinalNumber(date.getUTCMinutes(), {\n unit: 'minute'\n });\n }\n return _index7.default.m(date, token);\n },\n // Second\n s: function s(date, token, localize) {\n if (token === 'so') {\n return localize.ordinalNumber(date.getUTCSeconds(), {\n unit: 'second'\n });\n }\n return _index7.default.s(date, token);\n },\n // Fraction of second\n S: function S(date, token) {\n return _index7.default.S(date, token);\n },\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function X(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n if (timezoneOffset === 0) {\n return 'Z';\n }\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function x(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset);\n\n // Hours, minutes and optional seconds without `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx':\n // Hours and minutes without `:` delimiter\n return formatTimezone(timezoneOffset);\n\n // Hours, minutes and optional seconds with `:` delimiter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimiter\n default:\n return formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (GMT)\n O: function O(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Timezone (specific non-location)\n z: function z(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timezoneOffset = originalDate.getTimezoneOffset();\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':');\n // Long\n case 'zzzz':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':');\n }\n },\n // Seconds timestamp\n t: function t(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = Math.floor(originalDate.getTime() / 1000);\n return (0, _index6.default)(timestamp, token.length);\n },\n // Milliseconds timestamp\n T: function T(date, token, _localize, options) {\n var originalDate = options._originalDate || date;\n var timestamp = originalDate.getTime();\n return (0, _index6.default)(timestamp, token.length);\n }\n};\nfunction formatTimezoneShort(offset, dirtyDelimiter) {\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = Math.floor(absOffset / 60);\n var minutes = absOffset % 60;\n if (minutes === 0) {\n return sign + String(hours);\n }\n var delimiter = dirtyDelimiter || '';\n return sign + String(hours) + delimiter + (0, _index6.default)(minutes, 2);\n}\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimiter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+';\n return sign + (0, _index6.default)(Math.abs(offset) / 60, 2);\n }\n return formatTimezone(offset, dirtyDelimiter);\n}\nfunction formatTimezone(offset, dirtyDelimiter) {\n var delimiter = dirtyDelimiter || '';\n var sign = offset > 0 ? '-' : '+';\n var absOffset = Math.abs(offset);\n var hours = (0, _index6.default)(Math.floor(absOffset / 60), 2);\n var minutes = (0, _index6.default)(absOffset % 60, 2);\n return sign + hours + delimiter + minutes;\n}\nvar _default = formatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../addLeadingZeros/index.js\"));\n/*\n * | | Unit | | Unit |\n * |-----|--------------------------------|-----|--------------------------------|\n * | a | AM, PM | A* | |\n * | d | Day of month | D | |\n * | h | Hour [1-12] | H | Hour [0-23] |\n * | m | Minute | M | Month |\n * | s | Second | S | Fraction of second |\n * | y | Year (abs) | Y | |\n *\n * Letters marked by * are not implemented but reserved by Unicode standard.\n */\n\nvar formatters = {\n // Year\n y: function y(date, token) {\n // From http://www.unicode.org/reports/tr35/tr35-31/tr35-dates.html#Date_Format_tokens\n // | Year | y | yy | yyy | yyyy | yyyyy |\n // |----------|-------|----|-------|-------|-------|\n // | AD 1 | 1 | 01 | 001 | 0001 | 00001 |\n // | AD 12 | 12 | 12 | 012 | 0012 | 00012 |\n // | AD 123 | 123 | 23 | 123 | 0123 | 00123 |\n // | AD 1234 | 1234 | 34 | 1234 | 1234 | 01234 |\n // | AD 12345 | 12345 | 45 | 12345 | 12345 | 12345 |\n\n var signedYear = date.getUTCFullYear();\n // Returns 1 for 1 BC (which is year 0 in JavaScript)\n var year = signedYear > 0 ? signedYear : 1 - signedYear;\n return (0, _index.default)(token === 'yy' ? year % 100 : year, token.length);\n },\n // Month\n M: function M(date, token) {\n var month = date.getUTCMonth();\n return token === 'M' ? String(month + 1) : (0, _index.default)(month + 1, 2);\n },\n // Day of the month\n d: function d(date, token) {\n return (0, _index.default)(date.getUTCDate(), token.length);\n },\n // AM or PM\n a: function a(date, token) {\n var dayPeriodEnumValue = date.getUTCHours() / 12 >= 1 ? 'pm' : 'am';\n switch (token) {\n case 'a':\n case 'aa':\n return dayPeriodEnumValue.toUpperCase();\n case 'aaa':\n return dayPeriodEnumValue;\n case 'aaaaa':\n return dayPeriodEnumValue[0];\n case 'aaaa':\n default:\n return dayPeriodEnumValue === 'am' ? 'a.m.' : 'p.m.';\n }\n },\n // Hour [1-12]\n h: function h(date, token) {\n return (0, _index.default)(date.getUTCHours() % 12 || 12, token.length);\n },\n // Hour [0-23]\n H: function H(date, token) {\n return (0, _index.default)(date.getUTCHours(), token.length);\n },\n // Minute\n m: function m(date, token) {\n return (0, _index.default)(date.getUTCMinutes(), token.length);\n },\n // Second\n s: function s(date, token) {\n return (0, _index.default)(date.getUTCSeconds(), token.length);\n },\n // Fraction of second\n S: function S(date, token) {\n var numberOfDigits = token.length;\n var milliseconds = date.getUTCMilliseconds();\n var fractionalSeconds = Math.floor(milliseconds * Math.pow(10, numberOfDigits - 3));\n return (0, _index.default)(fractionalSeconds, token.length);\n }\n};\nvar _default = formatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar dateLongFormatter = function dateLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'P':\n return formatLong.date({\n width: 'short'\n });\n case 'PP':\n return formatLong.date({\n width: 'medium'\n });\n case 'PPP':\n return formatLong.date({\n width: 'long'\n });\n case 'PPPP':\n default:\n return formatLong.date({\n width: 'full'\n });\n }\n};\nvar timeLongFormatter = function timeLongFormatter(pattern, formatLong) {\n switch (pattern) {\n case 'p':\n return formatLong.time({\n width: 'short'\n });\n case 'pp':\n return formatLong.time({\n width: 'medium'\n });\n case 'ppp':\n return formatLong.time({\n width: 'long'\n });\n case 'pppp':\n default:\n return formatLong.time({\n width: 'full'\n });\n }\n};\nvar dateTimeLongFormatter = function dateTimeLongFormatter(pattern, formatLong) {\n var matchResult = pattern.match(/(P+)(p+)?/) || [];\n var datePattern = matchResult[1];\n var timePattern = matchResult[2];\n if (!timePattern) {\n return dateLongFormatter(pattern, formatLong);\n }\n var dateTimeFormat;\n switch (datePattern) {\n case 'P':\n dateTimeFormat = formatLong.dateTime({\n width: 'short'\n });\n break;\n case 'PP':\n dateTimeFormat = formatLong.dateTime({\n width: 'medium'\n });\n break;\n case 'PPP':\n dateTimeFormat = formatLong.dateTime({\n width: 'long'\n });\n break;\n case 'PPPP':\n default:\n dateTimeFormat = formatLong.dateTime({\n width: 'full'\n });\n break;\n }\n return dateTimeFormat.replace('{{date}}', dateLongFormatter(datePattern, formatLong)).replace('{{time}}', timeLongFormatter(timePattern, formatLong));\n};\nvar longFormatters = {\n p: timeLongFormatter,\n P: dateTimeLongFormatter\n};\nvar _default = longFormatters;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getTimezoneOffsetInMilliseconds;\n/**\n * Google Chrome as of 67.0.3396.87 introduced timezones with offset that includes seconds.\n * They usually appear for dates that denote time before the timezones were introduced\n * (e.g. for 'Europe/Prague' timezone the offset is GMT+00:57:44 before 1 October 1891\n * and GMT+01:00:00 after that date)\n *\n * Date#getTimezoneOffset returns the offset in minutes and would return 57 for the example above,\n * which would lead to incorrect calculations.\n *\n * This function returns the timezone offset in milliseconds that takes seconds in account.\n */\nfunction getTimezoneOffsetInMilliseconds(date) {\n var utcDate = new Date(Date.UTC(date.getFullYear(), date.getMonth(), date.getDate(), date.getHours(), date.getMinutes(), date.getSeconds(), date.getMilliseconds()));\n utcDate.setUTCFullYear(date.getFullYear());\n return date.getTime() - utcDate.getTime();\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCDayOfYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_DAY = 86400000;\nfunction getUTCDayOfYear(dirtyDate) {\n (0, _index2.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var timestamp = date.getTime();\n date.setUTCMonth(0, 1);\n date.setUTCHours(0, 0, 0, 0);\n var startOfYearTimestamp = date.getTime();\n var difference = timestamp - startOfYearTimestamp;\n return Math.floor(difference / MILLISECONDS_IN_DAY) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCISOWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCISOWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_WEEK = 604800000;\nfunction getUTCISOWeek(dirtyDate) {\n (0, _index4.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var diff = (0, _index2.default)(date).getTime() - (0, _index3.default)(date).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCISOWeekYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nfunction getUTCISOWeekYear(dirtyDate) {\n (0, _index2.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var year = date.getUTCFullYear();\n var fourthOfJanuaryOfNextYear = new Date(0);\n fourthOfJanuaryOfNextYear.setUTCFullYear(year + 1, 0, 4);\n fourthOfJanuaryOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = (0, _index3.default)(fourthOfJanuaryOfNextYear);\n var fourthOfJanuaryOfThisYear = new Date(0);\n fourthOfJanuaryOfThisYear.setUTCFullYear(year, 0, 4);\n fourthOfJanuaryOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = (0, _index3.default)(fourthOfJanuaryOfThisYear);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeekYear/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar MILLISECONDS_IN_WEEK = 604800000;\nfunction getUTCWeek(dirtyDate, options) {\n (0, _index4.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var diff = (0, _index2.default)(date, options).getTime() - (0, _index3.default)(date, options).getTime();\n\n // Round the number of days to the nearest integer\n // because the number of milliseconds in a week is not constant\n // (e.g. it's different in the week of the daylight saving time clock shift)\n return Math.round(diff / MILLISECONDS_IN_WEEK) + 1;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = getUTCWeekYear;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index5 = require(\"../defaultOptions/index.js\");\nfunction getUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n (0, _index2.default)(1, arguments);\n var date = (0, _index.default)(dirtyDate);\n var year = date.getUTCFullYear();\n var defaultOptions = (0, _index5.getDefaultOptions)();\n var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var firstWeekOfNextYear = new Date(0);\n firstWeekOfNextYear.setUTCFullYear(year + 1, 0, firstWeekContainsDate);\n firstWeekOfNextYear.setUTCHours(0, 0, 0, 0);\n var startOfNextYear = (0, _index3.default)(firstWeekOfNextYear, options);\n var firstWeekOfThisYear = new Date(0);\n firstWeekOfThisYear.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeekOfThisYear.setUTCHours(0, 0, 0, 0);\n var startOfThisYear = (0, _index3.default)(firstWeekOfThisYear, options);\n if (date.getTime() >= startOfNextYear.getTime()) {\n return year + 1;\n } else if (date.getTime() >= startOfThisYear.getTime()) {\n return year;\n } else {\n return year - 1;\n }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.isProtectedDayOfYearToken = isProtectedDayOfYearToken;\nexports.isProtectedWeekYearToken = isProtectedWeekYearToken;\nexports.throwProtectedError = throwProtectedError;\nvar protectedDayOfYearTokens = ['D', 'DD'];\nvar protectedWeekYearTokens = ['YY', 'YYYY'];\nfunction isProtectedDayOfYearToken(token) {\n return protectedDayOfYearTokens.indexOf(token) !== -1;\n}\nfunction isProtectedWeekYearToken(token) {\n return protectedWeekYearTokens.indexOf(token) !== -1;\n}\nfunction throwProtectedError(token, format, input) {\n if (token === 'YYYY') {\n throw new RangeError(\"Use `yyyy` instead of `YYYY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'YY') {\n throw new RangeError(\"Use `yy` instead of `YY` (in `\".concat(format, \"`) for formatting years to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'D') {\n throw new RangeError(\"Use `d` instead of `D` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n } else if (token === 'DD') {\n throw new RangeError(\"Use `dd` instead of `DD` (in `\".concat(format, \"`) for formatting days of the month to the input `\").concat(input, \"`; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\"));\n }\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = requiredArgs;\nfunction requiredArgs(required, args) {\n if (args.length < required) {\n throw new TypeError(required + ' argument' + (required > 1 ? 's' : '') + ' required, but only ' + args.length + ' present');\n }\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startOfUTCISOWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nfunction startOfUTCISOWeek(dirtyDate) {\n (0, _index2.default)(1, arguments);\n var weekStartsOn = 1;\n var date = (0, _index.default)(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startOfUTCISOWeekYear;\nvar _index = _interopRequireDefault(require(\"../getUTCISOWeekYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../startOfUTCISOWeek/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nfunction startOfUTCISOWeekYear(dirtyDate) {\n (0, _index3.default)(1, arguments);\n var year = (0, _index.default)(dirtyDate);\n var fourthOfJanuary = new Date(0);\n fourthOfJanuary.setUTCFullYear(year, 0, 4);\n fourthOfJanuary.setUTCHours(0, 0, 0, 0);\n var date = (0, _index2.default)(fourthOfJanuary);\n return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startOfUTCWeek;\nvar _index = _interopRequireDefault(require(\"../../toDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index4 = require(\"../defaultOptions/index.js\");\nfunction startOfUTCWeek(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$weekStartsOn, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n (0, _index2.default)(1, arguments);\n var defaultOptions = (0, _index4.getDefaultOptions)();\n var weekStartsOn = (0, _index3.default)((_ref = (_ref2 = (_ref3 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.weekStartsOn) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.weekStartsOn) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.weekStartsOn) !== null && _ref !== void 0 ? _ref : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n var date = (0, _index.default)(dirtyDate);\n var day = date.getUTCDay();\n var diff = (day < weekStartsOn ? 7 : 0) + day - weekStartsOn;\n date.setUTCDate(date.getUTCDate() - diff);\n date.setUTCHours(0, 0, 0, 0);\n return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = startOfUTCWeekYear;\nvar _index = _interopRequireDefault(require(\"../getUTCWeekYear/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../startOfUTCWeek/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../toInteger/index.js\"));\nvar _index5 = require(\"../defaultOptions/index.js\");\nfunction startOfUTCWeekYear(dirtyDate, options) {\n var _ref, _ref2, _ref3, _options$firstWeekCon, _options$locale, _options$locale$optio, _defaultOptions$local, _defaultOptions$local2;\n (0, _index2.default)(1, arguments);\n var defaultOptions = (0, _index5.getDefaultOptions)();\n var firstWeekContainsDate = (0, _index4.default)((_ref = (_ref2 = (_ref3 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale = options.locale) === null || _options$locale === void 0 ? void 0 : (_options$locale$optio = _options$locale.options) === null || _options$locale$optio === void 0 ? void 0 : _options$locale$optio.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : defaultOptions.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref !== void 0 ? _ref : 1);\n var year = (0, _index.default)(dirtyDate, options);\n var firstWeek = new Date(0);\n firstWeek.setUTCFullYear(year, 0, firstWeekContainsDate);\n firstWeek.setUTCHours(0, 0, 0, 0);\n var date = (0, _index3.default)(firstWeek, options);\n return date;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toInteger;\nfunction toInteger(dirtyNumber) {\n if (dirtyNumber === null || dirtyNumber === true || dirtyNumber === false) {\n return NaN;\n }\n var number = Number(dirtyNumber);\n if (isNaN(number)) {\n return number;\n }\n return number < 0 ? Math.ceil(number) : Math.floor(number);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = addMilliseconds;\nvar _index = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name addMilliseconds\n * @category Millisecond Helpers\n * @summary Add the specified number of milliseconds to the given date.\n *\n * @description\n * Add the specified number of milliseconds to the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be added. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds added\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Add 750 milliseconds to 10 July 2014 12:45:30.000:\n * const result = addMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:30.750\n */\nfunction addMilliseconds(dirtyDate, dirtyAmount) {\n (0, _index3.default)(2, arguments);\n var timestamp = (0, _index2.default)(dirtyDate).getTime();\n var amount = (0, _index.default)(dirtyAmount);\n return new Date(timestamp + amount);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = format;\nvar _index = _interopRequireDefault(require(\"../isValid/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../subMilliseconds/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"../_lib/format/formatters/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"../_lib/format/longFormatters/index.js\"));\nvar _index6 = _interopRequireDefault(require(\"../_lib/getTimezoneOffsetInMilliseconds/index.js\"));\nvar _index7 = require(\"../_lib/protectedTokens/index.js\");\nvar _index8 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\nvar _index9 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index10 = require(\"../_lib/defaultOptions/index.js\");\nvar _index11 = _interopRequireDefault(require(\"../_lib/defaultLocale/index.js\"));\n// This RegExp consists of three parts separated by `|`:\n// - [yYQqMLwIdDecihHKkms]o matches any available ordinal number token\n// (one of the certain letters followed by `o`)\n// - (\\w)\\1* matches any sequences of the same letter\n// - '' matches two quote characters in a row\n// - '(''|[^'])+('|$) matches anything surrounded by two quote characters ('),\n// except a single quote symbol, which ends the sequence.\n// Two quote characters do not end the sequence.\n// If there is no matching single quote\n// then the sequence will continue until the end of the string.\n// - . matches any single character unmatched by previous parts of the RegExps\nvar formattingTokensRegExp = /[yYQqMLwIdDecihHKkms]o|(\\w)\\1*|''|'(''|[^'])+('|$)|./g;\n\n// This RegExp catches symbols escaped by quotes, and also\n// sequences of symbols P, p, and the combinations like `PPPPPPPppppp`\nvar longFormattingTokensRegExp = /P+p+|P+|p+|''|'(''|[^'])+('|$)|./g;\nvar escapedStringRegExp = /^'([^]*?)'?$/;\nvar doubleQuoteRegExp = /''/g;\nvar unescapedLatinCharacterRegExp = /[a-zA-Z]/;\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 9 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 9 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Sun | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Sun | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Sa, Su | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Sun | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Sun | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Sa, Su | |\n * | AM, PM | a..aa | AM, PM | |\n * | | aaa | am, pm | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bb | AM, PM, noon, midnight | |\n * | | bbb | am, pm, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 01, 02, ..., 11, 00 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | GMT-8, GMT+5:30, GMT+0 | 6 |\n * | | zzzz | GMT-08:00, GMT+05:30, GMT+00:00 | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 04/29/1453 | 7 |\n * | | PP | Apr 29, 1453 | 7 |\n * | | PPP | April 29th, 1453 | 7 |\n * | | PPPP | Friday, April 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 04/29/1453, 12:00 AM | 7 |\n * | | PPpp | Apr 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | April 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Friday, April 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are currently unavailable in `date-fns`,\n * so right now these tokens fall back to GMT timezones.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. `YY` and `YYYY` tokens represent week-numbering years but they are often confused with years.\n * You should enable `options.useAdditionalWeekYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * 9. `D` and `DD` tokens represent days of the year but they are often confused with days of the month.\n * You should enable `options.useAdditionalDayOfYearTokens` to use them. See: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {Object} [options] - an object with options.\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Boolean} [options.useAdditionalWeekYearTokens=false] - if true, allows usage of the week-numbering year tokens `YY` and `YYYY`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @param {Boolean} [options.useAdditionalDayOfYearTokens=false] - if true, allows usage of the day of year tokens `D` and `DD`;\n * see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `date` must not be Invalid Date\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} use `yyyy` instead of `YYYY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `yy` instead of `YY` for formatting years using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `d` instead of `D` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} use `dd` instead of `DD` for formatting days of the month using [format provided] to the input [input provided]; see: https://github.com/date-fns/date-fns/blob/master/docs/unicodeTokens.md\n * @throws {RangeError} format string contains an unescaped latin alphabet character\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * const result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * const result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * const result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\n\nfunction format(dirtyDate, dirtyFormatStr, options) {\n var _ref, _options$locale, _ref2, _ref3, _ref4, _options$firstWeekCon, _options$locale2, _options$locale2$opti, _defaultOptions$local, _defaultOptions$local2, _ref5, _ref6, _ref7, _options$weekStartsOn, _options$locale3, _options$locale3$opti, _defaultOptions$local3, _defaultOptions$local4;\n (0, _index9.default)(2, arguments);\n var formatStr = String(dirtyFormatStr);\n var defaultOptions = (0, _index10.getDefaultOptions)();\n var locale = (_ref = (_options$locale = options === null || options === void 0 ? void 0 : options.locale) !== null && _options$locale !== void 0 ? _options$locale : defaultOptions.locale) !== null && _ref !== void 0 ? _ref : _index11.default;\n var firstWeekContainsDate = (0, _index8.default)((_ref2 = (_ref3 = (_ref4 = (_options$firstWeekCon = options === null || options === void 0 ? void 0 : options.firstWeekContainsDate) !== null && _options$firstWeekCon !== void 0 ? _options$firstWeekCon : options === null || options === void 0 ? void 0 : (_options$locale2 = options.locale) === null || _options$locale2 === void 0 ? void 0 : (_options$locale2$opti = _options$locale2.options) === null || _options$locale2$opti === void 0 ? void 0 : _options$locale2$opti.firstWeekContainsDate) !== null && _ref4 !== void 0 ? _ref4 : defaultOptions.firstWeekContainsDate) !== null && _ref3 !== void 0 ? _ref3 : (_defaultOptions$local = defaultOptions.locale) === null || _defaultOptions$local === void 0 ? void 0 : (_defaultOptions$local2 = _defaultOptions$local.options) === null || _defaultOptions$local2 === void 0 ? void 0 : _defaultOptions$local2.firstWeekContainsDate) !== null && _ref2 !== void 0 ? _ref2 : 1);\n\n // Test if weekStartsOn is between 1 and 7 _and_ is not NaN\n if (!(firstWeekContainsDate >= 1 && firstWeekContainsDate <= 7)) {\n throw new RangeError('firstWeekContainsDate must be between 1 and 7 inclusively');\n }\n var weekStartsOn = (0, _index8.default)((_ref5 = (_ref6 = (_ref7 = (_options$weekStartsOn = options === null || options === void 0 ? void 0 : options.weekStartsOn) !== null && _options$weekStartsOn !== void 0 ? _options$weekStartsOn : options === null || options === void 0 ? void 0 : (_options$locale3 = options.locale) === null || _options$locale3 === void 0 ? void 0 : (_options$locale3$opti = _options$locale3.options) === null || _options$locale3$opti === void 0 ? void 0 : _options$locale3$opti.weekStartsOn) !== null && _ref7 !== void 0 ? _ref7 : defaultOptions.weekStartsOn) !== null && _ref6 !== void 0 ? _ref6 : (_defaultOptions$local3 = defaultOptions.locale) === null || _defaultOptions$local3 === void 0 ? void 0 : (_defaultOptions$local4 = _defaultOptions$local3.options) === null || _defaultOptions$local4 === void 0 ? void 0 : _defaultOptions$local4.weekStartsOn) !== null && _ref5 !== void 0 ? _ref5 : 0);\n\n // Test if weekStartsOn is between 0 and 6 _and_ is not NaN\n if (!(weekStartsOn >= 0 && weekStartsOn <= 6)) {\n throw new RangeError('weekStartsOn must be between 0 and 6 inclusively');\n }\n if (!locale.localize) {\n throw new RangeError('locale must contain localize property');\n }\n if (!locale.formatLong) {\n throw new RangeError('locale must contain formatLong property');\n }\n var originalDate = (0, _index3.default)(dirtyDate);\n if (!(0, _index.default)(originalDate)) {\n throw new RangeError('Invalid time value');\n }\n\n // Convert the date in system timezone to the same date in UTC+00:00 timezone.\n // This ensures that when UTC functions will be implemented, locales will be compatible with them.\n // See an issue about UTC functions: https://github.com/date-fns/date-fns/issues/376\n var timezoneOffset = (0, _index6.default)(originalDate);\n var utcDate = (0, _index2.default)(originalDate, timezoneOffset);\n var formatterOptions = {\n firstWeekContainsDate: firstWeekContainsDate,\n weekStartsOn: weekStartsOn,\n locale: locale,\n _originalDate: originalDate\n };\n var result = formatStr.match(longFormattingTokensRegExp).map(function (substring) {\n var firstCharacter = substring[0];\n if (firstCharacter === 'p' || firstCharacter === 'P') {\n var longFormatter = _index5.default[firstCharacter];\n return longFormatter(substring, locale.formatLong);\n }\n return substring;\n }).join('').match(formattingTokensRegExp).map(function (substring) {\n // Replace two single quote characters with one single quote character\n if (substring === \"''\") {\n return \"'\";\n }\n var firstCharacter = substring[0];\n if (firstCharacter === \"'\") {\n return cleanEscapedString(substring);\n }\n var formatter = _index4.default[firstCharacter];\n if (formatter) {\n if (!(options !== null && options !== void 0 && options.useAdditionalWeekYearTokens) && (0, _index7.isProtectedWeekYearToken)(substring)) {\n (0, _index7.throwProtectedError)(substring, dirtyFormatStr, String(dirtyDate));\n }\n if (!(options !== null && options !== void 0 && options.useAdditionalDayOfYearTokens) && (0, _index7.isProtectedDayOfYearToken)(substring)) {\n (0, _index7.throwProtectedError)(substring, dirtyFormatStr, String(dirtyDate));\n }\n return formatter(utcDate, substring, locale.localize, formatterOptions);\n }\n if (firstCharacter.match(unescapedLatinCharacterRegExp)) {\n throw new RangeError('Format string contains an unescaped latin alphabet character `' + firstCharacter + '`');\n }\n return substring;\n }).join('');\n return result;\n}\nfunction cleanEscapedString(input) {\n var matched = input.match(escapedStringRegExp);\n if (!matched) {\n return input;\n }\n return matched[1].replace(doubleQuoteRegExp, \"'\");\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isDate;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isDate\n * @category Common Helpers\n * @summary Is the given value a date?\n *\n * @description\n * Returns true if the given value is an instance of Date. The function works for dates transferred across iframes.\n *\n * @param {*} value - the value to check\n * @returns {boolean} true if the given value is a date\n * @throws {TypeError} 1 arguments required\n *\n * @example\n * // For a valid date:\n * const result = isDate(new Date())\n * //=> true\n *\n * @example\n * // For an invalid date:\n * const result = isDate(new Date(NaN))\n * //=> true\n *\n * @example\n * // For some value:\n * const result = isDate('2014-02-31')\n * //=> false\n *\n * @example\n * // For an object:\n * const result = isDate({})\n * //=> false\n */\nfunction isDate(value) {\n (0, _index.default)(1, arguments);\n return value instanceof Date || (0, _typeof2.default)(value) === 'object' && Object.prototype.toString.call(value) === '[object Date]';\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = isValid;\nvar _index = _interopRequireDefault(require(\"../isDate/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../toDate/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name isValid\n * @category Common Helpers\n * @summary Is the given date valid?\n *\n * @description\n * Returns false if argument is Invalid Date and true otherwise.\n * Argument is converted to Date using `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * Invalid Date is a Date, whose time value is NaN.\n *\n * Time value of Date: http://es5.github.io/#x15.9.1.1\n *\n * @param {*} date - the date to check\n * @returns {Boolean} the date is valid\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // For the valid date:\n * const result = isValid(new Date(2014, 1, 31))\n * //=> true\n *\n * @example\n * // For the value, convertable into a date:\n * const result = isValid(1393804800000)\n * //=> true\n *\n * @example\n * // For the invalid date:\n * const result = isValid(new Date(''))\n * //=> false\n */\nfunction isValid(dirtyDate) {\n (0, _index3.default)(1, arguments);\n if (!(0, _index.default)(dirtyDate) && typeof dirtyDate !== 'number') {\n return false;\n }\n var date = (0, _index2.default)(dirtyDate);\n return !isNaN(Number(date));\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildFormatLongFn;\nfunction buildFormatLongFn(args) {\n return function () {\n var options = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};\n // TODO: Remove String()\n var width = options.width ? String(options.width) : args.defaultWidth;\n var format = args.formats[width] || args.formats[args.defaultWidth];\n return format;\n };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildLocalizeFn;\nfunction buildLocalizeFn(args) {\n return function (dirtyIndex, options) {\n var context = options !== null && options !== void 0 && options.context ? String(options.context) : 'standalone';\n var valuesArray;\n if (context === 'formatting' && args.formattingValues) {\n var defaultWidth = args.defaultFormattingWidth || args.defaultWidth;\n var width = options !== null && options !== void 0 && options.width ? String(options.width) : defaultWidth;\n valuesArray = args.formattingValues[width] || args.formattingValues[defaultWidth];\n } else {\n var _defaultWidth = args.defaultWidth;\n var _width = options !== null && options !== void 0 && options.width ? String(options.width) : args.defaultWidth;\n valuesArray = args.values[_width] || args.values[_defaultWidth];\n }\n var index = args.argumentCallback ? args.argumentCallback(dirtyIndex) : dirtyIndex;\n // @ts-ignore: For some reason TypeScript just don't want to match it, no matter how hard we try. I challenge you to try to remove it!\n return valuesArray[index];\n };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildMatchFn;\nfunction buildMatchFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var width = options.width;\n var matchPattern = width && args.matchPatterns[width] || args.matchPatterns[args.defaultMatchWidth];\n var matchResult = string.match(matchPattern);\n if (!matchResult) {\n return null;\n }\n var matchedString = matchResult[0];\n var parsePatterns = width && args.parsePatterns[width] || args.parsePatterns[args.defaultParseWidth];\n var key = Array.isArray(parsePatterns) ? findIndex(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n }) : findKey(parsePatterns, function (pattern) {\n return pattern.test(matchedString);\n });\n var value;\n value = args.valueCallback ? args.valueCallback(key) : key;\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nfunction findKey(object, predicate) {\n for (var key in object) {\n if (object.hasOwnProperty(key) && predicate(object[key])) {\n return key;\n }\n }\n return undefined;\n}\nfunction findIndex(array, predicate) {\n for (var key = 0; key < array.length; key++) {\n if (predicate(array[key])) {\n return key;\n }\n }\n return undefined;\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = buildMatchPatternFn;\nfunction buildMatchPatternFn(args) {\n return function (string) {\n var options = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};\n var matchResult = string.match(args.matchPattern);\n if (!matchResult) return null;\n var matchedString = matchResult[0];\n var parseResult = string.match(args.parsePattern);\n if (!parseResult) return null;\n var value = args.valueCallback ? args.valueCallback(parseResult[0]) : parseResult[0];\n value = options.valueCallback ? options.valueCallback(value) : value;\n var rest = string.slice(matchedString.length);\n return {\n value: value,\n rest: rest\n };\n };\n}\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar formatDistanceLocale = {\n lessThanXSeconds: {\n one: 'less than a second',\n other: 'less than {{count}} seconds'\n },\n xSeconds: {\n one: '1 second',\n other: '{{count}} seconds'\n },\n halfAMinute: 'half a minute',\n lessThanXMinutes: {\n one: 'less than a minute',\n other: 'less than {{count}} minutes'\n },\n xMinutes: {\n one: '1 minute',\n other: '{{count}} minutes'\n },\n aboutXHours: {\n one: 'about 1 hour',\n other: 'about {{count}} hours'\n },\n xHours: {\n one: '1 hour',\n other: '{{count}} hours'\n },\n xDays: {\n one: '1 day',\n other: '{{count}} days'\n },\n aboutXWeeks: {\n one: 'about 1 week',\n other: 'about {{count}} weeks'\n },\n xWeeks: {\n one: '1 week',\n other: '{{count}} weeks'\n },\n aboutXMonths: {\n one: 'about 1 month',\n other: 'about {{count}} months'\n },\n xMonths: {\n one: '1 month',\n other: '{{count}} months'\n },\n aboutXYears: {\n one: 'about 1 year',\n other: 'about {{count}} years'\n },\n xYears: {\n one: '1 year',\n other: '{{count}} years'\n },\n overXYears: {\n one: 'over 1 year',\n other: 'over {{count}} years'\n },\n almostXYears: {\n one: 'almost 1 year',\n other: 'almost {{count}} years'\n }\n};\nvar formatDistance = function formatDistance(token, count, options) {\n var result;\n var tokenValue = formatDistanceLocale[token];\n if (typeof tokenValue === 'string') {\n result = tokenValue;\n } else if (count === 1) {\n result = tokenValue.one;\n } else {\n result = tokenValue.other.replace('{{count}}', count.toString());\n }\n if (options !== null && options !== void 0 && options.addSuffix) {\n if (options.comparison && options.comparison > 0) {\n return 'in ' + result;\n } else {\n return result + ' ago';\n }\n }\n return result;\n};\nvar _default = formatDistance;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildFormatLongFn/index.js\"));\nvar dateFormats = {\n full: 'EEEE, MMMM do, y',\n long: 'MMMM do, y',\n medium: 'MMM d, y',\n short: 'MM/dd/yyyy'\n};\nvar timeFormats = {\n full: 'h:mm:ss a zzzz',\n long: 'h:mm:ss a z',\n medium: 'h:mm:ss a',\n short: 'h:mm a'\n};\nvar dateTimeFormats = {\n full: \"{{date}} 'at' {{time}}\",\n long: \"{{date}} 'at' {{time}}\",\n medium: '{{date}}, {{time}}',\n short: '{{date}}, {{time}}'\n};\nvar formatLong = {\n date: (0, _index.default)({\n formats: dateFormats,\n defaultWidth: 'full'\n }),\n time: (0, _index.default)({\n formats: timeFormats,\n defaultWidth: 'full'\n }),\n dateTime: (0, _index.default)({\n formats: dateTimeFormats,\n defaultWidth: 'full'\n })\n};\nvar _default = formatLong;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar formatRelativeLocale = {\n lastWeek: \"'last' eeee 'at' p\",\n yesterday: \"'yesterday at' p\",\n today: \"'today at' p\",\n tomorrow: \"'tomorrow at' p\",\n nextWeek: \"eeee 'at' p\",\n other: 'P'\n};\nvar formatRelative = function formatRelative(token, _date, _baseDate, _options) {\n return formatRelativeLocale[token];\n};\nvar _default = formatRelative;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildLocalizeFn/index.js\"));\nvar eraValues = {\n narrow: ['B', 'A'],\n abbreviated: ['BC', 'AD'],\n wide: ['Before Christ', 'Anno Domini']\n};\nvar quarterValues = {\n narrow: ['1', '2', '3', '4'],\n abbreviated: ['Q1', 'Q2', 'Q3', 'Q4'],\n wide: ['1st quarter', '2nd quarter', '3rd quarter', '4th quarter']\n};\n\n// Note: in English, the names of days of the week and months are capitalized.\n// If you are making a new locale based on this one, check if the same is true for the language you're working on.\n// Generally, formatted dates should look like they are in the middle of a sentence,\n// e.g. in Spanish language the weekdays and months should be in the lowercase.\nvar monthValues = {\n narrow: ['J', 'F', 'M', 'A', 'M', 'J', 'J', 'A', 'S', 'O', 'N', 'D'],\n abbreviated: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],\n wide: ['January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December']\n};\nvar dayValues = {\n narrow: ['S', 'M', 'T', 'W', 'T', 'F', 'S'],\n short: ['Su', 'Mo', 'Tu', 'We', 'Th', 'Fr', 'Sa'],\n abbreviated: ['Sun', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat'],\n wide: ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday']\n};\nvar dayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'morning',\n afternoon: 'afternoon',\n evening: 'evening',\n night: 'night'\n }\n};\nvar formattingDayPeriodValues = {\n narrow: {\n am: 'a',\n pm: 'p',\n midnight: 'mi',\n noon: 'n',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n abbreviated: {\n am: 'AM',\n pm: 'PM',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n },\n wide: {\n am: 'a.m.',\n pm: 'p.m.',\n midnight: 'midnight',\n noon: 'noon',\n morning: 'in the morning',\n afternoon: 'in the afternoon',\n evening: 'in the evening',\n night: 'at night'\n }\n};\nvar ordinalNumber = function ordinalNumber(dirtyNumber, _options) {\n var number = Number(dirtyNumber);\n\n // If ordinal numbers depend on context, for example,\n // if they are different for different grammatical genders,\n // use `options.unit`.\n //\n // `unit` can be 'year', 'quarter', 'month', 'week', 'date', 'dayOfYear',\n // 'day', 'hour', 'minute', 'second'.\n\n var rem100 = number % 100;\n if (rem100 > 20 || rem100 < 10) {\n switch (rem100 % 10) {\n case 1:\n return number + 'st';\n case 2:\n return number + 'nd';\n case 3:\n return number + 'rd';\n }\n }\n return number + 'th';\n};\nvar localize = {\n ordinalNumber: ordinalNumber,\n era: (0, _index.default)({\n values: eraValues,\n defaultWidth: 'wide'\n }),\n quarter: (0, _index.default)({\n values: quarterValues,\n defaultWidth: 'wide',\n argumentCallback: function argumentCallback(quarter) {\n return quarter - 1;\n }\n }),\n month: (0, _index.default)({\n values: monthValues,\n defaultWidth: 'wide'\n }),\n day: (0, _index.default)({\n values: dayValues,\n defaultWidth: 'wide'\n }),\n dayPeriod: (0, _index.default)({\n values: dayPeriodValues,\n defaultWidth: 'wide',\n formattingValues: formattingDayPeriodValues,\n defaultFormattingWidth: 'wide'\n })\n};\nvar _default = localize;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"../../../_lib/buildMatchFn/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../../../_lib/buildMatchPatternFn/index.js\"));\nvar matchOrdinalNumberPattern = /^(\\d+)(th|st|nd|rd)?/i;\nvar parseOrdinalNumberPattern = /\\d+/i;\nvar matchEraPatterns = {\n narrow: /^(b|a)/i,\n abbreviated: /^(b\\.?\\s?c\\.?|b\\.?\\s?c\\.?\\s?e\\.?|a\\.?\\s?d\\.?|c\\.?\\s?e\\.?)/i,\n wide: /^(before christ|before common era|anno domini|common era)/i\n};\nvar parseEraPatterns = {\n any: [/^b/i, /^(a|c)/i]\n};\nvar matchQuarterPatterns = {\n narrow: /^[1234]/i,\n abbreviated: /^q[1234]/i,\n wide: /^[1234](th|st|nd|rd)? quarter/i\n};\nvar parseQuarterPatterns = {\n any: [/1/i, /2/i, /3/i, /4/i]\n};\nvar matchMonthPatterns = {\n narrow: /^[jfmasond]/i,\n abbreviated: /^(jan|feb|mar|apr|may|jun|jul|aug|sep|oct|nov|dec)/i,\n wide: /^(january|february|march|april|may|june|july|august|september|october|november|december)/i\n};\nvar parseMonthPatterns = {\n narrow: [/^j/i, /^f/i, /^m/i, /^a/i, /^m/i, /^j/i, /^j/i, /^a/i, /^s/i, /^o/i, /^n/i, /^d/i],\n any: [/^ja/i, /^f/i, /^mar/i, /^ap/i, /^may/i, /^jun/i, /^jul/i, /^au/i, /^s/i, /^o/i, /^n/i, /^d/i]\n};\nvar matchDayPatterns = {\n narrow: /^[smtwf]/i,\n short: /^(su|mo|tu|we|th|fr|sa)/i,\n abbreviated: /^(sun|mon|tue|wed|thu|fri|sat)/i,\n wide: /^(sunday|monday|tuesday|wednesday|thursday|friday|saturday)/i\n};\nvar parseDayPatterns = {\n narrow: [/^s/i, /^m/i, /^t/i, /^w/i, /^t/i, /^f/i, /^s/i],\n any: [/^su/i, /^m/i, /^tu/i, /^w/i, /^th/i, /^f/i, /^sa/i]\n};\nvar matchDayPeriodPatterns = {\n narrow: /^(a|p|mi|n|(in the|at) (morning|afternoon|evening|night))/i,\n any: /^([ap]\\.?\\s?m\\.?|midnight|noon|(in the|at) (morning|afternoon|evening|night))/i\n};\nvar parseDayPeriodPatterns = {\n any: {\n am: /^a/i,\n pm: /^p/i,\n midnight: /^mi/i,\n noon: /^no/i,\n morning: /morning/i,\n afternoon: /afternoon/i,\n evening: /evening/i,\n night: /night/i\n }\n};\nvar match = {\n ordinalNumber: (0, _index2.default)({\n matchPattern: matchOrdinalNumberPattern,\n parsePattern: parseOrdinalNumberPattern,\n valueCallback: function valueCallback(value) {\n return parseInt(value, 10);\n }\n }),\n era: (0, _index.default)({\n matchPatterns: matchEraPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseEraPatterns,\n defaultParseWidth: 'any'\n }),\n quarter: (0, _index.default)({\n matchPatterns: matchQuarterPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseQuarterPatterns,\n defaultParseWidth: 'any',\n valueCallback: function valueCallback(index) {\n return index + 1;\n }\n }),\n month: (0, _index.default)({\n matchPatterns: matchMonthPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseMonthPatterns,\n defaultParseWidth: 'any'\n }),\n day: (0, _index.default)({\n matchPatterns: matchDayPatterns,\n defaultMatchWidth: 'wide',\n parsePatterns: parseDayPatterns,\n defaultParseWidth: 'any'\n }),\n dayPeriod: (0, _index.default)({\n matchPatterns: matchDayPeriodPatterns,\n defaultMatchWidth: 'any',\n parsePatterns: parseDayPeriodPatterns,\n defaultParseWidth: 'any'\n })\n};\nvar _default = match;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _index = _interopRequireDefault(require(\"./_lib/formatDistance/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"./_lib/formatLong/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"./_lib/formatRelative/index.js\"));\nvar _index4 = _interopRequireDefault(require(\"./_lib/localize/index.js\"));\nvar _index5 = _interopRequireDefault(require(\"./_lib/match/index.js\"));\n/**\n * @type {Locale}\n * @category Locales\n * @summary English locale (United States).\n * @language English\n * @iso-639-2 eng\n * @author Sasha Koss [@kossnocorp]{@link https://github.com/kossnocorp}\n * @author Lesha Koss [@leshakoss]{@link https://github.com/leshakoss}\n */\nvar locale = {\n code: 'en-US',\n formatDistance: _index.default,\n formatLong: _index2.default,\n formatRelative: _index3.default,\n localize: _index4.default,\n match: _index5.default,\n options: {\n weekStartsOn: 0 /* Sunday */,\n firstWeekContainsDate: 1\n }\n};\nvar _default = locale;\nexports.default = _default;\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = subMilliseconds;\nvar _index = _interopRequireDefault(require(\"../addMilliseconds/index.js\"));\nvar _index2 = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\nvar _index3 = _interopRequireDefault(require(\"../_lib/toInteger/index.js\"));\n/**\n * @name subMilliseconds\n * @category Millisecond Helpers\n * @summary Subtract the specified number of milliseconds from the given date.\n *\n * @description\n * Subtract the specified number of milliseconds from the given date.\n *\n * @param {Date|Number} date - the date to be changed\n * @param {Number} amount - the amount of milliseconds to be subtracted. Positive decimals will be rounded using `Math.floor`, decimals less than zero will be rounded using `Math.ceil`.\n * @returns {Date} the new date with the milliseconds subtracted\n * @throws {TypeError} 2 arguments required\n *\n * @example\n * // Subtract 750 milliseconds from 10 July 2014 12:45:30.000:\n * const result = subMilliseconds(new Date(2014, 6, 10, 12, 45, 30, 0), 750)\n * //=> Thu Jul 10 2014 12:45:29.250\n */\nfunction subMilliseconds(dirtyDate, dirtyAmount) {\n (0, _index2.default)(2, arguments);\n var amount = (0, _index3.default)(dirtyAmount);\n return (0, _index.default)(dirtyDate, -amount);\n}\nmodule.exports = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime/helpers/interopRequireDefault\").default;\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = toDate;\nvar _typeof2 = _interopRequireDefault(require(\"@babel/runtime/helpers/typeof\"));\nvar _index = _interopRequireDefault(require(\"../_lib/requiredArgs/index.js\"));\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n *\n * @param {Date|Number} argument - the value to convert\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n *\n * @example\n * // Clone the date:\n * const result = toDate(new Date(2014, 1, 11, 11, 30, 30))\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert the timestamp to date:\n * const result = toDate(1392098430000)\n * //=> Tue Feb 11 2014 11:30:30\n */\nfunction toDate(argument) {\n (0, _index.default)(1, arguments);\n var argStr = Object.prototype.toString.call(argument);\n\n // Clone the date\n if (argument instanceof Date || (0, _typeof2.default)(argument) === 'object' && argStr === '[object Date]') {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime());\n } else if (typeof argument === 'number' || argStr === '[object Number]') {\n return new Date(argument);\n } else {\n if ((typeof argument === 'string' || argStr === '[object String]') && typeof console !== 'undefined') {\n // eslint-disable-next-line no-console\n console.warn(\"Starting with v2.0.0-beta.1 date-fns doesn't accept strings as date arguments. Please use `parseISO` to parse strings. See: https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#string-arguments\");\n // eslint-disable-next-line no-console\n console.warn(new Error().stack);\n }\n return new Date(NaN);\n }\n}\nmodule.exports = exports.default;","// The MIT License (MIT)\n//\n// Copyright (c) Sindre Sorhus (sindresorhus.com)\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// This piece of code is adopted from https://github.com/sindresorhus/p-defer\n\n// The reason why we need to fork it is because:\n// - The original package published to NPM is not ES5-compliant\n// - Due to the use of arrow functions\n// - create-react-app@1 does not play nice with packages that are not ES5-compliant\n// - create-react-app@2 do play nice, but it was so new that most of the people are still on @1\n\n// Criteria to remove this package:\n// - When create-react-app@2 become mainstream, or,\n// - When p-defer start publishing a ES5-compliant version on NPM\n\n'use strict';\n\nmodule.exports = function () {\n const ret = {};\n\n ret.promise = new Promise(function (resolve, reject) {\n ret.resolve = resolve;\n ret.reject = reject;\n });\n\n return ret;\n};\n","import createDeferred from './external/p-defer';\n\nexport default class EventAsPromise {\n constructor(options = {}) {\n this.defers = [];\n this.upcomingDeferred = null;\n this.eventListener = this.eventListener.bind(this);\n this.options = options;\n\n this.one = this.one.bind(this);\n this.upcoming = this.upcoming.bind(this);\n\n this[Symbol.iterator] = () => ({\n next: () => ({\n done: false,\n value: this.upcoming()\n })\n });\n }\n\n eventListener(event) {\n const deferred = this.defers.shift();\n const args = this.options.array ? [].slice.call(arguments) : event;\n\n deferred && deferred.resolve(args);\n\n if (this.upcomingDeferred) {\n this.upcomingDeferred.resolve(args);\n this.upcomingDeferred = null;\n }\n }\n\n one() {\n const deferred = createDeferred();\n\n this.defers.push(deferred);\n\n return deferred.promise;\n }\n\n upcoming() {\n if (!this.upcomingDeferred) {\n this.upcomingDeferred = createDeferred();\n }\n\n return this.upcomingDeferred.promise;\n }\n}\n","'use strict';\n\nObject.defineProperty(exports, '__esModule', { value: true });\n\nvar _toConsumableArray = require('@babel/runtime/helpers/toConsumableArray');\nvar _set = require('@babel/runtime/helpers/set');\nvar _get = require('@babel/runtime/helpers/get');\nvar _assertThisInitialized = require('@babel/runtime/helpers/assertThisInitialized');\nvar _inherits = require('@babel/runtime/helpers/inherits');\nvar _possibleConstructorReturn = require('@babel/runtime/helpers/possibleConstructorReturn');\nvar _getPrototypeOf = require('@babel/runtime/helpers/getPrototypeOf');\nvar _wrapNativeSuper = require('@babel/runtime/helpers/wrapNativeSuper');\nvar _defineProperty = require('@babel/runtime/helpers/defineProperty');\nvar _classCallCheck = require('@babel/runtime/helpers/classCallCheck');\nvar _createClass = require('@babel/runtime/helpers/createClass');\nvar _typeof = require('@babel/runtime/helpers/typeof');\n\nfunction _interopDefaultLegacy (e) { return e && typeof e === 'object' && 'default' in e ? e : { 'default': e }; }\n\nvar _toConsumableArray__default = /*#__PURE__*/_interopDefaultLegacy(_toConsumableArray);\nvar _set__default = /*#__PURE__*/_interopDefaultLegacy(_set);\nvar _get__default = /*#__PURE__*/_interopDefaultLegacy(_get);\nvar _assertThisInitialized__default = /*#__PURE__*/_interopDefaultLegacy(_assertThisInitialized);\nvar _inherits__default = /*#__PURE__*/_interopDefaultLegacy(_inherits);\nvar _possibleConstructorReturn__default = /*#__PURE__*/_interopDefaultLegacy(_possibleConstructorReturn);\nvar _getPrototypeOf__default = /*#__PURE__*/_interopDefaultLegacy(_getPrototypeOf);\nvar _wrapNativeSuper__default = /*#__PURE__*/_interopDefaultLegacy(_wrapNativeSuper);\nvar _defineProperty__default = /*#__PURE__*/_interopDefaultLegacy(_defineProperty);\nvar _classCallCheck__default = /*#__PURE__*/_interopDefaultLegacy(_classCallCheck);\nvar _createClass__default = /*#__PURE__*/_interopDefaultLegacy(_createClass);\nvar _typeof__default = /*#__PURE__*/_interopDefaultLegacy(_typeof);\n\nfunction _createSuper(Derived) { var hasNativeReflectConstruct = _isNativeReflectConstruct(); return function _createSuperInternal() { var Super = _getPrototypeOf__default['default'](Derived), result; if (hasNativeReflectConstruct) { var NewTarget = _getPrototypeOf__default['default'](this).constructor; result = Reflect.construct(Super, arguments, NewTarget); } else { result = Super.apply(this, arguments); } return _possibleConstructorReturn__default['default'](this, result); }; }\n\nfunction _isNativeReflectConstruct() { if (typeof Reflect === \"undefined\" || !Reflect.construct) return false; if (Reflect.construct.sham) return false; if (typeof Proxy === \"function\") return true; try { Date.prototype.toString.call(Reflect.construct(Date, [], function () {})); return true; } catch (e) { return false; } }\n\nfunction ownKeys(object, enumerableOnly) { var keys = Object.keys(object); if (Object.getOwnPropertySymbols) { var symbols = Object.getOwnPropertySymbols(object); if (enumerableOnly) symbols = symbols.filter(function (sym) { return Object.getOwnPropertyDescriptor(object, sym).enumerable; }); keys.push.apply(keys, symbols); } return keys; }\n\nfunction _objectSpread(target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i] != null ? arguments[i] : {}; if (i % 2) { ownKeys(Object(source), true).forEach(function (key) { _defineProperty__default['default'](target, key, source[key]); }); } else if (Object.getOwnPropertyDescriptors) { Object.defineProperties(target, Object.getOwnPropertyDescriptors(source)); } else { ownKeys(Object(source)).forEach(function (key) { Object.defineProperty(target, key, Object.getOwnPropertyDescriptor(source, key)); }); } } return target; }\n\n/**\n * Assert a condition.\n * @param condition The condition that it should satisfy.\n * @param message The error message.\n * @param args The arguments for replacing placeholders in the message.\n */\nfunction assertType(condition, message) {\n if (!condition) {\n for (var _len = arguments.length, args = new Array(_len > 2 ? _len - 2 : 0), _key = 2; _key < _len; _key++) {\n args[_key - 2] = arguments[_key];\n }\n\n throw new TypeError(format(message, args));\n }\n}\n/**\n * Convert a text and arguments to one string.\n * @param message The formating text\n * @param args The arguments.\n */\n\n\nfunction format(message, args) {\n var i = 0;\n return message.replace(/%[os]/g, function () {\n return anyToString(args[i++]);\n });\n}\n/**\n * Convert a value to a string representation.\n * @param x The value to get the string representation.\n */\n\n\nfunction anyToString(x) {\n if (_typeof__default['default'](x) !== \"object\" || x === null) {\n return String(x);\n }\n\n return Object.prototype.toString.call(x);\n}\n\nvar currentErrorHandler;\n/**\n * Set the error handler.\n * @param value The error handler to set.\n */\n\nfunction setErrorHandler(value) {\n assertType(typeof value === \"function\" || value === undefined, \"The error handler must be a function or undefined, but got %o.\", value);\n currentErrorHandler = value;\n}\n/**\n * Print a error message.\n * @param maybeError The error object.\n */\n\n\nfunction reportError(maybeError) {\n try {\n var error = maybeError instanceof Error ? maybeError : new Error(anyToString(maybeError)); // Call the user-defined error handler if exists.\n\n if (currentErrorHandler) {\n currentErrorHandler(error);\n return;\n } // Dispatch an `error` event if this is on a browser.\n\n\n if (typeof dispatchEvent === \"function\" && typeof ErrorEvent === \"function\") {\n dispatchEvent(new ErrorEvent(\"error\", {\n error: error,\n message: error.message\n }));\n } // Emit an `uncaughtException` event if this is on Node.js.\n //istanbul ignore else\n else if (typeof process !== \"undefined\" && typeof process.emit === \"function\") {\n process.emit(\"uncaughtException\", error);\n return;\n } // Otherwise, print the error.\n\n\n console.error(error);\n } catch (_a) {// ignore.\n }\n}\n/**\n * The global object.\n */\n//istanbul ignore next\n\n\nvar Global = typeof window !== \"undefined\" ? window : typeof self !== \"undefined\" ? self : typeof global !== \"undefined\" ? global : typeof globalThis !== \"undefined\" ? globalThis : undefined;\nvar currentWarnHandler;\n/**\n * Set the warning handler.\n * @param value The warning handler to set.\n */\n\nfunction setWarningHandler(value) {\n assertType(typeof value === \"function\" || value === undefined, \"The warning handler must be a function or undefined, but got %o.\", value);\n currentWarnHandler = value;\n}\n/**\n * The warning information.\n */\n\n\nvar Warning = /*#__PURE__*/function () {\n function Warning(code, message) {\n _classCallCheck__default['default'](this, Warning);\n\n this.code = code;\n this.message = message;\n }\n /**\n * Report this warning.\n * @param args The arguments of the warning.\n */\n\n\n _createClass__default['default'](Warning, [{\n key: \"warn\",\n value: function warn() {\n var _a;\n\n try {\n var _console;\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n // Call the user-defined warning handler if exists.\n if (currentWarnHandler) {\n currentWarnHandler(_objectSpread(_objectSpread({}, this), {}, {\n args: args\n }));\n return;\n } // Otherwise, print the warning.\n\n\n var stack = ((_a = new Error().stack) !== null && _a !== void 0 ? _a : \"\").replace(/^(?:(?:[\\0-\\t\\x0B\\f\\x0E-\\u2027\\u202A-\\uD7FF\\uE000-\\uFFFF]|[\\uD800-\\uDBFF][\\uDC00-\\uDFFF]|[\\uD800-\\uDBFF](?![\\uDC00-\\uDFFF])|(?:[^\\uD800-\\uDBFF]|^)[\\uDC00-\\uDFFF])+?\\n){2}/g, \"\\n\");\n\n (_console = console).warn.apply(_console, [this.message].concat(args, [stack]));\n } catch (_b) {// Ignore.\n }\n }\n }]);\n\n return Warning;\n}();\n\nvar InitEventWasCalledWhileDispatching = new Warning(\"W01\", \"Unable to initialize event under dispatching.\");\nvar FalsyWasAssignedToCancelBubble = new Warning(\"W02\", \"Assigning any falsy value to 'cancelBubble' property has no effect.\");\nvar TruthyWasAssignedToReturnValue = new Warning(\"W03\", \"Assigning any truthy value to 'returnValue' property has no effect.\");\nvar NonCancelableEventWasCanceled = new Warning(\"W04\", \"Unable to preventDefault on non-cancelable events.\");\nvar CanceledInPassiveListener = new Warning(\"W05\", \"Unable to preventDefault inside passive event listener invocation.\");\nvar EventListenerWasDuplicated = new Warning(\"W06\", \"An event listener wasn't added because it has been added already: %o, %o\");\nvar OptionWasIgnored = new Warning(\"W07\", \"The %o option value was abandoned because the event listener wasn't added as duplicated.\");\nvar InvalidEventListener = new Warning(\"W08\", \"The 'callback' argument must be a function or an object that has 'handleEvent' method: %o\");\nvar InvalidAttributeHandler = new Warning(\"W09\", \"Event attribute handler must be a function: %o\");\n/*eslint-disable class-methods-use-this */\n\n/**\n * An implementation of `Event` interface, that wraps a given event object.\n * `EventTarget` shim can control the internal state of this `Event` objects.\n * @see https://dom.spec.whatwg.org/#event\n */\n\nvar Event = /*#__PURE__*/function () {\n _createClass__default['default'](Event, null, [{\n key: \"NONE\",\n\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-none\n */\n get: function get() {\n return NONE;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-capturing_phase\n */\n\n }, {\n key: \"CAPTURING_PHASE\",\n get: function get() {\n return CAPTURING_PHASE;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-at_target\n */\n\n }, {\n key: \"AT_TARGET\",\n get: function get() {\n return AT_TARGET;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-bubbling_phase\n */\n\n }, {\n key: \"BUBBLING_PHASE\",\n get: function get() {\n return BUBBLING_PHASE;\n }\n /**\n * Initialize this event instance.\n * @param type The type of this event.\n * @param eventInitDict Options to initialize.\n * @see https://dom.spec.whatwg.org/#dom-event-event\n */\n\n }]);\n\n function Event(type, eventInitDict) {\n _classCallCheck__default['default'](this, Event);\n\n Object.defineProperty(this, \"isTrusted\", {\n value: false,\n enumerable: true\n });\n var opts = eventInitDict !== null && eventInitDict !== void 0 ? eventInitDict : {};\n internalDataMap.set(this, {\n type: String(type),\n bubbles: Boolean(opts.bubbles),\n cancelable: Boolean(opts.cancelable),\n composed: Boolean(opts.composed),\n target: null,\n currentTarget: null,\n stopPropagationFlag: false,\n stopImmediatePropagationFlag: false,\n canceledFlag: false,\n inPassiveListenerFlag: false,\n dispatchFlag: false,\n timeStamp: Date.now()\n });\n }\n /**\n * The type of this event.\n * @see https://dom.spec.whatwg.org/#dom-event-type\n */\n\n\n _createClass__default['default'](Event, [{\n key: \"composedPath\",\n\n /**\n * The event target of the current dispatching.\n * This doesn't support node tree.\n * @see https://dom.spec.whatwg.org/#dom-event-composedpath\n */\n value: function composedPath() {\n var currentTarget = $(this).currentTarget;\n\n if (currentTarget) {\n return [currentTarget];\n }\n\n return [];\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-none\n */\n\n }, {\n key: \"stopPropagation\",\n\n /**\n * Stop event bubbling.\n * Because this shim doesn't support node tree, this merely changes the `cancelBubble` property value.\n * @see https://dom.spec.whatwg.org/#dom-event-stoppropagation\n */\n value: function stopPropagation() {\n $(this).stopPropagationFlag = true;\n }\n /**\n * `true` if event bubbling was stopped.\n * @deprecated\n * @see https://dom.spec.whatwg.org/#dom-event-cancelbubble\n */\n\n }, {\n key: \"stopImmediatePropagation\",\n\n /**\n * Stop event bubbling and subsequent event listener callings.\n * @see https://dom.spec.whatwg.org/#dom-event-stopimmediatepropagation\n */\n value: function stopImmediatePropagation() {\n var data = $(this);\n data.stopPropagationFlag = data.stopImmediatePropagationFlag = true;\n }\n /**\n * `true` if this event will bubble.\n * @see https://dom.spec.whatwg.org/#dom-event-bubbles\n */\n\n }, {\n key: \"preventDefault\",\n\n /**\n * Cancel the default behavior.\n * @see https://dom.spec.whatwg.org/#dom-event-preventdefault\n */\n value: function preventDefault() {\n setCancelFlag($(this));\n }\n /**\n * `true` if the default behavior was canceled.\n * @see https://dom.spec.whatwg.org/#dom-event-defaultprevented\n */\n\n }, {\n key: \"initEvent\",\n\n /**\n * @deprecated Don't use this method. The constructor did initialization.\n */\n value: function initEvent(type) {\n var bubbles = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : false;\n var cancelable = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var data = $(this);\n\n if (data.dispatchFlag) {\n InitEventWasCalledWhileDispatching.warn();\n return;\n }\n\n internalDataMap.set(this, _objectSpread(_objectSpread({}, data), {}, {\n type: String(type),\n bubbles: Boolean(bubbles),\n cancelable: Boolean(cancelable),\n target: null,\n currentTarget: null,\n stopPropagationFlag: false,\n stopImmediatePropagationFlag: false,\n canceledFlag: false\n }));\n }\n }, {\n key: \"type\",\n get: function get() {\n return $(this).type;\n }\n /**\n * The event target of the current dispatching.\n * @see https://dom.spec.whatwg.org/#dom-event-target\n */\n\n }, {\n key: \"target\",\n get: function get() {\n return $(this).target;\n }\n /**\n * The event target of the current dispatching.\n * @deprecated Use the `target` property instead.\n * @see https://dom.spec.whatwg.org/#dom-event-srcelement\n */\n\n }, {\n key: \"srcElement\",\n get: function get() {\n return $(this).target;\n }\n /**\n * The event target of the current dispatching.\n * @see https://dom.spec.whatwg.org/#dom-event-currenttarget\n */\n\n }, {\n key: \"currentTarget\",\n get: function get() {\n return $(this).currentTarget;\n }\n }, {\n key: \"NONE\",\n get: function get() {\n return NONE;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-capturing_phase\n */\n\n }, {\n key: \"CAPTURING_PHASE\",\n get: function get() {\n return CAPTURING_PHASE;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-at_target\n */\n\n }, {\n key: \"AT_TARGET\",\n get: function get() {\n return AT_TARGET;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-bubbling_phase\n */\n\n }, {\n key: \"BUBBLING_PHASE\",\n get: function get() {\n return BUBBLING_PHASE;\n }\n /**\n * The current event phase.\n * @see https://dom.spec.whatwg.org/#dom-event-eventphase\n */\n\n }, {\n key: \"eventPhase\",\n get: function get() {\n return $(this).dispatchFlag ? 2 : 0;\n }\n }, {\n key: \"cancelBubble\",\n get: function get() {\n return $(this).stopPropagationFlag;\n }\n /**\n * Stop event bubbling if `true` is set.\n * @deprecated Use the `stopPropagation()` method instead.\n * @see https://dom.spec.whatwg.org/#dom-event-cancelbubble\n */\n ,\n set: function set(value) {\n if (value) {\n $(this).stopPropagationFlag = true;\n } else {\n FalsyWasAssignedToCancelBubble.warn();\n }\n }\n }, {\n key: \"bubbles\",\n get: function get() {\n return $(this).bubbles;\n }\n /**\n * `true` if this event can be canceled by the `preventDefault()` method.\n * @see https://dom.spec.whatwg.org/#dom-event-cancelable\n */\n\n }, {\n key: \"cancelable\",\n get: function get() {\n return $(this).cancelable;\n }\n /**\n * `true` if the default behavior will act.\n * @deprecated Use the `defaultPrevented` proeprty instead.\n * @see https://dom.spec.whatwg.org/#dom-event-returnvalue\n */\n\n }, {\n key: \"returnValue\",\n get: function get() {\n return !$(this).canceledFlag;\n }\n /**\n * Cancel the default behavior if `false` is set.\n * @deprecated Use the `preventDefault()` method instead.\n * @see https://dom.spec.whatwg.org/#dom-event-returnvalue\n */\n ,\n set: function set(value) {\n if (!value) {\n setCancelFlag($(this));\n } else {\n TruthyWasAssignedToReturnValue.warn();\n }\n }\n }, {\n key: \"defaultPrevented\",\n get: function get() {\n return $(this).canceledFlag;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-composed\n */\n\n }, {\n key: \"composed\",\n get: function get() {\n return $(this).composed;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-istrusted\n */\n //istanbul ignore next\n\n }, {\n key: \"isTrusted\",\n get: function get() {\n return false;\n }\n /**\n * @see https://dom.spec.whatwg.org/#dom-event-timestamp\n */\n\n }, {\n key: \"timeStamp\",\n get: function get() {\n return $(this).timeStamp;\n }\n }]);\n\n return Event;\n}(); //------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n\nvar NONE = 0;\nvar CAPTURING_PHASE = 1;\nvar AT_TARGET = 2;\nvar BUBBLING_PHASE = 3;\n/**\n * Private data for event wrappers.\n */\n\nvar internalDataMap = new WeakMap();\n/**\n * Get private data.\n * @param event The event object to get private data.\n * @param name The variable name to report.\n * @returns The private data of the event.\n */\n\nfunction $(event) {\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"this\";\n var retv = internalDataMap.get(event);\n assertType(retv != null, \"'%s' must be an object that Event constructor created, but got another one: %o\", name, event);\n return retv;\n}\n/**\n * https://dom.spec.whatwg.org/#set-the-canceled-flag\n * @param data private data.\n */\n\n\nfunction setCancelFlag(data) {\n if (data.inPassiveListenerFlag) {\n CanceledInPassiveListener.warn();\n return;\n }\n\n if (!data.cancelable) {\n NonCancelableEventWasCanceled.warn();\n return;\n }\n\n data.canceledFlag = true;\n} // Set enumerable\n\n\nObject.defineProperty(Event, \"NONE\", {\n enumerable: true\n});\nObject.defineProperty(Event, \"CAPTURING_PHASE\", {\n enumerable: true\n});\nObject.defineProperty(Event, \"AT_TARGET\", {\n enumerable: true\n});\nObject.defineProperty(Event, \"BUBBLING_PHASE\", {\n enumerable: true\n});\nvar keys = Object.getOwnPropertyNames(Event.prototype);\n\nfor (var i = 0; i < keys.length; ++i) {\n if (keys[i] === \"constructor\") {\n continue;\n }\n\n Object.defineProperty(Event.prototype, keys[i], {\n enumerable: true\n });\n} // Ensure `event instanceof window.Event` is `true`.\n\n\nif (typeof Global !== \"undefined\" && typeof Global.Event !== \"undefined\") {\n Object.setPrototypeOf(Event.prototype, Global.Event.prototype);\n}\n/**\n * Create a new InvalidStateError instance.\n * @param message The error message.\n */\n\n\nfunction createInvalidStateError(message) {\n if (Global.DOMException) {\n return new Global.DOMException(message, \"InvalidStateError\");\n }\n\n if (DOMException == null) {\n DOMException = /*#__PURE__*/function (_Error) {\n _inherits__default['default'](DOMException, _Error);\n\n var _super = _createSuper(DOMException);\n\n function DOMException(msg) {\n var _this;\n\n _classCallCheck__default['default'](this, DOMException);\n\n _this = _super.call(this, msg);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(_assertThisInitialized__default['default'](_this), DOMException);\n }\n\n return _this;\n } // eslint-disable-next-line class-methods-use-this\n\n\n _createClass__default['default'](DOMException, [{\n key: \"code\",\n get: function get() {\n return 11;\n } // eslint-disable-next-line class-methods-use-this\n\n }, {\n key: \"name\",\n get: function get() {\n return \"InvalidStateError\";\n }\n }]);\n\n return DOMException;\n }( /*#__PURE__*/_wrapNativeSuper__default['default'](Error));\n\n Object.defineProperties(DOMException.prototype, {\n code: {\n enumerable: true\n },\n name: {\n enumerable: true\n }\n });\n defineErrorCodeProperties(DOMException);\n defineErrorCodeProperties(DOMException.prototype);\n }\n\n return new DOMException(message);\n} //------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n\nvar DOMException;\nvar ErrorCodeMap = {\n INDEX_SIZE_ERR: 1,\n DOMSTRING_SIZE_ERR: 2,\n HIERARCHY_REQUEST_ERR: 3,\n WRONG_DOCUMENT_ERR: 4,\n INVALID_CHARACTER_ERR: 5,\n NO_DATA_ALLOWED_ERR: 6,\n NO_MODIFICATION_ALLOWED_ERR: 7,\n NOT_FOUND_ERR: 8,\n NOT_SUPPORTED_ERR: 9,\n INUSE_ATTRIBUTE_ERR: 10,\n INVALID_STATE_ERR: 11,\n SYNTAX_ERR: 12,\n INVALID_MODIFICATION_ERR: 13,\n NAMESPACE_ERR: 14,\n INVALID_ACCESS_ERR: 15,\n VALIDATION_ERR: 16,\n TYPE_MISMATCH_ERR: 17,\n SECURITY_ERR: 18,\n NETWORK_ERR: 19,\n ABORT_ERR: 20,\n URL_MISMATCH_ERR: 21,\n QUOTA_EXCEEDED_ERR: 22,\n TIMEOUT_ERR: 23,\n INVALID_NODE_TYPE_ERR: 24,\n DATA_CLONE_ERR: 25\n};\n\nfunction defineErrorCodeProperties(obj) {\n var keys = Object.keys(ErrorCodeMap);\n\n var _loop = function _loop(_i) {\n var key = keys[_i];\n var value = ErrorCodeMap[key];\n Object.defineProperty(obj, key, {\n get: function get() {\n return value;\n },\n configurable: true,\n enumerable: true\n });\n };\n\n for (var _i = 0; _i < keys.length; ++_i) {\n _loop(_i);\n }\n}\n/**\n * An implementation of `Event` interface, that wraps a given event object.\n * This class controls the internal state of `Event`.\n * @see https://dom.spec.whatwg.org/#interface-event\n */\n\n\nvar EventWrapper = /*#__PURE__*/function (_Event) {\n _inherits__default['default'](EventWrapper, _Event);\n\n var _super2 = _createSuper(EventWrapper);\n\n _createClass__default['default'](EventWrapper, null, [{\n key: \"wrap\",\n\n /**\n * Wrap a given event object to control states.\n * @param event The event-like object to wrap.\n */\n value: function wrap(event) {\n return new (getWrapperClassOf(event))(event);\n }\n }]);\n\n function EventWrapper(event) {\n var _thisSuper, _thisSuper2, _this2;\n\n _classCallCheck__default['default'](this, EventWrapper);\n\n _this2 = _super2.call(this, event.type, {\n bubbles: event.bubbles,\n cancelable: event.cancelable,\n composed: event.composed\n });\n\n if (event.cancelBubble) {\n _get__default['default']((_thisSuper = _assertThisInitialized__default['default'](_this2), _getPrototypeOf__default['default'](EventWrapper.prototype)), \"stopPropagation\", _thisSuper).call(_thisSuper);\n }\n\n if (event.defaultPrevented) {\n _get__default['default']((_thisSuper2 = _assertThisInitialized__default['default'](_this2), _getPrototypeOf__default['default'](EventWrapper.prototype)), \"preventDefault\", _thisSuper2).call(_thisSuper2);\n }\n\n internalDataMap$1.set(_assertThisInitialized__default['default'](_this2), {\n original: event\n }); // Define accessors\n\n var keys = Object.keys(event);\n\n for (var _i2 = 0; _i2 < keys.length; ++_i2) {\n var key = keys[_i2];\n\n if (!(key in _assertThisInitialized__default['default'](_this2))) {\n Object.defineProperty(_assertThisInitialized__default['default'](_this2), key, defineRedirectDescriptor(event, key));\n }\n }\n\n return _this2;\n }\n\n _createClass__default['default'](EventWrapper, [{\n key: \"stopPropagation\",\n value: function stopPropagation() {\n _get__default['default'](_getPrototypeOf__default['default'](EventWrapper.prototype), \"stopPropagation\", this).call(this);\n\n var _$$ = $$1(this),\n original = _$$.original;\n\n if (\"stopPropagation\" in original) {\n original.stopPropagation();\n }\n }\n }, {\n key: \"stopImmediatePropagation\",\n value: function stopImmediatePropagation() {\n _get__default['default'](_getPrototypeOf__default['default'](EventWrapper.prototype), \"stopImmediatePropagation\", this).call(this);\n\n var _$$2 = $$1(this),\n original = _$$2.original;\n\n if (\"stopImmediatePropagation\" in original) {\n original.stopImmediatePropagation();\n }\n }\n }, {\n key: \"preventDefault\",\n value: function preventDefault() {\n _get__default['default'](_getPrototypeOf__default['default'](EventWrapper.prototype), \"preventDefault\", this).call(this);\n\n var _$$3 = $$1(this),\n original = _$$3.original;\n\n if (\"preventDefault\" in original) {\n original.preventDefault();\n }\n }\n }, {\n key: \"cancelBubble\",\n get: function get() {\n return _get__default['default'](_getPrototypeOf__default['default'](EventWrapper.prototype), \"cancelBubble\", this);\n },\n set: function set(value) {\n _set__default['default'](_getPrototypeOf__default['default'](EventWrapper.prototype), \"cancelBubble\", value, this, true);\n\n var _$$4 = $$1(this),\n original = _$$4.original;\n\n if (\"cancelBubble\" in original) {\n original.cancelBubble = value;\n }\n }\n }, {\n key: \"returnValue\",\n get: function get() {\n return _get__default['default'](_getPrototypeOf__default['default'](EventWrapper.prototype), \"returnValue\", this);\n },\n set: function set(value) {\n _set__default['default'](_getPrototypeOf__default['default'](EventWrapper.prototype), \"returnValue\", value, this, true);\n\n var _$$5 = $$1(this),\n original = _$$5.original;\n\n if (\"returnValue\" in original) {\n original.returnValue = value;\n }\n }\n }, {\n key: \"timeStamp\",\n get: function get() {\n var _$$6 = $$1(this),\n original = _$$6.original;\n\n if (\"timeStamp\" in original) {\n return original.timeStamp;\n }\n\n return _get__default['default'](_getPrototypeOf__default['default'](EventWrapper.prototype), \"timeStamp\", this);\n }\n }]);\n\n return EventWrapper;\n}(Event);\n/**\n * Private data for event wrappers.\n */\n\n\nvar internalDataMap$1 = new WeakMap();\n/**\n * Get private data.\n * @param event The event object to get private data.\n * @returns The private data of the event.\n */\n\nfunction $$1(event) {\n var retv = internalDataMap$1.get(event);\n assertType(retv != null, \"'this' is expected an Event object, but got\", event);\n return retv;\n}\n/**\n * Cache for wrapper classes.\n * @type {WeakMap}\n * @private\n */\n\n\nvar wrapperClassCache = new WeakMap(); // Make association for wrappers.\n\nwrapperClassCache.set(Object.prototype, EventWrapper);\n\nif (typeof Global !== \"undefined\" && typeof Global.Event !== \"undefined\") {\n wrapperClassCache.set(Global.Event.prototype, EventWrapper);\n}\n/**\n * Get the wrapper class of a given prototype.\n * @param originalEvent The event object to wrap.\n */\n\n\nfunction getWrapperClassOf(originalEvent) {\n var prototype = Object.getPrototypeOf(originalEvent);\n\n if (prototype == null) {\n return EventWrapper;\n }\n\n var wrapper = wrapperClassCache.get(prototype);\n\n if (wrapper == null) {\n wrapper = defineWrapper(getWrapperClassOf(prototype), prototype);\n wrapperClassCache.set(prototype, wrapper);\n }\n\n return wrapper;\n}\n/**\n * Define new wrapper class.\n * @param BaseEventWrapper The base wrapper class.\n * @param originalPrototype The prototype of the original event.\n */\n\n\nfunction defineWrapper(BaseEventWrapper, originalPrototype) {\n var CustomEventWrapper = /*#__PURE__*/function (_BaseEventWrapper) {\n _inherits__default['default'](CustomEventWrapper, _BaseEventWrapper);\n\n var _super3 = _createSuper(CustomEventWrapper);\n\n function CustomEventWrapper() {\n _classCallCheck__default['default'](this, CustomEventWrapper);\n\n return _super3.apply(this, arguments);\n }\n\n return CustomEventWrapper;\n }(BaseEventWrapper);\n\n var keys = Object.keys(originalPrototype);\n\n for (var _i3 = 0; _i3 < keys.length; ++_i3) {\n Object.defineProperty(CustomEventWrapper.prototype, keys[_i3], defineRedirectDescriptor(originalPrototype, keys[_i3]));\n }\n\n return CustomEventWrapper;\n}\n/**\n * Get the property descriptor to redirect a given property.\n */\n\n\nfunction defineRedirectDescriptor(obj, key) {\n var d = Object.getOwnPropertyDescriptor(obj, key);\n return {\n get: function get() {\n var original = $$1(this).original;\n var value = original[key];\n\n if (typeof value === \"function\") {\n return value.bind(original);\n }\n\n return value;\n },\n set: function set(value) {\n var original = $$1(this).original;\n original[key] = value;\n },\n configurable: d.configurable,\n enumerable: d.enumerable\n };\n}\n/**\n * Create a new listener.\n * @param callback The callback function.\n * @param capture The capture flag.\n * @param passive The passive flag.\n * @param once The once flag.\n * @param signal The abort signal.\n * @param signalListener The abort event listener for the abort signal.\n */\n\n\nfunction createListener(callback, capture, passive, once, signal, signalListener) {\n return {\n callback: callback,\n flags: (capture ? 1\n /* Capture */\n : 0) | (passive ? 2\n /* Passive */\n : 0) | (once ? 4\n /* Once */\n : 0),\n signal: signal,\n signalListener: signalListener\n };\n}\n/**\n * Set the `removed` flag to the given listener.\n * @param listener The listener to check.\n */\n\n\nfunction setRemoved(listener) {\n listener.flags |= 8\n /* Removed */\n ;\n}\n/**\n * Check if the given listener has the `capture` flag or not.\n * @param listener The listener to check.\n */\n\n\nfunction isCapture(listener) {\n return (listener.flags & 1\n /* Capture */\n ) === 1\n /* Capture */\n ;\n}\n/**\n * Check if the given listener has the `passive` flag or not.\n * @param listener The listener to check.\n */\n\n\nfunction isPassive(listener) {\n return (listener.flags & 2\n /* Passive */\n ) === 2\n /* Passive */\n ;\n}\n/**\n * Check if the given listener has the `once` flag or not.\n * @param listener The listener to check.\n */\n\n\nfunction isOnce(listener) {\n return (listener.flags & 4\n /* Once */\n ) === 4\n /* Once */\n ;\n}\n/**\n * Check if the given listener has the `removed` flag or not.\n * @param listener The listener to check.\n */\n\n\nfunction isRemoved(listener) {\n return (listener.flags & 8\n /* Removed */\n ) === 8\n /* Removed */\n ;\n}\n/**\n * Call an event listener.\n * @param listener The listener to call.\n * @param target The event target object for `thisArg`.\n * @param event The event object for the first argument.\n * @param attribute `true` if this callback is an event attribute handler.\n */\n\n\nfunction invokeCallback(_ref, target, event) {\n var callback = _ref.callback;\n\n try {\n if (typeof callback === \"function\") {\n callback.call(target, event);\n } else if (typeof callback.handleEvent === \"function\") {\n callback.handleEvent(event);\n }\n } catch (thrownError) {\n reportError(thrownError);\n }\n}\n/**\n * Find the index of given listener.\n * This returns `-1` if not found.\n * @param list The listener list.\n * @param callback The callback function to find.\n * @param capture The capture flag to find.\n */\n\n\nfunction findIndexOfListener(_ref2, callback, capture) {\n var listeners = _ref2.listeners;\n\n for (var _i4 = 0; _i4 < listeners.length; ++_i4) {\n if (listeners[_i4].callback === callback && isCapture(listeners[_i4]) === capture) {\n return _i4;\n }\n }\n\n return -1;\n}\n/**\n * Add the given listener.\n * Does copy-on-write if needed.\n * @param list The listener list.\n * @param callback The callback function.\n * @param capture The capture flag.\n * @param passive The passive flag.\n * @param once The once flag.\n * @param signal The abort signal.\n */\n\n\nfunction addListener(list, callback, capture, passive, once, signal) {\n var signalListener;\n\n if (signal) {\n signalListener = removeListener.bind(null, list, callback, capture);\n signal.addEventListener(\"abort\", signalListener);\n }\n\n var listener = createListener(callback, capture, passive, once, signal, signalListener);\n\n if (list.cow) {\n list.cow = false;\n list.listeners = [].concat(_toConsumableArray__default['default'](list.listeners), [listener]);\n } else {\n list.listeners.push(listener);\n }\n\n return listener;\n}\n/**\n * Remove a listener.\n * @param list The listener list.\n * @param callback The callback function to find.\n * @param capture The capture flag to find.\n * @returns `true` if it mutated the list directly.\n */\n\n\nfunction removeListener(list, callback, capture) {\n var index = findIndexOfListener(list, callback, capture);\n\n if (index !== -1) {\n return removeListenerAt(list, index);\n }\n\n return false;\n}\n/**\n * Remove a listener.\n * @param list The listener list.\n * @param index The index of the target listener.\n * @param disableCow Disable copy-on-write if true.\n * @returns `true` if it mutated the `listeners` array directly.\n */\n\n\nfunction removeListenerAt(list, index) {\n var disableCow = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;\n var listener = list.listeners[index]; // Set the removed flag.\n\n setRemoved(listener); // Dispose the abort signal listener if exists.\n\n if (listener.signal) {\n listener.signal.removeEventListener(\"abort\", listener.signalListener);\n } // Remove it from the array.\n\n\n if (list.cow && !disableCow) {\n list.cow = false;\n list.listeners = list.listeners.filter(function (_, i) {\n return i !== index;\n });\n return false;\n }\n\n list.listeners.splice(index, 1);\n return true;\n}\n/**\n * Create a new `ListenerListMap` object.\n */\n\n\nfunction createListenerListMap() {\n return Object.create(null);\n}\n/**\n * Get the listener list of the given type.\n * If the listener list has not been initialized, initialize and return it.\n * @param listenerMap The listener list map.\n * @param type The event type to get.\n */\n\n\nfunction ensureListenerList(listenerMap, type) {\n var _a;\n\n return (_a = listenerMap[type]) !== null && _a !== void 0 ? _a : listenerMap[type] = {\n attrCallback: undefined,\n attrListener: undefined,\n cow: false,\n listeners: []\n };\n}\n/**\n * An implementation of the `EventTarget` interface.\n * @see https://dom.spec.whatwg.org/#eventtarget\n */\n\n\nvar EventTarget = /*#__PURE__*/function () {\n /**\n * Initialize this instance.\n */\n function EventTarget() {\n _classCallCheck__default['default'](this, EventTarget);\n\n internalDataMap$2.set(this, createListenerListMap());\n } // Implementation\n\n\n _createClass__default['default'](EventTarget, [{\n key: \"addEventListener\",\n value: function addEventListener(type0, callback0, options0) {\n var listenerMap = $$2(this);\n\n var _normalizeAddOptions = normalizeAddOptions(type0, callback0, options0),\n callback = _normalizeAddOptions.callback,\n capture = _normalizeAddOptions.capture,\n once = _normalizeAddOptions.once,\n passive = _normalizeAddOptions.passive,\n signal = _normalizeAddOptions.signal,\n type = _normalizeAddOptions.type;\n\n if (callback == null || (signal === null || signal === void 0 ? void 0 : signal.aborted)) {\n return;\n }\n\n var list = ensureListenerList(listenerMap, type); // Find existing listener.\n\n var i = findIndexOfListener(list, callback, capture);\n\n if (i !== -1) {\n warnDuplicate(list.listeners[i], passive, once, signal);\n return;\n } // Add the new listener.\n\n\n addListener(list, callback, capture, passive, once, signal);\n } // Implementation\n\n }, {\n key: \"removeEventListener\",\n value: function removeEventListener(type0, callback0, options0) {\n var listenerMap = $$2(this);\n\n var _normalizeOptions = normalizeOptions(type0, callback0, options0),\n callback = _normalizeOptions.callback,\n capture = _normalizeOptions.capture,\n type = _normalizeOptions.type;\n\n var list = listenerMap[type];\n\n if (callback != null && list) {\n removeListener(list, callback, capture);\n }\n } // Implementation\n\n }, {\n key: \"dispatchEvent\",\n value: function dispatchEvent(e) {\n var list = $$2(this)[String(e.type)];\n\n if (list == null) {\n return true;\n }\n\n var event = e instanceof Event ? e : EventWrapper.wrap(e);\n var eventData = $(event, \"event\");\n\n if (eventData.dispatchFlag) {\n throw createInvalidStateError(\"This event has been in dispatching.\");\n }\n\n eventData.dispatchFlag = true;\n eventData.target = eventData.currentTarget = this;\n\n if (!eventData.stopPropagationFlag) {\n var cow = list.cow,\n listeners = list.listeners; // Set copy-on-write flag.\n\n list.cow = true; // Call listeners.\n\n for (var _i5 = 0; _i5 < listeners.length; ++_i5) {\n var listener = listeners[_i5]; // Skip if removed.\n\n if (isRemoved(listener)) {\n continue;\n } // Remove this listener if has the `once` flag.\n\n\n if (isOnce(listener) && removeListenerAt(list, _i5, !cow)) {\n // Because this listener was removed, the next index is the\n // same as the current value.\n _i5 -= 1;\n } // Call this listener with the `passive` flag.\n\n\n eventData.inPassiveListenerFlag = isPassive(listener);\n invokeCallback(listener, this, event);\n eventData.inPassiveListenerFlag = false; // Stop if the `event.stopImmediatePropagation()` method was called.\n\n if (eventData.stopImmediatePropagationFlag) {\n break;\n }\n } // Restore copy-on-write flag.\n\n\n if (!cow) {\n list.cow = false;\n }\n }\n\n eventData.target = null;\n eventData.currentTarget = null;\n eventData.stopImmediatePropagationFlag = false;\n eventData.stopPropagationFlag = false;\n eventData.dispatchFlag = false;\n return !eventData.canceledFlag;\n }\n }]);\n\n return EventTarget;\n}();\n/**\n * Internal data.\n */\n\n\nvar internalDataMap$2 = new WeakMap();\n/**\n * Get private data.\n * @param target The event target object to get private data.\n * @param name The variable name to report.\n * @returns The private data of the event.\n */\n\nfunction $$2(target) {\n var name = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : \"this\";\n var retv = internalDataMap$2.get(target);\n assertType(retv != null, \"'%s' must be an object that EventTarget constructor created, but got another one: %o\", name, target);\n return retv;\n}\n/**\n * Normalize options.\n * @param options The options to normalize.\n */\n\n\nfunction normalizeAddOptions(type, callback, options) {\n var _a;\n\n assertCallback(callback);\n\n if (_typeof__default['default'](options) === \"object\" && options !== null) {\n return {\n type: String(type),\n callback: callback !== null && callback !== void 0 ? callback : undefined,\n capture: Boolean(options.capture),\n passive: Boolean(options.passive),\n once: Boolean(options.once),\n signal: (_a = options.signal) !== null && _a !== void 0 ? _a : undefined\n };\n }\n\n return {\n type: String(type),\n callback: callback !== null && callback !== void 0 ? callback : undefined,\n capture: Boolean(options),\n passive: false,\n once: false,\n signal: undefined\n };\n}\n/**\n * Normalize options.\n * @param options The options to normalize.\n */\n\n\nfunction normalizeOptions(type, callback, options) {\n assertCallback(callback);\n\n if (_typeof__default['default'](options) === \"object\" && options !== null) {\n return {\n type: String(type),\n callback: callback !== null && callback !== void 0 ? callback : undefined,\n capture: Boolean(options.capture)\n };\n }\n\n return {\n type: String(type),\n callback: callback !== null && callback !== void 0 ? callback : undefined,\n capture: Boolean(options)\n };\n}\n/**\n * Assert the type of 'callback' argument.\n * @param callback The callback to check.\n */\n\n\nfunction assertCallback(callback) {\n if (typeof callback === \"function\" || _typeof__default['default'](callback) === \"object\" && callback !== null && typeof callback.handleEvent === \"function\") {\n return;\n }\n\n if (callback == null || _typeof__default['default'](callback) === \"object\") {\n InvalidEventListener.warn(callback);\n return;\n }\n\n throw new TypeError(format(InvalidEventListener.message, [callback]));\n}\n/**\n * Print warning for duplicated.\n * @param listener The current listener that is duplicated.\n * @param passive The passive flag of the new duplicated listener.\n * @param once The once flag of the new duplicated listener.\n * @param signal The signal object of the new duplicated listener.\n */\n\n\nfunction warnDuplicate(listener, passive, once, signal) {\n EventListenerWasDuplicated.warn(isCapture(listener) ? \"capture\" : \"bubble\", listener.callback);\n\n if (isPassive(listener) !== passive) {\n OptionWasIgnored.warn(\"passive\");\n }\n\n if (isOnce(listener) !== once) {\n OptionWasIgnored.warn(\"once\");\n }\n\n if (listener.signal !== signal) {\n OptionWasIgnored.warn(\"signal\");\n }\n} // Set enumerable\n\n\nvar keys$1 = Object.getOwnPropertyNames(EventTarget.prototype);\n\nfor (var _i6 = 0; _i6 < keys$1.length; ++_i6) {\n if (keys$1[_i6] === \"constructor\") {\n continue;\n }\n\n Object.defineProperty(EventTarget.prototype, keys$1[_i6], {\n enumerable: true\n });\n} // Ensure `eventTarget instanceof window.EventTarget` is `true`.\n\n\nif (typeof Global !== \"undefined\" && typeof Global.EventTarget !== \"undefined\") {\n Object.setPrototypeOf(EventTarget.prototype, Global.EventTarget.prototype);\n}\n/**\n * Get the current value of a given event attribute.\n * @param target The `EventTarget` object to get.\n * @param type The event type.\n */\n\n\nfunction getEventAttributeValue(target, type) {\n var _a, _b;\n\n var listMap = $$2(target, \"target\");\n return (_b = (_a = listMap[type]) === null || _a === void 0 ? void 0 : _a.attrCallback) !== null && _b !== void 0 ? _b : null;\n}\n/**\n * Set an event listener to a given event attribute.\n * @param target The `EventTarget` object to set.\n * @param type The event type.\n * @param callback The event listener.\n */\n\n\nfunction setEventAttributeValue(target, type, callback) {\n if (callback != null && typeof callback !== \"function\") {\n InvalidAttributeHandler.warn(callback);\n }\n\n if (typeof callback === \"function\" || _typeof__default['default'](callback) === \"object\" && callback !== null) {\n upsertEventAttributeListener(target, type, callback);\n } else {\n removeEventAttributeListener(target, type);\n }\n} //------------------------------------------------------------------------------\n// Helpers\n//------------------------------------------------------------------------------\n\n/**\n * Update or insert the given event attribute handler.\n * @param target The `EventTarget` object to set.\n * @param type The event type.\n * @param callback The event listener.\n */\n\n\nfunction upsertEventAttributeListener(target, type, callback) {\n var list = ensureListenerList($$2(target, \"target\"), String(type));\n list.attrCallback = callback;\n\n if (list.attrListener == null) {\n list.attrListener = addListener(list, defineEventAttributeCallback(list), false, false, false, undefined);\n }\n}\n/**\n * Remove the given event attribute handler.\n * @param target The `EventTarget` object to remove.\n * @param type The event type.\n * @param callback The event listener.\n */\n\n\nfunction removeEventAttributeListener(target, type) {\n var listMap = $$2(target, \"target\");\n var list = listMap[String(type)];\n\n if (list && list.attrListener) {\n removeListener(list, list.attrListener.callback, false);\n list.attrCallback = list.attrListener = undefined;\n }\n}\n/**\n * Define the callback function for the given listener list object.\n * It calls `attrCallback` property if the property value is a function.\n * @param list The `ListenerList` object.\n */\n\n\nfunction defineEventAttributeCallback(list) {\n return function (event) {\n var callback = list.attrCallback;\n\n if (typeof callback === \"function\") {\n callback.call(this, event);\n }\n };\n}\n/**\n * Define an `EventTarget` class that has event attibutes.\n * @param types The types to define event attributes.\n * @deprecated Use `getEventAttributeValue`/`setEventAttributeValue` pair on your derived class instead because of static analysis friendly.\n */\n\n\nfunction defineCustomEventTarget() {\n var CustomEventTarget = /*#__PURE__*/function (_EventTarget) {\n _inherits__default['default'](CustomEventTarget, _EventTarget);\n\n var _super4 = _createSuper(CustomEventTarget);\n\n function CustomEventTarget() {\n _classCallCheck__default['default'](this, CustomEventTarget);\n\n return _super4.apply(this, arguments);\n }\n\n return CustomEventTarget;\n }(EventTarget);\n\n for (var _i7 = 0; _i7 < arguments.length; ++_i7) {\n defineEventAttribute(CustomEventTarget.prototype, _i7 < 0 || arguments.length <= _i7 ? undefined : arguments[_i7]);\n }\n\n return CustomEventTarget;\n}\n/**\n * Define an event attribute.\n * @param target The `EventTarget` object to define an event attribute.\n * @param type The event type to define.\n * @param _eventClass Unused, but to infer `Event` class type.\n * @deprecated Use `getEventAttributeValue`/`setEventAttributeValue` pair on your derived class instead because of static analysis friendly.\n */\n\n\nfunction defineEventAttribute(target, type, _eventClass) {\n Object.defineProperty(target, \"on\".concat(type), {\n get: function get() {\n return getEventAttributeValue(this, type);\n },\n set: function set(value) {\n setEventAttributeValue(this, type, value);\n },\n configurable: true,\n enumerable: true\n });\n}\n\nexports.Event = Event;\nexports.EventTarget = EventTarget;\nexports.default = EventTarget;\nexports.defineCustomEventTarget = defineCustomEventTarget;\nexports.defineEventAttribute = defineEventAttribute;\nexports.getEventAttributeValue = getEventAttributeValue;\nexports.setErrorHandler = setErrorHandler;\nexports.setEventAttributeValue = setEventAttributeValue;\nexports.setWarningHandler = setWarningHandler;\n","'use strict';\n\nvar reactIs = require('react-is');\n\n/**\n * Copyright 2015, Yahoo! Inc.\n * Copyrights licensed under the New BSD License. See the accompanying LICENSE file for terms.\n */\nvar REACT_STATICS = {\n childContextTypes: true,\n contextType: true,\n contextTypes: true,\n defaultProps: true,\n displayName: true,\n getDefaultProps: true,\n getDerivedStateFromError: true,\n getDerivedStateFromProps: true,\n mixins: true,\n propTypes: true,\n type: true\n};\nvar KNOWN_STATICS = {\n name: true,\n length: true,\n prototype: true,\n caller: true,\n callee: true,\n arguments: true,\n arity: true\n};\nvar FORWARD_REF_STATICS = {\n '$$typeof': true,\n render: true,\n defaultProps: true,\n displayName: true,\n propTypes: true\n};\nvar MEMO_STATICS = {\n '$$typeof': true,\n compare: true,\n defaultProps: true,\n displayName: true,\n propTypes: true,\n type: true\n};\nvar TYPE_STATICS = {};\nTYPE_STATICS[reactIs.ForwardRef] = FORWARD_REF_STATICS;\nTYPE_STATICS[reactIs.Memo] = MEMO_STATICS;\n\nfunction getStatics(component) {\n // React v16.11 and below\n if (reactIs.isMemo(component)) {\n return MEMO_STATICS;\n } // React v16.12 and above\n\n\n return TYPE_STATICS[component['$$typeof']] || REACT_STATICS;\n}\n\nvar defineProperty = Object.defineProperty;\nvar getOwnPropertyNames = Object.getOwnPropertyNames;\nvar getOwnPropertySymbols = Object.getOwnPropertySymbols;\nvar getOwnPropertyDescriptor = Object.getOwnPropertyDescriptor;\nvar getPrototypeOf = Object.getPrototypeOf;\nvar objectPrototype = Object.prototype;\nfunction hoistNonReactStatics(targetComponent, sourceComponent, blacklist) {\n if (typeof sourceComponent !== 'string') {\n // don't hoist over string (html) components\n if (objectPrototype) {\n var inheritedComponent = getPrototypeOf(sourceComponent);\n\n if (inheritedComponent && inheritedComponent !== objectPrototype) {\n hoistNonReactStatics(targetComponent, inheritedComponent, blacklist);\n }\n }\n\n var keys = getOwnPropertyNames(sourceComponent);\n\n if (getOwnPropertySymbols) {\n keys = keys.concat(getOwnPropertySymbols(sourceComponent));\n }\n\n var targetStatics = getStatics(targetComponent);\n var sourceStatics = getStatics(sourceComponent);\n\n for (var i = 0; i < keys.length; ++i) {\n var key = keys[i];\n\n if (!KNOWN_STATICS[key] && !(blacklist && blacklist[key]) && !(sourceStatics && sourceStatics[key]) && !(targetStatics && targetStatics[key])) {\n var descriptor = getOwnPropertyDescriptor(sourceComponent, key);\n\n try {\n // Avoid failures from read-only properties\n defineProperty(targetComponent, key, descriptor);\n } catch (e) {}\n }\n }\n }\n\n return targetComponent;\n}\n\nmodule.exports = hoistNonReactStatics;\n","/** @license React v16.13.1\n * react-is.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';var b=\"function\"===typeof Symbol&&Symbol.for,c=b?Symbol.for(\"react.element\"):60103,d=b?Symbol.for(\"react.portal\"):60106,e=b?Symbol.for(\"react.fragment\"):60107,f=b?Symbol.for(\"react.strict_mode\"):60108,g=b?Symbol.for(\"react.profiler\"):60114,h=b?Symbol.for(\"react.provider\"):60109,k=b?Symbol.for(\"react.context\"):60110,l=b?Symbol.for(\"react.async_mode\"):60111,m=b?Symbol.for(\"react.concurrent_mode\"):60111,n=b?Symbol.for(\"react.forward_ref\"):60112,p=b?Symbol.for(\"react.suspense\"):60113,q=b?\nSymbol.for(\"react.suspense_list\"):60120,r=b?Symbol.for(\"react.memo\"):60115,t=b?Symbol.for(\"react.lazy\"):60116,v=b?Symbol.for(\"react.block\"):60121,w=b?Symbol.for(\"react.fundamental\"):60117,x=b?Symbol.for(\"react.responder\"):60118,y=b?Symbol.for(\"react.scope\"):60119;\nfunction z(a){if(\"object\"===typeof a&&null!==a){var u=a.$$typeof;switch(u){case c:switch(a=a.type,a){case l:case m:case e:case g:case f:case p:return a;default:switch(a=a&&a.$$typeof,a){case k:case n:case t:case r:case h:return a;default:return u}}case d:return u}}}function A(a){return z(a)===m}exports.AsyncMode=l;exports.ConcurrentMode=m;exports.ContextConsumer=k;exports.ContextProvider=h;exports.Element=c;exports.ForwardRef=n;exports.Fragment=e;exports.Lazy=t;exports.Memo=r;exports.Portal=d;\nexports.Profiler=g;exports.StrictMode=f;exports.Suspense=p;exports.isAsyncMode=function(a){return A(a)||z(a)===l};exports.isConcurrentMode=A;exports.isContextConsumer=function(a){return z(a)===k};exports.isContextProvider=function(a){return z(a)===h};exports.isElement=function(a){return\"object\"===typeof a&&null!==a&&a.$$typeof===c};exports.isForwardRef=function(a){return z(a)===n};exports.isFragment=function(a){return z(a)===e};exports.isLazy=function(a){return z(a)===t};\nexports.isMemo=function(a){return z(a)===r};exports.isPortal=function(a){return z(a)===d};exports.isProfiler=function(a){return z(a)===g};exports.isStrictMode=function(a){return z(a)===f};exports.isSuspense=function(a){return z(a)===p};\nexports.isValidElementType=function(a){return\"string\"===typeof a||\"function\"===typeof a||a===e||a===m||a===g||a===f||a===p||a===q||\"object\"===typeof a&&null!==a&&(a.$$typeof===t||a.$$typeof===r||a.$$typeof===h||a.$$typeof===k||a.$$typeof===n||a.$$typeof===w||a.$$typeof===x||a.$$typeof===y||a.$$typeof===v)};exports.typeOf=z;\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/react-is.production.min.js');\n} else {\n module.exports = require('./cjs/react-is.development.js');\n}\n","var safeIsNaN = Number.isNaN ||\n function ponyfill(value) {\n return typeof value === 'number' && value !== value;\n };\nfunction isEqual(first, second) {\n if (first === second) {\n return true;\n }\n if (safeIsNaN(first) && safeIsNaN(second)) {\n return true;\n }\n return false;\n}\nfunction areInputsEqual(newInputs, lastInputs) {\n if (newInputs.length !== lastInputs.length) {\n return false;\n }\n for (var i = 0; i < newInputs.length; i++) {\n if (!isEqual(newInputs[i], lastInputs[i])) {\n return false;\n }\n }\n return true;\n}\n\nfunction memoizeOne(resultFn, isEqual) {\n if (isEqual === void 0) { isEqual = areInputsEqual; }\n var cache = null;\n function memoized() {\n var newArgs = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newArgs[_i] = arguments[_i];\n }\n if (cache && cache.lastThis === this && isEqual(newArgs, cache.lastArgs)) {\n return cache.lastResult;\n }\n var lastResult = resultFn.apply(this, newArgs);\n cache = {\n lastResult: lastResult,\n lastArgs: newArgs,\n lastThis: this,\n };\n return lastResult;\n }\n memoized.clear = function clear() {\n cache = null;\n };\n return memoized;\n}\n\nexport { memoizeOne as default };\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\nimport { ConsoleLoggingListener } from \"./src/common.browser/Exports\";\r\nimport { Events } from \"./src/common/Exports\";\r\n\r\n// Common.Storage.SetLocalStorage(new Common.Browser.LocalStorage());\r\n// Common.Storage.SetSessionStorage(new Common.Browser.SessionStorage());\r\nEvents.instance.attachConsoleListener(new ConsoleLoggingListener());\r\n\r\n// Speech SDK API\r\nexport * from \"./src/sdk/Exports\";\r\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment */\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport * as fs from \"fs\";\r\nimport { LogLevel } from \"../sdk/LogLevel\";\r\nimport { IEventListener, PlatformEvent } from \"../common/Exports\";\r\nimport { Contracts } from \"../sdk/Contracts\";\r\n\r\nexport class ConsoleLoggingListener implements IEventListener {\r\n private privLogLevelFilter: LogLevel;\r\n private privLogPath: fs.PathLike = undefined;\r\n private privEnableConsoleOutput: boolean = true;\r\n\r\n public constructor(logLevelFilter: LogLevel = LogLevel.None) { // Console output disabled by default\r\n this.privLogLevelFilter = logLevelFilter;\r\n }\r\n\r\n public set logPath(path: fs.PathLike) {\r\n Contracts.throwIfNullOrUndefined(fs.openSync, \"\\nFile System access not available\");\r\n this.privLogPath = path;\r\n }\r\n\r\n public set enableConsoleOutput(enableOutput: boolean) {\r\n this.privEnableConsoleOutput = enableOutput;\r\n }\r\n\r\n public onEvent(event: PlatformEvent): void {\r\n if (event.eventType >= this.privLogLevelFilter) {\r\n const log = this.toString(event);\r\n if (!!this.privLogPath) {\r\n fs.writeFileSync(this.privLogPath, log + \"\\n\", { flag: \"a+\" });\r\n }\r\n\r\n if (this.privEnableConsoleOutput) {\r\n switch (event.eventType) {\r\n case LogLevel.Debug:\r\n // eslint-disable-next-line no-console\r\n console.debug(log);\r\n break;\r\n case LogLevel.Info:\r\n // eslint-disable-next-line no-console\r\n console.info(log);\r\n break;\r\n case LogLevel.Warning:\r\n // eslint-disable-next-line no-console\r\n console.warn(log);\r\n break;\r\n case LogLevel.Error:\r\n // eslint-disable-next-line no-console\r\n console.error(log);\r\n break;\r\n default:\r\n // eslint-disable-next-line no-console\r\n console.log(log);\r\n break;\r\n }\r\n }\r\n }\r\n }\r\n\r\n private toString(event: PlatformEvent): string {\r\n const logFragments = [\r\n `${event.eventTime}`,\r\n `${event.name}`,\r\n ];\r\n\r\n const e: any = event as any;\r\n for (const prop in e) {\r\n if (prop && event.hasOwnProperty(prop) &&\r\n prop !== \"eventTime\" && prop !== \"eventType\" &&\r\n prop !== \"eventId\" && prop !== \"name\" &&\r\n prop !== \"constructor\") {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\r\n const value = e[prop];\r\n let valueToLog = \"\";\r\n if (value !== undefined && value !== null) {\r\n if (typeof (value) === \"number\" || typeof (value) === \"string\") {\r\n valueToLog = value.toString();\r\n } else {\r\n valueToLog = JSON.stringify(value);\r\n }\r\n }\r\n\r\n logFragments.push(`${prop}: ${valueToLog}`);\r\n }\r\n\r\n }\r\n\r\n return logFragments.join(\" | \");\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport * from \"./ConsoleLoggingListener\";\r\nexport * from \"./IRecorder\";\r\nexport * from \"./MicAudioSource\";\r\nexport * from \"./FileAudioSource\";\r\nexport * from \"./PCMRecorder\";\r\nexport * from \"./WebsocketConnection\";\r\nexport * from \"./WebsocketMessageAdapter\";\r\nexport * from \"./ReplayableAudioNode\";\r\nexport * from \"./ProxyInfo\";\r\nexport * from \"./RestMessageAdapter\";\r\nexport * from \"./RestConfigBase\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n connectivity,\r\n ISpeechConfigAudioDevice,\r\n type,\r\n} from \"../common.speech/Exports\";\r\nimport {\r\n AudioSourceErrorEvent,\r\n AudioSourceEvent,\r\n AudioSourceInitializingEvent,\r\n AudioSourceOffEvent,\r\n AudioSourceReadyEvent,\r\n AudioStreamNodeAttachedEvent,\r\n AudioStreamNodeAttachingEvent,\r\n AudioStreamNodeDetachedEvent,\r\n AudioStreamNodeErrorEvent,\r\n ChunkedArrayBufferStream,\r\n createNoDashGuid,\r\n Deferred,\r\n Events,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IStreamChunk,\r\n IStringDictionary,\r\n Stream,\r\n} from \"../common/Exports\";\r\nimport { AudioStreamFormat, AudioStreamFormatImpl } from \"../sdk/Audio/AudioStreamFormat\";\r\n\r\nexport class FileAudioSource implements IAudioSource {\r\n\r\n private privAudioFormatPromise: Promise;\r\n\r\n private privStreams: IStringDictionary> = {};\r\n\r\n private privId: string;\r\n\r\n private privEvents: EventSource;\r\n\r\n private privSource: Blob | Buffer;\r\n\r\n private privFilename: string;\r\n\r\n private privHeaderEnd: number = 44;\r\n\r\n public constructor(file: File | Buffer, filename?: string, audioSourceId?: string) {\r\n this.privId = audioSourceId ? audioSourceId : createNoDashGuid();\r\n this.privEvents = new EventSource();\r\n this.privSource = file;\r\n if (typeof window !== \"undefined\" && typeof Blob !== \"undefined\" && this.privSource instanceof Blob) {\r\n this.privFilename = (file as File).name;\r\n } else {\r\n this.privFilename = filename || \"unknown.wav\";\r\n }\r\n\r\n // Read the header.\r\n this.privAudioFormatPromise = this.readHeader();\r\n }\r\n\r\n public get format(): Promise {\r\n return this.privAudioFormatPromise;\r\n }\r\n\r\n public turnOn(): Promise {\r\n if (this.privFilename.lastIndexOf(\".wav\") !== this.privFilename.length - 4) {\r\n const errorMsg = this.privFilename + \" is not supported. Only WAVE files are allowed at the moment.\";\r\n this.onEvent(new AudioSourceErrorEvent(errorMsg, \"\"));\r\n return Promise.reject(errorMsg);\r\n }\r\n\r\n this.onEvent(new AudioSourceInitializingEvent(this.privId)); // no stream id\r\n this.onEvent(new AudioSourceReadyEvent(this.privId));\r\n return;\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n public async attach(audioNodeId: string): Promise {\r\n this.onEvent(new AudioStreamNodeAttachingEvent(this.privId, audioNodeId));\r\n\r\n const stream: Stream = await this.upload(audioNodeId);\r\n\r\n this.onEvent(new AudioStreamNodeAttachedEvent(this.privId, audioNodeId));\r\n return Promise.resolve({\r\n detach: async (): Promise => {\r\n stream.readEnded();\r\n delete this.privStreams[audioNodeId];\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n await this.turnOff();\r\n },\r\n id: (): string => audioNodeId,\r\n read: (): Promise> => stream.read(),\r\n });\r\n }\r\n\r\n public detach(audioNodeId: string): void {\r\n if (audioNodeId && this.privStreams[audioNodeId]) {\r\n this.privStreams[audioNodeId].close();\r\n delete this.privStreams[audioNodeId];\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n }\r\n }\r\n\r\n public turnOff(): Promise {\r\n for (const streamId in this.privStreams) {\r\n if (streamId) {\r\n const stream = this.privStreams[streamId];\r\n if (stream && !stream.isClosed) {\r\n stream.close();\r\n }\r\n }\r\n }\r\n\r\n this.onEvent(new AudioSourceOffEvent(this.privId)); // no stream now\r\n return Promise.resolve();\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privEvents;\r\n }\r\n\r\n public get deviceInfo(): Promise {\r\n return this.privAudioFormatPromise.then((result: AudioStreamFormatImpl): Promise<{\r\n bitspersample: number;\r\n channelcount: number;\r\n connectivity: connectivity.Unknown;\r\n manufacturer: string;\r\n model: string;\r\n samplerate: number;\r\n type: type.File;\r\n }> => ( Promise.resolve({\r\n bitspersample: result.bitsPerSample,\r\n channelcount: result.channels,\r\n connectivity: connectivity.Unknown,\r\n manufacturer: \"Speech SDK\",\r\n model: \"File\",\r\n samplerate: result.samplesPerSec,\r\n type: type.File,\r\n })\r\n ));\r\n }\r\n\r\n private readHeader(): Promise {\r\n // Read the wave header.\r\n const maxHeaderSize: number = 4296;\r\n const header: Blob | Buffer = this.privSource.slice(0, maxHeaderSize);\r\n\r\n const headerResult: Deferred = new Deferred();\r\n\r\n const processHeader = (header: ArrayBuffer): void => {\r\n const view: DataView = new DataView(header);\r\n\r\n const getWord = (index: number): string => String.fromCharCode(view.getUint8(index), view.getUint8(index + 1), view.getUint8(index + 2), view.getUint8(index + 3));\r\n\r\n // RIFF 4 bytes.\r\n if (\"RIFF\" !== getWord(0)) {\r\n headerResult.reject(\"Invalid WAV header in file, RIFF was not found\");\r\n return;\r\n }\r\n\r\n // length, 4 bytes\r\n // RIFF Type & fmt 8 bytes\r\n if (\"WAVE\" !== getWord(8) || \"fmt \" !== getWord(12)) {\r\n headerResult.reject(\"Invalid WAV header in file, WAVEfmt was not found\");\r\n return;\r\n }\r\n\r\n const formatSize: number = view.getInt32(16, true);\r\n const channelCount: number = view.getUint16(22, true);\r\n const sampleRate: number = view.getUint32(24, true);\r\n const bitsPerSample: number = view.getUint16(34, true);\r\n // Confirm if header is 44 bytes long.\r\n let pos: number = 36 + Math.max(formatSize - 16, 0);\r\n for (; getWord(pos) !== \"data\"; pos += 2) {\r\n if (pos > maxHeaderSize - 8) {\r\n headerResult.reject(\"Invalid WAV header in file, data block was not found\");\r\n return;\r\n }\r\n }\r\n this.privHeaderEnd = pos + 8;\r\n headerResult.resolve(AudioStreamFormat.getWaveFormatPCM(sampleRate, bitsPerSample, channelCount) as AudioStreamFormatImpl);\r\n };\r\n\r\n if (typeof window !== \"undefined\" && typeof Blob !== \"undefined\" && header instanceof Blob) {\r\n const reader: FileReader = new FileReader();\r\n\r\n reader.onload = (event: Event): void => {\r\n const header: ArrayBuffer = (event.target as FileReader).result as ArrayBuffer;\r\n processHeader(header);\r\n };\r\n\r\n reader.readAsArrayBuffer(header);\r\n } else {\r\n const h: Buffer = header as Buffer;\r\n processHeader(h.buffer.slice(h.byteOffset, h.byteOffset + h.byteLength));\r\n }\r\n return headerResult.promise;\r\n }\r\n\r\n private async upload(audioNodeId: string): Promise> {\r\n const onerror = (error: string): void => {\r\n const errorMsg = `Error occurred while processing '${this.privFilename}'. ${error}`;\r\n this.onEvent(new AudioStreamNodeErrorEvent(this.privId, audioNodeId, errorMsg));\r\n throw new Error(errorMsg);\r\n };\r\n\r\n try {\r\n await this.turnOn();\r\n\r\n const format: AudioStreamFormatImpl = await this.privAudioFormatPromise;\r\n const stream = new ChunkedArrayBufferStream(format.avgBytesPerSec / 10, audioNodeId);\r\n\r\n this.privStreams[audioNodeId] = stream;\r\n const chunk: Blob | Buffer = this.privSource.slice(this.privHeaderEnd);\r\n\r\n const processFile = (buff: ArrayBuffer): void => {\r\n if (stream.isClosed) {\r\n return; // output stream was closed (somebody called TurnOff). We're done here.\r\n }\r\n\r\n stream.writeStreamChunk({\r\n buffer: buff,\r\n isEnd: false,\r\n timeReceived: Date.now(),\r\n });\r\n stream.close();\r\n };\r\n\r\n if (typeof window !== \"undefined\" && typeof Blob !== \"undefined\" && chunk instanceof Blob) {\r\n const reader: FileReader = new FileReader();\r\n reader.onerror = (ev: ProgressEvent): void => onerror(ev.toString());\r\n\r\n reader.onload = (event: Event): void => {\r\n const fileBuffer: ArrayBuffer = (event.target as FileReader).result as ArrayBuffer;\r\n processFile(fileBuffer);\r\n };\r\n\r\n reader.readAsArrayBuffer(chunk);\r\n } else {\r\n const c: Buffer = chunk as Buffer;\r\n processFile(c.buffer.slice(c.byteOffset, c.byteOffset + c.byteLength));\r\n }\r\n\r\n return stream;\r\n } catch (e) {\r\n onerror(e as string);\r\n }\r\n }\r\n\r\n private onEvent(event: AudioSourceEvent): void {\r\n this.privEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n connectivity,\r\n ISpeechConfigAudioDevice,\r\n type\r\n} from \"../common.speech/Exports\";\r\nimport {\r\n AudioSourceErrorEvent,\r\n AudioSourceEvent,\r\n AudioSourceInitializingEvent,\r\n AudioSourceOffEvent,\r\n AudioSourceReadyEvent,\r\n AudioStreamNodeAttachedEvent,\r\n AudioStreamNodeAttachingEvent,\r\n AudioStreamNodeDetachedEvent,\r\n AudioStreamNodeErrorEvent,\r\n ChunkedArrayBufferStream,\r\n createNoDashGuid,\r\n Deferred,\r\n Events,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IStringDictionary,\r\n Stream,\r\n} from \"../common/Exports\";\r\nimport { IStreamChunk } from \"../common/Stream\";\r\nimport {\r\n AudioStreamFormat,\r\n AudioStreamFormatImpl,\r\n} from \"../sdk/Audio/AudioStreamFormat\";\r\nimport { IRecorder } from \"./IRecorder\";\r\n\r\n// Extending the default definition with browser specific definitions for backward compatibility\r\ninterface INavigator extends Navigator {\r\n webkitGetUserMedia?: (constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback | undefined, errorCallback: NavigatorUserMediaErrorCallback) => void;\r\n mozGetUserMedia?: (constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback | undefined, errorCallback: NavigatorUserMediaErrorCallback) => void;\r\n msGetUserMedia?: (constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback) => void;\r\n}\r\n\r\nexport const AudioWorkletSourceURLPropertyName = \"MICROPHONE-WorkletSourceUrl\";\r\n\r\nexport class MicAudioSource implements IAudioSource {\r\n\r\n private static readonly AUDIOFORMAT: AudioStreamFormatImpl = AudioStreamFormat.getDefaultInputFormat() as AudioStreamFormatImpl;\r\n\r\n private privStreams: IStringDictionary> = {};\r\n\r\n private privId: string;\r\n\r\n private privEvents: EventSource;\r\n\r\n private privInitializeDeferral: Deferred;\r\n\r\n private privMediaStream: MediaStream;\r\n\r\n private privContext: AudioContext;\r\n\r\n private privMicrophoneLabel: string;\r\n\r\n private privOutputChunkSize: number;\r\n\r\n private privIsClosing: boolean;\r\n\r\n public constructor(\r\n private readonly privRecorder: IRecorder,\r\n private readonly deviceId?: string,\r\n audioSourceId?: string,\r\n mediaStream?: MediaStream\r\n ) {\r\n\r\n this.privOutputChunkSize = MicAudioSource.AUDIOFORMAT.avgBytesPerSec / 10;\r\n this.privId = audioSourceId ? audioSourceId : createNoDashGuid();\r\n this.privEvents = new EventSource();\r\n this.privMediaStream = mediaStream || null;\r\n this.privIsClosing = false;\r\n }\r\n\r\n public get format(): Promise {\r\n return Promise.resolve(MicAudioSource.AUDIOFORMAT);\r\n }\r\n\r\n public turnOn(): Promise {\r\n if (this.privInitializeDeferral) {\r\n return this.privInitializeDeferral.promise;\r\n }\r\n\r\n this.privInitializeDeferral = new Deferred();\r\n\r\n try {\r\n this.createAudioContext();\r\n } catch (error) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n this.privInitializeDeferral.reject(typedError.name + \": \" + typedError.message);\r\n } else {\r\n this.privInitializeDeferral.reject(error as string);\r\n }\r\n return this.privInitializeDeferral.promise;\r\n }\r\n\r\n const nav = window.navigator as INavigator;\r\n\r\n let getUserMedia = (\r\n // eslint-disable-next-line\r\n nav.getUserMedia ||\r\n nav.webkitGetUserMedia ||\r\n nav.mozGetUserMedia ||\r\n nav.msGetUserMedia\r\n );\r\n\r\n if (!!nav.mediaDevices) {\r\n getUserMedia = (constraints: MediaStreamConstraints, successCallback: NavigatorUserMediaSuccessCallback, errorCallback: NavigatorUserMediaErrorCallback): void => {\r\n nav.mediaDevices\r\n .getUserMedia(constraints)\r\n .then(successCallback)\r\n .catch(errorCallback);\r\n };\r\n }\r\n\r\n if (!getUserMedia) {\r\n const errorMsg = \"Browser does not support getUserMedia.\";\r\n this.privInitializeDeferral.reject(errorMsg);\r\n this.onEvent(new AudioSourceErrorEvent(errorMsg, \"\")); // mic initialized error - no streamid at this point\r\n } else {\r\n const next = (): void => {\r\n this.onEvent(new AudioSourceInitializingEvent(this.privId)); // no stream id\r\n if (this.privMediaStream && this.privMediaStream.active) {\r\n this.onEvent(new AudioSourceReadyEvent(this.privId));\r\n this.privInitializeDeferral.resolve();\r\n } else {\r\n getUserMedia(\r\n { audio: this.deviceId ? { deviceId: this.deviceId } : true, video: false },\r\n (mediaStream: MediaStream): void => {\r\n this.privMediaStream = mediaStream;\r\n this.onEvent(new AudioSourceReadyEvent(this.privId));\r\n this.privInitializeDeferral.resolve();\r\n }, (error: any): void => {\r\n const errorMsg = `Error occurred during microphone initialization: ${error as string}`;\r\n this.privInitializeDeferral.reject(errorMsg);\r\n this.onEvent(new AudioSourceErrorEvent(this.privId, errorMsg));\r\n });\r\n }\r\n };\r\n\r\n if (this.privContext.state === \"suspended\") {\r\n // NOTE: On iOS, the Web Audio API requires sounds to be triggered from an explicit user action.\r\n // https://github.com/WebAudio/web-audio-api/issues/790\r\n this.privContext.resume()\r\n .then(next)\r\n .catch((reason: any): void => {\r\n this.privInitializeDeferral.reject(`Failed to initialize audio context: ${reason as string}`);\r\n });\r\n } else {\r\n next();\r\n }\r\n }\r\n\r\n return this.privInitializeDeferral.promise;\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n public attach(audioNodeId: string): Promise {\r\n this.onEvent(new AudioStreamNodeAttachingEvent(this.privId, audioNodeId));\r\n\r\n return this.listen(audioNodeId).then(\r\n (stream: Stream): IAudioStreamNode => {\r\n this.onEvent(new AudioStreamNodeAttachedEvent(this.privId, audioNodeId));\r\n return {\r\n detach: async (): Promise => {\r\n stream.readEnded();\r\n delete this.privStreams[audioNodeId];\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n return this.turnOff();\r\n },\r\n id: (): string => audioNodeId,\r\n read: (): Promise> => stream.read(),\r\n };\r\n });\r\n }\r\n\r\n public detach(audioNodeId: string): void {\r\n if (audioNodeId && this.privStreams[audioNodeId]) {\r\n this.privStreams[audioNodeId].close();\r\n delete this.privStreams[audioNodeId];\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n }\r\n }\r\n\r\n public async turnOff(): Promise {\r\n for (const streamId in this.privStreams) {\r\n if (streamId) {\r\n const stream = this.privStreams[streamId];\r\n if (stream) {\r\n stream.close();\r\n }\r\n }\r\n }\r\n\r\n this.onEvent(new AudioSourceOffEvent(this.privId)); // no stream now\r\n if (this.privInitializeDeferral) {\r\n // Correctly handle when browser forces mic off before turnOn() completes\r\n // eslint-disable-next-line @typescript-eslint/await-thenable\r\n await this.privInitializeDeferral;\r\n this.privInitializeDeferral = null;\r\n }\r\n\r\n await this.destroyAudioContext();\r\n\r\n return;\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privEvents;\r\n }\r\n\r\n public get deviceInfo(): Promise {\r\n return this.getMicrophoneLabel().then((label: string): ISpeechConfigAudioDevice => (\r\n {\r\n bitspersample: MicAudioSource.AUDIOFORMAT.bitsPerSample,\r\n channelcount: MicAudioSource.AUDIOFORMAT.channels,\r\n connectivity: connectivity.Unknown,\r\n manufacturer: \"Speech SDK\",\r\n model: label,\r\n samplerate: MicAudioSource.AUDIOFORMAT.samplesPerSec,\r\n type: type.Microphones,\r\n }\r\n ));\r\n }\r\n\r\n public setProperty(name: string, value: string): void {\r\n if (name === AudioWorkletSourceURLPropertyName) {\r\n this.privRecorder.setWorkletUrl(value);\r\n } else {\r\n throw new Error(\"Property '\" + name + \"' is not supported on Microphone.\");\r\n }\r\n }\r\n\r\n private getMicrophoneLabel(): Promise {\r\n const defaultMicrophoneName: string = \"microphone\";\r\n\r\n // If we did this already, return the value.\r\n if (this.privMicrophoneLabel !== undefined) {\r\n return Promise.resolve(this.privMicrophoneLabel);\r\n }\r\n\r\n // If the stream isn't currently running, we can't query devices because security.\r\n if (this.privMediaStream === undefined || !this.privMediaStream.active) {\r\n return Promise.resolve(defaultMicrophoneName);\r\n }\r\n\r\n // Setup a default\r\n this.privMicrophoneLabel = defaultMicrophoneName;\r\n\r\n // Get the id of the device running the audio track.\r\n const microphoneDeviceId: string = this.privMediaStream.getTracks()[0].getSettings().deviceId;\r\n\r\n // If the browser doesn't support getting the device ID, set a default and return.\r\n if (undefined === microphoneDeviceId) {\r\n return Promise.resolve(this.privMicrophoneLabel);\r\n }\r\n\r\n const deferred: Deferred = new Deferred();\r\n\r\n // Enumerate the media devices.\r\n navigator.mediaDevices.enumerateDevices().then((devices: MediaDeviceInfo[]): void => {\r\n for (const device of devices) {\r\n if (device.deviceId === microphoneDeviceId) {\r\n // Found the device\r\n this.privMicrophoneLabel = device.label;\r\n break;\r\n }\r\n }\r\n deferred.resolve(this.privMicrophoneLabel);\r\n }, (): Deferred => deferred.resolve(this.privMicrophoneLabel));\r\n\r\n return deferred.promise;\r\n }\r\n\r\n private async listen(audioNodeId: string): Promise> {\r\n await this.turnOn();\r\n const stream = new ChunkedArrayBufferStream(this.privOutputChunkSize, audioNodeId);\r\n this.privStreams[audioNodeId] = stream;\r\n try {\r\n this.privRecorder.record(this.privContext, this.privMediaStream, stream);\r\n } catch (error) {\r\n this.onEvent(new AudioStreamNodeErrorEvent(this.privId, audioNodeId, error as string));\r\n throw error;\r\n }\r\n const result: Stream = stream;\r\n return result;\r\n }\r\n\r\n private onEvent(event: AudioSourceEvent): void {\r\n this.privEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n private createAudioContext(): void {\r\n if (!!this.privContext) {\r\n return;\r\n }\r\n\r\n this.privContext = AudioStreamFormatImpl.getAudioContext(MicAudioSource.AUDIOFORMAT.samplesPerSec);\r\n }\r\n\r\n private async destroyAudioContext(): Promise {\r\n if (!this.privContext) {\r\n return;\r\n }\r\n\r\n this.privRecorder.releaseMediaResources(this.privContext);\r\n\r\n // This pattern brought to you by a bug in the TypeScript compiler where it\r\n // confuses the (\"close\" in this.privContext) with this.privContext always being null as the alternate.\r\n // https://github.com/Microsoft/TypeScript/issues/11498\r\n let hasClose: boolean = false;\r\n if (\"close\" in this.privContext) {\r\n hasClose = true;\r\n }\r\n\r\n if (hasClose) {\r\n if (!this.privIsClosing) {\r\n // The audio context close may take enough time that the close is called twice\r\n this.privIsClosing = true;\r\n await this.privContext.close();\r\n this.privContext = null;\r\n this.privIsClosing = false;\r\n }\r\n } else if (null !== this.privContext && this.privContext.state === \"running\") {\r\n // Suspend actually takes a callback, but analogous to the\r\n // resume method, it'll be only fired if suspend is called\r\n // in a direct response to a user action. The later is not always\r\n // the case, as TurnOff is also called, when we receive an\r\n // end-of-speech message from the service. So, doing a best effort\r\n // fire-and-forget here.\r\n await this.privContext.suspend();\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { RiffPcmEncoder, Stream } from \"../common/Exports\";\r\nimport { IRecorder } from \"./IRecorder\";\r\n\r\nexport class PcmRecorder implements IRecorder {\r\n private privMediaResources: IMediaResources;\r\n private privSpeechProcessorScript: string; // speech-processor.js Url\r\n private privStopInputOnRelease: boolean;\r\n\r\n public constructor(stopInputOnRelease: boolean) {\r\n this.privStopInputOnRelease = stopInputOnRelease;\r\n }\r\n\r\n public record(context: AudioContext, mediaStream: MediaStream, outputStream: Stream): void {\r\n const desiredSampleRate = 16000;\r\n\r\n const waveStreamEncoder = new RiffPcmEncoder(context.sampleRate, desiredSampleRate);\r\n\r\n const micInput = context.createMediaStreamSource(mediaStream);\r\n\r\n const attachScriptProcessor = (): void => {\r\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\r\n const scriptNode = (() => {\r\n let bufferSize = 0;\r\n try {\r\n return context.createScriptProcessor(bufferSize, 1, 1);\r\n } catch (error) {\r\n // Webkit (<= version 31) requires a valid bufferSize.\r\n bufferSize = 2048;\r\n let audioSampleRate = context.sampleRate;\r\n while (bufferSize < 16384 && audioSampleRate >= (2 * desiredSampleRate)) {\r\n bufferSize <<= 1;\r\n audioSampleRate >>= 1;\r\n }\r\n return context.createScriptProcessor(bufferSize, 1, 1);\r\n }\r\n })();\r\n scriptNode.onaudioprocess = (event: AudioProcessingEvent): void => {\r\n const inputFrame = event.inputBuffer.getChannelData(0);\r\n\r\n if (outputStream && !outputStream.isClosed) {\r\n const waveFrame = waveStreamEncoder.encode(inputFrame);\r\n if (!!waveFrame) {\r\n outputStream.writeStreamChunk({\r\n buffer: waveFrame,\r\n isEnd: false,\r\n timeReceived: Date.now(),\r\n });\r\n }\r\n }\r\n };\r\n micInput.connect(scriptNode);\r\n scriptNode.connect(context.destination);\r\n this.privMediaResources = {\r\n scriptProcessorNode: scriptNode,\r\n source: micInput,\r\n stream: mediaStream,\r\n };\r\n };\r\n\r\n // https://webaudio.github.io/web-audio-api/#audioworklet\r\n // Using AudioWorklet to improve audio quality and avoid audio glitches due to blocking the UI thread\r\n\r\n if (!!context.audioWorklet) {\r\n if (!this.privSpeechProcessorScript) {\r\n const workletScript = `class SP extends AudioWorkletProcessor {\r\n constructor(options) {\r\n super(options);\r\n }\r\n process(inputs, outputs) {\r\n const input = inputs[0];\r\n const output = [];\r\n for (let channel = 0; channel < input.length; channel += 1) {\r\n output[channel] = input[channel];\r\n }\r\n this.port.postMessage(output[0]);\r\n return true;\r\n }\r\n }\r\n registerProcessor('speech-processor', SP);`;\r\n const blob = new Blob([workletScript], { type: \"application/javascript; charset=utf-8\" });\r\n this.privSpeechProcessorScript = URL.createObjectURL(blob);\r\n }\r\n\r\n context.audioWorklet\r\n .addModule(this.privSpeechProcessorScript)\r\n .then((): void => {\r\n const workletNode = new AudioWorkletNode(context, \"speech-processor\");\r\n workletNode.port.onmessage = (ev: MessageEvent): void => {\r\n const inputFrame: Float32Array = ev.data as Float32Array;\r\n\r\n if (outputStream && !outputStream.isClosed) {\r\n const waveFrame = waveStreamEncoder.encode(inputFrame);\r\n if (!!waveFrame) {\r\n outputStream.writeStreamChunk({\r\n buffer: waveFrame,\r\n isEnd: false,\r\n timeReceived: Date.now(),\r\n });\r\n }\r\n }\r\n };\r\n micInput.connect(workletNode);\r\n workletNode.connect(context.destination);\r\n this.privMediaResources = {\r\n scriptProcessorNode: workletNode,\r\n source: micInput,\r\n stream: mediaStream,\r\n };\r\n })\r\n .catch((): void => {\r\n attachScriptProcessor();\r\n });\r\n } else {\r\n try {\r\n attachScriptProcessor();\r\n } catch (err) {\r\n throw new Error(`Unable to start audio worklet node for PCMRecorder: ${err as string}`);\r\n }\r\n }\r\n }\r\n\r\n public releaseMediaResources(context: AudioContext): void {\r\n if (this.privMediaResources) {\r\n if (this.privMediaResources.scriptProcessorNode) {\r\n this.privMediaResources.scriptProcessorNode.disconnect(context.destination);\r\n this.privMediaResources.scriptProcessorNode = null;\r\n }\r\n if (this.privMediaResources.source) {\r\n this.privMediaResources.source.disconnect();\r\n if (this.privStopInputOnRelease) {\r\n this.privMediaResources.stream.getTracks().forEach((track: MediaStreamTrack): void => track.stop());\r\n }\r\n this.privMediaResources.source = null;\r\n }\r\n }\r\n }\r\n\r\n public setWorkletUrl(url: string): void {\r\n this.privSpeechProcessorScript = url;\r\n }\r\n}\r\n\r\ninterface IMediaResources {\r\n source: MediaStreamAudioSourceNode;\r\n scriptProcessorNode: ScriptProcessorNode | AudioWorkletNode;\r\n stream: MediaStream;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { RecognizerConfig } from \"../common.speech/Exports\";\r\nimport { PropertyCollection, PropertyId } from \"../sdk/Exports\";\r\n\r\nexport class ProxyInfo {\r\n private privProxyHostName: string;\r\n private privProxyPort: number;\r\n private privProxyUserName: string;\r\n private privProxyPassword: string;\r\n\r\n private constructor(proxyHostName: string, proxyPort: number, proxyUserName: string, proxyPassword: string) {\r\n this.privProxyHostName = proxyHostName;\r\n this.privProxyPort = proxyPort;\r\n this.privProxyUserName = proxyUserName;\r\n this.privProxyPassword = proxyPassword;\r\n }\r\n\r\n public static fromParameters(parameters: PropertyCollection): ProxyInfo {\r\n return new ProxyInfo(parameters.getProperty(PropertyId.SpeechServiceConnection_ProxyHostName),\r\n parseInt(parameters.getProperty(PropertyId.SpeechServiceConnection_ProxyPort), 10),\r\n parameters.getProperty(PropertyId.SpeechServiceConnection_ProxyUserName),\r\n parameters.getProperty(PropertyId.SpeechServiceConnection_ProxyPassword));\r\n }\r\n\r\n public static fromRecognizerConfig(config: RecognizerConfig): ProxyInfo {\r\n return this.fromParameters(config.parameters);\r\n }\r\n\r\n public get HostName(): string {\r\n return this.privProxyHostName;\r\n }\r\n\r\n public get Port(): number {\r\n return this.privProxyPort;\r\n }\r\n\r\n public get UserName(): string {\r\n return this.privProxyUserName;\r\n }\r\n\r\n public get Password(): string {\r\n return this.privProxyPassword;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nimport {\r\n IAudioStreamNode,\r\n IStreamChunk,\r\n} from \"../common/Exports\";\r\n\r\nexport class ReplayableAudioNode implements IAudioStreamNode {\r\n private privAudioNode: IAudioStreamNode;\r\n private privBytesPerSecond: number;\r\n private privBuffers: BufferEntry[] = [];\r\n private privReplayOffset: number = 0;\r\n private privLastShrinkOffset: number = 0;\r\n private privBufferStartOffset: number = 0;\r\n private privBufferSerial: number = 0;\r\n private privBufferedBytes: number = 0;\r\n private privReplay: boolean = false;\r\n private privLastChunkAcquiredTime: number = 0;\r\n\r\n public constructor(audioSource: IAudioStreamNode, bytesPerSecond: number) {\r\n this.privAudioNode = audioSource;\r\n this.privBytesPerSecond = bytesPerSecond;\r\n }\r\n\r\n public id(): string {\r\n return this.privAudioNode.id();\r\n }\r\n\r\n // Reads and returns the next chunk of audio buffer.\r\n // If replay of existing buffers are needed, read() will first seek and replay\r\n // existing content, and upoin completion it will read new content from the underlying\r\n // audio node, saving that content into the replayable buffers.\r\n public read(): Promise> {\r\n // if there is a replay request to honor.\r\n if (!!this.privReplay && this.privBuffers.length !== 0) {\r\n // Find the start point in the buffers.\r\n // Offsets are in 100ns increments.\r\n // So how many bytes do we need to seek to get the right offset?\r\n const offsetToSeek: number = this.privReplayOffset - this.privBufferStartOffset;\r\n\r\n let bytesToSeek: number = Math.round(offsetToSeek * this.privBytesPerSecond * 1e-7);\r\n if (0 !== (bytesToSeek % 2)) {\r\n bytesToSeek++;\r\n }\r\n\r\n let i: number = 0;\r\n\r\n while (i < this.privBuffers.length && bytesToSeek >= this.privBuffers[i].chunk.buffer.byteLength) {\r\n bytesToSeek -= this.privBuffers[i++].chunk.buffer.byteLength;\r\n }\r\n\r\n if (i < this.privBuffers.length) {\r\n const retVal: ArrayBuffer = this.privBuffers[i].chunk.buffer.slice(bytesToSeek);\r\n\r\n this.privReplayOffset += (retVal.byteLength / this.privBytesPerSecond) * 1e+7;\r\n\r\n // If we've reached the end of the buffers, stop replaying.\r\n if (i === this.privBuffers.length - 1) {\r\n this.privReplay = false;\r\n }\r\n\r\n return Promise.resolve>({\r\n buffer: retVal,\r\n isEnd: false,\r\n timeReceived: this.privBuffers[i].chunk.timeReceived,\r\n });\r\n }\r\n }\r\n\r\n return this.privAudioNode.read()\r\n .then((result: IStreamChunk): IStreamChunk => {\r\n if (result && result.buffer) {\r\n this.privBuffers.push(new BufferEntry(result, this.privBufferSerial++, this.privBufferedBytes));\r\n this.privBufferedBytes += result.buffer.byteLength;\r\n }\r\n return result;\r\n });\r\n }\r\n\r\n public detach(): Promise {\r\n this.privBuffers = undefined;\r\n return this.privAudioNode.detach();\r\n }\r\n\r\n public replay(): void {\r\n if (this.privBuffers && 0 !== this.privBuffers.length) {\r\n this.privReplay = true;\r\n this.privReplayOffset = this.privLastShrinkOffset;\r\n }\r\n }\r\n\r\n // Shrinks the existing audio buffers to start at the new offset, or at the\r\n // beginning of the buffer closest to the requested offset.\r\n // A replay request will start from the last shrink point.\r\n public shrinkBuffers(offset: number): void {\r\n if (this.privBuffers === undefined || this.privBuffers.length === 0) {\r\n return;\r\n }\r\n\r\n this.privLastShrinkOffset = offset;\r\n\r\n // Find the start point in the buffers.\r\n // Offsets are in 100ns increments.\r\n // So how many bytes do we need to seek to get the right offset?\r\n const offsetToSeek: number = offset - this.privBufferStartOffset;\r\n\r\n let bytesToSeek: number = Math.round(offsetToSeek * this.privBytesPerSecond * 1e-7);\r\n\r\n let i: number = 0;\r\n\r\n while (i < this.privBuffers.length && bytesToSeek >= this.privBuffers[i].chunk.buffer.byteLength) {\r\n bytesToSeek -= this.privBuffers[i++].chunk.buffer.byteLength;\r\n }\r\n this.privBufferStartOffset = Math.round(offset - ((bytesToSeek / this.privBytesPerSecond) * 1e+7));\r\n this.privBuffers = this.privBuffers.slice(i);\r\n }\r\n\r\n // Finds the time a buffer of audio was first seen by offset.\r\n public findTimeAtOffset(offset: number): number {\r\n if (offset < this.privBufferStartOffset || this.privBuffers === undefined) {\r\n return 0;\r\n }\r\n\r\n for (const value of this.privBuffers) {\r\n const startOffset: number = (value.byteOffset / this.privBytesPerSecond) * 1e7;\r\n const endOffset: number = startOffset + ((value.chunk.buffer.byteLength / this.privBytesPerSecond) * 1e7);\r\n\r\n if (offset >= startOffset && offset <= endOffset) {\r\n return value.chunk.timeReceived;\r\n }\r\n }\r\n\r\n return 0;\r\n }\r\n}\r\n\r\n// Primary use of this class is to help debugging problems with the replay\r\n// code. If the memory cost of alloc / dealloc gets too much, drop it and just use\r\n// the ArrayBuffer directly.\r\nclass BufferEntry {\r\n public chunk: IStreamChunk;\r\n public serial: number;\r\n public byteOffset: number;\r\n\r\n public constructor(chunk: IStreamChunk, serial: number, byteOffset: number) {\r\n this.chunk = chunk;\r\n this.serial = serial;\r\n this.byteOffset = byteOffset;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IErrorMessages } from \"../common/Exports\";\r\n/**\r\n * HTTP request helper\r\n */\r\nexport interface IRequestOptions {\r\n headers?: {[key: string]: string};\r\n ignoreCache?: boolean;\r\n timeout?: number;\r\n}\r\n\r\nexport interface IRestParams {\r\n apiVersion: string;\r\n authorization: string;\r\n clientAppId: string;\r\n contentTypeKey: string;\r\n correlationId: string;\r\n languageCode: string;\r\n nickname: string;\r\n profanity: string;\r\n requestId: string;\r\n roomId: string;\r\n sessionToken: string;\r\n subscriptionKey: string;\r\n subscriptionRegion: string;\r\n token: string;\r\n}\r\n\r\nexport class RestConfigBase {\r\n\r\n public static get requestOptions(): IRequestOptions {\r\n return RestConfigBase.privDefaultRequestOptions;\r\n }\r\n\r\n public static get configParams(): IRestParams {\r\n return RestConfigBase.privDefaultParams;\r\n }\r\n\r\n public static get restErrors(): IErrorMessages {\r\n return RestConfigBase.privRestErrors;\r\n }\r\n\r\n private static readonly privDefaultRequestOptions: IRequestOptions = {\r\n headers: {\r\n Accept: \"application/json\",\r\n },\r\n ignoreCache: false,\r\n timeout: 10000,\r\n };\r\n\r\n private static readonly privRestErrors: IErrorMessages = {\r\n authInvalidSubscriptionKey: \"You must specify either an authentication token to use, or a Cognitive Speech subscription key.\",\r\n authInvalidSubscriptionRegion: \"You must specify the Cognitive Speech region to use.\",\r\n invalidArgs: \"Required input not found: {arg}.\",\r\n invalidCreateJoinConversationResponse: \"Creating/Joining conversation failed with HTTP {status}.\",\r\n invalidParticipantRequest: \"The requested participant was not found.\",\r\n permissionDeniedConnect: \"Required credentials not found.\",\r\n permissionDeniedConversation: \"Invalid operation: only the host can {command} the conversation.\",\r\n permissionDeniedParticipant: \"Invalid operation: only the host can {command} a participant.\",\r\n permissionDeniedSend: \"Invalid operation: the conversation is not in a connected state.\",\r\n permissionDeniedStart: \"Invalid operation: there is already an active conversation.\",\r\n };\r\n\r\n private static readonly privDefaultParams: IRestParams = {\r\n apiVersion: \"api-version\",\r\n authorization: \"Authorization\",\r\n clientAppId: \"X-ClientAppId\",\r\n contentTypeKey: \"Content-Type\",\r\n correlationId: \"X-CorrelationId\",\r\n languageCode: \"language\",\r\n nickname: \"nickname\",\r\n profanity: \"profanity\",\r\n requestId: \"X-RequestId\",\r\n roomId: \"roomid\",\r\n sessionToken: \"token\",\r\n subscriptionKey: \"Ocp-Apim-Subscription-Key\",\r\n subscriptionRegion: \"Ocp-Apim-Subscription-Region\",\r\n token: \"X-CapitoToken\",\r\n };\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport bent, { BentResponse, RequestBody } from \"bent\";\r\nimport {\r\n ArgumentNullError,\r\n Deferred\r\n} from \"../common/Exports\";\r\nimport { IRequestOptions } from \"./Exports\";\r\n\r\nexport enum RestRequestType {\r\n Get = \"GET\",\r\n Post = \"POST\",\r\n Delete = \"DELETE\",\r\n File = \"file\",\r\n}\r\n\r\nexport interface IRestResponse {\r\n ok: boolean;\r\n status: number;\r\n statusText: string;\r\n data: string;\r\n json: any;\r\n headers: string;\r\n}\r\n\r\ninterface JsonError {\r\n error?: {\r\n message: string;\r\n };\r\n}\r\n\r\n// accept rest operations via request method and return abstracted objects from server response\r\nexport class RestMessageAdapter {\r\n\r\n private privIgnoreCache: boolean;\r\n private privHeaders: { [key: string]: string };\r\n\r\n public constructor(\r\n configParams: IRequestOptions\r\n ) {\r\n\r\n if (!configParams) {\r\n throw new ArgumentNullError(\"configParams\");\r\n }\r\n\r\n this.privHeaders = configParams.headers;\r\n this.privIgnoreCache = configParams.ignoreCache;\r\n }\r\n\r\n public static extractHeaderValue(headerKey: string, headers: string): string {\r\n let headerValue: string = \"\";\r\n\r\n try {\r\n const arr = headers.trim().split(/[\\r\\n]+/);\r\n const headerMap: { [key: string]: string } = {};\r\n arr.forEach((line: string): void => {\r\n const parts = line.split(\": \");\r\n const header = parts.shift().toLowerCase();\r\n const value = parts.join(\": \");\r\n headerMap[header] = value;\r\n });\r\n\r\n headerValue = headerMap[headerKey.toLowerCase()];\r\n } catch (e) {\r\n // ignore the error\r\n }\r\n\r\n return headerValue;\r\n }\r\n\r\n public set options(configParams: IRequestOptions) {\r\n this.privHeaders = configParams.headers;\r\n this.privIgnoreCache = configParams.ignoreCache;\r\n }\r\n\r\n public setHeaders(key: string, value: string): void {\r\n this.privHeaders[key] = value;\r\n }\r\n\r\n public request(\r\n method: RestRequestType,\r\n uri: string,\r\n queryParams: { [key: string]: any } = {},\r\n body: any = null,\r\n ): Promise {\r\n\r\n const responseReceivedDeferral = new Deferred();\r\n\r\n const requestCommand = method === RestRequestType.File ? \"POST\" : method;\r\n const handleRestResponse = (data: BentResponse, j: JsonError = {}): IRestResponse => {\r\n const d: { statusText?: string; statusMessage?: string } = data;\r\n return {\r\n data: JSON.stringify(j),\r\n headers: JSON.stringify(data.headers),\r\n json: j,\r\n ok: data.statusCode >= 200 && data.statusCode < 300,\r\n status: data.statusCode,\r\n statusText: j.error ? j.error.message : d.statusText ? d.statusText : d.statusMessage\r\n };\r\n };\r\n\r\n const send = (postData: RequestBody): void => {\r\n const sendRequest = bent(uri, requestCommand, this.privHeaders, 200, 201, 202, 204, 400, 401, 402, 403, 404);\r\n const params = this.queryParams(queryParams) === \"\" ? \"\" : `?${this.queryParams(queryParams)}`;\r\n sendRequest(params, postData).then( async (data: BentResponse): Promise => {\r\n if (method === RestRequestType.Delete || data.statusCode === 204) {\r\n // No JSON from Delete and reset (204) operations\r\n responseReceivedDeferral.resolve(handleRestResponse(data));\r\n } else {\r\n try {\r\n const j: JsonError = await data.json() as JsonError;\r\n responseReceivedDeferral.resolve(handleRestResponse(data, j));\r\n } catch {\r\n responseReceivedDeferral.resolve(handleRestResponse(data));\r\n }\r\n }\r\n }).catch((error: string): void => {\r\n responseReceivedDeferral.reject(error);\r\n });\r\n };\r\n\r\n if (this.privIgnoreCache) {\r\n this.privHeaders[\"Cache-Control\"] = \"no-cache\";\r\n }\r\n\r\n if (method === RestRequestType.Post && body) {\r\n this.privHeaders[\"content-type\"] = \"application/json\";\r\n this.privHeaders[\"Content-Type\"] = \"application/json\";\r\n }\r\n send(body as RequestBody);\r\n return responseReceivedDeferral.promise;\r\n }\r\n\r\n private queryParams(params: { [key: string]: string } = {}): string {\r\n return Object.keys(params)\r\n .map((k: string): string => encodeURIComponent(k) + \"=\" + encodeURIComponent(params[k]))\r\n .join(\"&\");\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ArgumentNullError,\r\n ConnectionEvent,\r\n ConnectionMessage,\r\n ConnectionOpenResponse,\r\n ConnectionState,\r\n createNoDashGuid,\r\n EventSource,\r\n IConnection,\r\n IStringDictionary,\r\n IWebsocketMessageFormatter,\r\n} from \"../common/Exports\";\r\nimport { ProxyInfo } from \"./ProxyInfo\";\r\nimport { WebsocketMessageAdapter } from \"./WebsocketMessageAdapter\";\r\n\r\nexport class WebsocketConnection implements IConnection {\r\n\r\n private privUri: string;\r\n private privMessageFormatter: IWebsocketMessageFormatter;\r\n private privConnectionMessageAdapter: WebsocketMessageAdapter;\r\n private privId: string;\r\n private privIsDisposed: boolean = false;\r\n\r\n public constructor(\r\n uri: string,\r\n queryParameters: IStringDictionary,\r\n headers: IStringDictionary,\r\n messageFormatter: IWebsocketMessageFormatter,\r\n proxyInfo: ProxyInfo,\r\n enableCompression: boolean = false,\r\n connectionId?: string) {\r\n\r\n if (!uri) {\r\n throw new ArgumentNullError(\"uri\");\r\n }\r\n\r\n if (!messageFormatter) {\r\n throw new ArgumentNullError(\"messageFormatter\");\r\n }\r\n\r\n this.privMessageFormatter = messageFormatter;\r\n\r\n let queryParams = \"\";\r\n let i = 0;\r\n\r\n if (queryParameters) {\r\n for (const paramName in queryParameters) {\r\n if (paramName) {\r\n queryParams += ((i === 0) && (uri.indexOf(\"?\") === -1)) ? \"?\" : \"&\";\r\n\r\n const key = encodeURIComponent(paramName);\r\n queryParams += key;\r\n\r\n let val = queryParameters[paramName];\r\n if (val) {\r\n val = encodeURIComponent(val);\r\n queryParams += `=${val}`;\r\n }\r\n\r\n i++;\r\n }\r\n }\r\n }\r\n\r\n if (headers) {\r\n for (const headerName in headers) {\r\n if (headerName) {\r\n queryParams += ((i === 0) && (uri.indexOf(\"?\") === -1)) ? \"?\" : \"&\";\r\n const val = encodeURIComponent(headers[headerName]);\r\n queryParams += `${headerName}=${val}`;\r\n i++;\r\n }\r\n }\r\n }\r\n\r\n this.privUri = uri + queryParams;\r\n this.privId = connectionId ? connectionId : createNoDashGuid();\r\n\r\n this.privConnectionMessageAdapter = new WebsocketMessageAdapter(\r\n this.privUri,\r\n this.id,\r\n this.privMessageFormatter,\r\n proxyInfo,\r\n headers,\r\n enableCompression);\r\n }\r\n\r\n public async dispose(): Promise {\r\n this.privIsDisposed = true;\r\n\r\n if (this.privConnectionMessageAdapter) {\r\n await this.privConnectionMessageAdapter.close();\r\n }\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public get id(): string {\r\n return this.privId;\r\n }\r\n\r\n public get uri(): string {\r\n return this.privUri;\r\n }\r\n\r\n public state(): ConnectionState {\r\n return this.privConnectionMessageAdapter.state;\r\n }\r\n\r\n public open(): Promise {\r\n return this.privConnectionMessageAdapter.open();\r\n }\r\n\r\n public send(message: ConnectionMessage): Promise {\r\n return this.privConnectionMessageAdapter.send(message);\r\n }\r\n\r\n public read(): Promise {\r\n return this.privConnectionMessageAdapter.read();\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privConnectionMessageAdapter.events;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// Node.JS specific web socket / browser support.\r\n// eslint-disable-next-line @typescript-eslint/ban-ts-comment\r\n// @ts-ignore\r\nimport * as http from \"http\";\r\nimport * as net from \"net\";\r\nimport * as tls from \"tls\";\r\nimport Agent from \"agent-base\";\r\nimport HttpsProxyAgent from \"https-proxy-agent\";\r\n\r\nimport ws from \"ws\";\r\nimport { HeaderNames } from \"../common.speech/HeaderNames\";\r\nimport {\r\n ArgumentNullError,\r\n BackgroundEvent,\r\n ConnectionClosedEvent,\r\n ConnectionErrorEvent,\r\n ConnectionEstablishedEvent,\r\n ConnectionEvent,\r\n ConnectionMessage,\r\n ConnectionMessageReceivedEvent,\r\n ConnectionMessageSentEvent,\r\n ConnectionOpenResponse,\r\n ConnectionStartEvent,\r\n ConnectionState,\r\n Deferred,\r\n Events,\r\n EventSource,\r\n IWebsocketMessageFormatter,\r\n MessageType,\r\n Queue,\r\n RawWebsocketMessage,\r\n} from \"../common/Exports\";\r\nimport { ProxyInfo } from \"./ProxyInfo\";\r\n\r\ninterface ISendItem {\r\n Message: ConnectionMessage;\r\n RawWebsocketMessage: RawWebsocketMessage;\r\n sendStatusDeferral: Deferred;\r\n}\r\n\r\nexport class WebsocketMessageAdapter {\r\n private privConnectionState: ConnectionState;\r\n private privMessageFormatter: IWebsocketMessageFormatter;\r\n private privWebsocketClient: WebSocket | ws;\r\n\r\n private privSendMessageQueue: Queue;\r\n private privReceivingMessageQueue: Queue;\r\n private privConnectionEstablishDeferral: Deferred;\r\n private privCertificateValidatedDeferral: Deferred;\r\n private privDisconnectDeferral: Deferred;\r\n private privConnectionEvents: EventSource;\r\n private privConnectionId: string;\r\n private privUri: string;\r\n private proxyInfo: ProxyInfo;\r\n private privHeaders: { [key: string]: string };\r\n private privLastErrorReceived: string;\r\n private privEnableCompression: boolean;\r\n\r\n public static forceNpmWebSocket: boolean = false;\r\n\r\n public constructor(\r\n uri: string,\r\n connectionId: string,\r\n messageFormatter: IWebsocketMessageFormatter,\r\n proxyInfo: ProxyInfo,\r\n headers: { [key: string]: string },\r\n enableCompression: boolean) {\r\n\r\n if (!uri) {\r\n throw new ArgumentNullError(\"uri\");\r\n }\r\n\r\n if (!messageFormatter) {\r\n throw new ArgumentNullError(\"messageFormatter\");\r\n }\r\n\r\n this.proxyInfo = proxyInfo;\r\n this.privConnectionEvents = new EventSource();\r\n this.privConnectionId = connectionId;\r\n this.privMessageFormatter = messageFormatter;\r\n this.privConnectionState = ConnectionState.None;\r\n this.privUri = uri;\r\n this.privHeaders = headers;\r\n this.privEnableCompression = enableCompression;\r\n\r\n // Add the connection ID to the headers\r\n this.privHeaders[HeaderNames.ConnectionId] = this.privConnectionId;\r\n\r\n this.privLastErrorReceived = \"\";\r\n }\r\n\r\n public get state(): ConnectionState {\r\n return this.privConnectionState;\r\n }\r\n\r\n public open(): Promise {\r\n if (this.privConnectionState === ConnectionState.Disconnected) {\r\n return Promise.reject(`Cannot open a connection that is in ${this.privConnectionState} state`);\r\n }\r\n\r\n if (this.privConnectionEstablishDeferral) {\r\n return this.privConnectionEstablishDeferral.promise;\r\n }\r\n\r\n this.privConnectionEstablishDeferral = new Deferred();\r\n this.privCertificateValidatedDeferral = new Deferred();\r\n\r\n this.privConnectionState = ConnectionState.Connecting;\r\n\r\n try {\r\n\r\n if (typeof WebSocket !== \"undefined\" && !WebsocketMessageAdapter.forceNpmWebSocket) {\r\n // Browser handles cert checks.\r\n this.privCertificateValidatedDeferral.resolve();\r\n\r\n this.privWebsocketClient = new WebSocket(this.privUri);\r\n } else {\r\n const options: ws.ClientOptions = { headers: this.privHeaders, perMessageDeflate: this.privEnableCompression };\r\n // The ocsp library will handle validation for us and fail the connection if needed.\r\n this.privCertificateValidatedDeferral.resolve();\r\n\r\n options.agent = this.getAgent();\r\n // Workaround for https://github.com/microsoft/cognitive-services-speech-sdk-js/issues/465\r\n // Which is root caused by https://github.com/TooTallNate/node-agent-base/issues/61\r\n const uri = new URL(this.privUri);\r\n let protocol: string = uri.protocol;\r\n\r\n if (protocol?.toLocaleLowerCase() === \"wss:\") {\r\n protocol = \"https:\";\r\n } else if (protocol?.toLocaleLowerCase() === \"ws:\") {\r\n protocol = \"http:\";\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\r\n (options.agent as any).protocol = protocol;\r\n this.privWebsocketClient = new ws(this.privUri, options);\r\n }\r\n\r\n this.privWebsocketClient.binaryType = \"arraybuffer\";\r\n this.privReceivingMessageQueue = new Queue();\r\n this.privDisconnectDeferral = new Deferred();\r\n this.privSendMessageQueue = new Queue();\r\n this.processSendQueue().catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n } catch (error) {\r\n this.privConnectionEstablishDeferral.resolve(new ConnectionOpenResponse(500, error as string));\r\n return this.privConnectionEstablishDeferral.promise;\r\n }\r\n\r\n this.onEvent(new ConnectionStartEvent(this.privConnectionId, this.privUri));\r\n\r\n this.privWebsocketClient.onopen = (): void => {\r\n this.privCertificateValidatedDeferral.promise.then((): void => {\r\n this.privConnectionState = ConnectionState.Connected;\r\n this.onEvent(new ConnectionEstablishedEvent(this.privConnectionId));\r\n this.privConnectionEstablishDeferral.resolve(new ConnectionOpenResponse(200, \"\"));\r\n }, (error: string): void => {\r\n this.privConnectionEstablishDeferral.reject(error);\r\n });\r\n };\r\n\r\n this.privWebsocketClient.onerror = (e: { error: any; message: string; type: string; target: WebSocket | ws }): void => {\r\n this.onEvent(new ConnectionErrorEvent(this.privConnectionId, e.message, e.type));\r\n this.privLastErrorReceived = e.message;\r\n };\r\n\r\n this.privWebsocketClient.onclose = (e: { wasClean: boolean; code: number; reason: string; target: WebSocket | ws }): void => {\r\n if (this.privConnectionState === ConnectionState.Connecting) {\r\n this.privConnectionState = ConnectionState.Disconnected;\r\n // this.onEvent(new ConnectionEstablishErrorEvent(this.connectionId, e.code, e.reason));\r\n this.privConnectionEstablishDeferral.resolve(new ConnectionOpenResponse(e.code, e.reason + \" \" + this.privLastErrorReceived));\r\n } else {\r\n this.privConnectionState = ConnectionState.Disconnected;\r\n this.privWebsocketClient = null;\r\n this.onEvent(new ConnectionClosedEvent(this.privConnectionId, e.code, e.reason));\r\n }\r\n\r\n this.onClose(e.code, e.reason).catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n };\r\n\r\n this.privWebsocketClient.onmessage = (e: { data: ws.Data; type: string; target: WebSocket | ws }): void => {\r\n const networkReceivedTime = new Date().toISOString();\r\n if (this.privConnectionState === ConnectionState.Connected) {\r\n const deferred = new Deferred();\r\n // let id = ++this.idCounter;\r\n this.privReceivingMessageQueue.enqueueFromPromise(deferred.promise);\r\n if (e.data instanceof ArrayBuffer) {\r\n const rawMessage = new RawWebsocketMessage(MessageType.Binary, e.data);\r\n this.privMessageFormatter\r\n .toConnectionMessage(rawMessage)\r\n .then((connectionMessage: ConnectionMessage): void => {\r\n this.onEvent(new ConnectionMessageReceivedEvent(this.privConnectionId, networkReceivedTime, connectionMessage));\r\n deferred.resolve(connectionMessage);\r\n }, (error: string): void => {\r\n // TODO: Events for these ?\r\n deferred.reject(`Invalid binary message format. Error: ${error}`);\r\n });\r\n } else {\r\n const rawMessage = new RawWebsocketMessage(MessageType.Text, e.data);\r\n this.privMessageFormatter\r\n .toConnectionMessage(rawMessage)\r\n .then((connectionMessage: ConnectionMessage): void => {\r\n this.onEvent(new ConnectionMessageReceivedEvent(this.privConnectionId, networkReceivedTime, connectionMessage));\r\n deferred.resolve(connectionMessage);\r\n }, (error: string): void => {\r\n // TODO: Events for these ?\r\n deferred.reject(`Invalid text message format. Error: ${error}`);\r\n });\r\n }\r\n }\r\n };\r\n\r\n return this.privConnectionEstablishDeferral.promise;\r\n }\r\n\r\n public send(message: ConnectionMessage): Promise {\r\n if (this.privConnectionState !== ConnectionState.Connected) {\r\n return Promise.reject(`Cannot send on connection that is in ${ConnectionState[this.privConnectionState]} state`);\r\n }\r\n\r\n const messageSendStatusDeferral = new Deferred();\r\n const messageSendDeferral = new Deferred();\r\n\r\n this.privSendMessageQueue.enqueueFromPromise(messageSendDeferral.promise);\r\n\r\n this.privMessageFormatter\r\n .fromConnectionMessage(message)\r\n .then((rawMessage: RawWebsocketMessage): void => {\r\n messageSendDeferral.resolve({\r\n Message: message,\r\n RawWebsocketMessage: rawMessage,\r\n sendStatusDeferral: messageSendStatusDeferral,\r\n });\r\n }, (error: string): void => {\r\n messageSendDeferral.reject(`Error formatting the message. ${error}`);\r\n });\r\n\r\n return messageSendStatusDeferral.promise;\r\n }\r\n\r\n public read(): Promise {\r\n if (this.privConnectionState !== ConnectionState.Connected) {\r\n return Promise.reject(`Cannot read on connection that is in ${this.privConnectionState} state`);\r\n }\r\n\r\n return this.privReceivingMessageQueue.dequeue();\r\n }\r\n\r\n public close(reason?: string): Promise {\r\n if (this.privWebsocketClient) {\r\n if (this.privConnectionState !== ConnectionState.Disconnected) {\r\n this.privWebsocketClient.close(1000, reason ? reason : \"Normal closure by client\");\r\n }\r\n } else {\r\n return Promise.resolve();\r\n }\r\n\r\n return this.privDisconnectDeferral.promise;\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privConnectionEvents;\r\n }\r\n\r\n private sendRawMessage(sendItem: ISendItem): Promise {\r\n try {\r\n // indicates we are draining the queue and it came with no message;\r\n if (!sendItem) {\r\n return Promise.resolve();\r\n }\r\n\r\n this.onEvent(new ConnectionMessageSentEvent(this.privConnectionId, new Date().toISOString(), sendItem.Message));\r\n\r\n // add a check for the ws readystate in order to stop the red console error 'WebSocket is already in CLOSING or CLOSED state' appearing\r\n if (this.isWebsocketOpen) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n this.privWebsocketClient.send(sendItem.RawWebsocketMessage.payload);\r\n } else {\r\n return Promise.reject(\"websocket send error: Websocket not ready \" + this.privConnectionId + \" \" + sendItem.Message.id + \" \" + new Error().stack);\r\n }\r\n return Promise.resolve();\r\n\r\n } catch (e) {\r\n return Promise.reject(`websocket send error: ${e as string}`);\r\n }\r\n }\r\n\r\n private async onClose(code: number, reason: string): Promise {\r\n const closeReason = `Connection closed. ${code}: ${reason}`;\r\n this.privConnectionState = ConnectionState.Disconnected;\r\n this.privDisconnectDeferral.resolve();\r\n await this.privReceivingMessageQueue.drainAndDispose((): void => {\r\n // TODO: Events for these ?\r\n // Logger.instance.onEvent(new LoggingEvent(LogType.Warning, null, `Failed to process received message. Reason: ${closeReason}, Message: ${JSON.stringify(pendingReceiveItem)}`));\r\n }, closeReason);\r\n\r\n await this.privSendMessageQueue.drainAndDispose((pendingSendItem: ISendItem): void => {\r\n pendingSendItem.sendStatusDeferral.reject(closeReason);\r\n }, closeReason);\r\n }\r\n\r\n private async processSendQueue(): Promise {\r\n while (true) {\r\n const itemToSend: Promise = this.privSendMessageQueue.dequeue();\r\n const sendItem: ISendItem = await itemToSend;\r\n // indicates we are draining the queue and it came with no message;\r\n if (!sendItem) {\r\n return;\r\n }\r\n\r\n try {\r\n await this.sendRawMessage(sendItem);\r\n sendItem.sendStatusDeferral.resolve();\r\n } catch (sendError) {\r\n sendItem.sendStatusDeferral.reject(sendError as string);\r\n }\r\n }\r\n }\r\n\r\n private onEvent(event: ConnectionEvent): void {\r\n this.privConnectionEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n private getAgent(): http.Agent {\r\n // eslint-disable-next-line @typescript-eslint/unbound-method\r\n const agent: { proxyInfo: ProxyInfo } = new Agent.Agent(this.createConnection) as unknown as { proxyInfo: ProxyInfo } ;\r\n\r\n if (this.proxyInfo !== undefined &&\r\n this.proxyInfo.HostName !== undefined &&\r\n this.proxyInfo.Port > 0) {\r\n agent.proxyInfo = this.proxyInfo;\r\n }\r\n\r\n return agent as unknown as http.Agent;\r\n }\r\n\r\n private static GetProxyAgent(proxyInfo: ProxyInfo): HttpsProxyAgent {\r\n const httpProxyOptions: HttpsProxyAgent.HttpsProxyAgentOptions = {\r\n host: proxyInfo.HostName,\r\n port: proxyInfo.Port,\r\n };\r\n\r\n if (!!proxyInfo.UserName) {\r\n httpProxyOptions.headers = {\r\n \"Proxy-Authentication\": \"Basic \" + new Buffer(`${proxyInfo.UserName}:${(proxyInfo.Password === undefined) ? \"\" : proxyInfo.Password}`).toString(\"base64\"),\r\n };\r\n } else {\r\n httpProxyOptions.headers = {};\r\n }\r\n\r\n httpProxyOptions.headers.requestOCSP = \"true\";\r\n\r\n const httpProxyAgent: HttpsProxyAgent = new HttpsProxyAgent(httpProxyOptions);\r\n return httpProxyAgent;\r\n }\r\n\r\n private createConnection(request: Agent.ClientRequest, options: Agent.RequestOptions): Promise {\r\n let socketPromise: Promise;\r\n\r\n options = {\r\n ...options,\r\n ...{\r\n requestOCSP: true,\r\n servername: options.host\r\n }\r\n };\r\n\r\n if (!!this.proxyInfo) {\r\n const httpProxyAgent: HttpsProxyAgent = WebsocketMessageAdapter.GetProxyAgent(this.proxyInfo);\r\n const baseAgent: Agent.Agent = httpProxyAgent as unknown as Agent.Agent;\r\n\r\n socketPromise = new Promise((resolve: (value: net.Socket) => void, reject: (error: string | Error) => void): void => {\r\n baseAgent.callback(request, options, (error: Error, socket: net.Socket): void => {\r\n if (!!error) {\r\n reject(error);\r\n } else {\r\n resolve(socket);\r\n }\r\n });\r\n });\r\n } else {\r\n if (!!options.secureEndpoint) {\r\n socketPromise = Promise.resolve(tls.connect(options));\r\n } else {\r\n socketPromise = Promise.resolve(net.connect(options));\r\n }\r\n }\r\n\r\n return socketPromise;\r\n }\r\n\r\n private get isWebsocketOpen(): boolean {\r\n return this.privWebsocketClient && this.privWebsocketClient.readyState === this.privWebsocketClient.OPEN;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { LanguageUnderstandingModelImpl } from \"../sdk/LanguageUnderstandingModel\";\r\n\r\n/**\r\n * @class AddedLmIntent\r\n */\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class AddedLmIntent {\r\n public modelImpl: LanguageUnderstandingModelImpl;\r\n public intentName: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param modelImpl - The model.\r\n * @param intentName - The intent name.\r\n */\r\n public constructor(modelImpl: LanguageUnderstandingModelImpl, intentName: string) {\r\n this.modelImpl = modelImpl;\r\n this.intentName = intentName;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Represents the JSON used in the agent.config message sent to the speech service.\r\n */\r\nexport class AgentConfig {\r\n private iPrivConfig: IAgentConfig;\r\n\r\n public toJsonString(): string {\r\n return JSON.stringify(this.iPrivConfig);\r\n }\r\n\r\n public get(): IAgentConfig {\r\n return this.iPrivConfig;\r\n }\r\n\r\n /**\r\n * Setter for the agent.config object.\r\n * @param value a JSON serializable object.\r\n */\r\n public set(value: IAgentConfig): void {\r\n this.iPrivConfig = value;\r\n }\r\n}\r\n\r\nexport interface IAgentConfig {\r\n botInfo: {\r\n commType: string;\r\n connectionId: string;\r\n conversationId: string;\r\n fromId: string;\r\n commandsCulture: string;\r\n ttsAudioFormat: string;\r\n };\r\n version: number;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ArgumentNullError,\r\n} from \"../common/Exports\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport {\r\n AuthInfo,\r\n IAuthentication\r\n} from \"./IAuthentication\";\r\n\r\n/**\r\n * @class\r\n */\r\nexport class CognitiveSubscriptionKeyAuthentication implements IAuthentication {\r\n private privAuthInfo: AuthInfo;\r\n\r\n /**\r\n * Creates and initializes an instance of the CognitiveSubscriptionKeyAuthentication class.\r\n * @constructor\r\n * @param {string} subscriptionKey - The subscription key\r\n */\r\n public constructor(subscriptionKey: string) {\r\n if (!subscriptionKey) {\r\n throw new ArgumentNullError(\"subscriptionKey\");\r\n }\r\n\r\n this.privAuthInfo = new AuthInfo(HeaderNames.AuthKey, subscriptionKey);\r\n }\r\n\r\n /**\r\n * Fetches the subscription key.\r\n * @member\r\n * @function\r\n * @public\r\n * @param {string} authFetchEventId - The id to fetch.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public fetch(authFetchEventId: string): Promise {\r\n return Promise.resolve(this.privAuthInfo);\r\n }\r\n\r\n /**\r\n * Fetches the subscription key.\r\n * @member\r\n * @function\r\n * @public\r\n * @param {string} authFetchEventId - The id to fetch.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public fetchOnExpiry(authFetchEventId: string): Promise {\r\n return Promise.resolve(this.privAuthInfo);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ArgumentNullError } from \"../common/Exports\";\r\nimport { AuthInfo, IAuthentication } from \"./IAuthentication\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\n\r\nexport class CognitiveTokenAuthentication implements IAuthentication {\r\n private static privTokenPrefix: string = \"bearer \";\r\n private privFetchCallback: (authFetchEventId: string) => Promise;\r\n private privFetchOnExpiryCallback: (authFetchEventId: string) => Promise;\r\n\r\n public constructor(fetchCallback: (authFetchEventId: string) => Promise, fetchOnExpiryCallback: (authFetchEventId: string) => Promise) {\r\n if (!fetchCallback) {\r\n throw new ArgumentNullError(\"fetchCallback\");\r\n }\r\n\r\n if (!fetchOnExpiryCallback) {\r\n throw new ArgumentNullError(\"fetchOnExpiryCallback\");\r\n }\r\n\r\n this.privFetchCallback = fetchCallback;\r\n this.privFetchOnExpiryCallback = fetchOnExpiryCallback;\r\n }\r\n\r\n public fetch(authFetchEventId: string): Promise {\r\n return this.privFetchCallback(authFetchEventId).then((token: string): AuthInfo => new AuthInfo(HeaderNames.Authorization, token === undefined ? undefined : CognitiveTokenAuthentication.privTokenPrefix + token));\r\n }\r\n\r\n public fetchOnExpiry(authFetchEventId: string): Promise {\r\n return this.privFetchOnExpiryCallback(authFetchEventId).then((token: string): AuthInfo => new AuthInfo(HeaderNames.Authorization, token === undefined ? undefined : CognitiveTokenAuthentication.privTokenPrefix + token));\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ServicePropertiesPropertyName,\r\n} from \"../common.speech/Exports\";\r\nimport { IConnection, IStringDictionary } from \"../common/Exports\";\r\nimport { PropertyId } from \"../sdk/Exports\";\r\nimport { AuthInfo, IConnectionFactory, RecognizerConfig } from \"./Exports\";\r\nimport { QueryParameterNames } from \"./QueryParameterNames\";\r\n\r\nexport abstract class ConnectionFactoryBase implements IConnectionFactory {\r\n\r\n public static getHostSuffix(region: string): string {\r\n if (!!region) {\r\n if (region.toLowerCase().startsWith(\"china\")) {\r\n return \".azure.cn\";\r\n }\r\n if (region.toLowerCase().startsWith(\"usgov\")) {\r\n return \".azure.us\";\r\n }\r\n }\r\n return \".microsoft.com\";\r\n }\r\n\r\n public abstract create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection;\r\n\r\n protected setCommonUrlParams(\r\n config: RecognizerConfig,\r\n queryParams: IStringDictionary,\r\n endpoint: string): void {\r\n\r\n const propertyIdToParameterMap: Map = new Map([\r\n [PropertyId.Speech_SegmentationSilenceTimeoutMs, QueryParameterNames.SegmentationSilenceTimeoutMs],\r\n [PropertyId.SpeechServiceConnection_EnableAudioLogging, QueryParameterNames.EnableAudioLogging],\r\n [PropertyId.SpeechServiceConnection_EndSilenceTimeoutMs, QueryParameterNames.EndSilenceTimeoutMs],\r\n [PropertyId.SpeechServiceConnection_InitialSilenceTimeoutMs, QueryParameterNames.InitialSilenceTimeoutMs],\r\n [PropertyId.SpeechServiceResponse_PostProcessingOption, QueryParameterNames.Postprocessing],\r\n [PropertyId.SpeechServiceResponse_ProfanityOption, QueryParameterNames.Profanity],\r\n [PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps, QueryParameterNames.EnableWordLevelTimestamps],\r\n [PropertyId.SpeechServiceResponse_StablePartialResultThreshold, QueryParameterNames.StableIntermediateThreshold],\r\n ]);\r\n\r\n propertyIdToParameterMap.forEach((parameterName: string, propertyId: PropertyId): void => {\r\n this.setUrlParameter(propertyId, parameterName, config, queryParams, endpoint);\r\n });\r\n\r\n\r\n const serviceProperties: IStringDictionary = JSON.parse(config.parameters.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n\r\n Object.keys(serviceProperties).forEach((value: string): void => {\r\n queryParams[value] = serviceProperties[value];\r\n });\r\n }\r\n\r\n protected setUrlParameter(\r\n propId: PropertyId,\r\n parameterName: string,\r\n config: RecognizerConfig,\r\n queryParams: IStringDictionary,\r\n endpoint: string): void {\r\n\r\n const value: string = config.parameters.getProperty(propId, undefined);\r\n\r\n // FIXME: The .search() check will incorrectly match parameter name anywhere in the string\r\n // including e.g. the path portion, or even as a substring of other query parameters\r\n if (value && (!endpoint || endpoint.search(parameterName) === -1)) {\r\n queryParams[parameterName] = value.toLocaleLowerCase();\r\n }\r\n }\r\n\r\n}\r\n","import { IAudioSource } from \"../common/Exports\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n OutputFormat,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n ResultReason,\r\n SpeechRecognitionResult\r\n} from \"../sdk/Exports\";\r\nimport {\r\n DetailedSpeechPhrase,\r\n EnumTranslation,\r\n IAuthentication,\r\n IConnectionFactory,\r\n OutputFormatPropertyName,\r\n RecognitionStatus,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SimpleSpeechPhrase,\r\n SpeechHypothesis\r\n} from \"./Exports\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal\";\r\n\r\nexport class ConversationServiceRecognizer extends ServiceRecognizerBase {\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n recognizer: Recognizer) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, recognizer);\r\n this.handleSpeechPhraseMessage = async (textBody: string): Promise => this.handleSpeechPhrase(textBody);\r\n this.handleSpeechHypothesisMessage = (textBody: string): void => this.handleSpeechHypothesis(textBody);\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n void connectionMessage;\r\n return;\r\n }\r\n\r\n protected handleRecognizedCallback(result: SpeechRecognitionResult, offset: number, sessionId: string): void {\r\n void result;\r\n void offset;\r\n void sessionId;\r\n return;\r\n }\r\n\r\n protected handleRecognizingCallback(result: SpeechRecognitionResult, duration: number, sessionId: string): void {\r\n void result;\r\n void duration;\r\n void sessionId;\r\n return;\r\n }\r\n\r\n protected async processSpeechMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n let processed: boolean = false;\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speech.hypothesis\":\r\n case \"speech.fragment\":\r\n if (!!this.handleSpeechHypothesisMessage) {\r\n this.handleSpeechHypothesisMessage(connectionMessage.textBody);\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.phrase\":\r\n if (!!this.handleSpeechPhraseMessage) {\r\n await this.handleSpeechPhraseMessage(connectionMessage.textBody);\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n return processed;\r\n }\r\n\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n // Implementing to allow inheritance\r\n void sessionId;\r\n void requestId;\r\n void cancellationReason;\r\n void errorCode;\r\n void error;\r\n }\r\n\r\n protected async handleSpeechPhrase(textBody: string): Promise {\r\n\r\n const simple: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(textBody);\r\n const resultReason: ResultReason = EnumTranslation.implTranslateRecognitionResult(simple.RecognitionStatus);\r\n let result: SpeechRecognitionResult;\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, textBody);\r\n const simpleOffset = simple.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n let offset = simpleOffset;\r\n\r\n this.privRequestSession.onPhraseRecognized(this.privRequestSession.currentTurnAudioOffset + simple.Offset + simple.Duration);\r\n\r\n if (ResultReason.Canceled === resultReason) {\r\n const cancelReason: CancellationReason = EnumTranslation.implTranslateCancelResult(simple.RecognitionStatus);\r\n const cancellationErrorCode: CancellationErrorCode = EnumTranslation.implTranslateCancelErrorCode(simple.RecognitionStatus);\r\n\r\n await this.cancelRecognitionLocal(\r\n cancelReason,\r\n cancellationErrorCode,\r\n EnumTranslation.implTranslateErrorDetails(cancellationErrorCode));\r\n\r\n } else {\r\n if (!(this.privRequestSession.isSpeechEnded && resultReason === ResultReason.NoMatch && simple.RecognitionStatus !== RecognitionStatus.InitialSilenceTimeout)) {\r\n if (this.privRecognizerConfig.parameters.getProperty(OutputFormatPropertyName) === OutputFormat[OutputFormat.Simple]) {\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n simple.DisplayText,\r\n simple.Duration,\r\n simpleOffset,\r\n simple.Language,\r\n simple.LanguageDetectionConfidence,\r\n simple.SpeakerId,\r\n undefined,\r\n textBody,\r\n resultProps);\r\n } else {\r\n const detailed: DetailedSpeechPhrase = DetailedSpeechPhrase.fromJSON(textBody);\r\n const totalOffset: number = detailed.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n const offsetCorrectedJson: string = detailed.getJsonWithCorrectedOffsets(totalOffset);\r\n\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n detailed.Text,\r\n detailed.Duration,\r\n totalOffset,\r\n detailed.Language,\r\n detailed.LanguageDetectionConfidence,\r\n detailed.SpeakerId,\r\n undefined,\r\n offsetCorrectedJson,\r\n resultProps);\r\n\r\n offset = result.offset;\r\n }\r\n\r\n this.handleRecognizedCallback(result, offset, this.privRequestSession.sessionId);\r\n }\r\n }\r\n }\r\n\r\n protected handleSpeechHypothesis(textBody: string): void {\r\n const hypothesis: SpeechHypothesis = SpeechHypothesis.fromJSON(textBody);\r\n const offset: number = hypothesis.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, textBody);\r\n\r\n const result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n ResultReason.RecognizingSpeech,\r\n hypothesis.Text,\r\n hypothesis.Duration,\r\n offset,\r\n hypothesis.Language,\r\n hypothesis.LanguageDetectionConfidence,\r\n hypothesis.SpeakerId,\r\n undefined,\r\n textBody,\r\n resultProps);\r\n\r\n this.privRequestSession.onHypothesis(offset);\r\n\r\n this.handleRecognizingCallback(result, hypothesis.Duration, this.privRequestSession.sessionId);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports\";\r\nimport { OutputFormatPropertyName } from \"../common.speech/Exports\";\r\nimport { IConnection, IStringDictionary } from \"../common/Exports\";\r\nimport { DialogServiceConfig, OutputFormat, PropertyId } from \"../sdk/Exports\";\r\nimport { ConnectionFactoryBase } from \"./ConnectionFactoryBase\";\r\nimport { AuthInfo, RecognizerConfig, WebsocketMessageFormatter } from \"./Exports\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { QueryParameterNames } from \"./QueryParameterNames\";\r\n\r\nexport class DialogConnectionFactory extends ConnectionFactoryBase {\r\n\r\n private static readonly ApiKey: string = \"api\";\r\n private static readonly BaseUrl: string = \"convai.speech\";\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n const applicationId: string = config.parameters.getProperty(PropertyId.Conversation_ApplicationId, \"\");\r\n const dialogType: string = config.parameters.getProperty(PropertyId.Conversation_DialogType);\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n const language: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, \"en-US\");\r\n const requestTurnStatus: string = config.parameters.getProperty(PropertyId.Conversation_Request_Bot_Status_Messages, \"true\");\r\n\r\n const queryParams: IStringDictionary = {};\r\n queryParams[HeaderNames.ConnectionId] = connectionId;\r\n queryParams[QueryParameterNames.Format] = config.parameters.getProperty(OutputFormatPropertyName, OutputFormat[OutputFormat.Simple]).toLowerCase();\r\n queryParams[QueryParameterNames.Language] = language;\r\n queryParams[QueryParameterNames.RequestBotStatusMessages] = requestTurnStatus;\r\n if (applicationId) {\r\n queryParams[QueryParameterNames.BotId] = applicationId;\r\n if (dialogType === DialogServiceConfig.DialogTypes.CustomCommands) {\r\n queryParams[HeaderNames.CustomCommandsAppId] = applicationId;\r\n }\r\n }\r\n\r\n const resourceInfix: string =\r\n dialogType === DialogServiceConfig.DialogTypes.CustomCommands ? \"commands/\"\r\n : \"\";\r\n const version: string =\r\n dialogType === DialogServiceConfig.DialogTypes.CustomCommands ? \"v1\"\r\n : dialogType === DialogServiceConfig.DialogTypes.BotFramework ? \"v3\"\r\n : \"v0\";\r\n\r\n const headers: IStringDictionary = {};\r\n\r\n if (authInfo.token != null && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n\r\n // The URL used for connection is chosen in a priority order of specification:\r\n // 1. If a custom endpoint is provided, that URL is used verbatim.\r\n // 2. If a custom host is provided (e.g. \"wss://my.custom.endpoint.com:1123\"), a URL is constructed from it.\r\n // 3. If no custom connection details are provided, a URL is constructed from default values.\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, \"\");\r\n if (!endpoint) {\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const host: string = config.parameters.getProperty(\r\n PropertyId.SpeechServiceConnection_Host,\r\n `wss://${region}.${DialogConnectionFactory.BaseUrl}${hostSuffix}`);\r\n const standardizedHost: string = host.endsWith(\"/\") ? host : host + \"/\";\r\n endpoint = `${standardizedHost}${resourceInfix}${DialogConnectionFactory.ApiKey}/${version}`;\r\n }\r\n\r\n this.setCommonUrlParams(config, queryParams, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ReplayableAudioNode\r\n} from \"../common.browser/Exports\";\r\nimport { SendingAgentContextMessageEvent } from \"../common/DialogEvents\";\r\nimport {\r\n BackgroundEvent,\r\n ConnectionEvent,\r\n ConnectionMessage,\r\n createGuid,\r\n createNoDashGuid,\r\n Deferred,\r\n DialogEvent,\r\n Events,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IConnection,\r\n MessageType,\r\n ServiceEvent,\r\n} from \"../common/Exports\";\r\nimport { AudioOutputFormatImpl } from \"../sdk/Audio/AudioOutputFormat\";\r\nimport { PullAudioOutputStreamImpl } from \"../sdk/Audio/AudioOutputStream\";\r\nimport { AudioStreamFormatImpl } from \"../sdk/Audio/AudioStreamFormat\";\r\nimport {\r\n ActivityReceivedEventArgs,\r\n CancellationErrorCode,\r\n CancellationReason,\r\n DialogServiceConfig,\r\n DialogServiceConnector,\r\n PropertyCollection,\r\n PropertyId,\r\n RecognitionEventArgs,\r\n ResultReason,\r\n SessionEventArgs,\r\n SpeechRecognitionCanceledEventArgs,\r\n SpeechRecognitionEventArgs,\r\n SpeechRecognitionResult,\r\n TurnStatusReceivedEventArgs,\r\n} from \"../sdk/Exports\";\r\nimport { DialogServiceTurnStateManager } from \"./DialogServiceTurnStateManager\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n EnumTranslation,\r\n ISpeechConfigAudioDevice,\r\n RecognitionStatus,\r\n ServiceRecognizerBase,\r\n SimpleSpeechPhrase,\r\n SpeechDetected,\r\n SpeechHypothesis,\r\n SpeechKeyword,\r\n} from \"./Exports\";\r\nimport { IAuthentication } from \"./IAuthentication\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory\";\r\nimport { RecognitionMode, RecognizerConfig } from \"./RecognizerConfig\";\r\nimport { ActivityPayloadResponse } from \"./ServiceMessages/ActivityResponsePayload\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal\";\r\n\r\nexport class DialogServiceAdapter extends ServiceRecognizerBase {\r\n private privDialogServiceConnector: DialogServiceConnector;\r\n\r\n private privDialogAudioSource: IAudioSource;\r\n\r\n private privConnectionLoop: Promise;\r\n private terminateMessageLoop: boolean;\r\n private agentConfigSent: boolean;\r\n private privLastResult: SpeechRecognitionResult;\r\n private privEvents: EventSource;\r\n\r\n // Turns are of two kinds:\r\n // 1: SR turns, end when the SR result is returned and then turn end.\r\n // 2: Service turns where an activity is sent by the service along with the audio.\r\n private privTurnStateManager: DialogServiceTurnStateManager;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n dialogServiceConnector: DialogServiceConnector) {\r\n\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, dialogServiceConnector);\r\n\r\n this.privEvents = new EventSource();\r\n this.privDialogServiceConnector = dialogServiceConnector;\r\n this.receiveMessageOverride = (): Promise => this.receiveDialogMessageOverride();\r\n this.privTurnStateManager = new DialogServiceTurnStateManager();\r\n this.recognizeOverride =\r\n (recoMode: RecognitionMode, successCallback: (e: SpeechRecognitionResult) => void, errorCallback: (e: string) => void): Promise =>\r\n this.listenOnce(recoMode, successCallback, errorCallback);\r\n this.postConnectImplOverride = (connection: Promise): Promise => this.dialogConnectImpl(connection);\r\n this.configConnectionOverride = (connection: IConnection): Promise => this.configConnection(connection);\r\n this.disconnectOverride = (): Promise => this.privDisconnect();\r\n this.privDialogAudioSource = audioSource;\r\n\r\n this.agentConfigSent = false;\r\n this.privLastResult = null;\r\n this.connectionEvents.attach((connectionEvent: ConnectionEvent): void => {\r\n if (connectionEvent.name === \"ConnectionClosedEvent\") {\r\n this.terminateMessageLoop = true;\r\n }\r\n });\r\n }\r\n\r\n public async sendMessage(message: string): Promise {\r\n const interactionGuid: string = createGuid();\r\n const requestId: string = createNoDashGuid();\r\n\r\n const agentMessage: any = {\r\n context: {\r\n interactionId: interactionGuid\r\n },\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n messagePayload: JSON.parse(message),\r\n version: 0.5\r\n };\r\n\r\n const agentMessageJson = JSON.stringify(agentMessage);\r\n const connection: IConnection = await this.fetchConnection();\r\n await connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"agent\",\r\n requestId,\r\n \"application/json\",\r\n agentMessageJson));\r\n\r\n }\r\n\r\n protected async privDisconnect(): Promise {\r\n await this.cancelRecognition(this.privRequestSession.sessionId,\r\n this.privRequestSession.requestId,\r\n CancellationReason.Error,\r\n CancellationErrorCode.NoError,\r\n \"Disconnecting\");\r\n\r\n this.terminateMessageLoop = true;\r\n this.agentConfigSent = false;\r\n return;\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n if (connectionMessage.messageType === MessageType.Text) {\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n }\r\n\r\n let result: SpeechRecognitionResult;\r\n let processed: boolean;\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speech.phrase\":\r\n const speechPhrase: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(connectionMessage.textBody);\r\n\r\n this.privRequestSession.onPhraseRecognized(this.privRequestSession.currentTurnAudioOffset + speechPhrase.Offset + speechPhrase.Duration);\r\n\r\n if (speechPhrase.RecognitionStatus !== RecognitionStatus.TooManyRequests && speechPhrase.RecognitionStatus !== RecognitionStatus.Error) {\r\n const args: SpeechRecognitionEventArgs = this.fireEventForResult(speechPhrase, resultProps);\r\n this.privLastResult = args.result;\r\n\r\n if (!!this.privDialogServiceConnector.recognized) {\r\n try {\r\n this.privDialogServiceConnector.recognized(this.privDialogServiceConnector, args);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.hypothesis\":\r\n const hypothesis: SpeechHypothesis = SpeechHypothesis.fromJSON(connectionMessage.textBody);\r\n const offset: number = hypothesis.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n ResultReason.RecognizingSpeech,\r\n hypothesis.Text,\r\n hypothesis.Duration,\r\n offset,\r\n hypothesis.Language,\r\n hypothesis.LanguageDetectionConfidence,\r\n undefined,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n this.privRequestSession.onHypothesis(offset);\r\n\r\n const ev = new SpeechRecognitionEventArgs(result, hypothesis.Duration, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privDialogServiceConnector.recognizing) {\r\n try {\r\n this.privDialogServiceConnector.recognizing(this.privDialogServiceConnector, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.keyword\":\r\n const keyword: SpeechKeyword = SpeechKeyword.fromJSON(connectionMessage.textBody);\r\n\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n keyword.Status === \"Accepted\" ? ResultReason.RecognizedKeyword : ResultReason.NoMatch,\r\n keyword.Text,\r\n keyword.Duration,\r\n keyword.Offset,\r\n undefined,\r\n undefined,\r\n undefined,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n if (keyword.Status !== \"Accepted\") {\r\n this.privLastResult = result;\r\n }\r\n\r\n const event = new SpeechRecognitionEventArgs(result, result.duration, result.resultId);\r\n\r\n if (!!this.privDialogServiceConnector.recognized) {\r\n try {\r\n this.privDialogServiceConnector.recognized(this.privDialogServiceConnector, event);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"audio\":\r\n {\r\n const audioRequestId = connectionMessage.requestId.toUpperCase();\r\n const turn = this.privTurnStateManager.GetTurn(audioRequestId);\r\n try {\r\n // Empty binary message signals end of stream.\r\n if (!connectionMessage.binaryBody) {\r\n turn.endAudioStream();\r\n } else {\r\n turn.audioStream.write(connectionMessage.binaryBody);\r\n }\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n\r\n case \"response\":\r\n {\r\n this.handleResponseMessage(connectionMessage);\r\n\r\n }\r\n processed = true;\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n const defferal = new Deferred();\r\n defferal.resolve(processed);\r\n return defferal.promise;\r\n }\r\n\r\n // Cancels recognition.\r\n protected async cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): Promise {\r\n\r\n this.terminateMessageLoop = true;\r\n\r\n if (!!this.privRequestSession.isRecognizing) {\r\n await this.privRequestSession.onStopRecognizing();\r\n }\r\n\r\n if (!!this.privDialogServiceConnector.canceled) {\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n const cancelEvent: SpeechRecognitionCanceledEventArgs = new SpeechRecognitionCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n sessionId);\r\n\r\n try {\r\n this.privDialogServiceConnector.canceled(this.privDialogServiceConnector, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n\r\n if (!!this.privSuccessCallback) {\r\n const result: SpeechRecognitionResult = new SpeechRecognitionResult(\r\n undefined, // ResultId\r\n ResultReason.Canceled,\r\n undefined, // Text\r\n undefined, // Duration\r\n undefined, // Offset\r\n undefined, // Language\r\n undefined, // Language Detection Confidence\r\n undefined, // Speaker Id\r\n error,\r\n undefined, // Json\r\n properties);\r\n try {\r\n this.privSuccessCallback(result);\r\n this.privSuccessCallback = undefined;\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n }\r\n\r\n protected async listenOnce(\r\n recoMode: RecognitionMode,\r\n successCallback: (e: SpeechRecognitionResult) => void,\r\n errorCallback: (e: string) => void\r\n ): Promise {\r\n this.privRecognizerConfig.recognitionMode = recoMode;\r\n\r\n this.privSuccessCallback = successCallback;\r\n this.privErrorCallback = errorCallback;\r\n\r\n this.privRequestSession.startNewRecognition();\r\n this.privRequestSession.listenForServiceTelemetry(this.privDialogAudioSource.events);\r\n\r\n this.privRecognizerConfig.parameters.setProperty(PropertyId.Speech_SessionId, this.privRequestSession.sessionId);\r\n\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n\r\n const preAudioPromise: Promise = this.sendPreAudioMessages();\r\n\r\n const node: IAudioStreamNode = await this.privDialogAudioSource.attach(this.privRequestSession.audioNodeId);\r\n const format: AudioStreamFormatImpl = await this.privDialogAudioSource.format;\r\n const deviceInfo: ISpeechConfigAudioDevice = await this.privDialogAudioSource.deviceInfo;\r\n\r\n const audioNode = new ReplayableAudioNode(node, format.avgBytesPerSec);\r\n await this.privRequestSession.onAudioSourceAttachCompleted(audioNode, false);\r\n\r\n this.privRecognizerConfig.SpeechServiceConfig.Context.audio = { source: deviceInfo };\r\n\r\n try {\r\n await conPromise;\r\n await preAudioPromise;\r\n } catch (error) {\r\n await this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.ConnectionFailure, error as string);\r\n return Promise.resolve();\r\n }\r\n\r\n const sessionStartEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.sessionStarted) {\r\n this.privRecognizer.sessionStarted(this.privRecognizer, sessionStartEventArgs);\r\n }\r\n\r\n const audioSendPromise = this.sendAudio(audioNode);\r\n\r\n // /* eslint-disable no-empty */\r\n audioSendPromise.then((): void => { /* add? return true;*/ }, async (error: string): Promise => {\r\n await this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.RuntimeError, error);\r\n });\r\n }\r\n\r\n // Establishes a websocket connection to the end point.\r\n private dialogConnectImpl(connection: Promise): Promise {\r\n this.privConnectionLoop = this.startMessageLoop();\r\n return connection;\r\n }\r\n\r\n private receiveDialogMessageOverride(): Promise {\r\n\r\n // we won't rely on the cascading promises of the connection since we want to continually be available to receive messages\r\n const communicationCustodian: Deferred = new Deferred();\r\n\r\n const loop = async (): Promise => {\r\n try {\r\n const isDisposed: boolean = this.isDisposed();\r\n const terminateMessageLoop = (!this.isDisposed() && this.terminateMessageLoop);\r\n if (isDisposed || terminateMessageLoop) {\r\n // We're done.\r\n communicationCustodian.resolve(undefined);\r\n return;\r\n }\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n const message: ConnectionMessage = await connection.read();\r\n\r\n if (!message) {\r\n return loop();\r\n }\r\n\r\n const connectionMessage = SpeechConnectionMessage.fromConnectionMessage(message);\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"turn.start\":\r\n {\r\n const turnRequestId = connectionMessage.requestId.toUpperCase();\r\n const audioSessionReqId = this.privRequestSession.requestId.toUpperCase();\r\n\r\n // turn started by the service\r\n if (turnRequestId !== audioSessionReqId) {\r\n this.privTurnStateManager.StartTurn(turnRequestId);\r\n } else {\r\n this.privRequestSession.onServiceTurnStartResponse();\r\n }\r\n }\r\n break;\r\n\r\n case \"speech.startdetected\":\r\n const speechStartDetected: SpeechDetected = SpeechDetected.fromJSON(connectionMessage.textBody);\r\n\r\n const speechStartEventArgs = new RecognitionEventArgs(speechStartDetected.Offset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.speechStartDetected) {\r\n this.privRecognizer.speechStartDetected(this.privRecognizer, speechStartEventArgs);\r\n }\r\n\r\n break;\r\n\r\n case \"speech.enddetected\":\r\n\r\n let json: string;\r\n\r\n if (connectionMessage.textBody.length > 0) {\r\n json = connectionMessage.textBody;\r\n } else {\r\n // If the request was empty, the JSON returned is empty.\r\n json = \"{ Offset: 0 }\";\r\n }\r\n\r\n const speechStopDetected: SpeechDetected = SpeechDetected.fromJSON(json);\r\n\r\n this.privRequestSession.onServiceRecognized(speechStopDetected.Offset + this.privRequestSession.currentTurnAudioOffset);\r\n\r\n const speechStopEventArgs = new RecognitionEventArgs(speechStopDetected.Offset + this.privRequestSession.currentTurnAudioOffset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.speechEndDetected) {\r\n this.privRecognizer.speechEndDetected(this.privRecognizer, speechStopEventArgs);\r\n }\r\n break;\r\n\r\n case \"turn.end\":\r\n {\r\n const turnEndRequestId = connectionMessage.requestId.toUpperCase();\r\n\r\n const audioSessionReqId = this.privRequestSession.requestId.toUpperCase();\r\n\r\n // turn started by the service\r\n if (turnEndRequestId !== audioSessionReqId) {\r\n this.privTurnStateManager.CompleteTurn(turnEndRequestId);\r\n } else {\r\n // Audio session turn\r\n\r\n const sessionStopEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n await this.privRequestSession.onServiceTurnEndResponse(false);\r\n\r\n if (!this.privRecognizerConfig.isContinuousRecognition || this.privRequestSession.isSpeechEnded || !this.privRequestSession.isRecognizing) {\r\n if (!!this.privRecognizer.sessionStopped) {\r\n this.privRecognizer.sessionStopped(this.privRecognizer, sessionStopEventArgs);\r\n }\r\n }\r\n\r\n // report result to promise.\r\n if (!!this.privSuccessCallback && this.privLastResult) {\r\n try {\r\n this.privSuccessCallback(this.privLastResult);\r\n this.privLastResult = null;\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n }\r\n }\r\n break;\r\n\r\n default:\r\n try {\r\n const processed = await this.processTypeSpecificMessages(connectionMessage);\r\n if (!processed) {\r\n if (!!this.serviceEvents) {\r\n this.serviceEvents.onEvent(new ServiceEvent(connectionMessage.path.toLowerCase(), connectionMessage.textBody));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n }\r\n const ret: Promise = loop();\r\n\r\n return ret;\r\n } catch (error) {\r\n this.terminateMessageLoop = true;\r\n communicationCustodian.resolve();\r\n }\r\n };\r\n\r\n loop().catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n\r\n return communicationCustodian.promise;\r\n }\r\n\r\n private async startMessageLoop(): Promise {\r\n\r\n this.terminateMessageLoop = false;\r\n\r\n try {\r\n await this.receiveDialogMessageOverride();\r\n } catch (error) {\r\n await this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.RuntimeError, error as string);\r\n }\r\n\r\n return Promise.resolve();\r\n }\r\n\r\n // Takes an established websocket connection to the endpoint and sends speech configuration information.\r\n private async configConnection(connection: IConnection): Promise {\r\n if (this.terminateMessageLoop) {\r\n this.terminateMessageLoop = false;\r\n return Promise.reject(\"Connection to service terminated.\");\r\n }\r\n\r\n await this.sendSpeechServiceConfig(connection, this.privRequestSession, this.privRecognizerConfig.SpeechServiceConfig.serialize());\r\n await this.sendAgentConfig(connection);\r\n return connection;\r\n }\r\n\r\n private async sendPreAudioMessages(): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n this.addKeywordContextData();\r\n await this.sendSpeechContext(connection, true);\r\n await this.sendAgentContext(connection);\r\n await this.sendWaveHeader(connection);\r\n }\r\n\r\n private sendAgentConfig(connection: IConnection): Promise {\r\n if (this.agentConfig && !this.agentConfigSent) {\r\n\r\n if (this.privRecognizerConfig\r\n .parameters\r\n .getProperty(PropertyId.Conversation_DialogType) === DialogServiceConfig.DialogTypes.CustomCommands) {\r\n const config = this.agentConfig.get();\r\n config.botInfo.commandsCulture = this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, \"en-us\");\r\n this.agentConfig.set(config);\r\n }\r\n this.onEvent(new SendingAgentContextMessageEvent(this.agentConfig));\r\n\r\n const agentConfigJson = this.agentConfig.toJsonString();\r\n\r\n // guard against sending this multiple times on one connection\r\n this.agentConfigSent = true;\r\n\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"agent.config\",\r\n this.privRequestSession.requestId,\r\n \"application/json\",\r\n agentConfigJson));\r\n }\r\n\r\n return;\r\n }\r\n\r\n private sendAgentContext(connection: IConnection): Promise {\r\n const guid: string = createGuid();\r\n\r\n const speechActivityTemplate = this.privDialogServiceConnector.properties.getProperty(PropertyId.Conversation_Speech_Activity_Template);\r\n\r\n const agentContext: any = {\r\n channelData: \"\",\r\n context: {\r\n interactionId: guid\r\n },\r\n messagePayload: typeof speechActivityTemplate === undefined ? undefined : speechActivityTemplate,\r\n version: 0.5\r\n };\r\n\r\n const agentContextJson = JSON.stringify(agentContext);\r\n\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speech.agent.context\",\r\n this.privRequestSession.requestId,\r\n \"application/json\",\r\n agentContextJson));\r\n }\r\n\r\n private fireEventForResult(serviceResult: SimpleSpeechPhrase, properties: PropertyCollection): SpeechRecognitionEventArgs {\r\n const resultReason: ResultReason = EnumTranslation.implTranslateRecognitionResult(serviceResult.RecognitionStatus);\r\n\r\n const offset: number = serviceResult.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n\r\n const result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n serviceResult.DisplayText,\r\n serviceResult.Duration,\r\n offset,\r\n serviceResult.Language,\r\n serviceResult.LanguageDetectionConfidence,\r\n undefined,\r\n undefined,\r\n JSON.stringify(serviceResult),\r\n properties);\r\n\r\n const ev = new SpeechRecognitionEventArgs(result, offset, this.privRequestSession.sessionId);\r\n return ev;\r\n }\r\n\r\n private handleResponseMessage(responseMessage: SpeechConnectionMessage): void {\r\n // \"response\" messages can contain either \"message\" (activity) or \"MessageStatus\" data. Fire the appropriate\r\n // event according to the message type that's specified.\r\n const responsePayload: { messageType: string } = JSON.parse(responseMessage.textBody) as { messageType: string };\r\n switch (responsePayload.messageType.toLowerCase()) {\r\n case \"message\":\r\n const responseRequestId = responseMessage.requestId.toUpperCase();\r\n const activityPayload: ActivityPayloadResponse = ActivityPayloadResponse.fromJSON(responseMessage.textBody);\r\n const turn = this.privTurnStateManager.GetTurn(responseRequestId);\r\n\r\n // update the conversation Id\r\n if (activityPayload.conversationId) {\r\n const updateAgentConfig = this.agentConfig.get();\r\n updateAgentConfig.botInfo.conversationId = activityPayload.conversationId;\r\n this.agentConfig.set(updateAgentConfig);\r\n }\r\n\r\n const pullAudioOutputStream: PullAudioOutputStreamImpl = turn.processActivityPayload(\r\n activityPayload,\r\n AudioOutputFormatImpl.fromSpeechSynthesisOutputFormatString(this.privDialogServiceConnector.properties.getProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, undefined)));\r\n const activity = new ActivityReceivedEventArgs(activityPayload.messagePayload, pullAudioOutputStream);\r\n if (!!this.privDialogServiceConnector.activityReceived) {\r\n try {\r\n this.privDialogServiceConnector.activityReceived(this.privDialogServiceConnector, activity);\r\n /* eslint-disable-next-line no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n break;\r\n\r\n case \"messagestatus\":\r\n if (!!this.privDialogServiceConnector.turnStatusReceived) {\r\n try {\r\n this.privDialogServiceConnector.turnStatusReceived(\r\n this.privDialogServiceConnector,\r\n new TurnStatusReceivedEventArgs(responseMessage.textBody));\r\n /* eslint-disable-next-line no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n break;\r\n\r\n default:\r\n Events.instance.onEvent(\r\n new BackgroundEvent(`Unexpected response of type ${responsePayload.messageType}. Ignoring.`));\r\n break;\r\n }\r\n }\r\n\r\n private onEvent(event: DialogEvent): void {\r\n this.privEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n private addKeywordContextData(): void {\r\n const keywordPropertyValue: string = this.privRecognizerConfig.parameters.getProperty(\"SPEECH-KeywordsToDetect\");\r\n if (keywordPropertyValue === undefined) {\r\n return;\r\n }\r\n\r\n const keywordOffsetPropertyValue: string = this.privRecognizerConfig.parameters\r\n .getProperty(\"SPEECH-KeywordsToDetect-Offsets\");\r\n const keywordDurationPropertyValue: string = this.privRecognizerConfig.parameters\r\n .getProperty(\"SPEECH-KeywordsToDetect-Durations\");\r\n\r\n const keywords = keywordPropertyValue.split(\";\");\r\n const keywordOffsets = keywordOffsetPropertyValue === undefined ? [] : keywordOffsetPropertyValue.split(\";\");\r\n const keywordDurations = keywordDurationPropertyValue === undefined ? [] : keywordDurationPropertyValue.split(\";\");\r\n\r\n const keywordDefinitionArray = [];\r\n for (let i = 0; i < keywords.length; i++) {\r\n const definition: { [section: string]: any } = {};\r\n definition.text = keywords[i];\r\n if (i < keywordOffsets.length) {\r\n definition.offset = Number(keywordOffsets[i]);\r\n }\r\n if (i < keywordDurations.length) {\r\n definition.duration = Number(keywordDurations[i]);\r\n }\r\n keywordDefinitionArray.push(definition);\r\n }\r\n\r\n this.speechContext.setSection(\"invocationSource\", \"VoiceActivationWithKeyword\");\r\n this.speechContext.setSection(\"keywordDetection\", [{\r\n clientDetectedKeywords: keywordDefinitionArray,\r\n onReject: { action: \"EndOfTurn\" },\r\n type: \"startTrigger\"\r\n }]);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { AudioOutputFormatImpl } from \"../sdk/Audio/AudioOutputFormat\";\r\nimport { AudioOutputStream, PullAudioOutputStreamImpl } from \"../sdk/Audio/AudioOutputStream\";\r\nimport { DialogServiceTurnStateManager } from \"./DialogServiceTurnStateManager\";\r\nimport { ActivityPayloadResponse, MessageDataStreamType } from \"./ServiceMessages/ActivityResponsePayload\";\r\n\r\nexport class DialogServiceTurnState {\r\n private privRequestId: string;\r\n private privIsCompleted: boolean;\r\n private privAudioStream: PullAudioOutputStreamImpl;\r\n private privTimeoutToken: any;\r\n private privTurnManager: DialogServiceTurnStateManager;\r\n\r\n public constructor(manager: DialogServiceTurnStateManager, requestId: string) {\r\n this.privRequestId = requestId;\r\n this.privIsCompleted = false;\r\n this.privAudioStream = null;\r\n this.privTurnManager = manager;\r\n this.resetTurnEndTimeout();\r\n }\r\n\r\n public get audioStream(): PullAudioOutputStreamImpl {\r\n // Called when is needed to stream.\r\n this.resetTurnEndTimeout();\r\n return this.privAudioStream;\r\n }\r\n\r\n public processActivityPayload(payload: ActivityPayloadResponse, audioFormat?: AudioOutputFormatImpl): PullAudioOutputStreamImpl {\r\n if (payload.messageDataStreamType === MessageDataStreamType.TextToSpeechAudio) {\r\n this.privAudioStream = AudioOutputStream.createPullStream() as PullAudioOutputStreamImpl;\r\n this.privAudioStream.format = (audioFormat !== undefined) ? audioFormat : AudioOutputFormatImpl.getDefaultOutputFormat();\r\n }\r\n return this.privAudioStream;\r\n }\r\n\r\n public endAudioStream(): void {\r\n if (this.privAudioStream !== null && !this.privAudioStream.isClosed) {\r\n this.privAudioStream.close();\r\n }\r\n }\r\n\r\n public complete(): void {\r\n if (this.privTimeoutToken !== undefined) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n clearTimeout(this.privTimeoutToken);\r\n }\r\n this.endAudioStream();\r\n }\r\n\r\n private resetTurnEndTimeout(): void {\r\n if (this.privTimeoutToken !== undefined) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n clearTimeout(this.privTimeoutToken);\r\n }\r\n this.privTimeoutToken = setTimeout((): void => {\r\n this.privTurnManager.CompleteTurn(this.privRequestId);\r\n return;\r\n }, 2000);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { InvalidOperationError } from \"../common/Error\";\r\nimport { DialogServiceTurnState } from \"./DialogServiceTurnState\";\r\n\r\nexport class DialogServiceTurnStateManager {\r\n private privTurnMap: Map;\r\n\r\n public constructor() {\r\n this.privTurnMap = new Map();\r\n return;\r\n }\r\n\r\n public StartTurn(id: string): DialogServiceTurnState {\r\n if (this.privTurnMap.has(id)) {\r\n throw new InvalidOperationError(\"Service error: There is already a turn with id:\" + id);\r\n }\r\n const turnState: DialogServiceTurnState = new DialogServiceTurnState(this, id);\r\n this.privTurnMap.set(id, turnState);\r\n return this.privTurnMap.get(id);\r\n }\r\n\r\n public GetTurn(id: string): DialogServiceTurnState {\r\n return this.privTurnMap.get(id);\r\n }\r\n\r\n public CompleteTurn(id: string): DialogServiceTurnState {\r\n if (!this.privTurnMap.has(id)) {\r\n throw new InvalidOperationError(\"Service error: Received turn end for an unknown turn id:\" + id);\r\n }\r\n const turnState = this.privTurnMap.get(id);\r\n turnState.complete();\r\n this.privTurnMap.delete(id);\r\n return turnState;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IDynamicGrammar,\r\n IDynamicGrammarGeneric,\r\n} from \"./Exports\";\r\n\r\n/**\r\n * Responsible for building the object to be sent to the speech service to support dynamic grammars.\r\n * @class DynamicGrammarBuilder\r\n */\r\nexport class DynamicGrammarBuilder {\r\n\r\n private privPhrases: string[];\r\n private privGrammars: string[];\r\n\r\n // Adds one more reference phrases to the dynamic grammar to send.\r\n // All added phrases are generic phrases.\r\n public addPhrase(phrase: string | string[]): void {\r\n if (!this.privPhrases) {\r\n this.privPhrases = [];\r\n }\r\n\r\n if (phrase instanceof Array) {\r\n this.privPhrases = this.privPhrases.concat(phrase);\r\n } else {\r\n this.privPhrases.push(phrase);\r\n }\r\n }\r\n\r\n // Clears all phrases stored in the current object.\r\n public clearPhrases(): void {\r\n this.privPhrases = undefined;\r\n }\r\n\r\n // Adds one or more reference grammars to the current grammar.\r\n public addReferenceGrammar(grammar: string | string[]): void {\r\n if (!this.privGrammars) {\r\n this.privGrammars = [];\r\n }\r\n\r\n if (grammar instanceof Array) {\r\n this.privGrammars = this.privGrammars.concat(grammar);\r\n } else {\r\n this.privGrammars.push(grammar);\r\n }\r\n }\r\n\r\n // clears all grammars stored on the recognizer.\r\n public clearGrammars(): void {\r\n this.privGrammars = undefined;\r\n }\r\n\r\n // Generates an object that represents the dynamic grammar used by the Speech Service.\r\n // This is done by building an object with the correct layout based on the phrases and reference grammars added to this instance\r\n // of a DynamicGrammarBuilder\r\n public generateGrammarObject(): IDynamicGrammar {\r\n if (this.privGrammars === undefined && this.privPhrases === undefined) {\r\n return undefined;\r\n }\r\n\r\n const retObj: IDynamicGrammar = {};\r\n retObj.ReferenceGrammars = this.privGrammars;\r\n\r\n if (undefined !== this.privPhrases && 0 !== this.privPhrases.length) {\r\n const retPhrases: IDynamicGrammarGeneric[] = [];\r\n\r\n this.privPhrases.forEach((value: string): void => {\r\n retPhrases.push({\r\n Text: value,\r\n });\r\n });\r\n\r\n retObj.Groups = [{ Type: \"Generic\", Items: retPhrases }];\r\n }\r\n\r\n return retObj;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n ResultReason\r\n} from \"../sdk/Exports\";\r\nimport { RecognitionStatus } from \"./Exports\";\r\n\r\nexport class EnumTranslation {\r\n public static implTranslateRecognitionResult(recognitionStatus: RecognitionStatus): ResultReason {\r\n let reason = ResultReason.Canceled;\r\n switch (recognitionStatus) {\r\n case RecognitionStatus.Success:\r\n reason = ResultReason.RecognizedSpeech;\r\n break;\r\n case RecognitionStatus.NoMatch:\r\n case RecognitionStatus.InitialSilenceTimeout:\r\n case RecognitionStatus.BabbleTimeout:\r\n case RecognitionStatus.EndOfDictation:\r\n reason = ResultReason.NoMatch;\r\n break;\r\n case RecognitionStatus.Error:\r\n case RecognitionStatus.BadRequest:\r\n case RecognitionStatus.Forbidden:\r\n default:\r\n reason = ResultReason.Canceled;\r\n break;\r\n }\r\n return reason;\r\n }\r\n\r\n public static implTranslateCancelResult(recognitionStatus: RecognitionStatus): CancellationReason {\r\n let reason = CancellationReason.EndOfStream;\r\n switch (recognitionStatus) {\r\n case RecognitionStatus.Success:\r\n case RecognitionStatus.EndOfDictation:\r\n case RecognitionStatus.NoMatch:\r\n reason = CancellationReason.EndOfStream;\r\n break;\r\n case RecognitionStatus.InitialSilenceTimeout:\r\n case RecognitionStatus.BabbleTimeout:\r\n case RecognitionStatus.Error:\r\n case RecognitionStatus.BadRequest:\r\n case RecognitionStatus.Forbidden:\r\n default:\r\n reason = CancellationReason.Error;\r\n break;\r\n }\r\n return reason;\r\n }\r\n\r\n public static implTranslateCancelErrorCode(recognitionStatus: RecognitionStatus): CancellationErrorCode {\r\n let reason: CancellationErrorCode = CancellationErrorCode.NoError;\r\n switch (recognitionStatus) {\r\n case RecognitionStatus.Error:\r\n reason = CancellationErrorCode.ServiceError;\r\n break;\r\n case RecognitionStatus.TooManyRequests:\r\n reason = CancellationErrorCode.TooManyRequests;\r\n break;\r\n case RecognitionStatus.BadRequest:\r\n reason = CancellationErrorCode.BadRequestParameters;\r\n break;\r\n case RecognitionStatus.Forbidden:\r\n reason = CancellationErrorCode.Forbidden;\r\n break;\r\n default:\r\n reason = CancellationErrorCode.NoError;\r\n break;\r\n }\r\n\r\n return reason;\r\n\r\n }\r\n\r\n public static implTranslateErrorDetails(cancellationErrorCode: CancellationErrorCode): string {\r\n let errorDetails: string = \"The speech service encountered an internal error and could not continue.\";\r\n switch (cancellationErrorCode) {\r\n case CancellationErrorCode.Forbidden:\r\n errorDetails = \"The recognizer is using a free subscription that ran out of quota.\";\r\n break;\r\n case CancellationErrorCode.BadRequestParameters:\r\n errorDetails = \"Invalid parameter or unsupported audio format in the request.\";\r\n break;\r\n case CancellationErrorCode.TooManyRequests:\r\n errorDetails = \"The number of parallel requests exceeded the number of allowed concurrent transcriptions.\";\r\n break;\r\n default:\r\n break;\r\n }\r\n return errorDetails;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// Make sure not to export internal modules.\r\n//\r\nexport * from \"./CognitiveSubscriptionKeyAuthentication\";\r\nexport * from \"./CognitiveTokenAuthentication\";\r\nexport * from \"./IAuthentication\";\r\nexport * from \"./IConnectionFactory\";\r\nexport * from \"./ISynthesisConnectionFactory\";\r\nexport * from \"./IntentConnectionFactory\";\r\nexport * from \"./SpeakerRecognitionConnectionFactory\";\r\nexport * from \"./RecognitionEvents\";\r\nexport * from \"./ServiceRecognizerBase\";\r\nexport * from \"./ConversationServiceRecognizer\";\r\nexport * from \"./RecognizerConfig\";\r\nexport * from \"./SpeechServiceInterfaces\";\r\nexport * from \"./WebsocketMessageFormatter\";\r\nexport * from \"./SpeechConnectionFactory\";\r\nexport * from \"./TranscriberConnectionFactory\";\r\nexport * from \"./TranslationConnectionFactory\";\r\nexport * from \"./SpeechSynthesisConnectionFactory\";\r\nexport * from \"./EnumTranslation\";\r\nexport * from \"./ServiceMessages/Enums\";\r\nexport * from \"./ServiceMessages/TranslationSynthesisEnd\";\r\nexport * from \"./ServiceMessages/TranslationHypothesis\";\r\nexport * from \"./ServiceMessages/TranslationPhrase\";\r\nexport * from \"./TranslationServiceRecognizer\";\r\nexport * from \"./ServiceMessages/SpeechDetected\";\r\nexport * from \"./ServiceMessages/SpeechHypothesis\";\r\nexport * from \"./ServiceMessages/SpeechKeyword\";\r\nexport * from \"./SpeechServiceRecognizer\";\r\nexport * from \"./TranscriptionServiceRecognizer\";\r\nexport * from \"./ServiceMessages/DetailedSpeechPhrase\";\r\nexport * from \"./ServiceMessages/SimpleSpeechPhrase\";\r\nexport * from \"./AddedLmIntent\";\r\nexport * from \"./IntentServiceRecognizer\";\r\nexport * from \"./ServiceMessages/IntentResponse\";\r\nexport * from \"./ServiceMessages/SpeakerResponse\";\r\nexport * from \"./RequestSession\";\r\nexport * from \"./SpeechContext\";\r\nexport * from \"./DynamicGrammarBuilder\";\r\nexport * from \"./DynamicGrammarInterfaces\";\r\nexport * from \"./DialogServiceAdapter\";\r\nexport * from \"./AgentConfig\";\r\nexport * from \"./Transcription/Exports\";\r\nexport * from \"./ServiceMessages/SynthesisAudioMetadata\";\r\nexport * from \"./SynthesisTurn\";\r\nexport * from \"./SynthesisAdapterBase\";\r\nexport * from \"./SynthesisRestAdapter\";\r\nexport * from \"./SynthesizerConfig\";\r\nexport * from \"./SynthesisContext\";\r\nexport * from \"./SpeakerRecognitionConfig\";\r\nexport * from \"./SpeakerServiceRecognizer\";\r\nexport * from \"./VoiceServiceRecognizer\";\r\n\r\nexport const OutputFormatPropertyName: string = \"OutputFormat\";\r\nexport const CancellationErrorCodePropertyName: string = \"CancellationErrorCode\";\r\nexport const ServicePropertiesPropertyName: string = \"ServiceProperties\";\r\nexport const ForceDictationPropertyName: string = \"ForceDictation\";\r\nexport const AutoDetectSourceLanguagesOpenRangeOptionName: string = \"OpenRange\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport class HeaderNames {\r\n public static AuthKey: string = \"Ocp-Apim-Subscription-Key\";\r\n public static Authorization: string = \"Authorization\";\r\n public static SpIDAuthKey: string = \"Apim-Subscription-Id\";\r\n public static ConnectionId: string = \"X-ConnectionId\";\r\n public static ContentType: string = \"Content-Type\";\r\n public static CustomCommandsAppId: string = \"X-CommandsAppId\";\r\n public static Path: string = \"Path\";\r\n public static RequestId: string = \"X-RequestId\";\r\n public static RequestStreamId: string = \"X-StreamId\";\r\n public static RequestTimestamp: string = \"X-Timestamp\";\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport interface IAuthentication {\r\n fetch(authFetchEventId: string): Promise;\r\n fetchOnExpiry(authFetchEventId: string): Promise;\r\n}\r\n\r\nexport class AuthInfo {\r\n private privHeaderName: string;\r\n private privToken: string;\r\n\r\n public constructor(headerName: string, token: string) {\r\n this.privHeaderName = headerName;\r\n this.privToken = token;\r\n }\r\n\r\n public get headerName(): string {\r\n return this.privHeaderName;\r\n }\r\n\r\n public get token(): string {\r\n return this.privToken;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports\";\r\nimport {\r\n PropertyId\r\n} from \"../sdk/Exports\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase\";\r\nimport {\r\n AuthInfo,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter,\r\n} from \"./Exports\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\n\r\nexport class IntentConnectionFactory extends ConnectionFactoryBase {\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint);\r\n if (!endpoint) {\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_IntentRegion);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, \"wss://\" + region + \".sr.speech\" + hostSuffix);\r\n endpoint = host + \"/speech/recognition/interactive/cognitiveservices/v1\";\r\n }\r\n\r\n const queryParams: IStringDictionary = {\r\n format: \"simple\",\r\n language: config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage),\r\n };\r\n\r\n this.setCommonUrlParams(config, queryParams, endpoint);\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n\r\n private getSpeechRegionFromIntentRegion(intentRegion: string): string {\r\n switch (intentRegion) {\r\n case \"West US\":\r\n case \"US West\":\r\n case \"westus\":\r\n return \"uswest\";\r\n case \"West US 2\":\r\n case \"US West 2\":\r\n case \"westus2\":\r\n return \"uswest2\";\r\n case \"South Central US\":\r\n case \"US South Central\":\r\n case \"southcentralus\":\r\n return \"ussouthcentral\";\r\n case \"West Central US\":\r\n case \"US West Central\":\r\n case \"westcentralus\":\r\n return \"uswestcentral\";\r\n case \"East US\":\r\n case \"US East\":\r\n case \"eastus\":\r\n return \"useast\";\r\n case \"East US 2\":\r\n case \"US East 2\":\r\n case \"eastus2\":\r\n return \"useast2\";\r\n case \"West Europe\":\r\n case \"Europe West\":\r\n case \"westeurope\":\r\n return \"europewest\";\r\n case \"North Europe\":\r\n case \"Europe North\":\r\n case \"northeurope\":\r\n return \"europenorth\";\r\n case \"Brazil South\":\r\n case \"South Brazil\":\r\n case \"southbrazil\":\r\n return \"brazilsouth\";\r\n case \"Australia East\":\r\n case \"East Australia\":\r\n case \"eastaustralia\":\r\n return \"australiaeast\";\r\n case \"Southeast Asia\":\r\n case \"Asia Southeast\":\r\n case \"southeastasia\":\r\n return \"asiasoutheast\";\r\n case \"East Asia\":\r\n case \"Asia East\":\r\n case \"eastasia\":\r\n return \"asiaeast\";\r\n default:\r\n return intentRegion;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n Deferred,\r\n IAudioSource,\r\n MessageType,\r\n} from \"../common/Exports\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n IntentRecognitionCanceledEventArgs,\r\n IntentRecognitionEventArgs,\r\n IntentRecognitionResult,\r\n IntentRecognizer,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n} from \"../sdk/Exports\";\r\nimport {\r\n AddedLmIntent,\r\n CancellationErrorCodePropertyName,\r\n EnumTranslation,\r\n IntentResponse,\r\n ServiceRecognizerBase,\r\n SimpleSpeechPhrase,\r\n SpeechHypothesis,\r\n} from \"./Exports\";\r\nimport { IAuthentication } from \"./IAuthentication\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal\";\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class IntentServiceRecognizer extends ServiceRecognizerBase {\r\n private privIntentRecognizer: IntentRecognizer;\r\n private privAddedLmIntents: { [id: string]: AddedLmIntent };\r\n private privIntentDataSent: boolean;\r\n private privUmbrellaIntent: AddedLmIntent;\r\n private privPendingIntentArgs: IntentRecognitionEventArgs;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n recognizer: IntentRecognizer) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, recognizer);\r\n this.privIntentRecognizer = recognizer;\r\n this.privIntentDataSent = false;\r\n }\r\n\r\n public setIntents(addedIntents: { [id: string]: AddedLmIntent }, umbrellaIntent: AddedLmIntent): void {\r\n this.privAddedLmIntents = addedIntents;\r\n this.privUmbrellaIntent = umbrellaIntent;\r\n this.privIntentDataSent = true;\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n let result: IntentRecognitionResult;\r\n let ev: IntentRecognitionEventArgs;\r\n let processed: boolean = false;\r\n\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n if (connectionMessage.messageType === MessageType.Text) {\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n }\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speech.hypothesis\":\r\n const speechHypothesis: SpeechHypothesis = SpeechHypothesis.fromJSON(connectionMessage.textBody);\r\n\r\n result = new IntentRecognitionResult(\r\n undefined,\r\n this.privRequestSession.requestId,\r\n ResultReason.RecognizingIntent,\r\n speechHypothesis.Text,\r\n speechHypothesis.Duration,\r\n speechHypothesis.Offset + this.privRequestSession.currentTurnAudioOffset,\r\n speechHypothesis.Language,\r\n speechHypothesis.LanguageDetectionConfidence,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n this.privRequestSession.onHypothesis(result.offset);\r\n\r\n ev = new IntentRecognitionEventArgs(result, speechHypothesis.Offset + this.privRequestSession.currentTurnAudioOffset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privIntentRecognizer.recognizing) {\r\n try {\r\n this.privIntentRecognizer.recognizing(this.privIntentRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.phrase\":\r\n const simple: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(connectionMessage.textBody);\r\n result = new IntentRecognitionResult(\r\n undefined,\r\n this.privRequestSession.requestId,\r\n EnumTranslation.implTranslateRecognitionResult(simple.RecognitionStatus),\r\n simple.DisplayText,\r\n simple.Duration,\r\n simple.Offset + this.privRequestSession.currentTurnAudioOffset,\r\n simple.Language,\r\n simple.LanguageDetectionConfidence,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n ev = new IntentRecognitionEventArgs(result, result.offset, this.privRequestSession.sessionId);\r\n\r\n const sendEvent: () => void = (): void => {\r\n if (!!this.privIntentRecognizer.recognized) {\r\n try {\r\n this.privIntentRecognizer.recognized(this.privIntentRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n // report result to promise.\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n };\r\n\r\n // If intent data was sent, the terminal result for this recognizer is an intent being found.\r\n // If no intent data was sent, the terminal event is speech recognition being successful.\r\n if (false === this.privIntentDataSent || ResultReason.NoMatch === ev.result.reason) {\r\n // Advance the buffers.\r\n this.privRequestSession.onPhraseRecognized(ev.offset + ev.result.duration);\r\n sendEvent();\r\n } else {\r\n // Squirrel away the args, when the response event arrives it will build upon them\r\n // and then return\r\n this.privPendingIntentArgs = ev;\r\n }\r\n processed = true;\r\n break;\r\n case \"response\":\r\n // Response from LUIS\r\n ev = this.privPendingIntentArgs;\r\n this.privPendingIntentArgs = undefined;\r\n\r\n if (undefined === ev) {\r\n if (\"\" === connectionMessage.textBody) {\r\n // This condition happens if there is nothing but silence in the\r\n // audio sent to the service.\r\n return;\r\n }\r\n\r\n // Odd... Not sure this can happen\r\n ev = new IntentRecognitionEventArgs(new IntentRecognitionResult(), 0, this.privRequestSession.sessionId);\r\n }\r\n\r\n const intentResponse: IntentResponse = IntentResponse.fromJSON(connectionMessage.textBody);\r\n\r\n // If LUIS didn't return anything, send the existing event, else\r\n // modify it to show the match.\r\n // See if the intent found is in the list of intents asked for.\r\n\r\n if (null !== intentResponse && !!intentResponse.topScoringIntent && !!intentResponse.topScoringIntent.intent) {\r\n let addedIntent: AddedLmIntent = this.privAddedLmIntents[intentResponse.topScoringIntent.intent];\r\n\r\n if (this.privUmbrellaIntent !== undefined) {\r\n addedIntent = this.privUmbrellaIntent;\r\n }\r\n\r\n if (!!addedIntent) {\r\n const intentId = addedIntent === undefined || addedIntent.intentName === undefined ? intentResponse.topScoringIntent.intent : addedIntent.intentName;\r\n let reason = ev.result.reason;\r\n\r\n if (undefined !== intentId) {\r\n reason = ResultReason.RecognizedIntent;\r\n }\r\n\r\n // make sure, properties is set.\r\n const properties = (undefined !== ev.result.properties) ?\r\n ev.result.properties : new PropertyCollection();\r\n\r\n properties.setProperty(PropertyId.LanguageUnderstandingServiceResponse_JsonResult, connectionMessage.textBody);\r\n\r\n ev = new IntentRecognitionEventArgs(\r\n new IntentRecognitionResult(\r\n intentId,\r\n ev.result.resultId,\r\n reason,\r\n ev.result.text,\r\n ev.result.duration,\r\n ev.result.offset,\r\n undefined,\r\n undefined,\r\n ev.result.errorDetails,\r\n ev.result.json,\r\n properties),\r\n ev.offset,\r\n ev.sessionId);\r\n\r\n }\r\n }\r\n this.privRequestSession.onPhraseRecognized(ev.offset + ev.result.duration);\r\n\r\n if (!!this.privIntentRecognizer.recognized) {\r\n try {\r\n this.privIntentRecognizer.recognized(this.privIntentRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n // report result to promise.\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(ev.result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n const defferal = new Deferred();\r\n defferal.resolve(processed);\r\n return defferal.promise;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (!!this.privIntentRecognizer.canceled) {\r\n\r\n const cancelEvent: IntentRecognitionCanceledEventArgs = new IntentRecognitionCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n undefined,\r\n sessionId);\r\n try {\r\n this.privIntentRecognizer.canceled(this.privIntentRecognizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n\r\n if (!!this.privSuccessCallback) {\r\n const result: IntentRecognitionResult = new IntentRecognitionResult(\r\n undefined, // Intent Id\r\n requestId,\r\n ResultReason.Canceled,\r\n undefined, // Text\r\n undefined, // Duration\r\n undefined, // Offset\r\n undefined, // Language\r\n undefined, // LanguageDetectionConfidence\r\n error,\r\n undefined, // Json\r\n properties);\r\n try {\r\n this.privSuccessCallback(result);\r\n this.privSuccessCallback = undefined;\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport class QueryParameterNames {\r\n public static BotId: string = \"botid\";\r\n public static CustomSpeechDeploymentId: string = \"cid\";\r\n public static CustomVoiceDeploymentId: string = \"deploymentId\";\r\n public static EnableAudioLogging: string = \"storeAudio\";\r\n public static EnableLanguageId: string = \"lidEnabled\";\r\n public static EnableWordLevelTimestamps: string = \"wordLevelTimestamps\";\r\n public static EndSilenceTimeoutMs: string = \"endSilenceTimeoutMs\";\r\n public static SegmentationSilenceTimeoutMs: string = \"segmentationSilenceTimeoutMs\";\r\n public static Format: string = \"format\";\r\n public static InitialSilenceTimeoutMs: string = \"initialSilenceTimeoutMs\";\r\n public static Language: string = \"language\";\r\n public static Profanity: string = \"profanity\";\r\n public static RequestBotStatusMessages: string = \"enableBotMessageStatus\";\r\n public static StableIntermediateThreshold: string = \"stableIntermediateThreshold\";\r\n public static StableTranslation: string = \"stableTranslation\";\r\n public static TestHooks: string = \"testhooks\";\r\n public static Postprocessing: string = \"postprocessing\";\r\n public static CtsMeetingId: string = \"meetingId\";\r\n public static CtsDeviceId: string = \"deviceId\";\r\n public static CtsIsParticipant: string = \"isParticipant\";\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { EventType, PlatformEvent } from \"../common/Exports\";\r\n\r\nexport class SpeechRecognitionEvent extends PlatformEvent {\r\n private privRequestId: string;\r\n private privSessionId: string;\r\n\r\n public constructor(eventName: string, requestId: string, sessionId: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n\r\n this.privRequestId = requestId;\r\n this.privSessionId = sessionId;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n}\r\n\r\nexport class RecognitionTriggeredEvent extends SpeechRecognitionEvent {\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n\r\n public constructor(requestId: string, sessionId: string, audioSourceId: string, audioNodeId: string) {\r\n super(\"RecognitionTriggeredEvent\", requestId, sessionId);\r\n\r\n this.privAudioSourceId = audioSourceId;\r\n this.privAudioNodeId = audioNodeId;\r\n }\r\n\r\n public get audioSourceId(): string {\r\n return this.privAudioSourceId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n}\r\n\r\nexport class ListeningStartedEvent extends SpeechRecognitionEvent {\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n\r\n public constructor(requestId: string, sessionId: string, audioSourceId: string, audioNodeId: string) {\r\n super(\"ListeningStartedEvent\", requestId, sessionId);\r\n this.privAudioSourceId = audioSourceId;\r\n this.privAudioNodeId = audioNodeId;\r\n }\r\n\r\n public get audioSourceId(): string {\r\n return this.privAudioSourceId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n}\r\n\r\nexport class ConnectingToServiceEvent extends SpeechRecognitionEvent {\r\n private privAuthFetchEventid: string;\r\n\r\n public constructor(requestId: string, authFetchEventid: string, sessionId: string) {\r\n super(\"ConnectingToServiceEvent\", requestId, sessionId);\r\n this.privAuthFetchEventid = authFetchEventid;\r\n }\r\n\r\n public get authFetchEventid(): string {\r\n return this.privAuthFetchEventid;\r\n }\r\n}\r\n\r\nexport class RecognitionStartedEvent extends SpeechRecognitionEvent {\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n private privAuthFetchEventId: string;\r\n\r\n public constructor(requestId: string, audioSourceId: string, audioNodeId: string, authFetchEventId: string, sessionId: string) {\r\n super(\"RecognitionStartedEvent\", requestId, sessionId);\r\n\r\n this.privAudioSourceId = audioSourceId;\r\n this.privAudioNodeId = audioNodeId;\r\n this.privAuthFetchEventId = authFetchEventId;\r\n }\r\n\r\n public get audioSourceId(): string {\r\n return this.privAudioSourceId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n\r\n public get authFetchEventId(): string {\r\n return this.privAuthFetchEventId;\r\n }\r\n}\r\n\r\nexport enum RecognitionCompletionStatus {\r\n Success,\r\n AudioSourceError,\r\n AudioSourceTimeout,\r\n AuthTokenFetchError,\r\n AuthTokenFetchTimeout,\r\n UnAuthorized,\r\n ConnectTimeout,\r\n ConnectError,\r\n ClientRecognitionActivityTimeout,\r\n UnknownError,\r\n}\r\n\r\nexport class RecognitionEndedEvent extends SpeechRecognitionEvent {\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n private privAuthFetchEventId: string;\r\n private privServiceTag: string;\r\n private privStatus: RecognitionCompletionStatus;\r\n private privError: string;\r\n\r\n public constructor(\r\n requestId: string,\r\n audioSourceId: string,\r\n audioNodeId: string,\r\n authFetchEventId: string,\r\n sessionId: string,\r\n serviceTag: string,\r\n status: RecognitionCompletionStatus,\r\n error: string) {\r\n\r\n super(\"RecognitionEndedEvent\", requestId, sessionId, status === RecognitionCompletionStatus.Success ? EventType.Info : EventType.Error);\r\n\r\n this.privAudioSourceId = audioSourceId;\r\n this.privAudioNodeId = audioNodeId;\r\n this.privAuthFetchEventId = authFetchEventId;\r\n this.privStatus = status;\r\n this.privError = error;\r\n this.privServiceTag = serviceTag;\r\n }\r\n\r\n public get audioSourceId(): string {\r\n return this.privAudioSourceId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n\r\n public get authFetchEventId(): string {\r\n return this.privAuthFetchEventId;\r\n }\r\n\r\n public get serviceTag(): string {\r\n return this.privServiceTag;\r\n }\r\n\r\n public get status(): RecognitionCompletionStatus {\r\n return this.privStatus;\r\n }\r\n\r\n public get error(): string {\r\n return this.privError;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { PropertyCollection, PropertyId } from \"../sdk/Exports\";\r\n\r\nexport enum RecognitionMode {\r\n Interactive,\r\n Conversation,\r\n Dictation,\r\n}\r\n\r\nexport enum SpeechResultFormat {\r\n Simple,\r\n Detailed,\r\n}\r\n\r\nexport class RecognizerConfig {\r\n private privRecognitionMode: RecognitionMode;\r\n private privLanguageIdMode: string;\r\n private privSpeechServiceConfig: SpeechServiceConfig;\r\n private privRecognitionActivityTimeout: number;\r\n private privParameters: PropertyCollection;\r\n private privMaxRetryCount: number;\r\n\r\n public constructor(\r\n speechServiceConfig: SpeechServiceConfig,\r\n parameters: PropertyCollection) {\r\n this.privSpeechServiceConfig = speechServiceConfig ? speechServiceConfig : new SpeechServiceConfig(new Context(null));\r\n this.privParameters = parameters;\r\n this.privMaxRetryCount = parseInt(parameters.getProperty(\"SPEECH-Error-MaxRetryCount\", \"4\"), 10);\r\n this.privLanguageIdMode = parameters.getProperty(PropertyId.SpeechServiceConnection_LanguageIdMode, undefined);\r\n }\r\n\r\n public get parameters(): PropertyCollection {\r\n return this.privParameters;\r\n }\r\n\r\n public get recognitionMode(): RecognitionMode {\r\n return this.privRecognitionMode;\r\n }\r\n\r\n public set recognitionMode(value: RecognitionMode) {\r\n this.privRecognitionMode = value;\r\n this.privRecognitionActivityTimeout = value === RecognitionMode.Interactive ? 8000 : 25000;\r\n this.privSpeechServiceConfig.Recognition = RecognitionMode[value];\r\n }\r\n\r\n public get SpeechServiceConfig(): SpeechServiceConfig {\r\n return this.privSpeechServiceConfig;\r\n }\r\n\r\n public get recognitionActivityTimeout(): number {\r\n return this.privRecognitionActivityTimeout;\r\n }\r\n\r\n public get isContinuousRecognition(): boolean {\r\n return this.privRecognitionMode !== RecognitionMode.Interactive;\r\n }\r\n\r\n public get languageIdMode(): string {\r\n return this.privLanguageIdMode;\r\n }\r\n\r\n public get autoDetectSourceLanguages(): string {\r\n return this.parameters.getProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages, undefined);\r\n }\r\n\r\n public get recognitionEndpointVersion(): string {\r\n return this.parameters.getProperty(PropertyId.SpeechServiceConnection_RecognitionEndpointVersion, undefined);\r\n }\r\n\r\n public get sourceLanguageModels(): { language: string; endpoint: string }[] {\r\n const models: { language: string; endpoint: string }[] = [];\r\n let modelsExist: boolean = false;\r\n if (this.autoDetectSourceLanguages !== undefined) {\r\n for (const language of this.autoDetectSourceLanguages.split(\",\")) {\r\n const customProperty = language + PropertyId.SpeechServiceConnection_EndpointId.toString();\r\n const modelId: string = this.parameters.getProperty(customProperty, undefined);\r\n if (modelId !== undefined) {\r\n models.push( { language, endpoint: modelId });\r\n modelsExist = true;\r\n } else {\r\n models.push( { language, endpoint: \"\" } );\r\n }\r\n }\r\n }\r\n return modelsExist ? models : undefined;\r\n }\r\n\r\n public get maxRetryCount(): number {\r\n return this.privMaxRetryCount;\r\n }\r\n}\r\n\r\n// The config is serialized and sent as the Speech.Config\r\nexport class SpeechServiceConfig {\r\n private context: Context;\r\n private recognition: string;\r\n\r\n public constructor(context: Context) {\r\n this.context = context;\r\n }\r\n\r\n public serialize(): string {\r\n return JSON.stringify(this, (key: any, value: { [k: string]: any }): any => {\r\n if (value && typeof value === \"object\") {\r\n const replacement: { [k: string ]: any } = {};\r\n for (const k in value) {\r\n if (Object.hasOwnProperty.call(value, k)) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n replacement[k && k.charAt(0).toLowerCase() + k.substring(1)] = value[k];\r\n }\r\n }\r\n return replacement;\r\n }\r\n return value;\r\n });\r\n }\r\n\r\n public get Context(): Context {\r\n return this.context;\r\n }\r\n\r\n public get Recognition(): string {\r\n return this.recognition;\r\n }\r\n\r\n public set Recognition(value: string) {\r\n this.recognition = value.toLowerCase();\r\n }\r\n}\r\n\r\nexport class Context {\r\n public system: System;\r\n public os: OS;\r\n public audio: ISpeechConfigAudio;\r\n\r\n public constructor(os: OS) {\r\n this.system = new System();\r\n this.os = os;\r\n }\r\n}\r\n\r\nexport class System {\r\n public name: string;\r\n public version: string;\r\n public build: string;\r\n public lang: string;\r\n\r\n public constructor() {\r\n // Note: below will be patched for official builds.\r\n const SPEECHSDK_CLIENTSDK_VERSION = \"1.28.0\";\r\n\r\n this.name = \"SpeechSDK\";\r\n this.version = SPEECHSDK_CLIENTSDK_VERSION;\r\n this.build = \"JavaScript\";\r\n this.lang = \"JavaScript\";\r\n }\r\n}\r\n\r\nexport class OS {\r\n public platform: string;\r\n public name: string;\r\n public version: string;\r\n\r\n public constructor(platform: string, name: string, version: string) {\r\n this.platform = platform;\r\n this.name = name;\r\n this.version = version;\r\n }\r\n}\r\n\r\nexport class Device {\r\n public manufacturer: string;\r\n public model: string;\r\n public version: string;\r\n\r\n public constructor(manufacturer: string, model: string, version: string) {\r\n this.manufacturer = manufacturer;\r\n this.model = model;\r\n this.version = version;\r\n }\r\n}\r\n\r\nexport interface ISpeechConfigAudio {\r\n source?: ISpeechConfigAudioDevice;\r\n playback?: ISpeechConfigAudioDevice;\r\n}\r\n\r\nexport interface ISpeechConfigAudioDevice {\r\n manufacturer: string;\r\n model: string;\r\n connectivity: connectivity;\r\n type: type;\r\n samplerate: number;\r\n bitspersample: number;\r\n channelcount: number;\r\n}\r\n\r\nexport enum connectivity {\r\n Bluetooth = \"Bluetooth\",\r\n Wired = \"Wired\",\r\n WiFi = \"WiFi\",\r\n Cellular = \"Cellular\",\r\n InBuilt = \"InBuilt\",\r\n Unknown = \"Unknown\",\r\n}\r\n\r\nexport enum type {\r\n Phone = \"Phone\",\r\n Speaker = \"Speaker\",\r\n Car = \"Car\",\r\n Headset = \"Headset\",\r\n Thermostat = \"Thermostat\",\r\n Microphones = \"Microphones\",\r\n Deskphone = \"Deskphone\",\r\n RemoteControl = \"RemoteControl\",\r\n Unknown = \"Unknown\",\r\n File = \"File\",\r\n Stream = \"Stream\",\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ReplayableAudioNode } from \"../common.browser/Exports\";\r\nimport {\r\n createNoDashGuid,\r\n Deferred,\r\n Events,\r\n IDetachable,\r\n IEventSource,\r\n PlatformEvent\r\n} from \"../common/Exports\";\r\nimport {\r\n ConnectingToServiceEvent,\r\n ListeningStartedEvent,\r\n RecognitionStartedEvent,\r\n RecognitionTriggeredEvent,\r\n SpeechRecognitionEvent,\r\n} from \"./RecognitionEvents\";\r\nimport { ServiceTelemetryListener } from \"./ServiceTelemetryListener.Internal\";\r\n\r\nexport class RequestSession {\r\n private privIsDisposed: boolean = false;\r\n private privServiceTelemetryListener: ServiceTelemetryListener;\r\n private privDetachables: IDetachable[] = new Array();\r\n private privRequestId: string;\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n private privAudioNode: ReplayableAudioNode;\r\n private privAuthFetchEventId: string;\r\n private privIsAudioNodeDetached: boolean = false;\r\n private privIsRecognizing: boolean = false;\r\n private privIsSpeechEnded: boolean = false;\r\n private privTurnStartAudioOffset: number = 0;\r\n private privLastRecoOffset: number = 0;\r\n private privHypothesisReceived: boolean = false;\r\n private privBytesSent: number = 0;\r\n private privRecogNumber: number = 0;\r\n private privSessionId: string;\r\n private privTurnDeferral: Deferred;\r\n private privInTurn: boolean = false;\r\n private privConnectionAttempts: number = 0;\r\n\r\n public constructor(audioSourceId: string) {\r\n this.privAudioSourceId = audioSourceId;\r\n this.privRequestId = createNoDashGuid();\r\n this.privAudioNodeId = createNoDashGuid();\r\n this.privTurnDeferral = new Deferred();\r\n\r\n // We're not in a turn, so resolve.\r\n this.privTurnDeferral.resolve();\r\n }\r\n\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n\r\n public get turnCompletionPromise(): Promise {\r\n return this.privTurnDeferral.promise;\r\n }\r\n\r\n public get isSpeechEnded(): boolean {\r\n return this.privIsSpeechEnded;\r\n }\r\n\r\n public get isRecognizing(): boolean {\r\n return this.privIsRecognizing;\r\n }\r\n\r\n public get currentTurnAudioOffset(): number {\r\n return this.privTurnStartAudioOffset;\r\n }\r\n\r\n public get recogNumber(): number {\r\n return this.privRecogNumber;\r\n }\r\n\r\n public get numConnectionAttempts(): number {\r\n return this.privConnectionAttempts;\r\n }\r\n\r\n // The number of bytes sent for the current connection.\r\n // Counter is reset to 0 each time a connection is established.\r\n public get bytesSent(): number {\r\n return this.privBytesSent;\r\n }\r\n public listenForServiceTelemetry(eventSource: IEventSource): void {\r\n if (!!this.privServiceTelemetryListener) {\r\n this.privDetachables.push(eventSource.attachListener(this.privServiceTelemetryListener));\r\n }\r\n }\r\n\r\n public startNewRecognition(): void {\r\n this.privIsSpeechEnded = false;\r\n this.privIsRecognizing = true;\r\n this.privTurnStartAudioOffset = 0;\r\n this.privLastRecoOffset = 0;\r\n this.privRecogNumber++;\r\n this.privServiceTelemetryListener = new ServiceTelemetryListener(this.privRequestId, this.privAudioSourceId, this.privAudioNodeId);\r\n this.onEvent(new RecognitionTriggeredEvent(this.requestId, this.privSessionId, this.privAudioSourceId, this.privAudioNodeId));\r\n }\r\n\r\n public async onAudioSourceAttachCompleted(audioNode: ReplayableAudioNode, isError: boolean): Promise {\r\n this.privAudioNode = audioNode;\r\n this.privIsAudioNodeDetached = false;\r\n\r\n if (isError) {\r\n await this.onComplete();\r\n } else {\r\n this.onEvent(new ListeningStartedEvent(this.privRequestId, this.privSessionId, this.privAudioSourceId, this.privAudioNodeId));\r\n }\r\n }\r\n\r\n public onPreConnectionStart(authFetchEventId: string, connectionId: string): void {\r\n this.privAuthFetchEventId = authFetchEventId;\r\n this.privSessionId = connectionId;\r\n this.onEvent(new ConnectingToServiceEvent(this.privRequestId, this.privAuthFetchEventId, this.privSessionId));\r\n }\r\n\r\n public async onAuthCompleted(isError: boolean): Promise {\r\n if (isError) {\r\n await this.onComplete();\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public async onConnectionEstablishCompleted(statusCode: number, reason?: string): Promise {\r\n if (statusCode === 200) {\r\n this.onEvent(new RecognitionStartedEvent(this.requestId, this.privAudioSourceId, this.privAudioNodeId, this.privAuthFetchEventId, this.privSessionId));\r\n if (!!this.privAudioNode) {\r\n this.privAudioNode.replay();\r\n }\r\n this.privTurnStartAudioOffset = this.privLastRecoOffset;\r\n this.privBytesSent = 0;\r\n return;\r\n } else if (statusCode === 403) {\r\n await this.onComplete();\r\n }\r\n }\r\n\r\n public async onServiceTurnEndResponse(continuousRecognition: boolean): Promise {\r\n this.privTurnDeferral.resolve();\r\n\r\n if (!continuousRecognition || this.isSpeechEnded) {\r\n await this.onComplete();\r\n this.privInTurn = false;\r\n } else {\r\n // Start a new request set.\r\n this.privTurnStartAudioOffset = this.privLastRecoOffset;\r\n this.privAudioNode.replay();\r\n }\r\n }\r\n\r\n public onSpeechContext(): void {\r\n this.privRequestId = createNoDashGuid();\r\n }\r\n\r\n public onServiceTurnStartResponse(): void {\r\n if (!!this.privTurnDeferral && !!this.privInTurn) {\r\n // What? How are we starting a turn with another not done?\r\n this.privTurnDeferral.reject(\"Another turn started before current completed.\");\r\n // Avoid UnhandledPromiseRejection if privTurnDeferral is not being awaited\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.privTurnDeferral.promise.then().catch((): void => { });\r\n }\r\n this.privInTurn = true;\r\n this.privTurnDeferral = new Deferred();\r\n }\r\n\r\n public onHypothesis(offset: number): void {\r\n if (!this.privHypothesisReceived) {\r\n this.privHypothesisReceived = true;\r\n this.privServiceTelemetryListener.hypothesisReceived(this.privAudioNode.findTimeAtOffset(offset));\r\n }\r\n }\r\n\r\n public onPhraseRecognized(offset: number): void {\r\n this.privServiceTelemetryListener.phraseReceived(this.privAudioNode.findTimeAtOffset(offset));\r\n this.onServiceRecognized(offset);\r\n }\r\n\r\n public onServiceRecognized(offset: number): void {\r\n this.privLastRecoOffset = offset;\r\n this.privHypothesisReceived = false;\r\n this.privAudioNode.shrinkBuffers(offset);\r\n this.privConnectionAttempts = 0;\r\n }\r\n\r\n public onAudioSent(bytesSent: number): void {\r\n this.privBytesSent += bytesSent;\r\n }\r\n\r\n public onRetryConnection(): void {\r\n this.privConnectionAttempts++;\r\n }\r\n\r\n public async dispose(): Promise {\r\n if (!this.privIsDisposed) {\r\n // we should have completed by now. If we did not its an unknown error.\r\n this.privIsDisposed = true;\r\n for (const detachable of this.privDetachables) {\r\n await detachable.detach();\r\n }\r\n\r\n if (!!this.privServiceTelemetryListener) {\r\n this.privServiceTelemetryListener.dispose();\r\n }\r\n this.privIsRecognizing = false;\r\n }\r\n }\r\n\r\n public getTelemetry(): string {\r\n if (this.privServiceTelemetryListener.hasTelemetry) {\r\n return this.privServiceTelemetryListener.getTelemetry();\r\n } else {\r\n return null;\r\n }\r\n }\r\n\r\n public async onStopRecognizing(): Promise {\r\n await this.onComplete();\r\n }\r\n\r\n // Should be called with the audioNode for this session has indicated that it is out of speech.\r\n public onSpeechEnded(): void {\r\n this.privIsSpeechEnded = true;\r\n }\r\n\r\n protected onEvent(event: SpeechRecognitionEvent): void {\r\n if (!!this.privServiceTelemetryListener) {\r\n this.privServiceTelemetryListener.onEvent(event);\r\n }\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n private async onComplete(): Promise {\r\n if (!!this.privIsRecognizing) {\r\n this.privIsRecognizing = false;\r\n await this.detachAudioNode();\r\n }\r\n }\r\n\r\n private async detachAudioNode(): Promise {\r\n if (!this.privIsAudioNodeDetached) {\r\n this.privIsAudioNodeDetached = true;\r\n if (this.privAudioNode) {\r\n await this.privAudioNode.detach();\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// response\r\n\r\nexport interface IActivityPayloadResponse {\r\n conversationId: string;\r\n messageDataStreamType: number;\r\n messagePayload: string | object;\r\n version: number;\r\n}\r\n\r\nexport class ActivityPayloadResponse implements IActivityPayloadResponse {\r\n private privActivityResponse: IActivityPayloadResponse;\r\n\r\n private constructor(json: string) {\r\n this.privActivityResponse = JSON.parse(json) as IActivityPayloadResponse;\r\n }\r\n\r\n public static fromJSON(json: string): ActivityPayloadResponse {\r\n return new ActivityPayloadResponse(json);\r\n }\r\n\r\n public get conversationId(): string {\r\n return this.privActivityResponse.conversationId;\r\n }\r\n\r\n public get messageDataStreamType(): number {\r\n return this.privActivityResponse.messageDataStreamType;\r\n }\r\n\r\n public get messagePayload(): string | object {\r\n return this.privActivityResponse.messagePayload;\r\n }\r\n\r\n public get version(): number {\r\n return this.privActivityResponse.version;\r\n }\r\n}\r\n\r\nexport enum MessageDataStreamType {\r\n None = 0,\r\n TextToSpeechAudio = 1,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IPrimaryLanguage, RecognitionStatus } from \"../Exports\";\r\n\r\n// speech.phrase for detailed\r\nexport interface IDetailedSpeechPhrase {\r\n RecognitionStatus: RecognitionStatus;\r\n NBest: IPhrase[];\r\n Duration?: number;\r\n Offset?: number;\r\n PrimaryLanguage?: IPrimaryLanguage;\r\n DisplayText?: string;\r\n SpeakerId?: string;\r\n}\r\n\r\nexport interface IPhrase {\r\n Confidence?: number;\r\n Lexical: string;\r\n ITN: string;\r\n MaskedITN: string;\r\n Display?: string;\r\n DisplayText?: string;\r\n Words?: IWord[];\r\n DisplayWords?: IWord[];\r\n}\r\n\r\nexport interface IWord {\r\n Word: string;\r\n Offset: number;\r\n Duration: number;\r\n}\r\n\r\nexport class DetailedSpeechPhrase implements IDetailedSpeechPhrase {\r\n private privDetailedSpeechPhrase: IDetailedSpeechPhrase;\r\n\r\n private constructor(json: string) {\r\n this.privDetailedSpeechPhrase = JSON.parse(json) as IDetailedSpeechPhrase;\r\n this.privDetailedSpeechPhrase.RecognitionStatus = RecognitionStatus[this.privDetailedSpeechPhrase.RecognitionStatus as unknown as keyof typeof RecognitionStatus];\r\n }\r\n\r\n public static fromJSON(json: string): DetailedSpeechPhrase {\r\n return new DetailedSpeechPhrase(json);\r\n }\r\n\r\n public getJsonWithCorrectedOffsets(baseOffset: number): string {\r\n if (!!this.privDetailedSpeechPhrase.NBest) {\r\n let firstWordOffset: number;\r\n for (const phrase of this.privDetailedSpeechPhrase.NBest) {\r\n if (!!phrase.Words && !!phrase.Words[0]) {\r\n firstWordOffset = phrase.Words[0].Offset;\r\n break;\r\n }\r\n }\r\n if (!!firstWordOffset && firstWordOffset < baseOffset) {\r\n const offset: number = baseOffset - firstWordOffset;\r\n for (const details of this.privDetailedSpeechPhrase.NBest) {\r\n if (!!details.Words) {\r\n for (const word of details.Words) {\r\n word.Offset += offset;\r\n }\r\n }\r\n if (!!details.DisplayWords) {\r\n for (const word of details.DisplayWords) {\r\n word.Offset += offset;\r\n }\r\n }\r\n }\r\n }\r\n }\r\n return JSON.stringify(this.privDetailedSpeechPhrase);\r\n }\r\n\r\n public get RecognitionStatus(): RecognitionStatus {\r\n return this.privDetailedSpeechPhrase.RecognitionStatus;\r\n }\r\n public get NBest(): IPhrase[] {\r\n return this.privDetailedSpeechPhrase.NBest;\r\n }\r\n public get Duration(): number {\r\n return this.privDetailedSpeechPhrase.Duration;\r\n }\r\n public get Offset(): number {\r\n return this.privDetailedSpeechPhrase.Offset;\r\n }\r\n public get Language(): string {\r\n return this.privDetailedSpeechPhrase.PrimaryLanguage === undefined ? undefined : this.privDetailedSpeechPhrase.PrimaryLanguage.Language;\r\n }\r\n public get LanguageDetectionConfidence(): string {\r\n return this.privDetailedSpeechPhrase.PrimaryLanguage === undefined ? undefined : this.privDetailedSpeechPhrase.PrimaryLanguage.Confidence;\r\n }\r\n public get Text(): string {\r\n if (!!this.privDetailedSpeechPhrase.NBest && this.privDetailedSpeechPhrase.NBest[0]) {\r\n return this.privDetailedSpeechPhrase.NBest[0].Display || this.privDetailedSpeechPhrase.NBest[0].DisplayText;\r\n }\r\n return this.privDetailedSpeechPhrase.DisplayText;\r\n }\r\n public get SpeakerId(): string {\r\n return this.privDetailedSpeechPhrase.SpeakerId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * @class SynthesisStatus\r\n * @private\r\n */\r\nexport enum SynthesisStatus {\r\n /**\r\n * The response contains valid audio data.\r\n * @member SynthesisStatus.Success\r\n */\r\n Success,\r\n\r\n /**\r\n * Indicates the end of audio data. No valid audio data is included in the message.\r\n * @member SynthesisStatus.SynthesisEnd\r\n */\r\n SynthesisEnd,\r\n\r\n /**\r\n * Indicates an error occurred during synthesis data processing.\r\n * @member SynthesisStatus.Error\r\n */\r\n Error,\r\n}\r\n\r\nexport enum RecognitionStatus {\r\n Success,\r\n NoMatch,\r\n InitialSilenceTimeout,\r\n BabbleTimeout,\r\n Error,\r\n EndOfDictation,\r\n TooManyRequests,\r\n BadRequest,\r\n Forbidden,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// response\r\n\r\nexport interface IIntentResponse {\r\n query?: string;\r\n topScoringIntent?: ISingleIntent;\r\n entities?: IIntentEntity[];\r\n}\r\n\r\nexport interface IIntentEntity {\r\n entity: string;\r\n type: string;\r\n startIndex: number;\r\n endIndex: number;\r\n score: number;\r\n}\r\n\r\nexport interface ISingleIntent {\r\n intent: string;\r\n score: number;\r\n}\r\n\r\nexport class IntentResponse implements IIntentResponse {\r\n private privIntentResponse: IIntentResponse;\r\n\r\n private constructor(json: string) {\r\n if (json === \"\") {\r\n this.privIntentResponse = {};\r\n } else {\r\n this.privIntentResponse = JSON.parse(json) as IIntentResponse;\r\n }\r\n }\r\n\r\n public static fromJSON(json: string): IntentResponse {\r\n return new IntentResponse(json);\r\n }\r\n\r\n public get query(): string {\r\n return this.privIntentResponse.query;\r\n }\r\n\r\n public get topScoringIntent(): ISingleIntent {\r\n return this.privIntentResponse.topScoringIntent;\r\n }\r\n\r\n public get entities(): IIntentEntity[] {\r\n return this.privIntentResponse.entities;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { RecognitionStatus } from \"../Exports\";\r\n\r\n// speech.phrase\r\nexport interface ISimpleSpeechPhrase {\r\n RecognitionStatus: RecognitionStatus;\r\n DisplayText: string;\r\n Offset?: number;\r\n Duration?: number;\r\n PrimaryLanguage?: IPrimaryLanguage;\r\n SpeakerId?: string;\r\n}\r\n\r\nexport interface IPrimaryLanguage {\r\n Language: string;\r\n Confidence: string;\r\n}\r\n\r\nexport class SimpleSpeechPhrase implements ISimpleSpeechPhrase {\r\n private privSimpleSpeechPhrase: ISimpleSpeechPhrase;\r\n\r\n private constructor(json: string) {\r\n this.privSimpleSpeechPhrase = JSON.parse(json) as ISimpleSpeechPhrase;\r\n this.privSimpleSpeechPhrase.RecognitionStatus = RecognitionStatus[this.privSimpleSpeechPhrase.RecognitionStatus as unknown as keyof typeof RecognitionStatus];\r\n }\r\n\r\n public static fromJSON(json: string): SimpleSpeechPhrase {\r\n return new SimpleSpeechPhrase(json);\r\n }\r\n\r\n public get RecognitionStatus(): RecognitionStatus {\r\n return this.privSimpleSpeechPhrase.RecognitionStatus;\r\n }\r\n\r\n public get DisplayText(): string {\r\n return this.privSimpleSpeechPhrase.DisplayText;\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privSimpleSpeechPhrase.Offset;\r\n }\r\n\r\n public get Duration(): number {\r\n return this.privSimpleSpeechPhrase.Duration;\r\n }\r\n\r\n public get Language(): string {\r\n return this.privSimpleSpeechPhrase.PrimaryLanguage === undefined ? undefined : this.privSimpleSpeechPhrase.PrimaryLanguage.Language;\r\n }\r\n\r\n public get LanguageDetectionConfidence(): string {\r\n return this.privSimpleSpeechPhrase.PrimaryLanguage === undefined ? undefined : this.privSimpleSpeechPhrase.PrimaryLanguage.Confidence;\r\n }\r\n\r\n public get SpeakerId(): string {\r\n return this.privSimpleSpeechPhrase.SpeakerId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// speech.endDetected\r\nexport interface ISpeechDetected {\r\n Offset: number;\r\n}\r\n\r\nexport class SpeechDetected implements ISpeechDetected {\r\n private privSpeechStartDetected: ISpeechDetected;\r\n\r\n private constructor(json: string) {\r\n this.privSpeechStartDetected = JSON.parse(json) as ISpeechDetected;\r\n }\r\n\r\n public static fromJSON(json: string): SpeechDetected {\r\n return new SpeechDetected(json);\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privSpeechStartDetected.Offset;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IPrimaryLanguage } from \"./SimpleSpeechPhrase\";\r\n\r\n// speech.hypothesis\r\nexport interface ISpeechHypothesis {\r\n Text: string;\r\n Offset: number;\r\n Duration: number;\r\n PrimaryLanguage?: IPrimaryLanguage;\r\n SpeakerId?: string;\r\n}\r\n\r\nexport class SpeechHypothesis implements ISpeechHypothesis {\r\n private privSpeechHypothesis: ISpeechHypothesis;\r\n\r\n private constructor(json: string) {\r\n this.privSpeechHypothesis = JSON.parse(json) as ISpeechHypothesis;\r\n }\r\n\r\n public static fromJSON(json: string): SpeechHypothesis {\r\n return new SpeechHypothesis(json);\r\n }\r\n\r\n public get Text(): string {\r\n return this.privSpeechHypothesis.Text;\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privSpeechHypothesis.Offset;\r\n }\r\n\r\n public get Duration(): number {\r\n return this.privSpeechHypothesis.Duration;\r\n }\r\n\r\n public get Language(): string {\r\n return this.privSpeechHypothesis.PrimaryLanguage === undefined ? undefined : this.privSpeechHypothesis.PrimaryLanguage.Language;\r\n }\r\n\r\n public get LanguageDetectionConfidence(): string {\r\n return this.privSpeechHypothesis.PrimaryLanguage === undefined ? undefined : this.privSpeechHypothesis.PrimaryLanguage.Confidence;\r\n }\r\n\r\n public get SpeakerId(): string {\r\n return this.privSpeechHypothesis.SpeakerId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// speech.keyword\r\nexport interface ISpeechKeyword {\r\n Status: string;\r\n Text: string;\r\n Offset: number;\r\n Duration: number;\r\n}\r\n\r\nexport class SpeechKeyword implements ISpeechKeyword {\r\n private privSpeechKeyword: ISpeechKeyword;\r\n\r\n private constructor(json: string) {\r\n this.privSpeechKeyword = JSON.parse(json) as ISpeechKeyword;\r\n }\r\n\r\n public static fromJSON(json: string): SpeechKeyword {\r\n return new SpeechKeyword(json);\r\n }\r\n\r\n public get Status(): string {\r\n return this.privSpeechKeyword.Status;\r\n }\r\n\r\n public get Text(): string {\r\n return this.privSpeechKeyword.Text;\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privSpeechKeyword.Offset;\r\n }\r\n\r\n public get Duration(): number {\r\n return this.privSpeechKeyword.Duration;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SpeechSynthesisBoundaryType } from \"../../sdk/Exports\";\r\n\r\nexport enum MetadataType {\r\n WordBoundary = \"WordBoundary\",\r\n Bookmark = \"Bookmark\",\r\n Viseme = \"Viseme\",\r\n SentenceBoundary = \"SentenceBoundary\",\r\n SessionEnd = \"SessionEnd\",\r\n}\r\n\r\nexport interface ISynthesisMetadata {\r\n Type: MetadataType;\r\n Data: {\r\n Offset: number;\r\n Duration: number;\r\n text: {\r\n Text: string;\r\n Length: number;\r\n BoundaryType: SpeechSynthesisBoundaryType;\r\n };\r\n Bookmark: string;\r\n VisemeId: number;\r\n AnimationChunk: string;\r\n IsLastAnimation: boolean;\r\n };\r\n}\r\n\r\n// audio.metadata\r\nexport interface ISynthesisAudioMetadata {\r\n Metadata: ISynthesisMetadata[];\r\n}\r\n\r\nexport class SynthesisAudioMetadata implements ISynthesisAudioMetadata {\r\n private privSynthesisAudioMetadata: ISynthesisAudioMetadata;\r\n\r\n private constructor(json: string) {\r\n this.privSynthesisAudioMetadata = JSON.parse(json) as ISynthesisAudioMetadata;\r\n }\r\n\r\n public static fromJSON(json: string): SynthesisAudioMetadata {\r\n return new SynthesisAudioMetadata(json);\r\n }\r\n\r\n public get Metadata(): ISynthesisMetadata[] {\r\n return this.privSynthesisAudioMetadata.Metadata;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ITranslations } from \"../Exports\";\r\nimport { TranslationStatus } from \"../TranslationStatus\";\r\n\r\n// translation.hypothesis\r\nexport interface ITranslationHypothesis {\r\n Duration: number;\r\n Offset: number;\r\n Text: string;\r\n Translation: ITranslations;\r\n}\r\n\r\nexport class TranslationHypothesis implements ITranslationHypothesis {\r\n private privTranslationHypothesis: ITranslationHypothesis;\r\n\r\n private constructor(json: string) {\r\n this.privTranslationHypothesis = JSON.parse(json) as ITranslationHypothesis;\r\n this.privTranslationHypothesis.Translation.TranslationStatus = TranslationStatus[this.privTranslationHypothesis.Translation.TranslationStatus as unknown as keyof typeof TranslationStatus];\r\n }\r\n\r\n public static fromJSON(json: string): TranslationHypothesis {\r\n return new TranslationHypothesis(json);\r\n }\r\n\r\n public get Duration(): number {\r\n return this.privTranslationHypothesis.Duration;\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privTranslationHypothesis.Offset;\r\n }\r\n\r\n public get Text(): string {\r\n return this.privTranslationHypothesis.Text;\r\n }\r\n\r\n public get Translation(): ITranslations {\r\n return this.privTranslationHypothesis.Translation;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"../../sdk/Contracts\";\r\nimport { ITranslations, RecognitionStatus } from \"../Exports\";\r\nimport { TranslationStatus } from \"../TranslationStatus\";\r\n\r\n// translation.phrase\r\nexport interface ITranslationPhrase {\r\n RecognitionStatus: RecognitionStatus;\r\n Offset: number;\r\n Duration: number;\r\n Translation?: ITranslations;\r\n Text: string;\r\n DisplayText?: string;\r\n}\r\n\r\nexport class TranslationPhrase implements ITranslationPhrase {\r\n private privTranslationPhrase: ITranslationPhrase;\r\n\r\n private constructor(phrase: ITranslationPhrase) {\r\n this.privTranslationPhrase = phrase;\r\n this.privTranslationPhrase.RecognitionStatus = RecognitionStatus[this.privTranslationPhrase.RecognitionStatus as unknown as keyof typeof RecognitionStatus];\r\n if (this.privTranslationPhrase.Translation !== undefined) {\r\n this.privTranslationPhrase.Translation.TranslationStatus = TranslationStatus[this.privTranslationPhrase.Translation.TranslationStatus as unknown as keyof typeof TranslationStatus];\r\n }\r\n }\r\n\r\n public static fromJSON(json: string): TranslationPhrase {\r\n return new TranslationPhrase(JSON.parse(json) as ITranslationPhrase);\r\n }\r\n\r\n public static fromTranslationResponse(translationResponse: { SpeechPhrase: ITranslationPhrase }): TranslationPhrase {\r\n Contracts.throwIfNullOrUndefined(translationResponse, \"translationResponse\");\r\n const phrase: ITranslationPhrase = translationResponse.SpeechPhrase;\r\n translationResponse.SpeechPhrase = undefined;\r\n phrase.Translation = (translationResponse as unknown as ITranslations);\r\n phrase.Text = phrase.DisplayText;\r\n return new TranslationPhrase(phrase);\r\n }\r\n\r\n public get RecognitionStatus(): RecognitionStatus {\r\n return this.privTranslationPhrase.RecognitionStatus;\r\n }\r\n\r\n public get Offset(): number {\r\n return this.privTranslationPhrase.Offset;\r\n }\r\n\r\n public get Duration(): number {\r\n return this.privTranslationPhrase.Duration;\r\n }\r\n\r\n public get Text(): string {\r\n return this.privTranslationPhrase.Text;\r\n }\r\n\r\n public get Translation(): ITranslations {\r\n return this.privTranslationPhrase.Translation;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SynthesisStatus } from \"../Exports\";\r\n\r\n// translation.synthesis.end\r\nexport interface ITranslationSynthesisEnd {\r\n SynthesisStatus?: SynthesisStatus;\r\n FailureReason?: string;\r\n Status?: SynthesisStatus;\r\n}\r\n\r\nexport class TranslationSynthesisEnd implements ITranslationSynthesisEnd {\r\n private privSynthesisEnd: ITranslationSynthesisEnd;\r\n\r\n private constructor(json: string) {\r\n this.privSynthesisEnd = JSON.parse(json) as ITranslationSynthesisEnd;\r\n if (!!this.privSynthesisEnd.SynthesisStatus) {\r\n this.privSynthesisEnd.SynthesisStatus = SynthesisStatus[this.privSynthesisEnd.SynthesisStatus as unknown as keyof typeof SynthesisStatus];\r\n }\r\n if (!!this.privSynthesisEnd.Status) {\r\n this.privSynthesisEnd.SynthesisStatus = SynthesisStatus[this.privSynthesisEnd.Status as unknown as keyof typeof SynthesisStatus];\r\n }\r\n }\r\n\r\n public static fromJSON(json: string): TranslationSynthesisEnd {\r\n return new TranslationSynthesisEnd(json);\r\n }\r\n\r\n public get SynthesisStatus(): SynthesisStatus {\r\n return this.privSynthesisEnd.SynthesisStatus;\r\n }\r\n\r\n public get FailureReason(): string {\r\n return this.privSynthesisEnd.FailureReason;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport interface ITurnStatusResponsePayload {\r\n interactionId: string;\r\n conversationId: string;\r\n statusCode: any;\r\n}\r\n\r\nexport class TurnStatusResponsePayload implements ITurnStatusResponsePayload {\r\n private privMessageStatusResponse: ITurnStatusResponsePayload;\r\n\r\n private constructor(json: string) {\r\n this.privMessageStatusResponse = JSON.parse(json) as ITurnStatusResponsePayload;\r\n }\r\n\r\n public static fromJSON(json: string): TurnStatusResponsePayload {\r\n return new TurnStatusResponsePayload(json);\r\n }\r\n\r\n public get interactionId(): string {\r\n return this.privMessageStatusResponse.interactionId;\r\n }\r\n\r\n public get conversationId(): string {\r\n return this.privMessageStatusResponse.conversationId;\r\n }\r\n\r\n public get statusCode(): any {\r\n // Payloads may contain a limited set of textual representations or a numeric status\r\n // code. The textual values are here converted into numeric ones.\r\n switch (this.privMessageStatusResponse.statusCode) {\r\n case \"Success\":\r\n return 200;\r\n case \"Failed\":\r\n return 400;\r\n case \"TimedOut\":\r\n return 429;\r\n default:\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\r\n return this.privMessageStatusResponse.statusCode;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ReplayableAudioNode } from \"../common.browser/Exports\";\r\nimport { ConnectionOpenResponse } from \"../common/ConnectionOpenResponse\";\r\nimport {\r\n ArgumentNullError,\r\n ConnectionClosedEvent,\r\n ConnectionEvent,\r\n ConnectionState,\r\n createNoDashGuid,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IConnection,\r\n IDisposable,\r\n IStreamChunk,\r\n MessageType,\r\n ServiceEvent,\r\n Timeout\r\n} from \"../common/Exports\";\r\nimport { AudioStreamFormatImpl } from \"../sdk/Audio/AudioStreamFormat\";\r\nimport { SpeakerRecognitionModel } from \"../sdk/SpeakerRecognitionModel\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyId,\r\n RecognitionEventArgs,\r\n Recognizer,\r\n SessionEventArgs,\r\n SpeakerRecognitionResult,\r\n SpeechRecognitionResult,\r\n} from \"../sdk/Exports\";\r\nimport { Callback } from \"../sdk/Transcription/IConversation\";\r\nimport {\r\n AgentConfig,\r\n DynamicGrammarBuilder,\r\n ISpeechConfigAudioDevice,\r\n RecognitionMode,\r\n RequestSession,\r\n SpeechContext,\r\n SpeechDetected,\r\n type\r\n} from \"./Exports\";\r\nimport {\r\n AuthInfo,\r\n IAuthentication,\r\n} from \"./IAuthentication\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal\";\r\n\r\nexport abstract class ServiceRecognizerBase implements IDisposable {\r\n private privAuthentication: IAuthentication;\r\n private privConnectionFactory: IConnectionFactory;\r\n\r\n // A promise for a configured connection.\r\n // Do not consume directly, call fetchConnection instead.\r\n private privConnectionConfigurationPromise: Promise = undefined;\r\n\r\n // A promise for a connection, but one that has not had the speech context sent yet.\r\n // Do not consume directly, call fetchConnection instead.\r\n private privConnectionPromise: Promise = undefined;\r\n private privAuthFetchEventId: string;\r\n private privIsDisposed: boolean;\r\n private privMustReportEndOfStream: boolean;\r\n private privConnectionEvents: EventSource;\r\n private privServiceEvents: EventSource;\r\n private privDynamicGrammar: DynamicGrammarBuilder;\r\n private privAgentConfig: AgentConfig;\r\n private privServiceHasSentMessage: boolean;\r\n private privActivityTemplate: string;\r\n private privSetTimeout: (cb: () => void, delay: number) => number = setTimeout;\r\n private privAudioSource: IAudioSource;\r\n private privIsLiveAudio: boolean = false;\r\n protected privSpeechContext: SpeechContext;\r\n protected privRequestSession: RequestSession;\r\n protected privConnectionId: string;\r\n protected privRecognizerConfig: RecognizerConfig;\r\n protected privRecognizer: Recognizer;\r\n protected privSuccessCallback: (e: SpeechRecognitionResult) => void;\r\n protected privErrorCallback: (e: string) => void;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n recognizer: Recognizer) {\r\n\r\n if (!authentication) {\r\n throw new ArgumentNullError(\"authentication\");\r\n }\r\n\r\n if (!connectionFactory) {\r\n throw new ArgumentNullError(\"connectionFactory\");\r\n }\r\n\r\n if (!audioSource) {\r\n throw new ArgumentNullError(\"audioSource\");\r\n }\r\n\r\n if (!recognizerConfig) {\r\n throw new ArgumentNullError(\"recognizerConfig\");\r\n }\r\n\r\n this.privMustReportEndOfStream = false;\r\n this.privAuthentication = authentication;\r\n this.privConnectionFactory = connectionFactory;\r\n this.privAudioSource = audioSource;\r\n this.privRecognizerConfig = recognizerConfig;\r\n this.privIsDisposed = false;\r\n this.privRecognizer = recognizer;\r\n this.privRequestSession = new RequestSession(this.privAudioSource.id());\r\n this.privConnectionEvents = new EventSource();\r\n this.privServiceEvents = new EventSource();\r\n this.privDynamicGrammar = new DynamicGrammarBuilder();\r\n this.privSpeechContext = new SpeechContext(this.privDynamicGrammar);\r\n this.privAgentConfig = new AgentConfig();\r\n if (typeof (Blob) !== \"undefined\" && typeof (Worker) !== \"undefined\") {\r\n this.privSetTimeout = Timeout.setTimeout;\r\n }\r\n\r\n this.connectionEvents.attach((connectionEvent: ConnectionEvent): void => {\r\n if (connectionEvent.name === \"ConnectionClosedEvent\") {\r\n const connectionClosedEvent = connectionEvent as ConnectionClosedEvent;\r\n if (connectionClosedEvent.statusCode === 1003 ||\r\n connectionClosedEvent.statusCode === 1007 ||\r\n connectionClosedEvent.statusCode === 1002 ||\r\n connectionClosedEvent.statusCode === 4000 ||\r\n this.privRequestSession.numConnectionAttempts > this.privRecognizerConfig.maxRetryCount\r\n ) {\r\n void this.cancelRecognitionLocal(CancellationReason.Error,\r\n connectionClosedEvent.statusCode === 1007 ? CancellationErrorCode.BadRequestParameters : CancellationErrorCode.ConnectionFailure,\r\n `${connectionClosedEvent.reason} websocket error code: ${connectionClosedEvent.statusCode}`);\r\n }\r\n }\r\n });\r\n }\r\n\r\n public get audioSource(): IAudioSource {\r\n return this.privAudioSource;\r\n }\r\n\r\n public get speechContext(): SpeechContext {\r\n return this.privSpeechContext;\r\n }\r\n\r\n public get dynamicGrammar(): DynamicGrammarBuilder {\r\n return this.privDynamicGrammar;\r\n }\r\n\r\n public get agentConfig(): AgentConfig {\r\n return this.privAgentConfig;\r\n }\r\n\r\n public set conversationTranslatorToken(token: string) {\r\n this.privRecognizerConfig.parameters.setProperty(PropertyId.ConversationTranslator_Token, token);\r\n }\r\n\r\n public set voiceProfileType(type: string) {\r\n this.privRecognizerConfig.parameters.setProperty(PropertyId.SpeechServiceConnection_SpeakerIdMode, type);\r\n }\r\n\r\n public set authentication(auth: IAuthentication) {\r\n this.privAuthentication = this.authentication;\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public async dispose(reason?: string): Promise {\r\n this.privIsDisposed = true;\r\n if (this.privConnectionConfigurationPromise !== undefined) {\r\n try {\r\n const connection: IConnection = await this.privConnectionConfigurationPromise;\r\n await connection.dispose(reason);\r\n } catch (error) {\r\n // The connection is in a bad state. But we're trying to kill it, so...\r\n return;\r\n }\r\n }\r\n }\r\n\r\n public get connectionEvents(): EventSource {\r\n return this.privConnectionEvents;\r\n }\r\n\r\n public get serviceEvents(): EventSource {\r\n return this.privServiceEvents;\r\n }\r\n\r\n public get recognitionMode(): RecognitionMode {\r\n return this.privRecognizerConfig.recognitionMode;\r\n }\r\n\r\n protected recognizeOverride: (recoMode: RecognitionMode, sc: (e: SpeechRecognitionResult) => void, ec: (e: string) => void) => Promise = undefined;\r\n\r\n public recognizeSpeaker: (model: SpeakerRecognitionModel) => Promise = undefined;\r\n\r\n public async recognize(\r\n recoMode: RecognitionMode,\r\n successCallback: (e: SpeechRecognitionResult) => void,\r\n errorCallBack: (e: string) => void,\r\n ): Promise {\r\n\r\n if (this.recognizeOverride !== undefined) {\r\n await this.recognizeOverride(recoMode, successCallback, errorCallBack);\r\n return;\r\n }\r\n // Clear the existing configuration promise to force a re-transmission of config and context.\r\n this.privConnectionConfigurationPromise = undefined;\r\n this.privRecognizerConfig.recognitionMode = recoMode;\r\n this.setSpeechSegmentationTimeout();\r\n\r\n this.privSuccessCallback = successCallback;\r\n this.privErrorCallback = errorCallBack;\r\n\r\n this.privRequestSession.startNewRecognition();\r\n this.privRequestSession.listenForServiceTelemetry(this.privAudioSource.events);\r\n\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n let audioNode: ReplayableAudioNode;\r\n\r\n try {\r\n const audioStreamNode: IAudioStreamNode = await this.audioSource.attach(this.privRequestSession.audioNodeId);\r\n const format: AudioStreamFormatImpl = await this.audioSource.format;\r\n const deviceInfo: ISpeechConfigAudioDevice = await this.audioSource.deviceInfo;\r\n this.privIsLiveAudio = deviceInfo.type && deviceInfo.type === type.Microphones;\r\n\r\n audioNode = new ReplayableAudioNode(audioStreamNode, format.avgBytesPerSec);\r\n await this.privRequestSession.onAudioSourceAttachCompleted(audioNode, false);\r\n this.privRecognizerConfig.SpeechServiceConfig.Context.audio = { source: deviceInfo };\r\n\r\n } catch (error) {\r\n await this.privRequestSession.onStopRecognizing();\r\n throw error;\r\n }\r\n\r\n try {\r\n await conPromise;\r\n } catch (error) {\r\n await this.cancelRecognitionLocal(CancellationReason.Error, CancellationErrorCode.ConnectionFailure, error as string);\r\n return;\r\n }\r\n\r\n const sessionStartEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.sessionStarted) {\r\n this.privRecognizer.sessionStarted(this.privRecognizer, sessionStartEventArgs);\r\n }\r\n\r\n void this.receiveMessage();\r\n const audioSendPromise = this.sendAudio(audioNode);\r\n\r\n audioSendPromise.catch(async (error: string): Promise => {\r\n await this.cancelRecognitionLocal(CancellationReason.Error, CancellationErrorCode.RuntimeError, error);\r\n });\r\n\r\n return;\r\n }\r\n\r\n public async stopRecognizing(): Promise {\r\n if (this.privRequestSession.isRecognizing) {\r\n try {\r\n await this.audioSource.turnOff();\r\n await this.sendFinalAudio();\r\n await this.privRequestSession.onStopRecognizing();\r\n await this.privRequestSession.turnCompletionPromise;\r\n } finally {\r\n await this.privRequestSession.dispose();\r\n }\r\n }\r\n return;\r\n }\r\n\r\n public async connect(): Promise {\r\n await this.connectImpl();\r\n return Promise.resolve();\r\n }\r\n\r\n public connectAsync(cb?: Callback, err?: Callback): void {\r\n this.connectImpl().then((): void => {\r\n try {\r\n if (!!cb) {\r\n cb();\r\n }\r\n } catch (e) {\r\n if (!!err) {\r\n err(e);\r\n }\r\n }\r\n }, (reason: any): void => {\r\n try {\r\n if (!!err) {\r\n err(reason);\r\n }\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n }\r\n });\r\n }\r\n\r\n protected disconnectOverride: () => Promise = undefined;\r\n\r\n public async disconnect(): Promise {\r\n await this.cancelRecognitionLocal(CancellationReason.Error,\r\n CancellationErrorCode.NoError,\r\n \"Disconnecting\");\r\n\r\n if (this.disconnectOverride !== undefined) {\r\n await this.disconnectOverride();\r\n }\r\n\r\n if (this.privConnectionPromise !== undefined) {\r\n try {\r\n await (await this.privConnectionPromise).dispose();\r\n } catch (error) {\r\n\r\n }\r\n }\r\n this.privConnectionPromise = undefined;\r\n }\r\n\r\n // Called when telemetry data is sent to the service.\r\n // Used for testing Telemetry capture.\r\n public static telemetryData: (json: string) => void;\r\n public static telemetryDataEnabled: boolean = true;\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n public sendMessage(message: string): Promise {\r\n return;\r\n }\r\n\r\n public async sendNetworkMessage(path: string, payload: string | ArrayBuffer): Promise {\r\n const type: MessageType = typeof payload === \"string\" ? MessageType.Text : MessageType.Binary;\r\n const contentType: string = typeof payload === \"string\" ? \"application/json\" : \"\";\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n return connection.send(new SpeechConnectionMessage(type, path, this.privRequestSession.requestId, contentType, payload));\r\n }\r\n\r\n public set activityTemplate(messagePayload: string) {\r\n this.privActivityTemplate = messagePayload;\r\n }\r\n\r\n public get activityTemplate(): string {\r\n return this.privActivityTemplate;\r\n }\r\n\r\n protected abstract processTypeSpecificMessages(\r\n connectionMessage: SpeechConnectionMessage,\r\n successCallback?: (e: SpeechRecognitionResult) => void,\r\n errorCallBack?: (e: string) => void): Promise;\r\n\r\n protected async sendTelemetryData(): Promise {\r\n const telemetryData = this.privRequestSession.getTelemetry();\r\n if (ServiceRecognizerBase.telemetryDataEnabled !== true ||\r\n this.privIsDisposed ||\r\n null === telemetryData) {\r\n return;\r\n }\r\n\r\n if (!!ServiceRecognizerBase.telemetryData) {\r\n try {\r\n ServiceRecognizerBase.telemetryData(telemetryData);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n await connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"telemetry\",\r\n this.privRequestSession.requestId,\r\n \"application/json\",\r\n telemetryData));\r\n }\r\n\r\n // Cancels recognition.\r\n protected abstract cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void;\r\n\r\n // Cancels recognition.\r\n protected async cancelRecognitionLocal(\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): Promise {\r\n\r\n if (!!this.privRequestSession.isRecognizing) {\r\n await this.privRequestSession.onStopRecognizing();\r\n\r\n this.cancelRecognition(\r\n this.privRequestSession.sessionId,\r\n this.privRequestSession.requestId,\r\n cancellationReason,\r\n errorCode,\r\n error);\r\n }\r\n }\r\n\r\n protected receiveMessageOverride: () => Promise = undefined;\r\n\r\n protected async receiveMessage(): Promise {\r\n try {\r\n if (this.privIsDisposed) {\r\n // We're done.\r\n return;\r\n }\r\n\r\n let connection = await this.fetchConnection();\r\n const message = await connection.read();\r\n\r\n if (this.receiveMessageOverride !== undefined) {\r\n return this.receiveMessageOverride();\r\n }\r\n\r\n // indicates we are draining the queue and it came with no message;\r\n if (!message) {\r\n if (!this.privRequestSession.isRecognizing) {\r\n return;\r\n } else {\r\n return this.receiveMessage();\r\n }\r\n }\r\n\r\n this.privServiceHasSentMessage = true;\r\n const connectionMessage = SpeechConnectionMessage.fromConnectionMessage(message);\r\n\r\n if (connectionMessage.requestId.toLowerCase() === this.privRequestSession.requestId.toLowerCase()) {\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"turn.start\":\r\n this.privMustReportEndOfStream = true;\r\n this.privRequestSession.onServiceTurnStartResponse();\r\n break;\r\n\r\n case \"speech.startdetected\":\r\n const speechStartDetected: SpeechDetected = SpeechDetected.fromJSON(connectionMessage.textBody);\r\n const speechStartEventArgs = new RecognitionEventArgs(speechStartDetected.Offset, this.privRequestSession.sessionId);\r\n if (!!this.privRecognizer.speechStartDetected) {\r\n this.privRecognizer.speechStartDetected(this.privRecognizer, speechStartEventArgs);\r\n }\r\n break;\r\n\r\n case \"speech.enddetected\":\r\n let json: string;\r\n if (connectionMessage.textBody.length > 0) {\r\n json = connectionMessage.textBody;\r\n } else {\r\n // If the request was empty, the JSON returned is empty.\r\n json = \"{ Offset: 0 }\";\r\n }\r\n const speechStopDetected: SpeechDetected = SpeechDetected.fromJSON(json);\r\n const speechStopEventArgs = new RecognitionEventArgs(speechStopDetected.Offset + this.privRequestSession.currentTurnAudioOffset, this.privRequestSession.sessionId);\r\n if (!!this.privRecognizer.speechEndDetected) {\r\n this.privRecognizer.speechEndDetected(this.privRecognizer, speechStopEventArgs);\r\n }\r\n break;\r\n\r\n case \"turn.end\":\r\n await this.sendTelemetryData();\r\n if (this.privRequestSession.isSpeechEnded && this.privMustReportEndOfStream) {\r\n this.privMustReportEndOfStream = false;\r\n await this.cancelRecognitionLocal(CancellationReason.EndOfStream, CancellationErrorCode.NoError, undefined);\r\n }\r\n const sessionStopEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n await this.privRequestSession.onServiceTurnEndResponse(this.privRecognizerConfig.isContinuousRecognition);\r\n if (!this.privRecognizerConfig.isContinuousRecognition || this.privRequestSession.isSpeechEnded || !this.privRequestSession.isRecognizing) {\r\n if (!!this.privRecognizer.sessionStopped) {\r\n this.privRecognizer.sessionStopped(this.privRecognizer, sessionStopEventArgs);\r\n }\r\n return;\r\n } else {\r\n connection = await this.fetchConnection();\r\n await this.sendPrePayloadJSON(connection);\r\n }\r\n break;\r\n\r\n default:\r\n if (!await this.processTypeSpecificMessages(connectionMessage)) {\r\n // here are some messages that the derived class has not processed, dispatch them to connect class\r\n if (!!this.privServiceEvents) {\r\n this.serviceEvents.onEvent(new ServiceEvent(connectionMessage.path.toLowerCase(), connectionMessage.textBody));\r\n }\r\n }\r\n }\r\n }\r\n return this.receiveMessage();\r\n } catch (error) {\r\n return null;\r\n }\r\n }\r\n\r\n protected setSpeechSegmentationTimeout(): void {\r\n return;\r\n }\r\n\r\n protected sendSpeechContext(connection: IConnection, generateNewRequestId: boolean): Promise {\r\n const speechContextJson = this.speechContext.toJSON();\r\n if (generateNewRequestId) {\r\n this.privRequestSession.onSpeechContext();\r\n }\r\n\r\n if (speechContextJson) {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speech.context\",\r\n this.privRequestSession.requestId,\r\n \"application/json\",\r\n speechContextJson));\r\n }\r\n return;\r\n }\r\n\r\n protected sendPrePayloadJSONOverride: (connection: IConnection) => Promise = undefined;\r\n\r\n protected noOp(): Promise {\r\n // operation not supported\r\n return;\r\n }\r\n\r\n // Encapsulated for derived service recognizers that need to send additional JSON\r\n protected async sendPrePayloadJSON(connection: IConnection, generateNewRequestId: boolean = true): Promise {\r\n if (this.sendPrePayloadJSONOverride !== undefined) {\r\n return this.sendPrePayloadJSONOverride(connection);\r\n }\r\n\r\n await this.sendSpeechContext(connection, generateNewRequestId);\r\n await this.sendWaveHeader(connection);\r\n return;\r\n }\r\n\r\n protected async sendWaveHeader(connection: IConnection): Promise {\r\n const format: AudioStreamFormatImpl = await this.audioSource.format;\r\n // this.writeBufferToConsole(format.header);\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Binary,\r\n \"audio\",\r\n this.privRequestSession.requestId,\r\n \"audio/x-wav\",\r\n format.header\r\n ));\r\n }\r\n\r\n protected postConnectImplOverride: (connection: Promise) => Promise = undefined;\r\n\r\n // Establishes a websocket connection to the end point.\r\n protected connectImpl(): Promise {\r\n if (this.privConnectionPromise !== undefined) {\r\n return this.privConnectionPromise.then((connection: IConnection): Promise => {\r\n if (connection.state() === ConnectionState.Disconnected) {\r\n this.privConnectionId = null;\r\n this.privConnectionPromise = undefined;\r\n this.privServiceHasSentMessage = false;\r\n return this.connectImpl();\r\n }\r\n return this.privConnectionPromise;\r\n }, (): Promise => {\r\n this.privConnectionId = null;\r\n this.privConnectionPromise = undefined;\r\n this.privServiceHasSentMessage = false;\r\n return this.connectImpl();\r\n });\r\n }\r\n\r\n this.privConnectionPromise = this.retryableConnect();\r\n\r\n // Attach an empty handler to allow the promise to run in the background while\r\n // other startup events happen. It'll eventually be awaited on.\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.privConnectionPromise.catch((): void => { });\r\n\r\n if (this.postConnectImplOverride !== undefined) {\r\n return this.postConnectImplOverride(this.privConnectionPromise);\r\n }\r\n\r\n return this.privConnectionPromise;\r\n }\r\n\r\n protected configConnectionOverride: (connection: IConnection) => Promise = undefined;\r\n protected handleSpeechPhraseMessage: (textBody: string) => Promise = undefined;\r\n protected handleSpeechHypothesisMessage: (textBody: string) => void = undefined;\r\n\r\n protected sendSpeechServiceConfig(connection: IConnection, requestSession: RequestSession, SpeechServiceConfigJson: string): Promise {\r\n requestSession.onSpeechContext();\r\n // filter out anything that is not required for the service to work.\r\n if (ServiceRecognizerBase.telemetryDataEnabled !== true) {\r\n const withTelemetry: { context: { system: string } } = JSON.parse(SpeechServiceConfigJson) as { context: { system: string } };\r\n\r\n const replacement: any = {\r\n context: {\r\n system: withTelemetry.context.system,\r\n },\r\n };\r\n\r\n SpeechServiceConfigJson = JSON.stringify(replacement);\r\n }\r\n\r\n if (this.privRecognizerConfig.parameters.getProperty(\"f0f5debc-f8c9-4892-ac4b-90a7ab359fd2\", \"false\").toLowerCase() === \"true\") {\r\n const json: { context: { DisableReferenceChannel: string; MicSpec: string } } = JSON.parse(SpeechServiceConfigJson) as { context: { DisableReferenceChannel: string; MicSpec: string } };\r\n json.context.DisableReferenceChannel = \"True\";\r\n json.context.MicSpec = \"1_0_0\";\r\n SpeechServiceConfigJson = JSON.stringify(json);\r\n }\r\n\r\n if (SpeechServiceConfigJson) {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speech.config\",\r\n requestSession.requestId,\r\n \"application/json\",\r\n SpeechServiceConfigJson));\r\n }\r\n\r\n return;\r\n }\r\n\r\n protected async fetchConnection(): Promise {\r\n if (this.privConnectionConfigurationPromise !== undefined) {\r\n return this.privConnectionConfigurationPromise.then((connection: IConnection): Promise => {\r\n if (connection.state() === ConnectionState.Disconnected) {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigurationPromise = undefined;\r\n this.privServiceHasSentMessage = false;\r\n return this.fetchConnection();\r\n }\r\n return this.privConnectionConfigurationPromise;\r\n }, (): Promise => {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigurationPromise = undefined;\r\n this.privServiceHasSentMessage = false;\r\n return this.fetchConnection();\r\n });\r\n }\r\n\r\n this.privConnectionConfigurationPromise = this.configureConnection();\r\n return await this.privConnectionConfigurationPromise;\r\n }\r\n\r\n protected async sendAudio(audioStreamNode: IAudioStreamNode): Promise {\r\n const audioFormat: AudioStreamFormatImpl = await this.audioSource.format;\r\n\r\n // The time we last sent data to the service.\r\n let nextSendTime: number = Date.now();\r\n\r\n // Max amount to send before we start to throttle\r\n const fastLaneSizeMs: string = this.privRecognizerConfig.parameters.getProperty(\"SPEECH-TransmitLengthBeforThrottleMs\", \"5000\");\r\n const maxSendUnthrottledBytes: number = audioFormat.avgBytesPerSec / 1000 * parseInt(fastLaneSizeMs, 10);\r\n const startRecogNumber: number = this.privRequestSession.recogNumber;\r\n\r\n const readAndUploadCycle = async (): Promise => {\r\n // If speech is done, stop sending audio.\r\n if (!this.privIsDisposed &&\r\n !this.privRequestSession.isSpeechEnded &&\r\n this.privRequestSession.isRecognizing &&\r\n this.privRequestSession.recogNumber === startRecogNumber) {\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n const audioStreamChunk: IStreamChunk = await audioStreamNode.read();\r\n // we have a new audio chunk to upload.\r\n if (this.privRequestSession.isSpeechEnded) {\r\n // If service already recognized audio end then don't send any more audio\r\n return;\r\n }\r\n\r\n let payload: ArrayBuffer;\r\n let sendDelay: number;\r\n\r\n if (!audioStreamChunk || audioStreamChunk.isEnd) {\r\n payload = null;\r\n sendDelay = 0;\r\n } else {\r\n payload = audioStreamChunk.buffer;\r\n\r\n this.privRequestSession.onAudioSent(payload.byteLength);\r\n\r\n if (maxSendUnthrottledBytes >= this.privRequestSession.bytesSent) {\r\n sendDelay = 0;\r\n } else {\r\n sendDelay = Math.max(0, nextSendTime - Date.now());\r\n }\r\n }\r\n\r\n if (0 !== sendDelay) {\r\n await this.delay(sendDelay);\r\n }\r\n\r\n if (payload !== null) {\r\n nextSendTime = Date.now() + (payload.byteLength * 1000 / (audioFormat.avgBytesPerSec * 2));\r\n }\r\n\r\n // Are we still alive?\r\n if (!this.privIsDisposed &&\r\n !this.privRequestSession.isSpeechEnded &&\r\n this.privRequestSession.isRecognizing &&\r\n this.privRequestSession.recogNumber === startRecogNumber) {\r\n connection.send(\r\n new SpeechConnectionMessage(MessageType.Binary, \"audio\", this.privRequestSession.requestId, null, payload)\r\n ).catch((): void => {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.privRequestSession.onServiceTurnEndResponse(this.privRecognizerConfig.isContinuousRecognition).catch((): void => { });\r\n });\r\n\r\n if (!audioStreamChunk?.isEnd) {\r\n // this.writeBufferToConsole(payload);\r\n // Regardless of success or failure, schedule the next upload.\r\n // If the underlying connection was broken, the next cycle will\r\n // get a new connection and re-transmit missing audio automatically.\r\n return readAndUploadCycle();\r\n } else {\r\n // the audio stream has been closed, no need to schedule next\r\n // read-upload cycle.\r\n if (!this.privIsLiveAudio) {\r\n this.privRequestSession.onSpeechEnded();\r\n }\r\n }\r\n }\r\n }\r\n };\r\n\r\n return readAndUploadCycle();\r\n }\r\n\r\n private async retryableConnect(): Promise {\r\n let isUnAuthorized: boolean = false;\r\n\r\n this.privAuthFetchEventId = createNoDashGuid();\r\n const sessionId: string = this.privRequestSession.sessionId;\r\n this.privConnectionId = (sessionId !== undefined) ? sessionId : createNoDashGuid();\r\n\r\n this.privRequestSession.onPreConnectionStart(this.privAuthFetchEventId, this.privConnectionId);\r\n let lastStatusCode: number = 0;\r\n let lastReason: string = \"\";\r\n\r\n while (this.privRequestSession.numConnectionAttempts <= this.privRecognizerConfig.maxRetryCount) {\r\n\r\n // Get the auth information for the connection. This is a bit of overkill for the current API surface, but leaving the plumbing in place to be able to raise a developer-customer\r\n // facing event when a connection fails to let them try and provide new auth information.\r\n const authPromise = isUnAuthorized ? this.privAuthentication.fetchOnExpiry(this.privAuthFetchEventId) : this.privAuthentication.fetch(this.privAuthFetchEventId);\r\n const auth: AuthInfo = await authPromise;\r\n\r\n await this.privRequestSession.onAuthCompleted(false);\r\n\r\n // Create the connection\r\n const connection: IConnection = this.privConnectionFactory.create(this.privRecognizerConfig, auth, this.privConnectionId);\r\n // Attach the telemetry handlers.\r\n this.privRequestSession.listenForServiceTelemetry(connection.events);\r\n\r\n // Attach to the underlying event. No need to hold onto the detach pointers as in the event the connection goes away,\r\n // it'll stop sending events.\r\n connection.events.attach((event: ConnectionEvent): void => {\r\n this.connectionEvents.onEvent(event);\r\n });\r\n\r\n const response: ConnectionOpenResponse = await connection.open();\r\n // 200 == everything is fine.\r\n if (response.statusCode === 200) {\r\n await this.privRequestSession.onConnectionEstablishCompleted(response.statusCode);\r\n return Promise.resolve(connection);\r\n } else if (response.statusCode === 1006) {\r\n isUnAuthorized = true;\r\n }\r\n\r\n lastStatusCode = response.statusCode;\r\n lastReason = response.reason;\r\n\r\n this.privRequestSession.onRetryConnection();\r\n }\r\n\r\n await this.privRequestSession.onConnectionEstablishCompleted(lastStatusCode, lastReason);\r\n return Promise.reject(`Unable to contact server. StatusCode: ${lastStatusCode}, ${this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint)} Reason: ${lastReason}`);\r\n }\r\n\r\n private delay(delayMs: number): Promise {\r\n return new Promise((resolve: () => void): number => this.privSetTimeout(resolve, delayMs));\r\n }\r\n\r\n private writeBufferToConsole(buffer: ArrayBuffer): void {\r\n let out: string = \"Buffer Size: \";\r\n if (null === buffer) {\r\n out += \"null\";\r\n } else {\r\n const readView: Uint8Array = new Uint8Array(buffer);\r\n out += `${buffer.byteLength}\\r\\n`;\r\n for (let i: number = 0; i < buffer.byteLength; i++) {\r\n out += readView[i].toString(16).padStart(2, \"0\") + \" \";\r\n if (((i + 1) % 16) === 0) {\r\n // eslint-disable-next-line no-console\r\n console.info(out);\r\n out = \"\";\r\n }\r\n }\r\n }\r\n // eslint-disable-next-line no-console\r\n console.info(out);\r\n }\r\n\r\n private async sendFinalAudio(): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n await connection.send(new SpeechConnectionMessage(MessageType.Binary, \"audio\", this.privRequestSession.requestId, null, null));\r\n return;\r\n }\r\n\r\n // Takes an established websocket connection to the endpoint and sends speech configuration information.\r\n private async configureConnection(): Promise {\r\n const connection: IConnection = await this.connectImpl();\r\n if (this.configConnectionOverride !== undefined) {\r\n return this.configConnectionOverride(connection);\r\n }\r\n await this.sendSpeechServiceConfig(connection, this.privRequestSession, this.privRecognizerConfig.SpeechServiceConfig.serialize());\r\n await this.sendPrePayloadJSON(connection, false);\r\n return connection;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n AudioSourceErrorEvent,\r\n AudioStreamNodeAttachedEvent,\r\n AudioStreamNodeAttachingEvent,\r\n AudioStreamNodeDetachedEvent,\r\n AudioStreamNodeErrorEvent,\r\n ConnectionEstablishedEvent,\r\n ConnectionEstablishErrorEvent,\r\n ConnectionMessageReceivedEvent,\r\n ConnectionStartEvent,\r\n IEventListener,\r\n IStringDictionary,\r\n PlatformEvent,\r\n} from \"../common/Exports\";\r\nimport { ConnectingToServiceEvent, RecognitionTriggeredEvent } from \"./RecognitionEvents\";\r\n\r\nexport interface ITelemetry {\r\n Metrics: IMetric[];\r\n ReceivedMessages: IStringDictionary;\r\n}\r\n\r\nexport interface IMetric {\r\n End?: string;\r\n Error?: string;\r\n Id?: string;\r\n Name?: string;\r\n Start?: string;\r\n PhraseLatencyMs?: number[];\r\n FirstHypothesisLatencyMs?: number[];\r\n}\r\n\r\nexport class ServiceTelemetryListener implements IEventListener {\r\n private privIsDisposed: boolean = false;\r\n\r\n private privRequestId: string;\r\n private privAudioSourceId: string;\r\n private privAudioNodeId: string;\r\n\r\n private privListeningTriggerMetric: IMetric = null;\r\n private privMicMetric: IMetric = null;\r\n private privConnectionEstablishMetric: IMetric = null;\r\n\r\n private privMicStartTime: string;\r\n\r\n private privConnectionId: string;\r\n private privConnectionStartTime: string;\r\n\r\n private privReceivedMessages: IStringDictionary;\r\n private privPhraseLatencies: number[];\r\n private privHypothesisLatencies: number[];\r\n\r\n public constructor(requestId: string, audioSourceId: string, audioNodeId: string) {\r\n this.privRequestId = requestId;\r\n this.privAudioSourceId = audioSourceId;\r\n this.privAudioNodeId = audioNodeId;\r\n\r\n this.privReceivedMessages = {};\r\n this.privPhraseLatencies = [];\r\n this.privHypothesisLatencies = [];\r\n }\r\n\r\n public phraseReceived(audioReceivedTime: number): void {\r\n if (audioReceivedTime > 0) { // 0 indicates the time is unknown. Drop it.\r\n this.privPhraseLatencies.push(Date.now() - audioReceivedTime);\r\n }\r\n }\r\n\r\n public hypothesisReceived(audioReceivedTime: number): void {\r\n if (audioReceivedTime > 0) { // 0 indicates the time is unknown. Drop it.\r\n this.privHypothesisLatencies.push(Date.now() - audioReceivedTime);\r\n }\r\n }\r\n\r\n public onEvent(e: PlatformEvent): void {\r\n if (this.privIsDisposed) {\r\n return;\r\n }\r\n\r\n if (e instanceof RecognitionTriggeredEvent && e.requestId === this.privRequestId) {\r\n this.privListeningTriggerMetric = {\r\n End: e.eventTime,\r\n Name: \"ListeningTrigger\",\r\n Start: e.eventTime,\r\n };\r\n }\r\n\r\n if (e instanceof AudioStreamNodeAttachingEvent && e.audioSourceId === this.privAudioSourceId && e.audioNodeId === this.privAudioNodeId) {\r\n this.privMicStartTime = e.eventTime;\r\n }\r\n\r\n if (e instanceof AudioStreamNodeAttachedEvent && e.audioSourceId === this.privAudioSourceId && e.audioNodeId === this.privAudioNodeId) {\r\n this.privMicStartTime = e.eventTime;\r\n }\r\n\r\n if (e instanceof AudioSourceErrorEvent && e.audioSourceId === this.privAudioSourceId) {\r\n if (!this.privMicMetric) {\r\n this.privMicMetric = {\r\n End: e.eventTime,\r\n Error: e.error,\r\n Name: \"Microphone\",\r\n Start: this.privMicStartTime,\r\n };\r\n }\r\n }\r\n\r\n if (e instanceof AudioStreamNodeErrorEvent && e.audioSourceId === this.privAudioSourceId && e.audioNodeId === this.privAudioNodeId) {\r\n if (!this.privMicMetric) {\r\n this.privMicMetric = {\r\n End: e.eventTime,\r\n Error: e.error,\r\n Name: \"Microphone\",\r\n Start: this.privMicStartTime,\r\n };\r\n }\r\n }\r\n\r\n if (e instanceof AudioStreamNodeDetachedEvent && e.audioSourceId === this.privAudioSourceId && e.audioNodeId === this.privAudioNodeId) {\r\n if (!this.privMicMetric) {\r\n this.privMicMetric = {\r\n End: e.eventTime,\r\n Name: \"Microphone\",\r\n Start: this.privMicStartTime,\r\n };\r\n }\r\n }\r\n\r\n if (e instanceof ConnectingToServiceEvent && e.requestId === this.privRequestId) {\r\n this.privConnectionId = e.sessionId;\r\n }\r\n\r\n if (e instanceof ConnectionStartEvent && e.connectionId === this.privConnectionId) {\r\n this.privConnectionStartTime = e.eventTime;\r\n }\r\n\r\n if (e instanceof ConnectionEstablishedEvent && e.connectionId === this.privConnectionId) {\r\n if (!this.privConnectionEstablishMetric) {\r\n this.privConnectionEstablishMetric = {\r\n End: e.eventTime,\r\n Id: this.privConnectionId,\r\n Name: \"Connection\",\r\n Start: this.privConnectionStartTime,\r\n };\r\n }\r\n }\r\n\r\n if (e instanceof ConnectionEstablishErrorEvent && e.connectionId === this.privConnectionId) {\r\n if (!this.privConnectionEstablishMetric) {\r\n this.privConnectionEstablishMetric = {\r\n End: e.eventTime,\r\n Error: this.getConnectionError(e.statusCode),\r\n Id: this.privConnectionId,\r\n Name: \"Connection\",\r\n Start: this.privConnectionStartTime,\r\n };\r\n }\r\n }\r\n\r\n if (e instanceof ConnectionMessageReceivedEvent && e.connectionId === this.privConnectionId) {\r\n if (e.message && e.message.headers && e.message.headers.path) {\r\n if (!this.privReceivedMessages[e.message.headers.path]) {\r\n this.privReceivedMessages[e.message.headers.path] = new Array();\r\n }\r\n const maxMessagesToSend = 50;\r\n if (this.privReceivedMessages[e.message.headers.path].length < maxMessagesToSend) {\r\n this.privReceivedMessages[e.message.headers.path].push(e.networkReceivedTime);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public getTelemetry(): string {\r\n const metrics = new Array();\r\n\r\n if (this.privListeningTriggerMetric) {\r\n metrics.push(this.privListeningTriggerMetric);\r\n }\r\n\r\n if (this.privMicMetric) {\r\n metrics.push(this.privMicMetric);\r\n }\r\n\r\n if (this.privConnectionEstablishMetric) {\r\n metrics.push(this.privConnectionEstablishMetric);\r\n }\r\n\r\n if (this.privPhraseLatencies.length > 0) {\r\n metrics.push({\r\n PhraseLatencyMs: this.privPhraseLatencies,\r\n });\r\n }\r\n\r\n if (this.privHypothesisLatencies.length > 0) {\r\n metrics.push({\r\n FirstHypothesisLatencyMs: this.privHypothesisLatencies,\r\n });\r\n }\r\n\r\n const telemetry: ITelemetry = {\r\n Metrics: metrics,\r\n ReceivedMessages: this.privReceivedMessages,\r\n };\r\n\r\n const json = JSON.stringify(telemetry);\r\n\r\n // We dont want to send the same telemetry again. So clean those out.\r\n this.privReceivedMessages = {};\r\n this.privListeningTriggerMetric = null;\r\n this.privMicMetric = null;\r\n this.privConnectionEstablishMetric = null;\r\n this.privPhraseLatencies = [];\r\n this.privHypothesisLatencies = [];\r\n return json;\r\n }\r\n\r\n // Determines if there are any telemetry events to send to the service.\r\n public get hasTelemetry(): boolean {\r\n return (Object.keys(this.privReceivedMessages).length !== 0 ||\r\n this.privListeningTriggerMetric !== null ||\r\n this.privMicMetric !== null ||\r\n this.privConnectionEstablishMetric !== null ||\r\n this.privPhraseLatencies.length !== 0 ||\r\n this.privHypothesisLatencies.length !== 0);\r\n }\r\n\r\n public dispose(): void {\r\n this.privIsDisposed = true;\r\n }\r\n\r\n private getConnectionError(statusCode: number): string {\r\n /*\r\n -- Websocket status codes --\r\n NormalClosure = 1000,\r\n EndpointUnavailable = 1001,\r\n ProtocolError = 1002,\r\n InvalidMessageType = 1003,\r\n Empty = 1005,\r\n InvalidPayloadData = 1007,\r\n PolicyViolation = 1008,\r\n MessageTooBig = 1009,\r\n MandatoryExtension = 1010,\r\n InternalServerError = 1011\r\n */\r\n\r\n switch (statusCode) {\r\n case 400:\r\n case 1002:\r\n case 1003:\r\n case 1005:\r\n case 1007:\r\n case 1008:\r\n case 1009: return \"BadRequest\";\r\n case 401: return \"Unauthorized\";\r\n case 403: return \"Forbidden\";\r\n case 503:\r\n case 1001: return \"ServerUnavailable\";\r\n case 500:\r\n case 1011: return \"ServerError\";\r\n case 408:\r\n case 504: return \"Timeout\";\r\n default: return \"statuscode:\" + statusCode.toString();\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection } from \"../sdk/Exports\";\r\nimport { Context } from \"./Exports\";\r\n\r\nexport class SpeakerRecognitionConfig {\r\n private privParameters: PropertyCollection;\r\n private privContext: Context;\r\n\r\n public constructor(\r\n context: Context,\r\n parameters: PropertyCollection) {\r\n this.privContext = context ? context : new Context(null);\r\n this.privParameters = parameters;\r\n }\r\n\r\n public get parameters(): PropertyCollection {\r\n return this.privParameters;\r\n }\r\n\r\n public get Context(): Context {\r\n return this.privContext;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports\";\r\nimport {\r\n PropertyId\r\n} from \"../sdk/Exports\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase\";\r\nimport {\r\n AuthInfo,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter,\r\n} from \"./Exports\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\n\r\nclass SpeakerRecognitionConnectionFactoryBase extends ConnectionFactoryBase {\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n endpointPath: string,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint);\r\n if (!endpoint) {\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, `wss://${region}.spr-frontend.speech${hostSuffix}`);\r\n const scenario: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_SpeakerIdMode, \"TextIndependentIdentification\");\r\n endpoint = `${host}/speaker/ws/${this.scenarioToPath(scenario)}/${endpointPath}`;\r\n }\r\n\r\n const queryParams: IStringDictionary = {\r\n format: \"simple\",\r\n language: config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage),\r\n };\r\n\r\n this.setCommonUrlParams(config, queryParams, endpoint);\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n headers[HeaderNames.SpIDAuthKey] = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Key);\r\n\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n\r\n private scenarioToPath(mode: string): string {\r\n switch (mode) {\r\n case \"TextIndependentVerification\":\r\n case \"2\":\r\n return \"verification/text-independent\";\r\n case \"TextDependentVerification\":\r\n case \"1\":\r\n return \"verification/text-dependent\";\r\n default:\r\n return \"identification/text-independent\";\r\n }\r\n }\r\n}\r\n\r\nexport class SpeakerRecognitionConnectionFactory extends SpeakerRecognitionConnectionFactoryBase {\r\n public create( config: RecognizerConfig, authInfo: AuthInfo, connectionId?: string): IConnection {\r\n return super.create(config, authInfo, \"recognition\", connectionId);\r\n }\r\n}\r\n\r\nexport class VoiceProfileConnectionFactory extends SpeakerRecognitionConnectionFactoryBase {\r\n public create( config: RecognizerConfig, authInfo: AuthInfo, connectionId?: string): IConnection {\r\n return super.create(config, authInfo, \"profile\", connectionId);\r\n }\r\n}\r\n\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ReplayableAudioNode } from \"../common.browser/Exports\";\r\nimport {\r\n Deferred,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IConnection,\r\n MessageType,\r\n} from \"../common/Exports\";\r\nimport { AudioStreamFormatImpl } from \"../sdk/Audio/AudioStreamFormat\";\r\nimport { SpeakerRecognitionModel } from \"../sdk/SpeakerRecognitionModel\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n SpeakerRecognitionResult,\r\n SpeakerRecognizer,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SessionEventArgs,\r\n} from \"../sdk/Exports\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n ISpeechConfigAudioDevice,\r\n SpeakerResponse,\r\n ServiceRecognizerBase,\r\n} from \"./Exports\";\r\nimport { IAuthentication } from \"./IAuthentication\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal\";\r\n\r\ninterface SpeakerContext {\r\n scenario: string;\r\n profileIds: string[];\r\n features: {\r\n interimResult: string;\r\n progressiveDetection: string;\r\n };\r\n}\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class SpeakerServiceRecognizer extends ServiceRecognizerBase {\r\n private privSpeakerRecognizer: SpeakerRecognizer;\r\n private privSpeakerAudioSource: IAudioSource;\r\n private privResultDeferral: Deferred;\r\n private privSpeakerModel: SpeakerRecognitionModel;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n recognizer: SpeakerRecognizer) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, recognizer);\r\n this.privSpeakerRecognizer = recognizer;\r\n this.privSpeakerAudioSource = audioSource;\r\n this.recognizeSpeaker = (model: SpeakerRecognitionModel): Promise => this.recognizeSpeakerOnce(model);\r\n this.sendPrePayloadJSONOverride = (): Promise => this.noOp();\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n let processed: boolean = false;\r\n\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n if (connectionMessage.messageType === MessageType.Text) {\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n }\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speaker.response\":\r\n const response: SpeakerResponse = JSON.parse(connectionMessage.textBody) as SpeakerResponse;\r\n let result: SpeakerRecognitionResult;\r\n if (response.status.statusCode.toLowerCase() !== \"success\") {\r\n result = new SpeakerRecognitionResult(\r\n response,\r\n ResultReason.Canceled,\r\n CancellationErrorCode.ServiceError,\r\n response.status.reason\r\n );\r\n } else {\r\n result = new SpeakerRecognitionResult(\r\n response,\r\n ResultReason.RecognizedSpeaker,\r\n );\r\n }\r\n if (!!this.privResultDeferral) {\r\n this.privResultDeferral.resolve(result);\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n const defferal = new Deferred();\r\n defferal.resolve(processed);\r\n return defferal.promise;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (!!this.privResultDeferral) {\r\n const result: SpeakerRecognitionResult = new SpeakerRecognitionResult(\r\n {\r\n scenario: this.privSpeakerModel.scenario,\r\n status: { statusCode: error, reason: error }\r\n },\r\n ResultReason.Canceled,\r\n errorCode,\r\n error\r\n );\r\n try {\r\n this.privResultDeferral.resolve(result);\r\n } catch (error) {\r\n this.privResultDeferral.reject(error as string);\r\n }\r\n }\r\n }\r\n\r\n public async recognizeSpeakerOnce(model: SpeakerRecognitionModel): Promise {\r\n this.privSpeakerModel = model;\r\n this.voiceProfileType = model.scenario;\r\n if (!this.privResultDeferral) {\r\n this.privResultDeferral = new Deferred();\r\n }\r\n this.privRequestSession.startNewRecognition();\r\n this.privRequestSession.listenForServiceTelemetry(this.privSpeakerAudioSource.events);\r\n\r\n this.privRecognizerConfig.parameters.setProperty(PropertyId.Speech_SessionId, this.privRequestSession.sessionId);\r\n\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n\r\n const preAudioPromise: Promise = this.sendPreAudioMessages(this.extractSpeakerContext(model));\r\n\r\n const node: IAudioStreamNode = await this.privSpeakerAudioSource.attach(this.privRequestSession.audioNodeId);\r\n const format: AudioStreamFormatImpl = await this.privSpeakerAudioSource.format;\r\n const deviceInfo: ISpeechConfigAudioDevice = await this.privSpeakerAudioSource.deviceInfo;\r\n\r\n const audioNode = new ReplayableAudioNode(node, format.avgBytesPerSec);\r\n await this.privRequestSession.onAudioSourceAttachCompleted(audioNode, false);\r\n\r\n this.privRecognizerConfig.SpeechServiceConfig.Context.audio = { source: deviceInfo };\r\n\r\n try {\r\n await conPromise;\r\n await preAudioPromise;\r\n } catch (err) {\r\n this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.ConnectionFailure, err as string);\r\n }\r\n\r\n const sessionStartEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.sessionStarted) {\r\n this.privRecognizer.sessionStarted(this.privRecognizer, sessionStartEventArgs);\r\n }\r\n\r\n void this.receiveMessage();\r\n const audioSendPromise = this.sendAudio(audioNode);\r\n\r\n // /* eslint-disable no-empty */\r\n audioSendPromise.then((): void => { /* add? return true;*/ }, (error: string): void => {\r\n this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.RuntimeError, error);\r\n });\r\n\r\n return this.privResultDeferral.promise;\r\n }\r\n\r\n private async sendPreAudioMessages(context: SpeakerContext): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n await this.sendSpeakerRecognition(connection, context);\r\n // await this.sendWaveHeader(connection);\r\n }\r\n\r\n private async sendSpeakerRecognition(connection: IConnection, context: SpeakerContext): Promise {\r\n const speakerContextJson = JSON.stringify(context);\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speaker.context\",\r\n this.privRequestSession.requestId,\r\n \"application/json; charset=utf-8\",\r\n speakerContextJson));\r\n }\r\n\r\n private extractSpeakerContext(model: SpeakerRecognitionModel): SpeakerContext {\r\n return {\r\n features: {\r\n interimResult: \"enabled\",\r\n progressiveDetection: \"disabled\",\r\n },\r\n profileIds: model.profileIds,\r\n scenario: model.scenario,\r\n };\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports\";\r\nimport {\r\n ForceDictationPropertyName,\r\n OutputFormatPropertyName,\r\n} from \"../common.speech/Exports\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports\";\r\nimport {\r\n OutputFormat,\r\n PropertyId\r\n} from \"../sdk/Exports\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase\";\r\nimport {\r\n AuthInfo,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter\r\n} from \"./Exports\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport {\r\n QueryParameterNames\r\n} from \"./QueryParameterNames\";\r\n\r\nexport class SpeechConnectionFactory extends ConnectionFactoryBase {\r\n\r\n private readonly interactiveRelativeUri: string = \"/speech/recognition/interactive/cognitiveservices/v1\";\r\n private readonly conversationRelativeUri: string = \"/speech/recognition/conversation/cognitiveservices/v1\";\r\n private readonly dictationRelativeUri: string = \"/speech/recognition/dictation/cognitiveservices/v1\";\r\n private readonly universalUri: string = \"/speech/universal/v\";\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, undefined);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, \"wss://\" + region + \".stt.speech\" + hostSuffix);\r\n\r\n const queryParams: IStringDictionary = {};\r\n\r\n const endpointId: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_EndpointId, undefined);\r\n const language: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, undefined);\r\n\r\n if (endpointId) {\r\n if (!endpoint || endpoint.search(QueryParameterNames.CustomSpeechDeploymentId) === -1) {\r\n queryParams[QueryParameterNames.CustomSpeechDeploymentId] = endpointId;\r\n }\r\n } else if (language) {\r\n if (!endpoint || endpoint.search(QueryParameterNames.Language) === -1) {\r\n queryParams[QueryParameterNames.Language] = language;\r\n }\r\n }\r\n\r\n if (!endpoint || endpoint.search(QueryParameterNames.Format) === -1) {\r\n queryParams[QueryParameterNames.Format] = config.parameters.getProperty(OutputFormatPropertyName, OutputFormat[OutputFormat.Simple]).toLowerCase();\r\n }\r\n\r\n if (config.autoDetectSourceLanguages !== undefined) {\r\n queryParams[QueryParameterNames.EnableLanguageId] = \"true\";\r\n }\r\n\r\n this.setCommonUrlParams(config, queryParams, endpoint);\r\n\r\n if (!endpoint) {\r\n switch (config.recognitionMode) {\r\n case RecognitionMode.Conversation:\r\n if (config.parameters.getProperty(ForceDictationPropertyName, \"false\") === \"true\") {\r\n endpoint = host + this.dictationRelativeUri;\r\n } else {\r\n if (config.recognitionEndpointVersion !== undefined && parseInt(config.recognitionEndpointVersion, 10) > 1) {\r\n endpoint = `${host}${this.universalUri}${config.recognitionEndpointVersion}`;\r\n } else {\r\n endpoint = host + this.conversationRelativeUri;\r\n }\r\n }\r\n break;\r\n case RecognitionMode.Dictation:\r\n endpoint = host + this.dictationRelativeUri;\r\n break;\r\n default:\r\n if (config.recognitionEndpointVersion !== undefined && parseInt(config.recognitionEndpointVersion, 10) > 1) {\r\n endpoint = `${host}${this.universalUri}${config.recognitionEndpointVersion}`;\r\n } else {\r\n endpoint = host + this.interactiveRelativeUri; // default is interactive\r\n }\r\n break;\r\n }\r\n }\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n\r\n const webSocketConnection = new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n\r\n // Set the value of SpeechServiceConnection_Url to webSocketConnection.uri (and not to `endpoint`), since this value is the final\r\n // URI that was used to make the connection (including query parameters).\r\n const uri: string = webSocketConnection.uri;\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, uri);\r\n\r\n return webSocketConnection;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ArgumentNullError, ConnectionMessage, IStringDictionary, MessageType } from \"../common/Exports\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\n\r\nexport class SpeechConnectionMessage extends ConnectionMessage {\r\n\r\n private privPath: string;\r\n private privRequestId: string;\r\n private privContentType: string;\r\n private privStreamId: string;\r\n private privAdditionalHeaders: IStringDictionary;\r\n\r\n public constructor(\r\n messageType: MessageType,\r\n path: string,\r\n requestId: string,\r\n contentType: string,\r\n body: any,\r\n streamId?: string,\r\n additionalHeaders?: IStringDictionary,\r\n id?: string) {\r\n\r\n if (!path) {\r\n throw new ArgumentNullError(\"path\");\r\n }\r\n\r\n if (!requestId) {\r\n throw new ArgumentNullError(\"requestId\");\r\n }\r\n\r\n const headers: IStringDictionary = {};\r\n headers[HeaderNames.Path] = path;\r\n headers[HeaderNames.RequestId] = requestId;\r\n headers[HeaderNames.RequestTimestamp] = new Date().toISOString();\r\n if (contentType) {\r\n headers[HeaderNames.ContentType] = contentType;\r\n }\r\n\r\n if (streamId) {\r\n headers[HeaderNames.RequestStreamId] = streamId;\r\n }\r\n\r\n if (additionalHeaders) {\r\n for (const headerName in additionalHeaders) {\r\n if (headerName) {\r\n headers[headerName] = additionalHeaders[headerName];\r\n }\r\n\r\n }\r\n }\r\n\r\n if (id) {\r\n super(messageType, body, headers, id);\r\n } else {\r\n super(messageType, body, headers);\r\n }\r\n\r\n this.privPath = path;\r\n this.privRequestId = requestId;\r\n this.privContentType = contentType;\r\n this.privStreamId = streamId;\r\n this.privAdditionalHeaders = additionalHeaders;\r\n }\r\n\r\n public get path(): string {\r\n return this.privPath;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n\r\n public get contentType(): string {\r\n return this.privContentType;\r\n }\r\n\r\n public get streamId(): string {\r\n return this.privStreamId;\r\n }\r\n\r\n public get additionalHeaders(): IStringDictionary {\r\n return this.privAdditionalHeaders;\r\n }\r\n\r\n public static fromConnectionMessage(message: ConnectionMessage): SpeechConnectionMessage {\r\n let path = null;\r\n let requestId = null;\r\n let contentType = null;\r\n // let requestTimestamp = null;\r\n let streamId = null;\r\n const additionalHeaders: IStringDictionary = {};\r\n\r\n if (message.headers) {\r\n for (const headerName in message.headers) {\r\n if (headerName) {\r\n if (headerName.toLowerCase() === HeaderNames.Path.toLowerCase()) {\r\n path = message.headers[headerName];\r\n } else if (headerName.toLowerCase() === HeaderNames.RequestId.toLowerCase()) {\r\n requestId = message.headers[headerName];\r\n // } else if (headerName.toLowerCase() === HeaderNames.RequestTimestamp.toLowerCase()) {\r\n // requestTimestamp = message.headers[headerName];\r\n } else if (headerName.toLowerCase() === HeaderNames.ContentType.toLowerCase()) {\r\n contentType = message.headers[headerName];\r\n } else if (headerName.toLowerCase() === HeaderNames.RequestStreamId.toLowerCase()) {\r\n streamId = message.headers[headerName];\r\n } else {\r\n additionalHeaders[headerName] = message.headers[headerName];\r\n }\r\n }\r\n }\r\n }\r\n\r\n return new SpeechConnectionMessage(\r\n message.messageType,\r\n path,\r\n requestId,\r\n contentType,\r\n message.body,\r\n streamId,\r\n additionalHeaders,\r\n message.id);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n DynamicGrammarBuilder,\r\n IDynamicGrammar,\r\n} from \"./Exports\";\r\n\r\ninterface Context {\r\n [section: string]: any;\r\n}\r\n\r\ninterface PhraseContext {\r\n [section: string]: any;\r\n phraseDetection?: {\r\n enrichment?: {\r\n pronunciationAssessment: any;\r\n };\r\n };\r\n phraseOutput?: {\r\n detailed?: {\r\n options?: string[];\r\n };\r\n format?: any;\r\n };\r\n}\r\n/**\r\n * Represents the JSON used in the speech.context message sent to the speech service.\r\n * The dynamic grammar is always refreshed from the encapsulated dynamic grammar object.\r\n */\r\nexport class SpeechContext {\r\n private privContext: PhraseContext = {};\r\n private privDynamicGrammar: DynamicGrammarBuilder;\r\n\r\n public constructor(dynamicGrammar: DynamicGrammarBuilder) {\r\n this.privDynamicGrammar = dynamicGrammar;\r\n }\r\n\r\n /**\r\n * Gets a section of the speech.context object.\r\n * @param sectionName Name of the section to get.\r\n * @return string or Context JSON serializable object that represents the value.\r\n */\r\n public getSection(sectionName: string): string | Context {\r\n return (this.privContext[sectionName] || {}) as string | Context;\r\n }\r\n\r\n /**\r\n * Adds a section to the speech.context object.\r\n * @param sectionName Name of the section to add.\r\n * @param value JSON serializable object that represents the value.\r\n */\r\n public setSection(sectionName: string, value: string | Context): void {\r\n this.privContext[sectionName] = value;\r\n }\r\n\r\n /**\r\n * @Internal\r\n * This is only used by pronunciation assessment config.\r\n * Do not use externally, object returned will change without warning or notice.\r\n */\r\n public setPronunciationAssessmentParams(params: string): void {\r\n if (this.privContext.phraseDetection === undefined) {\r\n this.privContext.phraseDetection = {\r\n enrichment: {\r\n pronunciationAssessment: {}\r\n }\r\n };\r\n }\r\n this.privContext.phraseDetection.enrichment.pronunciationAssessment = JSON.parse(params) as Context;\r\n this.setWordLevelTimings();\r\n this.privContext.phraseOutput.detailed.options.push(\"PronunciationAssessment\");\r\n if (this.privContext.phraseOutput.detailed.options.indexOf(\"SNR\") === -1) {\r\n this.privContext.phraseOutput.detailed.options.push(\"SNR\");\r\n }\r\n }\r\n\r\n public setWordLevelTimings(): void {\r\n if (this.privContext.phraseOutput === undefined) {\r\n this.privContext.phraseOutput = {\r\n detailed: {\r\n options: []\r\n },\r\n format: {}\r\n };\r\n }\r\n if (this.privContext.phraseOutput.detailed === undefined) {\r\n this.privContext.phraseOutput.detailed = {\r\n options: []\r\n };\r\n }\r\n this.privContext.phraseOutput.format = \"Detailed\";\r\n if (this.privContext.phraseOutput.detailed.options.indexOf(\"WordTimings\") === -1) {\r\n this.privContext.phraseOutput.detailed.options.push(\"WordTimings\");\r\n }\r\n }\r\n\r\n public toJSON(): string {\r\n\r\n const dgi: IDynamicGrammar = this.privDynamicGrammar.generateGrammarObject();\r\n this.setSection(\"dgi\", dgi);\r\n\r\n const ret: string = JSON.stringify(this.privContext);\r\n return ret;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IAudioSource } from \"../common/Exports\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n OutputFormat,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SpeechRecognitionCanceledEventArgs,\r\n SpeechRecognitionEventArgs,\r\n SpeechRecognitionResult,\r\n SpeechRecognizer,\r\n} from \"../sdk/Exports\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n DetailedSpeechPhrase,\r\n EnumTranslation,\r\n OutputFormatPropertyName,\r\n RecognitionStatus,\r\n ServiceRecognizerBase,\r\n SimpleSpeechPhrase,\r\n SpeechHypothesis,\r\n} from \"./Exports\";\r\nimport { IAuthentication } from \"./IAuthentication\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory\";\r\nimport { RecognitionMode, RecognizerConfig } from \"./RecognizerConfig\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal\";\r\n\r\ninterface CustomModel {\r\n language: string;\r\n endpoint: string;\r\n}\r\n\r\ninterface PhraseDetection {\r\n customModels?: CustomModel[];\r\n onInterim?: { action: string };\r\n onSuccess?: { action: string };\r\n mode?: string;\r\n INTERACTIVE?: Segmentation;\r\n CONVERSATION?: Segmentation;\r\n DICTATION?: Segmentation;\r\n}\r\n\r\ninterface Segmentation {\r\n segmentation: {\r\n mode: \"Custom\";\r\n segmentationSilenceTimeoutMs: number;\r\n };\r\n}\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class SpeechServiceRecognizer extends ServiceRecognizerBase {\r\n\r\n private privSpeechRecognizer: SpeechRecognizer;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n speechRecognizer: SpeechRecognizer) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, speechRecognizer);\r\n this.privSpeechRecognizer = speechRecognizer;\r\n\r\n const phraseDetection: PhraseDetection = {};\r\n\r\n if (recognizerConfig.autoDetectSourceLanguages !== undefined) {\r\n const sourceLanguages: string[] = recognizerConfig.autoDetectSourceLanguages.split(\",\");\r\n\r\n let speechContextLidMode;\r\n if (recognizerConfig.languageIdMode === \"Continuous\") {\r\n speechContextLidMode = \"DetectContinuous\";\r\n } else {// recognizerConfig.languageIdMode === \"AtStart\"\r\n speechContextLidMode = \"DetectAtAudioStart\";\r\n }\r\n\r\n this.privSpeechContext.setSection(\"languageId\", {\r\n Priority: \"PrioritizeLatency\",\r\n languages: sourceLanguages,\r\n mode: speechContextLidMode,\r\n onSuccess: { action: \"Recognize\" },\r\n onUnknown: { action: \"None\" }\r\n });\r\n this.privSpeechContext.setSection(\"phraseOutput\", {\r\n interimResults: {\r\n resultType: \"Auto\"\r\n },\r\n phraseResults: {\r\n resultType: \"Always\"\r\n }\r\n });\r\n const customModels: CustomModel[] = recognizerConfig.sourceLanguageModels;\r\n if (customModels !== undefined) {\r\n phraseDetection.customModels = customModels;\r\n phraseDetection.onInterim = { action: \"None\" };\r\n phraseDetection.onSuccess = { action: \"None\" };\r\n }\r\n }\r\n\r\n const isEmpty = (obj: object): boolean => {\r\n // eslint-disable-next-line guard-for-in, brace-style\r\n for (const x in obj) { return false; }\r\n return true;\r\n };\r\n\r\n if (!isEmpty(phraseDetection)) {\r\n this.privSpeechContext.setSection(\"phraseDetection\", phraseDetection);\r\n }\r\n }\r\n\r\n protected setSpeechSegmentationTimeout(): void{\r\n const speechSegmentationTimeout: string = this.privRecognizerConfig.parameters.getProperty(PropertyId.Speech_SegmentationSilenceTimeoutMs, undefined);\r\n if (speechSegmentationTimeout !== undefined) {\r\n const mode = this.recognitionMode === RecognitionMode.Conversation ? \"CONVERSATION\" :\r\n this.recognitionMode === RecognitionMode.Dictation ? \"DICTATION\" : \"INTERACTIVE\";\r\n const segmentationSilenceTimeoutMs: number = parseInt(speechSegmentationTimeout, 10);\r\n const phraseDetection = this.privSpeechContext.getSection(\"phraseDetection\") as PhraseDetection;\r\n phraseDetection.mode = mode;\r\n phraseDetection[mode] = {\r\n segmentation: {\r\n mode: \"Custom\",\r\n segmentationSilenceTimeoutMs\r\n }\r\n };\r\n this.privSpeechContext.setSection(\"phraseDetection\", phraseDetection);\r\n }\r\n }\r\n\r\n protected async processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n let result: SpeechRecognitionResult;\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n let processed: boolean = false;\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"speech.hypothesis\":\r\n case \"speech.fragment\":\r\n const hypothesis: SpeechHypothesis = SpeechHypothesis.fromJSON(connectionMessage.textBody);\r\n const offset: number = hypothesis.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n ResultReason.RecognizingSpeech,\r\n hypothesis.Text,\r\n hypothesis.Duration,\r\n offset,\r\n hypothesis.Language,\r\n hypothesis.LanguageDetectionConfidence,\r\n undefined, // Speaker Id\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n this.privRequestSession.onHypothesis(offset);\r\n\r\n const ev = new SpeechRecognitionEventArgs(result, hypothesis.Duration, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privSpeechRecognizer.recognizing) {\r\n try {\r\n this.privSpeechRecognizer.recognizing(this.privSpeechRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n case \"speech.phrase\":\r\n const simple: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(connectionMessage.textBody);\r\n const resultReason: ResultReason = EnumTranslation.implTranslateRecognitionResult(simple.RecognitionStatus);\r\n\r\n this.privRequestSession.onPhraseRecognized(this.privRequestSession.currentTurnAudioOffset + simple.Offset + simple.Duration);\r\n\r\n if (ResultReason.Canceled === resultReason) {\r\n const cancelReason: CancellationReason = EnumTranslation.implTranslateCancelResult(simple.RecognitionStatus);\r\n const cancellationErrorCode: CancellationErrorCode = EnumTranslation.implTranslateCancelErrorCode(simple.RecognitionStatus);\r\n\r\n await this.cancelRecognitionLocal(\r\n cancelReason,\r\n cancellationErrorCode,\r\n EnumTranslation.implTranslateErrorDetails(cancellationErrorCode));\r\n\r\n } else {\r\n if (!(this.privRequestSession.isSpeechEnded && resultReason === ResultReason.NoMatch && simple.RecognitionStatus !== RecognitionStatus.InitialSilenceTimeout)) {\r\n if (this.privRecognizerConfig.parameters.getProperty(OutputFormatPropertyName) === OutputFormat[OutputFormat.Simple]) {\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n simple.DisplayText,\r\n simple.Duration,\r\n simple.Offset + this.privRequestSession.currentTurnAudioOffset,\r\n simple.Language,\r\n simple.LanguageDetectionConfidence,\r\n undefined, // Speaker Id\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n } else {\r\n const detailed: DetailedSpeechPhrase = DetailedSpeechPhrase.fromJSON(connectionMessage.textBody);\r\n const totalOffset: number = detailed.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n const offsetCorrectedJson: string = detailed.getJsonWithCorrectedOffsets(totalOffset);\r\n\r\n result = new SpeechRecognitionResult(\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n detailed.RecognitionStatus === RecognitionStatus.Success ? detailed.NBest[0].Display : undefined,\r\n detailed.Duration,\r\n totalOffset,\r\n detailed.Language,\r\n detailed.LanguageDetectionConfidence,\r\n undefined, // Speaker Id\r\n undefined,\r\n offsetCorrectedJson,\r\n resultProps);\r\n }\r\n\r\n const event: SpeechRecognitionEventArgs = new SpeechRecognitionEventArgs(result, result.offset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privSpeechRecognizer.recognized) {\r\n try {\r\n this.privSpeechRecognizer.recognized(this.privSpeechRecognizer, event);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n return processed;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (!!this.privSpeechRecognizer.canceled) {\r\n const cancelEvent: SpeechRecognitionCanceledEventArgs = new SpeechRecognitionCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n sessionId);\r\n try {\r\n this.privSpeechRecognizer.canceled(this.privSpeechRecognizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n\r\n if (!!this.privSuccessCallback) {\r\n const result: SpeechRecognitionResult = new SpeechRecognitionResult(\r\n requestId,\r\n ResultReason.Canceled,\r\n undefined, // Text\r\n undefined, // Duration\r\n undefined, // Offset\r\n undefined, // Language\r\n undefined, // Language Detection Confidence\r\n undefined, // Speaker Id\r\n error,\r\n undefined, // Json\r\n properties);\r\n try {\r\n this.privSuccessCallback(result);\r\n this.privSuccessCallback = undefined;\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection\r\n} from \"../common.browser/Exports\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports\";\r\nimport { PropertyId } from \"../sdk/Exports\";\r\nimport { ConnectionFactoryBase } from \"./ConnectionFactoryBase\";\r\nimport {\r\n AuthInfo,\r\n SynthesizerConfig,\r\n WebsocketMessageFormatter\r\n} from \"./Exports\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { ISynthesisConnectionFactory } from \"./ISynthesisConnectionFactory\";\r\nimport {\r\n QueryParameterNames\r\n} from \"./QueryParameterNames\";\r\n\r\nexport class SpeechSynthesisConnectionFactory implements ISynthesisConnectionFactory {\r\n\r\n private readonly synthesisUri: string = \"/cognitiveservices/websocket/v1\";\r\n\r\n public create(\r\n config: SynthesizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, undefined);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const endpointId = config.parameters.getProperty(PropertyId.SpeechServiceConnection_EndpointId, undefined);\r\n const hostPrefix = (endpointId === undefined) ? \"tts\" : \"voice\";\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, \"wss://\" + region + \".\" + hostPrefix + \".speech\" + hostSuffix);\r\n\r\n const queryParams: IStringDictionary = {};\r\n\r\n if (!endpoint) {\r\n endpoint = host + this.synthesisUri;\r\n }\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n if (endpointId !== undefined) {\r\n headers[QueryParameterNames.CustomVoiceDeploymentId] = endpointId;\r\n }\r\n\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromParameters(config.parameters), enableCompression, connectionId);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ArgumentNullError,\r\n ConnectionClosedEvent,\r\n ConnectionEvent,\r\n ConnectionMessage,\r\n ConnectionState,\r\n createNoDashGuid,\r\n EventSource,\r\n IAudioDestination,\r\n IConnection,\r\n IDisposable,\r\n MessageType,\r\n ServiceEvent,\r\n} from \"../common/Exports\";\r\nimport { AudioOutputFormatImpl } from \"../sdk/Audio/AudioOutputFormat\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SpeechSynthesisBookmarkEventArgs,\r\n SpeechSynthesisEventArgs,\r\n SpeechSynthesisResult,\r\n SpeechSynthesisVisemeEventArgs,\r\n SpeechSynthesisWordBoundaryEventArgs,\r\n SpeechSynthesizer,\r\n} from \"../sdk/Exports\";\r\nimport {\r\n AgentConfig,\r\n CancellationErrorCodePropertyName,\r\n ISynthesisConnectionFactory,\r\n MetadataType,\r\n SynthesisAudioMetadata,\r\n SynthesisContext,\r\n SynthesisTurn,\r\n SynthesizerConfig\r\n} from \"./Exports\";\r\nimport { AuthInfo, IAuthentication } from \"./IAuthentication\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal\";\r\n\r\nexport class SynthesisAdapterBase implements IDisposable {\r\n protected privSynthesisTurn: SynthesisTurn;\r\n protected privConnectionId: string;\r\n protected privSynthesizerConfig: SynthesizerConfig;\r\n protected privSpeechSynthesizer: SpeechSynthesizer;\r\n protected privSuccessCallback: (e: SpeechSynthesisResult) => void;\r\n protected privErrorCallback: (e: string) => void;\r\n\r\n public get synthesisContext(): SynthesisContext {\r\n return this.privSynthesisContext;\r\n }\r\n\r\n public get agentConfig(): AgentConfig {\r\n return this.privAgentConfig;\r\n }\r\n\r\n public get connectionEvents(): EventSource {\r\n return this.privConnectionEvents;\r\n }\r\n\r\n public get serviceEvents(): EventSource {\r\n return this.privServiceEvents;\r\n }\r\n\r\n protected speakOverride: (ssml: string, requestId: string, sc: (e: SpeechSynthesisResult) => void, ec: (e: string) => void) => void = undefined;\r\n\r\n // Called when telemetry data is sent to the service.\r\n // Used for testing Telemetry capture.\r\n public static telemetryData: (json: string) => void;\r\n public static telemetryDataEnabled: boolean = true;\r\n\r\n public set activityTemplate(messagePayload: string) {\r\n this.privActivityTemplate = messagePayload;\r\n }\r\n public get activityTemplate(): string {\r\n return this.privActivityTemplate;\r\n }\r\n\r\n protected receiveMessageOverride: () => void = undefined;\r\n\r\n protected connectImplOverride: (isUnAuthorized: boolean) => void = undefined;\r\n\r\n protected configConnectionOverride: (connection: IConnection) => Promise = undefined;\r\n\r\n public set audioOutputFormat(format: AudioOutputFormatImpl) {\r\n this.privAudioOutputFormat = format;\r\n this.privSynthesisTurn.audioOutputFormat = format;\r\n if (this.privSessionAudioDestination !== undefined) {\r\n this.privSessionAudioDestination.format = format;\r\n }\r\n if (this.synthesisContext !== undefined) {\r\n this.synthesisContext.audioOutputFormat = format;\r\n }\r\n }\r\n private privAuthentication: IAuthentication;\r\n private privConnectionFactory: ISynthesisConnectionFactory;\r\n\r\n // A promise for a configured connection.\r\n // Do not consume directly, call fetchConnection instead.\r\n private privConnectionConfigurationPromise: Promise = undefined;\r\n\r\n // A promise for a connection, but one that has not had the speech context sent yet.\r\n // Do not consume directly, call fetchConnection instead.\r\n private privConnectionPromise: Promise;\r\n private privAuthFetchEventId: string;\r\n private privIsDisposed: boolean;\r\n private privConnectionEvents: EventSource;\r\n private privServiceEvents: EventSource;\r\n private privSynthesisContext: SynthesisContext;\r\n private privAgentConfig: AgentConfig;\r\n private privActivityTemplate: string;\r\n private privAudioOutputFormat: AudioOutputFormatImpl;\r\n private privSessionAudioDestination: IAudioDestination;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: ISynthesisConnectionFactory,\r\n synthesizerConfig: SynthesizerConfig,\r\n speechSynthesizer: SpeechSynthesizer,\r\n audioDestination: IAudioDestination) {\r\n\r\n if (!authentication) {\r\n throw new ArgumentNullError(\"authentication\");\r\n }\r\n\r\n if (!connectionFactory) {\r\n throw new ArgumentNullError(\"connectionFactory\");\r\n }\r\n\r\n if (!synthesizerConfig) {\r\n throw new ArgumentNullError(\"synthesizerConfig\");\r\n }\r\n\r\n this.privAuthentication = authentication;\r\n this.privConnectionFactory = connectionFactory;\r\n this.privSynthesizerConfig = synthesizerConfig;\r\n this.privIsDisposed = false;\r\n this.privSpeechSynthesizer = speechSynthesizer;\r\n this.privSessionAudioDestination = audioDestination;\r\n this.privSynthesisTurn = new SynthesisTurn();\r\n this.privConnectionEvents = new EventSource();\r\n this.privServiceEvents = new EventSource();\r\n this.privSynthesisContext = new SynthesisContext(this.privSpeechSynthesizer);\r\n this.privAgentConfig = new AgentConfig();\r\n\r\n this.connectionEvents.attach((connectionEvent: ConnectionEvent): void => {\r\n if (connectionEvent.name === \"ConnectionClosedEvent\") {\r\n const connectionClosedEvent = connectionEvent as ConnectionClosedEvent;\r\n if (connectionClosedEvent.statusCode !== 1000) {\r\n this.cancelSynthesisLocal(CancellationReason.Error,\r\n connectionClosedEvent.statusCode === 1007 ? CancellationErrorCode.BadRequestParameters : CancellationErrorCode.ConnectionFailure,\r\n `${connectionClosedEvent.reason} websocket error code: ${connectionClosedEvent.statusCode}`);\r\n }\r\n }\r\n });\r\n }\r\n\r\n public static addHeader(audio: ArrayBuffer, format: AudioOutputFormatImpl): ArrayBuffer {\r\n if (!format.hasHeader) {\r\n return audio;\r\n }\r\n format.updateHeader(audio.byteLength);\r\n const tmp = new Uint8Array(audio.byteLength + format.header.byteLength);\r\n tmp.set(new Uint8Array(format.header), 0);\r\n tmp.set(new Uint8Array(audio), format.header.byteLength);\r\n return tmp.buffer;\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public async dispose(reason?: string): Promise {\r\n this.privIsDisposed = true;\r\n if (this.privSessionAudioDestination !== undefined) {\r\n this.privSessionAudioDestination.close();\r\n }\r\n if (this.privConnectionConfigurationPromise !== undefined) {\r\n const connection: IConnection = await this.privConnectionConfigurationPromise;\r\n await connection.dispose(reason);\r\n }\r\n }\r\n\r\n public async connect(): Promise {\r\n await this.connectImpl();\r\n }\r\n\r\n public async sendNetworkMessage(path: string, payload: string | ArrayBuffer): Promise {\r\n const type: MessageType = typeof payload === \"string\" ? MessageType.Text : MessageType.Binary;\r\n const contentType: string = typeof payload === \"string\" ? \"application/json\" : \"\";\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n return connection.send(new SpeechConnectionMessage(type, path, this.privSynthesisTurn.requestId, contentType, payload));\r\n }\r\n\r\n public async Speak(\r\n text: string,\r\n isSSML: boolean,\r\n requestId: string,\r\n successCallback: (e: SpeechSynthesisResult) => void,\r\n errorCallBack: (e: string) => void,\r\n audioDestination: IAudioDestination,\r\n ): Promise {\r\n\r\n let ssml: string;\r\n\r\n if (isSSML) {\r\n ssml = text;\r\n } else {\r\n ssml = this.privSpeechSynthesizer.buildSsml(text);\r\n }\r\n\r\n if (this.speakOverride !== undefined) {\r\n return this.speakOverride(ssml, requestId, successCallback, errorCallBack);\r\n }\r\n\r\n this.privSuccessCallback = successCallback;\r\n this.privErrorCallback = errorCallBack;\r\n\r\n this.privSynthesisTurn.startNewSynthesis(requestId, text, isSSML, audioDestination);\r\n\r\n try {\r\n await this.connectImpl();\r\n const connection: IConnection = await this.fetchConnection();\r\n await this.sendSynthesisContext(connection);\r\n await this.sendSsmlMessage(connection, ssml, requestId);\r\n const synthesisStartEventArgs: SpeechSynthesisEventArgs = new SpeechSynthesisEventArgs(\r\n new SpeechSynthesisResult(\r\n requestId,\r\n ResultReason.SynthesizingAudioStarted,\r\n )\r\n );\r\n\r\n if (!!this.privSpeechSynthesizer.synthesisStarted) {\r\n this.privSpeechSynthesizer.synthesisStarted(this.privSpeechSynthesizer, synthesisStartEventArgs);\r\n }\r\n\r\n void this.receiveMessage();\r\n } catch (e) {\r\n this.cancelSynthesisLocal(CancellationReason.Error, CancellationErrorCode.ConnectionFailure, e as string);\r\n return Promise.reject(e);\r\n }\r\n }\r\n\r\n // Cancels synthesis.\r\n protected cancelSynthesis(\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n const result: SpeechSynthesisResult = new SpeechSynthesisResult(\r\n requestId,\r\n ResultReason.Canceled,\r\n undefined,\r\n error,\r\n properties\r\n );\r\n\r\n if (!!this.privSpeechSynthesizer.SynthesisCanceled) {\r\n const cancelEvent: SpeechSynthesisEventArgs = new SpeechSynthesisEventArgs(result);\r\n try {\r\n this.privSpeechSynthesizer.SynthesisCanceled(this.privSpeechSynthesizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n\r\n // Cancels synthesis.\r\n protected cancelSynthesisLocal(\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n if (!!this.privSynthesisTurn.isSynthesizing) {\r\n this.privSynthesisTurn.onStopSynthesizing();\r\n\r\n this.cancelSynthesis(\r\n this.privSynthesisTurn.requestId,\r\n cancellationReason,\r\n errorCode,\r\n error);\r\n }\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): boolean {\r\n return true;\r\n }\r\n\r\n protected async receiveMessage(): Promise {\r\n try {\r\n const connection: IConnection = await this.fetchConnection();\r\n const message: ConnectionMessage = await connection.read();\r\n\r\n if (this.receiveMessageOverride !== undefined) {\r\n return this.receiveMessageOverride();\r\n }\r\n if (this.privIsDisposed) {\r\n // We're done.\r\n return;\r\n }\r\n\r\n // indicates we are draining the queue and it came with no message;\r\n if (!message) {\r\n if (!this.privSynthesisTurn.isSynthesizing) {\r\n return;\r\n } else {\r\n return this.receiveMessage();\r\n }\r\n }\r\n\r\n\r\n const connectionMessage = SpeechConnectionMessage.fromConnectionMessage(message);\r\n\r\n if (connectionMessage.requestId.toLowerCase() === this.privSynthesisTurn.requestId.toLowerCase()) {\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"turn.start\":\r\n this.privSynthesisTurn.onServiceTurnStartResponse();\r\n break;\r\n case \"response\":\r\n this.privSynthesisTurn.onServiceResponseMessage(connectionMessage.textBody);\r\n break;\r\n case \"audio\":\r\n if (this.privSynthesisTurn.streamId.toLowerCase() === connectionMessage.streamId.toLowerCase()\r\n && !!connectionMessage.binaryBody) {\r\n this.privSynthesisTurn.onAudioChunkReceived(connectionMessage.binaryBody);\r\n if (!!this.privSpeechSynthesizer.synthesizing) {\r\n try {\r\n const audioWithHeader = SynthesisAdapterBase.addHeader(connectionMessage.binaryBody, this.privSynthesisTurn.audioOutputFormat);\r\n const ev: SpeechSynthesisEventArgs = new SpeechSynthesisEventArgs(\r\n new SpeechSynthesisResult(\r\n this.privSynthesisTurn.requestId,\r\n ResultReason.SynthesizingAudio,\r\n audioWithHeader));\r\n this.privSpeechSynthesizer.synthesizing(this.privSpeechSynthesizer, ev);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n if (this.privSessionAudioDestination !== undefined) {\r\n this.privSessionAudioDestination.write(connectionMessage.binaryBody);\r\n }\r\n }\r\n break;\r\n case \"audio.metadata\":\r\n const metadataList = SynthesisAudioMetadata.fromJSON(connectionMessage.textBody).Metadata;\r\n for (const metadata of metadataList) {\r\n switch (metadata.Type) {\r\n case MetadataType.WordBoundary:\r\n case MetadataType.SentenceBoundary:\r\n this.privSynthesisTurn.onTextBoundaryEvent(metadata);\r\n\r\n const wordBoundaryEventArgs: SpeechSynthesisWordBoundaryEventArgs = new SpeechSynthesisWordBoundaryEventArgs(\r\n metadata.Data.Offset,\r\n metadata.Data.Duration,\r\n metadata.Data.text.Text,\r\n metadata.Data.text.Length,\r\n metadata.Type === MetadataType.WordBoundary\r\n ? this.privSynthesisTurn.currentTextOffset : this.privSynthesisTurn.currentSentenceOffset,\r\n metadata.Data.text.BoundaryType);\r\n\r\n if (!!this.privSpeechSynthesizer.wordBoundary) {\r\n try {\r\n this.privSpeechSynthesizer.wordBoundary(this.privSpeechSynthesizer, wordBoundaryEventArgs);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n break;\r\n case MetadataType.Bookmark:\r\n const bookmarkEventArgs: SpeechSynthesisBookmarkEventArgs = new SpeechSynthesisBookmarkEventArgs(\r\n metadata.Data.Offset,\r\n metadata.Data.Bookmark);\r\n\r\n if (!!this.privSpeechSynthesizer.bookmarkReached) {\r\n try {\r\n this.privSpeechSynthesizer.bookmarkReached(this.privSpeechSynthesizer, bookmarkEventArgs);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n break;\r\n case MetadataType.Viseme:\r\n this.privSynthesisTurn.onVisemeMetadataReceived(metadata);\r\n if (metadata.Data.IsLastAnimation) {\r\n const visemeEventArgs: SpeechSynthesisVisemeEventArgs = new SpeechSynthesisVisemeEventArgs(\r\n metadata.Data.Offset,\r\n metadata.Data.VisemeId,\r\n this.privSynthesisTurn.getAndClearVisemeAnimation());\r\n\r\n if (!!this.privSpeechSynthesizer.visemeReceived) {\r\n try {\r\n this.privSpeechSynthesizer.visemeReceived(this.privSpeechSynthesizer, visemeEventArgs);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n break;\r\n case MetadataType.SessionEnd:\r\n this.privSynthesisTurn.onSessionEnd(metadata);\r\n break;\r\n }\r\n }\r\n break;\r\n case \"turn.end\":\r\n this.privSynthesisTurn.onServiceTurnEndResponse();\r\n let result: SpeechSynthesisResult;\r\n try {\r\n const audioBuffer: ArrayBuffer = await this.privSynthesisTurn.getAllReceivedAudioWithHeader();\r\n result = new SpeechSynthesisResult(\r\n this.privSynthesisTurn.requestId,\r\n ResultReason.SynthesizingAudioCompleted,\r\n audioBuffer,\r\n undefined,\r\n undefined,\r\n this.privSynthesisTurn.audioDuration\r\n );\r\n if (!!this.privSuccessCallback) {\r\n this.privSuccessCallback(result);\r\n }\r\n } catch (error) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(error as string);\r\n }\r\n }\r\n if (this.privSpeechSynthesizer.synthesisCompleted) {\r\n try {\r\n this.privSpeechSynthesizer.synthesisCompleted(\r\n this.privSpeechSynthesizer,\r\n new SpeechSynthesisEventArgs(result)\r\n );\r\n } catch (e) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n break;\r\n\r\n default:\r\n\r\n if (!this.processTypeSpecificMessages(connectionMessage)) {\r\n // here are some messages that the derived class has not processed, dispatch them to connect class\r\n if (!!this.privServiceEvents) {\r\n this.serviceEvents.onEvent(new ServiceEvent(connectionMessage.path.toLowerCase(), connectionMessage.textBody));\r\n }\r\n }\r\n\r\n }\r\n }\r\n\r\n return this.receiveMessage();\r\n\r\n } catch (e) {\r\n // TODO: What goes here?\r\n }\r\n }\r\n\r\n protected sendSynthesisContext(connection: IConnection): Promise {\r\n const synthesisContextJson = this.synthesisContext.toJSON();\r\n\r\n if (synthesisContextJson) {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"synthesis.context\",\r\n this.privSynthesisTurn.requestId,\r\n \"application/json\",\r\n synthesisContextJson));\r\n }\r\n return;\r\n }\r\n\r\n protected connectImpl(isUnAuthorized: boolean = false): Promise {\r\n if (this.privConnectionPromise != null) {\r\n return this.privConnectionPromise.then((connection: IConnection): Promise => {\r\n if (connection.state() === ConnectionState.Disconnected) {\r\n this.privConnectionId = null;\r\n this.privConnectionPromise = null;\r\n return this.connectImpl();\r\n }\r\n return this.privConnectionPromise;\r\n }, (): Promise => {\r\n this.privConnectionId = null;\r\n this.privConnectionPromise = null;\r\n return this.connectImpl();\r\n });\r\n }\r\n this.privAuthFetchEventId = createNoDashGuid();\r\n this.privConnectionId = createNoDashGuid();\r\n\r\n this.privSynthesisTurn.onPreConnectionStart(this.privAuthFetchEventId);\r\n\r\n const authPromise = isUnAuthorized ? this.privAuthentication.fetchOnExpiry(this.privAuthFetchEventId) : this.privAuthentication.fetch(this.privAuthFetchEventId);\r\n\r\n this.privConnectionPromise = authPromise.then(async (result: AuthInfo): Promise => {\r\n this.privSynthesisTurn.onAuthCompleted(false);\r\n\r\n const connection: IConnection = this.privConnectionFactory.create(this.privSynthesizerConfig, result, this.privConnectionId);\r\n\r\n // Attach to the underlying event. No need to hold onto the detach pointers as in the event the connection goes away,\r\n // it'll stop sending events.\r\n connection.events.attach((event: ConnectionEvent): void => {\r\n this.connectionEvents.onEvent(event);\r\n });\r\n const response = await connection.open();\r\n if (response.statusCode === 200) {\r\n this.privSynthesisTurn.onConnectionEstablishCompleted(response.statusCode);\r\n return Promise.resolve(connection);\r\n } else if (response.statusCode === 403 && !isUnAuthorized) {\r\n return this.connectImpl(true);\r\n } else {\r\n this.privSynthesisTurn.onConnectionEstablishCompleted(response.statusCode);\r\n return Promise.reject(`Unable to contact server. StatusCode: ${response.statusCode}, ${this.privSynthesizerConfig.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint)} Reason: ${response.reason}`);\r\n }\r\n }, (error: string): Promise => {\r\n this.privSynthesisTurn.onAuthCompleted(true);\r\n throw new Error(error);\r\n });\r\n\r\n // Attach an empty handler to allow the promise to run in the background while\r\n // other startup events happen. It'll eventually be awaited on.\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.privConnectionPromise.catch((): void => { });\r\n\r\n return this.privConnectionPromise;\r\n }\r\n protected sendSpeechServiceConfig(connection: IConnection, SpeechServiceConfigJson: string): Promise {\r\n if (SpeechServiceConfigJson) {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speech.config\",\r\n this.privSynthesisTurn.requestId,\r\n \"application/json\",\r\n SpeechServiceConfigJson));\r\n }\r\n }\r\n\r\n protected sendSsmlMessage(connection: IConnection, ssml: string, requestId: string): Promise {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"ssml\",\r\n requestId,\r\n \"application/ssml+xml\",\r\n ssml));\r\n }\r\n\r\n private async fetchConnection(): Promise {\r\n if (this.privConnectionConfigurationPromise !== undefined) {\r\n return this.privConnectionConfigurationPromise.then((connection: IConnection): Promise => {\r\n if (connection.state() === ConnectionState.Disconnected) {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigurationPromise = undefined;\r\n return this.fetchConnection();\r\n }\r\n return this.privConnectionConfigurationPromise;\r\n }, (): Promise => {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigurationPromise = undefined;\r\n return this.fetchConnection();\r\n });\r\n }\r\n this.privConnectionConfigurationPromise = this.configureConnection();\r\n return await this.privConnectionConfigurationPromise;\r\n }\r\n\r\n // Takes an established websocket connection to the endpoint and sends speech configuration information.\r\n private async configureConnection(): Promise {\r\n const connection: IConnection = await this.connectImpl();\r\n if (this.configConnectionOverride !== undefined) {\r\n return this.configConnectionOverride(connection);\r\n }\r\n await this.sendSpeechServiceConfig(connection, this.privSynthesizerConfig.SpeechServiceConfig.serialize());\r\n return connection;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { AudioOutputFormatImpl } from \"../sdk/Audio/AudioOutputFormat\";\r\nimport { PropertyId, SpeechSynthesizer } from \"../sdk/Exports\";\r\n\r\n/**\r\n * Represents the JSON used in the synthesis.context message sent to the speech service.\r\n * The dynamic grammar is always refreshed from the encapsulated dynamic grammar object.\r\n */\r\nexport class SynthesisContext {\r\n private privContext: { [section: string]: any } = {};\r\n private privSpeechSynthesizer: SpeechSynthesizer;\r\n private privAudioOutputFormat: AudioOutputFormatImpl;\r\n\r\n public constructor(speechSynthesizer: SpeechSynthesizer) {\r\n this.privSpeechSynthesizer = speechSynthesizer;\r\n }\r\n\r\n /**\r\n * Adds a section to the synthesis.context object.\r\n * @param sectionName Name of the section to add.\r\n * @param value JSON serializable object that represents the value.\r\n */\r\n public setSection(sectionName: string, value: string | object): void {\r\n this.privContext[sectionName] = value;\r\n }\r\n\r\n /**\r\n * Sets the audio output format for synthesis context generation.\r\n * @param format {AudioOutputFormatImpl} the output format\r\n */\r\n public set audioOutputFormat(format: AudioOutputFormatImpl) {\r\n this.privAudioOutputFormat = format;\r\n }\r\n\r\n public toJSON(): string {\r\n\r\n const synthesisSection: ISynthesisSection = this.buildSynthesisContext();\r\n this.setSection(\"synthesis\", synthesisSection);\r\n\r\n return JSON.stringify(this.privContext);\r\n }\r\n\r\n private buildSynthesisContext(): ISynthesisSection {\r\n return {\r\n audio: {\r\n metadataOptions: {\r\n bookmarkEnabled: (!!this.privSpeechSynthesizer.bookmarkReached),\r\n punctuationBoundaryEnabled: this.privSpeechSynthesizer.properties.getProperty(\r\n PropertyId.SpeechServiceResponse_RequestPunctuationBoundary, (!!this.privSpeechSynthesizer.wordBoundary)),\r\n sentenceBoundaryEnabled: this.privSpeechSynthesizer.properties.getProperty(\r\n PropertyId.SpeechServiceResponse_RequestSentenceBoundary, false),\r\n sessionEndEnabled: true,\r\n visemeEnabled: (!!this.privSpeechSynthesizer.visemeReceived),\r\n wordBoundaryEnabled: this.privSpeechSynthesizer.properties.getProperty(\r\n PropertyId.SpeechServiceResponse_RequestWordBoundary, (!!this.privSpeechSynthesizer.wordBoundary)),\r\n },\r\n outputFormat: this.privAudioOutputFormat.requestAudioFormatString,\r\n },\r\n language: {\r\n autoDetection: this.privSpeechSynthesizer.autoDetectSourceLanguage\r\n }\r\n } as ISynthesisSection;\r\n }\r\n}\r\n\r\ninterface ISynthesisSection {\r\n audio: {\r\n outputFormat: string;\r\n metadataOptions: {\r\n bookmarkEnabled: boolean;\r\n wordBoundaryEnabled: string;\r\n punctuationBoundaryEnabled: string;\r\n visemeEnabled: boolean;\r\n sentenceBoundaryEnabled: string;\r\n sessionEndEnabled: boolean;\r\n };\r\n };\r\n language: {\r\n autoDetection: boolean;\r\n };\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { EventType, PlatformEvent } from \"../common/Exports\";\r\n\r\nexport class SpeechSynthesisEvent extends PlatformEvent {\r\n private privRequestId: string;\r\n\r\n public constructor(eventName: string, requestId: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n\r\n this.privRequestId = requestId;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n}\r\n\r\nexport class SynthesisTriggeredEvent extends SpeechSynthesisEvent {\r\n private privSessionAudioDestinationId: string;\r\n private privTurnAudioDestinationId: string;\r\n\r\n public constructor(requestId: string, sessionAudioDestinationId: string, turnAudioDestinationId: string) {\r\n super(\"SynthesisTriggeredEvent\", requestId);\r\n\r\n this.privSessionAudioDestinationId = sessionAudioDestinationId;\r\n this.privTurnAudioDestinationId = turnAudioDestinationId;\r\n }\r\n\r\n public get audioSessionDestinationId(): string {\r\n return this.privSessionAudioDestinationId;\r\n }\r\n\r\n public get audioTurnDestinationId(): string {\r\n return this.privTurnAudioDestinationId;\r\n }\r\n}\r\n\r\nexport class ConnectingToSynthesisServiceEvent extends SpeechSynthesisEvent {\r\n private privAuthFetchEventId: string;\r\n\r\n public constructor(requestId: string, authFetchEventId: string) {\r\n super(\"ConnectingToSynthesisServiceEvent\", requestId);\r\n this.privAuthFetchEventId = authFetchEventId;\r\n }\r\n\r\n public get authFetchEventId(): string {\r\n return this.privAuthFetchEventId;\r\n }\r\n}\r\n\r\nexport class SynthesisStartedEvent extends SpeechSynthesisEvent {\r\n private privAuthFetchEventId: string;\r\n\r\n public constructor(requestId: string, authFetchEventId: string) {\r\n super(\"SynthesisStartedEvent\", requestId);\r\n\r\n this.privAuthFetchEventId = authFetchEventId;\r\n }\r\n\r\n public get authFetchEventId(): string {\r\n return this.privAuthFetchEventId;\r\n }\r\n}\r\n","import {\r\n IRequestOptions,\r\n IRestResponse,\r\n RestConfigBase,\r\n RestMessageAdapter,\r\n RestRequestType,\r\n} from \"../common.browser/Exports\";\r\nimport {\r\n PropertyId,\r\n} from \"../sdk/Exports\";\r\nimport { ConnectionFactoryBase } from \"./ConnectionFactoryBase\";\r\nimport { AuthInfo, IAuthentication, SynthesizerConfig } from \"./Exports\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\n\r\n/**\r\n * Implements methods for speaker recognition classes, sending requests to endpoint\r\n * and parsing response into expected format\r\n * @class SynthesisRestAdapter\r\n */\r\nexport class SynthesisRestAdapter {\r\n private privRestAdapter: RestMessageAdapter;\r\n private privUri: string;\r\n private privAuthentication: IAuthentication;\r\n\r\n public constructor(config: SynthesizerConfig, authentication: IAuthentication) {\r\n\r\n let endpoint = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n if (!endpoint) {\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, \"westus\");\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n endpoint = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, `https://${region}.tts.speech${hostSuffix}`);\r\n }\r\n this.privUri = `${endpoint}/cognitiveservices/voices/list`;\r\n\r\n const options: IRequestOptions = RestConfigBase.requestOptions;\r\n this.privRestAdapter = new RestMessageAdapter(options);\r\n this.privAuthentication = authentication;\r\n }\r\n\r\n /**\r\n * Sends list voices request to endpoint.\r\n * @function\r\n * @public\r\n * @param connectionId - guid for connectionId\r\n * @returns {Promise} rest response to status request\r\n */\r\n public getVoicesList(connectionId: string): Promise {\r\n this.privRestAdapter.setHeaders(HeaderNames.ConnectionId, connectionId);\r\n return this.privAuthentication.fetch(connectionId).then((authInfo: AuthInfo): Promise => {\r\n this.privRestAdapter.setHeaders(authInfo.headerName, authInfo.token);\r\n return this.privRestAdapter.request(RestRequestType.Get, this.privUri);\r\n });\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n createNoDashGuid,\r\n Deferred,\r\n Events,\r\n IAudioDestination\r\n} from \"../common/Exports\";\r\nimport { AudioOutputFormatImpl } from \"../sdk/Audio/AudioOutputFormat\";\r\nimport { PullAudioOutputStreamImpl } from \"../sdk/Audio/AudioOutputStream\";\r\nimport { ISynthesisMetadata, MetadataType } from \"./ServiceMessages/SynthesisAudioMetadata\";\r\nimport { SynthesisAdapterBase } from \"./SynthesisAdapterBase\";\r\nimport {\r\n ConnectingToSynthesisServiceEvent,\r\n SpeechSynthesisEvent,\r\n SynthesisStartedEvent,\r\n SynthesisTriggeredEvent,\r\n} from \"./SynthesisEvents\";\r\n\r\nexport interface ISynthesisResponseContext {\r\n serviceTag: string;\r\n}\r\n\r\nexport interface ISynthesisResponseAudio {\r\n type: string;\r\n streamId: string;\r\n}\r\n\r\nexport interface ISynthesisResponse {\r\n context: ISynthesisResponseContext;\r\n audio: ISynthesisResponseAudio;\r\n}\r\n\r\nexport class SynthesisTurn {\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n\r\n public get streamId(): string {\r\n return this.privStreamId;\r\n }\r\n\r\n public set streamId(value: string) {\r\n this.privStreamId = value;\r\n }\r\n\r\n public get audioOutputFormat(): AudioOutputFormatImpl {\r\n return this.privAudioOutputFormat;\r\n }\r\n\r\n public set audioOutputFormat(format: AudioOutputFormatImpl) {\r\n this.privAudioOutputFormat = format;\r\n }\r\n\r\n public get turnCompletionPromise(): Promise {\r\n return this.privTurnDeferral.promise;\r\n }\r\n\r\n public get isSynthesisEnded(): boolean {\r\n return this.privIsSynthesisEnded;\r\n }\r\n\r\n public get isSynthesizing(): boolean {\r\n return this.privIsSynthesizing;\r\n }\r\n\r\n public get currentTextOffset(): number {\r\n return this.privTextOffset;\r\n }\r\n\r\n public get currentSentenceOffset(): number {\r\n return this.privSentenceOffset;\r\n }\r\n\r\n // The number of bytes received for current turn\r\n public get bytesReceived(): number {\r\n return this.privBytesReceived;\r\n }\r\n\r\n public get audioDuration(): number {\r\n return this.privAudioDuration;\r\n }\r\n\r\n private privIsDisposed: boolean = false;\r\n private privAuthFetchEventId: string;\r\n private privIsSynthesizing: boolean = false;\r\n private privIsSynthesisEnded: boolean = false;\r\n private privBytesReceived: number = 0;\r\n private privRequestId: string;\r\n private privStreamId: string;\r\n private privTurnDeferral: Deferred;\r\n private privInTurn: boolean = false;\r\n private privAudioOutputFormat: AudioOutputFormatImpl;\r\n private privAudioOutputStream: PullAudioOutputStreamImpl;\r\n private privReceivedAudio: ArrayBuffer;\r\n private privReceivedAudioWithHeader: ArrayBuffer;\r\n private privTextOffset: number = 0;\r\n private privNextSearchTextIndex: number = 0;\r\n private privSentenceOffset: number = 0;\r\n private privNextSearchSentenceIndex: number = 0;\r\n private privPartialVisemeAnimation: string;\r\n private privRawText: string;\r\n private privIsSSML: boolean;\r\n private privTurnAudioDestination: IAudioDestination;\r\n private privAudioDuration: number;\r\n\r\n public constructor() {\r\n this.privRequestId = createNoDashGuid();\r\n this.privTurnDeferral = new Deferred();\r\n\r\n // We're not in a turn, so resolve.\r\n this.privTurnDeferral.resolve();\r\n }\r\n\r\n public async getAllReceivedAudio(): Promise {\r\n if (!!this.privReceivedAudio) {\r\n return Promise.resolve(this.privReceivedAudio);\r\n }\r\n if (!this.privIsSynthesisEnded) {\r\n return null;\r\n }\r\n await this.readAllAudioFromStream();\r\n return Promise.resolve(this.privReceivedAudio);\r\n }\r\n\r\n public async getAllReceivedAudioWithHeader(): Promise {\r\n if (!!this.privReceivedAudioWithHeader) {\r\n return this.privReceivedAudioWithHeader;\r\n }\r\n if (!this.privIsSynthesisEnded) {\r\n return null;\r\n }\r\n if (this.audioOutputFormat.hasHeader) {\r\n const audio: ArrayBuffer = await this.getAllReceivedAudio();\r\n this.privReceivedAudioWithHeader = SynthesisAdapterBase.addHeader(audio, this.audioOutputFormat);\r\n return this.privReceivedAudioWithHeader;\r\n } else {\r\n return this.getAllReceivedAudio();\r\n }\r\n }\r\n\r\n public startNewSynthesis(requestId: string, rawText: string, isSSML: boolean, audioDestination?: IAudioDestination): void {\r\n this.privIsSynthesisEnded = false;\r\n this.privIsSynthesizing = true;\r\n this.privRequestId = requestId;\r\n this.privRawText = rawText;\r\n this.privIsSSML = isSSML;\r\n this.privAudioOutputStream = new PullAudioOutputStreamImpl();\r\n this.privAudioOutputStream.format = this.privAudioOutputFormat;\r\n this.privReceivedAudio = null;\r\n this.privReceivedAudioWithHeader = null;\r\n this.privBytesReceived = 0;\r\n this.privTextOffset = 0;\r\n this.privNextSearchTextIndex = 0;\r\n this.privSentenceOffset = 0;\r\n this.privNextSearchSentenceIndex = 0;\r\n this.privPartialVisemeAnimation = \"\";\r\n if (audioDestination !== undefined) {\r\n this.privTurnAudioDestination = audioDestination;\r\n this.privTurnAudioDestination.format = this.privAudioOutputFormat;\r\n }\r\n this.onEvent(new SynthesisTriggeredEvent(this.requestId, undefined, audioDestination === undefined ? undefined : audioDestination.id()));\r\n }\r\n\r\n public onPreConnectionStart(authFetchEventId: string): void {\r\n this.privAuthFetchEventId = authFetchEventId;\r\n this.onEvent(new ConnectingToSynthesisServiceEvent(this.privRequestId, this.privAuthFetchEventId));\r\n }\r\n\r\n public onAuthCompleted(isError: boolean): void {\r\n if (isError) {\r\n this.onComplete();\r\n }\r\n }\r\n\r\n public onConnectionEstablishCompleted(statusCode: number): void {\r\n if (statusCode === 200) {\r\n this.onEvent(new SynthesisStartedEvent(this.requestId, this.privAuthFetchEventId));\r\n this.privBytesReceived = 0;\r\n return;\r\n } else if (statusCode === 403) {\r\n this.onComplete();\r\n }\r\n }\r\n\r\n public onServiceResponseMessage(responseJson: string): void {\r\n const response: ISynthesisResponse = JSON.parse(responseJson) as ISynthesisResponse;\r\n this.streamId = response.audio.streamId;\r\n }\r\n\r\n public onServiceTurnEndResponse(): void {\r\n this.privInTurn = false;\r\n this.privTurnDeferral.resolve();\r\n this.onComplete();\r\n }\r\n\r\n public onServiceTurnStartResponse(): void {\r\n if (!!this.privTurnDeferral && !!this.privInTurn) {\r\n // What? How are we starting a turn with another not done?\r\n this.privTurnDeferral.reject(\"Another turn started before current completed.\");\r\n // Avoid UnhandledPromiseRejection if privTurnDeferral is not being awaited\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.privTurnDeferral.promise.then().catch((): void => { });\r\n }\r\n this.privInTurn = true;\r\n this.privTurnDeferral = new Deferred();\r\n }\r\n\r\n public onAudioChunkReceived(data: ArrayBuffer): void {\r\n if (this.isSynthesizing) {\r\n this.privAudioOutputStream.write(data);\r\n this.privBytesReceived += data.byteLength;\r\n if (this.privTurnAudioDestination !== undefined) {\r\n this.privTurnAudioDestination.write(data);\r\n }\r\n }\r\n }\r\n\r\n public onTextBoundaryEvent(metadata: ISynthesisMetadata): void {\r\n this.updateTextOffset(metadata.Data.text.Text, metadata.Type);\r\n }\r\n\r\n public onVisemeMetadataReceived(metadata: ISynthesisMetadata): void {\r\n if (metadata.Data.AnimationChunk !== undefined) {\r\n this.privPartialVisemeAnimation += metadata.Data.AnimationChunk;\r\n }\r\n }\r\n\r\n public onSessionEnd(metadata: ISynthesisMetadata): void {\r\n this.privAudioDuration = metadata.Data.Offset;\r\n }\r\n\r\n public dispose(): void {\r\n if (!this.privIsDisposed) {\r\n // we should have completed by now. If we did not its an unknown error.\r\n this.privIsDisposed = true;\r\n }\r\n }\r\n\r\n public onStopSynthesizing(): void {\r\n this.onComplete();\r\n }\r\n\r\n /**\r\n * Gets the viseme animation string (merged from animation chunk), and clears the internal\r\n * partial animation.\r\n */\r\n public getAndClearVisemeAnimation(): string {\r\n const animation: string = this.privPartialVisemeAnimation;\r\n this.privPartialVisemeAnimation = \"\";\r\n return animation;\r\n }\r\n\r\n protected onEvent(event: SpeechSynthesisEvent): void {\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n /**\r\n * Check if the text is an XML(SSML) tag\r\n * @param text\r\n * @private\r\n */\r\n private static isXmlTag(text: string): boolean {\r\n return text.length >= 2 && text[0] === \"<\" && text[text.length - 1] === \">\";\r\n }\r\n\r\n private updateTextOffset(text: string, type: MetadataType): void {\r\n if (type === MetadataType.WordBoundary) {\r\n this.privTextOffset = this.privRawText.indexOf(text, this.privNextSearchTextIndex);\r\n if (this.privTextOffset >= 0) {\r\n this.privNextSearchTextIndex = this.privTextOffset + text.length;\r\n if (this.privIsSSML) {\r\n if (this.withinXmlTag(this.privTextOffset) && !SynthesisTurn.isXmlTag(text)) {\r\n this.updateTextOffset(text, type);\r\n }\r\n }\r\n }\r\n } else {\r\n this.privSentenceOffset = this.privRawText.indexOf(text, this.privNextSearchSentenceIndex);\r\n if (this.privSentenceOffset >= 0) {\r\n this.privNextSearchSentenceIndex = this.privSentenceOffset + text.length;\r\n if (this.privIsSSML) {\r\n if (this.withinXmlTag(this.privSentenceOffset) && !SynthesisTurn.isXmlTag(text)) {\r\n this.updateTextOffset(text, type);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n private onComplete(): void {\r\n if (this.privIsSynthesizing) {\r\n this.privIsSynthesizing = false;\r\n this.privIsSynthesisEnded = true;\r\n this.privAudioOutputStream.close();\r\n this.privInTurn = false;\r\n if (this.privTurnAudioDestination !== undefined) {\r\n this.privTurnAudioDestination.close();\r\n this.privTurnAudioDestination = undefined;\r\n }\r\n }\r\n }\r\n\r\n private async readAllAudioFromStream(): Promise {\r\n if (this.privIsSynthesisEnded) {\r\n this.privReceivedAudio = new ArrayBuffer(this.bytesReceived);\r\n try {\r\n await this.privAudioOutputStream.read(this.privReceivedAudio);\r\n } catch (e) {\r\n this.privReceivedAudio = new ArrayBuffer(0);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Check if current idx is in XML(SSML) tag\r\n * @param idx\r\n * @private\r\n */\r\n private withinXmlTag(idx: number): boolean {\r\n return this.privRawText.indexOf(\"<\", idx + 1) > this.privRawText.indexOf(\">\", idx + 1);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection } from \"../sdk/Exports\";\r\nimport {Context, SpeechServiceConfig} from \"./Exports\";\r\n\r\nexport enum SynthesisServiceType {\r\n Standard,\r\n Custom,\r\n}\r\n\r\nexport class SynthesizerConfig {\r\n private privSynthesisServiceType: SynthesisServiceType = SynthesisServiceType.Standard;\r\n private privSpeechServiceConfig: SpeechServiceConfig;\r\n private privParameters: PropertyCollection;\r\n\r\n public constructor(\r\n speechServiceConfig: SpeechServiceConfig,\r\n parameters: PropertyCollection) {\r\n this.privSpeechServiceConfig = speechServiceConfig ? speechServiceConfig : new SpeechServiceConfig(new Context(null));\r\n this.privParameters = parameters;\r\n }\r\n\r\n public get parameters(): PropertyCollection {\r\n return this.privParameters;\r\n }\r\n\r\n public get synthesisServiceType(): SynthesisServiceType {\r\n return this.privSynthesisServiceType;\r\n }\r\n\r\n public set synthesisServiceType(value: SynthesisServiceType) {\r\n this.privSynthesisServiceType = value;\r\n }\r\n\r\n public get SpeechServiceConfig(): SpeechServiceConfig {\r\n return this.privSpeechServiceConfig;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports\";\r\nimport {\r\n IConnection,\r\n IStringDictionary\r\n} from \"../common/Exports\";\r\nimport {\r\n OutputFormat,\r\n PropertyId\r\n} from \"../sdk/Exports\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase\";\r\nimport {\r\n AuthInfo,\r\n OutputFormatPropertyName,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter\r\n} from \"./Exports\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport {\r\n QueryParameterNames\r\n} from \"./QueryParameterNames\";\r\n\r\nexport class TranscriberConnectionFactory extends ConnectionFactoryBase {\r\n\r\n private readonly multiaudioRelativeUri: string = \"/speech/recognition/multiaudio\";\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n let endpoint: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, \"centralus\");\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n const hostDefault: string = \"wss://transcribe.\" + region + \".cts.speech\" + hostSuffix + this.multiaudioRelativeUri;\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, hostDefault);\r\n\r\n const queryParams: IStringDictionary = {};\r\n this.setQueryParams(queryParams, config, endpoint);\r\n\r\n if (!endpoint) {\r\n endpoint = host;\r\n }\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n\r\n public setQueryParams(queryParams: IStringDictionary, config: RecognizerConfig, endpointUrl: string): void {\r\n\r\n const endpointId: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_EndpointId, undefined);\r\n const language: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, undefined);\r\n\r\n if (endpointId && !(QueryParameterNames.CustomSpeechDeploymentId in queryParams)) {\r\n queryParams[QueryParameterNames.CustomSpeechDeploymentId] = endpointId;\r\n }\r\n\r\n if (language && !(QueryParameterNames.Language in queryParams)) {\r\n queryParams[QueryParameterNames.Language] = language;\r\n }\r\n\r\n const wordLevelTimings: boolean = config.parameters.getProperty(PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps, \"false\").toLowerCase() === \"true\";\r\n const detailed: boolean = config.parameters.getProperty(OutputFormatPropertyName, OutputFormat[OutputFormat.Simple]) !== OutputFormat[OutputFormat.Simple];\r\n if (wordLevelTimings || detailed) {\r\n queryParams[QueryParameterNames.Format] = OutputFormat[OutputFormat.Detailed].toLowerCase();\r\n }\r\n\r\n this.setCommonUrlParams(config, queryParams, endpointUrl);\r\n }\r\n}\r\n","\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n RestConfigBase\r\n} from \"../../common.browser/RestConfigBase\";\r\n\r\nexport class ConversationConnectionConfig extends RestConfigBase {\r\n\r\n private static readonly privHost: string = \"dev.microsofttranslator.com\";\r\n private static readonly privRestPath: string = \"/capito/room\";\r\n private static readonly privApiVersion: string = \"2.0\";\r\n private static readonly privDefaultLanguageCode: string = \"en-US\";\r\n private static readonly privClientAppId: string = \"FC539C22-1767-4F1F-84BC-B4D811114F15\";\r\n private static readonly privWebSocketPath: string = \"/capito/translate\";\r\n private static readonly privTranscriptionEventKeys: string[] = [\"iCalUid\", \"callId\", \"organizer\", \"FLAC\", \"MTUri\", \"DifferentiateGuestSpeakers\", \"audiorecording\", \"Threadid\", \"OrganizerMri\", \"OrganizerTenantId\", \"UserToken\"];\r\n\r\n public static get host(): string {\r\n return ConversationConnectionConfig.privHost;\r\n }\r\n\r\n public static get apiVersion(): string {\r\n return ConversationConnectionConfig.privApiVersion;\r\n }\r\n\r\n public static get clientAppId(): string {\r\n return ConversationConnectionConfig.privClientAppId;\r\n }\r\n\r\n public static get defaultLanguageCode(): string {\r\n return ConversationConnectionConfig.privDefaultLanguageCode;\r\n }\r\n\r\n public static get restPath(): string {\r\n return ConversationConnectionConfig.privRestPath;\r\n }\r\n\r\n public static get webSocketPath(): string {\r\n return ConversationConnectionConfig.privWebSocketPath;\r\n }\r\n\r\n public static get transcriptionEventKeys(): string[] {\r\n return ConversationConnectionConfig.privTranscriptionEventKeys;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ProxyInfo, WebsocketConnection } from \"../../common.browser/Exports\";\r\nimport { createGuid, IConnection, IStringDictionary } from \"../../common/Exports\";\r\nimport { Contracts } from \"../../sdk/Contracts\";\r\nimport { PropertyId } from \"../../sdk/Exports\";\r\nimport { ConnectionFactoryBase } from \"../ConnectionFactoryBase\";\r\nimport { AuthInfo, RecognizerConfig } from \"../Exports\";\r\nimport { ConversationConnectionConfig } from \"./ConversationConnectionConfig\";\r\nimport { ConversationWebsocketMessageFormatter } from \"./ConversationWebsocketMessageFormatter\";\r\n\r\n/**\r\n * Create a connection to the Conversation Translator websocket for sending instant messages and commands, and for receiving translated messages.\r\n * The conversation must already have been started or joined.\r\n */\r\nexport class ConversationConnectionFactory extends ConnectionFactoryBase {\r\n\r\n public create(config: RecognizerConfig, authInfo: AuthInfo, connectionId?: string): IConnection {\r\n\r\n const endpointHost: string = config.parameters.getProperty(PropertyId.ConversationTranslator_Host, ConversationConnectionConfig.host);\r\n const correlationId: string = config.parameters.getProperty(PropertyId.ConversationTranslator_CorrelationId, createGuid());\r\n\r\n const endpoint: string = `wss://${endpointHost}${ConversationConnectionConfig.webSocketPath}`;\r\n const token: string = config.parameters.getProperty(PropertyId.ConversationTranslator_Token, undefined);\r\n Contracts.throwIfNullOrUndefined(token, \"token\");\r\n\r\n const queryParams: IStringDictionary = {};\r\n queryParams[ConversationConnectionConfig.configParams.apiVersion] = ConversationConnectionConfig.apiVersion;\r\n queryParams[ConversationConnectionConfig.configParams.token] = token;\r\n queryParams[ConversationConnectionConfig.configParams.correlationId] = correlationId;\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, {}, new ConversationWebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ConnectionMessage, IStringDictionary, MessageType } from \"../../common/Exports\";\r\n\r\nexport class ConversationConnectionMessage extends ConnectionMessage {\r\n private privConversationMessageType: string;\r\n\r\n public constructor(\r\n messageType: MessageType,\r\n body: any,\r\n headers?: IStringDictionary,\r\n id?: string) {\r\n super(messageType, body, headers, id);\r\n const json: { type: string } = JSON.parse(this.textBody) as { type: string };\r\n if (json.type !== undefined) {\r\n this.privConversationMessageType = json.type;\r\n }\r\n }\r\n\r\n public get conversationMessageType(): string {\r\n return this.privConversationMessageType;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IRequestOptions,\r\n IRestParams,\r\n IRestResponse,\r\n RestMessageAdapter,\r\n RestRequestType\r\n} from \"../../common.browser/Exports\";\r\nimport { IErrorMessages, IStringDictionary } from \"../../common/Exports\";\r\nimport { Contracts } from \"../../sdk/Contracts\";\r\nimport { PropertyCollection, PropertyId } from \"../../sdk/Exports\";\r\nimport { ConversationConnectionConfig } from \"./ConversationConnectionConfig\";\r\nimport { IConversationResponseError, IInternalConversation } from \"./ConversationTranslatorInterfaces\";\r\n\r\nexport class ConversationManager {\r\n\r\n private privRequestParams: IRestParams;\r\n private privErrors: IErrorMessages;\r\n private privHost: string;\r\n private privApiVersion: string;\r\n private privRestPath: string;\r\n private privRestAdapter: RestMessageAdapter;\r\n\r\n public constructor() {\r\n //\r\n this.privRequestParams = ConversationConnectionConfig.configParams;\r\n this.privErrors = ConversationConnectionConfig.restErrors;\r\n this.privHost = ConversationConnectionConfig.host;\r\n this.privApiVersion = ConversationConnectionConfig.apiVersion;\r\n this.privRestPath = ConversationConnectionConfig.restPath;\r\n this.privRestAdapter = new RestMessageAdapter({});\r\n }\r\n\r\n /**\r\n * Make a POST request to the Conversation Manager service endpoint to create or join a conversation.\r\n * @param args\r\n * @param conversationCode\r\n * @param callback\r\n * @param errorCallback\r\n */\r\n public createOrJoin(args: PropertyCollection, conversationCode: string, cb?: (c: any) => void, err?: (e: string) => void): void {\r\n\r\n try {\r\n\r\n Contracts.throwIfNullOrUndefined(args, \"args\");\r\n\r\n const languageCode: string = args.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, ConversationConnectionConfig.defaultLanguageCode);\r\n const nickname: string = args.getProperty(PropertyId.ConversationTranslator_Name, \"conversation_host\");\r\n const endpointHost: string = args.getProperty(PropertyId.ConversationTranslator_Host, this.privHost);\r\n const correlationId: string = args.getProperty(PropertyId.ConversationTranslator_CorrelationId);\r\n const subscriptionKey: string = args.getProperty(PropertyId.SpeechServiceConnection_Key);\r\n const subscriptionRegion: string = args.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n const authToken: string = args.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n\r\n Contracts.throwIfNullOrWhitespace(languageCode, \"languageCode\");\r\n Contracts.throwIfNullOrWhitespace(nickname, \"nickname\");\r\n Contracts.throwIfNullOrWhitespace(endpointHost, \"endpointHost\");\r\n\r\n const queryParams: IStringDictionary = {};\r\n queryParams[this.privRequestParams.apiVersion] = this.privApiVersion;\r\n queryParams[this.privRequestParams.languageCode] = languageCode;\r\n queryParams[this.privRequestParams.nickname] = nickname;\r\n\r\n const headers: IStringDictionary = {};\r\n if (correlationId) {\r\n headers[this.privRequestParams.correlationId] = correlationId;\r\n }\r\n headers[this.privRequestParams.clientAppId] = ConversationConnectionConfig.clientAppId;\r\n\r\n if (conversationCode !== undefined) {\r\n queryParams[this.privRequestParams.roomId] = conversationCode;\r\n } else {\r\n Contracts.throwIfNullOrUndefined(subscriptionRegion, this.privErrors.authInvalidSubscriptionRegion);\r\n headers[this.privRequestParams.subscriptionRegion] = subscriptionRegion;\r\n if (subscriptionKey) {\r\n headers[this.privRequestParams.subscriptionKey] = subscriptionKey;\r\n } else if (authToken) {\r\n headers[this.privRequestParams.authorization] = `Bearer ${authToken}`;\r\n } else {\r\n Contracts.throwIfNullOrUndefined(subscriptionKey, this.privErrors.authInvalidSubscriptionKey);\r\n }\r\n }\r\n\r\n const config: IRequestOptions = {};\r\n config.headers = headers;\r\n this.privRestAdapter.options = config;\r\n\r\n const endpoint: string = `https://${endpointHost}${this.privRestPath}`;\r\n\r\n // TODO: support a proxy and certificate validation\r\n this.privRestAdapter.request(RestRequestType.Post, endpoint, queryParams, null).then((response: IRestResponse): void => {\r\n\r\n const requestId: string = RestMessageAdapter.extractHeaderValue(this.privRequestParams.requestId, response.headers);\r\n\r\n if (!response.ok) {\r\n if (!!err) {\r\n // get the error\r\n let errorMessage: string = this.privErrors.invalidCreateJoinConversationResponse.replace(\"{status}\", response.status.toString());\r\n let errMessageRaw: IConversationResponseError;\r\n try {\r\n errMessageRaw = JSON.parse(response.data) as IConversationResponseError;\r\n errorMessage += ` [${errMessageRaw.error.code}: ${errMessageRaw.error.message}]`;\r\n } catch (e) {\r\n errorMessage += ` [${response.data}]`;\r\n }\r\n if (requestId) {\r\n errorMessage += ` ${requestId}`;\r\n }\r\n\r\n err(errorMessage);\r\n }\r\n return;\r\n }\r\n const conversation: IInternalConversation = JSON.parse(response.data) as IInternalConversation;\r\n if (conversation) {\r\n conversation.requestId = requestId;\r\n }\r\n if (!!cb) {\r\n try {\r\n cb(conversation);\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n cb = undefined;\r\n }\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n }).catch( (): void => { });\r\n\r\n } catch (error) {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Make a DELETE request to the Conversation Manager service endpoint to leave the conversation.\r\n * @param args\r\n * @param sessionToken\r\n * @param callback\r\n */\r\n public leave(args: PropertyCollection, sessionToken: string): Promise {\r\n return new Promise((resolve: () => void, reject: (reason: string) => void): void => {\r\n try {\r\n\r\n Contracts.throwIfNullOrUndefined(args, this.privErrors.invalidArgs.replace(\"{arg}\", \"config\"));\r\n Contracts.throwIfNullOrWhitespace(sessionToken, this.privErrors.invalidArgs.replace(\"{arg}\", \"token\"));\r\n\r\n const endpointHost: string = args.getProperty(PropertyId.ConversationTranslator_Host, this.privHost);\r\n const correlationId: string = args.getProperty(PropertyId.ConversationTranslator_CorrelationId);\r\n\r\n const queryParams: IStringDictionary = {};\r\n queryParams[this.privRequestParams.apiVersion] = this.privApiVersion;\r\n queryParams[this.privRequestParams.sessionToken] = sessionToken;\r\n\r\n const headers: IStringDictionary = {};\r\n if (correlationId) {\r\n headers[this.privRequestParams.correlationId] = correlationId;\r\n }\r\n\r\n const config: IRequestOptions = {};\r\n config.headers = headers;\r\n this.privRestAdapter.options = config;\r\n\r\n const endpoint: string = `https://${endpointHost}${this.privRestPath}`;\r\n\r\n // TODO: support a proxy and certificate validation\r\n this.privRestAdapter.request(RestRequestType.Delete, endpoint, queryParams, null).then((response: IRestResponse): void => {\r\n\r\n if (!response.ok) {\r\n // ignore errors on delete\r\n }\r\n\r\n resolve();\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n }).catch( (): void => {});\r\n\r\n } catch (error) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n reject(typedError.name + \": \" + typedError.message);\r\n\r\n } else {\r\n reject(error as string);\r\n }\r\n }\r\n });\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n createNoDashGuid,\r\n Deferred,\r\n IDetachable,\r\n} from \"../../common/Exports\";\r\n\r\n/**\r\n * Placeholder class for the Conversation Request Session. Based off RequestSession.\r\n * TODO: define what telemetry is required.\r\n */\r\nexport class ConversationRequestSession {\r\n private privIsDisposed: boolean = false;\r\n private privDetachables: IDetachable[] = new Array();\r\n private privRequestId: string;\r\n private privRequestCompletionDeferral: Deferred;\r\n private privSessionId: string;\r\n\r\n public constructor(sessionId: string) {\r\n this.privSessionId = sessionId;\r\n this.privRequestId = createNoDashGuid();\r\n this.privRequestCompletionDeferral = new Deferred();\r\n }\r\n\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n\r\n public get requestId(): string {\r\n return this.privRequestId;\r\n }\r\n\r\n public get completionPromise(): Promise {\r\n return this.privRequestCompletionDeferral.promise;\r\n }\r\n\r\n public onPreConnectionStart(authFetchEventId: string, connectionId: string): void {\r\n this.privSessionId = connectionId;\r\n }\r\n\r\n public onAuthCompleted(isError: boolean): void {\r\n if (isError) {\r\n this.onComplete();\r\n }\r\n }\r\n\r\n public onConnectionEstablishCompleted(statusCode: number): void {\r\n if (statusCode === 200) {\r\n return;\r\n } else if (statusCode === 403) {\r\n this.onComplete();\r\n }\r\n }\r\n\r\n public onServiceTurnEndResponse(continuousRecognition: boolean): void {\r\n if (!continuousRecognition) {\r\n this.onComplete();\r\n } else {\r\n this.privRequestId = createNoDashGuid();\r\n }\r\n }\r\n\r\n public async dispose(): Promise {\r\n if (!this.privIsDisposed) {\r\n // we should have completed by now. If we did not its an unknown error.\r\n this.privIsDisposed = true;\r\n for (const detachable of this.privDetachables) {\r\n await detachable.detach();\r\n }\r\n }\r\n }\r\n\r\n private onComplete(): void {\r\n //\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ConnectionState,\r\n createNoDashGuid,\r\n Deferred,\r\n IAudioSource,\r\n IConnection,\r\n MessageType,\r\n} from \"../../common/Exports\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n ConversationExpirationEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n ConversationTranslationResult,\r\n Translations\r\n} from \"../../sdk/Exports\";\r\nimport {\r\n CognitiveTokenAuthentication,\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognizerConfig,\r\n ServiceRecognizerBase\r\n} from \"../Exports\";\r\nimport { ConversationConnectionMessage } from \"./ConversationConnectionMessage\";\r\nimport { ConversationRequestSession } from \"./ConversationRequestSession\";\r\nimport {\r\n ConversationReceivedTranslationEventArgs,\r\n LockRoomEventArgs,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs\r\n} from \"./ConversationTranslatorEventArgs\";\r\nimport {\r\n ConversationTranslatorCommandTypes,\r\n ConversationTranslatorMessageTypes,\r\n IInternalParticipant\r\n} from \"./ConversationTranslatorInterfaces\";\r\nimport { ConversationTranslatorRecognizer } from \"./ConversationTranslatorRecognizer\";\r\nimport {\r\n CommandResponsePayload,\r\n IParticipantPayloadResponse,\r\n IParticipantsListPayloadResponse,\r\n ITranslationResponsePayload,\r\n ParticipantPayloadResponse,\r\n ParticipantsListPayloadResponse,\r\n SpeechResponsePayload,\r\n TextResponsePayload\r\n} from \"./ServiceMessages/Exports\";\r\n\r\n/**\r\n * The service adapter handles sending and receiving messages to the Conversation Translator websocket.\r\n */\r\nexport class ConversationServiceAdapter extends ServiceRecognizerBase {\r\n private privConversationServiceConnector: ConversationTranslatorRecognizer;\r\n private privConversationConnectionFactory: IConnectionFactory;\r\n private privConversationAuthFetchEventId: string;\r\n private privConversationAuthentication: IAuthentication;\r\n private privConversationRequestSession: ConversationRequestSession;\r\n private privConnectionConfigPromise: Promise = undefined;\r\n private privConnectionLoop: Promise;\r\n private terminateMessageLoop: boolean;\r\n private privLastPartialUtteranceId: string;\r\n private privConversationIsDisposed: boolean;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n conversationServiceConnector: ConversationTranslatorRecognizer) {\r\n\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, conversationServiceConnector);\r\n\r\n this.privLastPartialUtteranceId = \"\";\r\n this.privConversationServiceConnector = conversationServiceConnector;\r\n this.privConversationAuthentication = authentication;\r\n this.receiveMessageOverride = (): Promise => this.receiveConversationMessageOverride();\r\n this.recognizeOverride = (): Promise => this.noOp();\r\n this.postConnectImplOverride = (connection: Promise): Promise => this.conversationConnectImpl(connection);\r\n this.configConnectionOverride = (): Promise => this.configConnection();\r\n this.disconnectOverride = (): Promise => this.privDisconnect();\r\n this.privConversationRequestSession = new ConversationRequestSession(createNoDashGuid());\r\n this.privConversationConnectionFactory = connectionFactory;\r\n this.privConversationIsDisposed = false;\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return super.isDisposed() || this.privConversationIsDisposed;\r\n }\r\n\r\n public async dispose(reason?: string): Promise {\r\n this.privConversationIsDisposed = true;\r\n if (this.privConnectionConfigPromise !== undefined) {\r\n const connection: IConnection = await this.privConnectionConfigPromise;\r\n await connection.dispose(reason);\r\n }\r\n await super.dispose(reason);\r\n }\r\n\r\n public async sendMessage(message: string): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n return connection.send(new ConversationConnectionMessage(\r\n MessageType.Text,\r\n message));\r\n }\r\n\r\n public async sendMessageAsync(message: string): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n\r\n await connection.send(new ConversationConnectionMessage(MessageType.Text, message));\r\n }\r\n\r\n protected privDisconnect(): Promise {\r\n if (this.terminateMessageLoop) {\r\n return;\r\n }\r\n this.cancelRecognition(this.privConversationRequestSession.sessionId,\r\n this.privConversationRequestSession.requestId,\r\n CancellationReason.Error,\r\n CancellationErrorCode.NoError,\r\n \"Disconnecting\");\r\n\r\n this.terminateMessageLoop = true;\r\n return Promise.resolve();\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/require-await\r\n protected async processTypeSpecificMessages(): Promise {\r\n return true;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n this.terminateMessageLoop = true;\r\n\r\n const cancelEvent: ConversationTranslationCanceledEventArgs = new ConversationTranslationCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n sessionId);\r\n\r\n try {\r\n if (!!this.privConversationServiceConnector.canceled) {\r\n this.privConversationServiceConnector.canceled(this.privConversationServiceConnector, cancelEvent);\r\n }\r\n } catch {\r\n // continue on error\r\n }\r\n }\r\n\r\n /**\r\n * Establishes a websocket connection to the end point.\r\n */\r\n protected async conversationConnectImpl(connection: Promise): Promise {\r\n this.privConnectionLoop = this.startMessageLoop();\r\n return connection;\r\n }\r\n\r\n /**\r\n * Process incoming websocket messages\r\n */\r\n private async receiveConversationMessageOverride(): Promise {\r\n if (this.isDisposed() || this.terminateMessageLoop) {\r\n return Promise.resolve();\r\n }\r\n // we won't rely on the cascading promises of the connection since we want to continually be available to receive messages\r\n const communicationCustodian: Deferred = new Deferred();\r\n\r\n try {\r\n const connection: IConnection = await this.fetchConnection();\r\n const message: ConversationConnectionMessage = await connection.read() as ConversationConnectionMessage;\r\n if (this.isDisposed() || this.terminateMessageLoop) {\r\n // We're done.\r\n communicationCustodian.resolve();\r\n return Promise.resolve();\r\n }\r\n\r\n if (!message) {\r\n return this.receiveConversationMessageOverride();\r\n }\r\n\r\n const sessionId: string = this.privConversationRequestSession.sessionId;\r\n let sendFinal: boolean = false;\r\n\r\n try {\r\n switch (message.conversationMessageType.toLowerCase()) {\r\n case \"info\":\r\n case \"participant_command\":\r\n case \"command\":\r\n const commandPayload: CommandResponsePayload = CommandResponsePayload.fromJSON(message.textBody);\r\n switch (commandPayload.command.toLowerCase()) {\r\n\r\n /**\r\n * 'ParticpantList' is the first message sent to the user after the websocket connection has opened.\r\n * The consuming client must wait for this message to arrive\r\n * before starting to send their own data.\r\n */\r\n case \"participantlist\":\r\n\r\n const participantsPayload: IParticipantsListPayloadResponse = ParticipantsListPayloadResponse.fromJSON(message.textBody);\r\n\r\n const participantsResult: IInternalParticipant[] = participantsPayload.participants.map((p: IParticipantPayloadResponse): IInternalParticipant => {\r\n const participant: IInternalParticipant = {\r\n avatar: p.avatar,\r\n displayName: p.nickname,\r\n id: p.participantId,\r\n isHost: p.ishost,\r\n isMuted: p.ismuted,\r\n isUsingTts: p.usetts,\r\n preferredLanguage: p.locale\r\n };\r\n return participant;\r\n });\r\n\r\n if (!!this.privConversationServiceConnector.participantsListReceived) {\r\n this.privConversationServiceConnector.participantsListReceived(this.privConversationServiceConnector,\r\n new ParticipantsListEventArgs(participantsPayload.roomid, participantsPayload.token,\r\n participantsPayload.translateTo, participantsPayload.profanityFilter,\r\n participantsPayload.roomProfanityFilter, participantsPayload.roomLocked,\r\n participantsPayload.muteAll, participantsResult, sessionId));\r\n }\r\n break;\r\n\r\n /**\r\n * 'SetTranslateToLanguages' represents the list of languages being used in the Conversation by all users(?).\r\n * This is sent at the start of the Conversation\r\n */\r\n case \"settranslatetolanguages\":\r\n\r\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\r\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantAttributeEventArgs(commandPayload.participantId,\r\n ConversationTranslatorCommandTypes.setTranslateToLanguages,\r\n commandPayload.value, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'SetProfanityFiltering' lets the client set the level of profanity filtering.\r\n * If sent by the participant the setting will effect only their own profanity level.\r\n * If sent by the host, the setting will effect all participants including the host.\r\n * Note: the profanity filters differ from Speech Service (?): 'marked', 'raw', 'removed', 'tagged'\r\n */\r\n case \"setprofanityfiltering\":\r\n\r\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\r\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantAttributeEventArgs(commandPayload.participantId,\r\n ConversationTranslatorCommandTypes.setProfanityFiltering,\r\n commandPayload.value, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'SetMute' is sent if the participant has been muted by the host.\r\n * Check the 'participantId' to determine if the current user has been muted.\r\n */\r\n case \"setmute\":\r\n\r\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\r\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantAttributeEventArgs(commandPayload.participantId,\r\n ConversationTranslatorCommandTypes.setMute,\r\n commandPayload.value, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'SetMuteAll' is sent if the Conversation has been muted by the host.\r\n */\r\n case \"setmuteall\":\r\n\r\n if (!!this.privConversationServiceConnector.muteAllCommandReceived) {\r\n this.privConversationServiceConnector.muteAllCommandReceived(this.privConversationServiceConnector,\r\n new MuteAllEventArgs(commandPayload.value as boolean, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'RoomExpirationWarning' is sent towards the end of the Conversation session to give a timeout warning.\r\n */\r\n case \"roomexpirationwarning\":\r\n\r\n if (!!this.privConversationServiceConnector.conversationExpiration) {\r\n this.privConversationServiceConnector.conversationExpiration(this.privConversationServiceConnector,\r\n new ConversationExpirationEventArgs(commandPayload.value as number, this.privConversationRequestSession.sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'SetUseTts' is sent as a confirmation if the user requests TTS to be turned on or off.\r\n */\r\n case \"setusetts\":\r\n\r\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\r\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantAttributeEventArgs(commandPayload.participantId,\r\n ConversationTranslatorCommandTypes.setUseTTS,\r\n commandPayload.value, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'SetLockState' is set if the host has locked or unlocked the Conversation.\r\n */\r\n case \"setlockstate\":\r\n\r\n if (!!this.privConversationServiceConnector.lockRoomCommandReceived) {\r\n this.privConversationServiceConnector.lockRoomCommandReceived(this.privConversationServiceConnector,\r\n new LockRoomEventArgs(commandPayload.value as boolean, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'ChangeNickname' is received if a user changes their display name.\r\n * Any cached particpiants list should be updated to reflect the display name.\r\n */\r\n case \"changenickname\":\r\n\r\n if (!!this.privConversationServiceConnector.participantUpdateCommandReceived) {\r\n this.privConversationServiceConnector.participantUpdateCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantAttributeEventArgs(commandPayload.participantId,\r\n ConversationTranslatorCommandTypes.changeNickname,\r\n commandPayload.nickname, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'JoinSession' is sent when a user joins the Conversation.\r\n */\r\n case \"joinsession\":\r\n\r\n const joinParticipantPayload: ParticipantPayloadResponse = ParticipantPayloadResponse.fromJSON(message.textBody);\r\n\r\n const joiningParticipant: IInternalParticipant = {\r\n avatar: joinParticipantPayload.avatar,\r\n displayName: joinParticipantPayload.nickname,\r\n id: joinParticipantPayload.participantId,\r\n isHost: joinParticipantPayload.ishost,\r\n isMuted: joinParticipantPayload.ismuted,\r\n isUsingTts: joinParticipantPayload.usetts,\r\n preferredLanguage: joinParticipantPayload.locale,\r\n };\r\n\r\n if (!!this.privConversationServiceConnector.participantJoinCommandReceived) {\r\n this.privConversationServiceConnector.participantJoinCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantEventArgs(\r\n joiningParticipant,\r\n sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'LeaveSession' is sent when a user leaves the Conversation'.\r\n */\r\n case \"leavesession\":\r\n\r\n const leavingParticipant: IInternalParticipant = {\r\n id: commandPayload.participantId\r\n };\r\n\r\n if (!!this.privConversationServiceConnector.participantLeaveCommandReceived) {\r\n this.privConversationServiceConnector.participantLeaveCommandReceived(this.privConversationServiceConnector,\r\n new ParticipantEventArgs(leavingParticipant, sessionId));\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * 'DisconnectSession' is sent when a user is disconnected from the session (e.g. network problem).\r\n * Check the 'ParticipantId' to check whether the message is for the current user.\r\n */\r\n case \"disconnectsession\":\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\r\n const disconnectParticipant: IInternalParticipant = {\r\n id: commandPayload.participantId\r\n };\r\n\r\n break;\r\n\r\n case \"token\":\r\n const token = new CognitiveTokenAuthentication(\r\n (): Promise => {\r\n const authorizationToken = commandPayload.token;\r\n return Promise.resolve(authorizationToken);\r\n },\r\n (): Promise => {\r\n const authorizationToken = commandPayload.token;\r\n return Promise.resolve(authorizationToken);\r\n });\r\n this.authentication = token;\r\n\r\n break;\r\n\r\n /**\r\n * Message not recognized.\r\n */\r\n default:\r\n break;\r\n }\r\n break;\r\n\r\n /**\r\n * 'partial' (or 'hypothesis') represents a unfinalized speech message.\r\n */\r\n case \"partial\":\r\n\r\n /**\r\n * 'final' (or 'phrase') represents a finalized speech message.\r\n */\r\n case \"final\":\r\n\r\n const speechPayload: SpeechResponsePayload = SpeechResponsePayload.fromJSON(message.textBody);\r\n\r\n const speechResult: ConversationTranslationResult = new ConversationTranslationResult(speechPayload.participantId,\r\n this.getTranslations(speechPayload.translations),\r\n speechPayload.language,\r\n undefined,\r\n undefined,\r\n speechPayload.recognition,\r\n undefined,\r\n undefined,\r\n message.textBody,\r\n undefined);\r\n\r\n if (speechPayload.isFinal) {\r\n // check the length, sometimes empty finals are returned\r\n if (speechResult.text !== undefined && speechResult.text.length > 0) {\r\n sendFinal = true;\r\n } else if (speechPayload.id === this.privLastPartialUtteranceId) {\r\n // send final as normal. We had a non-empty partial for this same utterance\r\n // so sending the empty final is important\r\n sendFinal = true;\r\n } else {\r\n // suppress unneeded final\r\n }\r\n\r\n if (sendFinal) {\r\n if (!!this.privConversationServiceConnector.translationReceived) {\r\n this.privConversationServiceConnector.translationReceived(this.privConversationServiceConnector,\r\n new ConversationReceivedTranslationEventArgs(ConversationTranslatorMessageTypes.final, speechResult, sessionId));\r\n }\r\n }\r\n } else if (speechResult.text !== undefined) {\r\n this.privLastPartialUtteranceId = speechPayload.id;\r\n if (!!this.privConversationServiceConnector.translationReceived) {\r\n this.privConversationServiceConnector.translationReceived(this.privConversationServiceConnector,\r\n new ConversationReceivedTranslationEventArgs(ConversationTranslatorMessageTypes.partial, speechResult, sessionId));\r\n }\r\n }\r\n\r\n break;\r\n\r\n /**\r\n * \"translated_message\" is a text message or instant message (IM).\r\n */\r\n case \"translated_message\":\r\n\r\n const textPayload: TextResponsePayload = TextResponsePayload.fromJSON(message.textBody);\r\n\r\n const textResult: ConversationTranslationResult = new ConversationTranslationResult(textPayload.participantId,\r\n this.getTranslations(textPayload.translations),\r\n textPayload.language,\r\n undefined,\r\n undefined,\r\n textPayload.originalText,\r\n undefined,\r\n undefined,\r\n undefined,\r\n message.textBody,\r\n undefined);\r\n\r\n if (!!this.privConversationServiceConnector.translationReceived) {\r\n this.privConversationServiceConnector.translationReceived(this.privConversationServiceConnector,\r\n new ConversationReceivedTranslationEventArgs(ConversationTranslatorMessageTypes.instantMessage, textResult, sessionId));\r\n }\r\n break;\r\n\r\n default:\r\n // ignore any unsupported message types\r\n break;\r\n }\r\n } catch (e) {\r\n // continue\r\n }\r\n return this.receiveConversationMessageOverride();\r\n } catch (e) {\r\n this.terminateMessageLoop = true;\r\n }\r\n\r\n return communicationCustodian.promise;\r\n }\r\n\r\n private async startMessageLoop(): Promise {\r\n if (this.isDisposed()) {\r\n return Promise.resolve();\r\n }\r\n this.terminateMessageLoop = false;\r\n\r\n const messageRetrievalPromise = this.receiveConversationMessageOverride();\r\n\r\n try {\r\n const r = await messageRetrievalPromise;\r\n return r;\r\n } catch (error) {\r\n this.cancelRecognition(this.privRequestSession ? this.privRequestSession.sessionId : \"\", this.privRequestSession ? this.privRequestSession.requestId : \"\", CancellationReason.Error, CancellationErrorCode.RuntimeError, error as string);\r\n return null;\r\n }\r\n }\r\n\r\n // Takes an established websocket connection to the endpoint\r\n private configConnection(): Promise {\r\n if (this.isDisposed()) {\r\n return Promise.resolve(undefined);\r\n }\r\n if (this.privConnectionConfigPromise !== undefined) {\r\n return this.privConnectionConfigPromise.then((connection: IConnection): Promise => {\r\n if (connection.state() === ConnectionState.Disconnected) {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigPromise = undefined;\r\n return this.configConnection();\r\n }\r\n return this.privConnectionConfigPromise;\r\n }, (): Promise => {\r\n this.privConnectionId = null;\r\n this.privConnectionConfigPromise = undefined;\r\n return this.configConnection();\r\n });\r\n }\r\n if (this.terminateMessageLoop) {\r\n return Promise.resolve(undefined);\r\n }\r\n\r\n this.privConnectionConfigPromise = this.connectImpl().then((connection: IConnection): IConnection => connection);\r\n\r\n return this.privConnectionConfigPromise;\r\n }\r\n\r\n private getTranslations(serviceResultTranslations: ITranslationResponsePayload[]): Translations {\r\n let translations: Translations;\r\n\r\n if (undefined !== serviceResultTranslations) {\r\n translations = new Translations();\r\n for (const translation of serviceResultTranslations) {\r\n translations.set(translation.lang, translation.translation);\r\n }\r\n }\r\n\r\n return translations;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n RestConfigBase,\r\n WebsocketConnection,\r\n} from \"../../common.browser/Exports\";\r\nimport {\r\n IConnection,\r\n IStringDictionary,\r\n} from \"../../common/Exports\";\r\nimport { StringUtils } from \"../../common/StringUtils\";\r\nimport { Contracts } from \"../../sdk/Contracts\";\r\nimport {\r\n PropertyId\r\n} from \"../../sdk/Exports\";\r\nimport {\r\n ConversationImpl\r\n} from \"../../sdk/Transcription/Conversation\";\r\nimport { HeaderNames } from \"../HeaderNames\";\r\nimport { QueryParameterNames } from \"../QueryParameterNames\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./../ConnectionFactoryBase\";\r\nimport {\r\n AuthInfo,\r\n RecognizerConfig,\r\n TranscriberConnectionFactory,\r\n TranslationConnectionFactory,\r\n WebsocketMessageFormatter,\r\n} from \"./../Exports\";\r\n\r\n/**\r\n * Connection factory for the conversation translator. Handles connecting to the regular translator endpoint,\r\n * as well as the virtual microphone array transcription endpoint\r\n */\r\nexport class ConversationTranslatorConnectionFactory extends ConnectionFactoryBase {\r\n\r\n private static readonly CTS_VIRT_MIC_PATH: string = \"/speech/recognition/dynamicaudio\";\r\n\r\n private privConvGetter: () => ConversationImpl;\r\n\r\n public constructor(convGetter: () => ConversationImpl) {\r\n super();\r\n\r\n Contracts.throwIfNullOrUndefined(convGetter, \"convGetter\");\r\n this.privConvGetter = convGetter;\r\n }\r\n\r\n public create(config: RecognizerConfig, authInfo: AuthInfo, connectionId?: string): IConnection {\r\n const isVirtMicArrayEndpoint = config.parameters.getProperty(\"ConversationTranslator_MultiChannelAudio\", \"\").toUpperCase() === \"TRUE\";\r\n\r\n const convInfo = this.privConvGetter().room;\r\n const region = convInfo.cognitiveSpeechRegion || config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region, \"\");\r\n\r\n const replacementValues: IStringDictionary = {\r\n hostSuffix: ConnectionFactoryBase.getHostSuffix(region),\r\n path: ConversationTranslatorConnectionFactory.CTS_VIRT_MIC_PATH,\r\n region: encodeURIComponent(region)\r\n };\r\n replacementValues[QueryParameterNames.Language] = encodeURIComponent(config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage, \"\"));\r\n replacementValues[QueryParameterNames.CtsMeetingId] = encodeURIComponent(convInfo.roomId);\r\n replacementValues[QueryParameterNames.CtsDeviceId] = encodeURIComponent(convInfo.participantId);\r\n replacementValues[QueryParameterNames.CtsIsParticipant] = convInfo.isHost ? \"\" : (\"&\" + QueryParameterNames.CtsIsParticipant);\r\n\r\n let endpointUrl: string = \"\";\r\n const queryParams: IStringDictionary = {};\r\n const headers: IStringDictionary = {};\r\n\r\n if (isVirtMicArrayEndpoint) {\r\n // connecting to the conversation transcription virtual microphone array endpoint\r\n endpointUrl = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint);\r\n if (!endpointUrl) {\r\n const hostName = config.parameters.getProperty(\r\n PropertyId.SpeechServiceConnection_Host,\r\n \"transcribe.{region}.cts.speech{hostSuffix}\");\r\n\r\n endpointUrl = \"wss://\" + hostName + \"{path}\";\r\n }\r\n\r\n // because the region can change during a session, we support being passed a format string which we can then\r\n // replace with the correct information.\r\n endpointUrl = StringUtils.formatString(endpointUrl, replacementValues);\r\n\r\n const parsedUrl = new URL(endpointUrl);\r\n parsedUrl.searchParams.forEach((val: string, key: string): void => {\r\n queryParams[key] = val;\r\n });\r\n\r\n const connFactory = new TranscriberConnectionFactory();\r\n connFactory.setQueryParams(queryParams, config, endpointUrl);\r\n\r\n // Some query parameters are required for the CTS endpoint, let's explicity set them here\r\n queryParams[QueryParameterNames.CtsMeetingId] = replacementValues[QueryParameterNames.CtsMeetingId];\r\n queryParams[QueryParameterNames.CtsDeviceId] = replacementValues[QueryParameterNames.CtsDeviceId];\r\n if (!convInfo.isHost) {\r\n queryParams[QueryParameterNames.CtsIsParticipant] = \"\"; // this doesn't have a value so set to an empty string\r\n }\r\n\r\n if (!(QueryParameterNames.Format in queryParams)) {\r\n queryParams[QueryParameterNames.Format] = \"simple\";\r\n }\r\n\r\n parsedUrl.searchParams.forEach((val: string, key: string): void => {\r\n parsedUrl.searchParams.set(key, queryParams[key]);\r\n delete queryParams[key];\r\n });\r\n\r\n endpointUrl = parsedUrl.toString();\r\n\r\n } else {\r\n // connecting to regular translation endpoint\r\n const connFactory = new TranslationConnectionFactory();\r\n\r\n endpointUrl = connFactory.getEndpointUrl(config, true);\r\n endpointUrl = StringUtils.formatString(endpointUrl, replacementValues);\r\n\r\n connFactory.setQueryParams(queryParams, config, endpointUrl);\r\n }\r\n\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n headers[RestConfigBase.configParams.token] = convInfo.token;\r\n if (authInfo.token) {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n\r\n const enableCompression = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"\").toUpperCase() === \"TRUE\";\r\n return new WebsocketConnection(endpointUrl, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n/* eslint-disable max-classes-per-file */\r\nimport { ConversationTranslationResult, SessionEventArgs } from \"../../sdk/Exports\";\r\nimport { IInternalParticipant } from \"./ConversationTranslatorInterfaces\";\r\n\r\nexport class MuteAllEventArgs extends SessionEventArgs {\r\n private privIsMuted: boolean;\r\n\r\n public constructor(isMuted: boolean, sessionId?: string) {\r\n super(sessionId);\r\n\r\n this.privIsMuted = isMuted;\r\n }\r\n\r\n public get isMuted(): boolean {\r\n return this.privIsMuted;\r\n }\r\n}\r\n\r\nexport class LockRoomEventArgs extends SessionEventArgs {\r\n private privIsLocked: boolean;\r\n\r\n public constructor(isLocked: boolean, sessionId?: string) {\r\n super(sessionId);\r\n\r\n this.privIsLocked = isLocked;\r\n }\r\n\r\n public get isMuted(): boolean {\r\n return this.privIsLocked;\r\n }\r\n}\r\n\r\nexport class ParticipantEventArgs extends SessionEventArgs {\r\n private privParticipant: IInternalParticipant;\r\n\r\n public constructor(participant: IInternalParticipant, sessionId?: string) {\r\n super(sessionId);\r\n this.privParticipant = participant;\r\n }\r\n\r\n public get participant(): IInternalParticipant {\r\n return this.privParticipant;\r\n }\r\n}\r\n\r\nexport class ParticipantAttributeEventArgs extends SessionEventArgs {\r\n private privValue: boolean | number | string | string[];\r\n private privKey: string;\r\n private privParticipantId: string;\r\n\r\n public constructor(participantId: string, key: string, value: boolean | number | string | string[], sessionId?: string) {\r\n super(sessionId);\r\n\r\n this.privKey = key;\r\n this.privValue = value;\r\n this.privParticipantId = participantId;\r\n }\r\n\r\n public get value(): boolean | number | string | string[] {\r\n return this.privValue;\r\n }\r\n\r\n public get key(): string {\r\n return this.privKey;\r\n }\r\n public get id(): string {\r\n return this.privParticipantId;\r\n }\r\n}\r\n\r\nexport class ParticipantsListEventArgs extends SessionEventArgs {\r\n\r\n private privRoomId: string;\r\n private privSessionToken: string;\r\n private privTranslateTo: string[];\r\n private privProfanityFilter: string;\r\n private privRoomProfanityFilter: string;\r\n private privIsRoomLocked: boolean;\r\n private privIsMuteAll: boolean;\r\n private privParticipants: IInternalParticipant[];\r\n\r\n public constructor(conversationId: string, token: string, translateTo: string[], profanityFilter: string,\r\n roomProfanityFilter: string, isRoomLocked: boolean, isMuteAll: boolean, participants: IInternalParticipant[], sessionId?: string) {\r\n super(sessionId);\r\n this.privRoomId = conversationId;\r\n this.privSessionToken = token;\r\n this.privTranslateTo = translateTo;\r\n this.privProfanityFilter = profanityFilter;\r\n this.privRoomProfanityFilter = roomProfanityFilter;\r\n this.privIsRoomLocked = isRoomLocked;\r\n this.privIsRoomLocked = isMuteAll;\r\n this.privParticipants = participants;\r\n }\r\n public get sessionToken(): string {\r\n return this.privSessionToken;\r\n }\r\n\r\n public get conversationId(): string {\r\n return this.privRoomId;\r\n }\r\n\r\n public get translateTo(): string[] {\r\n return this.privTranslateTo;\r\n }\r\n\r\n public get profanityFilter(): string {\r\n return this.privProfanityFilter;\r\n }\r\n\r\n public get roomProfanityFilter(): string {\r\n return this.privRoomProfanityFilter;\r\n }\r\n\r\n public get isRoomLocked(): boolean {\r\n return this.privIsRoomLocked;\r\n }\r\n\r\n public get isMuteAll(): boolean {\r\n return this.privIsMuteAll;\r\n }\r\n\r\n public get participants(): IInternalParticipant[] {\r\n return this.privParticipants;\r\n }\r\n}\r\n\r\nexport class ConversationReceivedTranslationEventArgs {\r\n private privPayload: ConversationTranslationResult;\r\n private privCommand: string;\r\n private privSessionId: string;\r\n\r\n public constructor(command: string, payload: ConversationTranslationResult, sessionId?: string) {\r\n this.privPayload = payload;\r\n this.privCommand = command;\r\n this.privSessionId = sessionId;\r\n }\r\n\r\n public get payload(): ConversationTranslationResult {\r\n return this.privPayload;\r\n }\r\n\r\n public get command(): string {\r\n return this.privCommand;\r\n }\r\n\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ConnectionEventArgs,\r\n ConversationExpirationEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n SessionEventArgs,\r\n } from \"../../sdk/Exports\";\r\n// import { ConversationClient } from \"./ConversationConnection\";\r\nimport {\r\n ConversationReceivedTranslationEventArgs,\r\n LockRoomEventArgs,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs } from \"./ConversationTranslatorEventArgs\";\r\n\r\n/**\r\n * Internal conversation data\r\n */\r\nexport interface IInternalConversation {\r\n // the token to use for connecting to the Speech Service\r\n cognitiveSpeechAuthToken: string;\r\n // the region to use for connecting to the Speech Service\r\n cognitiveSpeechRegion: string;\r\n // the unique id of the user who started or joined the Conversation\r\n participantId: string;\r\n // a descriptive name for the Conversation\r\n name: string;\r\n // a descriptive name for the Conversation\r\n description: string;\r\n // the speech model ID for custom speech\r\n speechModel: string;\r\n // represents the level of speech supported in the Conversation (0: everyone can speak, 2: only host can speak, 3: no-one can speak)\r\n modalities: number;\r\n // ?\r\n isApproved: boolean;\r\n // the mute flag has been set at conversation level and only the host can speak\r\n isMuted: boolean;\r\n // the 5 character conversation Id\r\n roomId: string;\r\n // the hex color string to represent a user. If there are many users this hex color may be reused (?).\r\n avatar: string;\r\n // the token to use when calling the websocket\r\n token: string;\r\n // used for tracking the session and help with troubleshooting problems in the logs\r\n correlationId: string;\r\n // extracted from the headers\r\n requestId: string;\r\n // set programmatically\r\n isHost: boolean;\r\n}\r\n\r\n/**\r\n * The user who is participating in the conversation.\r\n */\r\nexport interface IInternalParticipant {\r\n avatar?: string;\r\n displayName?: string;\r\n id?: string;\r\n isHost?: boolean;\r\n isMuted?: boolean;\r\n isUsingTts?: boolean;\r\n profanity?: boolean;\r\n preferredLanguage?: string;\r\n translateToLanguages?: string[];\r\n voice?: string;\r\n}\r\n\r\n/** Users participating in the conversation */\r\nexport class InternalParticipants {\r\n\r\n public constructor(public participants: IInternalParticipant[] = [], public meId?: string) {\r\n\r\n }\r\n\r\n /**\r\n * Add or update a participant\r\n * @param value\r\n */\r\n public addOrUpdateParticipant(value: IInternalParticipant): IInternalParticipant {\r\n if (value === undefined) {\r\n return;\r\n }\r\n\r\n const exists: number = this.getParticipantIndex(value.id);\r\n if (exists > -1) {\r\n this.participants.splice(exists, 1, value);\r\n } else {\r\n this.participants.push(value);\r\n }\r\n\r\n // ensure it was added ok\r\n return this.getParticipant(value.id);\r\n }\r\n\r\n /**\r\n * Find the participant's position in the participants list.\r\n * @param id\r\n */\r\n public getParticipantIndex(id: string): number {\r\n return this.participants.findIndex((p: IInternalParticipant): boolean => p.id === id);\r\n }\r\n\r\n /**\r\n * Find the participant by id.\r\n * @param id\r\n */\r\n public getParticipant(id: string): IInternalParticipant {\r\n return this.participants.find((p: IInternalParticipant): boolean => p.id === id);\r\n }\r\n\r\n /**\r\n * Remove a participant from the participants list.\r\n */\r\n public deleteParticipant(id: string): void {\r\n this.participants = this.participants.filter((p: IInternalParticipant): boolean => p.id !== id);\r\n }\r\n\r\n /**\r\n * Helper to return the conversation host.\r\n */\r\n public get host(): IInternalParticipant {\r\n return this.participants.find((p: IInternalParticipant): boolean => p.isHost === true );\r\n }\r\n\r\n /**\r\n * Helper to return the current user.\r\n */\r\n public get me(): IInternalParticipant {\r\n return this.getParticipant(this.meId);\r\n }\r\n}\r\n\r\n/**\r\n * Recognizer for handling Conversation Translator websocket messages\r\n */\r\nexport interface ConversationRecognizer {\r\n isDisposed(): boolean;\r\n sendRequest: (command: string, cb?: () => void, err?: (e: string) => void) => void;\r\n cancelSpeech?: () => Promise;\r\n close?: () => Promise;\r\n conversationExpiration?: (sender: ConversationRecognizer, event: ConversationExpirationEventArgs) => void;\r\n connected?: (e: ConnectionEventArgs) => void;\r\n disconnected?: (e: ConnectionEventArgs) => void;\r\n canceled?: (sender: ConversationRecognizer, event: ConversationTranslationCanceledEventArgs) => void;\r\n connectionOpened?: (sender: ConversationRecognizer, event: SessionEventArgs) => void;\r\n connectionClosed?: (sender: ConversationRecognizer, event: SessionEventArgs) => void;\r\n participantsListReceived?: (sender: ConversationRecognizer, event: ParticipantsListEventArgs) => void;\r\n translationReceived?: (sender: ConversationRecognizer, event: ConversationReceivedTranslationEventArgs) => void;\r\n lockRoomCommandReceived?: (sender: ConversationRecognizer, event: LockRoomEventArgs) => void;\r\n muteAllCommandReceived?: (sender: ConversationRecognizer, event: MuteAllEventArgs) => void;\r\n participantJoinCommandReceived?: (sender: ConversationRecognizer, event: ParticipantEventArgs) => void;\r\n participantLeaveCommandReceived?: (sender: ConversationRecognizer, event: ParticipantEventArgs) => void;\r\n participantUpdateCommandReceived?: (sender: ConversationRecognizer, event: ParticipantAttributeEventArgs) => void;\r\n connect?: (token: string, cb?: () => void, err?: (e: string) => void) => void;\r\n}\r\n\r\n/**\r\n * Error message returned from the Conversation Translator websocket\r\n */\r\nexport interface IConversationResponseErrorMessage {\r\n code: string;\r\n message: string;\r\n}\r\n\r\n/**\r\n * Error returned from the Conversation Translator websocket\r\n */\r\nexport interface IConversationResponseError {\r\n error: IConversationResponseErrorMessage;\r\n}\r\n\r\n/**\r\n * Base message command\r\n */\r\nexport interface IClientMessage {\r\n type: any;\r\n}\r\n\r\n/**\r\n * Command message\r\n */\r\nexport interface ICommandMessage extends IClientMessage {\r\n command?: string;\r\n}\r\n\r\n/**\r\n * Text message command\r\n */\r\nexport interface IInstantMessageCommand extends ICommandMessage {\r\n roomId: string;\r\n nickname?: string;\r\n participantId: string;\r\n text: string;\r\n}\r\n\r\n/**\r\n * Lock command\r\n */\r\nexport interface ILockConversationCommand extends ICommandMessage {\r\n id?: string; // incoming ws\r\n nickname?: string; // incoming ws\r\n participantId: string; // host - incoming ws\r\n roomid: string;\r\n value: boolean;\r\n}\r\n\r\n/**\r\n * Mute all command\r\n */\r\nexport interface IMuteAllCommand extends ICommandMessage {\r\n roomid: string;\r\n nickname?: string; // incoming ws\r\n participantId: string; // host\r\n value: boolean;\r\n id?: string; // incoming ws\r\n}\r\n\r\n/**\r\n * Mute participant command\r\n */\r\nexport interface IMuteCommand extends ICommandMessage {\r\n roomid: string;\r\n nickname?: string;\r\n participantId: string; // participant\r\n value: boolean;\r\n id?: string; // incoming ws\r\n}\r\n\r\n/**\r\n * Remove participant command\r\n */\r\nexport interface IEjectParticipantCommand extends ICommandMessage {\r\n roomid: string;\r\n participantId: string; // participant\r\n}\r\n\r\n/**\r\n * Change nickname command\r\n */\r\nexport interface IChangeNicknameCommand extends ICommandMessage {\r\n roomid: string;\r\n participantId: string;\r\n nickname: string;\r\n value: string;\r\n}\r\n\r\n/**\r\n * List of command message types\r\n */\r\nexport const ConversationTranslatorMessageTypes = {\r\n command: \"command\",\r\n final: \"final\",\r\n info: \"info\",\r\n instantMessage: \"instant_message\",\r\n keepAlive: \"keep_alive\",\r\n partial: \"partial\",\r\n participantCommand: \"participant_command\",\r\n translatedMessage: \"translated_message\"\r\n};\r\n\r\n/**\r\n * List of command types\r\n */\r\nexport const ConversationTranslatorCommandTypes = {\r\n changeNickname: \"ChangeNickname\",\r\n disconnectSession: \"DisconnectSession\",\r\n ejectParticipant: \"EjectParticipant\",\r\n instant_message: \"instant_message\",\r\n joinSession: \"JoinSession\",\r\n leaveSession: \"LeaveSession\",\r\n participantList: \"ParticipantList\",\r\n roomExpirationWarning: \"RoomExpirationWarning\",\r\n setLockState: \"SetLockState\",\r\n setMute: \"SetMute\",\r\n setMuteAll: \"SetMuteAll\",\r\n setProfanityFiltering: \"SetProfanityFiltering\",\r\n setTranslateToLanguages: \"SetTranslateToLanguages\",\r\n setUseTTS: \"SetUseTTS\"\r\n};\r\n\r\n/**\r\n * HTTP response helper\r\n */\r\nexport interface IResponse {\r\n ok: boolean;\r\n status: number;\r\n statusText: string;\r\n data: string;\r\n json: () => T;\r\n headers: string;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig\r\n} from \"../../common.speech/Exports\";\r\nimport {\r\n BackgroundEvent,\r\n Events,\r\n Timeout\r\n} from \"../../common/Exports\";\r\nimport { AudioConfigImpl } from \"../../sdk/Audio/AudioConfig\";\r\nimport { Contracts } from \"../../sdk/Contracts\";\r\nimport {\r\n AudioConfig,\r\n Connection,\r\n ConnectionEventArgs,\r\n ConversationExpirationEventArgs,\r\n ConversationParticipantsChangedEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n PropertyCollection,\r\n Recognizer,\r\n SessionEventArgs,\r\n SpeechTranslationConfig\r\n} from \"../../sdk/Exports\";\r\nimport { SpeechTranslationConfigImpl } from \"../../sdk/SpeechTranslationConfig\";\r\nimport { ConversationImpl } from \"../../sdk/Transcription/Conversation\";\r\nimport { Callback, IConversation } from \"../../sdk/Transcription/IConversation\";\r\nimport { ConversationConnectionFactory } from \"./ConversationConnectionFactory\";\r\nimport { ConversationServiceAdapter } from \"./ConversationServiceAdapter\";\r\nimport {\r\n ConversationReceivedTranslationEventArgs,\r\n LockRoomEventArgs,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs\r\n} from \"./ConversationTranslatorEventArgs\";\r\nimport {\r\n ConversationRecognizer,\r\n} from \"./ConversationTranslatorInterfaces\";\r\n\r\nexport class ConversationRecognizerFactory {\r\n public static fromConfig(conversation: IConversation, speechConfig: SpeechTranslationConfig, audioConfig?: AudioConfig): ConversationRecognizer {\r\n return new ConversationTranslatorRecognizer(conversation, speechConfig, audioConfig);\r\n }\r\n}\r\n\r\n/**\r\n * Sends messages to the Conversation Translator websocket and listens for incoming events containing websocket messages.\r\n * Based off the recognizers in the SDK folder.\r\n */\r\nexport class ConversationTranslatorRecognizer extends Recognizer implements ConversationRecognizer {\r\n\r\n private privIsDisposed: boolean;\r\n private privSpeechRecognitionLanguage: string;\r\n private privConnection: Connection;\r\n private privConversation: ConversationImpl;\r\n private privTimeoutToken: any;\r\n private privSetTimeout: (cb: () => void, delay: number) => number;\r\n private privClearTimeout: (id: number) => void;\r\n\r\n public constructor(conversation: IConversation, speechConfig: SpeechTranslationConfig, audioConfig?: AudioConfig) {\r\n const serviceConfigImpl = speechConfig as SpeechTranslationConfigImpl;\r\n Contracts.throwIfNull(serviceConfigImpl, \"speechConfig\");\r\n const conversationImpl = conversation as ConversationImpl;\r\n Contracts.throwIfNull(conversationImpl, \"conversationImpl\");\r\n\r\n super(audioConfig, serviceConfigImpl.properties, new ConversationConnectionFactory());\r\n\r\n this.privConversation = conversationImpl;\r\n this.privIsDisposed = false;\r\n this.privProperties = serviceConfigImpl.properties.clone();\r\n this.privConnection = Connection.fromRecognizer(this);\r\n this.privSetTimeout = (typeof (Blob) !== \"undefined\" && typeof (Worker) !== \"undefined\") ? Timeout.setTimeout : setTimeout;\r\n this.privClearTimeout = (typeof (Blob) !== \"undefined\" && typeof (Worker) !== \"undefined\") ? Timeout.clearTimeout : clearTimeout;\r\n }\r\n\r\n public canceled: (sender: ConversationRecognizer, event: ConversationTranslationCanceledEventArgs) => void;\r\n public conversationExpiration: (sender: ConversationRecognizer, event: ConversationExpirationEventArgs) => void;\r\n public lockRoomCommandReceived: (sender: ConversationRecognizer, event: LockRoomEventArgs) => void;\r\n public muteAllCommandReceived: (sender: ConversationRecognizer, event: MuteAllEventArgs) => void;\r\n public participantJoinCommandReceived: (sender: ConversationRecognizer, event: ParticipantEventArgs) => void;\r\n public participantLeaveCommandReceived: (sender: ConversationRecognizer, event: ParticipantEventArgs) => void;\r\n public participantUpdateCommandReceived: (sender: ConversationRecognizer, event: ParticipantAttributeEventArgs) => void;\r\n public connectionOpened: (sender: ConversationRecognizer, event: SessionEventArgs) => void;\r\n public connectionClosed: (sender: ConversationRecognizer, event: SessionEventArgs) => void;\r\n public translationReceived: (sender: ConversationRecognizer, event: ConversationReceivedTranslationEventArgs) => void;\r\n public participantsListReceived: (sender: ConversationRecognizer, event: ParticipantsListEventArgs) => void;\r\n public participantsChanged: (sender: ConversationRecognizer, event: ConversationParticipantsChangedEventArgs) => void;\r\n\r\n public set connected(cb: (e: ConnectionEventArgs) => void) {\r\n this.privConnection.connected = cb;\r\n }\r\n\r\n public set disconnected(cb: (e: ConnectionEventArgs) => void) {\r\n this.privConnection.disconnected = cb;\r\n }\r\n\r\n /**\r\n * Return the speech language used by the recognizer\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n return this.privSpeechRecognitionLanguage;\r\n }\r\n\r\n /**\r\n * Return the properties for the recognizer\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n /**\r\n * Connect to the recognizer\r\n * @param token\r\n */\r\n public connect(token: string, cb?: () => void, err?: (e: string) => void): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.privReco.conversationTranslatorToken = token;\r\n this.resetConversationTimeout();\r\n this.privReco.connectAsync(cb, err);\r\n } catch (error) {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Disconnect from the recognizer\r\n */\r\n public disconnect(cb?: () => void, err?: (e: string) => void): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n if (this.privTimeoutToken !== undefined) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n this.privClearTimeout(this.privTimeoutToken);\r\n }\r\n this.privReco.disconnect().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n } catch (error) {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n // Destroy the recognizer.\r\n this.dispose(true).catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Send the mute all participants command to the websocket\r\n * @param conversationId\r\n * @param participantId\r\n * @param isMuted\r\n */\r\n public sendRequest(command: string, cb?: () => void, err?: (e: string) => void): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n this.sendMessage(command, cb, err);\r\n } catch (error) {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n\r\n // Destroy the recognizer.\r\n this.dispose(true).catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n\r\n }\r\n }\r\n\r\n /**\r\n * Close and dispose the recognizer\r\n */\r\n public async close(): Promise {\r\n if (!this.privIsDisposed) {\r\n if (!!this.privConnection) {\r\n this.privConnection.closeConnection();\r\n this.privConnection.close();\r\n }\r\n this.privConnection = undefined;\r\n await this.dispose(true);\r\n }\r\n }\r\n\r\n /**\r\n * Dispose the recognizer\r\n * @param disposing\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privIsDisposed) {\r\n return;\r\n }\r\n if (disposing) {\r\n if (this.privTimeoutToken !== undefined) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n this.privClearTimeout(this.privTimeoutToken);\r\n }\r\n this.privIsDisposed = true;\r\n if (!!this.privConnection) {\r\n this.privConnection.closeConnection();\r\n this.privConnection.close();\r\n this.privConnection = undefined;\r\n }\r\n await super.dispose(disposing);\r\n }\r\n }\r\n\r\n /**\r\n * Create the config for the recognizer\r\n * @param speechConfig\r\n */\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n /**\r\n * Create the service recognizer.\r\n * The audio source is redundnant here but is required by the implementation.\r\n * @param authentication\r\n * @param connectionFactory\r\n * @param audioConfig\r\n * @param recognizerConfig\r\n */\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n\r\n const audioSource: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n\r\n return new ConversationServiceAdapter(authentication, connectionFactory, audioSource, recognizerConfig, this);\r\n }\r\n\r\n private sendMessage(msg: string, cb?: Callback, err?: Callback): void {\r\n const withAsync = this.privReco as ConversationServiceAdapter;\r\n const PromiseToEmptyCallback = (promise: Promise, cb?: Callback, err?: Callback): void => {\r\n if (promise !== undefined) {\r\n promise.then((): void => {\r\n try {\r\n if (!!cb) {\r\n cb();\r\n }\r\n } catch (e) {\r\n if (!!err) {\r\n err(`'Unhandled error on promise callback: ${e as string}'`);\r\n }\r\n }\r\n }, (reason: any): void => {\r\n try {\r\n if (!!err) {\r\n err(reason);\r\n }\r\n // eslint-disable-next-line no-empty\r\n } catch (error) { }\r\n });\r\n } else {\r\n if (!!err) {\r\n err(\"Null promise\");\r\n }\r\n }\r\n };\r\n\r\n PromiseToEmptyCallback(withAsync.sendMessageAsync(msg), cb, err);\r\n this.resetConversationTimeout();\r\n }\r\n\r\n private resetConversationTimeout(): void {\r\n if (this.privTimeoutToken !== undefined) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n this.privClearTimeout(this.privTimeoutToken);\r\n }\r\n\r\n this.privTimeoutToken = this.privSetTimeout((): void => {\r\n this.sendRequest(this.privConversation.getKeepAlive());\r\n }, 60000);\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ConnectionMessage,\r\n Deferred,\r\n IWebsocketMessageFormatter,\r\n MessageType,\r\n RawWebsocketMessage,\r\n} from \"../../common/Exports\";\r\nimport { ConversationConnectionMessage } from \"./ConversationConnectionMessage\";\r\n\r\n/**\r\n * Based off WebsocketMessageFormatter. The messages for Conversation Translator have some variations from the Speech messages.\r\n */\r\nexport class ConversationWebsocketMessageFormatter implements IWebsocketMessageFormatter {\r\n\r\n /**\r\n * Format incoming messages: text (speech partial/final, IM) or binary (tts)\r\n */\r\n public toConnectionMessage(message: RawWebsocketMessage): Promise {\r\n const deferral = new Deferred();\r\n\r\n try {\r\n if (message.messageType === MessageType.Text) {\r\n const incomingMessage: ConversationConnectionMessage = new ConversationConnectionMessage(message.messageType, message.textContent, {}, message.id);\r\n deferral.resolve(incomingMessage);\r\n } else if (message.messageType === MessageType.Binary) {\r\n deferral.resolve(new ConversationConnectionMessage(message.messageType, message.binaryContent, undefined, message.id));\r\n }\r\n } catch (e) {\r\n deferral.reject(`Error formatting the message. Error: ${e as string}`);\r\n }\r\n\r\n return deferral.promise;\r\n }\r\n\r\n /**\r\n * Format outgoing messages: text (commands or IM)\r\n */\r\n public fromConnectionMessage(message: ConnectionMessage): Promise {\r\n\r\n const deferral = new Deferred();\r\n\r\n try {\r\n if (message.messageType === MessageType.Text) {\r\n const payload = `${message.textBody ? message.textBody : \"\"}`;\r\n deferral.resolve(new RawWebsocketMessage(MessageType.Text, payload, message.id));\r\n }\r\n } catch (e) {\r\n deferral.reject(`Error formatting the message. ${e as string}`);\r\n }\r\n\r\n return deferral.promise;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport { ConversationManager } from \"./ConversationManager\";\r\nexport { ConversationConnectionConfig } from \"./ConversationConnectionConfig\";\r\nexport { ConversationRecognizerFactory } from \"./ConversationTranslatorRecognizer\";\r\nexport { TranscriberRecognizer } from \"./TranscriberRecognizer\";\r\nexport {\r\n ConversationReceivedTranslationEventArgs,\r\n LockRoomEventArgs,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs } from \"./ConversationTranslatorEventArgs\";\r\nexport {\r\n ConversationRecognizer,\r\n ConversationTranslatorCommandTypes,\r\n ConversationTranslatorMessageTypes,\r\n IInternalConversation,\r\n IInternalParticipant,\r\n InternalParticipants} from \"./ConversationTranslatorInterfaces\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the payload for incoming websocket commands\r\n */\r\nexport interface ICommandResponsePayload {\r\n type: string;\r\n command?: string;\r\n id?: string; // incoming ws\r\n nickname?: string; // incoming ws\r\n participantId?: string;\r\n roomid?: string;\r\n value: boolean | number | string;\r\n token?: string;\r\n}\r\n\r\nconst parseCommandResponse = (json: string): ICommandResponsePayload => JSON.parse(json) as ICommandResponsePayload;\r\n\r\nexport class CommandResponsePayload implements ICommandResponsePayload {\r\n private privCommandResponse: ICommandResponsePayload;\r\n\r\n public constructor(json: string) {\r\n this.privCommandResponse = parseCommandResponse(json);\r\n }\r\n\r\n public get type(): string {\r\n return this.privCommandResponse.type;\r\n }\r\n public get command(): string {\r\n return this.privCommandResponse.command;\r\n }\r\n public get id(): string {\r\n return this.privCommandResponse.id;\r\n }\r\n public get nickname(): string {\r\n return this.privCommandResponse.nickname;\r\n }\r\n public get participantId(): string {\r\n return this.privCommandResponse.participantId;\r\n }\r\n public get roomid(): string {\r\n return this.privCommandResponse.roomid;\r\n }\r\n public get value(): boolean | number | string {\r\n return this.privCommandResponse.value;\r\n }\r\n public get token(): string {\r\n return this.privCommandResponse.token;\r\n }\r\n\r\n public static fromJSON(json: string): CommandResponsePayload {\r\n return new CommandResponsePayload(json);\r\n }\r\n\r\n}\r\n","export { CommandResponsePayload } from \"./CommandResponsePayload\";\r\nexport { IParticipantsListPayloadResponse, IParticipantPayloadResponse, ParticipantsListPayloadResponse, ParticipantPayloadResponse } from \"./ParticipantResponsePayload\";\r\nexport { ITranslationResponsePayload, SpeechResponsePayload, TextResponsePayload } from \"./TranslationResponsePayload\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n/**\r\n * Defines the payload for incoming list of participants\r\n */\r\nexport interface IParticipantsListPayloadResponse {\r\n roomid: string;\r\n id: string;\r\n command: string;\r\n participants: IParticipantPayloadResponse[];\r\n token: string;\r\n translateTo: string[];\r\n profanityFilter: string;\r\n roomProfanityFilter: string;\r\n roomLocked: boolean;\r\n muteAll: boolean;\r\n type: string;\r\n}\r\n\r\n/**\r\n * Defines the payload for incoming participant\r\n */\r\nexport interface IParticipantPayloadResponse {\r\n nickname: string;\r\n locale: string;\r\n usetts: boolean;\r\n ismuted: boolean;\r\n ishost: boolean;\r\n participantId: string;\r\n avatar?: string;\r\n}\r\n\r\nconst parseListResponse = (json: string): IParticipantsListPayloadResponse => JSON.parse(json) as IParticipantsListPayloadResponse;\r\nconst parseParticipantResponse = (json: string): IParticipantPayloadResponse => JSON.parse(json) as IParticipantPayloadResponse;\r\n\r\nexport class ParticipantsListPayloadResponse implements IParticipantsListPayloadResponse {\r\n private privParticipantsPayloadResponse: IParticipantsListPayloadResponse;\r\n\r\n private constructor(json: string) {\r\n this.privParticipantsPayloadResponse = parseListResponse(json);\r\n }\r\n\r\n public get roomid(): string {\r\n return this.privParticipantsPayloadResponse.roomid;\r\n }\r\n\r\n public get id(): string {\r\n return this.privParticipantsPayloadResponse.id;\r\n }\r\n\r\n public get command(): string {\r\n return this.privParticipantsPayloadResponse.command;\r\n }\r\n\r\n public get participants(): IParticipantPayloadResponse[] {\r\n return this.privParticipantsPayloadResponse.participants;\r\n }\r\n\r\n public get token(): string {\r\n return this.privParticipantsPayloadResponse.token;\r\n }\r\n\r\n public get translateTo(): string[] {\r\n return this.privParticipantsPayloadResponse.translateTo;\r\n }\r\n\r\n public get profanityFilter(): string {\r\n return this.privParticipantsPayloadResponse.profanityFilter;\r\n }\r\n\r\n public get roomProfanityFilter(): string {\r\n return this.privParticipantsPayloadResponse.roomProfanityFilter;\r\n }\r\n\r\n public get roomLocked(): boolean {\r\n return this.privParticipantsPayloadResponse.roomLocked;\r\n }\r\n\r\n public get muteAll(): boolean {\r\n return this.privParticipantsPayloadResponse.muteAll;\r\n }\r\n\r\n public get type(): string {\r\n return this.privParticipantsPayloadResponse.type;\r\n }\r\n\r\n public static fromJSON(json: string): ParticipantsListPayloadResponse {\r\n return new ParticipantsListPayloadResponse(json);\r\n }\r\n\r\n}\r\n\r\nexport class ParticipantPayloadResponse implements IParticipantPayloadResponse {\r\n\r\n private privParticipantPayloadResponse: IParticipantPayloadResponse;\r\n\r\n private constructor(json: string) {\r\n this.privParticipantPayloadResponse = parseParticipantResponse(json);\r\n }\r\n\r\n public get nickname(): string {\r\n return this.privParticipantPayloadResponse.nickname;\r\n }\r\n\r\n public get locale(): string {\r\n return this.privParticipantPayloadResponse.locale;\r\n }\r\n\r\n public get usetts(): boolean {\r\n return this.privParticipantPayloadResponse.usetts;\r\n }\r\n\r\n public get ismuted(): boolean {\r\n return this.privParticipantPayloadResponse.ismuted;\r\n }\r\n\r\n public get ishost(): boolean {\r\n return this.privParticipantPayloadResponse.ishost;\r\n }\r\n\r\n public get participantId(): string {\r\n return this.privParticipantPayloadResponse.participantId;\r\n }\r\n\r\n public get avatar(): string {\r\n return this.privParticipantPayloadResponse.avatar;\r\n }\r\n\r\n public static fromJSON(json: string): ParticipantPayloadResponse {\r\n return new ParticipantPayloadResponse(json);\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n/**\r\n * Defines the payload for incoming translation messages\r\n */\r\nexport interface ITranslationResponsePayload {\r\n lang: string;\r\n translation: string;\r\n}\r\n\r\nexport interface ITranslationCommandMessage {\r\n translations: ITranslationResponsePayload[];\r\n id: string;\r\n language: string;\r\n nickname: string;\r\n participantId: string;\r\n roomid: string;\r\n timestamp: string;\r\n type: string;\r\n}\r\n\r\nexport interface ISpeechResponsePayload extends ITranslationCommandMessage {\r\n recognition: string;\r\n isFinal: boolean;\r\n}\r\n\r\nexport interface ITextResponsePayload extends ITranslationCommandMessage {\r\n originalText: string;\r\n}\r\n\r\nconst parseSpeechResponse = (json: string): ISpeechResponsePayload => JSON.parse(json) as ISpeechResponsePayload;\r\nconst parseTextResponse = (json: string): ITextResponsePayload => JSON.parse(json) as ITextResponsePayload;\r\n\r\nexport class SpeechResponsePayload implements ISpeechResponsePayload {\r\n\r\n private privSpeechResponse: ISpeechResponsePayload;\r\n\r\n private constructor(json: string) {\r\n this.privSpeechResponse = parseSpeechResponse(json);\r\n }\r\n\r\n public get recognition(): string {\r\n return this.privSpeechResponse.recognition;\r\n }\r\n\r\n public get translations(): ITranslationResponsePayload[] {\r\n return this.privSpeechResponse.translations;\r\n }\r\n\r\n public get id(): string {\r\n return this.privSpeechResponse.id;\r\n }\r\n\r\n public get language(): string {\r\n return this.privSpeechResponse.language;\r\n }\r\n\r\n public get nickname(): string {\r\n return this.privSpeechResponse.nickname;\r\n }\r\n\r\n public get participantId(): string {\r\n return this.privSpeechResponse.participantId;\r\n }\r\n\r\n public get roomid(): string {\r\n return this.privSpeechResponse.roomid;\r\n }\r\n\r\n public get timestamp(): string {\r\n return this.privSpeechResponse.timestamp;\r\n }\r\n\r\n public get type(): string {\r\n return this.privSpeechResponse.type;\r\n }\r\n\r\n public get isFinal(): boolean {\r\n return this.privSpeechResponse.type === \"final\";\r\n }\r\n\r\n public static fromJSON(json: string): SpeechResponsePayload {\r\n return new SpeechResponsePayload(json);\r\n }\r\n\r\n}\r\n\r\nexport class TextResponsePayload implements ITextResponsePayload {\r\n\r\n private privTextResponse: ITextResponsePayload;\r\n\r\n private constructor(json: string) {\r\n this.privTextResponse = parseTextResponse(json);\r\n }\r\n\r\n public get originalText(): string {\r\n return this.privTextResponse.originalText;\r\n }\r\n\r\n public get translations(): ITranslationResponsePayload[] {\r\n return this.privTextResponse.translations;\r\n }\r\n\r\n public get id(): string {\r\n return this.privTextResponse.id;\r\n }\r\n\r\n public get language(): string {\r\n return this.privTextResponse.language;\r\n }\r\n\r\n public get nickname(): string {\r\n return this.privTextResponse.nickname;\r\n }\r\n\r\n public get participantId(): string {\r\n return this.privTextResponse.participantId;\r\n }\r\n\r\n public get roomid(): string {\r\n return this.privTextResponse.roomid;\r\n }\r\n\r\n public get timestamp(): string {\r\n return this.privTextResponse.timestamp;\r\n }\r\n\r\n public get type(): string {\r\n return this.privTextResponse.type;\r\n }\r\n\r\n public static fromJSON(json: string): TextResponsePayload {\r\n return new TextResponsePayload(json);\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { marshalPromiseToCallbacks } from \"../../common/Exports\";\r\nimport { AudioConfigImpl } from \"../../sdk/Audio/AudioConfig\";\r\nimport { AudioStreamFormatImpl } from \"../../sdk/Audio/AudioStreamFormat\";\r\nimport { Contracts } from \"../../sdk/Contracts\";\r\nimport {\r\n AudioConfig,\r\n CancellationEventArgs,\r\n Conversation,\r\n ConversationInfo,\r\n ConversationTranscriber,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n SessionEventArgs,\r\n SpeechRecognitionEventArgs,\r\n SpeechTranslationConfig,\r\n SpeechTranslationConfigImpl,\r\n} from \"../../sdk/Exports\";\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig,\r\n TranscriberConnectionFactory,\r\n TranscriptionServiceRecognizer,\r\n} from \"../Exports\";\r\n\r\nexport class TranscriberRecognizer extends Recognizer {\r\n\r\n public recognizing: (sender: Recognizer, event: SpeechRecognitionEventArgs) => void;\r\n\r\n public recognized: (sender: Recognizer, event: SpeechRecognitionEventArgs) => void;\r\n\r\n public canceled: (sender: Recognizer, event: CancellationEventArgs) => void;\r\n\r\n private privDisposedRecognizer: boolean;\r\n private privConversation: Conversation;\r\n\r\n /**\r\n * TranscriberRecognizer constructor.\r\n * @constructor\r\n * @param {SpeechTranslationConfig} speechTranslationConfig - Non-audio configuration associated with the recognizer\r\n * @param {AudioConfig} audioConfig - An audio configuration associated with the recognizer\r\n */\r\n public constructor(speechTranslationConfig: SpeechTranslationConfig, audioConfig: AudioConfig) {\r\n const speechTranslationConfigImpl: SpeechTranslationConfigImpl = speechTranslationConfig as SpeechTranslationConfigImpl;\r\n Contracts.throwIfNull(speechTranslationConfigImpl, \"speechTranslationConfig\");\r\n\r\n const audioConfigImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n Contracts.throwIfNull(audioConfigImpl, \"audioConfigImpl\");\r\n\r\n Contracts.throwIfNullOrWhitespace(\r\n speechTranslationConfigImpl.speechRecognitionLanguage,\r\n PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n\r\n super(audioConfig, speechTranslationConfigImpl.properties, new TranscriberConnectionFactory());\r\n this.privDisposedRecognizer = false;\r\n }\r\n\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n public set conversation(c: Conversation) {\r\n Contracts.throwIfNullOrUndefined(c, \"Conversation\");\r\n this.privConversation = c;\r\n }\r\n\r\n public getConversationInfo(): ConversationInfo {\r\n Contracts.throwIfNullOrUndefined(this.privConversation, \"Conversation\");\r\n return this.privConversation.conversationInfo;\r\n }\r\n\r\n public startContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.startContinuousRecognitionAsyncImpl(RecognitionMode.Conversation), cb, err);\r\n }\r\n\r\n public stopContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.stopContinuousRecognitionAsyncImpl(), cb, err);\r\n }\r\n\r\n public async close(): Promise {\r\n if (!this.privDisposedRecognizer) {\r\n await this.dispose(true);\r\n }\r\n }\r\n\r\n // Push async join/leave conversation message via serviceRecognizer\r\n public async pushConversationEvent(conversationInfo: ConversationInfo, command: string): Promise {\r\n const reco = (this.privReco) as TranscriptionServiceRecognizer;\r\n Contracts.throwIfNullOrUndefined(reco, \"serviceRecognizer\");\r\n await reco.sendSpeechEventAsync(conversationInfo, command);\r\n }\r\n\r\n public async enforceAudioGating(): Promise {\r\n const audioConfigImpl = this.audioConfig as AudioConfigImpl;\r\n const format: AudioStreamFormatImpl = await audioConfigImpl.format;\r\n const channels = format.channels;\r\n if (channels === 1) {\r\n if (this.properties.getProperty(\"f0f5debc-f8c9-4892-ac4b-90a7ab359fd2\", \"false\").toLowerCase() !== \"true\") {\r\n throw new Error(\"Single channel audio configuration for ConversationTranscriber is currently under private preview, please contact diarizationrequest@microsoft.com for more details\");\r\n }\r\n } else if (channels !== 8) {\r\n throw new Error(`Unsupported audio configuration: Detected ${channels}-channel audio`);\r\n }\r\n return;\r\n }\r\n\r\n public connectCallbacks(transcriber: ConversationTranscriber): void {\r\n this.canceled = (s: any, e: CancellationEventArgs): void => {\r\n if (!!transcriber.canceled) {\r\n transcriber.canceled(transcriber, e);\r\n }\r\n };\r\n this.recognizing = (s: any, e: SpeechRecognitionEventArgs): void => {\r\n if (!!transcriber.transcribing) {\r\n transcriber.transcribing(transcriber, e);\r\n }\r\n };\r\n this.recognized = (s: any, e: SpeechRecognitionEventArgs): void => {\r\n if (!!transcriber.transcribed) {\r\n transcriber.transcribed(transcriber, e);\r\n }\r\n };\r\n this.sessionStarted = (s: any, e: SessionEventArgs): void => {\r\n if (!!transcriber.sessionStarted) {\r\n transcriber.sessionStarted(transcriber, e);\r\n }\r\n };\r\n this.sessionStopped = (s: any, e: SessionEventArgs): void => {\r\n if (!!transcriber.sessionStopped) {\r\n transcriber.sessionStopped(transcriber, e);\r\n }\r\n };\r\n }\r\n\r\n public disconnectCallbacks(): void {\r\n this.canceled = undefined;\r\n this.recognizing = undefined;\r\n this.recognized = undefined;\r\n this.sessionStarted = undefined;\r\n this.sessionStopped = undefined;\r\n }\r\n\r\n /**\r\n * Disposes any resources held by the object.\r\n * @member ConversationTranscriber.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - true if disposing the object.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedRecognizer) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privDisposedRecognizer = true;\r\n await this.implRecognizerStop();\r\n }\r\n\r\n await super.dispose(disposing);\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(\r\n speechConfig,\r\n this.properties);\r\n }\r\n\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const configImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n return new TranscriptionServiceRecognizer(authentication, connectionFactory, configImpl, recognizerConfig, this);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IAudioSource,\r\n IConnection,\r\n MessageType\r\n} from \"../common/Exports\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n ConversationTranscriptionCanceledEventArgs,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SpeechRecognitionEventArgs,\r\n SpeechRecognitionResult,\r\n} from \"../sdk/Exports\";\r\nimport { ConversationInfo } from \"../sdk/Transcription/Exports\";\r\nimport { ConversationProperties } from \"../sdk/Transcription/IConversation\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n ConversationServiceRecognizer,\r\n TranscriberRecognizer\r\n} from \"./Exports\";\r\nimport { IAuthentication } from \"./IAuthentication\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal\";\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class TranscriptionServiceRecognizer extends ConversationServiceRecognizer {\r\n\r\n private privTranscriberRecognizer: TranscriberRecognizer;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n transcriber: TranscriberRecognizer) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, transcriber);\r\n this.privTranscriberRecognizer = transcriber;\r\n this.sendPrePayloadJSONOverride = (connection: IConnection): Promise => this.sendTranscriptionStartJSON(connection);\r\n if (this.privRecognizerConfig.parameters.getProperty(PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps) === \"true\") {\r\n this.privSpeechContext.setWordLevelTimings();\r\n }\r\n }\r\n\r\n public async sendSpeechEventAsync(info: ConversationInfo, command: string): Promise {\r\n if (!!this.privRequestSession.isRecognizing) {\r\n const connection: IConnection = await this.fetchConnection();\r\n await this.sendSpeechEvent(connection, this.createSpeechEventPayload(info, command));\r\n }\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n return this.processSpeechMessages(connectionMessage);\r\n }\r\n\r\n protected handleRecognizedCallback(result: SpeechRecognitionResult, offset: number, sessionId: string): void {\r\n try {\r\n const event: SpeechRecognitionEventArgs = new SpeechRecognitionEventArgs(result, offset, sessionId);\r\n this.privTranscriberRecognizer.recognized(this.privTranscriberRecognizer, event);\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n protected handleRecognizingCallback(result: SpeechRecognitionResult, duration: number, sessionId: string): void {\r\n try {\r\n const ev = new SpeechRecognitionEventArgs(result, duration, sessionId);\r\n this.privTranscriberRecognizer.recognizing(this.privTranscriberRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (!!this.privTranscriberRecognizer.canceled) {\r\n const cancelEvent: ConversationTranscriptionCanceledEventArgs = new ConversationTranscriptionCanceledEventArgs(\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined,\r\n sessionId);\r\n try {\r\n this.privTranscriberRecognizer.canceled(this.privTranscriberRecognizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n\r\n if (!!this.privSuccessCallback) {\r\n const result: SpeechRecognitionResult = new SpeechRecognitionResult(\r\n requestId,\r\n ResultReason.Canceled,\r\n undefined, // Text\r\n undefined, // Duration\r\n undefined, // Offset\r\n undefined, // Language\r\n undefined, // Language Detection Confidence\r\n undefined, // Speaker Id\r\n error,\r\n undefined, // Json\r\n properties);\r\n try {\r\n this.privSuccessCallback(result);\r\n this.privSuccessCallback = undefined;\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n }\r\n\r\n // Encapsulated for derived service recognizers that need to send additional JSON\r\n protected async sendTranscriptionStartJSON(connection: IConnection): Promise {\r\n await this.sendSpeechContext(connection, true);\r\n const info: ConversationInfo = this.privTranscriberRecognizer.getConversationInfo();\r\n const payload: { [id: string]: any } = this.createSpeechEventPayload(info, \"start\");\r\n await this.sendSpeechEvent(connection, payload);\r\n await this.sendWaveHeader(connection);\r\n return;\r\n }\r\n\r\n protected sendSpeechEvent(connection: IConnection, payload: { [id: string]: any }): Promise {\r\n const speechEventJson = JSON.stringify(payload);\r\n\r\n if (speechEventJson) {\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speech.event\",\r\n this.privRequestSession.requestId,\r\n \"application/json\",\r\n speechEventJson));\r\n }\r\n return;\r\n }\r\n\r\n private createSpeechEventPayload(info: ConversationInfo, command: string): { [id: string]: any } {\r\n const eventDict: { id: string; name: string; meeting: ConversationProperties } = { id: \"meeting\", name: command, meeting: info.conversationProperties };\r\n eventDict.meeting.id = info.id;\r\n eventDict.meeting.attendees = info.participants;\r\n eventDict.meeting.record = info.conversationProperties.audiorecording === \"on\" ? \"true\" : \"false\";\r\n return eventDict;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ProxyInfo,\r\n WebsocketConnection,\r\n} from \"../common.browser/Exports\";\r\nimport {\r\n IConnection,\r\n IStringDictionary,\r\n} from \"../common/Exports\";\r\nimport { StringUtils } from \"../common/StringUtils\";\r\nimport {\r\n PropertyId\r\n} from \"../sdk/Exports\";\r\nimport {\r\n ConnectionFactoryBase\r\n} from \"./ConnectionFactoryBase\";\r\nimport {\r\n AuthInfo,\r\n RecognizerConfig,\r\n WebsocketMessageFormatter,\r\n} from \"./Exports\";\r\nimport { HeaderNames } from \"./HeaderNames\";\r\nimport { QueryParameterNames } from \"./QueryParameterNames\";\r\n\r\nexport class TranslationConnectionFactory extends ConnectionFactoryBase {\r\n\r\n public create(\r\n config: RecognizerConfig,\r\n authInfo: AuthInfo,\r\n connectionId?: string): IConnection {\r\n\r\n const endpoint: string = this.getEndpointUrl(config);\r\n\r\n const queryParams: IStringDictionary = {};\r\n this.setQueryParams(queryParams, config, endpoint);\r\n\r\n const headers: IStringDictionary = {};\r\n if (authInfo.token !== undefined && authInfo.token !== \"\") {\r\n headers[authInfo.headerName] = authInfo.token;\r\n }\r\n headers[HeaderNames.ConnectionId] = connectionId;\r\n\r\n config.parameters.setProperty(PropertyId.SpeechServiceConnection_Url, endpoint);\r\n\r\n const enableCompression: boolean = config.parameters.getProperty(\"SPEECH-EnableWebsocketCompression\", \"false\") === \"true\";\r\n return new WebsocketConnection(endpoint, queryParams, headers, new WebsocketMessageFormatter(), ProxyInfo.fromRecognizerConfig(config), enableCompression, connectionId);\r\n }\r\n\r\n public getEndpointUrl(config: RecognizerConfig, returnRegionPlaceholder?: boolean): string {\r\n\r\n const region: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n const hostSuffix: string = ConnectionFactoryBase.getHostSuffix(region);\r\n\r\n let endpointUrl: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Endpoint, undefined);\r\n if (!endpointUrl) {\r\n const host: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_Host, \"wss://{region}.s2s.speech\" + hostSuffix);\r\n endpointUrl = host + \"/speech/translation/cognitiveservices/v1\";\r\n }\r\n\r\n if (returnRegionPlaceholder === true) {\r\n return endpointUrl;\r\n }\r\n\r\n return StringUtils.formatString(endpointUrl, { region });\r\n }\r\n\r\n public setQueryParams(queryParams: IStringDictionary, config: RecognizerConfig, endpointUrl: string): void {\r\n\r\n queryParams.from = config.parameters.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n queryParams.to = config.parameters.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages);\r\n\r\n this.setCommonUrlParams(config, queryParams, endpointUrl);\r\n this.setUrlParameter(\r\n PropertyId.SpeechServiceResponse_TranslationRequestStablePartialResult,\r\n QueryParameterNames.StableTranslation,\r\n config,\r\n queryParams,\r\n endpointUrl\r\n );\r\n\r\n const translationVoice: string = config.parameters.getProperty(PropertyId.SpeechServiceConnection_TranslationVoice, undefined);\r\n if (translationVoice !== undefined) {\r\n queryParams.voice = translationVoice;\r\n queryParams.features = \"texttospeech\";\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ConnectionEvent,\r\n IAudioSource,\r\n MessageType,\r\n TranslationStatus,\r\n} from \"../common/Exports\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SpeechRecognitionResult,\r\n TranslationRecognitionCanceledEventArgs,\r\n TranslationRecognitionEventArgs,\r\n TranslationRecognitionResult,\r\n TranslationRecognizer,\r\n Translations,\r\n TranslationSynthesisEventArgs,\r\n TranslationSynthesisResult,\r\n} from \"../sdk/Exports\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n ConversationServiceRecognizer,\r\n EnumTranslation,\r\n RecognitionStatus,\r\n SynthesisStatus,\r\n TranslationHypothesis,\r\n TranslationPhrase,\r\n TranslationSynthesisEnd,\r\n} from \"./Exports\";\r\nimport { IAuthentication } from \"./IAuthentication\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig\";\r\nimport { ITranslationPhrase } from \"./ServiceMessages/TranslationPhrase\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal\";\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class TranslationServiceRecognizer extends ConversationServiceRecognizer {\r\n private privTranslationRecognizer: TranslationRecognizer;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n translationRecognizer: TranslationRecognizer) {\r\n\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, translationRecognizer);\r\n this.privTranslationRecognizer = translationRecognizer;\r\n this.connectionEvents.attach((connectionEvent: ConnectionEvent): void => {\r\n if (connectionEvent.name === \"ConnectionEstablishedEvent\") {\r\n this.privTranslationRecognizer.onConnection();\r\n } else if (connectionEvent.name === \"ConnectionClosedEvent\") {\r\n void this.privTranslationRecognizer.onDisconnection();\r\n }\r\n });\r\n\r\n }\r\n\r\n protected async processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n let processed: boolean = await this.processSpeechMessages(connectionMessage);\r\n if (processed) {\r\n return true;\r\n }\r\n\r\n const handleTranslationPhrase = async (translatedPhrase: TranslationPhrase): Promise => {\r\n this.privRequestSession.onPhraseRecognized(this.privRequestSession.currentTurnAudioOffset + translatedPhrase.Offset + translatedPhrase.Duration);\r\n\r\n if (translatedPhrase.RecognitionStatus === RecognitionStatus.Success) {\r\n\r\n // OK, the recognition was successful. How'd the translation do?\r\n const result: TranslationRecognitionEventArgs = this.fireEventForResult(translatedPhrase, resultProps);\r\n if (!!this.privTranslationRecognizer.recognized) {\r\n try {\r\n this.privTranslationRecognizer.recognized(this.privTranslationRecognizer, result);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n // report result to promise.\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result.result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n } else {\r\n const reason: ResultReason = EnumTranslation.implTranslateRecognitionResult(translatedPhrase.RecognitionStatus);\r\n\r\n const result = new TranslationRecognitionResult(\r\n undefined,\r\n this.privRequestSession.requestId,\r\n reason,\r\n translatedPhrase.Text,\r\n translatedPhrase.Duration,\r\n this.privRequestSession.currentTurnAudioOffset + translatedPhrase.Offset,\r\n undefined,\r\n connectionMessage.textBody,\r\n resultProps);\r\n\r\n if (reason === ResultReason.Canceled) {\r\n const cancelReason: CancellationReason = EnumTranslation.implTranslateCancelResult(translatedPhrase.RecognitionStatus);\r\n const cancellationErrorCode: CancellationErrorCode = EnumTranslation.implTranslateCancelErrorCode(translatedPhrase.RecognitionStatus);\r\n\r\n await this.cancelRecognitionLocal(\r\n cancelReason,\r\n cancellationErrorCode,\r\n EnumTranslation.implTranslateErrorDetails(cancellationErrorCode));\r\n\r\n } else {\r\n if (!(this.privRequestSession.isSpeechEnded && reason === ResultReason.NoMatch && translatedPhrase.RecognitionStatus !== RecognitionStatus.InitialSilenceTimeout)) {\r\n const ev = new TranslationRecognitionEventArgs(result, result.offset, this.privRequestSession.sessionId);\r\n\r\n if (!!this.privTranslationRecognizer.recognized) {\r\n try {\r\n this.privTranslationRecognizer.recognized(this.privTranslationRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n }\r\n\r\n // report result to promise.\r\n if (!!this.privSuccessCallback) {\r\n try {\r\n this.privSuccessCallback(result);\r\n } catch (e) {\r\n if (!!this.privErrorCallback) {\r\n this.privErrorCallback(e as string);\r\n }\r\n }\r\n // Only invoke the call back once.\r\n // and if it's successful don't invoke the\r\n // error after that.\r\n this.privSuccessCallback = undefined;\r\n this.privErrorCallback = undefined;\r\n }\r\n }\r\n processed = true;\r\n }\r\n\r\n };\r\n\r\n if (connectionMessage.messageType === MessageType.Text) {\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n }\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n case \"translation.hypothesis\":\r\n\r\n const result: TranslationRecognitionEventArgs = this.fireEventForResult(TranslationHypothesis.fromJSON(connectionMessage.textBody), resultProps);\r\n this.privRequestSession.onHypothesis(this.privRequestSession.currentTurnAudioOffset + result.offset);\r\n\r\n if (!!this.privTranslationRecognizer.recognizing) {\r\n try {\r\n this.privTranslationRecognizer.recognizing(this.privTranslationRecognizer, result);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n processed = true;\r\n break;\r\n\r\n case \"translation.response\":\r\n const phrase: { SpeechPhrase: ITranslationPhrase } = JSON.parse(connectionMessage.textBody) as { SpeechPhrase: ITranslationPhrase };\r\n if (!!phrase.SpeechPhrase) {\r\n await handleTranslationPhrase(TranslationPhrase.fromTranslationResponse(phrase));\r\n }\r\n break;\r\n case \"translation.phrase\":\r\n await handleTranslationPhrase(TranslationPhrase.fromJSON(connectionMessage.textBody));\r\n break;\r\n\r\n case \"translation.synthesis\":\r\n this.sendSynthesisAudio(connectionMessage.binaryBody, this.privRequestSession.sessionId);\r\n processed = true;\r\n break;\r\n\r\n case \"audio.end\":\r\n case \"translation.synthesis.end\":\r\n const synthEnd: TranslationSynthesisEnd = TranslationSynthesisEnd.fromJSON(connectionMessage.textBody);\r\n\r\n switch (synthEnd.SynthesisStatus) {\r\n case SynthesisStatus.Error:\r\n if (!!this.privTranslationRecognizer.synthesizing) {\r\n const result = new TranslationSynthesisResult(ResultReason.Canceled, undefined);\r\n const retEvent: TranslationSynthesisEventArgs = new TranslationSynthesisEventArgs(result, this.privRequestSession.sessionId);\r\n\r\n try {\r\n this.privTranslationRecognizer.synthesizing(this.privTranslationRecognizer, retEvent);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n if (!!this.privTranslationRecognizer.canceled) {\r\n // And raise a canceled event to send the rich(er) error message back.\r\n const canceledResult: TranslationRecognitionCanceledEventArgs = new TranslationRecognitionCanceledEventArgs(\r\n this.privRequestSession.sessionId,\r\n CancellationReason.Error,\r\n synthEnd.FailureReason,\r\n CancellationErrorCode.ServiceError,\r\n null);\r\n\r\n try {\r\n this.privTranslationRecognizer.canceled(this.privTranslationRecognizer, canceledResult);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n break;\r\n case SynthesisStatus.Success:\r\n this.sendSynthesisAudio(undefined, this.privRequestSession.sessionId);\r\n break;\r\n default:\r\n break;\r\n }\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n return processed;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n if (!!this.privTranslationRecognizer.canceled) {\r\n\r\n const cancelEvent: TranslationRecognitionCanceledEventArgs = new TranslationRecognitionCanceledEventArgs(\r\n sessionId,\r\n cancellationReason,\r\n error,\r\n errorCode,\r\n undefined);\r\n\r\n try {\r\n this.privTranslationRecognizer.canceled(this.privTranslationRecognizer, cancelEvent);\r\n /* eslint-disable no-empty */\r\n } catch { }\r\n }\r\n\r\n if (!!this.privSuccessCallback) {\r\n const result: TranslationRecognitionResult = new TranslationRecognitionResult(\r\n undefined, // Translations\r\n requestId,\r\n ResultReason.Canceled,\r\n undefined, // Text\r\n undefined, // Druation\r\n undefined, // Offset\r\n error,\r\n undefined, // Json\r\n properties);\r\n try {\r\n this.privSuccessCallback(result);\r\n /* eslint-disable no-empty */\r\n this.privSuccessCallback = undefined;\r\n } catch { }\r\n }\r\n }\r\n\r\n protected handleRecognizingCallback(result: SpeechRecognitionResult, duration: number, sessionId: string): void {\r\n try {\r\n const ev = new TranslationRecognitionEventArgs(TranslationRecognitionResult.fromSpeechRecognitionResult(result), duration, sessionId);\r\n this.privTranslationRecognizer.recognizing(this.privTranslationRecognizer, ev);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n protected handleRecognizedCallback(result: SpeechRecognitionResult, offset: number, sessionId: string): void {\r\n try {\r\n const ev = new TranslationRecognitionEventArgs(TranslationRecognitionResult.fromSpeechRecognitionResult(result), offset, sessionId);\r\n this.privTranslationRecognizer.recognized(this.privTranslationRecognizer, ev);\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n private fireEventForResult(serviceResult: TranslationHypothesis | TranslationPhrase, properties: PropertyCollection): TranslationRecognitionEventArgs {\r\n let translations: Translations;\r\n\r\n if (undefined !== serviceResult.Translation.Translations) {\r\n translations = new Translations();\r\n for (const translation of serviceResult.Translation.Translations) {\r\n translations.set(translation.Language, translation.Text || translation.DisplayText);\r\n }\r\n }\r\n\r\n let resultReason: ResultReason;\r\n if (serviceResult instanceof TranslationPhrase) {\r\n if (!!serviceResult.Translation && serviceResult.Translation.TranslationStatus === TranslationStatus.Success) {\r\n resultReason = ResultReason.TranslatedSpeech;\r\n } else {\r\n resultReason = ResultReason.RecognizedSpeech;\r\n }\r\n } else {\r\n resultReason = ResultReason.TranslatingSpeech;\r\n }\r\n\r\n const offset: number = serviceResult.Offset + this.privRequestSession.currentTurnAudioOffset;\r\n\r\n const result = new TranslationRecognitionResult(\r\n translations,\r\n this.privRequestSession.requestId,\r\n resultReason,\r\n serviceResult.Text,\r\n serviceResult.Duration,\r\n offset,\r\n serviceResult.Translation.FailureReason,\r\n JSON.stringify(serviceResult),\r\n properties);\r\n\r\n const ev = new TranslationRecognitionEventArgs(result, offset, this.privRequestSession.sessionId);\r\n return ev;\r\n }\r\n\r\n private sendSynthesisAudio(audio: ArrayBuffer, sessionId: string): void {\r\n const reason = (undefined === audio) ? ResultReason.SynthesizingAudioCompleted : ResultReason.SynthesizingAudio;\r\n const result = new TranslationSynthesisResult(reason, audio);\r\n const retEvent: TranslationSynthesisEventArgs = new TranslationSynthesisEventArgs(result, sessionId);\r\n\r\n if (!!this.privTranslationRecognizer.synthesizing) {\r\n try {\r\n this.privTranslationRecognizer.synthesizing(this.privTranslationRecognizer, retEvent);\r\n /* eslint-disable no-empty */\r\n } catch (error) {\r\n // Not going to let errors in the event handler\r\n // trip things up.\r\n }\r\n }\r\n\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines translation status.\r\n * @class TranslationStatus\r\n */\r\nexport enum TranslationStatus {\r\n /**\r\n * @member TranslationStatus.Success\r\n */\r\n Success = 0,\r\n\r\n /**\r\n * @member TranslationStatus.Error\r\n */\r\n Error,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ReplayableAudioNode } from \"../common.browser/Exports\";\r\nimport {\r\n DeferralMap,\r\n Deferred,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IConnection,\r\n MessageType,\r\n} from \"../common/Exports\";\r\nimport { AudioStreamFormatImpl } from \"../sdk/Audio/AudioStreamFormat\";\r\nimport { SpeakerRecognitionModel } from \"../sdk/SpeakerRecognitionModel\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n VoiceProfileClient,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n SessionEventArgs,\r\n VoiceProfileEnrollmentResult,\r\n VoiceProfilePhraseResult,\r\n VoiceProfileResult,\r\n VoiceProfileType,\r\n VoiceProfile\r\n} from \"../sdk/Exports\";\r\nimport {\r\n CancellationErrorCodePropertyName,\r\n EnrollmentResponse,\r\n IProfile,\r\n ISpeechConfigAudioDevice,\r\n ProfilePhraseResponse,\r\n ProfileResponse,\r\n ServiceRecognizerBase,\r\n} from \"./Exports\";\r\nimport { IAuthentication } from \"./IAuthentication\";\r\nimport { IConnectionFactory } from \"./IConnectionFactory\";\r\nimport { RecognizerConfig } from \"./RecognizerConfig\";\r\nimport { SpeechConnectionMessage } from \"./SpeechConnectionMessage.Internal\";\r\n\r\ninterface CreateProfile {\r\n scenario: string;\r\n locale: string;\r\n number: string;\r\n}\r\n\r\ninterface PhraseRequest {\r\n scenario: string;\r\n locale: string;\r\n}\r\n\r\ninterface SpeakerContext {\r\n scenario: string;\r\n profileIds: string[];\r\n features: {\r\n interimResult: string;\r\n progressiveDetection: string;\r\n };\r\n}\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class VoiceServiceRecognizer extends ServiceRecognizerBase {\r\n private privSpeakerAudioSource: IAudioSource;\r\n private privDeferralMap: DeferralMap = new DeferralMap();\r\n private privExpectedProfileId: string;\r\n\r\n public constructor(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioSource: IAudioSource,\r\n recognizerConfig: RecognizerConfig,\r\n recognizer: VoiceProfileClient) {\r\n super(authentication, connectionFactory, audioSource, recognizerConfig, recognizer);\r\n this.privSpeakerAudioSource = audioSource;\r\n this.sendPrePayloadJSONOverride = (): Promise => this.noOp();\r\n }\r\n\r\n public set SpeakerAudioSource(audioSource: IAudioSource) {\r\n this.privSpeakerAudioSource = audioSource;\r\n }\r\n\r\n protected processTypeSpecificMessages(connectionMessage: SpeechConnectionMessage): Promise {\r\n\r\n let processed: boolean = false;\r\n\r\n const resultProps: PropertyCollection = new PropertyCollection();\r\n if (connectionMessage.messageType === MessageType.Text) {\r\n resultProps.setProperty(PropertyId.SpeechServiceResponse_JsonResult, connectionMessage.textBody);\r\n }\r\n\r\n switch (connectionMessage.path.toLowerCase()) {\r\n // Profile management response for create, fetch, delete, reset\r\n case \"speaker.profiles\":\r\n const response: ProfileResponse = JSON.parse(connectionMessage.textBody) as ProfileResponse;\r\n switch (response.operation.toLowerCase()) {\r\n case \"create\":\r\n this.handleCreateResponse(response, connectionMessage.requestId);\r\n break;\r\n\r\n case \"delete\":\r\n case \"reset\":\r\n this.handleResultResponse(response, connectionMessage.requestId);\r\n break;\r\n\r\n case \"fetch\":\r\n const enrollmentResponse: EnrollmentResponse = JSON.parse(connectionMessage.textBody) as EnrollmentResponse;\r\n this.handleFetchResponse(enrollmentResponse, connectionMessage.requestId);\r\n break;\r\n\r\n default:\r\n break;\r\n }\r\n processed = true;\r\n break;\r\n // Activation and authorization phrase response\r\n case \"speaker.phrases\":\r\n const phraseResponse: ProfilePhraseResponse = JSON.parse(connectionMessage.textBody) as ProfilePhraseResponse;\r\n this.handlePhrasesResponse(phraseResponse, connectionMessage.requestId);\r\n processed = true;\r\n break;\r\n // Enrollment response\r\n case \"speaker.profile.enrollment\":\r\n const enrollmentResponse: EnrollmentResponse = JSON.parse(connectionMessage.textBody) as EnrollmentResponse;\r\n const result: VoiceProfileEnrollmentResult = new VoiceProfileEnrollmentResult(\r\n this.enrollmentReasonFrom(!!enrollmentResponse.enrollment ? enrollmentResponse.enrollment.enrollmentStatus : enrollmentResponse.status.statusCode),\r\n !!enrollmentResponse.enrollment ? JSON.stringify(enrollmentResponse.enrollment) : undefined,\r\n enrollmentResponse.status.reason,\r\n );\r\n if (!!this.privDeferralMap.getId(connectionMessage.requestId)) {\r\n this.privDeferralMap.complete(connectionMessage.requestId, result);\r\n }\r\n this.privRequestSession.onSpeechEnded();\r\n processed = true;\r\n break;\r\n default:\r\n break;\r\n }\r\n const defferal = new Deferred();\r\n defferal.resolve(processed);\r\n return defferal.promise;\r\n }\r\n\r\n // Cancels recognition.\r\n protected cancelRecognition(\r\n sessionId: string,\r\n requestId: string,\r\n cancellationReason: CancellationReason,\r\n errorCode: CancellationErrorCode,\r\n error: string): void {\r\n\r\n const properties: PropertyCollection = new PropertyCollection();\r\n // const enrollmentResponse: EnrollmentResponse = JSON.parse(connectionMessage.textBody) as EnrollmentResponse;\r\n properties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[errorCode]);\r\n\r\n const result: VoiceProfileEnrollmentResult = new VoiceProfileEnrollmentResult(\r\n ResultReason.Canceled,\r\n error,\r\n error,\r\n );\r\n if (!!this.privDeferralMap.getId(requestId)) {\r\n this.privDeferralMap.complete(requestId, result);\r\n }\r\n }\r\n\r\n public async createProfile(profileType: VoiceProfileType, locale: string): Promise {\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n this.voiceProfileType = profileType.toString();\r\n const conPromise: Promise = this.connectImpl();\r\n try {\r\n const createProfileDeferral = new Deferred();\r\n await conPromise;\r\n await this.sendCreateProfile(createProfileDeferral, profileType, locale);\r\n void this.receiveMessage();\r\n return createProfileDeferral.promise;\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n\r\n public async resetProfile(profile: VoiceProfile): Promise {\r\n this.voiceProfileType = profile.profileType.toString();\r\n return this.sendCommonRequest(\"reset\", profile.profileType, profile);\r\n }\r\n\r\n public async deleteProfile(profile: VoiceProfile): Promise {\r\n this.voiceProfileType = profile.profileType.toString();\r\n return this.sendCommonRequest(\"delete\", profile.profileType, profile);\r\n }\r\n\r\n public async retrieveEnrollmentResult(profile: VoiceProfile): Promise {\r\n this.voiceProfileType = profile.profileType.toString();\r\n this.privExpectedProfileId = profile.profileId;\r\n return this.sendCommonRequest(\"fetch\", profile.profileType, profile);\r\n }\r\n\r\n public async getAllProfiles(profileType: VoiceProfileType): Promise {\r\n this.voiceProfileType = profileType.toString();\r\n return this.sendCommonRequest(\"fetch\", profileType);\r\n }\r\n\r\n public async getActivationPhrases(profileType: VoiceProfileType, lang: string): Promise {\r\n this.voiceProfileType = profileType.toString();\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n try {\r\n const getPhrasesDeferral = new Deferred();\r\n await conPromise;\r\n await this.sendPhrasesRequest(getPhrasesDeferral, profileType, lang);\r\n void this.receiveMessage();\r\n return getPhrasesDeferral.promise;\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n\r\n public async enrollProfile(profile: VoiceProfile): Promise {\r\n this.voiceProfileType = profile.profileType.toString();\r\n const enrollmentDeferral = new Deferred();\r\n this.privRequestSession.startNewRecognition();\r\n this.privRequestSession.listenForServiceTelemetry(this.privSpeakerAudioSource.events);\r\n\r\n this.privRecognizerConfig.parameters.setProperty(PropertyId.Speech_SessionId, this.privRequestSession.sessionId);\r\n\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n\r\n const preAudioPromise: Promise = this.sendPreAudioMessages(profile, enrollmentDeferral);\r\n\r\n const node: IAudioStreamNode = await this.privSpeakerAudioSource.attach(this.privRequestSession.audioNodeId);\r\n const format: AudioStreamFormatImpl = await this.privSpeakerAudioSource.format;\r\n const deviceInfo: ISpeechConfigAudioDevice = await this.privSpeakerAudioSource.deviceInfo;\r\n\r\n const audioNode = new ReplayableAudioNode(node, format.avgBytesPerSec);\r\n await this.privRequestSession.onAudioSourceAttachCompleted(audioNode, false);\r\n\r\n this.privRecognizerConfig.SpeechServiceConfig.Context.audio = { source: deviceInfo };\r\n\r\n try {\r\n await conPromise;\r\n await preAudioPromise;\r\n } catch (err) {\r\n this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.ConnectionFailure, err as string);\r\n }\r\n\r\n const sessionStartEventArgs: SessionEventArgs = new SessionEventArgs(this.privRequestSession.sessionId);\r\n\r\n if (!!this.privRecognizer.sessionStarted) {\r\n this.privRecognizer.sessionStarted(this.privRecognizer, sessionStartEventArgs);\r\n }\r\n\r\n void this.receiveMessage();\r\n const audioSendPromise = this.sendAudio(audioNode);\r\n\r\n // /* eslint-disable no-empty */\r\n audioSendPromise.then((): void => { /* add? return true;*/ }, (error: string): void => {\r\n this.cancelRecognition(this.privRequestSession.sessionId, this.privRequestSession.requestId, CancellationReason.Error, CancellationErrorCode.RuntimeError, error);\r\n });\r\n\r\n return enrollmentDeferral.promise;\r\n }\r\n\r\n private async sendPreAudioMessages(profile: VoiceProfile, enrollmentDeferral: Deferred): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n this.privRequestSession.onSpeechContext();\r\n this.privDeferralMap.add(this.privRequestSession.requestId, enrollmentDeferral);\r\n await this.sendBaseRequest(connection, \"enroll\", this.scenarioFrom(profile.profileType), profile);\r\n }\r\n\r\n private async sendPhrasesRequest(getPhrasesDeferral: Deferred, profileType: VoiceProfileType, locale: string): Promise {\r\n const connection: IConnection = await this.fetchConnection();\r\n this.privRequestSession.onSpeechContext();\r\n this.privDeferralMap.add(this.privRequestSession.requestId, getPhrasesDeferral);\r\n const scenario = this.scenarioFrom(profileType);\r\n\r\n const profileCreateRequest: PhraseRequest = {\r\n locale,\r\n scenario,\r\n };\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speaker.profile.phrases\",\r\n this.privRequestSession.requestId,\r\n \"application/json; charset=utf-8\",\r\n JSON.stringify(profileCreateRequest)));\r\n }\r\n\r\n private async sendCreateProfile(createProfileDeferral: Deferred, profileType: VoiceProfileType, locale: string): Promise {\r\n\r\n const connection: IConnection = await this.fetchConnection();\r\n this.privRequestSession.onSpeechContext();\r\n this.privDeferralMap.add(this.privRequestSession.requestId, createProfileDeferral);\r\n const scenario = profileType === VoiceProfileType.TextIndependentIdentification ? \"TextIndependentIdentification\" :\r\n profileType === VoiceProfileType.TextIndependentVerification ? \"TextIndependentVerification\" : \"TextDependentVerification\";\r\n\r\n const profileCreateRequest: CreateProfile = {\r\n locale,\r\n number: \"1\",\r\n scenario,\r\n };\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n \"speaker.profile.create\",\r\n this.privRequestSession.requestId,\r\n \"application/json; charset=utf-8\",\r\n JSON.stringify(profileCreateRequest)));\r\n }\r\n\r\n private async sendCommonRequest(operation: string, profileType: VoiceProfileType, profile: VoiceProfile = undefined): Promise {\r\n // Start the connection to the service. The promise this will create is stored and will be used by configureConnection().\r\n const conPromise: Promise = this.connectImpl();\r\n try {\r\n const deferral = new Deferred();\r\n this.privRequestSession.onSpeechContext();\r\n await conPromise;\r\n const connection: IConnection = await this.fetchConnection();\r\n this.privDeferralMap.add(this.privRequestSession.requestId, deferral);\r\n await this.sendBaseRequest(connection, operation, this.scenarioFrom(profileType), profile);\r\n void this.receiveMessage();\r\n return deferral.promise;\r\n } catch (err) {\r\n throw err;\r\n }\r\n }\r\n\r\n private async sendBaseRequest(connection: IConnection, operation: string, scenario: string, profile: VoiceProfile): Promise {\r\n const profileRequest: { maxPageSize?: number; profileIds?: string[]; scenario: string } = {\r\n scenario\r\n };\r\n if (!!profile) {\r\n profileRequest.profileIds = [ profile.profileId ];\r\n } else {\r\n profileRequest.maxPageSize = -1;\r\n }\r\n return connection.send(new SpeechConnectionMessage(\r\n MessageType.Text,\r\n `speaker.profile.${operation}`,\r\n this.privRequestSession.requestId,\r\n \"application/json; charset=utf-8\",\r\n JSON.stringify(profileRequest)));\r\n }\r\n\r\n private extractSpeakerContext(model: SpeakerRecognitionModel): SpeakerContext {\r\n return {\r\n features: {\r\n interimResult: \"enabled\",\r\n progressiveDetection: \"disabled\",\r\n },\r\n profileIds: model.profileIds,\r\n scenario: model.scenario,\r\n };\r\n }\r\n\r\n private handlePhrasesResponse(response: ProfilePhraseResponse, requestId: string): void {\r\n if (!!this.privDeferralMap.getId(requestId)) {\r\n if (response.status.statusCode.toLowerCase() !== \"success\") {\r\n const reason: ResultReason = ResultReason.Canceled;\r\n const result = new VoiceProfilePhraseResult(reason, response.status.statusCode, response.passPhraseType, []);\r\n this.privDeferralMap.complete(requestId, result);\r\n } else if (!!response.phrases && response.phrases.length > 0) {\r\n const reason: ResultReason = ResultReason.EnrollingVoiceProfile;\r\n const result = new VoiceProfilePhraseResult(reason, response.status.statusCode, response.passPhraseType, response.phrases);\r\n this.privDeferralMap.complete(requestId, result);\r\n } else {\r\n throw new Error(\"Voice Profile get activation phrases failed, no phrases received\");\r\n }\r\n } else {\r\n throw new Error(`Voice Profile get activation phrases request for requestID ${requestId} not found`);\r\n }\r\n }\r\n\r\n private handleCreateResponse(response: ProfileResponse, requestId: string): void {\r\n if (!!response.profiles && response.profiles.length > 0) {\r\n if (!!this.privDeferralMap.getId(requestId)) {\r\n const profileIds: string[] = response.profiles.map((profile: IProfile): string => profile.profileId);\r\n this.privDeferralMap.complete(requestId, profileIds);\r\n } else {\r\n throw new Error(`Voice Profile create request for requestID ${requestId} not found`);\r\n }\r\n } else {\r\n throw new Error(\"Voice Profile create failed, no profile id received\");\r\n }\r\n }\r\n\r\n private handleResultResponse(response: ProfileResponse, requestId: string): void {\r\n if (!!this.privDeferralMap.getId(requestId)) {\r\n const successReason: ResultReason = response.operation.toLowerCase() === \"delete\" ? ResultReason.DeletedVoiceProfile : ResultReason.ResetVoiceProfile;\r\n const reason: ResultReason = response.status.statusCode.toLowerCase() === \"success\" ? successReason : ResultReason.Canceled;\r\n const result = new VoiceProfileResult(reason, `statusCode: ${response.status.statusCode}, errorDetails: ${response.status.reason}`);\r\n this.privDeferralMap.complete(requestId, result);\r\n } else {\r\n throw new Error(`Voice Profile create request for requestID ${requestId} not found`);\r\n }\r\n }\r\n\r\n private handleFetchResponse(enrollmentResponse: EnrollmentResponse, requestId: string): void {\r\n if (!!this.privDeferralMap.getId(requestId) && !!enrollmentResponse.profiles[0]) {\r\n if (!!this.privExpectedProfileId && enrollmentResponse.profiles.length === 1 && enrollmentResponse.profiles[0].profileId === this.privExpectedProfileId) {\r\n this.privExpectedProfileId = undefined;\r\n const profileInfo: IProfile = enrollmentResponse.profiles[0];\r\n const result: VoiceProfileEnrollmentResult = new VoiceProfileEnrollmentResult(\r\n this.enrollmentReasonFrom(profileInfo.enrollmentStatus),\r\n JSON.stringify(profileInfo),\r\n enrollmentResponse.status.reason,\r\n );\r\n this.privDeferralMap.complete(requestId, result);\r\n } else if (enrollmentResponse.profiles.length > 0) {\r\n const iProfiles: IProfile[] = enrollmentResponse.profiles;\r\n const profileResults: VoiceProfileEnrollmentResult[] = [];\r\n for (const profile of iProfiles) {\r\n profileResults.push( new VoiceProfileEnrollmentResult(\r\n this.enrollmentReasonFrom(profile.enrollmentStatus),\r\n JSON.stringify(profile),\r\n enrollmentResponse.status.reason,\r\n ));\r\n }\r\n this.privDeferralMap.complete(requestId, profileResults);\r\n }\r\n } else {\r\n throw new Error(`Voice Profile fetch request for requestID ${requestId} not found`);\r\n }\r\n }\r\n\r\n private enrollmentReasonFrom(statusCode: string): ResultReason {\r\n switch (statusCode.toLowerCase()) {\r\n case \"enrolled\":\r\n return ResultReason.EnrolledVoiceProfile;\r\n case \"invalidlocale\":\r\n case \"invalidphrase\":\r\n case \"invalidaudioformat\":\r\n case \"invalidscenario\":\r\n case \"invalidprofilecount\":\r\n case \"invalidoperation\":\r\n case \"audiotooshort\":\r\n case \"audiotoolong\":\r\n case \"toomanyenrollments\":\r\n case \"storageconflict\":\r\n case \"profilenotfound\":\r\n case \"incompatibleprofiles\":\r\n case \"incompleteenrollment\":\r\n return ResultReason.Canceled;\r\n default:\r\n return ResultReason.EnrollingVoiceProfile;\r\n }\r\n }\r\n\r\n private scenarioFrom(profileType: VoiceProfileType): string {\r\n return profileType === VoiceProfileType.TextIndependentIdentification ? \"TextIndependentIdentification\" :\r\n profileType === VoiceProfileType.TextIndependentVerification ? \"TextIndependentVerification\" : \"TextDependentVerification\";\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ConnectionMessage,\r\n Deferred,\r\n IStringDictionary,\r\n IWebsocketMessageFormatter,\r\n MessageType,\r\n RawWebsocketMessage,\r\n} from \"../common/Exports\";\r\n\r\nconst CRLF: string = \"\\r\\n\";\r\n\r\nexport class WebsocketMessageFormatter implements IWebsocketMessageFormatter {\r\n\r\n public toConnectionMessage(message: RawWebsocketMessage): Promise {\r\n const deferral = new Deferred();\r\n\r\n try {\r\n if (message.messageType === MessageType.Text) {\r\n const textMessage: string = message.textContent;\r\n let headers: IStringDictionary = {};\r\n let body: string = null;\r\n\r\n if (textMessage) {\r\n const headerBodySplit = textMessage.split(\"\\r\\n\\r\\n\");\r\n if (headerBodySplit && headerBodySplit.length > 0) {\r\n headers = this.parseHeaders(headerBodySplit[0]);\r\n if (headerBodySplit.length > 1) {\r\n body = headerBodySplit[1];\r\n }\r\n }\r\n }\r\n\r\n deferral.resolve(new ConnectionMessage(message.messageType, body, headers, message.id));\r\n } else if (message.messageType === MessageType.Binary) {\r\n const binaryMessage: ArrayBuffer = message.binaryContent;\r\n let headers: IStringDictionary = {};\r\n let body: ArrayBuffer = null;\r\n\r\n if (!binaryMessage || binaryMessage.byteLength < 2) {\r\n throw new Error(\"Invalid binary message format. Header length missing.\");\r\n }\r\n\r\n const dataView = new DataView(binaryMessage);\r\n const headerLength = dataView.getInt16(0);\r\n\r\n if (binaryMessage.byteLength < headerLength + 2) {\r\n throw new Error(\"Invalid binary message format. Header content missing.\");\r\n }\r\n\r\n let headersString = \"\";\r\n for (let i = 0; i < headerLength; i++) {\r\n headersString += String.fromCharCode((dataView).getInt8(i + 2));\r\n }\r\n\r\n headers = this.parseHeaders(headersString);\r\n\r\n if (binaryMessage.byteLength > headerLength + 2) {\r\n body = binaryMessage.slice(2 + headerLength);\r\n }\r\n\r\n deferral.resolve(new ConnectionMessage(message.messageType, body, headers, message.id));\r\n }\r\n } catch (e) {\r\n deferral.reject(`Error formatting the message. Error: ${e as string}`);\r\n }\r\n\r\n return deferral.promise;\r\n }\r\n\r\n public fromConnectionMessage(message: ConnectionMessage): Promise {\r\n const deferral = new Deferred();\r\n\r\n try {\r\n if (message.messageType === MessageType.Text) {\r\n const payload = `${this.makeHeaders(message)}${CRLF}${message.textBody ? message.textBody : \"\"}`;\r\n\r\n deferral.resolve(new RawWebsocketMessage(MessageType.Text, payload, message.id));\r\n\r\n } else if (message.messageType === MessageType.Binary) {\r\n const headersString = this.makeHeaders(message);\r\n const content = message.binaryBody;\r\n\r\n const headerBuffer = this.stringToArrayBuffer(headersString);\r\n const headerInt8Array = new Int8Array(headerBuffer);\r\n const headerLength = headerInt8Array.byteLength;\r\n\r\n const payloadInt8Array = new Int8Array(2 + headerLength + (content ? content.byteLength : 0));\r\n payloadInt8Array[0] = ((headerLength >> 8) & 0xff);\r\n payloadInt8Array[1] = headerLength & 0xff;\r\n payloadInt8Array.set(headerInt8Array, 2);\r\n\r\n if (content) {\r\n const bodyInt8Array = new Int8Array(content);\r\n payloadInt8Array.set(bodyInt8Array, 2 + headerLength);\r\n }\r\n\r\n const payload: ArrayBuffer = payloadInt8Array.buffer;\r\n\r\n deferral.resolve(new RawWebsocketMessage(MessageType.Binary, payload, message.id));\r\n }\r\n } catch (e) {\r\n deferral.reject(`Error formatting the message. ${e as string}`);\r\n }\r\n\r\n return deferral.promise;\r\n }\r\n\r\n private makeHeaders(message: ConnectionMessage): string {\r\n let headersString: string = \"\";\r\n\r\n if (message.headers) {\r\n for (const header in message.headers) {\r\n if (header) {\r\n headersString += `${header}: ${message.headers[header]}${CRLF}`;\r\n }\r\n }\r\n }\r\n\r\n return headersString;\r\n }\r\n\r\n private parseHeaders(headersString: string): IStringDictionary {\r\n const headers: IStringDictionary = {};\r\n\r\n if (headersString) {\r\n const headerMatches = headersString.match(/[^\\r\\n]+/g);\r\n if (headers) {\r\n for (const header of headerMatches) {\r\n if (header) {\r\n const separatorIndex = header.indexOf(\":\");\r\n const headerName = separatorIndex > 0 ? header.substr(0, separatorIndex).trim().toLowerCase() : header;\r\n const headerValue =\r\n separatorIndex > 0 && header.length > (separatorIndex + 1) ?\r\n header.substr(separatorIndex + 1).trim() :\r\n \"\";\r\n\r\n headers[headerName] = headerValue;\r\n }\r\n }\r\n }\r\n }\r\n\r\n return headers;\r\n }\r\n\r\n private stringToArrayBuffer(str: string): ArrayBuffer {\r\n const buffer = new ArrayBuffer(str.length);\r\n const view = new DataView(buffer);\r\n for (let i = 0; i < str.length; i++) {\r\n view.setUint8(i, str.charCodeAt(i));\r\n }\r\n return buffer;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { EventType, PlatformEvent } from \"./PlatformEvent\";\r\n\r\nexport class AudioSourceEvent extends PlatformEvent {\r\n private privAudioSourceId: string;\r\n\r\n public constructor(eventName: string, audioSourceId: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n this.privAudioSourceId = audioSourceId;\r\n }\r\n\r\n public get audioSourceId(): string {\r\n return this.privAudioSourceId;\r\n }\r\n}\r\n\r\nexport class AudioSourceInitializingEvent extends AudioSourceEvent {\r\n public constructor(audioSourceId: string) {\r\n super(\"AudioSourceInitializingEvent\", audioSourceId);\r\n }\r\n}\r\n\r\nexport class AudioSourceReadyEvent extends AudioSourceEvent {\r\n public constructor(audioSourceId: string) {\r\n super(\"AudioSourceReadyEvent\", audioSourceId);\r\n }\r\n}\r\n\r\nexport class AudioSourceOffEvent extends AudioSourceEvent {\r\n public constructor(audioSourceId: string) {\r\n super(\"AudioSourceOffEvent\", audioSourceId);\r\n }\r\n}\r\n\r\nexport class AudioSourceErrorEvent extends AudioSourceEvent {\r\n private privError: string;\r\n\r\n public constructor(audioSourceId: string, error: string) {\r\n super(\"AudioSourceErrorEvent\", audioSourceId, EventType.Error);\r\n this.privError = error;\r\n }\r\n\r\n public get error(): string {\r\n return this.privError;\r\n }\r\n}\r\n\r\nexport class AudioStreamNodeEvent extends AudioSourceEvent {\r\n private privAudioNodeId: string;\r\n\r\n public constructor(eventName: string, audioSourceId: string, audioNodeId: string) {\r\n super(eventName, audioSourceId);\r\n this.privAudioNodeId = audioNodeId;\r\n }\r\n\r\n public get audioNodeId(): string {\r\n return this.privAudioNodeId;\r\n }\r\n}\r\n\r\nexport class AudioStreamNodeAttachingEvent extends AudioStreamNodeEvent {\r\n public constructor(audioSourceId: string, audioNodeId: string) {\r\n super(\"AudioStreamNodeAttachingEvent\", audioSourceId, audioNodeId);\r\n }\r\n}\r\n\r\nexport class AudioStreamNodeAttachedEvent extends AudioStreamNodeEvent {\r\n public constructor(audioSourceId: string, audioNodeId: string) {\r\n super(\"AudioStreamNodeAttachedEvent\", audioSourceId, audioNodeId);\r\n }\r\n}\r\n\r\nexport class AudioStreamNodeDetachedEvent extends AudioStreamNodeEvent {\r\n public constructor(audioSourceId: string, audioNodeId: string) {\r\n super(\"AudioStreamNodeDetachedEvent\", audioSourceId, audioNodeId);\r\n }\r\n}\r\n\r\nexport class AudioStreamNodeErrorEvent extends AudioStreamNodeEvent {\r\n private privError: string;\r\n\r\n public constructor(audioSourceId: string, audioNodeId: string, error: string) {\r\n super(\"AudioStreamNodeErrorEvent\", audioSourceId, audioNodeId);\r\n this.privError = error;\r\n }\r\n\r\n public get error(): string {\r\n return this.privError;\r\n }\r\n}\r\n","\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n EventType,\r\n PlatformEvent\r\n} from \"./Exports\";\r\n\r\nexport class BackgroundEvent extends PlatformEvent {\r\n private privError: string;\r\n\r\n public constructor(error: string) {\r\n super(\"BackgroundEvent\", EventType.Error);\r\n this.privError = error;\r\n }\r\n\r\n public get error(): string {\r\n return this.privError;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IStreamChunk, Stream } from \"./Exports\";\r\n\r\nexport class ChunkedArrayBufferStream extends Stream {\r\n private privTargetChunkSize: number;\r\n private privNextBufferToWrite: ArrayBuffer;\r\n private privNextBufferStartTime: number;\r\n private privNextBufferReadyBytes: number;\r\n\r\n public constructor(targetChunkSize: number, streamId?: string) {\r\n super(streamId);\r\n this.privTargetChunkSize = targetChunkSize;\r\n this.privNextBufferReadyBytes = 0;\r\n }\r\n\r\n public writeStreamChunk(chunk: IStreamChunk): void {\r\n // No pending write, and the buffer is the right size so write it.\r\n if (chunk.isEnd ||\r\n (0 === this.privNextBufferReadyBytes && chunk.buffer.byteLength === this.privTargetChunkSize)) {\r\n super.writeStreamChunk(chunk);\r\n return;\r\n }\r\n\r\n let bytesCopiedFromBuffer: number = 0;\r\n\r\n while (bytesCopiedFromBuffer < chunk.buffer.byteLength) {\r\n // Fill the next buffer.\r\n if (undefined === this.privNextBufferToWrite) {\r\n this.privNextBufferToWrite = new ArrayBuffer(this.privTargetChunkSize);\r\n this.privNextBufferStartTime = chunk.timeReceived;\r\n }\r\n\r\n // Find out how many bytes we can copy into the read buffer.\r\n const bytesToCopy: number = Math.min(chunk.buffer.byteLength - bytesCopiedFromBuffer, this.privTargetChunkSize - this.privNextBufferReadyBytes);\r\n const targetView: Uint8Array = new Uint8Array(this.privNextBufferToWrite);\r\n const sourceView: Uint8Array = new Uint8Array(chunk.buffer.slice(bytesCopiedFromBuffer, bytesToCopy + bytesCopiedFromBuffer));\r\n\r\n targetView.set(sourceView, this.privNextBufferReadyBytes);\r\n this.privNextBufferReadyBytes += bytesToCopy;\r\n bytesCopiedFromBuffer += bytesToCopy;\r\n\r\n // Are we ready to write?\r\n if (this.privNextBufferReadyBytes === this.privTargetChunkSize) {\r\n super.writeStreamChunk({\r\n buffer: this.privNextBufferToWrite,\r\n isEnd: false,\r\n timeReceived: this.privNextBufferStartTime,\r\n });\r\n this.privNextBufferReadyBytes = 0;\r\n this.privNextBufferToWrite = undefined;\r\n }\r\n }\r\n }\r\n\r\n public close(): void {\r\n // Send whatever is pending, then close the base class.\r\n if (0 !== this.privNextBufferReadyBytes && !this.isClosed) {\r\n super.writeStreamChunk({\r\n buffer: this.privNextBufferToWrite.slice(0, this.privNextBufferReadyBytes),\r\n isEnd: false,\r\n timeReceived: this.privNextBufferStartTime,\r\n });\r\n }\r\n\r\n super.close();\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { ConnectionMessage } from \"./ConnectionMessage\";\r\nimport { IStringDictionary } from \"./IDictionary\";\r\nimport { EventType, PlatformEvent } from \"./PlatformEvent\";\r\n\r\nexport class ServiceEvent extends PlatformEvent {\r\n private privJsonResult: string;\r\n\r\n public constructor(eventName: string, jsonstring: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n this.privJsonResult = jsonstring;\r\n }\r\n\r\n public get jsonString(): string {\r\n return this.privJsonResult;\r\n }\r\n}\r\n\r\nexport class ConnectionEvent extends PlatformEvent {\r\n private privConnectionId: string;\r\n\r\n public constructor(eventName: string, connectionId: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n this.privConnectionId = connectionId;\r\n }\r\n\r\n public get connectionId(): string {\r\n return this.privConnectionId;\r\n }\r\n}\r\n\r\nexport class ConnectionStartEvent extends ConnectionEvent {\r\n private privUri: string;\r\n private privHeaders: IStringDictionary;\r\n\r\n public constructor(connectionId: string, uri: string, headers?: IStringDictionary) {\r\n super(\"ConnectionStartEvent\", connectionId);\r\n this.privUri = uri;\r\n this.privHeaders = headers;\r\n }\r\n\r\n public get uri(): string {\r\n return this.privUri;\r\n }\r\n\r\n public get headers(): IStringDictionary {\r\n return this.privHeaders;\r\n }\r\n}\r\n\r\nexport class ConnectionEstablishedEvent extends ConnectionEvent {\r\n public constructor(connectionId: string) {\r\n super(\"ConnectionEstablishedEvent\", connectionId);\r\n }\r\n}\r\n\r\nexport class ConnectionClosedEvent extends ConnectionEvent {\r\n private privReason: string;\r\n private privStatusCode: number;\r\n\r\n public constructor(connectionId: string, statusCode: number, reason: string) {\r\n super(\"ConnectionClosedEvent\", connectionId, EventType.Debug);\r\n this.privReason = reason;\r\n this.privStatusCode = statusCode;\r\n }\r\n\r\n public get reason(): string {\r\n return this.privReason;\r\n }\r\n\r\n public get statusCode(): number {\r\n return this.privStatusCode;\r\n }\r\n}\r\n\r\nexport class ConnectionErrorEvent extends ConnectionEvent {\r\n private readonly privMessage: string;\r\n private readonly privType: string;\r\n\r\n public constructor(connectionId: string, message: string, type: string) {\r\n super(\"ConnectionErrorEvent\", connectionId, EventType.Debug);\r\n this.privMessage = message;\r\n this.privType = type;\r\n }\r\n\r\n public get message(): string {\r\n return this.privMessage;\r\n }\r\n\r\n public get type(): string {\r\n return this.privType;\r\n }\r\n}\r\n\r\nexport class ConnectionEstablishErrorEvent extends ConnectionEvent {\r\n private privStatusCode: number;\r\n private privReason: string;\r\n\r\n public constructor(connectionId: string, statuscode: number, reason: string) {\r\n super(\"ConnectionEstablishErrorEvent\", connectionId, EventType.Error);\r\n this.privStatusCode = statuscode;\r\n this.privReason = reason;\r\n }\r\n\r\n public get reason(): string {\r\n return this.privReason;\r\n }\r\n\r\n public get statusCode(): number {\r\n return this.privStatusCode;\r\n }\r\n}\r\n\r\nexport class ConnectionMessageReceivedEvent extends ConnectionEvent {\r\n private privNetworkReceivedTime: string;\r\n private privMessage: ConnectionMessage;\r\n\r\n public constructor(connectionId: string, networkReceivedTimeISO: string, message: ConnectionMessage) {\r\n super(\"ConnectionMessageReceivedEvent\", connectionId);\r\n this.privNetworkReceivedTime = networkReceivedTimeISO;\r\n this.privMessage = message;\r\n }\r\n\r\n public get networkReceivedTime(): string {\r\n return this.privNetworkReceivedTime;\r\n }\r\n\r\n public get message(): ConnectionMessage {\r\n return this.privMessage;\r\n }\r\n}\r\n\r\nexport class ConnectionMessageSentEvent extends ConnectionEvent {\r\n private privNetworkSentTime: string;\r\n private privMessage: ConnectionMessage;\r\n\r\n public constructor(connectionId: string, networkSentTimeISO: string, message: ConnectionMessage) {\r\n super(\"ConnectionMessageSentEvent\", connectionId);\r\n this.privNetworkSentTime = networkSentTimeISO;\r\n this.privMessage = message;\r\n }\r\n\r\n public get networkSentTime(): string {\r\n return this.privNetworkSentTime;\r\n }\r\n\r\n public get message(): ConnectionMessage {\r\n return this.privMessage;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-unsafe-return */\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { InvalidOperationError } from \"./Error\";\r\nimport { createNoDashGuid } from \"./Guid\";\r\nimport { IStringDictionary } from \"./IDictionary\";\r\n\r\nexport enum MessageType {\r\n Text,\r\n Binary,\r\n}\r\n\r\nexport class ConnectionMessage {\r\n\r\n private privMessageType: MessageType;\r\n private privHeaders: IStringDictionary;\r\n private privBody: any = null;\r\n private privSize: number;\r\n\r\n private privId: string;\r\n\r\n public constructor(\r\n messageType: MessageType,\r\n body: any,\r\n headers?: IStringDictionary,\r\n id?: string) {\r\n\r\n if (messageType === MessageType.Text && body && !(typeof (body) === \"string\")) {\r\n throw new InvalidOperationError(\"Payload must be a string\");\r\n }\r\n\r\n if (messageType === MessageType.Binary && body && !(body instanceof ArrayBuffer)) {\r\n throw new InvalidOperationError(\"Payload must be ArrayBuffer\");\r\n }\r\n\r\n this.privMessageType = messageType;\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-assignment\r\n this.privBody = body;\r\n this.privHeaders = headers ? headers : {};\r\n this.privId = id ? id : createNoDashGuid();\r\n switch (this.messageType) {\r\n case MessageType.Binary:\r\n this.privSize = this.binaryBody !== null ? this.binaryBody.byteLength : 0;\r\n break;\r\n case MessageType.Text:\r\n this.privSize = this.textBody.length;\r\n }\r\n }\r\n\r\n public get messageType(): MessageType {\r\n return this.privMessageType;\r\n }\r\n\r\n public get headers(): IStringDictionary {\r\n return this.privHeaders;\r\n }\r\n\r\n public get body(): any {\r\n return this.privBody;\r\n }\r\n\r\n public get textBody(): string {\r\n if (this.privMessageType === MessageType.Binary) {\r\n throw new InvalidOperationError(\"Not supported for binary message\");\r\n }\r\n\r\n return this.privBody as string;\r\n }\r\n\r\n public get binaryBody(): ArrayBuffer {\r\n if (this.privMessageType === MessageType.Text) {\r\n throw new InvalidOperationError(\"Not supported for text message\");\r\n }\r\n\r\n return this.privBody;\r\n }\r\n\r\n public get id(): string {\r\n return this.privId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport class ConnectionOpenResponse {\r\n private privStatusCode: number;\r\n private privReason: string;\r\n\r\n public constructor(statusCode: number, reason: string) {\r\n this.privStatusCode = statusCode;\r\n this.privReason = reason;\r\n }\r\n\r\n public get statusCode(): number {\r\n return this.privStatusCode;\r\n }\r\n\r\n public get reason(): string {\r\n return this.privReason;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Deferred } from \"./Promise\";\r\n\r\n/**\r\n * The error that is thrown when an argument passed in is null.\r\n *\r\n * @export\r\n * @class DefferalMap\r\n */\r\n\r\nexport class DeferralMap {\r\n private privMap: { [id: string]: Deferred } = {};\r\n\r\n public add(id: string, deferral: Deferred): void {\r\n this.privMap[id] = deferral;\r\n }\r\n\r\n public getId(id: string): Deferred {\r\n return this.privMap[id];\r\n }\r\n\r\n public complete(id: string, result: T): void {\r\n try {\r\n this.privMap[id].resolve(result);\r\n } catch (error) {\r\n this.privMap[id].reject(error as string);\r\n } finally {\r\n this.privMap[id] = undefined;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { AgentConfig } from \"../common.speech/Exports\";\r\nimport { EventType, PlatformEvent } from \"./PlatformEvent\";\r\n\r\nexport class DialogEvent extends PlatformEvent {\r\n\r\n public constructor(eventName: string, eventType: EventType = EventType.Info) {\r\n super(eventName, eventType);\r\n }\r\n}\r\n\r\nexport class SendingAgentContextMessageEvent extends DialogEvent {\r\n private privAgentConfig: AgentConfig;\r\n\r\n public constructor(agentConfig: AgentConfig) {\r\n super(\"SendingAgentContextMessageEvent\");\r\n this.privAgentConfig = agentConfig;\r\n }\r\n\r\n public get agentConfig(): AgentConfig {\r\n return this.privAgentConfig;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\n/**\r\n * The error that is thrown when an argument passed in is null.\r\n *\r\n * @export\r\n * @class ArgumentNullError\r\n * @extends {Error}\r\n */\r\nexport class ArgumentNullError extends Error {\r\n\r\n /**\r\n * Creates an instance of ArgumentNullError.\r\n *\r\n * @param {string} argumentName - Name of the argument that is null\r\n *\r\n * @memberOf ArgumentNullError\r\n */\r\n public constructor(argumentName: string) {\r\n super(argumentName);\r\n this.name = \"ArgumentNull\";\r\n this.message = argumentName;\r\n }\r\n}\r\n\r\n/**\r\n * The error that is thrown when an invalid operation is performed in the code.\r\n *\r\n * @export\r\n * @class InvalidOperationError\r\n * @extends {Error}\r\n */\r\nexport class InvalidOperationError extends Error {\r\n\r\n /**\r\n * Creates an instance of InvalidOperationError.\r\n *\r\n * @param {string} error - The error\r\n *\r\n * @memberOf InvalidOperationError\r\n */\r\n public constructor(error: string) {\r\n super(error);\r\n this.name = \"InvalidOperation\";\r\n this.message = error;\r\n }\r\n}\r\n\r\n/**\r\n * The error that is thrown when an object is disposed.\r\n *\r\n * @export\r\n * @class ObjectDisposedError\r\n * @extends {Error}\r\n */\r\nexport class ObjectDisposedError extends Error {\r\n\r\n /**\r\n * Creates an instance of ObjectDisposedError.\r\n *\r\n * @param {string} objectName - The object that is disposed\r\n * @param {string} error - The error\r\n *\r\n * @memberOf ObjectDisposedError\r\n */\r\n public constructor(objectName: string, error?: string) {\r\n super(error);\r\n this.name = objectName + \"ObjectDisposed\";\r\n this.message = error;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ObjectDisposedError } from \"./Error\";\r\nimport { createNoDashGuid } from \"./Guid\";\r\nimport { IDetachable } from \"./IDetachable\";\r\nimport { IStringDictionary } from \"./IDictionary\";\r\nimport { IEventListener, IEventSource } from \"./IEventSource\";\r\nimport { PlatformEvent } from \"./PlatformEvent\";\r\n\r\nexport class EventSource implements IEventSource {\r\n private privEventListeners: IStringDictionary<(event: TEvent) => void> = {};\r\n private privMetadata: IStringDictionary;\r\n private privIsDisposed: boolean = false;\r\n private privConsoleListener: IDetachable = undefined;\r\n\r\n public constructor(metadata?: IStringDictionary) {\r\n this.privMetadata = metadata;\r\n }\r\n\r\n public onEvent(event: TEvent): void {\r\n if (this.isDisposed()) {\r\n throw (new ObjectDisposedError(\"EventSource\"));\r\n }\r\n\r\n if (this.metadata) {\r\n for (const paramName in this.metadata) {\r\n if (paramName) {\r\n if (event.metadata) {\r\n if (!event.metadata[paramName]) {\r\n event.metadata[paramName] = this.metadata[paramName];\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n for (const eventId in this.privEventListeners) {\r\n if (eventId && this.privEventListeners[eventId]) {\r\n this.privEventListeners[eventId](event);\r\n }\r\n }\r\n }\r\n\r\n public attach(onEventCallback: (event: TEvent) => void): IDetachable {\r\n const id = createNoDashGuid();\r\n this.privEventListeners[id] = onEventCallback;\r\n return {\r\n detach: (): Promise => {\r\n delete this.privEventListeners[id];\r\n return Promise.resolve();\r\n },\r\n };\r\n }\r\n\r\n public attachListener(listener: IEventListener): IDetachable {\r\n return this.attach((e: TEvent): void => listener.onEvent(e));\r\n }\r\n\r\n public attachConsoleListener(listener: IEventListener): IDetachable {\r\n if (!!this.privConsoleListener) {\r\n void this.privConsoleListener.detach(); // Detach implementation for eventListeners is synchronous\r\n }\r\n this.privConsoleListener = this.attach((e: TEvent): void => listener.onEvent(e));\r\n return this.privConsoleListener;\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public dispose(): void {\r\n this.privEventListeners = null;\r\n this.privIsDisposed = true;\r\n }\r\n\r\n public get metadata(): IStringDictionary {\r\n return this.privMetadata;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ArgumentNullError } from \"./Error\";\r\nimport { EventSource } from \"./EventSource\";\r\nimport { IEventSource } from \"./IEventSource\";\r\nimport { PlatformEvent } from \"./PlatformEvent\";\r\n\r\nexport class Events {\r\n private static privInstance: IEventSource = new EventSource();\r\n\r\n public static setEventSource(eventSource: IEventSource): void {\r\n if (!eventSource) {\r\n throw new ArgumentNullError(\"eventSource\");\r\n }\r\n\r\n Events.privInstance = eventSource;\r\n }\r\n\r\n public static get instance(): IEventSource {\r\n return Events.privInstance;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport * from \"./AudioSourceEvents\";\r\nexport * from \"./ConnectionEvents\";\r\nexport * from \"./ConnectionMessage\";\r\nexport * from \"./ConnectionOpenResponse\";\r\nexport * from \"./DeferralMap\";\r\nexport * from \"./DialogEvents\";\r\nexport * from \"./Error\";\r\nexport * from \"./Events\";\r\nexport * from \"./EventSource\";\r\nexport * from \"./Guid\";\r\nexport * from \"./IAudioSource\";\r\nexport * from \"./IConnection\";\r\nexport * from \"./IDetachable\";\r\nexport * from \"./IDictionary\";\r\nexport * from \"./IDisposable\";\r\nexport * from \"./IEventSource\";\r\nexport * from \"./IErrorMessages\";\r\nexport * from \"./ITimer\";\r\nexport * from \"./IWebsocketMessageFormatter\";\r\nexport * from \"./List\";\r\nexport * from \"./PlatformEvent\";\r\nexport * from \"./Promise\";\r\nexport * from \"./Queue\";\r\nexport * from \"./RawWebsocketMessage\";\r\nexport * from \"./RiffPcmEncoder\";\r\nexport * from \"./Stream\";\r\nexport { TranslationStatus } from \"../common.speech/TranslationStatus\";\r\nexport * from \"./ChunkedArrayBufferStream\";\r\nexport * from \"./IAudioDestination\";\r\nexport * from \"./Timeout\";\r\nexport * from \"./OCSPEvents\";\r\nexport * from \"./BackgroundError\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { v4 as uuid } from \"uuid\";\r\n\r\nconst createGuid: () => string = (): string => uuid();\r\n\r\nconst createNoDashGuid: () => string = (): string => createGuid().replace(new RegExp(\"-\", \"g\"), \"\").toUpperCase();\r\n\r\nexport { createGuid, createNoDashGuid };\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ConnectionEvent } from \"./ConnectionEvents\";\r\nimport { ConnectionMessage } from \"./ConnectionMessage\";\r\nimport { ConnectionOpenResponse } from \"./ConnectionOpenResponse\";\r\nimport { EventSource } from \"./EventSource\";\r\n\r\nexport enum ConnectionState {\r\n None,\r\n Connected,\r\n Connecting,\r\n Disconnected,\r\n}\r\n\r\nexport interface IConnection {\r\n id: string;\r\n state(): ConnectionState;\r\n open(): Promise;\r\n send(message: ConnectionMessage): Promise;\r\n read(): Promise;\r\n events: EventSource;\r\n dispose(disposing?: string): Promise;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ObjectDisposedError } from \"./Error\";\r\nimport { IDetachable } from \"./IDetachable\";\r\nimport { IStringDictionary } from \"./IDictionary\";\r\nimport { IDisposable } from \"./IDisposable\";\r\n\r\nexport interface IList extends IDisposable {\r\n get(itemIndex: number): TItem;\r\n first(): TItem;\r\n last(): TItem;\r\n\r\n add(item: TItem): void;\r\n insertAt(index: number, item: TItem): void;\r\n\r\n removeFirst(): TItem;\r\n removeLast(): TItem;\r\n removeAt(index: number): TItem;\r\n remove(index: number, count: number): TItem[];\r\n clear(): void;\r\n\r\n length(): number;\r\n\r\n onAdded(addedCallback: () => void): IDetachable;\r\n onRemoved(removedCallback: () => void): IDetachable;\r\n onDisposed(disposedCallback: () => void): IDetachable;\r\n\r\n join(seperator?: string): string;\r\n\r\n toArray(): TItem[];\r\n\r\n any(callback?: (item: TItem, index: number) => boolean): boolean;\r\n all(callback: (item: TItem) => boolean): boolean;\r\n forEach(callback: (item: TItem, index: number) => void): void;\r\n select(callback: (item: TItem, index: number) => T2): List;\r\n where(callback: (item: TItem, index: number) => boolean): List;\r\n orderBy(compareFn: (a: TItem, b: TItem) => number): List;\r\n orderByDesc(compareFn: (a: TItem, b: TItem) => number): List;\r\n clone(): List;\r\n concat(list: List): List;\r\n concatArray(array: TItem[]): List;\r\n}\r\n\r\nexport class List implements IList {\r\n private privList: TItem[];\r\n private privSubscriptionIdCounter: number = 0;\r\n private privAddSubscriptions: IStringDictionary<() => void> = {};\r\n private privRemoveSubscriptions: IStringDictionary<() => void> = {};\r\n private privDisposedSubscriptions: IStringDictionary<() => void> = {};\r\n private privDisposeReason: string = null;\r\n\r\n public constructor(list?: TItem[]) {\r\n this.privList = [];\r\n // copy the list rather than taking as is.\r\n if (list) {\r\n for (const item of list) {\r\n this.privList.push(item);\r\n }\r\n }\r\n }\r\n\r\n public get(itemIndex: number): TItem {\r\n this.throwIfDisposed();\r\n return this.privList[itemIndex];\r\n }\r\n\r\n public first(): TItem {\r\n return this.get(0);\r\n }\r\n\r\n public last(): TItem {\r\n return this.get(this.length() - 1);\r\n }\r\n\r\n public add(item: TItem): void {\r\n this.throwIfDisposed();\r\n this.insertAt(this.privList.length, item);\r\n }\r\n\r\n public insertAt(index: number, item: TItem): void {\r\n this.throwIfDisposed();\r\n if (index === 0) {\r\n this.privList.unshift(item);\r\n } else if (index === this.privList.length) {\r\n this.privList.push(item);\r\n } else {\r\n this.privList.splice(index, 0, item);\r\n }\r\n this.triggerSubscriptions(this.privAddSubscriptions);\r\n }\r\n\r\n public removeFirst(): TItem {\r\n this.throwIfDisposed();\r\n return this.removeAt(0);\r\n }\r\n\r\n public removeLast(): TItem {\r\n this.throwIfDisposed();\r\n return this.removeAt(this.length() - 1);\r\n }\r\n\r\n public removeAt(index: number): TItem {\r\n this.throwIfDisposed();\r\n return this.remove(index, 1)[0];\r\n }\r\n\r\n public remove(index: number, count: number): TItem[] {\r\n this.throwIfDisposed();\r\n const removedElements = this.privList.splice(index, count);\r\n this.triggerSubscriptions(this.privRemoveSubscriptions);\r\n return removedElements;\r\n }\r\n\r\n public clear(): void {\r\n this.throwIfDisposed();\r\n this.remove(0, this.length());\r\n }\r\n\r\n public length(): number {\r\n this.throwIfDisposed();\r\n return this.privList.length;\r\n }\r\n\r\n public onAdded(addedCallback: () => void): IDetachable {\r\n this.throwIfDisposed();\r\n const subscriptionId = this.privSubscriptionIdCounter++;\r\n\r\n this.privAddSubscriptions[subscriptionId] = addedCallback;\r\n\r\n return {\r\n detach: (): Promise => {\r\n delete this.privAddSubscriptions[subscriptionId];\r\n return Promise.resolve();\r\n },\r\n };\r\n }\r\n\r\n public onRemoved(removedCallback: () => void): IDetachable {\r\n this.throwIfDisposed();\r\n const subscriptionId = this.privSubscriptionIdCounter++;\r\n\r\n this.privRemoveSubscriptions[subscriptionId] = removedCallback;\r\n\r\n return {\r\n detach: (): Promise => {\r\n delete this.privRemoveSubscriptions[subscriptionId];\r\n return Promise.resolve();\r\n },\r\n };\r\n }\r\n\r\n public onDisposed(disposedCallback: () => void): IDetachable {\r\n this.throwIfDisposed();\r\n const subscriptionId = this.privSubscriptionIdCounter++;\r\n\r\n this.privDisposedSubscriptions[subscriptionId] = disposedCallback;\r\n\r\n return {\r\n detach: (): Promise => {\r\n delete this.privDisposedSubscriptions[subscriptionId];\r\n return Promise.resolve();\r\n },\r\n };\r\n }\r\n\r\n public join(seperator?: string): string {\r\n this.throwIfDisposed();\r\n return this.privList.join(seperator);\r\n }\r\n\r\n public toArray(): TItem[] {\r\n const cloneCopy = Array();\r\n this.privList.forEach((val: TItem): void => {\r\n cloneCopy.push(val);\r\n });\r\n return cloneCopy;\r\n }\r\n\r\n public any(callback?: (item: TItem, index: number) => boolean): boolean {\r\n this.throwIfDisposed();\r\n if (callback) {\r\n return this.where(callback).length() > 0;\r\n } else {\r\n return this.length() > 0;\r\n }\r\n }\r\n\r\n public all(callback: (item: TItem) => boolean): boolean {\r\n this.throwIfDisposed();\r\n return this.where(callback).length() === this.length();\r\n }\r\n\r\n public forEach(callback: (item: TItem, index: number) => void): void {\r\n this.throwIfDisposed();\r\n for (let i = 0; i < this.length(); i++) {\r\n callback(this.privList[i], i);\r\n }\r\n }\r\n\r\n public select(callback: (item: TItem, index: number) => T2): List {\r\n this.throwIfDisposed();\r\n const selectList: T2[] = [];\r\n for (let i = 0; i < this.privList.length; i++) {\r\n selectList.push(callback(this.privList[i], i));\r\n }\r\n\r\n return new List(selectList);\r\n }\r\n\r\n public where(callback: (item: TItem, index: number) => boolean): List {\r\n this.throwIfDisposed();\r\n const filteredList = new List();\r\n for (let i = 0; i < this.privList.length; i++) {\r\n if (callback(this.privList[i], i)) {\r\n filteredList.add(this.privList[i]);\r\n }\r\n }\r\n return filteredList;\r\n }\r\n\r\n public orderBy(compareFn: (a: TItem, b: TItem) => number): List {\r\n this.throwIfDisposed();\r\n const clonedArray = this.toArray();\r\n const orderedArray = clonedArray.sort(compareFn);\r\n return new List(orderedArray);\r\n }\r\n\r\n public orderByDesc(compareFn: (a: TItem, b: TItem) => number): List {\r\n this.throwIfDisposed();\r\n return this.orderBy((a: TItem, b: TItem): number => compareFn(b, a));\r\n }\r\n\r\n public clone(): List {\r\n this.throwIfDisposed();\r\n return new List(this.toArray());\r\n }\r\n\r\n public concat(list: List): List {\r\n this.throwIfDisposed();\r\n return new List(this.privList.concat(list.toArray()));\r\n }\r\n\r\n public concatArray(array: TItem[]): List {\r\n this.throwIfDisposed();\r\n return new List(this.privList.concat(array));\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privList == null;\r\n }\r\n\r\n public dispose(reason?: string): void {\r\n if (!this.isDisposed()) {\r\n this.privDisposeReason = reason;\r\n this.privList = null;\r\n this.privAddSubscriptions = null;\r\n this.privRemoveSubscriptions = null;\r\n this.triggerSubscriptions(this.privDisposedSubscriptions);\r\n }\r\n }\r\n\r\n private throwIfDisposed(): void {\r\n if (this.isDisposed()) {\r\n throw new ObjectDisposedError(\"List\", this.privDisposeReason);\r\n }\r\n }\r\n\r\n private triggerSubscriptions(subscriptions: IStringDictionary<() => void>): void {\r\n if (subscriptions) {\r\n for (const subscriptionId in subscriptions) {\r\n if (subscriptionId) {\r\n subscriptions[subscriptionId]();\r\n }\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { EventType, PlatformEvent } from \"./PlatformEvent\";\r\n\r\nexport class OCSPEvent extends PlatformEvent {\r\n private privSignature: string;\r\n\r\n public constructor(eventName: string, eventType: EventType, signature: string) {\r\n super(eventName, eventType);\r\n\r\n this.privSignature = signature;\r\n }\r\n}\r\n\r\nexport class OCSPMemoryCacheHitEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPMemoryCacheHitEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPCacheMissEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPCacheMissEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPDiskCacheHitEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPDiskCacheHitEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPCacheUpdateNeededEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPCacheUpdateNeededEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPMemoryCacheStoreEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPMemoryCacheStoreEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPDiskCacheStoreEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPDiskCacheStoreEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPCacheUpdateCompleteEvent extends OCSPEvent {\r\n public constructor(signature: string) {\r\n super(\"OCSPCacheUpdateCompleteEvent\", EventType.Debug, signature);\r\n }\r\n}\r\n\r\nexport class OCSPStapleReceivedEvent extends OCSPEvent {\r\n public constructor() {\r\n super(\"OCSPStapleReceivedEvent\", EventType.Debug, \"\");\r\n }\r\n}\r\n\r\nexport class OCSPWSUpgradeStartedEvent extends OCSPEvent {\r\n public constructor(serialNumber: string) {\r\n super(\"OCSPWSUpgradeStartedEvent\", EventType.Debug, serialNumber);\r\n }\r\n}\r\n\r\nexport class OCSPCacheEntryExpiredEvent extends OCSPEvent {\r\n private privExpireTime: number;\r\n\r\n public constructor(serialNumber: string, expireTime: number) {\r\n super(\"OCSPCacheEntryExpiredEvent\", EventType.Debug, serialNumber);\r\n this.privExpireTime = expireTime;\r\n }\r\n}\r\n\r\nexport class OCSPCacheEntryNeedsRefreshEvent extends OCSPEvent {\r\n private privExpireTime: number;\r\n private privStartTime: number;\r\n\r\n public constructor(serialNumber: string, startTime: number, expireTime: number) {\r\n super(\"OCSPCacheEntryNeedsRefreshEvent\", EventType.Debug, serialNumber);\r\n this.privExpireTime = expireTime;\r\n this.privStartTime = startTime;\r\n }\r\n}\r\n\r\nexport class OCSPCacheHitEvent extends OCSPEvent {\r\n private privExpireTime: number;\r\n private privStartTime: number;\r\n private privExpireTimeString: string;\r\n private privStartTimeString: string;\r\n\r\n public constructor(serialNumber: string, startTime: number, expireTime: number) {\r\n super(\"OCSPCacheHitEvent\", EventType.Debug, serialNumber);\r\n this.privExpireTime = expireTime;\r\n this.privExpireTimeString = new Date(expireTime).toLocaleDateString();\r\n this.privStartTime = startTime;\r\n this.privStartTimeString = new Date(startTime).toLocaleTimeString();\r\n }\r\n}\r\n\r\nexport class OCSPVerificationFailedEvent extends OCSPEvent {\r\n private privError: string;\r\n\r\n public constructor(serialNumber: string, error: string) {\r\n super(\"OCSPVerificationFailedEvent\", EventType.Debug, serialNumber);\r\n this.privError = error;\r\n }\r\n}\r\n\r\nexport class OCSPCacheFetchErrorEvent extends OCSPEvent {\r\n private privError: string;\r\n\r\n public constructor(serialNumber: string, error: string) {\r\n super(\"OCSPCacheFetchErrorEvent\", EventType.Debug, serialNumber);\r\n this.privError = error;\r\n }\r\n}\r\n\r\nexport class OCSPResponseRetrievedEvent extends OCSPEvent {\r\n public constructor(serialNumber: string) {\r\n super(\"OCSPResponseRetrievedEvent\", EventType.Debug, serialNumber);\r\n }\r\n}\r\n\r\nexport class OCSPCacheUpdateErrorEvent extends OCSPEvent {\r\n private privError: string;\r\n\r\n public constructor(serialNumber: string, error: string) {\r\n super(\"OCSPCacheUpdateErrorEvent\", EventType.Debug, serialNumber);\r\n this.privError = error;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { createNoDashGuid } from \"./Guid\";\r\nimport { IStringDictionary } from \"./IDictionary\";\r\n\r\nexport enum EventType {\r\n Debug,\r\n Info,\r\n Warning,\r\n Error,\r\n None,\r\n}\r\n\r\nexport class PlatformEvent {\r\n private privName: string;\r\n private privEventId: string;\r\n private privEventTime: string;\r\n private privEventType: EventType;\r\n private privMetadata: IStringDictionary;\r\n\r\n public constructor(eventName: string, eventType: EventType) {\r\n this.privName = eventName;\r\n this.privEventId = createNoDashGuid();\r\n this.privEventTime = new Date().toISOString();\r\n this.privEventType = eventType;\r\n this.privMetadata = { };\r\n }\r\n\r\n public get name(): string {\r\n return this.privName;\r\n }\r\n\r\n public get eventId(): string {\r\n return this.privEventId;\r\n }\r\n\r\n public get eventTime(): string {\r\n return this.privEventTime;\r\n }\r\n\r\n public get eventType(): EventType {\r\n return this.privEventType;\r\n }\r\n\r\n public get metadata(): IStringDictionary {\r\n return this.privMetadata;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file, @typescript-eslint/typedef */\r\n\r\nexport enum PromiseState {\r\n None,\r\n Resolved,\r\n Rejected,\r\n}\r\n\r\nexport interface IDeferred {\r\n readonly promise: Promise;\r\n\r\n resolve(result: T): IDeferred;\r\n\r\n reject(error: string): IDeferred;\r\n}\r\n\r\nexport class PromiseResult {\r\n protected privIsCompleted: boolean;\r\n protected privIsError: boolean;\r\n protected privError: string;\r\n protected privResult: T;\r\n\r\n public constructor(promiseResultEventSource: PromiseResultEventSource) {\r\n promiseResultEventSource.on((result: T): void => {\r\n if (!this.privIsCompleted) {\r\n this.privIsCompleted = true;\r\n this.privIsError = false;\r\n this.privResult = result;\r\n }\r\n }, (error: string): void => {\r\n if (!this.privIsCompleted) {\r\n this.privIsCompleted = true;\r\n this.privIsError = true;\r\n this.privError = error;\r\n }\r\n });\r\n }\r\n\r\n public get isCompleted(): boolean {\r\n return this.privIsCompleted;\r\n }\r\n\r\n public get isError(): boolean {\r\n return this.privIsError;\r\n }\r\n\r\n public get error(): string {\r\n return this.privError;\r\n }\r\n\r\n public get result(): T {\r\n return this.privResult;\r\n }\r\n\r\n public throwIfError = (): void => {\r\n if (this.isError) {\r\n throw this.error;\r\n }\r\n };\r\n}\r\n\r\nexport class PromiseResultEventSource {\r\n\r\n private privOnSetResult: (result: T) => void;\r\n private privOnSetError: (error: string) => void;\r\n\r\n public setResult = (result: T): void => {\r\n this.privOnSetResult(result);\r\n };\r\n\r\n public setError = (error: string): void => {\r\n this.privOnSetError(error);\r\n };\r\n\r\n public on = (onSetResult: (result: T) => void, onSetError: (error: string) => void): void => {\r\n this.privOnSetResult = onSetResult;\r\n this.privOnSetError = onSetError;\r\n };\r\n}\r\n\r\nexport class Deferred implements IDeferred {\r\n private privPromise: Promise;\r\n private privResolve: (value?: T | PromiseLike) => void;\r\n private privReject: (reason?: any) => void;\r\n\r\n public constructor() {\r\n // eslint-disable-next-line @typescript-eslint/explicit-function-return-type\r\n this.privPromise = new Promise((resolve: (value: T) => void, reject: (reason: any) => void) => {\r\n this.privResolve = resolve;\r\n this.privReject = reject;\r\n });\r\n }\r\n\r\n public get promise(): Promise {\r\n return this.privPromise;\r\n }\r\n\r\n public resolve = (result: T | Promise): Deferred => {\r\n this.privResolve(result);\r\n return this;\r\n };\r\n\r\n public reject = (error: string): Deferred => {\r\n this.privReject(error);\r\n return this;\r\n };\r\n}\r\n\r\nexport class Sink {\r\n private privState: PromiseState = PromiseState.None;\r\n private privPromiseResult: PromiseResult = null;\r\n private privPromiseResultEvents: PromiseResultEventSource = null;\r\n\r\n private privSuccessHandlers: ((result: T) => void)[] = [];\r\n private privErrorHandlers: ((e: string) => void)[] = [];\r\n\r\n public constructor() {\r\n this.privPromiseResultEvents = new PromiseResultEventSource();\r\n this.privPromiseResult = new PromiseResult(this.privPromiseResultEvents);\r\n }\r\n\r\n public get state(): PromiseState {\r\n return this.privState;\r\n }\r\n\r\n public get result(): PromiseResult {\r\n return this.privPromiseResult;\r\n }\r\n\r\n public resolve(result: T): void {\r\n if (this.privState !== PromiseState.None) {\r\n throw new Error(\"'Cannot resolve a completed promise'\");\r\n }\r\n\r\n this.privState = PromiseState.Resolved;\r\n this.privPromiseResultEvents.setResult(result);\r\n\r\n for (let i = 0; i < this.privSuccessHandlers.length; i++) {\r\n this.executeSuccessCallback(result, this.privSuccessHandlers[i], this.privErrorHandlers[i]);\r\n }\r\n\r\n this.detachHandlers();\r\n }\r\n\r\n public reject(error: string): void {\r\n if (this.privState !== PromiseState.None) {\r\n throw new Error(\"'Cannot reject a completed promise'\");\r\n }\r\n\r\n this.privState = PromiseState.Rejected;\r\n this.privPromiseResultEvents.setError(error);\r\n\r\n for (const errorHandler of this.privErrorHandlers) {\r\n this.executeErrorCallback(error, errorHandler);\r\n }\r\n\r\n this.detachHandlers();\r\n }\r\n\r\n public on(\r\n successCallback: (result: T) => void,\r\n errorCallback: (error: string) => void): void {\r\n\r\n if (successCallback == null) {\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n successCallback = (): void => { };\r\n }\r\n\r\n if (this.privState === PromiseState.None) {\r\n this.privSuccessHandlers.push(successCallback);\r\n this.privErrorHandlers.push(errorCallback);\r\n } else {\r\n if (this.privState === PromiseState.Resolved) {\r\n this.executeSuccessCallback(this.privPromiseResult.result, successCallback, errorCallback);\r\n } else if (this.privState === PromiseState.Rejected) {\r\n this.executeErrorCallback(this.privPromiseResult.error, errorCallback);\r\n }\r\n\r\n this.detachHandlers();\r\n }\r\n }\r\n\r\n private executeSuccessCallback(result: T, successCallback: (result: T) => void, errorCallback: (error: string) => void): void {\r\n try {\r\n successCallback(result);\r\n } catch (e) {\r\n this.executeErrorCallback(`'Unhandled callback error: ${e as string}'`, errorCallback);\r\n }\r\n }\r\n\r\n private executeErrorCallback(error: string, errorCallback: (error: string) => void): void {\r\n if (errorCallback) {\r\n try {\r\n errorCallback(error);\r\n } catch (e) {\r\n throw new Error(`'Unhandled callback error: ${e as string}. InnerError: ${error}'`);\r\n }\r\n } else {\r\n throw new Error(`'Unhandled error: ${error}'`);\r\n }\r\n }\r\n\r\n private detachHandlers(): void {\r\n this.privErrorHandlers = [];\r\n this.privSuccessHandlers = [];\r\n }\r\n}\r\n\r\n// eslint-disable-next-line prefer-arrow/prefer-arrow-functions\r\nexport function marshalPromiseToCallbacks(\r\n promise: Promise,\r\n cb?: (value: T) => void,\r\n err?: (error: string) => void): void {\r\n promise.then((val: T): void => {\r\n try {\r\n if (!!cb) {\r\n cb(val);\r\n }\r\n } catch (error) {\r\n if (!!err) {\r\n try {\r\n if (error instanceof Error) {\r\n const typedError: Error = error ;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n // eslint-disable-next-line no-empty\r\n } catch (error) { }\r\n }\r\n }\r\n }, (error: any): void => {\r\n if (!!err) {\r\n try {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n // eslint-disable-next-line no-empty\r\n } catch (error) { }\r\n }\r\n });\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { InvalidOperationError, ObjectDisposedError } from \"./Error\";\r\nimport { IDetachable } from \"./IDetachable\";\r\nimport { IDisposable } from \"./IDisposable\";\r\nimport { List } from \"./List\";\r\nimport {\r\n Deferred,\r\n} from \"./Promise\";\r\nexport interface IQueue extends IDisposable {\r\n enqueue(item: TItem): void;\r\n enqueueFromPromise(promise: Promise): void;\r\n dequeue(): Promise;\r\n peek(): Promise;\r\n length(): number;\r\n}\r\n\r\nenum SubscriberType {\r\n Dequeue,\r\n Peek,\r\n}\r\n\r\nexport class Queue implements IQueue {\r\n private privPromiseStore: List> = new List>();\r\n private privList: List;\r\n private privDetachables: IDetachable[];\r\n private privSubscribers: List<{ type: SubscriberType; deferral: Deferred }>;\r\n private privIsDrainInProgress: boolean = false;\r\n private privIsDisposing: boolean = false;\r\n private privDisposeReason: string = null;\r\n\r\n public constructor(list?: List) {\r\n this.privList = list ? list : new List();\r\n this.privDetachables = [];\r\n this.privSubscribers = new List<{ type: SubscriberType; deferral: Deferred }>();\r\n this.privDetachables.push(this.privList.onAdded((): void => this.drain()));\r\n }\r\n\r\n public enqueue(item: TItem): void {\r\n this.throwIfDispose();\r\n this.enqueueFromPromise(new Promise((resolve: (value: TItem) => void): void => resolve(item)));\r\n }\r\n\r\n public enqueueFromPromise(promise: Promise): void {\r\n this.throwIfDispose();\r\n promise.then((val: TItem): void => {\r\n this.privList.add(val);\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n }, (): void => { });\r\n }\r\n\r\n public dequeue(): Promise {\r\n this.throwIfDispose();\r\n const deferredSubscriber = new Deferred();\r\n\r\n if (this.privSubscribers) {\r\n this.privSubscribers.add({ deferral: deferredSubscriber, type: SubscriberType.Dequeue });\r\n this.drain();\r\n }\r\n\r\n return deferredSubscriber.promise;\r\n }\r\n\r\n public peek(): Promise {\r\n this.throwIfDispose();\r\n const deferredSubscriber = new Deferred();\r\n\r\n const subs = this.privSubscribers;\r\n if (subs) {\r\n this.privSubscribers.add({ deferral: deferredSubscriber, type: SubscriberType.Peek });\r\n this.drain();\r\n }\r\n\r\n return deferredSubscriber.promise;\r\n }\r\n\r\n public length(): number {\r\n this.throwIfDispose();\r\n return this.privList.length();\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privSubscribers == null;\r\n }\r\n\r\n public async drainAndDispose(pendingItemProcessor: (pendingItemInQueue: TItem) => void, reason?: string): Promise {\r\n if (!this.isDisposed() && !this.privIsDisposing) {\r\n this.privDisposeReason = reason;\r\n this.privIsDisposing = true;\r\n\r\n const subs = this.privSubscribers;\r\n if (subs) {\r\n while (subs.length() > 0) {\r\n const subscriber = subs.removeFirst();\r\n // TODO: this needs work (Resolve(null) instead?).\r\n subscriber.deferral.resolve(undefined);\r\n // subscriber.deferral.reject(\"Disposed\");\r\n }\r\n\r\n // note: this block assumes cooperative multitasking, i.e.,\r\n // between the if-statement and the assignment there are no\r\n // thread switches.\r\n // Reason is that between the initial const = this.; and this\r\n // point there is the derral.resolve() operation that might have\r\n // caused recursive calls to the Queue, especially, calling\r\n // Dispose() on the queue alredy (which would reset the var\r\n // here to null!).\r\n // That should generally hold true for javascript...\r\n if (this.privSubscribers === subs) {\r\n this.privSubscribers = subs;\r\n }\r\n }\r\n\r\n for (const detachable of this.privDetachables) {\r\n await detachable.detach();\r\n }\r\n\r\n if (this.privPromiseStore.length() > 0 && pendingItemProcessor) {\r\n const promiseArray: Promise[] = [];\r\n\r\n this.privPromiseStore.toArray().forEach((wrapper: Promise): void => {\r\n promiseArray.push(wrapper);\r\n });\r\n return Promise.all(promiseArray).finally((): void => {\r\n this.privSubscribers = null;\r\n this.privList.forEach((item: TItem): void => {\r\n pendingItemProcessor(item);\r\n });\r\n this.privList = null;\r\n return;\r\n }).then();\r\n } else {\r\n this.privSubscribers = null;\r\n this.privList = null;\r\n }\r\n }\r\n }\r\n\r\n public async dispose(reason?: string): Promise {\r\n await this.drainAndDispose(null, reason);\r\n }\r\n\r\n private drain(): void {\r\n if (!this.privIsDrainInProgress && !this.privIsDisposing) {\r\n this.privIsDrainInProgress = true;\r\n\r\n const subs = this.privSubscribers;\r\n const lists = this.privList;\r\n if (subs && lists) {\r\n while (lists.length() > 0 && subs.length() > 0 && !this.privIsDisposing) {\r\n const subscriber = subs.removeFirst();\r\n if (subscriber.type === SubscriberType.Peek) {\r\n subscriber.deferral.resolve(lists.first());\r\n } else {\r\n const dequeuedItem = lists.removeFirst();\r\n subscriber.deferral.resolve(dequeuedItem);\r\n }\r\n }\r\n\r\n // note: this block assumes cooperative multitasking, i.e.,\r\n // between the if-statement and the assignment there are no\r\n // thread switches.\r\n // Reason is that between the initial const = this.; and this\r\n // point there is the derral.resolve() operation that might have\r\n // caused recursive calls to the Queue, especially, calling\r\n // Dispose() on the queue alredy (which would reset the var\r\n // here to null!).\r\n // That should generally hold true for javascript...\r\n if (this.privSubscribers === subs) {\r\n this.privSubscribers = subs;\r\n }\r\n\r\n // note: this block assumes cooperative multitasking, i.e.,\r\n // between the if-statement and the assignment there are no\r\n // thread switches.\r\n // Reason is that between the initial const = this.; and this\r\n // point there is the derral.resolve() operation that might have\r\n // caused recursive calls to the Queue, especially, calling\r\n // Dispose() on the queue alredy (which would reset the var\r\n // here to null!).\r\n // That should generally hold true for javascript...\r\n if (this.privList === lists) {\r\n this.privList = lists;\r\n }\r\n }\r\n\r\n this.privIsDrainInProgress = false;\r\n }\r\n }\r\n\r\n private throwIfDispose(): void {\r\n if (this.isDisposed()) {\r\n if (this.privDisposeReason) {\r\n throw new InvalidOperationError(this.privDisposeReason);\r\n }\r\n\r\n throw new ObjectDisposedError(\"Queue\");\r\n } else if (this.privIsDisposing) {\r\n throw new InvalidOperationError(\"Queue disposing\");\r\n }\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-unsafe-assignment */\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { MessageType } from \"./ConnectionMessage\";\r\nimport { ArgumentNullError, InvalidOperationError } from \"./Error\";\r\nimport { createNoDashGuid } from \"./Guid\";\r\n\r\nexport class RawWebsocketMessage {\r\n private privMessageType: MessageType;\r\n private privPayload: any = null;\r\n private privId: string;\r\n\r\n public constructor(messageType: MessageType, payload: any, id?: string) {\r\n if (!payload) {\r\n throw new ArgumentNullError(\"payload\");\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\r\n if (messageType === MessageType.Binary && payload.__proto__.constructor.name !== \"ArrayBuffer\") {\r\n throw new InvalidOperationError(\"Payload must be ArrayBuffer\");\r\n }\r\n\r\n if (messageType === MessageType.Text && !(typeof (payload) === \"string\")) {\r\n throw new InvalidOperationError(\"Payload must be a string\");\r\n }\r\n\r\n this.privMessageType = messageType;\r\n this.privPayload = payload;\r\n this.privId = id ? id : createNoDashGuid();\r\n }\r\n\r\n public get messageType(): MessageType {\r\n return this.privMessageType;\r\n }\r\n\r\n public get payload(): any {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-return\r\n return this.privPayload;\r\n }\r\n\r\n public get textContent(): string {\r\n if (this.privMessageType === MessageType.Binary) {\r\n throw new InvalidOperationError(\"Not supported for binary message\");\r\n }\r\n\r\n return this.privPayload as string;\r\n }\r\n\r\n public get binaryContent(): ArrayBuffer {\r\n if (this.privMessageType === MessageType.Text) {\r\n throw new InvalidOperationError(\"Not supported for text message\");\r\n }\r\n\r\n return this.privPayload as ArrayBuffer;\r\n }\r\n\r\n public get id(): string {\r\n return this.privId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport class RiffPcmEncoder {\r\n\r\n private privActualSampleRate: number;\r\n private privDesiredSampleRate: number;\r\n\r\n public constructor(actualSampleRate: number, desiredSampleRate: number) {\r\n this.privActualSampleRate = actualSampleRate;\r\n this.privDesiredSampleRate = desiredSampleRate;\r\n }\r\n\r\n public encode(actualAudioFrame: Float32Array): ArrayBuffer {\r\n\r\n const audioFrame = this.downSampleAudioFrame(actualAudioFrame, this.privActualSampleRate, this.privDesiredSampleRate);\r\n\r\n if (!audioFrame) {\r\n return null;\r\n }\r\n\r\n const audioLength = audioFrame.length * 2;\r\n\r\n const buffer = new ArrayBuffer(audioLength);\r\n const view = new DataView(buffer);\r\n this.floatTo16BitPCM(view, 0, audioFrame);\r\n\r\n return buffer;\r\n }\r\n\r\n private setString(view: DataView, offset: number, str: string): void {\r\n for (let i = 0; i < str.length; i++) {\r\n view.setUint8(offset + i, str.charCodeAt(i));\r\n }\r\n }\r\n\r\n private floatTo16BitPCM(view: DataView, offset: number, input: Float32Array): void {\r\n for (let i = 0; i < input.length; i++ , offset += 2) {\r\n const s = Math.max(-1, Math.min(1, input[i]));\r\n view.setInt16(offset, s < 0 ? s * 0x8000 : s * 0x7FFF, true);\r\n }\r\n }\r\n\r\n private downSampleAudioFrame(\r\n srcFrame: Float32Array,\r\n srcRate: number,\r\n dstRate: number): Float32Array {\r\n\r\n if (!srcFrame) {\r\n return null;\r\n }\r\n\r\n if (dstRate === srcRate || dstRate > srcRate) {\r\n return srcFrame;\r\n }\r\n\r\n const ratio = srcRate / dstRate;\r\n const dstLength = Math.round(srcFrame.length / ratio);\r\n const dstFrame = new Float32Array(dstLength);\r\n let srcOffset = 0;\r\n let dstOffset = 0;\r\n while (dstOffset < dstLength) {\r\n const nextSrcOffset = Math.round((dstOffset + 1) * ratio);\r\n let accum = 0;\r\n let count = 0;\r\n while (srcOffset < nextSrcOffset && srcOffset < srcFrame.length) {\r\n accum += srcFrame[srcOffset++];\r\n count++;\r\n }\r\n dstFrame[dstOffset++] = accum / count;\r\n }\r\n\r\n return dstFrame;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { InvalidOperationError } from \"./Error\";\r\nimport { createNoDashGuid } from \"./Guid\";\r\nimport { Queue } from \"./Queue\";\r\n\r\nexport interface IStreamChunk {\r\n isEnd: boolean;\r\n buffer: TBuffer;\r\n timeReceived: number;\r\n}\r\n\r\nexport class Stream {\r\n private privId: string;\r\n private privIsWriteEnded: boolean = false;\r\n private privIsReadEnded: boolean = false;\r\n private privReaderQueue: Queue>;\r\n\r\n public constructor(streamId?: string) {\r\n this.privId = streamId ? streamId : createNoDashGuid();\r\n this.privReaderQueue = new Queue>();\r\n }\r\n\r\n public get isClosed(): boolean {\r\n return this.privIsWriteEnded;\r\n }\r\n\r\n public get isReadEnded(): boolean {\r\n return this.privIsReadEnded;\r\n }\r\n\r\n public get id(): string {\r\n return this.privId;\r\n }\r\n\r\n public close(): void {\r\n if (!this.privIsWriteEnded) {\r\n this.writeStreamChunk({\r\n buffer: null,\r\n isEnd: true,\r\n timeReceived: Date.now(),\r\n });\r\n this.privIsWriteEnded = true;\r\n }\r\n }\r\n\r\n public writeStreamChunk(streamChunk: IStreamChunk): void {\r\n this.throwIfClosed();\r\n if (!this.privReaderQueue.isDisposed()) {\r\n try {\r\n this.privReaderQueue.enqueue(streamChunk);\r\n } catch (e) {\r\n // Do nothing\r\n }\r\n }\r\n }\r\n\r\n public read(): Promise> {\r\n if (this.privIsReadEnded) {\r\n throw new InvalidOperationError(\"Stream read has already finished\");\r\n }\r\n\r\n return this.privReaderQueue\r\n .dequeue()\r\n .then(async (streamChunk: IStreamChunk): Promise> => {\r\n if (streamChunk === undefined || streamChunk.isEnd) {\r\n await this.privReaderQueue.dispose(\"End of stream reached\");\r\n }\r\n\r\n return streamChunk;\r\n });\r\n }\r\n public readEnded(): void {\r\n if (!this.privIsReadEnded) {\r\n this.privIsReadEnded = true;\r\n this.privReaderQueue = new Queue>();\r\n }\r\n }\r\n\r\n private throwIfClosed(): void {\r\n if (this.privIsWriteEnded) {\r\n throw new InvalidOperationError(\"Stream closed\");\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IStringDictionary } from \"./IDictionary\";\r\n\r\n/**\r\n * String helper functions\r\n */\r\nexport class StringUtils {\r\n\r\n /**\r\n * Formats a string by replacing the named {keys} in the string with the values contained in the replacement dictionary.\r\n * @param format The format string that contains the parts to replace surrounded by {}. For example: \"wss://{region}.cts.speech.microsoft.com\".\r\n * If your string needs to contain a { or } you can use the {{ and }} escape sequences respectively.\r\n * @param replacements The dictionary of replacements. If a replacement is not found, it is replaced with an empty string\r\n * @returns The formatted string. If you pass in a null or undefined format string, an empty string will be returned\r\n */\r\n public static formatString(format: string, replacements: IStringDictionary): string {\r\n if (!format) {\r\n return \"\";\r\n }\r\n\r\n if (!replacements) {\r\n return format;\r\n }\r\n\r\n let formatted: string = \"\";\r\n let key: string = \"\";\r\n\r\n const appendToFormatted = (str: string): void => {\r\n formatted += str;\r\n };\r\n const appendToKey = (str: string): void => {\r\n key += str;\r\n };\r\n let appendFunc: (str: string) => void = appendToFormatted;\r\n\r\n for (let i = 0; i < format.length; i++) {\r\n const c: string = format[i];\r\n const next: string = i + 1 < format.length ? format[i + 1] : \"\";\r\n\r\n switch (c) {\r\n case \"{\":\r\n if (next === \"{\") {\r\n appendFunc(\"{\");\r\n i++;\r\n } else {\r\n appendFunc = appendToKey;\r\n }\r\n break;\r\n\r\n case \"}\":\r\n if (next === \"}\") {\r\n appendFunc(\"}\");\r\n i++;\r\n } else {\r\n if (replacements.hasOwnProperty(key)) {\r\n formatted += replacements[key];\r\n }\r\n\r\n appendFunc = appendToFormatted;\r\n key = \"\";\r\n }\r\n break;\r\n\r\n default:\r\n appendFunc(c);\r\n break;\r\n }\r\n }\r\n\r\n return formatted;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\ntype TWorkerMessage = ICallNotification | IClearResponse | IErrorNotification | IErrorResponse;\r\n\r\ninterface IClearResponse {\r\n error: null;\r\n id: number;\r\n}\r\n\r\ninterface IErrorNotification {\r\n error: {\r\n message: string;\r\n };\r\n id: null;\r\n result: null;\r\n}\r\n\r\ninterface IErrorResponse {\r\n error: {\r\n message: string;\r\n };\r\n id: number;\r\n result: null;\r\n}\r\n\r\ninterface ICallNotification {\r\n id: null;\r\n method: \"call\";\r\n params: {\r\n timerId: number;\r\n };\r\n}\r\n\r\ninterface ISetNotification {\r\n id: null;\r\n method: \"set\";\r\n params: {\r\n delay: number;\r\n now: number;\r\n timerId: number;\r\n };\r\n}\r\n\r\ninterface IClearRequest {\r\n id: number;\r\n method: \"clear\";\r\n params: {\r\n timerId: number;\r\n };\r\n}\r\n\r\ninterface IWorkerEvent extends Event {\r\n data: TWorkerMessage;\r\n}\r\n\r\ninterface IWorkerTimers {\r\n clearTimeout: (timerId: number) => void;\r\n setTimeout: (func: () => any, delay: number) => number;\r\n}\r\n\r\ndeclare type Func = () => any;\r\n\r\nexport class Timeout {\r\n\r\n private static workerTimers: null | IWorkerTimers = null;\r\n\r\n public static clearTimeout: IWorkerTimers[\"clearTimeout\"] = (timerId: number): void => Timeout.timers().clearTimeout(timerId);\r\n\r\n public static setTimeout: IWorkerTimers[\"setTimeout\"] = (func: () => any, delay: number): number => Timeout.timers().setTimeout(func, delay);\r\n\r\n public static load(): any {\r\n // Prefilling the Maps with a function indexed by zero is necessary to be compliant with the specification.\r\n const scheduledTimeoutFunctions: Map = new Map([[0, (): void => { }]]); // eslint-disable-line @typescript-eslint/no-empty-function\r\n const unhandledRequests: Map = new Map();\r\n\r\n // eslint-disable-next-line\r\n const workerScript = `!function(e){var t={};function n(r){if(t[r])return t[r].exports;var o=t[r]={i:r,l:!1,exports:{}};return e[r].call(o.exports,o,o.exports,n),o.l=!0,o.exports}n.m=e,n.c=t,n.d=function(e,t,r){n.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:r})},n.r=function(e){\"undefined\"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:\"Module\"}),Object.defineProperty(e,\"__esModule\",{value:!0})},n.t=function(e,t){if(1&t&&(e=n(e)),8&t)return e;if(4&t&&\"object\"==typeof e&&e&&e.__esModule)return e;var r=Object.create(null);if(n.r(r),Object.defineProperty(r,\"default\",{enumerable:!0,value:e}),2&t&&\"string\"!=typeof e)for(var o in e)n.d(r,o,function(t){return e[t]}.bind(null,o));return r},n.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return n.d(t,\"a\",t),t},n.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},n.p=\"\",n(n.s=14)}([function(e,t,n){\"use strict\";n.d(t,\"a\",(function(){return i})),n.d(t,\"b\",(function(){return u})),n.d(t,\"c\",(function(){return a})),n.d(t,\"d\",(function(){return d}));const r=new Map,o=new Map,i=e=>{const t=r.get(e);if(void 0===t)throw new Error('There is no interval scheduled with the given id \"'.concat(e,'\".'));clearTimeout(t),r.delete(e)},u=e=>{const t=o.get(e);if(void 0===t)throw new Error('There is no timeout scheduled with the given id \"'.concat(e,'\".'));clearTimeout(t),o.delete(e)},f=(e,t)=>{let n,r;if(\"performance\"in self){const o=performance.now();n=o,r=e-Math.max(0,o-t)}else n=Date.now(),r=e;return{expected:n+r,remainingDelay:r}},c=(e,t,n,r)=>{const o=\"performance\"in self?performance.now():Date.now();o>n?postMessage({id:null,method:\"call\",params:{timerId:t}}):e.set(t,setTimeout(c,n-o,e,t,n))},a=(e,t,n)=>{const{expected:o,remainingDelay:i}=f(e,n);r.set(t,setTimeout(c,i,r,t,o))},d=(e,t,n)=>{const{expected:r,remainingDelay:i}=f(e,n);o.set(t,setTimeout(c,i,o,t,r))}},function(e,t,n){\"use strict\";n.r(t);var r=n(2);for(var o in r)\"default\"!==o&&function(e){n.d(t,e,(function(){return r[e]}))}(o);var i=n(3);for(var o in i)\"default\"!==o&&function(e){n.d(t,e,(function(){return i[e]}))}(o);var u=n(4);for(var o in u)\"default\"!==o&&function(e){n.d(t,e,(function(){return u[e]}))}(o);var f=n(5);for(var o in f)\"default\"!==o&&function(e){n.d(t,e,(function(){return f[e]}))}(o);var c=n(6);for(var o in c)\"default\"!==o&&function(e){n.d(t,e,(function(){return c[e]}))}(o);var a=n(7);for(var o in a)\"default\"!==o&&function(e){n.d(t,e,(function(){return a[e]}))}(o);var d=n(8);for(var o in d)\"default\"!==o&&function(e){n.d(t,e,(function(){return d[e]}))}(o);var s=n(9);for(var o in s)\"default\"!==o&&function(e){n.d(t,e,(function(){return s[e]}))}(o)},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t){},function(e,t,n){\"use strict\";n.r(t);var r=n(11);for(var o in r)\"default\"!==o&&function(e){n.d(t,e,(function(){return r[e]}))}(o);var i=n(12);for(var o in i)\"default\"!==o&&function(e){n.d(t,e,(function(){return i[e]}))}(o);var u=n(13);for(var o in u)\"default\"!==o&&function(e){n.d(t,e,(function(){return u[e]}))}(o)},function(e,t){},function(e,t){},function(e,t){},function(e,t,n){\"use strict\";n.r(t);var r=n(0),o=n(1);for(var i in o)\"default\"!==i&&function(e){n.d(t,e,(function(){return o[e]}))}(i);var u=n(10);for(var i in u)\"default\"!==i&&function(e){n.d(t,e,(function(){return u[e]}))}(i);addEventListener(\"message\",({data:e})=>{try{if(\"clear\"===e.method){const{id:t,params:{timerId:n}}=e;Object(r.b)(n),postMessage({error:null,id:t})}else{if(\"set\"!==e.method)throw new Error('The given method \"'.concat(e.method,'\" is not supported'));{const{params:{delay:t,now:n,timerId:o}}=e;Object(r.d)(t,o,n)}}}catch(t){postMessage({error:{message:t.message},id:e.id,result:null})}})}]);`;\r\n const workerUrl = \"data:text/javascript;base64,\" + btoa(workerScript);\r\n const worker = new Worker(workerUrl);\r\n\r\n worker.addEventListener(\"message\", ({ data }: IWorkerEvent): void => {\r\n if (Timeout.isCallNotification(data)) {\r\n const {\r\n params: { timerId }\r\n } = data;\r\n\r\n const idOrFunc = scheduledTimeoutFunctions.get(timerId);\r\n\r\n if (typeof idOrFunc === \"number\") {\r\n const unhandledTimerId = unhandledRequests.get(idOrFunc);\r\n\r\n if (\r\n unhandledTimerId === undefined ||\r\n unhandledTimerId !== timerId\r\n ) {\r\n throw new Error(\"The timer is in an undefined state.\");\r\n }\r\n } else if (typeof idOrFunc !== \"undefined\") {\r\n idOrFunc();\r\n\r\n // A timeout can be safely deleted because it is only called once.\r\n scheduledTimeoutFunctions.delete(timerId);\r\n } else {\r\n throw new Error(\"The timer is in an undefined state.\");\r\n }\r\n } else if (Timeout.isClearResponse(data)) {\r\n const { id } = data;\r\n\r\n const unhandledTimerId = unhandledRequests.get(id);\r\n\r\n if (unhandledTimerId === undefined) {\r\n throw new Error(\"The timer is in an undefined state.\");\r\n }\r\n\r\n unhandledRequests.delete(id);\r\n\r\n scheduledTimeoutFunctions.delete(unhandledTimerId);\r\n } else {\r\n const {\r\n error: { message }\r\n } = data;\r\n\r\n throw new Error(message);\r\n }\r\n });\r\n\r\n const clearTimeout = (timerId: number): void => {\r\n const id = Math.random();\r\n\r\n unhandledRequests.set(id, timerId);\r\n scheduledTimeoutFunctions.set(timerId, id);\r\n\r\n worker.postMessage({\r\n id,\r\n method: \"clear\",\r\n params: { timerId }\r\n } as IClearRequest);\r\n };\r\n\r\n const setTimeout = (func: () => void, delay: number): number => {\r\n const timerId = Math.random();\r\n\r\n scheduledTimeoutFunctions.set(timerId, func);\r\n\r\n worker.postMessage({\r\n id: null,\r\n method: \"set\",\r\n params: {\r\n delay,\r\n now: performance.now(),\r\n timerId\r\n }\r\n } as ISetNotification);\r\n\r\n return timerId;\r\n };\r\n\r\n return {\r\n clearTimeout,\r\n setTimeout\r\n };\r\n }\r\n\r\n private static loadWorkerTimers(): () => IWorkerTimers {\r\n return (): IWorkerTimers => {\r\n if (Timeout.workerTimers !== null) {\r\n return Timeout.workerTimers;\r\n }\r\n\r\n Timeout.workerTimers = Timeout.load() as IWorkerTimers;\r\n\r\n return Timeout.workerTimers;\r\n };\r\n }\r\n\r\n public static timers: () => IWorkerTimers = Timeout.loadWorkerTimers();\r\n\r\n private static isCallNotification(message: TWorkerMessage): message is ICallNotification {\r\n return (message as ICallNotification).method !== undefined && (message as ICallNotification).method === \"call\";\r\n }\r\n\r\n private static isClearResponse(message: TWorkerMessage): message is IClearResponse {\r\n return (message as IClearResponse).error === null && typeof message.id === \"number\";\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { PullAudioOutputStream } from \"./Audio/AudioOutputStream\";\r\n\r\ninterface IActivity {\r\n conversation?: any;\r\n id?: string;\r\n replyToId?: string;\r\n type?: string;\r\n text?: string;\r\n speak?: any;\r\n}\r\n\r\n/**\r\n * Defines contents of received message/events.\r\n * @class ActivityReceivedEventArgs\r\n */\r\nexport class ActivityReceivedEventArgs {\r\n private privActivity: IActivity;\r\n private privAudioStream: PullAudioOutputStream;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {any} activity - The activity..\r\n */\r\n public constructor(activity: any, audioStream?: PullAudioOutputStream) {\r\n this.privActivity = activity as IActivity;\r\n this.privAudioStream = audioStream;\r\n }\r\n\r\n /**\r\n * Gets the received activity\r\n * @member ActivityReceivedEventArgs.prototype.activity\r\n * @function\r\n * @public\r\n * @returns {any} the received activity.\r\n */\r\n public get activity(): any {\r\n return this.privActivity;\r\n }\r\n\r\n public get audioStream(): PullAudioOutputStream {\r\n return this.privAudioStream;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { PathLike } from \"fs\";\r\nimport {\r\n FileAudioSource,\r\n MicAudioSource,\r\n PcmRecorder,\r\n} from \"../../common.browser/Exports\";\r\nimport { ISpeechConfigAudioDevice } from \"../../common.speech/Exports\";\r\nimport {\r\n AudioSourceEvent,\r\n EventSource,\r\n IAudioDestination,\r\n IAudioSource,\r\n IAudioStreamNode\r\n} from \"../../common/Exports\";\r\nimport { Contracts } from \"../Contracts\";\r\nimport {\r\n AudioInputStream,\r\n AudioOutputStream,\r\n AudioStreamFormat,\r\n IPlayer,\r\n PullAudioInputStreamCallback,\r\n PullAudioOutputStream,\r\n PushAudioOutputStream,\r\n PushAudioOutputStreamCallback,\r\n SpeakerAudioDestination\r\n} from \"../Exports\";\r\nimport { AudioFileWriter } from \"./AudioFileWriter\";\r\nimport { PullAudioInputStreamImpl, PushAudioInputStreamImpl } from \"./AudioInputStream\";\r\nimport { PullAudioOutputStreamImpl, PushAudioOutputStreamImpl } from \"./AudioOutputStream\";\r\nimport { AudioStreamFormatImpl } from \"./AudioStreamFormat\";\r\n\r\n/**\r\n * Represents audio input configuration used for specifying what type of input to use (microphone, file, stream).\r\n * @class AudioConfig\r\n * Updated in version 1.11.0\r\n */\r\nexport abstract class AudioConfig {\r\n /**\r\n * Creates an AudioConfig object representing the default microphone on the system.\r\n * @member AudioConfig.fromDefaultMicrophoneInput\r\n * @function\r\n * @public\r\n * @returns {AudioConfig} The audio input configuration being created.\r\n */\r\n public static fromDefaultMicrophoneInput(): AudioConfig {\r\n const pcmRecorder = new PcmRecorder(true);\r\n return new AudioConfigImpl(new MicAudioSource(pcmRecorder));\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing a microphone with the specified device ID.\r\n * @member AudioConfig.fromMicrophoneInput\r\n * @function\r\n * @public\r\n * @param {string | undefined} deviceId - Specifies the device ID of the microphone to be used.\r\n * Default microphone is used the value is omitted.\r\n * @returns {AudioConfig} The audio input configuration being created.\r\n */\r\n public static fromMicrophoneInput(deviceId?: string): AudioConfig {\r\n const pcmRecorder = new PcmRecorder(true);\r\n return new AudioConfigImpl(new MicAudioSource(pcmRecorder, deviceId));\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing the specified file.\r\n * @member AudioConfig.fromWavFileInput\r\n * @function\r\n * @public\r\n * @param {File} fileName - Specifies the audio input file. Currently, only WAV / PCM is supported.\r\n * @returns {AudioConfig} The audio input configuration being created.\r\n */\r\n public static fromWavFileInput(file: File | Buffer, name: string = \"unnamedBuffer.wav\"): AudioConfig {\r\n return new AudioConfigImpl(new FileAudioSource(file, name));\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing the specified stream.\r\n * @member AudioConfig.fromStreamInput\r\n * @function\r\n * @public\r\n * @param {AudioInputStream | PullAudioInputStreamCallback | MediaStream} audioStream - Specifies the custom audio input\r\n * stream. Currently, only WAV / PCM is supported.\r\n * @returns {AudioConfig} The audio input configuration being created.\r\n */\r\n public static fromStreamInput(audioStream: AudioInputStream | PullAudioInputStreamCallback\r\n | MediaStream): AudioConfig {\r\n if (audioStream instanceof PullAudioInputStreamCallback) {\r\n return new AudioConfigImpl(new PullAudioInputStreamImpl(audioStream));\r\n }\r\n\r\n if (audioStream instanceof AudioInputStream) {\r\n return new AudioConfigImpl(audioStream as PushAudioInputStreamImpl);\r\n }\r\n if (typeof MediaStream !== \"undefined\" && audioStream instanceof MediaStream) {\r\n const pcmRecorder = new PcmRecorder(false);\r\n return new AudioConfigImpl(new MicAudioSource(pcmRecorder, null, null, audioStream));\r\n }\r\n\r\n throw new Error(\"Not Supported Type\");\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing the default speaker.\r\n * @member AudioConfig.fromDefaultSpeakerOutput\r\n * @function\r\n * @public\r\n * @returns {AudioConfig} The audio output configuration being created.\r\n * Added in version 1.11.0\r\n */\r\n public static fromDefaultSpeakerOutput(): AudioConfig {\r\n return new AudioOutputConfigImpl(new SpeakerAudioDestination());\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing the custom IPlayer object.\r\n * You can use the IPlayer object to control pause, resume, etc.\r\n * @member AudioConfig.fromSpeakerOutput\r\n * @function\r\n * @public\r\n * @param {IPlayer} player - the IPlayer object for playback.\r\n * @returns {AudioConfig} The audio output configuration being created.\r\n * Added in version 1.12.0\r\n */\r\n public static fromSpeakerOutput(player?: IPlayer): AudioConfig {\r\n if (player === undefined) {\r\n return AudioConfig.fromDefaultSpeakerOutput();\r\n }\r\n if (player instanceof SpeakerAudioDestination) {\r\n return new AudioOutputConfigImpl(player);\r\n }\r\n\r\n throw new Error(\"Not Supported Type\");\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing a specified output audio file\r\n * @member AudioConfig.fromAudioFileOutput\r\n * @function\r\n * @public\r\n * @param {PathLike} filename - the filename of the output audio file\r\n * @returns {AudioConfig} The audio output configuration being created.\r\n * Added in version 1.11.0\r\n */\r\n public static fromAudioFileOutput(filename: PathLike): AudioConfig {\r\n return new AudioOutputConfigImpl(new AudioFileWriter(filename));\r\n }\r\n\r\n /**\r\n * Creates an AudioConfig object representing a specified audio output stream\r\n * @member AudioConfig.fromStreamOutput\r\n * @function\r\n * @public\r\n * @param {AudioOutputStream | PushAudioOutputStreamCallback} audioStream - Specifies the custom audio output\r\n * stream.\r\n * @returns {AudioConfig} The audio output configuration being created.\r\n * Added in version 1.11.0\r\n */\r\n public static fromStreamOutput(audioStream: AudioOutputStream | PushAudioOutputStreamCallback): AudioConfig {\r\n if (audioStream instanceof PushAudioOutputStreamCallback) {\r\n return new AudioOutputConfigImpl(new PushAudioOutputStreamImpl(audioStream));\r\n }\r\n\r\n if (audioStream instanceof PushAudioOutputStream) {\r\n return new AudioOutputConfigImpl(audioStream as PushAudioOutputStreamImpl);\r\n }\r\n\r\n if (audioStream instanceof PullAudioOutputStream) {\r\n return new AudioOutputConfigImpl(audioStream as PullAudioOutputStreamImpl);\r\n }\r\n\r\n throw new Error(\"Not Supported Type\");\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member AudioConfig.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n\r\n /**\r\n * Sets an arbitrary property.\r\n * @member SpeechConfig.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property to set.\r\n * @param {string} value - The new value of the property.\r\n */\r\n public abstract setProperty(name: string, value: string): void;\r\n\r\n /**\r\n * Returns the current value of an arbitrary property.\r\n * @member SpeechConfig.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property to query.\r\n * @param {string} def - The value to return in case the property is not known.\r\n * @returns {string} The current value, or provided default, of the given property.\r\n */\r\n public abstract getProperty(name: string, def?: string): string;\r\n\r\n}\r\n\r\n/**\r\n * Represents audio input stream used for custom audio input configurations.\r\n * @private\r\n * @class AudioConfigImpl\r\n */\r\nexport class AudioConfigImpl extends AudioConfig implements IAudioSource {\r\n private privSource: IAudioSource;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {IAudioSource} source - An audio source.\r\n */\r\n public constructor(source: IAudioSource) {\r\n super();\r\n this.privSource = source;\r\n }\r\n\r\n /**\r\n * Format information for the audio\r\n */\r\n public get format(): Promise {\r\n return this.privSource.format;\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, err?: (error: string) => void): void {\r\n this.privSource.turnOff().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.id\r\n * @function\r\n * @public\r\n */\r\n public id(): string {\r\n return this.privSource.id();\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.turnOn\r\n * @function\r\n * @public\r\n * @returns {Promise} A promise.\r\n */\r\n public turnOn(): Promise {\r\n return this.privSource.turnOn();\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.attach\r\n * @function\r\n * @public\r\n * @param {string} audioNodeId - The audio node id.\r\n * @returns {Promise} A promise.\r\n */\r\n public attach(audioNodeId: string): Promise {\r\n return this.privSource.attach(audioNodeId);\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.detach\r\n * @function\r\n * @public\r\n * @param {string} audioNodeId - The audio node id.\r\n */\r\n public detach(audioNodeId: string): void {\r\n return this.privSource.detach(audioNodeId);\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.turnOff\r\n * @function\r\n * @public\r\n * @returns {Promise} A promise.\r\n */\r\n public turnOff(): Promise {\r\n return this.privSource.turnOff();\r\n }\r\n\r\n /**\r\n * @member AudioConfigImpl.prototype.events\r\n * @function\r\n * @public\r\n * @returns {EventSource} An event source for audio events.\r\n */\r\n public get events(): EventSource {\r\n return this.privSource.events;\r\n }\r\n\r\n public setProperty(name: string, value: string): void {\r\n Contracts.throwIfNull(value, \"value\");\r\n\r\n if (undefined !== this.privSource.setProperty) {\r\n this.privSource.setProperty(name, value);\r\n } else {\r\n throw new Error(\"This AudioConfig instance does not support setting properties.\");\r\n }\r\n\r\n }\r\n\r\n public getProperty(name: string, def?: string): string {\r\n if (undefined !== this.privSource.getProperty) {\r\n return this.privSource.getProperty(name, def);\r\n } else {\r\n throw new Error(\"This AudioConfig instance does not support getting properties.\");\r\n }\r\n\r\n return def;\r\n }\r\n\r\n public get deviceInfo(): Promise {\r\n return this.privSource.deviceInfo;\r\n }\r\n}\r\n\r\nexport class AudioOutputConfigImpl extends AudioConfig implements IAudioDestination {\r\n private privDestination: IAudioDestination;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {IAudioDestination} destination - An audio destination.\r\n */\r\n public constructor(destination: IAudioDestination) {\r\n super();\r\n this.privDestination = destination;\r\n }\r\n\r\n public set format(format: AudioStreamFormat) {\r\n this.privDestination.format = format;\r\n }\r\n\r\n public write(buffer: ArrayBuffer): void {\r\n this.privDestination.write(buffer);\r\n }\r\n\r\n public close(): void {\r\n this.privDestination.close();\r\n }\r\n\r\n public id(): string {\r\n return this.privDestination.id();\r\n }\r\n\r\n public setProperty(): void {\r\n throw new Error(\"This AudioConfig instance does not support setting properties.\");\r\n }\r\n\r\n public getProperty(): string {\r\n throw new Error(\"This AudioConfig instance does not support getting properties.\");\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport * as fs from \"fs\";\r\nimport { IAudioDestination } from \"../../common/Exports\";\r\nimport { Contracts } from \"../Contracts\";\r\nimport { AudioStreamFormat } from \"../Exports\";\r\nimport { AudioOutputFormatImpl } from \"./AudioOutputFormat\";\r\n\r\nexport class AudioFileWriter implements IAudioDestination {\r\n private privAudioFormat: AudioOutputFormatImpl;\r\n private privFd: number;\r\n private privId: string;\r\n private privWriteStream: fs.WriteStream;\r\n\r\n public constructor(filename: fs.PathLike) {\r\n Contracts.throwIfNullOrUndefined(fs.openSync, \"\\nFile System access not available, please use Push or PullAudioOutputStream\");\r\n this.privFd = fs.openSync(filename, \"w\");\r\n }\r\n\r\n public set format(format: AudioStreamFormat) {\r\n Contracts.throwIfNotUndefined(this.privAudioFormat, \"format is already set\");\r\n this.privAudioFormat = format as AudioOutputFormatImpl;\r\n let headerOffset: number = 0;\r\n if (this.privAudioFormat.hasHeader) {\r\n headerOffset = this.privAudioFormat.header.byteLength;\r\n }\r\n if (this.privFd !== undefined) {\r\n this.privWriteStream = fs.createWriteStream(\"\", {fd: this.privFd, start: headerOffset, autoClose: false});\r\n }\r\n }\r\n\r\n public write(buffer: ArrayBuffer): void {\r\n Contracts.throwIfNullOrUndefined(this.privAudioFormat, \"must set format before writing.\");\r\n if (this.privWriteStream !== undefined) {\r\n this.privWriteStream.write(new Uint8Array(buffer.slice(0)));\r\n }\r\n }\r\n\r\n public close(): void {\r\n if (this.privFd !== undefined) {\r\n this.privWriteStream.on(\"finish\", (): void => {\r\n if (this.privAudioFormat.hasHeader) {\r\n this.privAudioFormat.updateHeader(this.privWriteStream.bytesWritten);\r\n fs.writeSync(this.privFd,\r\n new Int8Array(this.privAudioFormat.header),\r\n 0,\r\n this.privAudioFormat.header.byteLength,\r\n 0);\r\n }\r\n fs.closeSync(this.privFd);\r\n this.privFd = undefined;\r\n });\r\n this.privWriteStream.end();\r\n }\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n connectivity,\r\n ISpeechConfigAudioDevice,\r\n type,\r\n} from \"../../common.speech/Exports\";\r\nimport {\r\n AudioSourceEvent,\r\n AudioSourceInitializingEvent,\r\n AudioSourceReadyEvent,\r\n AudioStreamNodeAttachedEvent,\r\n AudioStreamNodeAttachingEvent,\r\n AudioStreamNodeDetachedEvent,\r\n ChunkedArrayBufferStream,\r\n Events,\r\n EventSource,\r\n IAudioSource,\r\n IAudioStreamNode,\r\n IStreamChunk,\r\n Stream,\r\n} from \"../../common/Exports\";\r\nimport { createNoDashGuid } from \"../../common/Guid\";\r\nimport { AudioStreamFormat, PullAudioInputStreamCallback } from \"../Exports\";\r\nimport { AudioStreamFormatImpl } from \"./AudioStreamFormat\";\r\n\r\n/**\r\n * Represents audio input stream used for custom audio input configurations.\r\n * @class AudioInputStream\r\n */\r\nexport abstract class AudioInputStream {\r\n\r\n /**\r\n * Creates and initializes an instance.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Creates a memory backed PushAudioInputStream with the specified audio format.\r\n * @member AudioInputStream.createPushStream\r\n * @function\r\n * @public\r\n * @param {AudioStreamFormat} format - The audio data format in which audio will be\r\n * written to the push audio stream's write() method (Required if format is not 16 kHz 16bit mono PCM).\r\n * @returns {PushAudioInputStream} The audio input stream being created.\r\n */\r\n public static createPushStream(format?: AudioStreamFormat): PushAudioInputStream {\r\n return PushAudioInputStream.create(format);\r\n }\r\n\r\n /**\r\n * Creates a PullAudioInputStream that delegates to the specified callback interface for read()\r\n * and close() methods.\r\n * @member AudioInputStream.createPullStream\r\n * @function\r\n * @public\r\n * @param {PullAudioInputStreamCallback} callback - The custom audio input object, derived from\r\n * PullAudioInputStreamCallback\r\n * @param {AudioStreamFormat} format - The audio data format in which audio will be returned from\r\n * the callback's read() method (Required if format is not 16 kHz 16bit mono PCM).\r\n * @returns {PullAudioInputStream} The audio input stream being created.\r\n */\r\n public static createPullStream(callback: PullAudioInputStreamCallback, format?: AudioStreamFormat): PullAudioInputStream {\r\n return PullAudioInputStream.create(callback, format);\r\n // throw new Error(\"Oops\");\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member AudioInputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * Represents memory backed push audio input stream used for custom audio input configurations.\r\n * @class PushAudioInputStream\r\n */\r\nexport abstract class PushAudioInputStream extends AudioInputStream {\r\n\r\n /**\r\n * Creates a memory backed PushAudioInputStream with the specified audio format.\r\n * @member PushAudioInputStream.create\r\n * @function\r\n * @public\r\n * @param {AudioStreamFormat} format - The audio data format in which audio will be written to the\r\n * push audio stream's write() method (Required if format is not 16 kHz 16bit mono PCM).\r\n * @returns {PushAudioInputStream} The push audio input stream being created.\r\n */\r\n public static create(format?: AudioStreamFormat): PushAudioInputStream {\r\n return new PushAudioInputStreamImpl(format);\r\n }\r\n\r\n /**\r\n * Writes the audio data specified by making an internal copy of the data.\r\n * @member PushAudioInputStream.prototype.write\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - The audio buffer of which this function will make a copy.\r\n */\r\n public abstract write(dataBuffer: ArrayBuffer): void;\r\n\r\n /**\r\n * Closes the stream.\r\n * @member PushAudioInputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * Represents memory backed push audio input stream used for custom audio input configurations.\r\n * @private\r\n * @class PushAudioInputStreamImpl\r\n */\r\nexport class PushAudioInputStreamImpl extends PushAudioInputStream implements IAudioSource {\r\n\r\n private privFormat: AudioStreamFormatImpl;\r\n private privId: string;\r\n private privEvents: EventSource;\r\n private privStream: Stream;\r\n\r\n /**\r\n * Creates and initalizes an instance with the given values.\r\n * @constructor\r\n * @param {AudioStreamFormat} format - The audio stream format.\r\n */\r\n public constructor(format?: AudioStreamFormat) {\r\n super();\r\n if (format === undefined) {\r\n this.privFormat = AudioStreamFormatImpl.getDefaultInputFormat();\r\n } else {\r\n this.privFormat = format as AudioStreamFormatImpl;\r\n }\r\n this.privEvents = new EventSource();\r\n this.privId = createNoDashGuid();\r\n this.privStream = new ChunkedArrayBufferStream(this.privFormat.avgBytesPerSec / 10);\r\n }\r\n\r\n /**\r\n * Format information for the audio\r\n */\r\n public get format(): Promise {\r\n return Promise.resolve(this.privFormat);\r\n }\r\n\r\n /**\r\n * Writes the audio data specified by making an internal copy of the data.\r\n * @member PushAudioInputStreamImpl.prototype.write\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - The audio buffer of which this function will make a copy.\r\n */\r\n public write(dataBuffer: ArrayBuffer): void {\r\n this.privStream.writeStreamChunk({\r\n buffer: dataBuffer,\r\n isEnd: false,\r\n timeReceived: Date.now()\r\n });\r\n }\r\n\r\n /**\r\n * Closes the stream.\r\n * @member PushAudioInputStreamImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n this.privStream.close();\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n public turnOn(): Promise {\r\n this.onEvent(new AudioSourceInitializingEvent(this.privId)); // no stream id\r\n this.onEvent(new AudioSourceReadyEvent(this.privId));\r\n return;\r\n }\r\n\r\n public async attach(audioNodeId: string): Promise {\r\n this.onEvent(new AudioStreamNodeAttachingEvent(this.privId, audioNodeId));\r\n\r\n await this.turnOn();\r\n const stream = this.privStream;\r\n this.onEvent(new AudioStreamNodeAttachedEvent(this.privId, audioNodeId));\r\n return {\r\n detach: async (): Promise => {\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n return this.turnOff();\r\n },\r\n id: (): string => audioNodeId,\r\n read: (): Promise> => stream.read(),\r\n };\r\n }\r\n\r\n public detach(audioNodeId: string): void {\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n }\r\n\r\n public turnOff(): Promise {\r\n return;\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privEvents;\r\n }\r\n\r\n public get deviceInfo(): Promise {\r\n return Promise.resolve({\r\n bitspersample: this.privFormat.bitsPerSample,\r\n channelcount: this.privFormat.channels,\r\n connectivity: connectivity.Unknown,\r\n manufacturer: \"Speech SDK\",\r\n model: \"PushStream\",\r\n samplerate: this.privFormat.samplesPerSec,\r\n type: type.Stream,\r\n });\r\n }\r\n\r\n private onEvent(event: AudioSourceEvent): void {\r\n this.privEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n\r\n private toBuffer(arrayBuffer: ArrayBuffer): Buffer {\r\n const buf: Buffer = Buffer.alloc(arrayBuffer.byteLength);\r\n const view: Uint8Array = new Uint8Array(arrayBuffer);\r\n for (let i = 0; i < buf.length; ++i) {\r\n buf[i] = view[i];\r\n }\r\n return buf;\r\n }\r\n}\r\n\r\n/*\r\n * Represents audio input stream used for custom audio input configurations.\r\n * @class PullAudioInputStream\r\n */\r\nexport abstract class PullAudioInputStream extends AudioInputStream {\r\n /**\r\n * Creates and initializes and instance.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n super();\r\n}\r\n\r\n /**\r\n * Creates a PullAudioInputStream that delegates to the specified callback interface for\r\n * read() and close() methods, using the default format (16 kHz 16bit mono PCM).\r\n * @member PullAudioInputStream.create\r\n * @function\r\n * @public\r\n * @param {PullAudioInputStreamCallback} callback - The custom audio input object,\r\n * derived from PullAudioInputStreamCustomCallback\r\n * @param {AudioStreamFormat} format - The audio data format in which audio will be\r\n * returned from the callback's read() method (Required if format is not 16 kHz 16bit mono PCM).\r\n * @returns {PullAudioInputStream} The push audio input stream being created.\r\n */\r\n public static create(callback: PullAudioInputStreamCallback, format?: AudioStreamFormat): PullAudioInputStream {\r\n return new PullAudioInputStreamImpl(callback, format as AudioStreamFormatImpl);\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member PullAudioInputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n\r\n}\r\n\r\n/**\r\n * Represents audio input stream used for custom audio input configurations.\r\n * @private\r\n * @class PullAudioInputStreamImpl\r\n */\r\nexport class PullAudioInputStreamImpl extends PullAudioInputStream implements IAudioSource {\r\n\r\n private privCallback: PullAudioInputStreamCallback;\r\n private privFormat: AudioStreamFormatImpl;\r\n private privId: string;\r\n private privEvents: EventSource;\r\n private privIsClosed: boolean;\r\n private privBufferSize: number;\r\n\r\n /**\r\n * Creates a PullAudioInputStream that delegates to the specified callback interface for\r\n * read() and close() methods, using the default format (16 kHz 16bit mono PCM).\r\n * @constructor\r\n * @param {PullAudioInputStreamCallback} callback - The custom audio input object,\r\n * derived from PullAudioInputStreamCustomCallback\r\n * @param {AudioStreamFormat} format - The audio data format in which audio will be\r\n * returned from the callback's read() method (Required if format is not 16 kHz 16bit mono PCM).\r\n */\r\n public constructor(callback: PullAudioInputStreamCallback, format?: AudioStreamFormatImpl) {\r\n super();\r\n if (undefined === format) {\r\n this.privFormat = AudioStreamFormat.getDefaultInputFormat() as AudioStreamFormatImpl;\r\n } else {\r\n this.privFormat = format;\r\n }\r\n this.privEvents = new EventSource();\r\n this.privId = createNoDashGuid();\r\n this.privCallback = callback;\r\n this.privIsClosed = false;\r\n this.privBufferSize = this.privFormat.avgBytesPerSec / 10;\r\n }\r\n\r\n /**\r\n * Format information for the audio\r\n */\r\n public get format(): Promise {\r\n return Promise.resolve(this.privFormat);\r\n }\r\n\r\n /**\r\n * Closes the stream.\r\n * @member PullAudioInputStreamImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n this.privIsClosed = true;\r\n this.privCallback.close();\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n public turnOn(): Promise {\r\n this.onEvent(new AudioSourceInitializingEvent(this.privId)); // no stream id\r\n this.onEvent(new AudioSourceReadyEvent(this.privId));\r\n return;\r\n }\r\n\r\n public async attach(audioNodeId: string): Promise {\r\n this.onEvent(new AudioStreamNodeAttachingEvent(this.privId, audioNodeId));\r\n\r\n await this.turnOn();\r\n this.onEvent(new AudioStreamNodeAttachedEvent(this.privId, audioNodeId));\r\n return {\r\n detach: (): Promise => {\r\n this.privCallback.close();\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n return this.turnOff();\r\n },\r\n id: (): string => audioNodeId,\r\n read: (): Promise> => {\r\n let totalBytes: number = 0;\r\n let transmitBuff: ArrayBuffer;\r\n // Until we have the minimum number of bytes to send in a transmission, keep asking for more.\r\n while (totalBytes < this.privBufferSize) {\r\n // Sizing the read buffer to the delta between the perfect size and what's left means we won't ever get too much\r\n // data back.\r\n const readBuff: ArrayBuffer = new ArrayBuffer(this.privBufferSize - totalBytes);\r\n const pulledBytes: number = this.privCallback.read(readBuff);\r\n // If there is no return buffer yet defined, set the return buffer to the that was just populated.\r\n // This was, if we have enough data there's no copy penalty, but if we don't we have a buffer that's the\r\n // preferred size allocated.\r\n if (undefined === transmitBuff) {\r\n transmitBuff = readBuff;\r\n } else {\r\n // Not the first bite at the apple, so fill the return buffer with the data we got back.\r\n const intView: Int8Array = new Int8Array(transmitBuff);\r\n intView.set(new Int8Array(readBuff), totalBytes);\r\n }\r\n // If there are no bytes to read, just break out and be done.\r\n if (0 === pulledBytes) {\r\n break;\r\n }\r\n totalBytes += pulledBytes;\r\n }\r\n return Promise.resolve>({\r\n buffer: transmitBuff.slice(0, totalBytes),\r\n isEnd: this.privIsClosed || totalBytes === 0,\r\n timeReceived: Date.now(),\r\n });\r\n },\r\n };\r\n }\r\n\r\n public detach(audioNodeId: string): void {\r\n this.onEvent(new AudioStreamNodeDetachedEvent(this.privId, audioNodeId));\r\n }\r\n\r\n public turnOff(): Promise {\r\n return;\r\n }\r\n\r\n public get events(): EventSource {\r\n return this.privEvents;\r\n }\r\n\r\n public get deviceInfo(): Promise {\r\n return Promise.resolve({\r\n bitspersample: this.privFormat.bitsPerSample,\r\n channelcount: this.privFormat.channels,\r\n connectivity: connectivity.Unknown,\r\n manufacturer: \"Speech SDK\",\r\n model: \"PullStream\",\r\n samplerate: this.privFormat.samplesPerSec,\r\n type: type.Stream,\r\n });\r\n }\r\n\r\n private onEvent(event: AudioSourceEvent): void {\r\n this.privEvents.onEvent(event);\r\n Events.instance.onEvent(event);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { INumberDictionary } from \"../../common/Exports\";\r\nimport { SpeechSynthesisOutputFormat } from \"../SpeechSynthesisOutputFormat\";\r\nimport { AudioFormatTag, AudioStreamFormatImpl } from \"./AudioStreamFormat\";\r\n\r\n/**\r\n * @private\r\n * @class AudioOutputFormatImpl\r\n * Updated in version 1.17.0\r\n */\r\n// eslint-disable-next-line max-classes-per-file\r\nexport class AudioOutputFormatImpl extends AudioStreamFormatImpl {\r\n public static SpeechSynthesisOutputFormatToString: INumberDictionary = {\r\n [SpeechSynthesisOutputFormat.Raw8Khz8BitMonoMULaw]: \"raw-8khz-8bit-mono-mulaw\",\r\n [SpeechSynthesisOutputFormat.Riff16Khz16KbpsMonoSiren]: \"riff-16khz-16kbps-mono-siren\",\r\n [SpeechSynthesisOutputFormat.Audio16Khz16KbpsMonoSiren]: \"audio-16khz-16kbps-mono-siren\",\r\n [SpeechSynthesisOutputFormat.Audio16Khz32KBitRateMonoMp3]: \"audio-16khz-32kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio16Khz128KBitRateMonoMp3]: \"audio-16khz-128kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio16Khz64KBitRateMonoMp3]: \"audio-16khz-64kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio24Khz48KBitRateMonoMp3]: \"audio-24khz-48kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio24Khz96KBitRateMonoMp3]: \"audio-24khz-96kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio24Khz160KBitRateMonoMp3]: \"audio-24khz-160kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Raw16Khz16BitMonoTrueSilk]: \"raw-16khz-16bit-mono-truesilk\",\r\n [SpeechSynthesisOutputFormat.Riff16Khz16BitMonoPcm]: \"riff-16khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff8Khz16BitMonoPcm]: \"riff-8khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm]: \"riff-24khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff8Khz8BitMonoMULaw]: \"riff-8khz-8bit-mono-mulaw\",\r\n [SpeechSynthesisOutputFormat.Raw16Khz16BitMonoPcm]: \"raw-16khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Raw24Khz16BitMonoPcm]: \"raw-24khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Raw8Khz16BitMonoPcm]: \"raw-8khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Ogg16Khz16BitMonoOpus]: \"ogg-16khz-16bit-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Ogg24Khz16BitMonoOpus]: \"ogg-24khz-16bit-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Raw48Khz16BitMonoPcm]: \"raw-48khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff48Khz16BitMonoPcm]: \"riff-48khz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Audio48Khz96KBitRateMonoMp3]: \"audio-48khz-96kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Audio48Khz192KBitRateMonoMp3]: \"audio-48khz-192kbitrate-mono-mp3\",\r\n [SpeechSynthesisOutputFormat.Ogg48Khz16BitMonoOpus]: \"ogg-48khz-16bit-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Webm16Khz16BitMonoOpus]: \"webm-16khz-16bit-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Webm24Khz16BitMonoOpus]: \"webm-24khz-16bit-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Webm24Khz16Bit24KbpsMonoOpus]: \"webm-24khz-16bit-24kbps-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Raw24Khz16BitMonoTrueSilk]: \"raw-24khz-16bit-mono-truesilk\",\r\n [SpeechSynthesisOutputFormat.Raw8Khz8BitMonoALaw]: \"raw-8khz-8bit-mono-alaw\",\r\n [SpeechSynthesisOutputFormat.Riff8Khz8BitMonoALaw]: \"riff-8khz-8bit-mono-alaw\",\r\n [SpeechSynthesisOutputFormat.Audio16Khz16Bit32KbpsMonoOpus]: \"audio-16khz-16bit-32kbps-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Audio24Khz16Bit48KbpsMonoOpus]: \"audio-24khz-16bit-48kbps-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Audio24Khz16Bit24KbpsMonoOpus]: \"audio-24khz-16bit-24kbps-mono-opus\",\r\n [SpeechSynthesisOutputFormat.Raw22050Hz16BitMonoPcm]: \"raw-22050hz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff22050Hz16BitMonoPcm]: \"riff-22050hz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Raw44100Hz16BitMonoPcm]: \"raw-44100hz-16bit-mono-pcm\",\r\n [SpeechSynthesisOutputFormat.Riff44100Hz16BitMonoPcm]: \"riff-44100hz-16bit-mono-pcm\",\r\n };\r\n private priAudioFormatString: string;\r\n /**\r\n * audio format string for synthesis request, which may differ from priAudioFormatString.\r\n * e.g. for riff format, we will request raw format and add a header in SDK side.\r\n */\r\n private readonly priRequestAudioFormatString: string;\r\n private readonly priHasHeader: boolean;\r\n\r\n /**\r\n * Creates an instance with the given values.\r\n * @constructor\r\n * @param formatTag\r\n * @param {number} channels - Number of channels.\r\n * @param {number} samplesPerSec - Samples per second.\r\n * @param {number} avgBytesPerSec - Average bytes per second.\r\n * @param {number} blockAlign - Block alignment.\r\n * @param {number} bitsPerSample - Bits per sample.\r\n * @param {string} audioFormatString - Audio format string\r\n * @param {string} requestAudioFormatString - Audio format string sent to service.\r\n * @param {boolean} hasHeader - If the format has header or not.\r\n */\r\n public constructor(formatTag: AudioFormatTag,\r\n channels: number,\r\n samplesPerSec: number,\r\n avgBytesPerSec: number,\r\n blockAlign: number,\r\n bitsPerSample: number,\r\n audioFormatString: string,\r\n requestAudioFormatString: string,\r\n hasHeader: boolean) {\r\n super(samplesPerSec, bitsPerSample, channels, formatTag);\r\n this.formatTag = formatTag;\r\n this.avgBytesPerSec = avgBytesPerSec;\r\n this.blockAlign = blockAlign;\r\n this.priAudioFormatString = audioFormatString;\r\n this.priRequestAudioFormatString = requestAudioFormatString;\r\n this.priHasHeader = hasHeader;\r\n }\r\n\r\n public static fromSpeechSynthesisOutputFormat(speechSynthesisOutputFormat?: SpeechSynthesisOutputFormat): AudioOutputFormatImpl {\r\n if (speechSynthesisOutputFormat === undefined) {\r\n return AudioOutputFormatImpl.getDefaultOutputFormat();\r\n }\r\n return AudioOutputFormatImpl.fromSpeechSynthesisOutputFormatString(\r\n AudioOutputFormatImpl.SpeechSynthesisOutputFormatToString[speechSynthesisOutputFormat]);\r\n }\r\n\r\n public static fromSpeechSynthesisOutputFormatString(speechSynthesisOutputFormatString: string): AudioOutputFormatImpl {\r\n switch (speechSynthesisOutputFormatString) {\r\n case \"raw-8khz-8bit-mono-mulaw\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MuLaw,\r\n 1,\r\n 8000,\r\n 8000,\r\n 1,\r\n 8,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"riff-16khz-16kbps-mono-siren\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.Siren,\r\n 1,\r\n 16000,\r\n 2000,\r\n 40,\r\n 0,\r\n speechSynthesisOutputFormatString,\r\n \"audio-16khz-16kbps-mono-siren\",\r\n true);\r\n case \"audio-16khz-16kbps-mono-siren\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.Siren,\r\n 1,\r\n 16000,\r\n 2000,\r\n 40,\r\n 0,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-16khz-32kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 16000,\r\n 32 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-16khz-128kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 16000,\r\n 128 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-16khz-64kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 16000,\r\n 64 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-48kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 24000,\r\n 48 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-96kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 24000,\r\n 96 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-160kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 24000,\r\n 160 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"raw-16khz-16bit-mono-truesilk\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.SILKSkype,\r\n 1,\r\n 16000,\r\n 32000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n\r\n case \"riff-8khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 8000,\r\n 16000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-8khz-16bit-mono-pcm\",\r\n true);\r\n case \"riff-24khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 24000,\r\n 48000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-24khz-16bit-mono-pcm\",\r\n true);\r\n case \"riff-8khz-8bit-mono-mulaw\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MuLaw,\r\n 1,\r\n 8000,\r\n 8000,\r\n 1,\r\n 8,\r\n speechSynthesisOutputFormatString,\r\n \"raw-8khz-8bit-mono-mulaw\",\r\n true);\r\n case \"raw-16khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 16000,\r\n 32000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-16khz-16bit-mono-pcm\",\r\n false);\r\n case \"raw-24khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 24000,\r\n 48000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-24khz-16bit-mono-pcm\",\r\n false);\r\n case \"raw-8khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 8000,\r\n 16000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-8khz-16bit-mono-pcm\",\r\n false);\r\n case \"ogg-16khz-16bit-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OGG_OPUS,\r\n 1,\r\n 16000,\r\n 8192,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"ogg-24khz-16bit-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OGG_OPUS,\r\n 1,\r\n 24000,\r\n 8192,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"raw-48khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 48000,\r\n 96000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-48khz-16bit-mono-pcm\",\r\n false);\r\n case \"riff-48khz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 48000,\r\n 96000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-48khz-16bit-mono-pcm\",\r\n true);\r\n case \"audio-48khz-96kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 48000,\r\n 96 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-48khz-192kbitrate-mono-mp3\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.MP3,\r\n 1,\r\n 48000,\r\n 192 << 7,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"ogg-48khz-16bit-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OGG_OPUS,\r\n 1,\r\n 48000,\r\n 12000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"webm-16khz-16bit-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.WEBM_OPUS,\r\n 1,\r\n 16000,\r\n 4000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"webm-24khz-16bit-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.WEBM_OPUS,\r\n 1,\r\n 24000,\r\n 6000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"webm-24khz-16bit-24kbps-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.WEBM_OPUS,\r\n 1,\r\n 24000,\r\n 3000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-16khz-16bit-32kbps-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OPUS,\r\n 1,\r\n 16000,\r\n 4000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-16bit-48kbps-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OPUS,\r\n 1,\r\n 24000,\r\n 6000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-16bit-24kbps-mono-opus\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.OPUS,\r\n 1,\r\n 24000,\r\n 3000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-24khz-16bit-mono-flac\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.FLAC,\r\n 1,\r\n 24000,\r\n 24000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"audio-48khz-16bit-mono-flac\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.FLAC,\r\n 1,\r\n 48000,\r\n 30000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"raw-24khz-16bit-mono-truesilk\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.SILKSkype,\r\n 1,\r\n 24000,\r\n 48000,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"raw-8khz-8bit-mono-alaw\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.ALaw,\r\n 1,\r\n 8000,\r\n 8000,\r\n 1,\r\n 8,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"riff-8khz-8bit-mono-alaw\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.ALaw,\r\n 1,\r\n 8000,\r\n 8000,\r\n 1,\r\n 8,\r\n speechSynthesisOutputFormatString,\r\n \"raw-8khz-8bit-mono-alaw\",\r\n true);\r\n case \"raw-22050hz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 22050,\r\n 44100,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"riff-22050hz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 22050,\r\n 44100,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-22050hz-16bit-mono-pcm\",\r\n true);\r\n case \"raw-44100hz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 44100,\r\n 88200,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n speechSynthesisOutputFormatString,\r\n false);\r\n case \"riff-44100hz-16bit-mono-pcm\":\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 44100,\r\n 88200,\r\n 2,\r\n 16,\r\n speechSynthesisOutputFormatString,\r\n \"raw-44100hz-16bit-mono-pcm\",\r\n true);\r\n case \"riff-16khz-16bit-mono-pcm\":\r\n default:\r\n return new AudioOutputFormatImpl(\r\n AudioFormatTag.PCM,\r\n 1,\r\n 16000,\r\n 32000,\r\n 2,\r\n 16,\r\n \"riff-16khz-16bit-mono-pcm\",\r\n \"raw-16khz-16bit-mono-pcm\",\r\n true);\r\n }\r\n }\r\n\r\n public static getDefaultOutputFormat(): AudioOutputFormatImpl {\r\n return AudioOutputFormatImpl.fromSpeechSynthesisOutputFormatString(\r\n (typeof window !== \"undefined\") ? \"audio-24khz-48kbitrate-mono-mp3\" : \"riff-16khz-16bit-mono-pcm\");\r\n }\r\n\r\n /**\r\n * The format tag of the audio\r\n * @AudioFormatTag AudioOutputFormatImpl.prototype.formatTag\r\n * @function\r\n * @public\r\n */\r\n public formatTag: AudioFormatTag;\r\n\r\n /**\r\n * Specifies if this audio output format has a header\r\n * @boolean AudioOutputFormatImpl.prototype.hasHeader\r\n * @function\r\n * @public\r\n */\r\n public get hasHeader(): boolean {\r\n return this.priHasHeader;\r\n }\r\n\r\n /**\r\n * Specifies the header of this format\r\n * @ArrayBuffer AudioOutputFormatImpl.prototype.header\r\n * @function\r\n * @public\r\n */\r\n public get header(): ArrayBuffer {\r\n if (this.hasHeader) {\r\n return this.privHeader;\r\n }\r\n return undefined;\r\n }\r\n\r\n /**\r\n * Updates the header based on the audio length\r\n * @member AudioOutputFormatImpl.updateHeader\r\n * @function\r\n * @public\r\n * @param {number} audioLength - the audio length\r\n */\r\n public updateHeader(audioLength: number): void {\r\n if (this.priHasHeader) {\r\n const view = new DataView(this.privHeader);\r\n view.setUint32(4, audioLength + this.privHeader.byteLength - 8, true);\r\n view.setUint32(40, audioLength, true);\r\n }\r\n }\r\n\r\n /**\r\n * Specifies the audio format string to be sent to the service\r\n * @string AudioOutputFormatImpl.prototype.requestAudioFormatString\r\n * @function\r\n * @public\r\n */\r\n public get requestAudioFormatString(): string {\r\n return this.priRequestAudioFormatString;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n createNoDashGuid,\r\n IAudioDestination,\r\n IStreamChunk,\r\n Stream,\r\n} from \"../../common/Exports\";\r\nimport { Contracts } from \"../Contracts\";\r\nimport {\r\n AudioStreamFormat,\r\n PushAudioOutputStreamCallback\r\n} from \"../Exports\";\r\nimport { AudioOutputFormatImpl } from \"./AudioOutputFormat\";\r\n\r\n/**\r\n * Represents audio output stream used for custom audio output configurations.\r\n * @class AudioOutputStream\r\n */\r\nexport abstract class AudioOutputStream {\r\n\r\n /**\r\n * Creates and initializes an instance.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Sets the format of the AudioOutputStream\r\n * Note: the format is set by the synthesizer before writing. Do not set it before passing it to AudioConfig\r\n * @member AudioOutputStream.prototype.format\r\n */\r\n public abstract set format(format: AudioStreamFormat);\r\n\r\n /**\r\n * Creates a memory backed PullAudioOutputStream with the specified audio format.\r\n * @member AudioOutputStream.createPullStream\r\n * @function\r\n * @public\r\n * @returns {PullAudioOutputStream} The audio output stream being created.\r\n */\r\n public static createPullStream(): PullAudioOutputStream {\r\n return PullAudioOutputStream.create();\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member AudioOutputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * Represents memory backed push audio output stream used for custom audio output configurations.\r\n * @class PullAudioOutputStream\r\n */\r\nexport abstract class PullAudioOutputStream extends AudioOutputStream {\r\n\r\n /**\r\n * Creates a memory backed PullAudioOutputStream with the specified audio format.\r\n * @member PullAudioOutputStream.create\r\n * @function\r\n * @public\r\n * @returns {PullAudioOutputStream} The push audio output stream being created.\r\n */\r\n public static create(): PullAudioOutputStream {\r\n return new PullAudioOutputStreamImpl();\r\n }\r\n\r\n /**\r\n * Reads audio data from the internal buffer.\r\n * @member PullAudioOutputStream.prototype.read\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - An ArrayBuffer to store the read data.\r\n * @returns {Promise} Audio buffer length has been read.\r\n */\r\n public abstract read(dataBuffer: ArrayBuffer): Promise;\r\n\r\n /**\r\n * Closes the stream.\r\n * @member PullAudioOutputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * Represents memory backed push audio output stream used for custom audio output configurations.\r\n * @private\r\n * @class PullAudioOutputStreamImpl\r\n */\r\nexport class PullAudioOutputStreamImpl extends PullAudioOutputStream implements IAudioDestination {\r\n private privFormat: AudioOutputFormatImpl;\r\n private privId: string;\r\n private privStream: Stream;\r\n private privLastChunkView: Int8Array;\r\n\r\n /**\r\n * Creates and initializes an instance with the given values.\r\n * @constructor\r\n */\r\n public constructor() {\r\n super();\r\n this.privId = createNoDashGuid();\r\n this.privStream = new Stream();\r\n }\r\n\r\n /**\r\n * Sets the format information to the stream. For internal use only.\r\n * @param {AudioStreamFormat} format - the format to be set.\r\n */\r\n public set format(format: AudioStreamFormat) {\r\n if (format === undefined || format === null) {\r\n this.privFormat = AudioOutputFormatImpl.getDefaultOutputFormat();\r\n }\r\n this.privFormat = format as AudioOutputFormatImpl;\r\n }\r\n\r\n /**\r\n * Format information for the audio\r\n */\r\n public get format(): AudioStreamFormat {\r\n return this.privFormat;\r\n }\r\n\r\n /**\r\n * Checks if the stream is closed\r\n * @member PullAudioOutputStreamImpl.prototype.isClosed\r\n * @property\r\n * @public\r\n */\r\n public get isClosed(): boolean {\r\n return this.privStream.isClosed;\r\n }\r\n\r\n /**\r\n * Gets the id of the stream\r\n * @member PullAudioOutputStreamImpl.prototype.id\r\n * @property\r\n * @public\r\n */\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n /**\r\n * Reads audio data from the internal buffer.\r\n * @member PullAudioOutputStreamImpl.prototype.read\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - An ArrayBuffer to store the read data.\r\n * @returns {Promise} - Audio buffer length has been read.\r\n */\r\n public async read(dataBuffer: ArrayBuffer): Promise {\r\n const intView: Int8Array = new Int8Array(dataBuffer);\r\n let totalBytes: number = 0;\r\n\r\n if (this.privLastChunkView !== undefined) {\r\n if (this.privLastChunkView.length > dataBuffer.byteLength) {\r\n intView.set(this.privLastChunkView.slice(0, dataBuffer.byteLength));\r\n this.privLastChunkView = this.privLastChunkView.slice(dataBuffer.byteLength);\r\n return Promise.resolve(dataBuffer.byteLength);\r\n }\r\n intView.set(this.privLastChunkView);\r\n totalBytes = this.privLastChunkView.length;\r\n this.privLastChunkView = undefined;\r\n }\r\n\r\n // Until we have the minimum number of bytes to send in a transmission, keep asking for more.\r\n while (totalBytes < dataBuffer.byteLength && !this.privStream.isReadEnded) {\r\n const chunk: IStreamChunk = await this.privStream.read();\r\n if (chunk !== undefined && !chunk.isEnd) {\r\n let tmpBuffer: ArrayBuffer;\r\n if (chunk.buffer.byteLength > dataBuffer.byteLength - totalBytes) {\r\n tmpBuffer = chunk.buffer.slice(0, dataBuffer.byteLength - totalBytes);\r\n this.privLastChunkView = new Int8Array(chunk.buffer.slice(dataBuffer.byteLength - totalBytes));\r\n } else {\r\n tmpBuffer = chunk.buffer;\r\n }\r\n intView.set(new Int8Array(tmpBuffer), totalBytes);\r\n totalBytes += tmpBuffer.byteLength;\r\n } else {\r\n this.privStream.readEnded();\r\n }\r\n }\r\n return totalBytes;\r\n }\r\n\r\n /**\r\n * Writes the audio data specified by making an internal copy of the data.\r\n * @member PullAudioOutputStreamImpl.prototype.write\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - The audio buffer of which this function will make a copy.\r\n */\r\n public write(dataBuffer: ArrayBuffer): void {\r\n Contracts.throwIfNullOrUndefined(this.privStream, \"must set format before writing\");\r\n this.privStream.writeStreamChunk({\r\n buffer: dataBuffer,\r\n isEnd: false,\r\n timeReceived: Date.now()\r\n });\r\n }\r\n\r\n /**\r\n * Closes the stream.\r\n * @member PullAudioOutputStreamImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n this.privStream.close();\r\n }\r\n}\r\n\r\n/*\r\n * Represents audio output stream used for custom audio output configurations.\r\n * @class PushAudioOutputStream\r\n */\r\nexport abstract class PushAudioOutputStream extends AudioOutputStream {\r\n /**\r\n * Creates and initializes and instance.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Creates a PushAudioOutputStream that delegates to the specified callback interface for\r\n * write() and close() methods.\r\n * @member PushAudioOutputStream.create\r\n * @function\r\n * @public\r\n * @param {PushAudioOutputStreamCallback} callback - The custom audio output object,\r\n * derived from PushAudioOutputStreamCallback\r\n * @returns {PushAudioOutputStream} The push audio output stream being created.\r\n */\r\n public static create(callback: PushAudioOutputStreamCallback): PushAudioOutputStream {\r\n return new PushAudioOutputStreamImpl(callback);\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member PushAudioOutputStream.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n\r\n}\r\n\r\n/**\r\n * Represents audio output stream used for custom audio output configurations.\r\n * @private\r\n * @class PushAudioOutputStreamImpl\r\n */\r\nexport class PushAudioOutputStreamImpl extends PushAudioOutputStream implements IAudioDestination {\r\n private readonly privId: string;\r\n private privCallback: PushAudioOutputStreamCallback;\r\n\r\n /**\r\n * Creates a PushAudioOutputStream that delegates to the specified callback interface for\r\n * read() and close() methods.\r\n * @constructor\r\n * @param {PushAudioOutputStreamCallback} callback - The custom audio output object,\r\n * derived from PushAudioOutputStreamCallback\r\n */\r\n public constructor(callback: PushAudioOutputStreamCallback) {\r\n super();\r\n this.privId = createNoDashGuid();\r\n this.privCallback = callback;\r\n }\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n public set format(format: AudioStreamFormat) { }\r\n\r\n public write(buffer: ArrayBuffer): void {\r\n if (!!this.privCallback.write) {\r\n this.privCallback.write(buffer);\r\n }\r\n }\r\n\r\n public close(): void {\r\n if (!!this.privCallback.close) {\r\n this.privCallback.close();\r\n }\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nexport enum AudioFormatTag {\r\n PCM = 1,\r\n MuLaw,\r\n Siren,\r\n MP3,\r\n SILKSkype,\r\n OGG_OPUS,\r\n WEBM_OPUS,\r\n ALaw,\r\n FLAC,\r\n OPUS,\r\n}\r\n\r\n/**\r\n * Represents audio stream format used for custom audio input configurations.\r\n * @class AudioStreamFormat\r\n */\r\nexport abstract class AudioStreamFormat {\r\n /**\r\n * Creates an audio stream format object representing the default audio stream\r\n * format (16KHz 16bit mono PCM).\r\n * @member AudioStreamFormat.getDefaultInputFormat\r\n * @function\r\n * @public\r\n * @returns {AudioStreamFormat} The audio stream format being created.\r\n */\r\n public static getDefaultInputFormat(): AudioStreamFormat {\r\n return AudioStreamFormatImpl.getDefaultInputFormat();\r\n }\r\n\r\n /**\r\n * Creates an audio stream format object with the specified format characteristics.\r\n * @member AudioStreamFormat.getWaveFormat\r\n * @function\r\n * @public\r\n * @param {number} samplesPerSecond - Sample rate, in samples per second (Hertz).\r\n * @param {number} bitsPerSample - Bits per sample, typically 16.\r\n * @param {number} channels - Number of channels in the waveform-audio data. Monaural data\r\n * uses one channel and stereo data uses two channels.\r\n * @param {AudioFormatTag} format - Audio format (PCM, alaw or mulaw).\r\n * @returns {AudioStreamFormat} The audio stream format being created.\r\n */\r\n public static getWaveFormat(samplesPerSecond: number, bitsPerSample: number, channels: number, format: AudioFormatTag): AudioStreamFormat {\r\n return new AudioStreamFormatImpl(samplesPerSecond, bitsPerSample, channels, format);\r\n }\r\n\r\n /**\r\n * Creates an audio stream format object with the specified pcm waveformat characteristics.\r\n * @member AudioStreamFormat.getWaveFormatPCM\r\n * @function\r\n * @public\r\n * @param {number} samplesPerSecond - Sample rate, in samples per second (Hertz).\r\n * @param {number} bitsPerSample - Bits per sample, typically 16.\r\n * @param {number} channels - Number of channels in the waveform-audio data. Monaural data\r\n * uses one channel and stereo data uses two channels.\r\n * @returns {AudioStreamFormat} The audio stream format being created.\r\n */\r\n public static getWaveFormatPCM(samplesPerSecond: number, bitsPerSample: number, channels: number): AudioStreamFormat {\r\n return new AudioStreamFormatImpl(samplesPerSecond, bitsPerSample, channels);\r\n }\r\n\r\n /**\r\n * Explicitly frees any external resource attached to the object\r\n * @member AudioStreamFormat.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * @private\r\n * @class AudioStreamFormatImpl\r\n */\r\nexport class AudioStreamFormatImpl extends AudioStreamFormat {\r\n protected privHeader: ArrayBuffer;\r\n\r\n /**\r\n * Creates an instance with the given values.\r\n * @constructor\r\n * @param {number} samplesPerSec - Samples per second.\r\n * @param {number} bitsPerSample - Bits per sample.\r\n * @param {number} channels - Number of channels.\r\n * @param {AudioFormatTag} format - Audio format (PCM, alaw or mulaw).\r\n */\r\n public constructor(samplesPerSec: number = 16000, bitsPerSample: number = 16, channels: number = 1, format: AudioFormatTag = AudioFormatTag.PCM) {\r\n super();\r\n\r\n let isWavFormat: boolean = true;\r\n /* 1 for PCM; 6 for alaw; 7 for mulaw */\r\n switch (format) {\r\n case AudioFormatTag.PCM:\r\n this.formatTag = 1;\r\n break;\r\n case AudioFormatTag.ALaw:\r\n this.formatTag = 6;\r\n break;\r\n case AudioFormatTag.MuLaw:\r\n this.formatTag = 7;\r\n break;\r\n default:\r\n isWavFormat = false;\r\n }\r\n this.bitsPerSample = bitsPerSample;\r\n this.samplesPerSec = samplesPerSec;\r\n this.channels = channels;\r\n this.avgBytesPerSec = this.samplesPerSec * this.channels * (this.bitsPerSample / 8);\r\n this.blockAlign = this.channels * Math.max(this.bitsPerSample, 8);\r\n\r\n if (isWavFormat) {\r\n this.privHeader = new ArrayBuffer(44);\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/DataView\r\n const view = new DataView(this.privHeader);\r\n\r\n /* RIFF identifier */\r\n this.setString(view, 0, \"RIFF\");\r\n /* file length */\r\n view.setUint32(4, 0, true);\r\n /* RIFF type & Format */\r\n this.setString(view, 8, \"WAVEfmt \");\r\n /* format chunk length */\r\n view.setUint32(16, 16, true);\r\n /* audio format */\r\n view.setUint16(20, this.formatTag, true);\r\n /* channel count */\r\n view.setUint16(22, this.channels, true);\r\n /* sample rate */\r\n view.setUint32(24, this.samplesPerSec, true);\r\n /* byte rate (sample rate * block align) */\r\n view.setUint32(28, this.avgBytesPerSec, true);\r\n /* block align (channel count * bytes per sample) */\r\n view.setUint16(32, this.channels * (this.bitsPerSample / 8), true);\r\n /* bits per sample */\r\n view.setUint16(34, this.bitsPerSample, true);\r\n /* data chunk identifier */\r\n this.setString(view, 36, \"data\");\r\n /* data chunk length */\r\n view.setUint32(40, 0, true);\r\n }\r\n }\r\n\r\n /**\r\n * Retrieves the default input format.\r\n * @member AudioStreamFormatImpl.getDefaultInputFormat\r\n * @function\r\n * @public\r\n * @returns {AudioStreamFormatImpl} The default input format.\r\n */\r\n public static getDefaultInputFormat(): AudioStreamFormatImpl {\r\n return new AudioStreamFormatImpl();\r\n }\r\n\r\n /**\r\n * Creates an audio context appropriate to current browser\r\n * @member AudioStreamFormatImpl.getAudioContext\r\n * @function\r\n * @public\r\n * @returns {AudioContext} An audio context instance\r\n */\r\n /* eslint-disable */\r\n public static getAudioContext(sampleRate?: number): AudioContext {\r\n // Workaround for Speech SDK bug in Safari.\r\n const AudioContext = (window as any).AudioContext // our preferred impl\r\n || (window as any).webkitAudioContext // fallback, mostly when on Safari\r\n || false; // could not find.\r\n\r\n // https://developer.mozilla.org/en-US/docs/Web/API/AudioContext\r\n if (!!AudioContext) {\r\n if (sampleRate !== undefined && navigator.mediaDevices.getSupportedConstraints().sampleRate) {\r\n return new AudioContext({ sampleRate });\r\n } else {\r\n return new AudioContext();\r\n }\r\n } else {\r\n throw new Error(\"Browser does not support Web Audio API (AudioContext is not available).\");\r\n }\r\n }\r\n /* eslint-enable */\r\n\r\n /**\r\n * Closes the configuration object.\r\n * @member AudioStreamFormatImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n return;\r\n }\r\n\r\n /**\r\n * The format of the audio, valid values: 1 (PCM)\r\n * @member AudioStreamFormatImpl.prototype.formatTag\r\n * @function\r\n * @public\r\n */\r\n public formatTag: number;\r\n\r\n /**\r\n * The number of channels, valid values: 1 (Mono).\r\n * @member AudioStreamFormatImpl.prototype.channels\r\n * @function\r\n * @public\r\n */\r\n public channels: number;\r\n\r\n /**\r\n * The sample rate, valid values: 16000.\r\n * @member AudioStreamFormatImpl.prototype.samplesPerSec\r\n * @function\r\n * @public\r\n */\r\n public samplesPerSec: number;\r\n\r\n /**\r\n * The bits per sample, valid values: 16\r\n * @member AudioStreamFormatImpl.prototype.b\r\n * @function\r\n * @public\r\n */\r\n public bitsPerSample: number;\r\n\r\n /**\r\n * Average bytes per second, usually calculated as nSamplesPerSec * nChannels * ceil(wBitsPerSample, 8).\r\n * @member AudioStreamFormatImpl.prototype.avgBytesPerSec\r\n * @function\r\n * @public\r\n */\r\n public avgBytesPerSec: number;\r\n\r\n /**\r\n * The size of a single frame, valid values: nChannels * ceil(wBitsPerSample, 8).\r\n * @member AudioStreamFormatImpl.prototype.blockAlign\r\n * @function\r\n * @public\r\n */\r\n public blockAlign: number;\r\n\r\n public get header(): ArrayBuffer {\r\n return this.privHeader;\r\n }\r\n\r\n protected setString(view: DataView, offset: number, str: string): void {\r\n for (let i = 0; i < str.length; i++) {\r\n view.setUint8(offset + i, str.charCodeAt(i));\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { InvalidOperationError } from \"../../common/Error\";\r\nimport { AudioStreamFormat } from \"../Exports\";\r\nimport { AudioStreamFormatImpl } from \"./AudioStreamFormat\";\r\n\r\ntype AudioDataTypedArray = Int8Array | Uint8Array | Int16Array | Uint16Array | Int32Array | Uint32Array;\r\n/**\r\n * Base audio player class\r\n * TODO: Plays only PCM for now.\r\n * @class\r\n */\r\nexport class BaseAudioPlayer {\r\n\r\n private audioContext: AudioContext = null;\r\n private gainNode: GainNode = null;\r\n private audioFormat: AudioStreamFormatImpl;\r\n private autoUpdateBufferTimer: any = 0;\r\n private samples: Float32Array;\r\n private startTime: number;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {AudioStreamFormat} audioFormat audio stream format recognized by the player.\r\n */\r\n public constructor(audioFormat?: AudioStreamFormat) {\r\n if (audioFormat === undefined) {\r\n audioFormat = AudioStreamFormat.getDefaultInputFormat();\r\n }\r\n this.init(audioFormat);\r\n }\r\n\r\n /**\r\n * play Audio sample\r\n * @param newAudioData audio data to be played.\r\n */\r\n public playAudioSample(newAudioData: ArrayBuffer, cb?: () => void, err?: (error: string) => void): void {\r\n try {\r\n this.ensureInitializedContext();\r\n const audioData = this.formatAudioData(newAudioData);\r\n const newSamplesData = new Float32Array(this.samples.length + audioData.length);\r\n newSamplesData.set(this.samples, 0);\r\n newSamplesData.set(audioData, this.samples.length);\r\n this.samples = newSamplesData;\r\n if (!!cb) {\r\n cb();\r\n }\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * stops audio and clears the buffers\r\n */\r\n public stopAudio(cb?: () => void, err?: (error: string) => void): void {\r\n if (this.audioContext !== null) {\r\n this.samples = new Float32Array();\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-argument\r\n clearInterval(this.autoUpdateBufferTimer);\r\n this.audioContext.close().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n this.audioContext = null;\r\n }\r\n }\r\n\r\n private init(audioFormat: AudioStreamFormat): void {\r\n this.audioFormat = audioFormat as AudioStreamFormatImpl;\r\n this.samples = new Float32Array();\r\n }\r\n\r\n private ensureInitializedContext(): void {\r\n if (this.audioContext === null) {\r\n this.createAudioContext();\r\n const timerPeriod = 200;\r\n this.autoUpdateBufferTimer = setInterval((): void => {\r\n this.updateAudioBuffer();\r\n }, timerPeriod);\r\n }\r\n }\r\n\r\n private createAudioContext(): void {\r\n // new ((window as any).AudioContext || (window as any).webkitAudioContext)();\r\n this.audioContext = AudioStreamFormatImpl.getAudioContext();\r\n\r\n // TODO: Various examples shows this gain node, it does not seem to be needed unless we plan\r\n // to control the volume, not likely\r\n this.gainNode = this.audioContext.createGain();\r\n this.gainNode.gain.value = 1;\r\n this.gainNode.connect(this.audioContext.destination);\r\n this.startTime = this.audioContext.currentTime;\r\n }\r\n\r\n private formatAudioData(audioData: ArrayBuffer): Float32Array {\r\n switch (this.audioFormat.bitsPerSample) {\r\n case 8:\r\n return this.formatArrayBuffer(new Int8Array(audioData), 128);\r\n case 16:\r\n return this.formatArrayBuffer(new Int16Array(audioData), 32768);\r\n case 32:\r\n return this.formatArrayBuffer(new Int32Array(audioData), 2147483648);\r\n default:\r\n throw new InvalidOperationError(\"Only WAVE_FORMAT_PCM (8/16/32 bps) format supported at this time\");\r\n }\r\n }\r\n\r\n private formatArrayBuffer(audioData: AudioDataTypedArray, maxValue: number): Float32Array {\r\n const float32Data = new Float32Array(audioData.length);\r\n for (let i = 0; i < audioData.length; i++) {\r\n float32Data[i] = audioData[i] / maxValue;\r\n }\r\n return float32Data;\r\n }\r\n\r\n private updateAudioBuffer(): void {\r\n if (this.samples.length === 0) {\r\n return;\r\n }\r\n\r\n const channelCount = this.audioFormat.channels;\r\n const bufferSource = this.audioContext.createBufferSource();\r\n const frameCount = this.samples.length / channelCount;\r\n const audioBuffer = this.audioContext.createBuffer(channelCount, frameCount, this.audioFormat.samplesPerSec);\r\n\r\n // TODO: Should we do the conversion in the pushAudioSample instead?\r\n for (let channel = 0; channel < channelCount; channel++) {\r\n // Fill in individual channel data\r\n let channelOffset = channel;\r\n const audioData = audioBuffer.getChannelData(channel);\r\n for (let i = 0; i < this.samples.length; i++, channelOffset += channelCount) {\r\n audioData[i] = this.samples[channelOffset];\r\n }\r\n }\r\n\r\n if (this.startTime < this.audioContext.currentTime) {\r\n this.startTime = this.audioContext.currentTime;\r\n }\r\n\r\n bufferSource.buffer = audioBuffer;\r\n bufferSource.connect(this.gainNode);\r\n bufferSource.start(this.startTime);\r\n\r\n // Make sure we play the next sample after the current one.\r\n this.startTime += audioBuffer.duration;\r\n\r\n // Clear the samples for the next pushed data.\r\n this.samples = new Float32Array();\r\n }\r\n\r\n private async playAudio(audioData: ArrayBuffer): Promise {\r\n if (this.audioContext === null) {\r\n this.createAudioContext();\r\n }\r\n const source: AudioBufferSourceNode = this.audioContext.createBufferSource();\r\n const destination: AudioDestinationNode = this.audioContext.destination;\r\n await this.audioContext.decodeAudioData(audioData, (newBuffer: AudioBuffer): void => {\r\n source.buffer = newBuffer;\r\n source.connect(destination);\r\n source.start(0);\r\n });\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n /**\r\n * An abstract base class that defines callback methods (read() and close()) for\r\n * custom audio input streams).\r\n * @class PullAudioInputStreamCallback\r\n */\r\nexport abstract class PullAudioInputStreamCallback {\r\n\r\n /**\r\n * Reads data from audio input stream into the data buffer. The maximal number of bytes\r\n * to be read is determined by the size of dataBuffer.\r\n * @member PullAudioInputStreamCallback.prototype.read\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - The byte array to store the read data.\r\n * @returns {number} the number of bytes have been read.\r\n */\r\n public abstract read(dataBuffer: ArrayBuffer): number;\r\n\r\n /**\r\n * Closes the audio input stream.\r\n * @member PullAudioInputStreamCallback.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n/**\r\n * An abstract base class that defines callback methods (write() and close()) for\r\n * custom audio output streams).\r\n * @class PushAudioOutputStreamCallback\r\n */\r\nexport abstract class PushAudioOutputStreamCallback {\r\n\r\n /**\r\n * Writes audio data into the data buffer.\r\n * @member PushAudioOutputStreamCallback.prototype.write\r\n * @function\r\n * @public\r\n * @param {ArrayBuffer} dataBuffer - The byte array that stores the audio data to write.\r\n */\r\n public abstract write(dataBuffer: ArrayBuffer): void;\r\n\r\n /**\r\n * Closes the audio output stream.\r\n * @member PushAudioOutputStreamCallback.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SynthesisAdapterBase } from \"../../common.speech/Exports\";\r\nimport {\r\n BackgroundEvent,\r\n createNoDashGuid,\r\n Events,\r\n IAudioDestination,\r\n INumberDictionary\r\n} from \"../../common/Exports\";\r\nimport { AudioStreamFormat, IPlayer } from \"../Exports\";\r\nimport { AudioOutputFormatImpl } from \"./AudioOutputFormat\";\r\nimport { PullAudioOutputStreamImpl } from \"./AudioOutputStream\";\r\nimport { AudioFormatTag } from \"./AudioStreamFormat\";\r\n\r\nconst MediaDurationPlaceholderSeconds = 60 * 30;\r\n\r\nconst AudioFormatToMimeType: INumberDictionary = {\r\n [AudioFormatTag.PCM]: \"audio/wav\",\r\n [AudioFormatTag.MuLaw]: \"audio/x-wav\",\r\n [AudioFormatTag.MP3]: \"audio/mpeg\",\r\n [AudioFormatTag.OGG_OPUS]: \"audio/ogg\",\r\n [AudioFormatTag.WEBM_OPUS]: \"audio/webm; codecs=opus\",\r\n [AudioFormatTag.ALaw]: \"audio/x-wav\",\r\n [AudioFormatTag.FLAC]: \"audio/flac\",\r\n};\r\n\r\n/**\r\n * Represents the speaker playback audio destination, which only works in browser.\r\n * Note: the SDK will try to use Media Source Extensions to play audio.\r\n * Mp3 format has better supports on Microsoft Edge, Chrome and Safari (desktop), so, it's better to specify mp3 format for playback.\r\n * @class SpeakerAudioDestination\r\n * Updated in version 1.17.0\r\n */\r\nexport class SpeakerAudioDestination implements IAudioDestination, IPlayer {\r\n private readonly privId: string;\r\n private privFormat: AudioOutputFormatImpl;\r\n private privAudio: HTMLAudioElement;\r\n private privMediaSource: MediaSource;\r\n private privSourceBuffer: SourceBuffer;\r\n private privPlaybackStarted: boolean = false;\r\n private privAudioBuffer: ArrayBuffer[];\r\n private privAppendingToBuffer: boolean = false;\r\n private privMediaSourceOpened: boolean = false;\r\n private privIsClosed: boolean;\r\n private privIsPaused: boolean;\r\n private privAudioOutputStream: PullAudioOutputStreamImpl;\r\n private privBytesReceived: number = 0;\r\n\r\n public constructor(audioDestinationId?: string) {\r\n this.privId = audioDestinationId ? audioDestinationId : createNoDashGuid();\r\n this.privIsPaused = false;\r\n this.privIsClosed = false;\r\n }\r\n\r\n public id(): string {\r\n return this.privId;\r\n }\r\n\r\n public write(buffer: ArrayBuffer, cb?: () => void, err?: (error: string) => void): void {\r\n if (this.privAudioBuffer !== undefined) {\r\n this.privAudioBuffer.push(buffer);\r\n this.updateSourceBuffer().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n } else if (this.privAudioOutputStream !== undefined) {\r\n this.privAudioOutputStream.write(buffer);\r\n this.privBytesReceived += buffer.byteLength;\r\n }\r\n }\r\n\r\n public close(cb?: () => void, err?: (error: string) => void): void {\r\n this.privIsClosed = true;\r\n if (this.privSourceBuffer !== undefined) {\r\n this.handleSourceBufferUpdateEnd().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n } else if (this.privAudioOutputStream !== undefined && typeof window !== \"undefined\") {\r\n if ((this.privFormat.formatTag === AudioFormatTag.PCM || this.privFormat.formatTag === AudioFormatTag.MuLaw\r\n || this.privFormat.formatTag === AudioFormatTag.ALaw) && this.privFormat.hasHeader === false) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\"Play back is not supported for raw PCM, mulaw or alaw format without header.\");\r\n if (!!this.onAudioEnd) {\r\n this.onAudioEnd(this);\r\n }\r\n } else {\r\n let receivedAudio = new ArrayBuffer(this.privBytesReceived);\r\n this.privAudioOutputStream.read(receivedAudio).then((): void => {\r\n receivedAudio = SynthesisAdapterBase.addHeader(receivedAudio, this.privFormat);\r\n const audioBlob = new Blob([receivedAudio], { type: AudioFormatToMimeType[this.privFormat.formatTag] });\r\n this.privAudio.src = window.URL.createObjectURL(audioBlob);\r\n this.notifyPlayback().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n }\r\n } else {\r\n // unsupported format, call onAudioEnd directly.\r\n if (!!this.onAudioEnd) {\r\n this.onAudioEnd(this);\r\n }\r\n }\r\n }\r\n\r\n public set format(format: AudioStreamFormat) {\r\n // eslint-disable-next-line @typescript-eslint/no-unsafe-member-access\r\n if (typeof (AudioContext) !== \"undefined\" || (typeof (window) !== \"undefined\" && typeof ((window as any).webkitAudioContext) !== \"undefined\")) {\r\n this.privFormat = format as AudioOutputFormatImpl;\r\n const mimeType: string = AudioFormatToMimeType[this.privFormat.formatTag];\r\n if (mimeType === undefined) {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n `Unknown mimeType for format ${AudioFormatTag[this.privFormat.formatTag]}; playback is not supported.`);\r\n\r\n } else if (typeof (MediaSource) !== \"undefined\" && MediaSource.isTypeSupported(mimeType)) {\r\n this.privAudio = new Audio();\r\n this.privAudioBuffer = [];\r\n this.privMediaSource = new MediaSource();\r\n this.privAudio.src = URL.createObjectURL(this.privMediaSource);\r\n this.privAudio.load();\r\n this.privMediaSource.onsourceopen = (): void => {\r\n this.privMediaSourceOpened = true;\r\n this.privMediaSource.duration = MediaDurationPlaceholderSeconds;\r\n this.privSourceBuffer = this.privMediaSource.addSourceBuffer(mimeType);\r\n this.privSourceBuffer.onupdate = (): void => {\r\n this.updateSourceBuffer().catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n };\r\n this.privSourceBuffer.onupdateend = (): void => {\r\n this.handleSourceBufferUpdateEnd().catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n };\r\n this.privSourceBuffer.onupdatestart = (): void => {\r\n this.privAppendingToBuffer = false;\r\n };\r\n };\r\n this.updateSourceBuffer().catch((reason: string): void => {\r\n Events.instance.onEvent(new BackgroundEvent(reason));\r\n });\r\n\r\n } else {\r\n // eslint-disable-next-line no-console\r\n console.warn(\r\n `Format ${AudioFormatTag[this.privFormat.formatTag]} could not be played by MSE, streaming playback is not enabled.`);\r\n this.privAudioOutputStream = new PullAudioOutputStreamImpl();\r\n this.privAudioOutputStream.format = this.privFormat;\r\n this.privAudio = new Audio();\r\n }\r\n }\r\n }\r\n\r\n public get volume(): number {\r\n return this.privAudio?.volume ?? -1;\r\n }\r\n\r\n public set volume(volume: number) {\r\n if (!!this.privAudio) {\r\n this.privAudio.volume = volume;\r\n }\r\n }\r\n\r\n public mute(): void {\r\n if (!!this.privAudio) {\r\n this.privAudio.muted = true;\r\n }\r\n }\r\n\r\n public unmute(): void {\r\n if (!!this.privAudio) {\r\n this.privAudio.muted = false;\r\n }\r\n }\r\n\r\n public get isClosed(): boolean {\r\n return this.privIsClosed;\r\n }\r\n\r\n public get currentTime(): number {\r\n if (this.privAudio !== undefined) {\r\n return this.privAudio.currentTime;\r\n }\r\n return -1;\r\n }\r\n\r\n public pause(): void {\r\n if (!this.privIsPaused && this.privAudio !== undefined) {\r\n this.privAudio.pause();\r\n this.privIsPaused = true;\r\n }\r\n }\r\n\r\n public resume(cb?: () => void, err?: (error: string) => void): void {\r\n if (this.privIsPaused && this.privAudio !== undefined) {\r\n this.privAudio.play().then((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }, (error: string): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n this.privIsPaused = false;\r\n }\r\n }\r\n\r\n public onAudioStart: (sender: IPlayer) => void;\r\n\r\n public onAudioEnd: (sender: IPlayer) => void;\r\n\r\n public get internalAudio(): HTMLAudioElement {\r\n return this.privAudio;\r\n }\r\n\r\n private async updateSourceBuffer(): Promise {\r\n if (this.privAudioBuffer !== undefined && (this.privAudioBuffer.length > 0) && this.sourceBufferAvailable()) {\r\n this.privAppendingToBuffer = true;\r\n const binary = this.privAudioBuffer.shift();\r\n try {\r\n this.privSourceBuffer.appendBuffer(binary);\r\n } catch (error) {\r\n this.privAudioBuffer.unshift(binary);\r\n // eslint-disable-next-line no-console\r\n console.log(\r\n \"buffer filled, pausing addition of binaries until space is made\");\r\n return;\r\n }\r\n await this.notifyPlayback();\r\n } else if (this.canEndStream()) {\r\n await this.handleSourceBufferUpdateEnd();\r\n }\r\n }\r\n\r\n private async handleSourceBufferUpdateEnd(): Promise {\r\n if (this.canEndStream() && this.sourceBufferAvailable()) {\r\n this.privMediaSource.endOfStream();\r\n await this.notifyPlayback();\r\n }\r\n }\r\n\r\n private async notifyPlayback(): Promise {\r\n if (!this.privPlaybackStarted && this.privAudio !== undefined) {\r\n this.privPlaybackStarted = true;\r\n if (!!this.onAudioStart) {\r\n this.onAudioStart(this);\r\n }\r\n this.privAudio.onended = (): void => {\r\n if (!!this.onAudioEnd) {\r\n this.onAudioEnd(this);\r\n }\r\n };\r\n if (!this.privIsPaused) {\r\n await this.privAudio.play();\r\n }\r\n }\r\n }\r\n\r\n private canEndStream(): boolean {\r\n return (this.isClosed && this.privSourceBuffer !== undefined && (this.privAudioBuffer.length === 0)\r\n && this.privMediaSourceOpened && !this.privAppendingToBuffer && this.privMediaSource.readyState === \"open\");\r\n }\r\n\r\n private sourceBufferAvailable(): boolean {\r\n return (this.privSourceBuffer !== undefined && !this.privSourceBuffer.updating);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { AutoDetectSourceLanguagesOpenRangeOptionName } from \"../common.speech/Exports\";\r\nimport {Contracts} from \"./Contracts\";\r\nimport {\r\n PropertyCollection,\r\n PropertyId,\r\n SourceLanguageConfig,\r\n} from \"./Exports\";\r\nimport { LanguageIdMode } from \"./LanguageIdMode\";\r\n\r\n/**\r\n * Language auto detect configuration.\r\n * @class AutoDetectSourceLanguageConfig\r\n * Added in version 1.13.0.\r\n */\r\nexport class AutoDetectSourceLanguageConfig {\r\n private privProperties: PropertyCollection;\r\n private privLanguageIdMode: LanguageIdMode;\r\n\r\n private constructor() {\r\n this.privProperties = new PropertyCollection();\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_LanguageIdMode, \"AtStart\");\r\n this.privLanguageIdMode = LanguageIdMode.AtStart;\r\n }\r\n\r\n /**\r\n * @member AutoDetectSourceLanguageConfig.fromOpenRange\r\n * @function\r\n * @public\r\n * Only [[SpeechSynthesizer]] supports source language auto detection from open range,\r\n * for [[Recognizer]], please use AutoDetectSourceLanguageConfig with specific source languages.\r\n * @return {AutoDetectSourceLanguageConfig} Instance of AutoDetectSourceLanguageConfig\r\n * @summary Creates an instance of the AutoDetectSourceLanguageConfig with open range.\r\n */\r\n public static fromOpenRange(): AutoDetectSourceLanguageConfig {\r\n const config = new AutoDetectSourceLanguageConfig();\r\n config.properties.setProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages, AutoDetectSourceLanguagesOpenRangeOptionName);\r\n return config;\r\n }\r\n\r\n /**\r\n * @member AutoDetectSourceLanguageConfig.fromLanguages\r\n * @function\r\n * @public\r\n * @param {string[]} languages Comma-separated string of languages (eg. \"en-US,fr-FR\") to populate properties of config.\r\n * @return {AutoDetectSourceLanguageConfig} Instance of AutoDetectSourceLanguageConfig\r\n * @summary Creates an instance of the AutoDetectSourceLanguageConfig with given languages.\r\n */\r\n public static fromLanguages(languages: string[]): AutoDetectSourceLanguageConfig {\r\n Contracts.throwIfArrayEmptyOrWhitespace(languages, \"languages\");\r\n const config = new AutoDetectSourceLanguageConfig();\r\n config.properties.setProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages, languages.join());\r\n return config;\r\n }\r\n\r\n /**\r\n * @member AutoDetectSourceLanguageConfig.fromSourceLanguageConfigs\r\n * @function\r\n * @public\r\n * @param {SourceLanguageConfig[]} configs SourceLanguageConfigs to populate properties of config.\r\n * @return {AutoDetectSourceLanguageConfig} Instance of AutoDetectSourceLanguageConfig\r\n * @summary Creates an instance of the AutoDetectSourceLanguageConfig with given SourceLanguageConfigs.\r\n */\r\n public static fromSourceLanguageConfigs(configs: SourceLanguageConfig[]): AutoDetectSourceLanguageConfig {\r\n if (configs.length < 1) {\r\n throw new Error(\"Expected non-empty SourceLanguageConfig array.\");\r\n }\r\n const autoConfig = new AutoDetectSourceLanguageConfig();\r\n const langs: string[] = [];\r\n configs.forEach((config: SourceLanguageConfig): void => {\r\n langs.push(config.language);\r\n if (config.endpointId !== undefined && config.endpointId !== \"\") {\r\n const customProperty = config.language + PropertyId.SpeechServiceConnection_EndpointId.toString();\r\n autoConfig.properties.setProperty(customProperty, config.endpointId);\r\n }\r\n });\r\n autoConfig.properties.setProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages, langs.join());\r\n\r\n return autoConfig;\r\n }\r\n\r\n /**\r\n * @member AutoDetectSourceLanguageConfig.prototype.properties\r\n * @function\r\n * @public\r\n * @return {PropertyCollection} Properties of the config.\r\n * @summary Gets an auto detected language config properties\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * @member AutoDetectSourceLanguageConfig.prototype.mode\r\n * @function\r\n * @public\r\n * @param {LanguageIdMode} mode LID mode desired.\r\n * @summary Sets LID operation to desired mode\r\n */\r\n public set mode(mode: LanguageIdMode) {\r\n if (mode === LanguageIdMode.Continuous) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_RecognitionEndpointVersion, \"2\");\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_LanguageIdMode, \"Continuous\");\r\n } else { // LanguageIdMode.AtStart\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_RecognitionEndpointVersion, \"1\");\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_LanguageIdMode, \"AtStart\");\r\n }\r\n this.privLanguageIdMode = mode;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts\";\r\nimport {\r\n SpeechRecognitionResult,\r\n} from \"./Exports\";\r\n\r\n/**\r\n * Output format\r\n * @class AutoDetectSourceLanguageResult\r\n */\r\nexport class AutoDetectSourceLanguageResult {\r\n\r\n private privLanguage: string;\r\n private privLanguageDetectionConfidence: string;\r\n\r\n private constructor(language: string, languageDetectionConfidence: string) {\r\n Contracts.throwIfNullOrUndefined(language, \"language\");\r\n Contracts.throwIfNullOrUndefined(languageDetectionConfidence, \"languageDetectionConfidence\");\r\n this.privLanguage = language;\r\n this.privLanguageDetectionConfidence = languageDetectionConfidence;\r\n }\r\n\r\n /**\r\n * Creates an instance of AutoDetectSourceLanguageResult object from a SpeechRecognitionResult instance.\r\n * @member AutoDetectSourceLanguageResult.fromResult\r\n * @function\r\n * @public\r\n * @param {SpeechRecognitionResult} result - The recognition result.\r\n * @returns {AutoDetectSourceLanguageResult} AutoDetectSourceLanguageResult object being created.\r\n */\r\n public static fromResult(result: SpeechRecognitionResult): AutoDetectSourceLanguageResult {\r\n return new AutoDetectSourceLanguageResult(result.language, result.languageDetectionConfidence);\r\n }\r\n\r\n public get language(): string {\r\n return this.privLanguage;\r\n }\r\n\r\n public get languageDetectionConfidence(): string {\r\n return this.privLanguageDetectionConfidence;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts\";\r\nimport { DialogServiceConfig, DialogServiceConfigImpl } from \"./DialogServiceConfig\";\r\nimport { PropertyId } from \"./Exports\";\r\n\r\n/**\r\n * Class that defines configurations for the dialog service connector object for using a Bot Framework backend.\r\n * @class BotFrameworkConfig\r\n */\r\nexport class BotFrameworkConfig extends DialogServiceConfigImpl {\r\n\r\n /**\r\n * Creates an instance of BotFrameworkConfig.\r\n */\r\n public constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Creates a bot framework configuration instance with the provided subscription information.\r\n * @member BotFrameworkConfig.fromSubscription\r\n * @function\r\n * @public\r\n * @param subscription Subscription key associated with the bot\r\n * @param region The region name (see the region page).\r\n * @param botId Optional. Identifier for using a specific bot within an Azure resource group. Equivalent to the\r\n * resource name.\r\n * @returns {BotFrameworkConfig} A new bot framework configuration instance.\r\n */\r\n public static fromSubscription(subscription: string, region: string, botId?: string): BotFrameworkConfig {\r\n Contracts.throwIfNullOrWhitespace(subscription, \"subscription\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const botFrameworkConfig: BotFrameworkConfig = new DialogServiceConfigImpl();\r\n botFrameworkConfig.setProperty(\r\n PropertyId.Conversation_DialogType,\r\n DialogServiceConfig.DialogTypes.BotFramework);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Key, subscription);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n\r\n if (botId) {\r\n botFrameworkConfig.setProperty(PropertyId.Conversation_ApplicationId, botId);\r\n }\r\n\r\n return botFrameworkConfig;\r\n }\r\n\r\n /**\r\n * Creates a bot framework configuration instance for the specified authorization token and region.\r\n * Note: The caller must ensure that an authorization token is valid. Before an authorization token expires, the\r\n * caller must refresh it by setting the authorizationToken property on the corresponding\r\n * DialogServiceConnector instance created with this config. The contents of configuration objects are copied\r\n * when connectors are created, so setting authorizationToken on a DialogServiceConnector will not update the\r\n * original configuration's authorization token. Create a new configuration instance or set the\r\n * SpeechServiceAuthorization_Token property to update an existing instance if it will be used to create\r\n * further DialogServiceConnectors.\r\n * @member BotFrameworkConfig.fromAuthorizationToken\r\n * @function\r\n * @public\r\n * @param authorizationToken The authorization token associated with the bot\r\n * @param region The region name (see the region page).\r\n * @param botId Optional. Identifier for using a specific bot within an Azure resource group. Equivalent to the\r\n * resource name.\r\n * @returns {BotFrameworkConfig} A new bot framework configuration instance.\r\n */\r\n public static fromAuthorizationToken(\r\n authorizationToken: string, region: string, botId?: string\r\n ): BotFrameworkConfig {\r\n Contracts.throwIfNullOrWhitespace(authorizationToken, \"authorizationToken\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const botFrameworkConfig: BotFrameworkConfig = new DialogServiceConfigImpl();\r\n botFrameworkConfig.setProperty(\r\n PropertyId.Conversation_DialogType,\r\n DialogServiceConfig.DialogTypes.BotFramework);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceAuthorization_Token, authorizationToken);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n\r\n if (botId) {\r\n botFrameworkConfig.setProperty(PropertyId.Conversation_ApplicationId, botId);\r\n }\r\n\r\n return botFrameworkConfig;\r\n }\r\n\r\n /**\r\n * Creates an instance of a BotFrameworkConfig.\r\n * This method is intended only for users who use a non-default service host. The standard resource path will be\r\n * assumed. For services with a non-standard resource path or no path at all, use fromEndpoint instead.\r\n * Note: Query parameters are not allowed in the host URI and must be set by other APIs.\r\n * Note: To use an authorization token with fromHost, use fromHost(URL) and then set the AuthorizationToken\r\n * property on the created BotFrameworkConfig instance.\r\n * Note: Added in version 1.15.0.\r\n * @member BotFrameworkConfig.fromHost\r\n * @function\r\n * @public\r\n * @param {URL | string} host - If a URL is provided, the fully-qualified host with protocol (e.g.\r\n * wss://your.host.com:1234) will be used. If a string is provided, it will be embedded in\r\n * wss://{host}.convai.speech.azure.us.\r\n * @param {string} subscriptionKey - The subscription key. If a subscription key is not specified, an authorization\r\n * token must be set.\r\n * @param botId Optional. Identifier for using a specific bot within an Azure resource group. Equivalent to the\r\n * resource name.\r\n * @returns {BotFrameworkConfig} A new bot framework configuration instance.\r\n */\r\n public static fromHost(\r\n host: URL | string,\r\n subscriptionKey?: string,\r\n botId?: string): BotFrameworkConfig {\r\n\r\n void botId;\r\n Contracts.throwIfNullOrUndefined(host, \"host\");\r\n const resolvedHost: URL = host instanceof URL ? host : new URL(`wss://${host}.convai.speech.azure.us`);\r\n Contracts.throwIfNullOrUndefined(resolvedHost, \"resolvedHost\");\r\n\r\n const botFrameworkConfig: BotFrameworkConfig = new DialogServiceConfigImpl();\r\n botFrameworkConfig.setProperty(\r\n PropertyId.Conversation_DialogType,\r\n DialogServiceConfig.DialogTypes.BotFramework);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Host, resolvedHost.toString());\r\n\r\n if (undefined !== subscriptionKey) {\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n }\r\n\r\n return botFrameworkConfig;\r\n }\r\n\r\n /**\r\n * Creates an instance of a BotFrameworkConfig.\r\n * This method is intended only for users who use a non-standard service endpoint or parameters.\r\n * Note: The query parameters specified in the endpoint URL are not changed, even if they are set by any other APIs.\r\n * Note: To use authorization token with fromEndpoint, pass an empty string to the subscriptionKey in the\r\n * fromEndpoint method, and then set authorizationToken=\"token\" on the created BotFrameworkConfig instance to\r\n * use the authorization token.\r\n * Note: Added in version 1.15.0.\r\n * @member BotFrameworkConfig.fromEndpoint\r\n * @function\r\n * @public\r\n * @param {URL} endpoint - The service endpoint to connect to.\r\n * @param {string} subscriptionKey - The subscription key. If a subscription key is not specified, an authorization\r\n * token must be set.\r\n * @returns {BotFrameworkConfig} - A new bot framework configuration instance using the provided endpoint.\r\n */\r\n public static fromEndpoint(endpoint: URL, subscriptionKey?: string): BotFrameworkConfig {\r\n Contracts.throwIfNull(endpoint, \"endpoint\");\r\n\r\n const botFrameworkConfig: BotFrameworkConfig = new DialogServiceConfigImpl();\r\n botFrameworkConfig.setProperty(\r\n PropertyId.Conversation_DialogType,\r\n DialogServiceConfig.DialogTypes.BotFramework);\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Endpoint, endpoint.toString());\r\n\r\n if (undefined !== subscriptionKey) {\r\n botFrameworkConfig.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n }\r\n\r\n return botFrameworkConfig;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { CancellationErrorCodePropertyName, EnumTranslation, SimpleSpeechPhrase } from \"../common.speech/Exports\";\r\nimport { CancellationDetailsBase } from \"./CancellationDetailsBase\";\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n RecognitionResult,\r\n SpeechSynthesisResult\r\n} from \"./Exports\";\r\n\r\n/**\r\n * Contains detailed information about why a result was canceled.\r\n * @class CancellationDetails\r\n */\r\nexport class CancellationDetails extends CancellationDetailsBase {\r\n\r\n private constructor(reason: CancellationReason, errorDetails: string, errorCode: CancellationErrorCode) {\r\n super(reason, errorDetails, errorCode);\r\n }\r\n\r\n /**\r\n * Creates an instance of CancellationDetails object for the canceled RecognitionResult.\r\n * @member CancellationDetails.fromResult\r\n * @function\r\n * @public\r\n * @param {RecognitionResult | SpeechSynthesisResult} result - The result that was canceled.\r\n * @returns {CancellationDetails} The cancellation details object being created.\r\n */\r\n public static fromResult(result: RecognitionResult | SpeechSynthesisResult): CancellationDetails {\r\n let reason = CancellationReason.Error;\r\n let errorCode: CancellationErrorCode = CancellationErrorCode.NoError;\r\n\r\n if (result instanceof RecognitionResult && !!result.json) {\r\n const simpleSpeech: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(result.json);\r\n reason = EnumTranslation.implTranslateCancelResult(simpleSpeech.RecognitionStatus);\r\n }\r\n\r\n if (!!result.properties) {\r\n errorCode = CancellationErrorCode[result.properties.getProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.NoError]) as keyof typeof CancellationErrorCode];\r\n }\r\n\r\n return new CancellationDetails(reason, result.errorDetails || EnumTranslation.implTranslateErrorDetails(errorCode), errorCode);\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationErrorCode,\r\n CancellationReason,\r\n} from \"./Exports\";\r\n\r\n/**\r\n * Contains detailed information about why a result was canceled.\r\n * @class CancellationDetailsBase\r\n */\r\nexport class CancellationDetailsBase {\r\n private privReason: CancellationReason;\r\n private privErrorDetails: string;\r\n private privErrorCode: CancellationErrorCode;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {CancellationReason} reason - The cancellation reason.\r\n * @param {string} errorDetails - The error details, if provided.\r\n */\r\n protected constructor(reason: CancellationReason, errorDetails: string, errorCode: CancellationErrorCode) {\r\n this.privReason = reason;\r\n this.privErrorDetails = errorDetails;\r\n this.privErrorCode = errorCode;\r\n }\r\n\r\n /**\r\n * The reason the recognition was canceled.\r\n * @member CancellationDetailsBase.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {CancellationReason} Specifies the reason canceled.\r\n */\r\n public get reason(): CancellationReason {\r\n return this.privReason;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful recognition, provides details of the occurred error.\r\n * @member CancellationDetailsBase.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} A String that represents the error details.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n\r\n /**\r\n * The error code in case of an unsuccessful recognition.\r\n * Added in version 1.1.0.\r\n * @return An error code that represents the error reason.\r\n */\r\n public get ErrorCode(): CancellationErrorCode {\r\n return this.privErrorCode;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines error code in case that CancellationReason is Error.\r\n * Added in version 1.1.0.\r\n */\r\nexport enum CancellationErrorCode {\r\n /**\r\n * Indicates that no error occurred during speech recognition.\r\n */\r\n NoError,\r\n\r\n /**\r\n * Indicates an authentication error.\r\n */\r\n AuthenticationFailure,\r\n\r\n /**\r\n * Indicates that one or more recognition parameters are invalid.\r\n */\r\n BadRequestParameters,\r\n\r\n /**\r\n * Indicates that the number of parallel requests exceeded the number of allowed\r\n * concurrent transcriptions for the subscription.\r\n */\r\n TooManyRequests,\r\n\r\n /**\r\n * Indicates a connection error.\r\n */\r\n ConnectionFailure,\r\n\r\n /**\r\n * Indicates a time-out error when waiting for response from service.\r\n */\r\n ServiceTimeout,\r\n\r\n /**\r\n * Indicates that an error is returned by the service.\r\n */\r\n ServiceError,\r\n\r\n /**\r\n * Indicates an unexpected runtime error.\r\n */\r\n RuntimeError,\r\n\r\n /**\r\n * Indicates an quota overrun on existing key.\r\n */\r\n Forbidden,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationErrorCode,\r\n CancellationEventArgs,\r\n CancellationReason,\r\n RecognitionEventArgs\r\n} from \"./Exports\";\r\n\r\n/**\r\n * Defines content of a CancellationEvent.\r\n * @class CancellationEventArgsBase\r\n */\r\nexport class CancellationEventArgsBase extends RecognitionEventArgs implements CancellationEventArgs {\r\n private privReason: CancellationReason;\r\n private privErrorDetails: string;\r\n private privErrorCode: CancellationErrorCode;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {CancellationReason} reason - The cancellation reason.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(reason: CancellationReason, errorDetails: string,\r\n errorCode: CancellationErrorCode, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n\r\n this.privReason = reason;\r\n this.privErrorDetails = errorDetails;\r\n this.privErrorCode = errorCode;\r\n }\r\n\r\n /**\r\n * The reason the recognition was canceled.\r\n * @member CancellationEventArgsBase.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {CancellationReason} Specifies the reason canceled.\r\n */\r\n public get reason(): CancellationReason {\r\n return this.privReason;\r\n }\r\n\r\n /**\r\n * The error code in case of an unsuccessful operation.\r\n * @return An error code that represents the error reason.\r\n */\r\n public get errorCode(): CancellationErrorCode {\r\n return this.privErrorCode;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful operation, provides details of the occurred error.\r\n * @member CancellationEventArgsBase.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} A String that represents the error details.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the possible reasons a recognition result might be canceled.\r\n * @class CancellationReason\r\n */\r\nexport enum CancellationReason {\r\n /**\r\n * Indicates that an error occurred during speech recognition.\r\n * @member CancellationReason.Error\r\n */\r\n Error,\r\n\r\n /**\r\n * Indicates that the end of the audio stream was reached.\r\n * @member CancellationReason.EndOfStream\r\n */\r\n EndOfStream,\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\nimport {\r\n ServiceRecognizerBase,\r\n SynthesisAdapterBase,\r\n} from \"../common.speech/Exports\";\r\nimport {\r\n ConnectionEvent,\r\n ConnectionMessageReceivedEvent,\r\n ConnectionMessageSentEvent,\r\n IDetachable,\r\n marshalPromiseToCallbacks,\r\n ServiceEvent,\r\n} from \"../common/Exports\";\r\nimport {\r\n ConnectionMessageImpl\r\n} from \"./ConnectionMessage\";\r\nimport { Contracts } from \"./Contracts\";\r\nimport {\r\n ConnectionEventArgs,\r\n ConnectionMessageEventArgs,\r\n ConversationTranscriber,\r\n Recognizer,\r\n ServiceEventArgs,\r\n SpeechSynthesizer,\r\n} from \"./Exports\";\r\n\r\n/**\r\n * Connection is a proxy class for managing connection to the speech service of the specified Recognizer.\r\n * By default, a Recognizer autonomously manages connection to service when needed.\r\n * The Connection class provides additional methods for users to explicitly open or close a connection and\r\n * to subscribe to connection status changes.\r\n * The use of Connection is optional, and mainly for scenarios where fine tuning of application\r\n * behavior based on connection status is needed. Users can optionally call Open() to manually set up a connection\r\n * in advance before starting recognition on the Recognizer associated with this Connection.\r\n * If the Recognizer needs to connect or disconnect to service, it will\r\n * setup or shutdown the connection independently. In this case the Connection will be notified by change of connection\r\n * status via Connected/Disconnected events.\r\n * Added in version 1.2.1.\r\n */\r\nexport class Connection {\r\n private privInternalData: ServiceRecognizerBase | SynthesisAdapterBase;\r\n private privEventListener: IDetachable;\r\n private privServiceEventListener: IDetachable;\r\n\r\n /**\r\n * Gets the Connection instance from the specified recognizer.\r\n * @param recognizer The recognizer associated with the connection.\r\n * @return The Connection instance of the recognizer.\r\n */\r\n public static fromRecognizer(recognizer: Recognizer | ConversationTranscriber): Connection {\r\n const recoBase = recognizer.internalData as ServiceRecognizerBase;\r\n const ret: Connection = new Connection();\r\n\r\n ret.privInternalData = recoBase;\r\n ret.setupEvents();\r\n return ret;\r\n }\r\n\r\n /**\r\n * Gets the Connection instance from the specified synthesizer.\r\n * @param synthesizer The synthesizer associated with the connection.\r\n * @return The Connection instance of the synthesizer.\r\n */\r\n public static fromSynthesizer(synthesizer: SpeechSynthesizer): Connection {\r\n const synthBase: SynthesisAdapterBase = synthesizer.internalData as SynthesisAdapterBase;\r\n\r\n const ret: Connection = new Connection();\r\n\r\n ret.privInternalData = synthBase;\r\n ret.setupEvents();\r\n return ret;\r\n }\r\n\r\n /**\r\n * Starts to set up connection to the service.\r\n * Users can optionally call openConnection() to manually set up a connection in advance before starting recognition on the\r\n * Recognizer associated with this Connection. After starting recognition, calling Open() will have no effect\r\n *\r\n * Note: On return, the connection might not be ready yet. Please subscribe to the Connected event to\r\n * be notified when the connection is established.\r\n */\r\n public openConnection(cb?: () => void, err?: (error: string) => void): void {\r\n marshalPromiseToCallbacks(this.privInternalData.connect(), cb, err);\r\n }\r\n\r\n /**\r\n * Closes the connection the service.\r\n * Users can optionally call closeConnection() to manually shutdown the connection of the associated Recognizer.\r\n *\r\n * If closeConnection() is called during recognition, recognition will fail and cancel with an error.\r\n */\r\n public closeConnection(cb?: () => void, err?: (error: string) => void): void {\r\n if (this.privInternalData instanceof SynthesisAdapterBase) {\r\n throw new Error(\"Disconnecting a synthesizer's connection is currently not supported\");\r\n } else {\r\n marshalPromiseToCallbacks(this.privInternalData.disconnect(), cb, err);\r\n }\r\n }\r\n\r\n /**\r\n * Appends a parameter in a message to service.\r\n * Added in version 1.12.1.\r\n * @param path The path of the network message.\r\n * @param propertyName Name of the property\r\n * @param propertyValue Value of the property. This is a json string.\r\n */\r\n public setMessageProperty(path: string, propertyName: string, propertyValue: string | object): void {\r\n Contracts.throwIfNullOrWhitespace(propertyName, \"propertyName\");\r\n\r\n if (this.privInternalData instanceof ServiceRecognizerBase) {\r\n if (path.toLowerCase() !== \"speech.context\") {\r\n throw new Error(\"Only speech.context message property sets are currently supported for recognizer\");\r\n } else {\r\n this.privInternalData.speechContext.setSection(propertyName, propertyValue);\r\n }\r\n } else if (this.privInternalData instanceof SynthesisAdapterBase) {\r\n if (path.toLowerCase() !== \"synthesis.context\") {\r\n throw new Error(\"Only synthesis.context message property sets are currently supported for synthesizer\");\r\n } else {\r\n this.privInternalData.synthesisContext.setSection(propertyName, propertyValue);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Sends a message to the speech service.\r\n * Added in version 1.13.0.\r\n * @param path The WebSocket path of the message\r\n * @param payload The payload of the message. This is a json string or a ArrayBuffer.\r\n * @param success A callback to indicate success.\r\n * @param error A callback to indicate an error.\r\n */\r\n public sendMessageAsync(path: string, payload: string | ArrayBuffer, success?: () => void, error?: (error: string) => void): void {\r\n marshalPromiseToCallbacks(this.privInternalData.sendNetworkMessage(path, payload), success, error);\r\n }\r\n\r\n /**\r\n * Any message from service that is not being processed by any other top level recognizers.\r\n *\r\n * Will be removed in 2.0.\r\n */\r\n public receivedServiceMessage: (args: ServiceEventArgs) => void;\r\n\r\n /**\r\n * Any message received from the Speech Service.\r\n */\r\n public messageReceived: (args: ConnectionMessageEventArgs) => void;\r\n\r\n /**\r\n * Any message sent to the Speech Service.\r\n */\r\n public messageSent: (args: ConnectionMessageEventArgs) => void;\r\n\r\n /**\r\n * The Connected event to indicate that the recognizer is connected to service.\r\n */\r\n public connected: (args: ConnectionEventArgs) => void;\r\n\r\n /**\r\n * The Disconnected event to indicate that the recognizer is disconnected from service.\r\n */\r\n public disconnected: (args: ConnectionEventArgs) => void;\r\n\r\n /**\r\n * Dispose of associated resources.\r\n */\r\n public close(): void {\r\n /* eslint-disable no-empty */\r\n }\r\n\r\n private setupEvents(): void {\r\n this.privEventListener = this.privInternalData.connectionEvents.attach((connectionEvent: ConnectionEvent): void => {\r\n if (connectionEvent.name === \"ConnectionEstablishedEvent\") {\r\n if (!!this.connected) {\r\n this.connected(new ConnectionEventArgs(connectionEvent.connectionId));\r\n }\r\n } else if (connectionEvent.name === \"ConnectionClosedEvent\") {\r\n if (!!this.disconnected) {\r\n this.disconnected(new ConnectionEventArgs(connectionEvent.connectionId));\r\n }\r\n } else if (connectionEvent.name === \"ConnectionMessageSentEvent\") {\r\n if (!!this.messageSent) {\r\n this.messageSent(new ConnectionMessageEventArgs(new ConnectionMessageImpl((connectionEvent as ConnectionMessageSentEvent).message)));\r\n }\r\n } else if (connectionEvent.name === \"ConnectionMessageReceivedEvent\") {\r\n if (!!this.messageReceived) {\r\n this.messageReceived(new ConnectionMessageEventArgs(new ConnectionMessageImpl((connectionEvent as ConnectionMessageReceivedEvent).message)));\r\n }\r\n }\r\n });\r\n\r\n this.privServiceEventListener = this.privInternalData.serviceEvents.attach((e: ServiceEvent): void => {\r\n if (!!this.receivedServiceMessage) {\r\n this.receivedServiceMessage(new ServiceEventArgs(e.jsonString, e.name));\r\n }\r\n });\r\n }\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\nimport { SessionEventArgs } from \"./Exports\";\r\n\r\n/**\r\n * Defines payload for connection events like Connected/Disconnected.\r\n * Added in version 1.2.0\r\n */\r\nexport class ConnectionEventArgs extends SessionEventArgs {\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nimport { HeaderNames } from \"../common.speech/HeaderNames\";\r\nimport {\r\n ConnectionMessage as IntConnectionMessage,\r\n MessageType\r\n} from \"../common/Exports\";\r\nimport {\r\n PropertyCollection\r\n} from \"./PropertyCollection\";\r\nimport { PropertyId } from \"./PropertyId\";\r\n\r\n/**\r\n * ConnectionMessage represents implementation specific messages sent to and received from\r\n * the speech service. These messages are provided for debugging purposes and should not\r\n * be used for production use cases with the Azure Cognitive Services Speech Service.\r\n * Messages sent to and received from the Speech Service are subject to change without\r\n * notice. This includes message contents, headers, payloads, ordering, etc.\r\n * Added in version 1.11.0.\r\n */\r\nexport abstract class ConnectionMessage {\r\n /**\r\n * The message path.\r\n */\r\n public abstract get path(): string;\r\n\r\n /**\r\n * Checks to see if the ConnectionMessage is a text message.\r\n * See also IsBinaryMessage().\r\n */\r\n public abstract get isTextMessage(): boolean;\r\n\r\n /**\r\n * Checks to see if the ConnectionMessage is a binary message.\r\n * See also GetBinaryMessage().\r\n */\r\n public abstract get isBinaryMessage(): boolean;\r\n\r\n /**\r\n * Gets the text message payload. Typically the text message content-type is\r\n * application/json. To determine other content-types use\r\n * Properties.GetProperty(\"Content-Type\").\r\n */\r\n public abstract get TextMessage(): string;\r\n\r\n /**\r\n * Gets the binary message payload.\r\n */\r\n public abstract get binaryMessage(): ArrayBuffer;\r\n\r\n /**\r\n * A collection of properties and their values defined for this .\r\n * Message headers can be accessed via this collection (e.g. \"Content-Type\").\r\n */\r\n public abstract get properties(): PropertyCollection;\r\n\r\n /**\r\n * Returns a string that represents the connection message.\r\n */\r\n public abstract toString(): string;\r\n}\r\n\r\nexport class ConnectionMessageImpl {\r\n\r\n private privConnectionMessage: IntConnectionMessage;\r\n private privProperties: PropertyCollection;\r\n\r\n public constructor(message: IntConnectionMessage) {\r\n this.privConnectionMessage = message;\r\n this.privProperties = new PropertyCollection();\r\n if (!!this.privConnectionMessage.headers[HeaderNames.ConnectionId]) {\r\n this.privProperties.setProperty(PropertyId.Speech_SessionId, this.privConnectionMessage.headers[HeaderNames.ConnectionId]);\r\n }\r\n\r\n Object.keys(this.privConnectionMessage.headers).forEach((header: string): void => {\r\n this.privProperties.setProperty(header, this.privConnectionMessage.headers[header]);\r\n });\r\n }\r\n\r\n /**\r\n * The message path.\r\n */\r\n public get path(): string {\r\n return this.privConnectionMessage.headers[Object.keys(this.privConnectionMessage.headers).find((key: string): boolean => key.toLowerCase() === \"path\".toLowerCase())];\r\n }\r\n\r\n /**\r\n * Checks to see if the ConnectionMessage is a text message.\r\n * See also IsBinaryMessage().\r\n */\r\n public get isTextMessage(): boolean {\r\n return this.privConnectionMessage.messageType === MessageType.Text;\r\n }\r\n\r\n /**\r\n * Checks to see if the ConnectionMessage is a binary message.\r\n * See also GetBinaryMessage().\r\n */\r\n public get isBinaryMessage(): boolean {\r\n return this.privConnectionMessage.messageType === MessageType.Binary;\r\n }\r\n\r\n /**\r\n * Gets the text message payload. Typically the text message content-type is\r\n * application/json. To determine other content-types use\r\n * Properties.GetProperty(\"Content-Type\").\r\n */\r\n public get TextMessage(): string {\r\n return this.privConnectionMessage.textBody;\r\n }\r\n\r\n /**\r\n * Gets the binary message payload.\r\n */\r\n public get binaryMessage(): ArrayBuffer {\r\n return this.privConnectionMessage.binaryBody;\r\n }\r\n\r\n /**\r\n * A collection of properties and their values defined for this .\r\n * Message headers can be accessed via this collection (e.g. \"Content-Type\").\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Returns a string that represents the connection message.\r\n */\r\n public toString(): string {\r\n return \"\";\r\n }\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\nimport {\r\n ConnectionMessage\r\n} from \"./Exports\";\r\n\r\nexport class ConnectionMessageEventArgs {\r\n\r\n private privConnectionMessage: ConnectionMessage;\r\n\r\n public constructor(message: ConnectionMessage) {\r\n this.privConnectionMessage = message;\r\n }\r\n\r\n /**\r\n * Gets the associated with this .\r\n */\r\n public get message(): ConnectionMessage {\r\n return this.privConnectionMessage;\r\n }\r\n\r\n /**\r\n * Returns a string that represents the connection message event.\r\n */\r\n public toString(): string {\r\n return \"Message: \" + this.privConnectionMessage.toString();\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * @class Contracts\r\n * @private\r\n */\r\nexport class Contracts {\r\n public static throwIfNullOrUndefined(param: any, name: string): void {\r\n if (param === undefined || param === null) {\r\n throw new Error(\"throwIfNullOrUndefined:\" + name);\r\n }\r\n }\r\n\r\n public static throwIfNull(param: any, name: string): void {\r\n if (param === null) {\r\n throw new Error(\"throwIfNull:\" + name);\r\n }\r\n }\r\n\r\n public static throwIfNullOrWhitespace(param: string, name: string): void {\r\n Contracts.throwIfNullOrUndefined(param, name);\r\n\r\n if ((\"\" + param).trim().length < 1) {\r\n throw new Error(\"throwIfNullOrWhitespace:\" + name);\r\n }\r\n }\r\n\r\n public static throwIfNullOrTooLong(param: string, name: string, maxLength: number): void {\r\n Contracts.throwIfNullOrUndefined(param, name);\r\n\r\n if ((\"\" + param).length > maxLength) {\r\n throw new Error(\"throwIfNullOrTooLong:\" + name + \" (more than \" + maxLength.toString() + \" characters)\");\r\n }\r\n }\r\n\r\n public static throwIfNullOrTooShort(param: string, name: string, minLength: number): void {\r\n Contracts.throwIfNullOrUndefined(param, name);\r\n\r\n if ((\"\" + param).length < minLength) {\r\n throw new Error(\"throwIfNullOrTooShort:\" + name + \" (less than \" + minLength.toString() + \" characters)\");\r\n }\r\n }\r\n\r\n public static throwIfDisposed(isDisposed: boolean): void {\r\n if (isDisposed) {\r\n throw new Error(\"the object is already disposed\");\r\n }\r\n }\r\n\r\n public static throwIfArrayEmptyOrWhitespace(array: string[], name: string): void {\r\n Contracts.throwIfNullOrUndefined(array, name);\r\n\r\n if (array.length === 0) {\r\n throw new Error(\"throwIfArrayEmptyOrWhitespace:\" + name);\r\n }\r\n\r\n for (const item of array) {\r\n Contracts.throwIfNullOrWhitespace(item, name);\r\n }\r\n }\r\n\r\n public static throwIfFileDoesNotExist(param: string, name: string): void {\r\n Contracts.throwIfNullOrWhitespace(param, name);\r\n\r\n // TODO check for file existence.\r\n }\r\n\r\n public static throwIfNotUndefined(param: any, name: string): void {\r\n if (param !== undefined) {\r\n throw new Error(\"throwIfNotUndefined:\" + name);\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationEventArgsBase,\r\n} from \"./CancellationEventArgsBase\";\r\n\r\n/**\r\n * Defines content of a RecognitionErrorEvent.\r\n * @class ConversationTranscriptionCanceledEventArgs\r\n */\r\nexport class ConversationTranscriptionCanceledEventArgs extends CancellationEventArgsBase {\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts\";\r\nimport { DialogServiceConfig, DialogServiceConfigImpl } from \"./DialogServiceConfig\";\r\nimport { PropertyId } from \"./Exports\";\r\n\r\n/**\r\n * Class that defines configurations for the dialog service connector object for using a CustomCommands backend.\r\n * @class CustomCommandsConfig\r\n */\r\nexport class CustomCommandsConfig extends DialogServiceConfigImpl {\r\n\r\n /**\r\n * Creates an instance of CustomCommandsConfig.\r\n */\r\n public constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Creates an instance of the bot framework config with the specified subscription and region.\r\n * @member CustomCommandsConfig.fromSubscription\r\n * @function\r\n * @public\r\n * @param applicationId Speech Commands application id.\r\n * @param subscription Subscription key associated with the bot\r\n * @param region The region name (see the region page).\r\n * @returns {CustomCommandsConfig} A new bot framework config.\r\n */\r\n public static fromSubscription(applicationId: string, subscription: string, region: string): CustomCommandsConfig {\r\n Contracts.throwIfNullOrWhitespace(applicationId, \"applicationId\");\r\n Contracts.throwIfNullOrWhitespace(subscription, \"subscription\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const customCommandsConfig: CustomCommandsConfig = new DialogServiceConfigImpl();\r\n customCommandsConfig.setProperty(PropertyId.Conversation_DialogType, DialogServiceConfig.DialogTypes.CustomCommands);\r\n customCommandsConfig.setProperty(PropertyId.Conversation_ApplicationId, applicationId);\r\n customCommandsConfig.setProperty(PropertyId.SpeechServiceConnection_Key, subscription);\r\n customCommandsConfig.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n return customCommandsConfig;\r\n }\r\n\r\n /**\r\n * Creates an instance of the bot framework config with the specified Speech Commands application id, authorization token and region.\r\n * Note: The caller needs to ensure that the authorization token is valid. Before the authorization token\r\n * expires, the caller needs to refresh it by calling this setter with a new valid token.\r\n * As configuration values are copied when creating a new recognizer, the new token value will not apply to recognizers that have already been created.\r\n * For recognizers that have been created before, you need to set authorization token of the corresponding recognizer\r\n * to refresh the token. Otherwise, the recognizers will encounter errors during recognition.\r\n * @member CustomCommandsConfig.fromAuthorizationToken\r\n * @function\r\n * @public\r\n * @param applicationId Speech Commands application id.\r\n * @param authorizationToken The authorization token associated with the application.\r\n * @param region The region name (see the region page).\r\n * @returns {CustomCommandsConfig} A new speech commands config.\r\n */\r\n public static fromAuthorizationToken(applicationId: string, authorizationToken: string, region: string): CustomCommandsConfig {\r\n Contracts.throwIfNullOrWhitespace(applicationId, \"applicationId\");\r\n Contracts.throwIfNullOrWhitespace(authorizationToken, \"authorizationToken\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const customCommandsConfig: CustomCommandsConfig = new DialogServiceConfigImpl();\r\n customCommandsConfig.setProperty(PropertyId.Conversation_DialogType, DialogServiceConfig.DialogTypes.CustomCommands);\r\n customCommandsConfig.setProperty(PropertyId.Conversation_ApplicationId, applicationId);\r\n customCommandsConfig.setProperty(PropertyId.SpeechServiceAuthorization_Token, authorizationToken);\r\n customCommandsConfig.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n return customCommandsConfig;\r\n }\r\n\r\n /**\r\n * Sets the corresponding backend application identifier.\r\n * @member CustomCommandsConfig.prototype.Conversation_ApplicationId\r\n * @function\r\n * @public\r\n * @param {string} value - The application identifier to set.\r\n */\r\n public set applicationId(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n this.setProperty(PropertyId.Conversation_ApplicationId, value);\r\n }\r\n\r\n /**\r\n * Gets the corresponding backend application identifier.\r\n * @member CustomCommandsConfig.prototype.Conversation_ApplicationId\r\n * @function\r\n * @public\r\n * @param {string} value - The application identifier to get.\r\n */\r\n public get applicationId(): string {\r\n return this.getProperty(PropertyId.Conversation_ApplicationId);\r\n }\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\nimport { ConsoleLoggingListener } from \"../common.browser/Exports\";\r\nimport { Events } from \"../common/Exports\";\r\nimport { LogLevel } from \"./LogLevel\";\r\n\r\n/**\r\n * Defines diagnostics API for managing console output\r\n * Added in version 1.21.0\r\n */\r\nexport class Diagnostics {\r\n private static privListener: ConsoleLoggingListener = undefined;\r\n\r\n public static SetLoggingLevel(logLevel: LogLevel): void {\r\n this.privListener = new ConsoleLoggingListener(logLevel);\r\n Events.instance.attachConsoleListener(this.privListener);\r\n }\r\n\r\n public static StartConsoleOutput(): void {\r\n if (!!this.privListener) {\r\n this.privListener.enableConsoleOutput = true;\r\n }\r\n }\r\n\r\n public static StopConsoleOutput(): void {\r\n if (!!this.privListener) {\r\n this.privListener.enableConsoleOutput = false;\r\n }\r\n }\r\n\r\n public static SetLogOutputPath(path: string): void {\r\n if (typeof window === \"undefined\") {\r\n if (!!this.privListener) {\r\n this.privListener.logPath = path;\r\n }\r\n } else {\r\n throw new Error(\"File system logging not available in browser.\");\r\n }\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { Contracts } from \"./Contracts\";\r\nimport { PropertyCollection, PropertyId, ServicePropertyChannel, SpeechConfigImpl } from \"./Exports\";\r\nimport { OutputFormat } from \"./OutputFormat\";\r\n\r\n/**\r\n * Class that defines base configurations for dialog service connector\r\n * @class DialogServiceConfig\r\n */\r\nexport abstract class DialogServiceConfig {\r\n\r\n /**\r\n * Creates an instance of DialogService config.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Sets an arbitrary property.\r\n * @member DialogServiceConfig.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property to set.\r\n * @param {string} value - The new value of the property.\r\n */\r\n public abstract setProperty(name: string | PropertyId, value: string): void;\r\n\r\n /**\r\n * Returns the current value of an arbitrary property.\r\n * @member DialogServiceConfig.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property to query.\r\n * @param {string} def - The value to return in case the property is not known.\r\n * @returns {string} The current value, or provided default, of the given property.\r\n */\r\n public abstract getProperty(name: string | PropertyId, def?: string): string;\r\n\r\n /**\r\n * @member DialogServiceConfig.prototype.setServiceProperty\r\n * @function\r\n * @public\r\n * @param {name} The name of the property.\r\n * @param {value} Value to set.\r\n * @param {channel} The channel used to pass the specified property to service.\r\n * @summary Sets a property value that will be passed to service using the specified channel.\r\n */\r\n public abstract setServiceProperty(name: string, value: string, channel: ServicePropertyChannel): void;\r\n\r\n /**\r\n * Sets the proxy configuration.\r\n * Only relevant in Node.js environments.\r\n * Added in version 1.4.0.\r\n * @param proxyHostName The host name of the proxy server.\r\n * @param proxyPort The port number of the proxy server.\r\n */\r\n public abstract setProxy(proxyHostName: string, proxyPort: number): void;\r\n\r\n /**\r\n * Sets the proxy configuration.\r\n * Only relevant in Node.js environments.\r\n * Added in version 1.4.0.\r\n * @param proxyHostName The host name of the proxy server, without the protocol scheme (http://)\r\n * @param porxyPort The port number of the proxy server.\r\n * @param proxyUserName The user name of the proxy server.\r\n * @param proxyPassword The password of the proxy server.\r\n */\r\n public abstract setProxy(proxyHostName: string, proxyPort: number, proxyUserName: string, proxyPassword: string): void;\r\n\r\n /**\r\n * Returns the configured language.\r\n * @member DialogServiceConfig.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n */\r\n public abstract get speechRecognitionLanguage(): string;\r\n\r\n /**\r\n * Gets/Sets the input language.\r\n * @member DialogServiceConfig.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The language to use for recognition.\r\n */\r\n public abstract set speechRecognitionLanguage(value: string);\r\n\r\n /**\r\n * Sets the corresponding backend application identifier.\r\n * @member DialogServiceConfig.prototype.Conversation_ApplicationId\r\n * @function\r\n * @public\r\n * @param {string} value - The application identifier to set.\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n public set applicationId(value: string) { }\r\n\r\n public static get DialogTypes(): { BotFramework: string; CustomCommands: string } {\r\n return {\r\n BotFramework: \"bot_framework\",\r\n CustomCommands: \"custom_commands\"\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * Dialog Service configuration.\r\n * @class DialogServiceConfigImpl\r\n */\r\nexport class DialogServiceConfigImpl extends DialogServiceConfig {\r\n\r\n private privSpeechConfig: SpeechConfigImpl;\r\n\r\n /**\r\n * Creates an instance of dialogService config.\r\n */\r\n public constructor() {\r\n super();\r\n this.privSpeechConfig = new SpeechConfigImpl();\r\n }\r\n\r\n /**\r\n * Provides access to custom properties.\r\n * @member DialogServiceConfigImpl.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The properties.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privSpeechConfig.properties;\r\n }\r\n\r\n /**\r\n * Gets the speech recognition language.\r\n * @member DialogServiceConfigImpl.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n return this.privSpeechConfig.speechRecognitionLanguage;\r\n }\r\n\r\n /**\r\n * Sets the speech recognition language.\r\n * @member DialogServiceConfigImpl.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The language to set.\r\n */\r\n public set speechRecognitionLanguage(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n this.privSpeechConfig.speechRecognitionLanguage = value;\r\n }\r\n\r\n public get outputFormat(): OutputFormat {\r\n return this.privSpeechConfig.outputFormat;\r\n }\r\n\r\n public set outputFormat(value: OutputFormat) {\r\n this.privSpeechConfig.outputFormat = value;\r\n }\r\n\r\n /**\r\n * Sets a named property as value\r\n * @member DialogServiceConfigImpl.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {PropertyId | string} name - The property to set.\r\n * @param {string} value - The value.\r\n */\r\n public setProperty(name: string | PropertyId, value: string): void {\r\n this.privSpeechConfig.setProperty(name, value);\r\n }\r\n\r\n /**\r\n * Sets a named property as value\r\n * @member DialogServiceConfigImpl.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {PropertyId | string} name - The property to get.\r\n * @param {string} def - The default value to return in case the property is not known.\r\n * @returns {string} The current value, or provided default, of the given property.\r\n */\r\n public getProperty(name: string | PropertyId, def?: string): string {\r\n void def;\r\n return this.privSpeechConfig.getProperty(name);\r\n }\r\n\r\n /**\r\n * Sets the proxy configuration.\r\n * Only relevant in Node.js environments.\r\n * Added in version 1.4.0.\r\n * @param proxyHostName The host name of the proxy server, without the protocol scheme (http://)\r\n * @param proxyPort The port number of the proxy server.\r\n * @param proxyUserName The user name of the proxy server.\r\n * @param proxyPassword The password of the proxy server.\r\n */\r\n public setProxy(proxyHostName: string, proxyPort: number, proxyUserName?: string, proxyPassword?: string): void {\r\n this.setProperty(PropertyId.SpeechServiceConnection_ProxyHostName, proxyHostName);\r\n this.setProperty(PropertyId.SpeechServiceConnection_ProxyPort, `${proxyPort}`);\r\n if (proxyUserName) {\r\n this.setProperty(PropertyId.SpeechServiceConnection_ProxyUserName, proxyUserName);\r\n }\r\n if (proxyPassword) {\r\n this.setProperty(PropertyId.SpeechServiceConnection_ProxyPassword, proxyPassword);\r\n }\r\n }\r\n\r\n public setServiceProperty(name: string, value: string, channel: ServicePropertyChannel): void {\r\n void channel;\r\n this.privSpeechConfig.setServiceProperty(name, value);\r\n }\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member DialogServiceConfigImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n return;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { DialogConnectionFactory } from \"../common.speech/DialogConnectorFactory\";\r\nimport {\r\n DialogServiceAdapter,\r\n IAgentConfig,\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig\r\n} from \"../common.speech/Exports\";\r\nimport {\r\n Deferred,\r\n marshalPromiseToCallbacks\r\n} from \"../common/Exports\";\r\nimport { ActivityReceivedEventArgs } from \"./ActivityReceivedEventArgs\";\r\nimport { AudioConfigImpl } from \"./Audio/AudioConfig\";\r\nimport { Contracts } from \"./Contracts\";\r\nimport { DialogServiceConfig, DialogServiceConfigImpl } from \"./DialogServiceConfig\";\r\nimport {\r\n AudioConfig,\r\n PropertyCollection,\r\n Recognizer,\r\n SpeechRecognitionCanceledEventArgs,\r\n SpeechRecognitionEventArgs,\r\n SpeechRecognitionResult\r\n} from \"./Exports\";\r\nimport { PropertyId } from \"./PropertyId\";\r\nimport { TurnStatusReceivedEventArgs } from \"./TurnStatusReceivedEventArgs\";\r\n\r\n/**\r\n * Dialog Service Connector\r\n * @class DialogServiceConnector\r\n */\r\nexport class DialogServiceConnector extends Recognizer {\r\n private privIsDisposed: boolean;\r\n private isTurnComplete: boolean;\r\n\r\n /**\r\n * Initializes an instance of the DialogServiceConnector.\r\n * @constructor\r\n * @param {DialogServiceConfig} dialogConfig - Set of properties to configure this recognizer.\r\n * @param {AudioConfig} audioConfig - An optional audio config associated with the recognizer\r\n */\r\n public constructor(dialogConfig: DialogServiceConfig, audioConfig?: AudioConfig) {\r\n const dialogServiceConfigImpl = dialogConfig as DialogServiceConfigImpl;\r\n Contracts.throwIfNull(dialogConfig, \"dialogConfig\");\r\n\r\n super(audioConfig, dialogServiceConfigImpl.properties, new DialogConnectionFactory());\r\n\r\n this.isTurnComplete = true;\r\n this.privIsDisposed = false;\r\n this.privProperties = dialogServiceConfigImpl.properties.clone();\r\n\r\n const agentConfig = this.buildAgentConfig();\r\n this.privReco.agentConfig.set(agentConfig);\r\n }\r\n\r\n /**\r\n * The event recognizing signals that an intermediate recognition result is received.\r\n * @member DialogServiceConnector.prototype.recognizing\r\n * @function\r\n * @public\r\n */\r\n public recognizing: (sender: DialogServiceConnector, event: SpeechRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event recognized signals that a final recognition result is received.\r\n * @member DialogServiceConfig.prototype.recognized\r\n * @function\r\n * @public\r\n */\r\n public recognized: (sender: DialogServiceConnector, event: SpeechRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during recognition.\r\n * @member DialogServiceConnector.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: DialogServiceConnector, event: SpeechRecognitionCanceledEventArgs) => void;\r\n\r\n /**\r\n * The event activityReceived signals that an activity has been received.\r\n * @member DialogServiceConnector.prototype.activityReceived\r\n * @function\r\n * @public\r\n */\r\n public activityReceived: (sender: DialogServiceConnector, event: ActivityReceivedEventArgs) => void;\r\n\r\n /**\r\n * The event turnStatusReceived signals that a turn status message has been received. These messages are\r\n * associated with both an interaction and a conversation. They are used to notify the client in the event\r\n * of an interaction failure with the dialog backend, e.g. in the event of a network issue, timeout, crash,\r\n * or other problem.\r\n * @member DialogServiceConnector.prototype.turnStatusReceived\r\n * @function\r\n * @public\r\n */\r\n public turnStatusReceived: (sender: DialogServiceConnector, event: TurnStatusReceivedEventArgs) => void;\r\n\r\n /**\r\n * Starts a connection to the service.\r\n * Users can optionally call connect() to manually set up a connection in advance, before starting interactions.\r\n *\r\n * Note: On return, the connection might not be ready yet. Please subscribe to the Connected event to\r\n * be notified when the connection is established.\r\n * @member DialogServiceConnector.prototype.connect\r\n * @function\r\n * @public\r\n */\r\n public connect(cb?: () => void, err?: (error: string) => void): void {\r\n marshalPromiseToCallbacks(this.privReco.connect(), cb, err);\r\n }\r\n\r\n /**\r\n * Closes the connection the service.\r\n * Users can optionally call disconnect() to manually shutdown the connection of the associated DialogServiceConnector.\r\n *\r\n * If disconnect() is called during a recognition, recognition will fail and cancel with an error.\r\n */\r\n public disconnect(cb?: () => void, err?: (error: string) => void): void {\r\n marshalPromiseToCallbacks(this.privReco.disconnect(), cb, err);\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member DialogServiceConnector.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Sets the authorization token used to communicate with the service.\r\n * @member DialogServiceConnector.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this DialogServiceConnector.\r\n * @member DialogServiceConnector.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this DialogServiceConnector.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /** Gets the template for the activity generated by service from speech.\r\n * Properties from the template will be stamped on the generated activity.\r\n * It can be empty\r\n */\r\n public get speechActivityTemplate(): string {\r\n return this.properties.getProperty(PropertyId.Conversation_Speech_Activity_Template);\r\n }\r\n\r\n /** Sets the template for the activity generated by service from speech.\r\n * Properties from the template will be stamped on the generated activity.\r\n * It can be null or empty.\r\n * Note: it has to be a valid Json object.\r\n */\r\n public set speechActivityTemplate(speechActivityTemplate: string) {\r\n this.properties.setProperty(PropertyId.Conversation_Speech_Activity_Template, speechActivityTemplate);\r\n }\r\n\r\n /**\r\n * Starts recognition and stops after the first utterance is recognized.\r\n * @member DialogServiceConnector.prototype.listenOnceAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the result when the reco has completed.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public listenOnceAsync(cb?: (e: SpeechRecognitionResult) => void, err?: (e: string) => void): void {\r\n if (this.isTurnComplete) {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n const callbackHolder = async (): Promise => {\r\n await this.privReco.connect();\r\n await this.implRecognizerStop();\r\n this.isTurnComplete = false;\r\n\r\n const ret: Deferred = new Deferred();\r\n await this.privReco.recognize(RecognitionMode.Conversation, ret.resolve, ret.reject);\r\n\r\n const e: SpeechRecognitionResult = await ret.promise;\r\n await this.implRecognizerStop();\r\n\r\n return e;\r\n };\r\n\r\n const retPromise: Promise = callbackHolder();\r\n\r\n retPromise.catch((): void => {\r\n // Destroy the recognizer.\r\n // We've done all we can here.\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n this.dispose(true).catch((): void => { });\r\n });\r\n\r\n marshalPromiseToCallbacks(retPromise.finally((): void => {\r\n this.isTurnComplete = true;\r\n }), cb, err);\r\n }\r\n }\r\n\r\n public sendActivityAsync(activity: string, cb?: () => void, errCb?: (error: string) => void): void {\r\n marshalPromiseToCallbacks((this.privReco as DialogServiceAdapter).sendMessage(activity), cb, errCb);\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member DialogServiceConnector.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, err?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n\r\n marshalPromiseToCallbacks(this.dispose(true), cb, err);\r\n }\r\n\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privIsDisposed) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privIsDisposed = true;\r\n await this.implRecognizerStop();\r\n await super.dispose(disposing);\r\n }\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n\r\n const audioSource: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n\r\n return new DialogServiceAdapter(authentication, connectionFactory, audioSource, recognizerConfig, this);\r\n }\r\n\r\n private buildAgentConfig(): IAgentConfig {\r\n const communicationType = this.properties.getProperty(\"Conversation_Communication_Type\", \"Default\");\r\n\r\n return {\r\n botInfo: {\r\n commType: communicationType,\r\n commandsCulture: undefined,\r\n connectionId: this.properties.getProperty(PropertyId.Conversation_Agent_Connection_Id),\r\n conversationId: this.properties.getProperty(PropertyId.Conversation_Conversation_Id, undefined),\r\n fromId: this.properties.getProperty(PropertyId.Conversation_From_Id, undefined),\r\n ttsAudioFormat: this.properties.getProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, undefined)\r\n },\r\n version: 0.2\r\n };\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nexport { AudioConfig } from \"./Audio/AudioConfig\";\r\nexport { AudioStreamFormat, AudioFormatTag } from \"./Audio/AudioStreamFormat\";\r\nexport { AudioInputStream, PullAudioInputStream, PushAudioInputStream } from \"./Audio/AudioInputStream\";\r\nexport { AudioOutputStream, PullAudioOutputStream, PushAudioOutputStream} from \"./Audio/AudioOutputStream\";\r\nexport { CancellationReason } from \"./CancellationReason\";\r\nexport { PullAudioInputStreamCallback } from \"./Audio/PullAudioInputStreamCallback\";\r\nexport { PushAudioOutputStreamCallback } from \"./Audio/PushAudioOutputStreamCallback\";\r\nexport { KeywordRecognitionModel } from \"./KeywordRecognitionModel\";\r\nexport { SessionEventArgs } from \"./SessionEventArgs\";\r\nexport { RecognitionEventArgs } from \"./RecognitionEventArgs\";\r\nexport { OutputFormat } from \"./OutputFormat\";\r\nexport { IntentRecognitionEventArgs } from \"./IntentRecognitionEventArgs\";\r\nexport { RecognitionResult } from \"./RecognitionResult\";\r\nexport { SpeechRecognitionResult } from \"./SpeechRecognitionResult\";\r\nexport { IntentRecognitionResult } from \"./IntentRecognitionResult\";\r\nexport { LanguageUnderstandingModel } from \"./LanguageUnderstandingModel\";\r\nexport { SpeechRecognitionEventArgs, ConversationTranscriptionEventArgs } from \"./SpeechRecognitionEventArgs\";\r\nexport { SpeechRecognitionCanceledEventArgs } from \"./SpeechRecognitionCanceledEventArgs\";\r\nexport { TranslationRecognitionEventArgs } from \"./TranslationRecognitionEventArgs\";\r\nexport { TranslationSynthesisEventArgs } from \"./TranslationSynthesisEventArgs\";\r\nexport { TranslationRecognitionResult } from \"./TranslationRecognitionResult\";\r\nexport { TranslationSynthesisResult } from \"./TranslationSynthesisResult\";\r\nexport { ResultReason } from \"./ResultReason\";\r\nexport { SpeechConfig, SpeechConfigImpl } from \"./SpeechConfig\";\r\nexport { SpeechTranslationConfig, SpeechTranslationConfigImpl } from \"./SpeechTranslationConfig\";\r\nexport { PropertyCollection } from \"./PropertyCollection\";\r\nexport { PropertyId } from \"./PropertyId\";\r\nexport { Recognizer } from \"./Recognizer\";\r\nexport { SpeechRecognizer } from \"./SpeechRecognizer\";\r\nexport { IntentRecognizer } from \"./IntentRecognizer\";\r\nexport { VoiceProfileType } from \"./VoiceProfileType\";\r\nexport { TranslationRecognizer } from \"./TranslationRecognizer\";\r\nexport { Translations } from \"./Translations\";\r\nexport { NoMatchReason } from \"./NoMatchReason\";\r\nexport { NoMatchDetails } from \"./NoMatchDetails\";\r\nexport { TranslationRecognitionCanceledEventArgs } from \"./TranslationRecognitionCanceledEventArgs\";\r\nexport { IntentRecognitionCanceledEventArgs } from \"./IntentRecognitionCanceledEventArgs\";\r\nexport { CancellationDetailsBase } from \"./CancellationDetailsBase\";\r\nexport { CancellationDetails } from \"./CancellationDetails\";\r\nexport { CancellationErrorCode } from \"./CancellationErrorCodes\";\r\nexport { ConnectionEventArgs } from \"./ConnectionEventArgs\";\r\nexport { ServiceEventArgs } from \"./ServiceEventArgs\";\r\nexport { Connection } from \"./Connection\";\r\nexport { PhraseListGrammar } from \"./PhraseListGrammar\";\r\nexport { DialogServiceConfig } from \"./DialogServiceConfig\";\r\nexport { BotFrameworkConfig } from \"./BotFrameworkConfig\";\r\nexport { CustomCommandsConfig } from \"./CustomCommandsConfig\";\r\nexport { DialogServiceConnector } from \"./DialogServiceConnector\";\r\nexport { ActivityReceivedEventArgs } from \"./ActivityReceivedEventArgs\";\r\nexport { TurnStatusReceivedEventArgs } from \"./TurnStatusReceivedEventArgs\";\r\nexport { ServicePropertyChannel } from \"./ServicePropertyChannel\";\r\nexport { ProfanityOption } from \"./ProfanityOption\";\r\nexport { BaseAudioPlayer } from \"./Audio/BaseAudioPlayer\";\r\nexport { ConnectionMessageEventArgs } from \"./ConnectionMessageEventArgs\";\r\nexport { ConnectionMessage } from \"./ConnectionMessage\";\r\nexport { VoiceProfile } from \"./VoiceProfile\";\r\nexport { VoiceProfileEnrollmentResult, VoiceProfileEnrollmentCancellationDetails } from \"./VoiceProfileEnrollmentResult\";\r\nexport { VoiceProfileResult, VoiceProfileCancellationDetails } from \"./VoiceProfileResult\";\r\nexport { VoiceProfilePhraseResult } from \"./VoiceProfilePhraseResult\";\r\nexport { VoiceProfileClient } from \"./VoiceProfileClient\";\r\nexport { SpeakerRecognizer } from \"./SpeakerRecognizer\";\r\nexport { SpeakerIdentificationModel } from \"./SpeakerIdentificationModel\";\r\nexport { SpeakerVerificationModel } from \"./SpeakerVerificationModel\";\r\nexport { AutoDetectSourceLanguageConfig } from \"./AutoDetectSourceLanguageConfig\";\r\nexport { AutoDetectSourceLanguageResult } from \"./AutoDetectSourceLanguageResult\";\r\nexport { SourceLanguageConfig } from \"./SourceLanguageConfig\";\r\nexport { SpeakerRecognitionResult, SpeakerRecognitionResultType, SpeakerRecognitionCancellationDetails } from \"./SpeakerRecognitionResult\";\r\nexport { Conversation,\r\n ConversationExpirationEventArgs,\r\n ConversationInfo,\r\n ConversationParticipantsChangedEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n ConversationTranslationEventArgs,\r\n ConversationTranslationResult,\r\n ConversationTranslator,\r\n ConversationTranscriber,\r\n IParticipant,\r\n Participant,\r\n ParticipantChangedReason,\r\n User,\r\n VoiceSignature\r\n } from \"./Transcription/Exports\";\r\nexport { SpeechSynthesisOutputFormat } from \"./SpeechSynthesisOutputFormat\";\r\nexport { SpeechSynthesizer } from \"./SpeechSynthesizer\";\r\nexport { SynthesisResult } from \"./SynthesisResult\";\r\nexport { SpeechSynthesisResult } from \"./SpeechSynthesisResult\";\r\nexport { SpeechSynthesisEventArgs } from \"./SpeechSynthesisEventArgs\";\r\nexport { SpeechSynthesisWordBoundaryEventArgs } from \"./SpeechSynthesisWordBoundaryEventArgs\";\r\nexport { SpeechSynthesisBookmarkEventArgs } from \"./SpeechSynthesisBookmarkEventArgs\";\r\nexport { SpeechSynthesisVisemeEventArgs } from \"./SpeechSynthesisVisemeEventArgs\";\r\nexport { SpeechSynthesisBoundaryType } from \"./SpeechSynthesisBoundaryType\";\r\nexport { SynthesisVoicesResult } from \"./SynthesisVoicesResult\";\r\nexport { VoiceInfo } from \"./VoiceInfo\";\r\nexport { IPlayer } from \"./Audio/IPlayer\";\r\nexport { SpeakerAudioDestination } from \"./Audio/SpeakerAudioDestination\";\r\nexport { CancellationEventArgs } from \"./CancellationEventArgs\";\r\nexport { ConversationTranscriptionCanceledEventArgs } from \"./ConversationTranscriptionCanceledEventArgs\";\r\nexport { PronunciationAssessmentGradingSystem } from \"./PronunciationAssessmentGradingSystem\";\r\nexport { PronunciationAssessmentGranularity } from \"./PronunciationAssessmentGranularity\";\r\nexport { PronunciationAssessmentConfig } from \"./PronunciationAssessmentConfig\";\r\nexport { PronunciationAssessmentResult } from \"./PronunciationAssessmentResult\";\r\nexport { LanguageIdMode } from \"./LanguageIdMode\";\r\nexport { Diagnostics } from \"./Diagnostics\";\r\nexport { LogLevel } from \"./LogLevel\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { CancellationEventArgs } from \"./CancellationEventArgs\";\r\nimport { CancellationErrorCode, CancellationReason, IntentRecognitionEventArgs, IntentRecognitionResult } from \"./Exports\";\r\n\r\n/**\r\n * Define payload of intent recognition canceled result events.\r\n * @class IntentRecognitionCanceledEventArgs\r\n */\r\nexport class IntentRecognitionCanceledEventArgs extends IntentRecognitionEventArgs implements CancellationEventArgs {\r\n private privReason: CancellationReason;\r\n private privErrorDetails: string;\r\n private privErrorCode: CancellationErrorCode;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {CancellationReason} result - The result of the intent recognition.\r\n * @param {string} offset - The offset.\r\n * @param {IntentRecognitionResult} sessionId - The session id.\r\n */\r\n public constructor(\r\n reason: CancellationReason,\r\n errorDetails: string,\r\n errorCode: CancellationErrorCode,\r\n result?: IntentRecognitionResult,\r\n offset?: number,\r\n sessionId?: string) {\r\n super(result, offset, sessionId);\r\n\r\n this.privReason = reason;\r\n this.privErrorDetails = errorDetails;\r\n this.privErrorCode = errorCode;\r\n }\r\n\r\n /**\r\n * The reason the recognition was canceled.\r\n * @member IntentRecognitionCanceledEventArgs.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {CancellationReason} Specifies the reason canceled.\r\n */\r\n public get reason(): CancellationReason {\r\n return this.privReason;\r\n }\r\n\r\n /**\r\n * The error code in case of an unsuccessful recognition.\r\n * Added in version 1.1.0.\r\n * @return An error code that represents the error reason.\r\n */\r\n public get errorCode(): CancellationErrorCode {\r\n return this.privErrorCode;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful recognition, provides details of the occurred error.\r\n * @member IntentRecognitionCanceledEventArgs.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} A String that represents the error details.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { IntentRecognitionResult, RecognitionEventArgs } from \"./Exports\";\r\n\r\n/**\r\n * Intent recognition result event arguments.\r\n * @class\r\n */\r\nexport class IntentRecognitionEventArgs extends RecognitionEventArgs {\r\n private privResult: IntentRecognitionResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param result - The result of the intent recognition.\r\n * @param offset - The offset.\r\n * @param sessionId - The session id.\r\n */\r\n public constructor(result: IntentRecognitionResult, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Represents the intent recognition result.\r\n * @member IntentRecognitionEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {IntentRecognitionResult} Represents the intent recognition result.\r\n */\r\n public get result(): IntentRecognitionResult {\r\n return this.privResult;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, ResultReason, SpeechRecognitionResult } from \"./Exports\";\r\n\r\n/**\r\n * Intent recognition result.\r\n * @class\r\n */\r\nexport class IntentRecognitionResult extends SpeechRecognitionResult {\r\n private privIntentId: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param intentId - The intent id.\r\n * @param resultId - The result id.\r\n * @param reason - The reason.\r\n * @param text - The recognized text.\r\n * @param duration - The duration.\r\n * @param offset - The offset into the stream.\r\n * @param language - Primary Language detected, if provided.\r\n * @param languageDetectionConfidence - Primary Language confidence (\"Unknown,\" \"Low,\" \"Medium,\" \"High\"...), if provided.\r\n * @param errorDetails - Error details, if provided.\r\n * @param json - Additional Json, if provided.\r\n * @param properties - Additional properties, if provided.\r\n */\r\n public constructor(intentId?: string, resultId?: string, reason?: ResultReason, text?: string,\r\n duration?: number, offset?: number, language?: string, languageDetectionConfidence?: string,\r\n errorDetails?: string, json?: string, properties?: PropertyCollection) {\r\n super(resultId, reason, text, duration, offset, language, languageDetectionConfidence, undefined, errorDetails, json, properties);\r\n\r\n this.privIntentId = intentId;\r\n }\r\n\r\n /**\r\n * A String that represents the intent identifier being recognized.\r\n * @member IntentRecognitionResult.prototype.intentId\r\n * @function\r\n * @public\r\n * @returns {string} A String that represents the intent identifier being recognized.\r\n */\r\n public get intentId(): string {\r\n return this.privIntentId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n AddedLmIntent,\r\n IAuthentication,\r\n IConnectionFactory,\r\n IntentConnectionFactory,\r\n IntentServiceRecognizer,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig\r\n} from \"../common.speech/Exports\";\r\nimport { marshalPromiseToCallbacks } from \"../common/Exports\";\r\nimport { AudioConfigImpl } from \"./Audio/AudioConfig\";\r\nimport { Contracts } from \"./Contracts\";\r\nimport {\r\n AudioConfig,\r\n IntentRecognitionCanceledEventArgs,\r\n IntentRecognitionEventArgs,\r\n IntentRecognitionResult,\r\n KeywordRecognitionModel,\r\n LanguageUnderstandingModel,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n SpeechConfig,\r\n} from \"./Exports\";\r\nimport { LanguageUnderstandingModelImpl } from \"./LanguageUnderstandingModel\";\r\nimport { SpeechConfigImpl } from \"./SpeechConfig\";\r\n\r\n/**\r\n * Intent recognizer.\r\n * @class\r\n */\r\nexport class IntentRecognizer extends Recognizer {\r\n private privDisposedIntentRecognizer: boolean;\r\n private privAddedIntents: string[][];\r\n private privAddedLmIntents: { [id: string]: AddedLmIntent };\r\n private privUmbrellaIntent: AddedLmIntent;\r\n\r\n /**\r\n * Initializes an instance of the IntentRecognizer.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - The set of configuration properties.\r\n * @param {AudioConfig} audioConfig - An optional audio input config associated with the recognizer\r\n */\r\n public constructor(speechConfig: SpeechConfig, audioConfig?: AudioConfig) {\r\n Contracts.throwIfNullOrUndefined(speechConfig, \"speechConfig\");\r\n const configImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNullOrUndefined(configImpl, \"speechConfig\");\r\n\r\n super(audioConfig, configImpl.properties, new IntentConnectionFactory());\r\n this.privAddedIntents = [];\r\n this.privAddedLmIntents = {};\r\n\r\n this.privDisposedIntentRecognizer = false;\r\n this.privProperties = configImpl.properties;\r\n\r\n Contracts.throwIfNullOrWhitespace(this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage), PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n }\r\n\r\n /**\r\n * The event recognizing signals that an intermediate recognition result is received.\r\n * @member IntentRecognizer.prototype.recognizing\r\n * @function\r\n * @public\r\n */\r\n public recognizing: (sender: IntentRecognizer, event: IntentRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event recognized signals that a final recognition result is received.\r\n * @member IntentRecognizer.prototype.recognized\r\n * @function\r\n * @public\r\n */\r\n public recognized: (sender: IntentRecognizer, event: IntentRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during recognition.\r\n * @member IntentRecognizer.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: IntentRecognizer, event: IntentRecognitionCanceledEventArgs) => void;\r\n\r\n /**\r\n * Gets the spoken language of recognition.\r\n * @member IntentRecognizer.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @returns {string} the spoken language of recognition.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedIntentRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member IntentRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * Note: Please use a token derived from your LanguageUnderstanding subscription key for the Intent recognizer.\r\n * @member IntentRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} value - Authorization token.\r\n */\r\n public set authorizationToken(value: string) {\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, value);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this IntentRecognizer.\r\n * @member IntentRecognizer.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their\r\n * values defined for this IntentRecognizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Starts intent recognition, and stops after the first utterance is recognized.\r\n * The task returns the recognition text and intent as result.\r\n * Note: RecognizeOnceAsync() returns when the first utterance has been recognized,\r\n * so it is suitable only for single shot recognition like command or query.\r\n * For long-running recognition, use StartContinuousRecognitionAsync() instead.\r\n * @member IntentRecognizer.prototype.recognizeOnceAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the recognition has finished with an IntentRecognitionResult.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public recognizeOnceAsync(cb?: (e: IntentRecognitionResult) => void, err?: (e: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedIntentRecognizer);\r\n\r\n if (Object.keys(this.privAddedLmIntents).length !== 0 || undefined !== this.privUmbrellaIntent) {\r\n const context: IIntentContext = this.buildSpeechContext();\r\n\r\n this.privReco.speechContext.setSection(\"intent\", context.Intent);\r\n this.privReco.dynamicGrammar.addReferenceGrammar(context.ReferenceGrammars);\r\n\r\n const intentReco: IntentServiceRecognizer = this.privReco as IntentServiceRecognizer;\r\n intentReco.setIntents(this.privAddedLmIntents, this.privUmbrellaIntent);\r\n }\r\n\r\n marshalPromiseToCallbacks(this.recognizeOnceAsyncImpl(RecognitionMode.Interactive), cb, err);\r\n }\r\n\r\n /**\r\n * Starts speech recognition, until stopContinuousRecognitionAsync() is called.\r\n * User must subscribe to events to receive recognition results.\r\n * @member IntentRecognizer.prototype.startContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n if (Object.keys(this.privAddedLmIntents).length !== 0 || undefined !== this.privUmbrellaIntent) {\r\n const context: IIntentContext = this.buildSpeechContext();\r\n\r\n this.privReco.speechContext.setSection(\"intent\", context.Intent);\r\n this.privReco.dynamicGrammar.addReferenceGrammar(context.ReferenceGrammars);\r\n\r\n const intentReco: IntentServiceRecognizer = this.privReco as IntentServiceRecognizer;\r\n intentReco.setIntents(this.privAddedLmIntents, this.privUmbrellaIntent);\r\n }\r\n\r\n marshalPromiseToCallbacks(this.startContinuousRecognitionAsyncImpl(RecognitionMode.Conversation), cb, err);\r\n }\r\n\r\n /**\r\n * Stops continuous intent recognition.\r\n * @member IntentRecognizer.prototype.stopContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.stopContinuousRecognitionAsyncImpl(), cb, err);\r\n }\r\n\r\n /**\r\n * Starts speech recognition with keyword spotting, until stopKeywordRecognitionAsync() is called.\r\n * User must subscribe to events to receive recognition results.\r\n * Note: Key word spotting functionality is only available on the Speech Devices SDK.\r\n * This functionality is currently not included in the SDK itself.\r\n * @member IntentRecognizer.prototype.startKeywordRecognitionAsync\r\n * @function\r\n * @public\r\n * @param {KeywordRecognitionModel} model - The keyword recognition model that specifies the keyword to be recognized.\r\n * @param cb - Callback invoked once the recognition has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startKeywordRecognitionAsync(model: KeywordRecognitionModel, cb?: () => void, err?: (e: string) => void): void {\r\n Contracts.throwIfNull(model, \"model\");\r\n\r\n if (!!err) {\r\n err(\"Not yet implemented.\");\r\n }\r\n }\r\n\r\n /**\r\n * Stops continuous speech recognition.\r\n * Note: Key word spotting functionality is only available on the Speech Devices SDK.\r\n * This functionality is currently not included in the SDK itself.\r\n * @member IntentRecognizer.prototype.stopKeywordRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopKeywordRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n if (!!cb) {\r\n try {\r\n cb();\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * Adds a phrase that should be recognized as intent.\r\n * @member IntentRecognizer.prototype.addIntent\r\n * @function\r\n * @public\r\n * @param {string} intentId - A String that represents the identifier of the intent to be recognized.\r\n * @param {string} phrase - A String that specifies the phrase representing the intent.\r\n */\r\n public addIntent(simplePhrase: string, intentId?: string): void {\r\n Contracts.throwIfDisposed(this.privDisposedIntentRecognizer);\r\n Contracts.throwIfNullOrWhitespace(intentId, \"intentId\");\r\n Contracts.throwIfNullOrWhitespace(simplePhrase, \"simplePhrase\");\r\n\r\n this.privAddedIntents.push([intentId, simplePhrase]);\r\n }\r\n\r\n /**\r\n * Adds an intent from Language Understanding service for recognition.\r\n * @member IntentRecognizer.prototype.addIntentWithLanguageModel\r\n * @function\r\n * @public\r\n * @param {string} intentId - A String that represents the identifier of the intent\r\n * to be recognized. Ignored if intentName is empty.\r\n * @param {string} model - The intent model from Language Understanding service.\r\n * @param {string} intentName - The intent name defined in the intent model. If it\r\n * is empty, all intent names defined in the model will be added.\r\n */\r\n public addIntentWithLanguageModel(intentId: string, model: LanguageUnderstandingModel, intentName?: string): void {\r\n Contracts.throwIfDisposed(this.privDisposedIntentRecognizer);\r\n Contracts.throwIfNullOrWhitespace(intentId, \"intentId\");\r\n Contracts.throwIfNull(model, \"model\");\r\n\r\n const modelImpl: LanguageUnderstandingModelImpl = model as LanguageUnderstandingModelImpl;\r\n Contracts.throwIfNullOrWhitespace(modelImpl.appId, \"model.appId\");\r\n\r\n this.privAddedLmIntents[intentId] = new AddedLmIntent(modelImpl, intentName);\r\n }\r\n\r\n /**\r\n * @summary Adds all intents from the specified Language Understanding Model.\r\n * @member IntentRecognizer.prototype.addAllIntents\r\n * @function\r\n * @public\r\n * @function\r\n * @public\r\n * @param {LanguageUnderstandingModel} model - The language understanding model containing the intents.\r\n * @param {string} intentId - A custom id String to be returned in the IntentRecognitionResult's getIntentId() method.\r\n */\r\n public addAllIntents(model: LanguageUnderstandingModel, intentId?: string): void {\r\n Contracts.throwIfNull(model, \"model\");\r\n\r\n const modelImpl: LanguageUnderstandingModelImpl = model as LanguageUnderstandingModelImpl;\r\n Contracts.throwIfNullOrWhitespace(modelImpl.appId, \"model.appId\");\r\n\r\n this.privUmbrellaIntent = new AddedLmIntent(modelImpl, intentId);\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member IntentRecognizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedIntentRecognizer);\r\n\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(authentication: IAuthentication, connectionFactory: IConnectionFactory, audioConfig: AudioConfig, recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const audioImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n return new IntentServiceRecognizer(authentication, connectionFactory, audioImpl, recognizerConfig, this);\r\n }\r\n\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedIntentRecognizer) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privDisposedIntentRecognizer = true;\r\n await super.dispose(disposing);\r\n }\r\n }\r\n\r\n private buildSpeechContext(): IIntentContext {\r\n let appId: string;\r\n let region: string;\r\n let subscriptionKey: string;\r\n const refGrammers: string[] = [];\r\n\r\n if (undefined !== this.privUmbrellaIntent) {\r\n appId = this.privUmbrellaIntent.modelImpl.appId;\r\n region = this.privUmbrellaIntent.modelImpl.region;\r\n subscriptionKey = this.privUmbrellaIntent.modelImpl.subscriptionKey;\r\n }\r\n\r\n // Build the reference grammer array.\r\n for (const intentId of Object.keys(this.privAddedLmIntents)) {\r\n const addedLmIntent: AddedLmIntent = this.privAddedLmIntents[intentId];\r\n\r\n // validate all the same model, region, and key...\r\n if (appId === undefined) {\r\n appId = addedLmIntent.modelImpl.appId;\r\n } else {\r\n if (appId !== addedLmIntent.modelImpl.appId) {\r\n throw new Error(\"Intents must all be from the same LUIS model\");\r\n }\r\n }\r\n\r\n if (region === undefined) {\r\n region = addedLmIntent.modelImpl.region;\r\n } else {\r\n if (region !== addedLmIntent.modelImpl.region) {\r\n throw new Error(\"Intents must all be from the same LUIS model in a single region\");\r\n }\r\n }\r\n\r\n if (subscriptionKey === undefined) {\r\n subscriptionKey = addedLmIntent.modelImpl.subscriptionKey;\r\n } else {\r\n if (subscriptionKey !== addedLmIntent.modelImpl.subscriptionKey) {\r\n throw new Error(\"Intents must all use the same subscription key\");\r\n }\r\n }\r\n\r\n const grammer: string = \"luis/\" + appId + \"-PRODUCTION#\" + intentId;\r\n refGrammers.push(grammer);\r\n }\r\n\r\n return {\r\n Intent: {\r\n id: appId,\r\n key: (subscriptionKey === undefined) ? this.privProperties.getProperty(PropertyId[PropertyId.SpeechServiceConnection_Key]) : subscriptionKey,\r\n provider: \"LUIS\",\r\n },\r\n ReferenceGrammars: (undefined === this.privUmbrellaIntent) ? refGrammers : [\"luis/\" + appId + \"-PRODUCTION\"],\r\n };\r\n }\r\n}\r\n\r\ninterface IIntentContext {\r\n Intent: {\r\n id: string;\r\n key: string;\r\n provider: string;\r\n };\r\n ReferenceGrammars: string[];\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts\";\r\n\r\n/**\r\n * Represents a keyword recognition model for recognizing when\r\n * the user says a keyword to initiate further speech recognition.\r\n * @class KeywordRecognitionModel\r\n */\r\nexport class KeywordRecognitionModel {\r\n private privDisposed: boolean = false;\r\n\r\n /**\r\n * Create and initializes a new instance.\r\n * @constructor\r\n */\r\n private constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Creates a keyword recognition model using the specified filename.\r\n * @member KeywordRecognitionModel.fromFile\r\n * @function\r\n * @public\r\n * @param {string} fileName - A string that represents file name for the keyword recognition model.\r\n * Note, the file can point to a zip file in which case the model\r\n * will be extracted from the zip.\r\n * @returns {KeywordRecognitionModel} The keyword recognition model being created.\r\n */\r\n public static fromFile(fileName: string): KeywordRecognitionModel {\r\n Contracts.throwIfFileDoesNotExist(fileName, \"fileName\");\r\n\r\n throw new Error(\"Not yet implemented.\");\r\n }\r\n\r\n /**\r\n * Creates a keyword recognition model using the specified filename.\r\n * @member KeywordRecognitionModel.fromStream\r\n * @function\r\n * @public\r\n * @param {string} file - A File that represents file for the keyword recognition model.\r\n * Note, the file can point to a zip file in which case the model will be extracted from the zip.\r\n * @returns {KeywordRecognitionModel} The keyword recognition model being created.\r\n */\r\n public static fromStream(file: File): KeywordRecognitionModel {\r\n Contracts.throwIfNull(file, \"file\");\r\n\r\n throw new Error(\"Not yet implemented.\");\r\n }\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member KeywordRecognitionModel.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n if (this.privDisposed) {\r\n return;\r\n }\r\n\r\n this.privDisposed = true;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Language Identification mode\r\n * @class LanguageIdMode\r\n */\r\nexport enum LanguageIdMode {\r\n\r\n /**\r\n * Detect language at audio start\r\n * @member LanguageIdMode.AtStart\r\n */\r\n AtStart,\r\n\r\n /**\r\n * Continuously detect language\r\n * @member LanguageIdMode.Continuous\r\n */\r\n Continuous,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n// eslint-disable-next-line max-classes-per-file\r\nimport { Contracts } from \"./Contracts\";\r\n\r\n/**\r\n * Language understanding model\r\n * @class LanguageUnderstandingModel\r\n */\r\nexport class LanguageUnderstandingModel {\r\n /**\r\n * Creates and initializes a new instance\r\n * @constructor\r\n */\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Creates an language understanding model using the specified endpoint.\r\n * @member LanguageUnderstandingModel.fromEndpoint\r\n * @function\r\n * @public\r\n * @param {URL} uri - A String that represents the endpoint of the language understanding model.\r\n * @returns {LanguageUnderstandingModel} The language understanding model being created.\r\n */\r\n public static fromEndpoint(uri: URL): LanguageUnderstandingModel {\r\n Contracts.throwIfNull(uri, \"uri\");\r\n Contracts.throwIfNullOrWhitespace(uri.hostname, \"uri\");\r\n\r\n const langModelImp: LanguageUnderstandingModelImpl = new LanguageUnderstandingModelImpl();\r\n // Need to extract the app ID from the URL.\r\n // URL is in the format: https://.api.cognitive.microsoft.com/luis/v2.0/apps/?subscription-key=&timezoneOffset=-360\r\n\r\n // Start tearing the string apart.\r\n\r\n // region can be extracted from the host name.\r\n const firstDot: number = uri.host.indexOf(\".\");\r\n if (-1 === firstDot) {\r\n throw new Error(\"Could not determine region from endpoint\");\r\n }\r\n langModelImp.region = uri.host.substr(0, firstDot);\r\n\r\n // Now the app ID.\r\n\r\n const lastSegment: number = uri.pathname.lastIndexOf(\"/\") + 1;\r\n if (-1 === lastSegment) {\r\n throw new Error(\"Could not determine appId from endpoint\");\r\n }\r\n\r\n langModelImp.appId = uri.pathname.substr(lastSegment);\r\n\r\n // And finally the key.\r\n langModelImp.subscriptionKey = uri.searchParams.get(\"subscription-key\");\r\n if (undefined === langModelImp.subscriptionKey) {\r\n throw new Error(\"Could not determine subscription key from endpoint\");\r\n }\r\n\r\n return langModelImp;\r\n }\r\n\r\n /**\r\n * Creates an language understanding model using the application id of Language Understanding service.\r\n * @member LanguageUnderstandingModel.fromAppId\r\n * @function\r\n * @public\r\n * @param {string} appId - A String that represents the application id of Language Understanding service.\r\n * @returns {LanguageUnderstandingModel} The language understanding model being created.\r\n */\r\n public static fromAppId(appId: string): LanguageUnderstandingModel {\r\n Contracts.throwIfNullOrWhitespace(appId, \"appId\");\r\n\r\n const langModelImp: LanguageUnderstandingModelImpl = new LanguageUnderstandingModelImpl();\r\n langModelImp.appId = appId;\r\n return langModelImp;\r\n }\r\n\r\n /**\r\n * Creates a language understanding model using hostname, subscription key and application\r\n * id of Language Understanding service.\r\n * @member LanguageUnderstandingModel.fromSubscription\r\n * @function\r\n * @public\r\n * @param {string} subscriptionKey - A String that represents the subscription key of\r\n * Language Understanding service.\r\n * @param {string} appId - A String that represents the application id of Language\r\n * Understanding service.\r\n * @param {LanguageUnderstandingModel} region - A String that represents the region\r\n * of the Language Understanding service (see the region page).\r\n * @returns {LanguageUnderstandingModel} The language understanding model being created.\r\n */\r\n public static fromSubscription(subscriptionKey: string, appId: string, region: string): LanguageUnderstandingModel {\r\n Contracts.throwIfNullOrWhitespace(subscriptionKey, \"subscriptionKey\");\r\n Contracts.throwIfNullOrWhitespace(appId, \"appId\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const langModelImp: LanguageUnderstandingModelImpl = new LanguageUnderstandingModelImpl();\r\n langModelImp.appId = appId;\r\n langModelImp.region = region;\r\n langModelImp.subscriptionKey = subscriptionKey;\r\n return langModelImp;\r\n }\r\n}\r\n\r\n/**\r\n * @private\r\n * @class LanguageUnderstandingModelImpl\r\n */\r\nexport class LanguageUnderstandingModelImpl extends LanguageUnderstandingModel {\r\n public appId: string;\r\n public region: string;\r\n public subscriptionKey: string;\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { EventType } from \"../common/Exports\";\r\n\r\n/**\r\n * Define event severity types for setting logging output.\r\n * @class LogLevel\r\n */\r\n\r\nexport { EventType as LogLevel };\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { RecognitionStatus, SimpleSpeechPhrase } from \"../../src/common.speech/Exports\";\r\nimport { IntentRecognitionResult, NoMatchReason, SpeechRecognitionResult, TranslationRecognitionResult } from \"./Exports\";\r\n\r\n/**\r\n * Contains detailed information for NoMatch recognition results.\r\n * @class NoMatchDetails\r\n */\r\nexport class NoMatchDetails {\r\n private privReason: NoMatchReason;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {NoMatchReason} reason - The no-match reason.\r\n */\r\n private constructor(reason: NoMatchReason) {\r\n this.privReason = reason;\r\n }\r\n\r\n /**\r\n * Creates an instance of NoMatchDetails object for the NoMatch SpeechRecognitionResults.\r\n * @member NoMatchDetails.fromResult\r\n * @function\r\n * @public\r\n * @param {SpeechRecognitionResult | IntentRecognitionResult | TranslationRecognitionResult}\r\n * result - The recognition result that was not recognized.\r\n * @returns {NoMatchDetails} The no match details object being created.\r\n */\r\n public static fromResult(result: SpeechRecognitionResult | IntentRecognitionResult | TranslationRecognitionResult): NoMatchDetails {\r\n const simpleSpeech: SimpleSpeechPhrase = SimpleSpeechPhrase.fromJSON(result.json);\r\n\r\n let reason: NoMatchReason = NoMatchReason.NotRecognized;\r\n\r\n switch (simpleSpeech.RecognitionStatus) {\r\n case RecognitionStatus.BabbleTimeout:\r\n reason = NoMatchReason.InitialBabbleTimeout;\r\n break;\r\n case RecognitionStatus.InitialSilenceTimeout:\r\n reason = NoMatchReason.InitialSilenceTimeout;\r\n break;\r\n default:\r\n reason = NoMatchReason.NotRecognized;\r\n break;\r\n }\r\n\r\n return new NoMatchDetails(reason);\r\n }\r\n\r\n /**\r\n * The reason the recognition was canceled.\r\n * @member NoMatchDetails.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {NoMatchReason} Specifies the reason canceled.\r\n */\r\n public get reason(): NoMatchReason {\r\n return this.privReason;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the possible reasons a recognition result might not be recognized.\r\n * @class NoMatchReason\r\n */\r\nexport enum NoMatchReason {\r\n\r\n /**\r\n * Indicates that speech was detected, but not recognized.\r\n * @member NoMatchReason.NotRecognized\r\n */\r\n NotRecognized,\r\n\r\n /**\r\n * Indicates that the start of the audio stream contained only silence,\r\n * and the service timed out waiting for speech.\r\n * @member NoMatchReason.InitialSilenceTimeout\r\n */\r\n InitialSilenceTimeout,\r\n\r\n /**\r\n * Indicates that the start of the audio stream contained only noise,\r\n * and the service timed out waiting for speech.\r\n * @member NoMatchReason.InitialBabbleTimeout\r\n */\r\n InitialBabbleTimeout,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Define Speech Recognizer output formats.\r\n * @class OutputFormat\r\n */\r\nexport enum OutputFormat {\r\n /**\r\n * @member OutputFormat.Simple\r\n */\r\n Simple = 0,\r\n\r\n /**\r\n * @member OutputFormat.Detailed\r\n */\r\n Detailed,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n DynamicGrammarBuilder,\r\n ServiceRecognizerBase,\r\n} from \"../common.speech/Exports\";\r\nimport {\r\n ConversationTranscriber,\r\n Recognizer\r\n} from \"./Exports\";\r\n\r\n/**\r\n * Allows additions of new phrases to improve speech recognition.\r\n *\r\n * Phrases added to the recognizer are effective at the start of the next recognition, or the next time the SpeechSDK must reconnect\r\n * to the speech service.\r\n */\r\nexport class PhraseListGrammar {\r\n private privGrammerBuilder: DynamicGrammarBuilder;\r\n\r\n private constructor(recogBase: ServiceRecognizerBase) {\r\n this.privGrammerBuilder = recogBase.dynamicGrammar;\r\n }\r\n\r\n /**\r\n * Creates a PhraseListGrammar from a given speech recognizer. Will accept any recognizer that derives from @class Recognizer.\r\n * @param recognizer The recognizer to add phrase lists to.\r\n */\r\n public static fromRecognizer(recognizer: Recognizer | ConversationTranscriber): PhraseListGrammar {\r\n const recoBase = recognizer.internalData as ServiceRecognizerBase;\r\n return new PhraseListGrammar(recoBase);\r\n }\r\n\r\n /**\r\n * Adds a single phrase to the current recognizer.\r\n * @param phrase Phrase to add.\r\n */\r\n public addPhrase(phrase: string): void {\r\n this.privGrammerBuilder.addPhrase(phrase);\r\n }\r\n\r\n /**\r\n * Adds multiple phrases to the current recognizer.\r\n * @param phrases Array of phrases to add.\r\n */\r\n public addPhrases(phrases: string[]): void {\r\n this.privGrammerBuilder.addPhrase(phrases);\r\n }\r\n\r\n /**\r\n * Clears all phrases added to the current recognizer.\r\n */\r\n public clear(): void {\r\n this.privGrammerBuilder.clearPhrases();\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Profanity option.\r\n * Added in version 1.7.0.\r\n */\r\nexport enum ProfanityOption {\r\n Masked = 0,\r\n Removed = 1,\r\n Raw = 2\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ServiceRecognizerBase } from \"../common.speech/ServiceRecognizerBase\";\r\nimport { Contracts } from \"./Contracts\";\r\nimport {\r\n PronunciationAssessmentGradingSystem,\r\n PronunciationAssessmentGranularity,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer\r\n} from \"./Exports\";\r\n\r\ninterface PronunciationAssessmentJSON {\r\n referenceText: string;\r\n gradingSystem: string;\r\n granularity: string;\r\n phonemeAlphabet: string;\r\n nbestPhonemeCount: number;\r\n dimension: string;\r\n enableMiscue: boolean;\r\n}\r\n\r\n/**\r\n * Pronunciation assessment configuration.\r\n * @class PronunciationAssessmentConfig\r\n * Added in version 1.15.0.\r\n */\r\nexport class PronunciationAssessmentConfig {\r\n private privProperties: PropertyCollection;\r\n private privPhonemeAlphabet: string;\r\n private privNBestPhonemeCount: number;\r\n\r\n /**\r\n * PronunciationAssessmentConfig constructor.\r\n * @constructor\r\n * @param {string} referenceText\r\n * @param gradingSystem\r\n * @param granularity\r\n * @param enableMiscue\r\n */\r\n public constructor(referenceText: string,\r\n gradingSystem: PronunciationAssessmentGradingSystem = PronunciationAssessmentGradingSystem.FivePoint,\r\n granularity: PronunciationAssessmentGranularity = PronunciationAssessmentGranularity.Phoneme,\r\n enableMiscue: boolean = false) {\r\n Contracts.throwIfNullOrUndefined(referenceText, \"referenceText\");\r\n this.privProperties = new PropertyCollection();\r\n this.privProperties.setProperty(PropertyId.PronunciationAssessment_ReferenceText, referenceText);\r\n this.privProperties.setProperty(PropertyId.PronunciationAssessment_GradingSystem, PronunciationAssessmentGradingSystem[gradingSystem]);\r\n this.privProperties.setProperty(PropertyId.PronunciationAssessment_Granularity, PronunciationAssessmentGranularity[granularity]);\r\n this.privProperties.setProperty(PropertyId.PronunciationAssessment_EnableMiscue, String(enableMiscue));\r\n }\r\n\r\n /**\r\n * @member PronunciationAssessmentConfig.fromJSON\r\n * @function\r\n * @public\r\n * @param {string} json The json string containing the pronunciation assessment parameters.\r\n * @return {PronunciationAssessmentConfig} Instance of PronunciationAssessmentConfig\r\n * @summary Creates an instance of the PronunciationAssessmentConfig from json.\r\n */\r\n public static fromJSON(json: string): PronunciationAssessmentConfig {\r\n Contracts.throwIfNullOrUndefined(json, \"json\");\r\n const config = new PronunciationAssessmentConfig(\"\");\r\n config.privProperties = new PropertyCollection();\r\n config.properties.setProperty(PropertyId.PronunciationAssessment_Json, json);\r\n return config;\r\n }\r\n\r\n public toJSON(): string {\r\n this.updateJson();\r\n return this.privProperties.getProperty(PropertyId.PronunciationAssessment_Params);\r\n }\r\n\r\n public applyTo(recognizer: Recognizer): void {\r\n this.updateJson();\r\n const recoBase = recognizer.internalData as ServiceRecognizerBase;\r\n recoBase.speechContext.setPronunciationAssessmentParams(this.properties.getProperty(PropertyId.PronunciationAssessment_Params));\r\n }\r\n\r\n /**\r\n * Gets the reference text.\r\n * @member PronunciationAssessmentConfig.prototype.referenceText\r\n * @function\r\n * @public\r\n * @returns {string} Reference text.\r\n */\r\n public get referenceText(): string {\r\n return this.properties.getProperty(PropertyId.PronunciationAssessment_ReferenceText);\r\n }\r\n\r\n /**\r\n * Gets/Sets the reference text.\r\n * @member PronunciationAssessmentConfig.prototype.referenceText\r\n * @function\r\n * @public\r\n * @param {string} referenceText - Reference text.\r\n */\r\n public set referenceText(referenceText: string) {\r\n Contracts.throwIfNullOrWhitespace(referenceText, \"referenceText\");\r\n this.properties.setProperty(PropertyId.PronunciationAssessment_ReferenceText, referenceText);\r\n }\r\n\r\n /**\r\n * Sets the phoneme alphabet.\r\n * The valid values are \"SAPI\" (default) and \"IPA\".\r\n * Added in version 1.20.0\r\n * @member PronunciationAssessmentConfig.prototype.phonemeAlphabet\r\n * @function\r\n * @public\r\n * @param {string} phonemeAlphabet - Phoneme alphabet.\r\n */\r\n public set phonemeAlphabet(phonemeAlphabet: string) {\r\n Contracts.throwIfNullOrWhitespace(phonemeAlphabet, \"phonemeAlphabet\");\r\n this.privPhonemeAlphabet = phonemeAlphabet;\r\n }\r\n\r\n /**\r\n * Sets the boolean enableMiscue property.\r\n * Added in version 1.26.0\r\n * @member PronunciationAssessmentConfig.prototype.enableMiscue\r\n * @function\r\n * @public\r\n * @param {boolean} enableMiscue - enable miscue.\r\n */\r\n public set enableMiscue(enableMiscue: boolean) {\r\n const enableMiscueString = enableMiscue ? \"true\" : \"false\";\r\n this.properties.setProperty(PropertyId.PronunciationAssessment_EnableMiscue, enableMiscueString);\r\n }\r\n\r\n /**\r\n * Gets the boolean enableMiscue property.\r\n * Added in version 1.26.0\r\n * @member PronunciationAssessmentConfig.prototype.enableMiscue\r\n * @function\r\n * @public\r\n * @return {boolean} enableMiscue - enable miscue.\r\n */\r\n public get enableMiscue(): boolean {\r\n const enableMiscueString = this.properties.getProperty(PropertyId.PronunciationAssessment_EnableMiscue, \"false\");\r\n return (enableMiscueString.toLowerCase() === \"true\");\r\n }\r\n\r\n /**\r\n * Sets the nbest phoneme count\r\n * Added in version 1.20.0\r\n * @member PronunciationAssessmentConfig.prototype.nbestPhonemeCount\r\n * @function\r\n * @public\r\n * @param {number} nbestPhonemeCount - NBest phoneme count.\r\n */\r\n public set nbestPhonemeCount(nbestPhonemeCount: number) {\r\n this.privNBestPhonemeCount = nbestPhonemeCount;\r\n }\r\n\r\n /**\r\n * @member PronunciationAssessmentConfig.prototype.properties\r\n * @function\r\n * @public\r\n * @return {PropertyCollection} Properties of the config.\r\n * @summary Gets a pronunciation assessment config properties\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n private updateJson(): void {\r\n const jsonString = this.privProperties.getProperty(PropertyId.PronunciationAssessment_Json, \"{}\");\r\n const paramsJson: PronunciationAssessmentJSON = JSON.parse(jsonString) as PronunciationAssessmentJSON;\r\n\r\n const referenceText = this.privProperties.getProperty(PropertyId.PronunciationAssessment_ReferenceText);\r\n if (referenceText) {\r\n paramsJson.referenceText = referenceText;\r\n }\r\n\r\n const gradingSystem = this.privProperties.getProperty(PropertyId.PronunciationAssessment_GradingSystem);\r\n if (gradingSystem) {\r\n paramsJson.gradingSystem = gradingSystem;\r\n }\r\n\r\n const granularity = this.privProperties.getProperty(PropertyId.PronunciationAssessment_Granularity);\r\n if (granularity) {\r\n paramsJson.granularity = granularity;\r\n }\r\n\r\n if (this.privPhonemeAlphabet) {\r\n paramsJson.phonemeAlphabet = this.privPhonemeAlphabet;\r\n }\r\n\r\n if (this.privNBestPhonemeCount) {\r\n paramsJson.nbestPhonemeCount = this.privNBestPhonemeCount;\r\n }\r\n\r\n // always set dimension to Comprehensive\r\n paramsJson.dimension = \"Comprehensive\";\r\n paramsJson.enableMiscue = this.enableMiscue;\r\n\r\n this.privProperties.setProperty(PropertyId.PronunciationAssessment_Params, JSON.stringify(paramsJson));\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the point system for pronunciation score calibration; default value is FivePoint.\r\n * Added in version 1.15.0\r\n * @class PronunciationAssessmentGradingSystem\r\n */\r\nexport enum PronunciationAssessmentGradingSystem {\r\n /**\r\n * Five point calibration\r\n * @member PronunciationAssessmentGradingSystem.FivePoint\r\n */\r\n FivePoint = 1,\r\n\r\n /**\r\n * Hundred mark\r\n * @member PronunciationAssessmentGradingSystem.HundredMark\r\n */\r\n HundredMark,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the pronunciation evaluation granularity; default value is Phoneme.\r\n * Added in version 1.15.0\r\n * @class PronunciationAssessmentGranularity\r\n */\r\nexport enum PronunciationAssessmentGranularity {\r\n /**\r\n * Shows the score on the full text, word and phoneme level\r\n * @member PronunciationAssessmentGranularity.Phoneme\r\n */\r\n Phoneme = 1,\r\n\r\n /**\r\n * Shows the score on the full text and word level\r\n * @member PronunciationAssessmentGranularity.Word\r\n */\r\n Word,\r\n\r\n /**\r\n * Shows the score on the full text level only\r\n * @member PronunciationAssessmentGranularity.FullText\r\n */\r\n FullText,\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {Contracts} from \"./Contracts\";\r\nimport {\r\n PropertyId,\r\n RecognitionResult\r\n} from \"./Exports\";\r\n\r\ninterface AssessmentResult {\r\n NBest: DetailResult[];\r\n}\r\n\r\ninterface DetailResult {\r\n Words: WordResult[];\r\n PronunciationAssessment: {\r\n AccuracyScore: number;\r\n CompletenessScore: number;\r\n FluencyScore: number;\r\n PronScore: number;\r\n };\r\n}\r\n\r\ninterface WordResult {\r\n Word: string;\r\n Phonemes: {\r\n Phoneme?: string;\r\n PronunciationAssessment?: {\r\n NBestPhonemes: { Phoneme: string }[];\r\n };\r\n }[];\r\n\r\n Syllables: { Syllable: string }[];\r\n}\r\n\r\n/**\r\n * Pronunciation assessment results.\r\n * @class PronunciationAssessmentResult\r\n * Added in version 1.15.0.\r\n */\r\nexport class PronunciationAssessmentResult {\r\n private privPronJson: DetailResult;\r\n\r\n private constructor(jsonString: string) {\r\n const j = JSON.parse(jsonString) as AssessmentResult;\r\n Contracts.throwIfNullOrUndefined(j.NBest[0], \"NBest\");\r\n this.privPronJson = j.NBest[0];\r\n }\r\n\r\n /**\r\n * @member PronunciationAssessmentResult.fromResult\r\n * @function\r\n * @public\r\n * @param {RecognitionResult} result The recognition result.\r\n * @return {PronunciationAssessmentConfig} Instance of PronunciationAssessmentConfig\r\n * @summary Creates an instance of the PronunciationAssessmentResult from recognition result.\r\n */\r\n public static fromResult(result: RecognitionResult): PronunciationAssessmentResult {\r\n Contracts.throwIfNullOrUndefined(result, \"result\");\r\n const json: string = result.properties.getProperty(PropertyId.SpeechServiceResponse_JsonResult);\r\n Contracts.throwIfNullOrUndefined(json, \"json\");\r\n return new PronunciationAssessmentResult(json);\r\n }\r\n\r\n /**\r\n * Gets the detail result of pronunciation assessment.\r\n * @member PronunciationAssessmentConfig.prototype.detailResult\r\n * @function\r\n * @public\r\n * @returns {DetailResult} detail result.\r\n */\r\n public get detailResult(): DetailResult {\r\n return this.privPronJson;\r\n }\r\n\r\n /**\r\n * The score indicating the pronunciation accuracy of the given speech, which indicates\r\n * how closely the phonemes match a native speaker's pronunciation.\r\n * @member PronunciationAssessmentResult.prototype.accuracyScore\r\n * @function\r\n * @public\r\n * @returns {number} Accuracy score.\r\n */\r\n public get accuracyScore(): number {\r\n return this.detailResult.PronunciationAssessment.AccuracyScore;\r\n }\r\n\r\n /**\r\n * The overall score indicating the pronunciation quality of the given speech.\r\n * This is calculated from AccuracyScore, FluencyScore and CompletenessScore with weight.\r\n * @member PronunciationAssessmentResult.prototype.pronunciationScore\r\n * @function\r\n * @public\r\n * @returns {number} Pronunciation score.\r\n */\r\n public get pronunciationScore(): number {\r\n return this.detailResult.PronunciationAssessment.PronScore;\r\n }\r\n\r\n /**\r\n * The score indicating the completeness of the given speech by calculating the ratio of pronounced words towards entire input.\r\n * @member PronunciationAssessmentResult.prototype.completenessScore\r\n * @function\r\n * @public\r\n * @returns {number} Completeness score.\r\n */\r\n public get completenessScore(): number {\r\n return this.detailResult.PronunciationAssessment.CompletenessScore;\r\n }\r\n\r\n /**\r\n * The score indicating the fluency of the given speech.\r\n * @member PronunciationAssessmentResult.prototype.fluencyScore\r\n * @function\r\n * @public\r\n * @returns {number} Fluency score.\r\n */\r\n public get fluencyScore(): number {\r\n return this.detailResult.PronunciationAssessment.FluencyScore;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyId } from \"./Exports\";\r\n\r\n/**\r\n * Represents collection of properties and their values.\r\n * @class PropertyCollection\r\n */\r\nexport class PropertyCollection {\r\n private privKeys: string[] = [] as string[];\r\n private privValues: string[] = [] as string[];\r\n\r\n /**\r\n * Returns the property value in type String.\r\n * Currently only String, int and bool are allowed.\r\n * If the name is not available, the specified defaultValue is returned.\r\n * @member PropertyCollection.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {string} key - The parameter name.\r\n * @param {string | number | boolean} def - The default value which is returned if the parameter\r\n * is not available in the collection.\r\n * @returns {string} value of the parameter.\r\n */\r\n public getProperty(key: PropertyId | string, def?: string | number | boolean): string {\r\n let keyToUse: string;\r\n\r\n if (typeof key === \"string\") {\r\n keyToUse = key;\r\n } else {\r\n keyToUse = PropertyId[key];\r\n }\r\n\r\n for (let n = 0; n < this.privKeys.length; n++) {\r\n if (this.privKeys[n] === keyToUse) {\r\n return this.privValues[n];\r\n }\r\n }\r\n\r\n if (def === undefined) {\r\n return undefined;\r\n }\r\n\r\n return String(def);\r\n }\r\n\r\n /**\r\n * Sets the String value of the parameter specified by name.\r\n * @member PropertyCollection.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string} key - The parameter name.\r\n * @param {string} value - The value of the parameter.\r\n */\r\n public setProperty(key: string | PropertyId, value: string): void {\r\n let keyToUse: string;\r\n\r\n if (typeof key === \"string\") {\r\n keyToUse = key;\r\n } else {\r\n keyToUse = PropertyId[key];\r\n }\r\n\r\n for (let n = 0; n < this.privKeys.length; n++) {\r\n if (this.privKeys[n] === keyToUse) {\r\n this.privValues[n] = value;\r\n return;\r\n }\r\n }\r\n\r\n this.privKeys.push(keyToUse);\r\n this.privValues.push(value);\r\n }\r\n\r\n /**\r\n * Clones the collection.\r\n * @member PropertyCollection.prototype.clone\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} A copy of the collection.\r\n */\r\n public clone(): PropertyCollection {\r\n const clonedMap = new PropertyCollection();\r\n\r\n for (let n = 0; n < this.privKeys.length; n++) {\r\n clonedMap.privKeys.push(this.privKeys[n]);\r\n clonedMap.privValues.push(this.privValues[n]);\r\n }\r\n\r\n return clonedMap;\r\n }\r\n\r\n /**\r\n * Merges this set of properties into another, no overwrites.\r\n * @member PropertyCollection.prototype.mergeTo\r\n * @function\r\n * @public\r\n * @param {PropertyCollection} destinationCollection - The collection to merge into.\r\n */\r\n public mergeTo(destinationCollection: PropertyCollection): void {\r\n this.privKeys.forEach((key: string | PropertyId): void => {\r\n if (destinationCollection.getProperty(key, undefined) === undefined) {\r\n const value = this.getProperty(key);\r\n destinationCollection.setProperty(key, value);\r\n }\r\n });\r\n }\r\n\r\n /**\r\n * Get the keys in Property Collection.\r\n * @member PropertyCollection.prototype.keys\r\n * @function\r\n * @public\r\n * @returns {string []} Keys in the collection.\r\n */\r\n public get keys(): string[] {\r\n return this.privKeys;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines speech property ids.\r\n * @class PropertyId\r\n */\r\nexport enum PropertyId {\r\n\r\n /**\r\n * The Cognitive Services Speech Service subscription Key. If you are using an intent recognizer, you need to\r\n * specify the LUIS endpoint key for your particular LUIS app. Under normal circumstances, you shouldn't\r\n * have to use this property directly.\r\n * Instead, use [[SpeechConfig.fromSubscription]].\r\n * @member PropertyId.SpeechServiceConnection_Key\r\n */\r\n SpeechServiceConnection_Key = 0,\r\n\r\n /**\r\n * The Cognitive Services Speech Service endpoint (url). Under normal circumstances, you shouldn't\r\n * have to use this property directly.\r\n * Instead, use [[SpeechConfig.fromEndpoint]].\r\n * NOTE: This endpoint is not the same as the endpoint used to obtain an access token.\r\n * @member PropertyId.SpeechServiceConnection_Endpoint\r\n */\r\n SpeechServiceConnection_Endpoint,\r\n\r\n /**\r\n * The Cognitive Services Speech Service region. Under normal circumstances, you shouldn't have to\r\n * use this property directly.\r\n * Instead, use [[SpeechConfig.fromSubscription]], [[SpeechConfig.fromEndpoint]], [[SpeechConfig.fromAuthorizationToken]].\r\n * @member PropertyId.SpeechServiceConnection_Region\r\n */\r\n SpeechServiceConnection_Region,\r\n\r\n /**\r\n * The Cognitive Services Speech Service authorization token (aka access token). Under normal circumstances,\r\n * you shouldn't have to use this property directly.\r\n * Instead, use [[SpeechConfig.fromAuthorizationToken]], [[SpeechRecognizer.authorizationToken]],\r\n * [[IntentRecognizer.authorizationToken]], [[TranslationRecognizer.authorizationToken]], [[SpeakerRecognizer.authorizationToken]].\r\n * @member PropertyId.SpeechServiceAuthorization_Token\r\n */\r\n SpeechServiceAuthorization_Token,\r\n\r\n /**\r\n * The Cognitive Services Speech Service authorization type. Currently unused.\r\n * @member PropertyId.SpeechServiceAuthorization_Type\r\n */\r\n SpeechServiceAuthorization_Type,\r\n\r\n /**\r\n * The Cognitive Services Speech Service endpoint id. Under normal circumstances, you shouldn't\r\n * have to use this property directly.\r\n * Instead, use [[SpeechConfig.endpointId]].\r\n * NOTE: The endpoint id is available in the Speech Portal, listed under Endpoint Details.\r\n * @member PropertyId.SpeechServiceConnection_EndpointId\r\n */\r\n SpeechServiceConnection_EndpointId,\r\n\r\n /**\r\n * The list of comma separated languages (BCP-47 format) used as target translation languages. Under normal circumstances,\r\n * you shouldn't have to use this property directly.\r\n * Instead use [[SpeechTranslationConfig.addTargetLanguage]],\r\n * [[SpeechTranslationConfig.targetLanguages]], [[TranslationRecognizer.targetLanguages]].\r\n * @member PropertyId.SpeechServiceConnection_TranslationToLanguages\r\n */\r\n SpeechServiceConnection_TranslationToLanguages,\r\n\r\n /**\r\n * The name of the Cognitive Service Text to Speech Service Voice. Under normal circumstances, you shouldn't have to use this\r\n * property directly.\r\n * Instead, use [[SpeechTranslationConfig.voiceName]].\r\n * NOTE: Valid voice names can be found here.\r\n * @member PropertyId.SpeechServiceConnection_TranslationVoice\r\n */\r\n SpeechServiceConnection_TranslationVoice,\r\n\r\n /**\r\n * Translation features.\r\n * @member PropertyId.SpeechServiceConnection_TranslationFeatures\r\n */\r\n SpeechServiceConnection_TranslationFeatures,\r\n\r\n /**\r\n * The Language Understanding Service Region. Under normal circumstances, you shouldn't have to use this property directly.\r\n * Instead, use [[LanguageUnderstandingModel]].\r\n * @member PropertyId.SpeechServiceConnection_IntentRegion\r\n */\r\n SpeechServiceConnection_IntentRegion,\r\n\r\n /**\r\n * The host name of the proxy server used to connect to the Cognitive Services Speech Service. Only relevant in Node.js environments.\r\n * You shouldn't have to use this property directly.\r\n * Instead use .\r\n * Added in version 1.4.0.\r\n */\r\n SpeechServiceConnection_ProxyHostName,\r\n\r\n /**\r\n * The port of the proxy server used to connect to the Cognitive Services Speech Service. Only relevant in Node.js environments.\r\n * You shouldn't have to use this property directly.\r\n * Instead use .\r\n * Added in version 1.4.0.\r\n */\r\n SpeechServiceConnection_ProxyPort,\r\n\r\n /**\r\n * The user name of the proxy server used to connect to the Cognitive Services Speech Service. Only relevant in Node.js environments.\r\n * You shouldn't have to use this property directly.\r\n * Instead use .\r\n * Added in version 1.4.0.\r\n */\r\n SpeechServiceConnection_ProxyUserName,\r\n\r\n /**\r\n * The password of the proxy server used to connect to the Cognitive Services Speech Service. Only relevant in Node.js environments.\r\n * You shouldn't have to use this property directly.\r\n * Instead use .\r\n * Added in version 1.4.0.\r\n */\r\n SpeechServiceConnection_ProxyPassword,\r\n\r\n /**\r\n * The Cognitive Services Speech Service recognition Mode. Can be \"INTERACTIVE\", \"CONVERSATION\", \"DICTATION\".\r\n * This property is intended to be read-only. The SDK is using it internally.\r\n * @member PropertyId.SpeechServiceConnection_RecoMode\r\n */\r\n SpeechServiceConnection_RecoMode,\r\n\r\n /**\r\n * The spoken language to be recognized (in BCP-47 format). Under normal circumstances, you shouldn't have to use this property\r\n * directly.\r\n * Instead, use [[SpeechConfig.speechRecognitionLanguage]].\r\n * @member PropertyId.SpeechServiceConnection_RecoLanguage\r\n */\r\n SpeechServiceConnection_RecoLanguage,\r\n\r\n /**\r\n * The session id. This id is a universally unique identifier (aka UUID) representing a specific binding of an audio input stream\r\n * and the underlying speech recognition instance to which it is bound. Under normal circumstances, you shouldn't have to use this\r\n * property directly.\r\n * Instead use [[SessionEventArgs.sessionId]].\r\n * @member PropertyId.Speech_SessionId\r\n */\r\n Speech_SessionId,\r\n\r\n /**\r\n * The spoken language to be synthesized (e.g. en-US)\r\n * @member PropertyId.SpeechServiceConnection_SynthLanguage\r\n */\r\n SpeechServiceConnection_SynthLanguage,\r\n\r\n /**\r\n * The name of the TTS voice to be used for speech synthesis\r\n * @member PropertyId.SpeechServiceConnection_SynthVoice\r\n */\r\n SpeechServiceConnection_SynthVoice,\r\n\r\n /**\r\n * The string to specify TTS output audio format\r\n * @member PropertyId.SpeechServiceConnection_SynthOutputFormat\r\n */\r\n SpeechServiceConnection_SynthOutputFormat,\r\n\r\n /**\r\n * The list of comma separated languages used as possible source languages\r\n * Added in version 1.13.0\r\n * @member PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages\r\n */\r\n SpeechServiceConnection_AutoDetectSourceLanguages,\r\n\r\n /**\r\n * The requested Cognitive Services Speech Service response output format (simple or detailed). Under normal circumstances, you shouldn't have\r\n * to use this property directly.\r\n * Instead use [[SpeechConfig.outputFormat]].\r\n * @member PropertyId.SpeechServiceResponse_RequestDetailedResultTrueFalse\r\n */\r\n SpeechServiceResponse_RequestDetailedResultTrueFalse,\r\n\r\n /**\r\n * The requested Cognitive Services Speech Service response output profanity level. Currently unused.\r\n * @member PropertyId.SpeechServiceResponse_RequestProfanityFilterTrueFalse\r\n */\r\n SpeechServiceResponse_RequestProfanityFilterTrueFalse,\r\n\r\n /**\r\n * The Cognitive Services Speech Service response output (in JSON format). This property is available on recognition result objects only.\r\n * @member PropertyId.SpeechServiceResponse_JsonResult\r\n */\r\n SpeechServiceResponse_JsonResult,\r\n\r\n /**\r\n * The Cognitive Services Speech Service error details (in JSON format). Under normal circumstances, you shouldn't have to\r\n * use this property directly. Instead use [[CancellationDetails.errorDetails]].\r\n * @member PropertyId.SpeechServiceResponse_JsonErrorDetails\r\n */\r\n SpeechServiceResponse_JsonErrorDetails,\r\n\r\n /**\r\n * The cancellation reason. Currently unused.\r\n * @member PropertyId.CancellationDetails_Reason\r\n */\r\n CancellationDetails_Reason,\r\n\r\n /**\r\n * The cancellation text. Currently unused.\r\n * @member PropertyId.CancellationDetails_ReasonText\r\n */\r\n CancellationDetails_ReasonText,\r\n\r\n /**\r\n * The Cancellation detailed text. Currently unused.\r\n * @member PropertyId.CancellationDetails_ReasonDetailedText\r\n */\r\n CancellationDetails_ReasonDetailedText,\r\n\r\n /**\r\n * The Language Understanding Service response output (in JSON format). Available via [[IntentRecognitionResult]]\r\n * @member PropertyId.LanguageUnderstandingServiceResponse_JsonResult\r\n */\r\n LanguageUnderstandingServiceResponse_JsonResult,\r\n\r\n /**\r\n * The URL string built from speech configuration.\r\n * This property is intended to be read-only. The SDK is using it internally.\r\n * NOTE: Added in version 1.7.0.\r\n */\r\n SpeechServiceConnection_Url,\r\n\r\n /**\r\n * The initial silence timeout value (in milliseconds) used by the service.\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceConnection_InitialSilenceTimeoutMs,\r\n\r\n /**\r\n * The end silence timeout value (in milliseconds) used by the service.\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceConnection_EndSilenceTimeoutMs,\r\n\r\n /**\r\n * A duration of detected silence, measured in milliseconds, after which speech-to-text will determine a spoken\r\n * phrase has ended and generate a final Recognized result. Configuring this timeout may be helpful in situations\r\n * where spoken input is significantly faster or slower than usual and default segmentation behavior consistently\r\n * yields results that are too long or too short. Segmentation timeout values that are inappropriately high or low\r\n * can negatively affect speech-to-text accuracy; this property should be carefully configured and the resulting\r\n * behavior should be thoroughly validated as intended.\r\n *\r\n * For more information about timeout configuration that includes discussion of default behaviors, please visit\r\n * https://aka.ms/csspeech/timeouts.\r\n *\r\n * Added in version 1.21.0.\r\n */\r\n Speech_SegmentationSilenceTimeoutMs,\r\n\r\n /**\r\n * A boolean value specifying whether audio logging is enabled in the service or not.\r\n * Audio and content logs are stored either in Microsoft-owned storage, or in your own storage account linked\r\n * to your Cognitive Services subscription (Bring Your Own Storage (BYOS) enabled Speech resource).\r\n * The logs will be removed after 30 days.\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceConnection_EnableAudioLogging,\r\n\r\n /**\r\n * The speech service connection language identifier mode.\r\n * Can be \"AtStart\" (the default), or \"Continuous\". See Language\r\n * Identification document https://aka.ms/speech/lid?pivots=programming-language-javascript\r\n * for more details.\r\n * Added in 1.25.0\r\n **/\r\n SpeechServiceConnection_LanguageIdMode,\r\n\r\n /**\r\n * A string value representing the desired endpoint version to target for Speech Recognition.\r\n * Added in version 1.21.0\r\n */\r\n SpeechServiceConnection_RecognitionEndpointVersion,\r\n\r\n /**\r\n /**\r\n * A string value the current speaker recognition scenario/mode (TextIndependentIdentification, etc.).\r\n * Added in version 1.23.0\r\n */\r\n SpeechServiceConnection_SpeakerIdMode,\r\n\r\n /**\r\n * The requested Cognitive Services Speech Service response output profanity setting.\r\n * Allowed values are \"masked\", \"removed\", and \"raw\".\r\n * Added in version 1.7.0.\r\n */\r\n SpeechServiceResponse_ProfanityOption,\r\n\r\n /**\r\n * A string value specifying which post processing option should be used by service.\r\n * Allowed values are \"TrueText\".\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceResponse_PostProcessingOption,\r\n\r\n /**\r\n * A boolean value specifying whether to include word-level timestamps in the response result.\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceResponse_RequestWordLevelTimestamps,\r\n\r\n /**\r\n * The number of times a word has to be in partial results to be returned.\r\n * Added in version 1.7.0\r\n */\r\n SpeechServiceResponse_StablePartialResultThreshold,\r\n\r\n /**\r\n * A string value specifying the output format option in the response result. Internal use only.\r\n * Added in version 1.7.0.\r\n */\r\n SpeechServiceResponse_OutputFormatOption,\r\n\r\n /**\r\n * A boolean value to request for stabilizing translation partial results by omitting words in the end.\r\n * Added in version 1.7.0.\r\n */\r\n SpeechServiceResponse_TranslationRequestStablePartialResult,\r\n\r\n /**\r\n * A boolean value specifying whether to request WordBoundary events.\r\n * @member PropertyId.SpeechServiceResponse_RequestWordBoundary\r\n * Added in version 1.21.0.\r\n */\r\n SpeechServiceResponse_RequestWordBoundary,\r\n\r\n /**\r\n * A boolean value specifying whether to request punctuation boundary in WordBoundary Events. Default is true.\r\n * @member PropertyId.SpeechServiceResponse_RequestPunctuationBoundary\r\n * Added in version 1.21.0.\r\n */\r\n SpeechServiceResponse_RequestPunctuationBoundary,\r\n\r\n /**\r\n * A boolean value specifying whether to request sentence boundary in WordBoundary Events. Default is false.\r\n * @member PropertyId.SpeechServiceResponse_RequestSentenceBoundary\r\n * Added in version 1.21.0.\r\n */\r\n SpeechServiceResponse_RequestSentenceBoundary,\r\n\r\n /**\r\n * Identifier used to connect to the backend service.\r\n * @member PropertyId.Conversation_ApplicationId\r\n */\r\n Conversation_ApplicationId,\r\n\r\n /**\r\n * Type of dialog backend to connect to.\r\n * @member PropertyId.Conversation_DialogType\r\n */\r\n Conversation_DialogType,\r\n\r\n /**\r\n * Silence timeout for listening\r\n * @member PropertyId.Conversation_Initial_Silence_Timeout\r\n */\r\n Conversation_Initial_Silence_Timeout,\r\n\r\n /**\r\n * From Id to add to speech recognition activities.\r\n * @member PropertyId.Conversation_From_Id\r\n */\r\n Conversation_From_Id,\r\n\r\n /**\r\n * ConversationId for the session.\r\n * @member PropertyId.Conversation_Conversation_Id\r\n */\r\n Conversation_Conversation_Id,\r\n\r\n /**\r\n * Comma separated list of custom voice deployment ids.\r\n * @member PropertyId.Conversation_Custom_Voice_Deployment_Ids\r\n */\r\n Conversation_Custom_Voice_Deployment_Ids,\r\n\r\n /**\r\n * Speech activity template, stamp properties from the template on the activity generated by the service for speech.\r\n * @member PropertyId.Conversation_Speech_Activity_Template\r\n * Added in version 1.10.0.\r\n */\r\n Conversation_Speech_Activity_Template,\r\n\r\n /**\r\n * Enables or disables the receipt of turn status messages as obtained on the turnStatusReceived event.\r\n * @member PropertyId.Conversation_Request_Bot_Status_Messages\r\n * Added in version 1.15.0.\r\n */\r\n Conversation_Request_Bot_Status_Messages,\r\n\r\n /**\r\n * Specifies the connection ID to be provided in the Agent configuration message, e.g. a Direct Line token for\r\n * channel authentication.\r\n * Added in version 1.15.1.\r\n */\r\n Conversation_Agent_Connection_Id,\r\n\r\n /**\r\n * The Cognitive Services Speech Service host (url). Under normal circumstances, you shouldn't have to use this property directly.\r\n * Instead, use [[SpeechConfig.fromHost]].\r\n */\r\n SpeechServiceConnection_Host,\r\n\r\n /**\r\n * Set the host for service calls to the Conversation Translator REST management and websocket calls.\r\n */\r\n ConversationTranslator_Host,\r\n\r\n /**\r\n * Optionally set the the host's display name.\r\n * Used when joining a conversation.\r\n */\r\n ConversationTranslator_Name,\r\n\r\n /**\r\n * Optionally set a value for the X-CorrelationId request header.\r\n * Used for troubleshooting errors in the server logs. It should be a valid guid.\r\n */\r\n ConversationTranslator_CorrelationId,\r\n\r\n /**\r\n * Set the conversation token to be sent to the speech service. This enables the\r\n * service to service call from the speech service to the Conversation Translator service for relaying\r\n * recognitions. For internal use.\r\n */\r\n ConversationTranslator_Token,\r\n\r\n /**\r\n * The reference text of the audio for pronunciation evaluation.\r\n * For this and the following pronunciation assessment parameters, see\r\n * https://docs.microsoft.com/azure/cognitive-services/speech-service/rest-speech-to-text#pronunciation-assessment-parameters for details.\r\n * Under normal circumstances, you shouldn't have to use this property directly.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_ReferenceText,\r\n\r\n /**\r\n * The point system for pronunciation score calibration (FivePoint or HundredMark).\r\n * Under normal circumstances, you shouldn't have to use this property directly.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_GradingSystem,\r\n\r\n /**\r\n * The pronunciation evaluation granularity (Phoneme, Word, or FullText).\r\n * Under normal circumstances, you shouldn't have to use this property directly.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_Granularity,\r\n\r\n /**\r\n * Defines if enable miscue calculation.\r\n * With this enabled, the pronounced words will be compared to the reference text,\r\n * and will be marked with omission/insertion based on the comparison. The default setting is False.\r\n * Under normal circumstances, you shouldn't have to use this property directly.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_EnableMiscue,\r\n\r\n /**\r\n * The json string of pronunciation assessment parameters\r\n * Under normal circumstances, you shouldn't have to use this property directly.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_Json,\r\n\r\n /**\r\n * Pronunciation assessment parameters.\r\n * This property is intended to be read-only. The SDK is using it internally.\r\n * Added in version 1.15.0\r\n */\r\n PronunciationAssessment_Params,\r\n\r\n /**\r\n * Version of Speaker Recognition API to use.\r\n * Added in version 1.18.0\r\n */\r\n SpeakerRecognition_Api_Version\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SessionEventArgs } from \"./Exports\";\r\n\r\n/**\r\n * Defines payload for session events like Speech Start/End Detected\r\n * @class\r\n */\r\nexport class RecognitionEventArgs extends SessionEventArgs {\r\n private privOffset: number;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(offset: number, sessionId?: string) {\r\n super(sessionId);\r\n\r\n this.privOffset = offset;\r\n }\r\n\r\n /**\r\n * Represents the message offset\r\n * @member RecognitionEventArgs.prototype.offset\r\n * @function\r\n * @public\r\n */\r\n public get offset(): number {\r\n return this.privOffset;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, ResultReason } from \"./Exports\";\r\n\r\n/**\r\n * Defines result of speech recognition.\r\n * @class RecognitionResult\r\n */\r\nexport class RecognitionResult {\r\n private privResultId: string;\r\n private privReason: ResultReason;\r\n private privText: string;\r\n private privDuration: number;\r\n private privOffset: number;\r\n private privLanguage: string;\r\n private privLanguageDetectionConfidence: string;\r\n private privErrorDetails: string;\r\n private privJson: string;\r\n private privProperties: PropertyCollection;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {string} text - The recognized text.\r\n * @param {number} duration - The duration.\r\n * @param {number} offset - The offset into the stream.\r\n * @param {string} language - Primary Language detected, if provided.\r\n * @param {string} languageDetectionConfidence - Primary Language confidence (\"Unknown,\" \"Low,\" \"Medium,\" \"High\"...), if provided.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {string} json - Additional Json, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n */\r\n public constructor(resultId?: string, reason?: ResultReason, text?: string, duration?: number,\r\n offset?: number, language?: string, languageDetectionConfidence?: string, errorDetails?: string, json?: string, properties?: PropertyCollection) {\r\n this.privResultId = resultId;\r\n this.privReason = reason;\r\n this.privText = text;\r\n this.privDuration = duration;\r\n this.privOffset = offset;\r\n this.privLanguage = language;\r\n this.privLanguageDetectionConfidence = languageDetectionConfidence;\r\n this.privErrorDetails = errorDetails;\r\n this.privJson = json;\r\n this.privProperties = properties;\r\n }\r\n\r\n /**\r\n * Specifies the result identifier.\r\n * @member RecognitionResult.prototype.resultId\r\n * @function\r\n * @public\r\n * @returns {string} Specifies the result identifier.\r\n */\r\n public get resultId(): string {\r\n return this.privResultId;\r\n }\r\n\r\n /**\r\n * Specifies status of the result.\r\n * @member RecognitionResult.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {ResultReason} Specifies status of the result.\r\n */\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n\r\n /**\r\n * Presents the recognized text in the result.\r\n * @member RecognitionResult.prototype.text\r\n * @function\r\n * @public\r\n * @returns {string} Presents the recognized text in the result.\r\n */\r\n public get text(): string {\r\n return this.privText;\r\n }\r\n\r\n /**\r\n * Duration of recognized speech in 100 nano second increments.\r\n * @member RecognitionResult.prototype.duration\r\n * @function\r\n * @public\r\n * @returns {number} Duration of recognized speech in 100 nano second increments.\r\n */\r\n public get duration(): number {\r\n return this.privDuration;\r\n }\r\n\r\n /**\r\n * Offset of recognized speech in 100 nano second increments.\r\n * @member RecognitionResult.prototype.offset\r\n * @function\r\n * @public\r\n * @returns {number} Offset of recognized speech in 100 nano second increments.\r\n */\r\n public get offset(): number {\r\n return this.privOffset;\r\n }\r\n\r\n /**\r\n * Primary Language detected.\r\n * @member RecognitionResult.prototype.language\r\n * @function\r\n * @public\r\n * @returns {string} language detected.\r\n */\r\n public get language(): string {\r\n return this.privLanguage;\r\n }\r\n\r\n /**\r\n * Primary Language detection confidence (Unknown, Low, Medium, High).\r\n * @member RecognitionResult.prototype.languageDetectionConfidence\r\n * @function\r\n * @public\r\n * @returns {string} detection confidence strength.\r\n */\r\n public get languageDetectionConfidence(): string {\r\n return this.privLanguageDetectionConfidence;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful recognition, provides details of the occurred error.\r\n * @member RecognitionResult.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} a brief description of an error.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n\r\n /**\r\n * A string containing Json serialized recognition result as it was received from the service.\r\n * @member RecognitionResult.prototype.json\r\n * @function\r\n * @private\r\n * @returns {string} Json serialized representation of the result.\r\n */\r\n public get json(): string {\r\n return this.privJson;\r\n }\r\n\r\n /**\r\n * The set of properties exposed in the result.\r\n * @member RecognitionResult.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The set of properties exposed in the result.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CognitiveSubscriptionKeyAuthentication,\r\n CognitiveTokenAuthentication,\r\n Context,\r\n IAuthentication,\r\n IConnectionFactory,\r\n OS,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig,\r\n} from \"../common.speech/Exports\";\r\nimport {\r\n Deferred,\r\n marshalPromiseToCallbacks\r\n} from \"../common/Exports\";\r\nimport {\r\n Contracts\r\n} from \"./Contracts\";\r\nimport {\r\n AudioConfig,\r\n PropertyCollection,\r\n PropertyId,\r\n RecognitionEventArgs,\r\n SessionEventArgs,\r\n SpeechRecognitionResult,\r\n} from \"./Exports\";\r\n\r\n/**\r\n * Defines the base class Recognizer which mainly contains common event handlers.\r\n * @class Recognizer\r\n */\r\nexport abstract class Recognizer {\r\n private privDisposed: boolean;\r\n protected audioConfig: AudioConfig;\r\n protected privReco: ServiceRecognizerBase;\r\n protected privProperties: PropertyCollection;\r\n private privConnectionFactory: IConnectionFactory;\r\n\r\n /**\r\n * Creates and initializes an instance of a Recognizer\r\n * @constructor\r\n * @param {AudioConfig} audioInput - An optional audio input stream associated with the recognizer\r\n */\r\n protected constructor(audioConfig: AudioConfig, properties: PropertyCollection, connectionFactory: IConnectionFactory) {\r\n this.audioConfig = (audioConfig !== undefined) ? audioConfig : AudioConfig.fromDefaultMicrophoneInput();\r\n this.privDisposed = false;\r\n this.privProperties = properties.clone();\r\n this.privConnectionFactory = connectionFactory;\r\n this.implCommonRecognizerSetup();\r\n }\r\n\r\n /**\r\n * Defines event handler for session started events.\r\n * @member Recognizer.prototype.sessionStarted\r\n * @function\r\n * @public\r\n */\r\n public sessionStarted: (sender: Recognizer, event: SessionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for session stopped events.\r\n * @member Recognizer.prototype.sessionStopped\r\n * @function\r\n * @public\r\n */\r\n public sessionStopped: (sender: Recognizer, event: SessionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for speech started events.\r\n * @member Recognizer.prototype.speechStartDetected\r\n * @function\r\n * @public\r\n */\r\n public speechStartDetected: (sender: Recognizer, event: RecognitionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for speech stopped events.\r\n * @member Recognizer.prototype.speechEndDetected\r\n * @function\r\n * @public\r\n */\r\n public speechEndDetected: (sender: Recognizer, event: RecognitionEventArgs) => void;\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member Recognizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n /**\r\n * @Internal\r\n * Internal data member to support fromRecognizer* pattern methods on other classes.\r\n * Do not use externally, object returned will change without warning or notice.\r\n */\r\n public get internalData(): object {\r\n return this.privReco;\r\n }\r\n\r\n /**\r\n * This method performs cleanup of resources.\r\n * The Boolean parameter disposing indicates whether the method is called\r\n * from Dispose (if disposing is true) or from the finalizer (if disposing is false).\r\n * Derived classes should override this method to dispose resource if needed.\r\n * @member Recognizer.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - Flag to request disposal.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposed) {\r\n return;\r\n }\r\n\r\n this.privDisposed = true;\r\n\r\n if (disposing) {\r\n if (this.privReco) {\r\n await this.privReco.audioSource.turnOff();\r\n await this.privReco.dispose();\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * This method returns the current state of the telemetry setting.\r\n * @member Recognizer.prototype.telemetryEnabled\r\n * @function\r\n * @public\r\n * @returns true if the telemetry is enabled, false otherwise.\r\n */\r\n public static get telemetryEnabled(): boolean {\r\n return ServiceRecognizerBase.telemetryDataEnabled;\r\n }\r\n\r\n /**\r\n * This method globally enables or disables telemetry.\r\n * @member Recognizer.prototype.enableTelemetry\r\n * @function\r\n * @public\r\n * @param enabled - Global setting for telemetry collection.\r\n * If set to true, telemetry information like microphone errors,\r\n * recognition errors are collected and sent to Microsoft.\r\n * If set to false, no telemetry is sent to Microsoft.\r\n */\r\n public static enableTelemetry(enabled: boolean): void {\r\n ServiceRecognizerBase.telemetryDataEnabled = enabled;\r\n }\r\n\r\n //\r\n // ################################################################################################################\r\n // IMPLEMENTATION.\r\n // Move to independent class\r\n // ################################################################################################################\r\n //\r\n protected abstract createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig;\r\n\r\n // Creates the correct service recognizer for the type\r\n protected abstract createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase;\r\n\r\n // Does the generic recognizer setup that is common across all recognizer types.\r\n protected implCommonRecognizerSetup(): void {\r\n\r\n let osPlatform = (typeof window !== \"undefined\") ? \"Browser\" : \"Node\";\r\n let osName = \"unknown\";\r\n let osVersion = \"unknown\";\r\n\r\n if (typeof navigator !== \"undefined\") {\r\n osPlatform = osPlatform + \"/\" + navigator.platform;\r\n osName = navigator.userAgent;\r\n osVersion = navigator.appVersion;\r\n }\r\n\r\n const recognizerConfig = this.createRecognizerConfig(\r\n new SpeechServiceConfig(\r\n new Context(new OS(osPlatform, osName, osVersion))));\r\n\r\n this.privReco = this.createServiceRecognizer(\r\n Recognizer.getAuthFromProperties(this.privProperties),\r\n this.privConnectionFactory,\r\n this.audioConfig,\r\n recognizerConfig);\r\n }\r\n\r\n protected async recognizeOnceAsyncImpl(recognitionMode: RecognitionMode): Promise {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n const ret: Deferred = new Deferred();\r\n\r\n await this.implRecognizerStop();\r\n await this.privReco.recognize(recognitionMode, ret.resolve, ret.reject);\r\n const result: SpeechRecognitionResult = await ret.promise;\r\n await this.implRecognizerStop();\r\n\r\n return result;\r\n\r\n }\r\n\r\n protected async startContinuousRecognitionAsyncImpl(recognitionMode: RecognitionMode): Promise {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n\r\n await this.implRecognizerStop();\r\n await this.privReco.recognize(recognitionMode, undefined, undefined);\r\n }\r\n\r\n protected async stopContinuousRecognitionAsyncImpl(): Promise {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n await this.implRecognizerStop();\r\n }\r\n\r\n protected async implRecognizerStop(): Promise {\r\n if (this.privReco) {\r\n await this.privReco.stopRecognizing();\r\n }\r\n return;\r\n }\r\n\r\n protected static getAuthFromProperties(properties: PropertyCollection): IAuthentication {\r\n const subscriptionKey = properties.getProperty(PropertyId.SpeechServiceConnection_Key, undefined);\r\n const authentication = (subscriptionKey && subscriptionKey !== \"\") ?\r\n new CognitiveSubscriptionKeyAuthentication(subscriptionKey) :\r\n new CognitiveTokenAuthentication(\r\n (): Promise => {\r\n const authorizationToken = properties.getProperty(PropertyId.SpeechServiceAuthorization_Token, undefined);\r\n return Promise.resolve(authorizationToken);\r\n },\r\n (): Promise => {\r\n const authorizationToken = properties.getProperty(PropertyId.SpeechServiceAuthorization_Token, undefined);\r\n return Promise.resolve(authorizationToken);\r\n });\r\n\r\n return authentication;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the possible reasons a recognition result might be generated.\r\n * @class ResultReason\r\n */\r\nexport enum ResultReason {\r\n /**\r\n * Indicates speech could not be recognized. More details\r\n * can be found in the NoMatchDetails object.\r\n * @member ResultReason.NoMatch\r\n */\r\n NoMatch,\r\n\r\n /**\r\n * Indicates that the recognition was canceled. More details\r\n * can be found using the CancellationDetails object.\r\n * @member ResultReason.Canceled\r\n */\r\n Canceled,\r\n\r\n /**\r\n * Indicates the speech result contains hypothesis text.\r\n * @member ResultReason.RecognizedSpeech\r\n */\r\n RecognizingSpeech,\r\n\r\n /**\r\n * Indicates the speech result contains final text that has been recognized.\r\n * Speech Recognition is now complete for this phrase.\r\n * @member ResultReason.RecognizedSpeech\r\n */\r\n RecognizedSpeech,\r\n\r\n /**\r\n * Indicates the speech result contains a finalized acceptance of a provided keyword.\r\n * Speech recognition will continue unless otherwise configured.\r\n * @member ResultReason.RecognizedKeyword\r\n */\r\n RecognizedKeyword,\r\n\r\n /**\r\n * Indicates the intent result contains hypothesis text and intent.\r\n * @member ResultReason.RecognizingIntent\r\n */\r\n RecognizingIntent,\r\n\r\n /**\r\n * Indicates the intent result contains final text and intent.\r\n * Speech Recognition and Intent determination are now complete for this phrase.\r\n * @member ResultReason.RecognizedIntent\r\n */\r\n RecognizedIntent,\r\n\r\n /**\r\n * Indicates the translation result contains hypothesis text and its translation(s).\r\n * @member ResultReason.TranslatingSpeech\r\n */\r\n TranslatingSpeech,\r\n\r\n /**\r\n * Indicates the translation result contains final text and corresponding translation(s).\r\n * Speech Recognition and Translation are now complete for this phrase.\r\n * @member ResultReason.TranslatedSpeech\r\n */\r\n TranslatedSpeech,\r\n\r\n /**\r\n * Indicates the synthesized audio result contains a non-zero amount of audio data\r\n * @member ResultReason.SynthesizingAudio\r\n */\r\n SynthesizingAudio,\r\n\r\n /**\r\n * Indicates the synthesized audio is now complete for this phrase.\r\n * @member ResultReason.SynthesizingAudioCompleted\r\n */\r\n SynthesizingAudioCompleted,\r\n\r\n /**\r\n * Indicates the speech synthesis is now started\r\n * @member ResultReason.SynthesizingAudioStarted\r\n */\r\n SynthesizingAudioStarted,\r\n\r\n /**\r\n * Indicates the voice profile is being enrolled and customers need to send more audio to create a voice profile.\r\n * @member ResultReason.EnrollingVoiceProfile\r\n */\r\n EnrollingVoiceProfile,\r\n\r\n /**\r\n * Indicates the voice profile has been enrolled.\r\n * @member ResultReason.EnrolledVoiceProfile\r\n */\r\n EnrolledVoiceProfile,\r\n\r\n /**\r\n * Indicates successful identification of some speakers.\r\n * @member ResultReason.RecognizedSpeakers\r\n */\r\n RecognizedSpeakers,\r\n\r\n /**\r\n * Indicates successfully verified one speaker.\r\n * @member ResultReason.RecognizedSpeaker\r\n */\r\n RecognizedSpeaker,\r\n\r\n /**\r\n * Indicates a voice profile has been reset successfully.\r\n * @member ResultReason.ResetVoiceProfile\r\n */\r\n ResetVoiceProfile,\r\n\r\n /**\r\n * Indicates a voice profile has been deleted successfully.\r\n * @member ResultReason.DeletedVoiceProfile\r\n */\r\n DeletedVoiceProfile,\r\n\r\n /**\r\n * Indicates synthesis voices list has been successfully retrieved.\r\n * @member ResultReason.VoicesListRetrieved\r\n */\r\n VoicesListRetrieved,\r\n}\r\n","//\r\n// Copyright (c) Microsoft. All rights reserved.\r\n// Licensed under the MIT license. See LICENSE.md file in the project root for full license information.\r\n//\r\n\r\nimport { SessionEventArgs } from \"./Exports\";\r\n\r\n/**\r\n * Defines payload for any Service message event\r\n * Added in version 1.9.0\r\n */\r\n\r\nexport class ServiceEventArgs extends SessionEventArgs {\r\n private privJsonResult: string;\r\n private privEventName: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} json - json payload of the USP message.\r\n */\r\n public constructor(json: string, name: string, sessionId?: string) {\r\n super(sessionId);\r\n this.privJsonResult = json;\r\n this.privEventName = name;\r\n }\r\n\r\n public get jsonString(): string {\r\n return this.privJsonResult;\r\n }\r\n\r\n public get eventName(): string {\r\n return this.privEventName;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines channels used to pass property settings to service.\r\n * Added in version 1.7.0.\r\n */\r\nexport enum ServicePropertyChannel {\r\n /**\r\n * Uses URI query parameter to pass property settings to service.\r\n */\r\n UriQueryParameter = 0.\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines content for session events like SessionStarted/Stopped, SoundStarted/Stopped.\r\n * @class SessionEventArgs\r\n */\r\nexport class SessionEventArgs {\r\n private privSessionId: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(sessionId: string) {\r\n this.privSessionId = sessionId;\r\n }\r\n\r\n /**\r\n * Represents the session identifier.\r\n * @member SessionEventArgs.prototype.sessionId\r\n * @function\r\n * @public\r\n * @returns {string} Represents the session identifier.\r\n */\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts\";\r\n\r\n/**\r\n * Source Language configuration.\r\n * @class SourceLanguageConfig\r\n */\r\nexport class SourceLanguageConfig {\r\n private privLanguage: string;\r\n private privEndpointId: string;\r\n\r\n private constructor(language: string, endpointId?: string) {\r\n Contracts.throwIfNullOrUndefined(language, \"language\");\r\n this.privLanguage = language;\r\n this.privEndpointId = endpointId;\r\n }\r\n\r\n /**\r\n * @member SourceLanguageConfig.fromLanguage\r\n * @function\r\n * @public\r\n * @param {string} language language (eg. \"en-US\") value of config.\r\n * @param {string?} endpointId endpointId of model bound to given language of config.\r\n * @return {SourceLanguageConfig} Instance of SourceLanguageConfig\r\n * @summary Creates an instance of the SourceLanguageConfig with the given language and optional endpointId.\r\n * Added in version 1.13.0.\r\n */\r\n public static fromLanguage(language: string, endpointId?: string): SourceLanguageConfig {\r\n return new SourceLanguageConfig(language, endpointId);\r\n }\r\n\r\n public get language(): string {\r\n return this.privLanguage;\r\n }\r\n\r\n public get endpointId(): string {\r\n return this.privEndpointId;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts\";\r\nimport { SpeakerRecognitionModel } from \"./SpeakerRecognitionModel\";\r\nimport {\r\n VoiceProfile,\r\n VoiceProfileType,\r\n} from \"./Exports\";\r\n\r\n/**\r\n * Defines SpeakerIdentificationModel class for Speaker Recognition\r\n * Model contains a set of profiles against which to identify speaker(s)\r\n * @class SpeakerIdentificationModel\r\n */\r\nexport class SpeakerIdentificationModel implements SpeakerRecognitionModel {\r\n private privVoiceProfiles: VoiceProfile[] = [];\r\n private privProfileIds: string[] = [];\r\n\r\n private constructor(profiles: VoiceProfile[]) {\r\n Contracts.throwIfNullOrUndefined(profiles, \"VoiceProfiles\");\r\n if (profiles.length === 0) {\r\n throw new Error(\"Empty Voice Profiles array\");\r\n }\r\n for (const profile of profiles) {\r\n if (profile.profileType !== VoiceProfileType.TextIndependentIdentification) {\r\n throw new Error(\"Identification model can only be created from Identification profile: \" + profile.profileId);\r\n }\r\n this.privVoiceProfiles.push(profile);\r\n this.privProfileIds.push(profile.profileId);\r\n }\r\n }\r\n public static fromProfiles(profiles: VoiceProfile[]): SpeakerIdentificationModel {\r\n return new SpeakerIdentificationModel(profiles);\r\n }\r\n\r\n public get voiceProfileIds(): string {\r\n return this.privProfileIds.join(\",\");\r\n }\r\n\r\n public get profileIds(): string[] {\r\n return this.privProfileIds;\r\n }\r\n\r\n public get scenario(): string {\r\n return \"TextIndependentIdentification\";\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { CancellationErrorCodePropertyName, SpeakerResponse } from \"../common.speech/Exports\";\r\nimport {\r\n CancellationDetailsBase,\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyCollection,\r\n PropertyId,\r\n ResultReason,\r\n} from \"./Exports\";\r\n\r\nexport enum SpeakerRecognitionResultType {\r\n Verify,\r\n Identify\r\n}\r\n\r\n/**\r\n * Output format\r\n * @class SpeakerRecognitionResult\r\n */\r\nexport class SpeakerRecognitionResult {\r\n private privReason: ResultReason;\r\n private privProperties: PropertyCollection;\r\n private privProfileId: string;\r\n private privScore: number;\r\n private privErrorDetails: string;\r\n\r\n public constructor(response: SpeakerResponse, resultReason: ResultReason = ResultReason.RecognizedSpeaker, cancellationErrorCode: CancellationErrorCode = CancellationErrorCode.NoError, errorDetails: string = \"\") {\r\n this.privProperties = new PropertyCollection();\r\n const resultType = response.scenario === \"TextIndependentIdentification\" ? SpeakerRecognitionResultType.Identify : SpeakerRecognitionResultType.Verify;\r\n this.privReason = resultReason;\r\n if (this.privReason !== ResultReason.Canceled) {\r\n if (resultType === SpeakerRecognitionResultType.Identify) {\r\n this.privProfileId = response.identificationResult.identifiedProfile.profileId;\r\n this.privScore = response.identificationResult.identifiedProfile.score;\r\n this.privReason = ResultReason.RecognizedSpeakers;\r\n } else {\r\n this.privScore = response.verificationResult.score;\r\n if (response.verificationResult.recognitionResult.toLowerCase() !== \"accept\") {\r\n this.privReason = ResultReason.NoMatch;\r\n }\r\n if (response.verificationResult.profileId !== undefined && response.verificationResult.profileId !== \"\") {\r\n this.privProfileId = response.verificationResult.profileId;\r\n }\r\n }\r\n } else {\r\n this.privErrorDetails = errorDetails;\r\n this.privProperties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[cancellationErrorCode]);\r\n }\r\n this.privProperties.setProperty(PropertyId.SpeechServiceResponse_JsonResult, JSON.stringify(response));\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n\r\n public get profileId(): string {\r\n return this.privProfileId;\r\n }\r\n\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n\r\n public get score(): number {\r\n return this.privScore;\r\n }\r\n}\r\n\r\n/**\r\n * @class SpeakerRecognitionCancellationDetails\r\n */\r\nexport class SpeakerRecognitionCancellationDetails extends CancellationDetailsBase {\r\n\r\n private constructor(reason: CancellationReason, errorDetails: string, errorCode: CancellationErrorCode) {\r\n super(reason, errorDetails, errorCode);\r\n }\r\n\r\n /**\r\n * Creates an instance of SpeakerRecognitionCancellationDetails object for the canceled SpeakerRecognitionResult\r\n * @member SpeakerRecognitionCancellationDetails.fromResult\r\n * @function\r\n * @public\r\n * @param {SpeakerRecognitionResult} result - The result that was canceled.\r\n * @returns {SpeakerRecognitionCancellationDetails} The cancellation details object being created.\r\n */\r\n public static fromResult(result: SpeakerRecognitionResult): SpeakerRecognitionCancellationDetails {\r\n const reason = CancellationReason.Error;\r\n let errorCode: CancellationErrorCode = CancellationErrorCode.NoError;\r\n\r\n if (!!result.properties) {\r\n errorCode = CancellationErrorCode[result.properties.getProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.NoError]) as keyof typeof CancellationErrorCode];\r\n }\r\n\r\n return new SpeakerRecognitionCancellationDetails(reason, result.errorDetails, errorCode);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeakerRecognitionConnectionFactory,\r\n SpeakerServiceRecognizer,\r\n SpeechServiceConfig\r\n} from \"../common.speech/Exports\";\r\nimport { SpeakerRecognitionModel } from \"./SpeakerRecognitionModel\";\r\nimport { AudioConfig, AudioConfigImpl } from \"./Audio/AudioConfig\";\r\nimport { Contracts } from \"./Contracts\";\r\nimport {\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n SpeakerIdentificationModel,\r\n SpeakerRecognitionResult,\r\n SpeakerVerificationModel,\r\n} from \"./Exports\";\r\nimport { SpeechConfig, SpeechConfigImpl } from \"./SpeechConfig\";\r\n\r\n/**\r\n * Defines SpeakerRecognizer class for Speaker Recognition\r\n * Handles operations from user for Voice Profile operations (e.g. createProfile, deleteProfile)\r\n * @class SpeakerRecognizer\r\n */\r\nexport class SpeakerRecognizer extends Recognizer {\r\n protected privProperties: PropertyCollection;\r\n private privDisposedSpeakerRecognizer: boolean;\r\n private privAudioConfigImpl: AudioConfigImpl;\r\n /**\r\n * Initializes an instance of the SpeakerRecognizer.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - The set of configuration properties.\r\n * @param {AudioConfig} audioConfig - An optional audio input config associated with the recognizer\r\n */\r\n public constructor(speechConfig: SpeechConfig, audioConfig: AudioConfig) {\r\n Contracts.throwIfNullOrUndefined(speechConfig, \"speechConfig\");\r\n const configImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNullOrUndefined(configImpl, \"speechConfig\");\r\n\r\n super(audioConfig, configImpl.properties, new SpeakerRecognitionConnectionFactory());\r\n this.privAudioConfigImpl = audioConfig as AudioConfigImpl;\r\n Contracts.throwIfNull(this.privAudioConfigImpl, \"audioConfig\");\r\n\r\n this.privDisposedSpeakerRecognizer = false;\r\n this.privProperties = configImpl.properties;\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member SpeakerRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member SpeakerRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this SpeakerRecognizer.\r\n * @member SpeakerRecognizer.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this SpeakerRecognizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Get recognition result for model using given audio\r\n * @member SpeakerRecognizer.prototype.recognizeOnceAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {SpeakerIdentificationModel | SpeakerVerificationModel} model Model containing Voice Profiles to be identified\r\n * @param cb - Callback invoked once result is returned.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public async recognizeOnceAsync(model: SpeakerIdentificationModel | SpeakerVerificationModel): Promise {\r\n Contracts.throwIfDisposed(this.privDisposedSpeakerRecognizer);\r\n\r\n return this.recognizeSpeakerOnceAsyncImpl(model);\r\n }\r\n\r\n /**\r\n * Included for compatibility\r\n * @member SpeakerRecognizer.prototype.close\r\n * @function\r\n * @public\r\n * @async\r\n */\r\n public async close(): Promise {\r\n Contracts.throwIfDisposed(this.privDisposedSpeakerRecognizer);\r\n await this.dispose(true);\r\n }\r\n\r\n protected async recognizeSpeakerOnceAsyncImpl(model: SpeakerRecognitionModel): Promise {\r\n Contracts.throwIfDisposed(this.privDisposedSpeakerRecognizer);\r\n\r\n await this.implRecognizerStop();\r\n const result: SpeakerRecognitionResult = await this.privReco.recognizeSpeaker(model);\r\n await this.implRecognizerStop();\r\n\r\n return result;\r\n }\r\n\r\n protected async implRecognizerStop(): Promise {\r\n if (this.privReco) {\r\n await this.privReco.stopRecognizing();\r\n }\r\n return;\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(authentication: IAuthentication, connectionFactory: IConnectionFactory, audioConfig: AudioConfig, recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const audioImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n return new SpeakerServiceRecognizer(authentication, connectionFactory, audioImpl, recognizerConfig, this);\r\n }\r\n\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedSpeakerRecognizer) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privDisposedSpeakerRecognizer = true;\r\n await super.dispose(disposing);\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts\";\r\nimport { SpeakerRecognitionModel } from \"./SpeakerRecognitionModel\";\r\nimport {\r\n VoiceProfile,\r\n VoiceProfileType,\r\n} from \"./Exports\";\r\n\r\n/**\r\n * Defines SpeakerVerificationModel class for Speaker Recognition\r\n * Model contains a profile against which to verify a speaker\r\n * @class SpeakerVerificationModel\r\n */\r\nexport class SpeakerVerificationModel implements SpeakerRecognitionModel {\r\n private privVoiceProfile: VoiceProfile;\r\n\r\n private constructor(profile: VoiceProfile) {\r\n Contracts.throwIfNullOrUndefined(profile, \"VoiceProfile\");\r\n if (profile.profileType === VoiceProfileType.TextIndependentIdentification) {\r\n throw new Error(\"Verification model cannot be created from Identification profile\");\r\n }\r\n this.privVoiceProfile = profile;\r\n }\r\n\r\n public static fromProfile(profile: VoiceProfile): SpeakerVerificationModel {\r\n return new SpeakerVerificationModel(profile);\r\n }\r\n\r\n public get voiceProfile(): VoiceProfile {\r\n return this.privVoiceProfile;\r\n }\r\n\r\n public get profileIds(): string[] {\r\n return [ this.voiceProfile.profileId ];\r\n }\r\n\r\n public get scenario(): string {\r\n if (this.voiceProfile.profileType === VoiceProfileType.TextDependentVerification) {\r\n return \"TextDependentVerification\";\r\n } else {\r\n return \"TextIndependentVerification\";\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n ForceDictationPropertyName,\r\n OutputFormatPropertyName,\r\n ServicePropertiesPropertyName\r\n} from \"../common.speech/Exports\";\r\nimport {IStringDictionary} from \"../common/Exports\";\r\nimport {Contracts} from \"./Contracts\";\r\nimport {\r\n OutputFormat,\r\n ProfanityOption,\r\n PropertyCollection,\r\n PropertyId,\r\n ServicePropertyChannel,\r\n SpeechSynthesisOutputFormat,\r\n} from \"./Exports\";\r\n\r\n/**\r\n * Speech configuration.\r\n * @class SpeechConfig\r\n */\r\nexport abstract class SpeechConfig {\r\n /**\r\n * Creates and initializes an instance.\r\n * @constructor\r\n */\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n /**\r\n * Static instance of SpeechConfig returned by passing subscriptionKey and service region.\r\n * Note: Please use your LanguageUnderstanding subscription key in case you want to use the Intent recognizer.\r\n * @member SpeechConfig.fromSubscription\r\n * @function\r\n * @public\r\n * @param {string} subscriptionKey - The subscription key.\r\n * @param {string} region - The region name (see the region page).\r\n * @returns {SpeechConfig} The speech factory\r\n */\r\n public static fromSubscription(subscriptionKey: string, region: string): SpeechConfig {\r\n Contracts.throwIfNullOrWhitespace(subscriptionKey, \"subscriptionKey\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const speechImpl: SpeechConfigImpl = new SpeechConfigImpl();\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_IntentRegion, region);\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n\r\n return speechImpl;\r\n }\r\n\r\n /**\r\n * Creates an instance of the speech config with specified endpoint and subscription key.\r\n * This method is intended only for users who use a non-standard service endpoint or parameters.\r\n * Note: Please use your LanguageUnderstanding subscription key in case you want to use the Intent recognizer.\r\n * Note: The query parameters specified in the endpoint URL are not changed, even if they are set by any other APIs.\r\n * For example, if language is defined in the uri as query parameter \"language=de-DE\", and also set by\r\n * SpeechConfig.speechRecognitionLanguage = \"en-US\", the language setting in uri takes precedence,\r\n * and the effective language is \"de-DE\". Only the parameters that are not specified in the\r\n * endpoint URL can be set by other APIs.\r\n * Note: To use authorization token with fromEndpoint, pass an empty string to the subscriptionKey in the\r\n * fromEndpoint method, and then set authorizationToken=\"token\" on the created SpeechConfig instance to\r\n * use the authorization token.\r\n * @member SpeechConfig.fromEndpoint\r\n * @function\r\n * @public\r\n * @param {URL} endpoint - The service endpoint to connect to.\r\n * @param {string} subscriptionKey - The subscription key. If a subscription key is not specified, an authorization token must be set.\r\n * @returns {SpeechConfig} A speech factory instance.\r\n */\r\n public static fromEndpoint(endpoint: URL, subscriptionKey?: string): SpeechConfig {\r\n Contracts.throwIfNull(endpoint, \"endpoint\");\r\n\r\n const speechImpl: SpeechConfigImpl = new SpeechConfigImpl();\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Endpoint, endpoint.href);\r\n\r\n if (undefined !== subscriptionKey) {\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n }\r\n return speechImpl;\r\n }\r\n\r\n /**\r\n * Creates an instance of the speech config with specified host and subscription key.\r\n * This method is intended only for users who use a non-default service host. Standard resource path will be assumed.\r\n * For services with a non-standard resource path or no path at all, use fromEndpoint instead.\r\n * Note: Query parameters are not allowed in the host URI and must be set by other APIs.\r\n * Note: To use an authorization token with fromHost, use fromHost(URL),\r\n * and then set the AuthorizationToken property on the created SpeechConfig instance.\r\n * Note: Added in version 1.9.0.\r\n * @member SpeechConfig.fromHost\r\n * @function\r\n * @public\r\n * @param {URL} host - The service endpoint to connect to. Format is \"protocol://host:port\" where \":port\" is optional.\r\n * @param {string} subscriptionKey - The subscription key. If a subscription key is not specified, an authorization token must be set.\r\n * @returns {SpeechConfig} A speech factory instance.\r\n */\r\n public static fromHost(hostName: URL, subscriptionKey?: string): SpeechConfig {\r\n Contracts.throwIfNull(hostName, \"hostName\");\r\n\r\n const speechImpl: SpeechConfigImpl = new SpeechConfigImpl();\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Host, hostName.protocol + \"//\" + hostName.hostname + (hostName.port === \"\" ? \"\" : \":\" + hostName.port));\r\n\r\n if (undefined !== subscriptionKey) {\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n }\r\n return speechImpl;\r\n }\r\n\r\n /**\r\n * Creates an instance of the speech factory with specified initial authorization token and region.\r\n * Note: The caller needs to ensure that the authorization token is valid. Before the authorization token\r\n * expires, the caller needs to refresh it by calling this setter with a new valid token.\r\n * Note: Please use a token derived from your LanguageUnderstanding subscription key in case you want\r\n * to use the Intent recognizer. As configuration values are copied when creating a new recognizer,\r\n * the new token value will not apply to recognizers that have already been created. For recognizers\r\n * that have been created before, you need to set authorization token of the corresponding recognizer\r\n * to refresh the token. Otherwise, the recognizers will encounter errors during recognition.\r\n * @member SpeechConfig.fromAuthorizationToken\r\n * @function\r\n * @public\r\n * @param {string} authorizationToken - The initial authorization token.\r\n * @param {string} region - The region name (see the region page).\r\n * @returns {SpeechConfig} A speech factory instance.\r\n */\r\n public static fromAuthorizationToken(authorizationToken: string, region: string): SpeechConfig {\r\n Contracts.throwIfNull(authorizationToken, \"authorizationToken\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const speechImpl: SpeechConfigImpl = new SpeechConfigImpl();\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_IntentRegion, region);\r\n speechImpl.authorizationToken = authorizationToken;\r\n return speechImpl;\r\n }\r\n\r\n /**\r\n * Sets the proxy configuration.\r\n * Only relevant in Node.js environments.\r\n * Added in version 1.4.0.\r\n * @param proxyHostName The host name of the proxy server.\r\n * @param proxyPort The port number of the proxy server.\r\n */\r\n public abstract setProxy(proxyHostName: string, proxyPort: number): void;\r\n\r\n /**\r\n * Sets the proxy configuration.\r\n * Only relevant in Node.js environments.\r\n * Added in version 1.4.0.\r\n * @param proxyHostName The host name of the proxy server, without the protocol scheme (http://)\r\n * @param proxyPort The port number of the proxy server.\r\n * @param proxyUserName The user name of the proxy server.\r\n * @param proxyPassword The password of the proxy server.\r\n */\r\n public abstract setProxy(proxyHostName: string, proxyPort: number, proxyUserName: string, proxyPassword: string): void;\r\n\r\n /**\r\n * Gets the authorization token.\r\n * @member SpeechConfig.prototype.authorizationToken\r\n * @function\r\n * @public\r\n */\r\n public abstract get authorizationToken(): string;\r\n\r\n /**\r\n * Gets/Sets the authorization token.\r\n * Note: The caller needs to ensure that the authorization token is valid. Before the authorization token\r\n * expires, the caller needs to refresh it by calling this setter with a new valid token.\r\n * @member SpeechConfig.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public abstract set authorizationToken(value: string);\r\n\r\n /**\r\n * Returns the configured language.\r\n * @member SpeechConfig.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n */\r\n public abstract get speechRecognitionLanguage(): string;\r\n\r\n /**\r\n * Gets/Sets the input language.\r\n * @member SpeechConfig.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public abstract set speechRecognitionLanguage(value: string);\r\n\r\n /**\r\n * Sets an arbitrary property.\r\n * @member SpeechConfig.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string | PropertyId} name - The name of the property to set.\r\n * @param {string} value - The new value of the property.\r\n */\r\n public abstract setProperty(name: string | PropertyId, value: string): void;\r\n\r\n /**\r\n * Returns the current value of an arbitrary property.\r\n * @member SpeechConfig.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property to query.\r\n * @param {string} def - The value to return in case the property is not known.\r\n * @returns {string} The current value, or provided default, of the given property.\r\n */\r\n public abstract getProperty(name: string, def?: string): string;\r\n\r\n /**\r\n * Gets speech recognition output format (simple or detailed).\r\n * Note: This output format is for speech recognition result, use [SpeechConfig.speechSynthesisOutputFormat] to\r\n * get synthesized audio output format.\r\n * @member SpeechConfig.prototype.outputFormat\r\n * @function\r\n * @public\r\n * @returns {OutputFormat} Returns the output format.\r\n */\r\n public abstract get outputFormat(): OutputFormat;\r\n\r\n /**\r\n * Gets/Sets speech recognition output format (simple or detailed).\r\n * Note: This output format is for speech recognition result, use [SpeechConfig.speechSynthesisOutputFormat] to\r\n * set synthesized audio output format.\r\n * @member SpeechConfig.prototype.outputFormat\r\n * @function\r\n * @public\r\n */\r\n public abstract set outputFormat(format: OutputFormat);\r\n\r\n /**\r\n * Gets the endpoint ID of a customized speech model that is used for speech recognition.\r\n * @member SpeechConfig.prototype.endpointId\r\n * @function\r\n * @public\r\n * @return {string} The endpoint ID\r\n */\r\n public abstract get endpointId(): string;\r\n\r\n /**\r\n * Gets/Sets the endpoint ID of a customized speech model that is used for speech recognition.\r\n * @member SpeechConfig.prototype.endpointId\r\n * @function\r\n * @public\r\n * @param {string} value - The endpoint ID\r\n */\r\n public abstract set endpointId(value: string);\r\n\r\n /**\r\n * Closes the configuration.\r\n * @member SpeechConfig.prototype.close\r\n * @function\r\n * @public\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n public close(): void { }\r\n\r\n /**\r\n * @member SpeechConfig.prototype.subscriptionKey\r\n * @function\r\n * @public\r\n * @return {string} The subscription key set on the config.\r\n */\r\n public abstract get subscriptionKey(): string;\r\n\r\n /**\r\n * @member SpeechConfig.prototype.region\r\n * @function\r\n * @public\r\n * @return {region} The region set on the config.\r\n */\r\n public abstract get region(): string;\r\n\r\n /**\r\n * Sets a property value that will be passed to service using the specified channel.\r\n * Added in version 1.7.0.\r\n * @member SpeechConfig.prototype.setServiceProperty\r\n * @function\r\n * @public\r\n * @param {name} The name of the property.\r\n * @param {value} Value to set.\r\n * @param {channel} The channel used to pass the specified property to service.\r\n */\r\n public abstract setServiceProperty(name: string, value: string, channel: ServicePropertyChannel): void;\r\n\r\n /**\r\n * Sets profanity option.\r\n * Added in version 1.7.0.\r\n * @member SpeechConfig.prototype.setProfanity\r\n * @function\r\n * @public\r\n * @param {profanity} Profanity option to set.\r\n */\r\n public abstract setProfanity(profanity: ProfanityOption): void;\r\n\r\n /**\r\n * Enable audio logging in service.\r\n * Audio and content logs are stored either in Microsoft-owned storage, or in your own storage account linked\r\n * to your Cognitive Services subscription (Bring Your Own Storage (BYOS) enabled Speech resource).\r\n * The logs will be removed after 30 days.\r\n * Added in version 1.7.0.\r\n * @member SpeechConfig.prototype.enableAudioLogging\r\n * @function\r\n * @public\r\n */\r\n public abstract enableAudioLogging(): void;\r\n\r\n /**\r\n * Includes word-level timestamps.\r\n * Added in version 1.7.0.\r\n * @member SpeechConfig.prototype.requestWordLevelTimestamps\r\n * @function\r\n * @public\r\n */\r\n public abstract requestWordLevelTimestamps(): void;\r\n\r\n /**\r\n * Enable dictation. Only supported in speech continuous recognition.\r\n * Added in version 1.7.0.\r\n * @member SpeechConfig.prototype.enableDictation\r\n * @function\r\n * @public\r\n */\r\n public abstract enableDictation(): void;\r\n\r\n /**\r\n * Gets the language of the speech synthesizer.\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisLanguage\r\n * @function\r\n * @public\r\n * @returns {string} Returns the speech synthesis language.\r\n */\r\n public abstract get speechSynthesisLanguage(): string;\r\n\r\n /**\r\n * Sets the language of the speech synthesizer.\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisLanguage\r\n * @function\r\n * @public\r\n */\r\n public abstract set speechSynthesisLanguage(language: string);\r\n\r\n /**\r\n * Gets the voice of the speech synthesizer.\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisVoiceName\r\n * @function\r\n * @public\r\n * @returns {string} Returns the speech synthesis voice.\r\n */\r\n public abstract get speechSynthesisVoiceName(): string;\r\n\r\n /**\r\n * Sets the voice of the speech synthesizer. (see available voices).\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisVoiceName\r\n * @function\r\n * @public\r\n */\r\n public abstract set speechSynthesisVoiceName(voice: string);\r\n\r\n /**\r\n * Gets the speech synthesis output format.\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisOutputFormat\r\n * @function\r\n * @public\r\n * @returns {SpeechSynthesisOutputFormat} Returns the speech synthesis output format\r\n */\r\n public abstract get speechSynthesisOutputFormat(): SpeechSynthesisOutputFormat;\r\n\r\n /**\r\n * Sets the speech synthesis output format (e.g. Riff16Khz16BitMonoPcm).\r\n * The default format is Audio16Khz64KBitRateMonoMp3 for browser and Riff16Khz16BitMonoPcm for Node.JS.\r\n * Added in version 1.11.0.\r\n * @member SpeechConfig.prototype.speechSynthesisOutputFormat\r\n * @function\r\n * @public\r\n */\r\n public abstract set speechSynthesisOutputFormat(format: SpeechSynthesisOutputFormat);\r\n}\r\n\r\n/**\r\n * @public\r\n * @class SpeechConfigImpl\r\n */\r\nexport class SpeechConfigImpl extends SpeechConfig {\r\n\r\n private privProperties: PropertyCollection;\r\n\r\n public constructor() {\r\n super();\r\n this.privProperties = new PropertyCollection();\r\n this.speechRecognitionLanguage = \"en-US\"; // Should we have a default?\r\n this.outputFormat = OutputFormat.Simple;\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get endPoint(): URL {\r\n return new URL(this.privProperties.getProperty(PropertyId.SpeechServiceConnection_Endpoint));\r\n }\r\n\r\n public get subscriptionKey(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_Key);\r\n }\r\n\r\n public get region(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n }\r\n\r\n public get authorizationToken(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n public set authorizationToken(value: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceAuthorization_Token, value);\r\n }\r\n\r\n public get speechRecognitionLanguage(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n public set speechRecognitionLanguage(value: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_RecoLanguage, value);\r\n }\r\n\r\n public get autoDetectSourceLanguages(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages);\r\n }\r\n\r\n public set autoDetectSourceLanguages(value: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages, value);\r\n }\r\n\r\n public get outputFormat(): OutputFormat {\r\n return OutputFormat[this.privProperties.getProperty(OutputFormatPropertyName, undefined) as keyof typeof OutputFormat];\r\n }\r\n\r\n public set outputFormat(value: OutputFormat) {\r\n this.privProperties.setProperty(OutputFormatPropertyName, OutputFormat[value]);\r\n }\r\n\r\n public get endpointId(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_EndpointId);\r\n }\r\n\r\n public set endpointId(value: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_EndpointId, value);\r\n }\r\n\r\n public setProperty(name: string | PropertyId, value: string): void {\r\n Contracts.throwIfNull(value, \"value\");\r\n\r\n this.privProperties.setProperty(name, value);\r\n }\r\n\r\n public getProperty(name: string | PropertyId, def?: string): string {\r\n\r\n return this.privProperties.getProperty(name, def);\r\n }\r\n\r\n public setProxy(proxyHostName: string, proxyPort: number): void;\r\n public setProxy(proxyHostName: string, proxyPort: number, proxyUserName: string, proxyPassword: string): void;\r\n public setProxy(proxyHostName: any, proxyPort: any, proxyUserName?: any, proxyPassword?: any): void {\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyHostName], proxyHostName as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyPort], proxyPort as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyUserName], proxyUserName as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyPassword], proxyPassword as string);\r\n }\r\n\r\n public setServiceProperty(name: string, value: string): void {\r\n const currentProperties: IStringDictionary = JSON.parse(this.privProperties.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n\r\n currentProperties[name] = value;\r\n\r\n this.privProperties.setProperty(ServicePropertiesPropertyName, JSON.stringify(currentProperties));\r\n }\r\n\r\n public setProfanity(profanity: ProfanityOption): void {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceResponse_ProfanityOption, ProfanityOption[profanity]);\r\n }\r\n\r\n public enableAudioLogging(): void {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging, \"true\");\r\n }\r\n public requestWordLevelTimestamps(): void {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps, \"true\");\r\n }\r\n public enableDictation(): void {\r\n this.privProperties.setProperty(ForceDictationPropertyName, \"true\");\r\n }\r\n\r\n public clone(): SpeechConfigImpl {\r\n const ret: SpeechConfigImpl = new SpeechConfigImpl();\r\n ret.privProperties = this.privProperties.clone();\r\n return ret;\r\n }\r\n\r\n public get speechSynthesisLanguage(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_SynthLanguage);\r\n }\r\n\r\n public set speechSynthesisLanguage(language: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_SynthLanguage, language);\r\n }\r\n\r\n public get speechSynthesisVoiceName(): string {\r\n return this.privProperties.getProperty(PropertyId.SpeechServiceConnection_SynthVoice);\r\n }\r\n\r\n public set speechSynthesisVoiceName(voice: string) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_SynthVoice, voice);\r\n }\r\n\r\n public get speechSynthesisOutputFormat(): SpeechSynthesisOutputFormat {\r\n return SpeechSynthesisOutputFormat[this.privProperties.getProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, undefined) as keyof typeof SpeechSynthesisOutputFormat];\r\n }\r\n\r\n public set speechSynthesisOutputFormat(format: SpeechSynthesisOutputFormat) {\r\n this.privProperties.setProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, SpeechSynthesisOutputFormat[format]);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n CancellationEventArgsBase,\r\n} from \"./CancellationEventArgsBase\";\r\n\r\nexport class SpeechRecognitionCanceledEventArgs extends CancellationEventArgsBase {\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { RecognitionEventArgs, SpeechRecognitionResult } from \"./Exports\";\r\n\r\n/**\r\n * Defines contents of speech recognizing/recognized event.\r\n * @class SpeechRecognitionEventArgs\r\n */\r\nexport class SpeechRecognitionEventArgs extends RecognitionEventArgs {\r\n private privResult: SpeechRecognitionResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {SpeechRecognitionResult} result - The speech recognition result.\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(result: SpeechRecognitionResult, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the recognition result.\r\n * @member SpeechRecognitionEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {SpeechRecognitionResult} the recognition result.\r\n */\r\n public get result(): SpeechRecognitionResult {\r\n return this.privResult;\r\n }\r\n}\r\n\r\n/**\r\n * Defines contents of conversation transcribed/transcribing event.\r\n * @class ConversationTranscriptionEventArgs\r\n */\r\nexport class ConversationTranscriptionEventArgs extends SpeechRecognitionEventArgs {\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, RecognitionResult, ResultReason } from \"./Exports\";\r\n\r\n/**\r\n * Defines result of speech recognition.\r\n * @class SpeechRecognitionResult\r\n */\r\nexport class SpeechRecognitionResult extends RecognitionResult {\r\n private readonly privSpeakerId: string;\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @public\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {string} text - The recognized text.\r\n * @param {number} duration - The duration.\r\n * @param {number} offset - The offset into the stream.\r\n * @param {string} language - Primary Language detected, if provided.\r\n * @param {string} languageDetectionConfidence - Primary Language confidence (\"Unknown,\" \"Low,\" \"Medium,\" \"High\"...), if provided.\r\n * @param {string} speakerId - speaker id for conversation transcription, if provided.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {string} json - Additional Json, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n */\r\n public constructor(resultId?: string, reason?: ResultReason, text?: string,\r\n duration?: number, offset?: number, language?: string,\r\n languageDetectionConfidence?: string, speakerId?: string, errorDetails?: string,\r\n json?: string, properties?: PropertyCollection) {\r\n super(resultId, reason, text, duration, offset, language, languageDetectionConfidence, errorDetails, json, properties);\r\n this.privSpeakerId = speakerId;\r\n }\r\n\r\n /**\r\n * speaker id from conversation transcription/id scenarios\r\n * @member SpeechRecognitionResult.prototype.speakerId\r\n * @function\r\n * @public\r\n * @returns {string} id of speaker in given result\r\n */\r\n public get speakerId(): string {\r\n return this.privSpeakerId;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n OutputFormatPropertyName,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechConnectionFactory,\r\n SpeechServiceConfig,\r\n SpeechServiceRecognizer,\r\n} from \"../common.speech/Exports\";\r\nimport { marshalPromiseToCallbacks } from \"../common/Exports\";\r\nimport { AudioConfigImpl } from \"./Audio/AudioConfig\";\r\nimport { Contracts } from \"./Contracts\";\r\nimport {\r\n AudioConfig,\r\n AutoDetectSourceLanguageConfig,\r\n KeywordRecognitionModel,\r\n OutputFormat,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n SpeechRecognitionCanceledEventArgs,\r\n SpeechRecognitionEventArgs,\r\n SpeechRecognitionResult,\r\n} from \"./Exports\";\r\nimport { SpeechConfig, SpeechConfigImpl } from \"./SpeechConfig\";\r\n\r\n/**\r\n * Performs speech recognition from microphone, file, or other audio input streams, and gets transcribed text as result.\r\n * @class SpeechRecognizer\r\n */\r\nexport class SpeechRecognizer extends Recognizer {\r\n private privDisposedRecognizer: boolean;\r\n\r\n /**\r\n * SpeechRecognizer constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - an set of initial properties for this recognizer\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the recognizer\r\n */\r\n public constructor(speechConfig: SpeechConfig, audioConfig?: AudioConfig) {\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNull(speechConfigImpl, \"speechConfig\");\r\n\r\n Contracts.throwIfNullOrWhitespace(\r\n speechConfigImpl.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage),\r\n PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n\r\n super(audioConfig, speechConfigImpl.properties, new SpeechConnectionFactory());\r\n this.privDisposedRecognizer = false;\r\n }\r\n\r\n /**\r\n * SpeechRecognizer constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - an set of initial properties for this recognizer\r\n * @param {AutoDetectSourceLanguageConfig} autoDetectSourceLanguageConfig - An source language detection configuration associated with the recognizer\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the recognizer\r\n */\r\n public static FromConfig(speechConfig: SpeechConfig, autoDetectSourceLanguageConfig: AutoDetectSourceLanguageConfig, audioConfig?: AudioConfig): SpeechRecognizer {\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n autoDetectSourceLanguageConfig.properties.mergeTo(speechConfigImpl.properties);\r\n const recognizer = new SpeechRecognizer(speechConfig, audioConfig);\r\n return recognizer;\r\n }\r\n\r\n /**\r\n * The event recognizing signals that an intermediate recognition result is received.\r\n * @member SpeechRecognizer.prototype.recognizing\r\n * @function\r\n * @public\r\n */\r\n public recognizing: (sender: Recognizer, event: SpeechRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event recognized signals that a final recognition result is received.\r\n * @member SpeechRecognizer.prototype.recognized\r\n * @function\r\n * @public\r\n */\r\n public recognized: (sender: Recognizer, event: SpeechRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during recognition.\r\n * @member SpeechRecognizer.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: Recognizer, event: SpeechRecognitionCanceledEventArgs) => void;\r\n\r\n /**\r\n * Gets the endpoint id of a customized speech model that is used for speech recognition.\r\n * @member SpeechRecognizer.prototype.endpointId\r\n * @function\r\n * @public\r\n * @returns {string} the endpoint id of a customized speech model that is used for speech recognition.\r\n */\r\n public get endpointId(): string {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_EndpointId, \"00000000-0000-0000-0000-000000000000\");\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member SpeechRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member SpeechRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * Gets the spoken language of recognition.\r\n * @member SpeechRecognizer.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @returns {string} The spoken language of recognition.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n /**\r\n * Gets the output format of recognition.\r\n * @member SpeechRecognizer.prototype.outputFormat\r\n * @function\r\n * @public\r\n * @returns {OutputFormat} The output format of recognition.\r\n */\r\n public get outputFormat(): OutputFormat {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n if (this.properties.getProperty(OutputFormatPropertyName, OutputFormat[OutputFormat.Simple]) === OutputFormat[OutputFormat.Simple]) {\r\n return OutputFormat.Simple;\r\n } else {\r\n return OutputFormat.Detailed;\r\n }\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this SpeechRecognizer.\r\n * @member SpeechRecognizer.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this SpeechRecognizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Starts speech recognition, and stops after the first utterance is recognized.\r\n * The task returns the recognition text as result.\r\n * Note: RecognizeOnceAsync() returns when the first utterance has been recognized,\r\n * so it is suitable only for single shot recognition\r\n * like command or query. For long-running recognition, use StartContinuousRecognitionAsync() instead.\r\n * @member SpeechRecognizer.prototype.recognizeOnceAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the SpeechRecognitionResult.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public recognizeOnceAsync(cb?: (e: SpeechRecognitionResult) => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.recognizeOnceAsyncImpl(RecognitionMode.Interactive), cb, err);\r\n }\r\n\r\n /**\r\n * Starts speech recognition, until stopContinuousRecognitionAsync() is called.\r\n * User must subscribe to events to receive recognition results.\r\n * @member SpeechRecognizer.prototype.startContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.startContinuousRecognitionAsyncImpl(RecognitionMode.Conversation), cb, err);\r\n }\r\n\r\n /**\r\n * Stops continuous speech recognition.\r\n * @member SpeechRecognizer.prototype.stopContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.stopContinuousRecognitionAsyncImpl(), cb, err);\r\n }\r\n\r\n /**\r\n * Starts speech recognition with keyword spotting, until\r\n * stopKeywordRecognitionAsync() is called.\r\n * User must subscribe to events to receive recognition results.\r\n * Note: Key word spotting functionality is only available on the\r\n * Speech Devices SDK. This functionality is currently not included in the SDK itself.\r\n * @member SpeechRecognizer.prototype.startKeywordRecognitionAsync\r\n * @function\r\n * @public\r\n * @param {KeywordRecognitionModel} model The keyword recognition model that\r\n * specifies the keyword to be recognized.\r\n * @param cb - Callback invoked once the recognition has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startKeywordRecognitionAsync(model: KeywordRecognitionModel, cb?: () => void, err?: (e: string) => void): void {\r\n Contracts.throwIfNull(model, \"model\");\r\n\r\n if (!!err) {\r\n err(\"Not yet implemented.\");\r\n }\r\n }\r\n\r\n /**\r\n * Stops continuous speech recognition.\r\n * Note: Key word spotting functionality is only available on the\r\n * Speech Devices SDK. This functionality is currently not included in the SDK itself.\r\n * @member SpeechRecognizer.prototype.stopKeywordRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the recognition has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopKeywordRecognitionAsync(cb?: () => void): void {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member SpeechRecognizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n /**\r\n * Disposes any resources held by the object.\r\n * @member SpeechRecognizer.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - true if disposing the object.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedRecognizer) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n this.privDisposedRecognizer = true;\r\n await this.implRecognizerStop();\r\n }\r\n\r\n await super.dispose(disposing);\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const configImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n return new SpeechServiceRecognizer(authentication, connectionFactory, configImpl, recognizerConfig, this);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines contents of speech synthesis bookmark event.\r\n * @class SpeechSynthesisBookmarkEventArgs\r\n * Added in version 1.16.0\r\n */\r\nexport class SpeechSynthesisBookmarkEventArgs {\r\n private privAudioOffset: number;\r\n private privText: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {number} audioOffset - The audio offset.\r\n * @param {string} text - The bookmark text.\r\n */\r\n public constructor(audioOffset: number, text: string) {\r\n this.privAudioOffset = audioOffset;\r\n this.privText = text;\r\n }\r\n\r\n /**\r\n * Specifies the audio offset.\r\n * @member SpeechSynthesisBookmarkEventArgs.prototype.audioOffset\r\n * @function\r\n * @public\r\n * @returns {number} the audio offset.\r\n */\r\n public get audioOffset(): number {\r\n return this.privAudioOffset;\r\n }\r\n\r\n /**\r\n * Specifies the bookmark.\r\n * @member SpeechSynthesisBookmarkEventArgs.prototype.text\r\n * @function\r\n * @public\r\n * @returns {string} the bookmark text.\r\n */\r\n public get text(): string {\r\n return this.privText;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the boundary type of speech synthesis boundary event.\r\n * @class SpeechSynthesisBoundaryType\r\n * Added in version 1.21.0\r\n */\r\nexport enum SpeechSynthesisBoundaryType {\r\n /**\r\n * Indicates the boundary text is a word.\r\n * @member SpeechSynthesisBoundaryType.Word\r\n */\r\n Word = \"WordBoundary\",\r\n\r\n /**\r\n * Indicates the boundary text is a punctuation.\r\n * @member SpeechSynthesisBoundaryType.Punctuation\r\n */\r\n Punctuation = \"PunctuationBoundary\",\r\n\r\n /**\r\n * Indicates the boundary text is a sentence.\r\n * @member SpeechSynthesisBoundaryType.Sentence\r\n */\r\n Sentence = \"SentenceBoundary\"\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SpeechSynthesisResult } from \"./Exports\";\r\n\r\n/**\r\n * Defines contents of speech synthesis events.\r\n * @class SpeechSynthesisEventArgs\r\n * Added in version 1.11.0\r\n */\r\nexport class SpeechSynthesisEventArgs {\r\n private readonly privResult: SpeechSynthesisResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {SpeechSynthesisResult} result - The speech synthesis result.\r\n */\r\n public constructor(result: SpeechSynthesisResult) {\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the synthesis result.\r\n * @member SpeechSynthesisEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {SpeechSynthesisResult} the synthesis result.\r\n */\r\n public get result(): SpeechSynthesisResult {\r\n return this.privResult;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Define speech synthesis audio output formats.\r\n * @enum SpeechSynthesisOutputFormat\r\n * Updated in version 1.17.0\r\n */\r\nexport enum SpeechSynthesisOutputFormat {\r\n /**\r\n * raw-8khz-8bit-mono-mulaw\r\n * @member SpeechSynthesisOutputFormat.Raw8Khz8BitMonoMULaw,\r\n */\r\n Raw8Khz8BitMonoMULaw,\r\n\r\n /**\r\n * riff-16khz-16kbps-mono-siren\r\n * @note Unsupported by the service. Do not use this value.\r\n * @member SpeechSynthesisOutputFormat.Riff16Khz16KbpsMonoSiren\r\n */\r\n Riff16Khz16KbpsMonoSiren ,\r\n\r\n /**\r\n * audio-16khz-16kbps-mono-siren\r\n * @note Unsupported by the service. Do not use this value.\r\n * @member SpeechSynthesisOutputFormat.Audio16Khz16KbpsMonoSiren\r\n */\r\n Audio16Khz16KbpsMonoSiren,\r\n\r\n /**\r\n * audio-16khz-32kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio16Khz32KBitRateMonoMp3\r\n */\r\n Audio16Khz32KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-16khz-128kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio16Khz128KBitRateMonoMp3\r\n */\r\n Audio16Khz128KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-16khz-64kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio16Khz64KBitRateMonoMp3\r\n */\r\n Audio16Khz64KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-24khz-48kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio24Khz48KBitRateMonoMp3\r\n */\r\n Audio24Khz48KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-24khz-96kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio24Khz96KBitRateMonoMp3\r\n */\r\n Audio24Khz96KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-24khz-160kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio24Khz160KBitRateMonoMp3\r\n */\r\n Audio24Khz160KBitRateMonoMp3,\r\n\r\n /**\r\n * raw-16khz-16bit-mono-truesilk\r\n * @member SpeechSynthesisOutputFormat.Raw16Khz16BitMonoTrueSilk\r\n */\r\n Raw16Khz16BitMonoTrueSilk,\r\n\r\n /**\r\n * riff-16khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Riff16Khz16BitMonoPcm\r\n */\r\n Riff16Khz16BitMonoPcm,\r\n\r\n /**\r\n * riff-8khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Riff8Khz16BitMonoPcm\r\n */\r\n Riff8Khz16BitMonoPcm,\r\n\r\n /**\r\n * riff-24khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Riff24Khz16BitMonoPcm\r\n */\r\n Riff24Khz16BitMonoPcm,\r\n\r\n /**\r\n * riff-8khz-8bit-mono-mulaw\r\n * @member SpeechSynthesisOutputFormat.Riff8Khz8BitMonoMULaw\r\n */\r\n Riff8Khz8BitMonoMULaw,\r\n\r\n /**\r\n * raw-16khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Raw16Khz16BitMonoPcm\r\n */\r\n Raw16Khz16BitMonoPcm,\r\n\r\n /**\r\n * raw-24khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Raw24Khz16BitMonoPcm\r\n */\r\n Raw24Khz16BitMonoPcm,\r\n\r\n /**\r\n * raw-8khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Raw8Khz16BitMonoPcm\r\n */\r\n Raw8Khz16BitMonoPcm,\r\n\r\n /**\r\n * ogg-16khz-16bit-mono-opus\r\n * @member SpeechSynthesisOutputFormat.Ogg16Khz16BitMonoOpus\r\n */\r\n Ogg16Khz16BitMonoOpus,\r\n\r\n /**\r\n * ogg-24khz-16bit-mono-opus\r\n * @member SpeechSynthesisOutputFormat.Ogg24Khz16BitMonoOpus\r\n */\r\n Ogg24Khz16BitMonoOpus,\r\n\r\n /**\r\n * raw-48khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Raw48Khz16BitMonoPcm\r\n */\r\n Raw48Khz16BitMonoPcm,\r\n\r\n /**\r\n * riff-48khz-16bit-mono-pcm\r\n * @member SpeechSynthesisOutputFormat.Riff48Khz16BitMonoPcm\r\n */\r\n\r\n Riff48Khz16BitMonoPcm,\r\n /**\r\n * audio-48khz-96kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio48Khz96KBitRateMonoMp3\r\n */\r\n Audio48Khz96KBitRateMonoMp3,\r\n\r\n /**\r\n * audio-48khz-192kbitrate-mono-mp3\r\n * @member SpeechSynthesisOutputFormat.Audio48Khz192KBitRateMonoMp3\r\n */\r\n Audio48Khz192KBitRateMonoMp3,\r\n\r\n /**\r\n * ogg-48khz-16bit-mono-opus\r\n * Added in version 1.16.0\r\n * @member SpeechSynthesisOutputFormat.Ogg48Khz16BitMonoOpus\r\n */\r\n Ogg48Khz16BitMonoOpus,\r\n\r\n /**\r\n * webm-16khz-16bit-mono-opus\r\n * Added in version 1.16.0\r\n * @member SpeechSynthesisOutputFormat.Webm16Khz16BitMonoOpus\r\n */\r\n Webm16Khz16BitMonoOpus,\r\n\r\n /**\r\n * webm-24khz-16bit-mono-opus\r\n * Added in version 1.16.0\r\n * @member SpeechSynthesisOutputFormat.Webm24Khz16BitMonoOpus\r\n */\r\n Webm24Khz16BitMonoOpus,\r\n\r\n /**\r\n * raw-24khz-16bit-mono-truesilk\r\n * Added in version 1.17.0\r\n * @member SpeechSynthesisOutputFormat.Raw24Khz16BitMonoTrueSilk\r\n */\r\n Raw24Khz16BitMonoTrueSilk,\r\n\r\n /**\r\n * raw-8khz-8bit-mono-alaw\r\n * Added in version 1.17.0\r\n * @member SpeechSynthesisOutputFormat.Raw8Khz8BitMonoALaw\r\n */\r\n Raw8Khz8BitMonoALaw,\r\n\r\n /**\r\n * riff-8khz-8bit-mono-alaw\r\n * Added in version 1.17.0\r\n * @member SpeechSynthesisOutputFormat.Riff8Khz8BitMonoALaw\r\n */\r\n Riff8Khz8BitMonoALaw,\r\n\r\n /**\r\n * webm-24khz-16bit-24kbps-mono-opus\r\n * Audio compressed by OPUS codec in a webm container, with bitrate of 24kbps, optimized for IoT scenario.\r\n * Added in version 1.19.0\r\n * @member SpeechSynthesisOutputFormat.Webm24Khz16Bit24KbpsMonoOpus\r\n */\r\n Webm24Khz16Bit24KbpsMonoOpus,\r\n\r\n /**\r\n * audio-16khz-16bit-32kbps-mono-opus\r\n * Audio compressed by OPUS codec without container, with bitrate of 32kbps.\r\n * Added in version 1.20.0\r\n * @member SpeechSynthesisOutputFormat.Audio16Khz16Bit32KbpsMonoOpus\r\n */\r\n Audio16Khz16Bit32KbpsMonoOpus,\r\n\r\n /**\r\n * audio-24khz-16bit-48kbps-mono-opus\r\n * Audio compressed by OPUS codec without container, with bitrate of 48kbps.\r\n * Added in version 1.20.0\r\n * @member SpeechSynthesisOutputFormat.Audio24Khz16Bit48KbpsMonoOpus\r\n */\r\n Audio24Khz16Bit48KbpsMonoOpus,\r\n\r\n /**\r\n * audio-24khz-16bit-24kbps-mono-opus\r\n * Audio compressed by OPUS codec without container, with bitrate of 24kbps.\r\n * Added in version 1.20.0\r\n * @member SpeechSynthesisOutputFormat.Audio24Khz16Bit24KbpsMonoOpus\r\n */\r\n Audio24Khz16Bit24KbpsMonoOpus,\r\n\r\n /**\r\n * raw-22050hz-16bit-mono-pcm\r\n * Raw PCM audio at 22050Hz sampling rate and 16-bit depth.\r\n * Added in version 1.22.0\r\n * @member SpeechSynthesisOutputFormat.Raw22050Hz16BitMonoPcm\r\n */\r\n Raw22050Hz16BitMonoPcm,\r\n\r\n /**\r\n * riff-22050hz-16bit-mono-pcm\r\n * PCM audio at 22050Hz sampling rate and 16-bit depth, with RIFF header.\r\n * Added in version 1.22.0\r\n * @member SpeechSynthesisOutputFormat.Riff22050Hz16BitMonoPcm\r\n */\r\n Riff22050Hz16BitMonoPcm,\r\n\r\n /**\r\n * raw-44100hz-16bit-mono-pcm\r\n * Raw PCM audio at 44100Hz sampling rate and 16-bit depth.\r\n * Added in version 1.22.0\r\n * @member SpeechSynthesisOutputFormat.Raw44100Hz16BitMonoPcm\r\n */\r\n Raw44100Hz16BitMonoPcm,\r\n\r\n /**\r\n * riff-44100hz-16bit-mono-pcm\r\n * PCM audio at 44100Hz sampling rate and 16-bit depth, with RIFF header.\r\n * Added in version 1.22.0\r\n * @member SpeechSynthesisOutputFormat.Riff44100Hz16BitMonoPcm\r\n */\r\n Riff44100Hz16BitMonoPcm\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n PropertyCollection,\r\n ResultReason,\r\n SynthesisResult\r\n} from \"./Exports\";\r\n\r\n/**\r\n * Defines result of speech synthesis.\r\n * @class SpeechSynthesisResult\r\n * Added in version 1.11.0\r\n */\r\nexport class SpeechSynthesisResult extends SynthesisResult {\r\n private readonly privAudioData: ArrayBuffer;\r\n private readonly privAudioDuration: number;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {ArrayBuffer} audioData - The synthesized audio binary.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n * @param {number} audioDuration - The audio duration.\r\n */\r\n public constructor(resultId?: string, reason?: ResultReason, audioData?: ArrayBuffer,\r\n errorDetails?: string, properties?: PropertyCollection, audioDuration?: number) {\r\n super(resultId, reason, errorDetails, properties);\r\n this.privAudioData = audioData;\r\n this.privAudioDuration = audioDuration;\r\n }\r\n\r\n /**\r\n * The synthesized audio data\r\n * @member SpeechSynthesisResult.prototype.audioData\r\n * @function\r\n * @public\r\n * @returns {ArrayBuffer} The synthesized audio data.\r\n */\r\n public get audioData(): ArrayBuffer {\r\n return this.privAudioData;\r\n }\r\n\r\n /**\r\n * The time duration of synthesized audio, in ticks (100 nanoseconds).\r\n * @member SpeechSynthesisResult.prototype.audioDuration\r\n * @function\r\n * @public\r\n * @returns {number} The time duration of synthesized audio.\r\n */\r\n public get audioDuration(): number {\r\n return this.privAudioDuration;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines contents of speech synthesis viseme event.\r\n * @class SpeechSynthesisVisemeEventArgs\r\n * Added in version 1.16.0\r\n */\r\nexport class SpeechSynthesisVisemeEventArgs {\r\n private privAudioOffset: number;\r\n private privVisemeId: number;\r\n private privAnimation: string;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {number} audioOffset - The audio offset.\r\n * @param {number} visemeId - The viseme ID.\r\n * @param {string} animation - The animation, could be in svg or other format.\r\n */\r\n public constructor(audioOffset: number, visemeId: number, animation: string) {\r\n this.privAudioOffset = audioOffset;\r\n this.privVisemeId = visemeId;\r\n this.privAnimation = animation;\r\n }\r\n\r\n /**\r\n * Specifies the audio offset.\r\n * @member SpeechSynthesisVisemeEventArgs.prototype.audioOffset\r\n * @function\r\n * @public\r\n * @returns {number} the audio offset.\r\n */\r\n public get audioOffset(): number {\r\n return this.privAudioOffset;\r\n }\r\n\r\n /**\r\n * Specifies the viseme ID.\r\n * @member SpeechSynthesisVisemeEventArgs.prototype.visemeId\r\n * @function\r\n * @public\r\n * @returns {number} the viseme ID.\r\n */\r\n public get visemeId(): number {\r\n return this.privVisemeId;\r\n }\r\n\r\n /**\r\n * Specifies the animation.\r\n * @member SpeechSynthesisVisemeEventArgs.prototype.animation\r\n * @function\r\n * @public\r\n * @returns {string} the animation, could be in svg or other format.\r\n */\r\n public get animation(): string {\r\n return this.privAnimation;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SpeechSynthesisBoundaryType } from \"./SpeechSynthesisBoundaryType\";\r\n\r\n/**\r\n * Defines contents of speech synthesis word boundary event.\r\n * @class SpeechSynthesisWordBoundaryEventArgs\r\n * Added in version 1.11.0\r\n */\r\nexport class SpeechSynthesisWordBoundaryEventArgs {\r\n private readonly privAudioOffset: number;\r\n private readonly privDuration: number;\r\n private readonly privText: string;\r\n private readonly privWordLength: number;\r\n private readonly privTextOffset: number;\r\n private readonly privBoundaryType: SpeechSynthesisBoundaryType;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {number} audioOffset - The audio offset.\r\n * @param {number} duration - The audio duration.\r\n * @param {string} text - The text.\r\n * @param {number} wordLength - The length of the word.\r\n * @param {number} textOffset - The text offset.\r\n * @param {SpeechSynthesisBoundaryType} boundaryType - The boundary type\r\n */\r\n public constructor(audioOffset: number, duration: number, text: string, wordLength: number,\r\n textOffset: number, boundaryType: SpeechSynthesisBoundaryType) {\r\n this.privAudioOffset = audioOffset;\r\n this.privDuration = duration;\r\n this.privText = text;\r\n this.privWordLength = wordLength;\r\n this.privTextOffset = textOffset;\r\n this.privBoundaryType = boundaryType;\r\n }\r\n\r\n /**\r\n * Specifies the audio offset.\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.audioOffset\r\n * @function\r\n * @public\r\n * @returns {number} the audio offset.\r\n */\r\n public get audioOffset(): number {\r\n return this.privAudioOffset;\r\n }\r\n\r\n /**\r\n * Specifies the duration, in ticks (100 nanoseconds).\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.duration\r\n * @function\r\n * @public\r\n * @returns {number} Duration in 100 nanosecond increments.\r\n */\r\n public get duration(): number {\r\n return this.privDuration;\r\n }\r\n\r\n /**\r\n * Specifies the text of the word boundary event.\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.text\r\n * @function\r\n * @public\r\n * @returns {string} the text.\r\n */\r\n public get text(): string {\r\n return this.privText;\r\n }\r\n\r\n /**\r\n * Specifies the word length\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.wordLength\r\n * @function\r\n * @public\r\n * @returns {number} the word length\r\n */\r\n public get wordLength(): number {\r\n return this.privWordLength;\r\n }\r\n\r\n /**\r\n * Specifies the text offset.\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.textOffset\r\n * @function\r\n * @public\r\n * @returns {number} the text offset.\r\n */\r\n public get textOffset(): number {\r\n return this.privTextOffset;\r\n }\r\n\r\n /**\r\n * Specifies the boundary type.\r\n * @member SpeechSynthesisWordBoundaryEventArgs.prototype.boundaryType\r\n * @function\r\n * @public\r\n * @returns {SpeechSynthesisBoundaryType} the boundary type.\r\n */\r\n public get boundaryType(): SpeechSynthesisBoundaryType {\r\n return this.privBoundaryType;\r\n }\r\n}\r\n","/* eslint-disable @typescript-eslint/no-empty-function */\r\n// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport { PathLike } from \"fs\";\r\nimport { IRestResponse } from \"../common.browser/RestMessageAdapter\";\r\nimport {\r\n AutoDetectSourceLanguagesOpenRangeOptionName,\r\n CognitiveSubscriptionKeyAuthentication,\r\n CognitiveTokenAuthentication,\r\n Context,\r\n IAuthentication,\r\n ISynthesisConnectionFactory,\r\n OS,\r\n SpeechServiceConfig,\r\n SpeechSynthesisConnectionFactory,\r\n SynthesisAdapterBase,\r\n SynthesisRestAdapter,\r\n SynthesizerConfig,\r\n} from \"../common.speech/Exports\";\r\nimport {\r\n createNoDashGuid,\r\n IAudioDestination,\r\n IStringDictionary,\r\n marshalPromiseToCallbacks,\r\n Queue\r\n} from \"../common/Exports\";\r\nimport { AudioOutputConfigImpl } from \"./Audio/AudioConfig\";\r\nimport { AudioFileWriter } from \"./Audio/AudioFileWriter\";\r\nimport { AudioOutputFormatImpl } from \"./Audio/AudioOutputFormat\";\r\nimport {\r\n PullAudioOutputStreamImpl,\r\n PushAudioOutputStreamImpl\r\n} from \"./Audio/AudioOutputStream\";\r\nimport { Contracts } from \"./Contracts\";\r\nimport {\r\n AudioConfig,\r\n AudioOutputStream,\r\n AutoDetectSourceLanguageConfig,\r\n PropertyCollection,\r\n PropertyId,\r\n PullAudioOutputStream,\r\n PushAudioOutputStreamCallback,\r\n SpeechConfig,\r\n SpeechSynthesisBookmarkEventArgs,\r\n SpeechSynthesisEventArgs,\r\n SpeechSynthesisOutputFormat,\r\n SpeechSynthesisResult,\r\n SpeechSynthesisVisemeEventArgs,\r\n SpeechSynthesisWordBoundaryEventArgs,\r\n SynthesisVoicesResult,\r\n} from \"./Exports\";\r\nimport { SpeechConfigImpl } from \"./SpeechConfig\";\r\n\r\n/**\r\n * Defines the class SpeechSynthesizer for text to speech.\r\n * Updated in version 1.16.0\r\n * @class SpeechSynthesizer\r\n */\r\nexport class SpeechSynthesizer {\r\n protected audioConfig: AudioConfig;\r\n protected privAdapter: SynthesisAdapterBase;\r\n protected privRestAdapter: SynthesisRestAdapter;\r\n protected privProperties: PropertyCollection;\r\n protected synthesisRequestQueue: Queue;\r\n\r\n /**\r\n * Defines event handler for synthesis start events.\r\n * @member SpeechSynthesizer.prototype.synthesisStarted\r\n * @function\r\n * @public\r\n */\r\n public synthesisStarted: (sender: SpeechSynthesizer, event: SpeechSynthesisEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for synthesizing events.\r\n * @member SpeechSynthesizer.prototype.synthesizing\r\n * @function\r\n * @public\r\n */\r\n public synthesizing: (sender: SpeechSynthesizer, event: SpeechSynthesisEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for synthesis completed events.\r\n * @member SpeechSynthesizer.prototype.synthesisCompleted\r\n * @function\r\n * @public\r\n */\r\n public synthesisCompleted: (sender: SpeechSynthesizer, event: SpeechSynthesisEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for synthesis cancelled events.\r\n * @member SpeechSynthesizer.prototype.SynthesisCanceled\r\n * @function\r\n * @public\r\n */\r\n public SynthesisCanceled: (sender: SpeechSynthesizer, event: SpeechSynthesisEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for word boundary events\r\n * @member SpeechSynthesizer.prototype.wordBoundary\r\n * @function\r\n * @public\r\n */\r\n public wordBoundary: (sender: SpeechSynthesizer, event: SpeechSynthesisWordBoundaryEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for bookmark reached events\r\n * Added in version 1.16.0\r\n * @member SpeechSynthesizer.prototype.bookmarkReached\r\n * @function\r\n * @public\r\n */\r\n public bookmarkReached: (sender: SpeechSynthesizer, event: SpeechSynthesisBookmarkEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for viseme received event\r\n * Added in version 1.16.0\r\n * @member SpeechSynthesizer.prototype.visemeReceived\r\n * @function\r\n * @public\r\n */\r\n public visemeReceived: (sender: SpeechSynthesizer, event: SpeechSynthesisVisemeEventArgs) => void;\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member SpeechSynthesizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member SpeechSynthesizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this SpeechSynthesizer.\r\n * @member SpeechSynthesizer.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this SpeechSynthesizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Indicates if auto detect source language is enabled\r\n * @member SpeechSynthesizer.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {boolean} if auto detect source language is enabled\r\n */\r\n public get autoDetectSourceLanguage(): boolean {\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_AutoDetectSourceLanguages) === AutoDetectSourceLanguagesOpenRangeOptionName;\r\n }\r\n\r\n private privDisposed: boolean;\r\n private privConnectionFactory: ISynthesisConnectionFactory;\r\n private privSynthesizing: boolean;\r\n\r\n /**\r\n * SpeechSynthesizer constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - An set of initial properties for this synthesizer.\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the synthesizer.\r\n */\r\n public constructor(speechConfig: SpeechConfig, audioConfig?: AudioConfig) {\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNull(speechConfigImpl, \"speechConfig\");\r\n\r\n if (audioConfig !== null) {\r\n if (audioConfig === undefined) {\r\n this.audioConfig = (typeof window === \"undefined\") ? undefined : AudioConfig.fromDefaultSpeakerOutput();\r\n } else {\r\n this.audioConfig = audioConfig;\r\n }\r\n }\r\n\r\n this.privProperties = speechConfigImpl.properties.clone();\r\n this.privDisposed = false;\r\n this.privSynthesizing = false;\r\n this.privConnectionFactory = new SpeechSynthesisConnectionFactory();\r\n this.synthesisRequestQueue = new Queue();\r\n this.implCommonSynthesizeSetup();\r\n }\r\n\r\n /**\r\n * SpeechSynthesizer constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - an set of initial properties for this synthesizer\r\n * @param {AutoDetectSourceLanguageConfig} autoDetectSourceLanguageConfig - An source language detection configuration associated with the synthesizer\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the synthesizer\r\n */\r\n public static FromConfig(speechConfig: SpeechConfig, autoDetectSourceLanguageConfig: AutoDetectSourceLanguageConfig, audioConfig?: AudioConfig): SpeechSynthesizer {\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n autoDetectSourceLanguageConfig.properties.mergeTo(speechConfigImpl.properties);\r\n return new SpeechSynthesizer(speechConfig, audioConfig);\r\n }\r\n\r\n public buildSsml(text: string): string {\r\n const languageToDefaultVoice: IStringDictionary = {\r\n [\"af-ZA\"]: \"af-ZA-AdriNeural\",\r\n [\"am-ET\"]: \"am-ET-AmehaNeural\",\r\n [\"ar-AE\"]: \"ar-AE-FatimaNeural\",\r\n [\"ar-BH\"]: \"ar-BH-AliNeural\",\r\n [\"ar-DZ\"]: \"ar-DZ-AminaNeural\",\r\n [\"ar-EG\"]: \"ar-EG-SalmaNeural\",\r\n [\"ar-IQ\"]: \"ar-IQ-BasselNeural\",\r\n [\"ar-JO\"]: \"ar-JO-SanaNeural\",\r\n [\"ar-KW\"]: \"ar-KW-FahedNeural\",\r\n [\"ar-LY\"]: \"ar-LY-ImanNeural\",\r\n [\"ar-MA\"]: \"ar-MA-JamalNeural\",\r\n [\"ar-QA\"]: \"ar-QA-AmalNeural\",\r\n [\"ar-SA\"]: \"ar-SA-HamedNeural\",\r\n [\"ar-SY\"]: \"ar-SY-AmanyNeural\",\r\n [\"ar-TN\"]: \"ar-TN-HediNeural\",\r\n [\"ar-YE\"]: \"ar-YE-MaryamNeural\",\r\n [\"bg-BG\"]: \"bg-BG-BorislavNeural\",\r\n [\"bn-BD\"]: \"bn-BD-NabanitaNeural\",\r\n [\"bn-IN\"]: \"bn-IN-BashkarNeural\",\r\n [\"ca-ES\"]: \"ca-ES-JoanaNeural\",\r\n [\"cs-CZ\"]: \"cs-CZ-AntoninNeural\",\r\n [\"cy-GB\"]: \"cy-GB-AledNeural\",\r\n [\"da-DK\"]: \"da-DK-ChristelNeural\",\r\n [\"de-AT\"]: \"de-AT-IngridNeural\",\r\n [\"de-CH\"]: \"de-CH-JanNeural\",\r\n [\"de-DE\"]: \"de-DE-KatjaNeural\",\r\n [\"el-GR\"]: \"el-GR-AthinaNeural\",\r\n [\"en-AU\"]: \"en-AU-NatashaNeural\",\r\n [\"en-CA\"]: \"en-CA-ClaraNeural\",\r\n [\"en-GB\"]: \"en-GB-LibbyNeural\",\r\n [\"en-HK\"]: \"en-HK-SamNeural\",\r\n [\"en-IE\"]: \"en-IE-ConnorNeural\",\r\n [\"en-IN\"]: \"en-IN-NeerjaNeural\",\r\n [\"en-KE\"]: \"en-KE-AsiliaNeural\",\r\n [\"en-NG\"]: \"en-NG-AbeoNeural\",\r\n [\"en-NZ\"]: \"en-NZ-MitchellNeural\",\r\n [\"en-PH\"]: \"en-PH-JamesNeural\",\r\n [\"en-SG\"]: \"en-SG-LunaNeural\",\r\n [\"en-TZ\"]: \"en-TZ-ElimuNeural\",\r\n [\"en-US\"]: \"en-US-JennyNeural\",\r\n [\"en-ZA\"]: \"en-ZA-LeahNeural\",\r\n [\"es-AR\"]: \"es-AR-ElenaNeural\",\r\n [\"es-BO\"]: \"es-BO-MarceloNeural\",\r\n [\"es-CL\"]: \"es-CL-CatalinaNeural\",\r\n [\"es-CO\"]: \"es-CO-GonzaloNeural\",\r\n [\"es-CR\"]: \"es-CR-JuanNeural\",\r\n [\"es-CU\"]: \"es-CU-BelkysNeural\",\r\n [\"es-DO\"]: \"es-DO-EmilioNeural\",\r\n [\"es-EC\"]: \"es-EC-AndreaNeural\",\r\n [\"es-ES\"]: \"es-ES-AlvaroNeural\",\r\n [\"es-GQ\"]: \"es-GQ-JavierNeural\",\r\n [\"es-GT\"]: \"es-GT-AndresNeural\",\r\n [\"es-HN\"]: \"es-HN-CarlosNeural\",\r\n [\"es-MX\"]: \"es-MX-DaliaNeural\",\r\n [\"es-NI\"]: \"es-NI-FedericoNeural\",\r\n [\"es-PA\"]: \"es-PA-MargaritaNeural\",\r\n [\"es-PE\"]: \"es-PE-AlexNeural\",\r\n [\"es-PR\"]: \"es-PR-KarinaNeural\",\r\n [\"es-PY\"]: \"es-PY-MarioNeural\",\r\n [\"es-SV\"]: \"es-SV-LorenaNeural\",\r\n [\"es-US\"]: \"es-US-AlonsoNeural\",\r\n [\"es-UY\"]: \"es-UY-MateoNeural\",\r\n [\"es-VE\"]: \"es-VE-PaolaNeural\",\r\n [\"et-EE\"]: \"et-EE-AnuNeural\",\r\n [\"fa-IR\"]: \"fa-IR-DilaraNeural\",\r\n [\"fi-FI\"]: \"fi-FI-SelmaNeural\",\r\n [\"fil-PH\"]: \"fil-PH-AngeloNeural\",\r\n [\"fr-BE\"]: \"fr-BE-CharlineNeural\",\r\n [\"fr-CA\"]: \"fr-CA-SylvieNeural\",\r\n [\"fr-CH\"]: \"fr-CH-ArianeNeural\",\r\n [\"fr-FR\"]: \"fr-FR-DeniseNeural\",\r\n [\"ga-IE\"]: \"ga-IE-ColmNeural\",\r\n [\"gl-ES\"]: \"gl-ES-RoiNeural\",\r\n [\"gu-IN\"]: \"gu-IN-DhwaniNeural\",\r\n [\"he-IL\"]: \"he-IL-AvriNeural\",\r\n [\"hi-IN\"]: \"hi-IN-MadhurNeural\",\r\n [\"hr-HR\"]: \"hr-HR-GabrijelaNeural\",\r\n [\"hu-HU\"]: \"hu-HU-NoemiNeural\",\r\n [\"id-ID\"]: \"id-ID-ArdiNeural\",\r\n [\"is-IS\"]: \"is-IS-GudrunNeural\",\r\n [\"it-IT\"]: \"it-IT-IsabellaNeural\",\r\n [\"ja-JP\"]: \"ja-JP-NanamiNeural\",\r\n [\"jv-ID\"]: \"jv-ID-DimasNeural\",\r\n [\"kk-KZ\"]: \"kk-KZ-AigulNeural\",\r\n [\"km-KH\"]: \"km-KH-PisethNeural\",\r\n [\"kn-IN\"]: \"kn-IN-GaganNeural\",\r\n [\"ko-KR\"]: \"ko-KR-SunHiNeural\",\r\n [\"lo-LA\"]: \"lo-LA-ChanthavongNeural\",\r\n [\"lt-LT\"]: \"lt-LT-LeonasNeural\",\r\n [\"lv-LV\"]: \"lv-LV-EveritaNeural\",\r\n [\"mk-MK\"]: \"mk-MK-AleksandarNeural\",\r\n [\"ml-IN\"]: \"ml-IN-MidhunNeural\",\r\n [\"mr-IN\"]: \"mr-IN-AarohiNeural\",\r\n [\"ms-MY\"]: \"ms-MY-OsmanNeural\",\r\n [\"mt-MT\"]: \"mt-MT-GraceNeural\",\r\n [\"my-MM\"]: \"my-MM-NilarNeural\",\r\n [\"nb-NO\"]: \"nb-NO-PernilleNeural\",\r\n [\"nl-BE\"]: \"nl-BE-ArnaudNeural\",\r\n [\"nl-NL\"]: \"nl-NL-ColetteNeural\",\r\n [\"pl-PL\"]: \"pl-PL-AgnieszkaNeural\",\r\n [\"ps-AF\"]: \"ps-AF-GulNawazNeural\",\r\n [\"pt-BR\"]: \"pt-BR-FranciscaNeural\",\r\n [\"pt-PT\"]: \"pt-PT-DuarteNeural\",\r\n [\"ro-RO\"]: \"ro-RO-AlinaNeural\",\r\n [\"ru-RU\"]: \"ru-RU-SvetlanaNeural\",\r\n [\"si-LK\"]: \"si-LK-SameeraNeural\",\r\n [\"sk-SK\"]: \"sk-SK-LukasNeural\",\r\n [\"sl-SI\"]: \"sl-SI-PetraNeural\",\r\n [\"so-SO\"]: \"so-SO-MuuseNeural\",\r\n [\"sr-RS\"]: \"sr-RS-NicholasNeural\",\r\n [\"su-ID\"]: \"su-ID-JajangNeural\",\r\n [\"sv-SE\"]: \"sv-SE-SofieNeural\",\r\n [\"sw-KE\"]: \"sw-KE-RafikiNeural\",\r\n [\"sw-TZ\"]: \"sw-TZ-DaudiNeural\",\r\n [\"ta-IN\"]: \"ta-IN-PallaviNeural\",\r\n [\"ta-LK\"]: \"ta-LK-KumarNeural\",\r\n [\"ta-SG\"]: \"ta-SG-AnbuNeural\",\r\n [\"te-IN\"]: \"te-IN-MohanNeural\",\r\n [\"th-TH\"]: \"th-TH-PremwadeeNeural\",\r\n [\"tr-TR\"]: \"tr-TR-AhmetNeural\",\r\n [\"uk-UA\"]: \"uk-UA-OstapNeural\",\r\n [\"ur-IN\"]: \"ur-IN-GulNeural\",\r\n [\"ur-PK\"]: \"ur-PK-AsadNeural\",\r\n [\"uz-UZ\"]: \"uz-UZ-MadinaNeural\",\r\n [\"vi-VN\"]: \"vi-VN-HoaiMyNeural\",\r\n [\"zh-CN\"]: \"zh-CN-XiaoxiaoNeural\",\r\n [\"zh-HK\"]: \"zh-HK-HiuMaanNeural\",\r\n [\"zh-TW\"]: \"zh-TW-HsiaoChenNeural\",\r\n [\"zu-ZA\"]: \"zu-ZA-ThandoNeural\",\r\n };\r\n\r\n let language = this.properties.getProperty(PropertyId.SpeechServiceConnection_SynthLanguage, \"en-US\");\r\n let voice = this.properties.getProperty(PropertyId.SpeechServiceConnection_SynthVoice, \"\");\r\n let ssml: string = SpeechSynthesizer.XMLEncode(text);\r\n if (this.autoDetectSourceLanguage) {\r\n language = \"en-US\";\r\n } else {\r\n voice = voice || languageToDefaultVoice[language];\r\n }\r\n if (voice) {\r\n ssml = `${ssml}`;\r\n }\r\n ssml = `${ssml}`;\r\n return ssml;\r\n }\r\n\r\n /**\r\n * Executes speech synthesis on plain text.\r\n * The task returns the synthesis result.\r\n * @member SpeechSynthesizer.prototype.speakTextAsync\r\n * @function\r\n * @public\r\n * @param text - Text to be synthesized.\r\n * @param cb - Callback that received the SpeechSynthesisResult.\r\n * @param err - Callback invoked in case of an error.\r\n * @param stream - AudioOutputStream to receive the synthesized audio.\r\n */\r\n public speakTextAsync(text: string, cb?: (e: SpeechSynthesisResult) => void, err?: (e: string) => void, stream?: AudioOutputStream | PushAudioOutputStreamCallback | PathLike): void {\r\n this.speakImpl(text, false, cb, err, stream);\r\n }\r\n\r\n /**\r\n * Executes speech synthesis on SSML.\r\n * The task returns the synthesis result.\r\n * @member SpeechSynthesizer.prototype.speakSsmlAsync\r\n * @function\r\n * @public\r\n * @param ssml - SSML to be synthesized.\r\n * @param cb - Callback that received the SpeechSynthesisResult.\r\n * @param err - Callback invoked in case of an error.\r\n * @param stream - AudioOutputStream to receive the synthesized audio.\r\n */\r\n public speakSsmlAsync(ssml: string, cb?: (e: SpeechSynthesisResult) => void, err?: (e: string) => void, stream?: AudioOutputStream | PushAudioOutputStreamCallback | PathLike): void {\r\n this.speakImpl(ssml, true, cb, err, stream);\r\n }\r\n\r\n /**\r\n * Get list of synthesis voices available.\r\n * The task returns the synthesis voice result.\r\n * @member SpeechSynthesizer.prototype.getVoicesAsync\r\n * @function\r\n * @async\r\n * @public\r\n * @param locale - Locale of voices in BCP-47 format; if left empty, get all available voices.\r\n * @return {Promise} - Promise of a SynthesisVoicesResult.\r\n */\r\n public async getVoicesAsync(locale: string = \"\"): Promise {\r\n return this.getVoices(locale);\r\n }\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member SpeechSynthesizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, err?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n\r\n marshalPromiseToCallbacks(this.dispose(true), cb, err);\r\n }\r\n\r\n /**\r\n * @Internal\r\n * Do not use externally, object returned will change without warning or notice.\r\n */\r\n public get internalData(): object {\r\n return this.privAdapter;\r\n }\r\n\r\n /**\r\n * This method performs cleanup of resources.\r\n * The Boolean parameter disposing indicates whether the method is called\r\n * from Dispose (if disposing is true) or from the finalizer (if disposing is false).\r\n * Derived classes should override this method to dispose resource if needed.\r\n * @member SpeechSynthesizer.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - Flag to request disposal.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposed) {\r\n return;\r\n }\r\n\r\n if (disposing) {\r\n if (this.privAdapter) {\r\n await this.privAdapter.dispose();\r\n }\r\n }\r\n\r\n this.privDisposed = true;\r\n }\r\n\r\n //\r\n // ################################################################################################################\r\n // IMPLEMENTATION.\r\n // Move to independent class\r\n // ################################################################################################################\r\n //\r\n protected createSynthesizerConfig(speechConfig: SpeechServiceConfig): SynthesizerConfig {\r\n return new SynthesizerConfig(\r\n speechConfig,\r\n this.privProperties);\r\n }\r\n\r\n // Creates the synthesis adapter\r\n protected createSynthesisAdapter(\r\n authentication: IAuthentication,\r\n connectionFactory: ISynthesisConnectionFactory,\r\n audioConfig: AudioConfig,\r\n synthesizerConfig: SynthesizerConfig): SynthesisAdapterBase {\r\n return new SynthesisAdapterBase(authentication, connectionFactory,\r\n synthesizerConfig, this, this.audioConfig as AudioOutputConfigImpl);\r\n }\r\n\r\n protected implCommonSynthesizeSetup(): void {\r\n\r\n let osPlatform = (typeof window !== \"undefined\") ? \"Browser\" : \"Node\";\r\n let osName = \"unknown\";\r\n let osVersion = \"unknown\";\r\n\r\n if (typeof navigator !== \"undefined\") {\r\n osPlatform = osPlatform + \"/\" + navigator.platform;\r\n osName = navigator.userAgent;\r\n osVersion = navigator.appVersion;\r\n }\r\n\r\n const synthesizerConfig = this.createSynthesizerConfig(\r\n new SpeechServiceConfig(\r\n new Context(new OS(osPlatform, osName, osVersion))));\r\n\r\n const subscriptionKey = this.privProperties.getProperty(PropertyId.SpeechServiceConnection_Key, undefined);\r\n const authentication = (subscriptionKey && subscriptionKey !== \"\") ?\r\n new CognitiveSubscriptionKeyAuthentication(subscriptionKey) :\r\n new CognitiveTokenAuthentication(\r\n (): Promise => {\r\n const authorizationToken = this.privProperties.getProperty(PropertyId.SpeechServiceAuthorization_Token, undefined);\r\n return Promise.resolve(authorizationToken);\r\n },\r\n (): Promise => {\r\n const authorizationToken = this.privProperties.getProperty(PropertyId.SpeechServiceAuthorization_Token, undefined);\r\n return Promise.resolve(authorizationToken);\r\n });\r\n\r\n this.privAdapter = this.createSynthesisAdapter(\r\n authentication,\r\n this.privConnectionFactory,\r\n this.audioConfig,\r\n synthesizerConfig);\r\n\r\n this.privAdapter.audioOutputFormat = AudioOutputFormatImpl.fromSpeechSynthesisOutputFormat(\r\n SpeechSynthesisOutputFormat[this.properties.getProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, undefined) as keyof typeof SpeechSynthesisOutputFormat]\r\n );\r\n\r\n this.privRestAdapter = new SynthesisRestAdapter(synthesizerConfig, authentication);\r\n }\r\n\r\n protected speakImpl(text: string, IsSsml: boolean, cb?: (e: SpeechSynthesisResult) => void, err?: (e: string) => void, dataStream?: AudioOutputStream | PushAudioOutputStreamCallback | PathLike): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privDisposed);\r\n const requestId = createNoDashGuid();\r\n let audioDestination;\r\n if (dataStream instanceof PushAudioOutputStreamCallback) {\r\n audioDestination = new PushAudioOutputStreamImpl(dataStream);\r\n } else if (dataStream instanceof PullAudioOutputStream) {\r\n audioDestination = dataStream as PullAudioOutputStreamImpl;\r\n } else if (dataStream !== undefined) {\r\n audioDestination = new AudioFileWriter(dataStream as PathLike);\r\n } else {\r\n audioDestination = undefined;\r\n }\r\n this.synthesisRequestQueue.enqueue(new SynthesisRequest(requestId, text, IsSsml, (e: SpeechSynthesisResult): void => {\r\n this.privSynthesizing = false;\r\n if (!!cb) {\r\n try {\r\n cb(e);\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n }\r\n cb = undefined;\r\n /* eslint-disable no-empty */\r\n this.adapterSpeak().catch((): void => { });\r\n\r\n }, (e: string): void => {\r\n if (!!err) {\r\n err(e);\r\n }\r\n }, audioDestination));\r\n\r\n /* eslint-disable no-empty-function */\r\n this.adapterSpeak().catch((): void => { });\r\n\r\n } catch (error) {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n\r\n // Destroy the synthesizer.\r\n /* eslint-disable no-empty */\r\n this.dispose(true).catch((): void => { });\r\n }\r\n }\r\n\r\n protected async getVoices(locale: string): Promise {\r\n const requestId = createNoDashGuid();\r\n const response: IRestResponse = await this.privRestAdapter.getVoicesList(requestId);\r\n if (response.ok && Array.isArray(response.json)) {\r\n let json = response.json;\r\n if (!!locale && locale.length > 0) {\r\n json = json.filter((item: { Locale: string }): boolean => !!item.Locale && item.Locale.toLowerCase() === locale.toLowerCase() );\r\n }\r\n return new SynthesisVoicesResult(requestId, json, undefined);\r\n } else {\r\n return new SynthesisVoicesResult(requestId, undefined, `Error: ${response.status}: ${response.statusText}`);\r\n }\r\n }\r\n\r\n protected async adapterSpeak(): Promise {\r\n if (!this.privDisposed && !this.privSynthesizing) {\r\n this.privSynthesizing = true;\r\n const request: SynthesisRequest = await this.synthesisRequestQueue.dequeue();\r\n return this.privAdapter.Speak(request.text, request.isSSML, request.requestId, request.cb, request.err, request.dataStream);\r\n }\r\n }\r\n\r\n private static XMLEncode(text: string): string {\r\n return text.replace(/&/g, \"&\")\r\n .replace(//g, \">\")\r\n .replace(/\"/g, \""\")\r\n .replace(/'/g, \"'\");\r\n }\r\n}\r\n\r\nexport class SynthesisRequest {\r\n public requestId: string;\r\n public text: string;\r\n public isSSML: boolean;\r\n public cb: (e: SpeechSynthesisResult) => void;\r\n public err: (e: string) => void;\r\n public dataStream: IAudioDestination;\r\n\r\n public constructor(requestId: string, text: string, isSSML: boolean, cb?: (e: SpeechSynthesisResult) => void, err?: (e: string) => void, dataStream?: IAudioDestination) {\r\n this.requestId = requestId;\r\n this.text = text;\r\n this.isSSML = isSSML;\r\n this.cb = cb;\r\n this.err = err;\r\n this.dataStream = dataStream;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport {\r\n ForceDictationPropertyName,\r\n OutputFormatPropertyName,\r\n ServicePropertiesPropertyName\r\n} from \"../common.speech/Exports\";\r\nimport { IStringDictionary } from \"../common/Exports\";\r\nimport { Contracts } from \"./Contracts\";\r\nimport {\r\n OutputFormat,\r\n ProfanityOption,\r\n PropertyCollection,\r\n PropertyId,\r\n SpeechConfig,\r\n SpeechSynthesisOutputFormat,\r\n} from \"./Exports\";\r\n\r\n/**\r\n * Speech translation configuration.\r\n * @class SpeechTranslationConfig\r\n */\r\nexport abstract class SpeechTranslationConfig extends SpeechConfig {\r\n\r\n /**\r\n * Creates an instance of recognizer config.\r\n */\r\n protected constructor() {\r\n super();\r\n }\r\n\r\n /**\r\n * Static instance of SpeechTranslationConfig returned by passing a subscription key and service region.\r\n * @member SpeechTranslationConfig.fromSubscription\r\n * @function\r\n * @public\r\n * @param {string} subscriptionKey - The subscription key.\r\n * @param {string} region - The region name (see the region page).\r\n * @returns {SpeechTranslationConfig} The speech translation config.\r\n */\r\n public static fromSubscription(subscriptionKey: string, region: string): SpeechTranslationConfig {\r\n Contracts.throwIfNullOrWhitespace(subscriptionKey, \"subscriptionKey\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const ret: SpeechTranslationConfigImpl = new SpeechTranslationConfigImpl();\r\n ret.properties.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n ret.properties.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n return ret;\r\n }\r\n\r\n /**\r\n * Static instance of SpeechTranslationConfig returned by passing authorization token and service region.\r\n * Note: The caller needs to ensure that the authorization token is valid. Before the authorization token\r\n * expires, the caller needs to refresh it by setting the property authorizationToken with a new\r\n * valid token. Otherwise, all the recognizers created by this SpeechTranslationConfig instance\r\n * will encounter errors during recognition.\r\n * As configuration values are copied when creating a new recognizer, the new token value will not apply\r\n * to recognizers that have already been created.\r\n * For recognizers that have been created before, you need to set authorization token of the corresponding recognizer\r\n * to refresh the token. Otherwise, the recognizers will encounter errors during recognition.\r\n * @member SpeechTranslationConfig.fromAuthorizationToken\r\n * @function\r\n * @public\r\n * @param {string} authorizationToken - The authorization token.\r\n * @param {string} region - The region name (see the region page).\r\n * @returns {SpeechTranslationConfig} The speech translation config.\r\n */\r\n public static fromAuthorizationToken(authorizationToken: string, region: string): SpeechTranslationConfig {\r\n Contracts.throwIfNullOrWhitespace(authorizationToken, \"authorizationToken\");\r\n Contracts.throwIfNullOrWhitespace(region, \"region\");\r\n\r\n const ret: SpeechTranslationConfigImpl = new SpeechTranslationConfigImpl();\r\n ret.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, authorizationToken);\r\n ret.properties.setProperty(PropertyId.SpeechServiceConnection_Region, region);\r\n return ret;\r\n }\r\n\r\n /**\r\n * Creates an instance of the speech config with specified host and subscription key.\r\n * This method is intended only for users who use a non-default service host. Standard resource path will be assumed.\r\n * For services with a non-standard resource path or no path at all, use fromEndpoint instead.\r\n * Note: Query parameters are not allowed in the host URI and must be set by other APIs.\r\n * Note: To use an authorization token with fromHost, use fromHost(URL),\r\n * and then set the AuthorizationToken property on the created SpeechConfig instance.\r\n * Note: Added in version 1.9.0.\r\n * @member SpeechConfig.fromHost\r\n * @function\r\n * @public\r\n * @param {URL} host - The service endpoint to connect to. Format is \"protocol://host:port\" where \":port\" is optional.\r\n * @param {string} subscriptionKey - The subscription key. If a subscription key is not specified, an authorization token must be set.\r\n * @returns {SpeechConfig} A speech factory instance.\r\n */\r\n public static fromHost(hostName: URL, subscriptionKey?: string): SpeechConfig {\r\n Contracts.throwIfNull(hostName, \"hostName\");\r\n\r\n const speechImpl: SpeechTranslationConfigImpl = new SpeechTranslationConfigImpl();\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Host, hostName.protocol + \"//\" + hostName.hostname + (hostName.port === \"\" ? \"\" : \":\" + hostName.port));\r\n\r\n if (undefined !== subscriptionKey) {\r\n speechImpl.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n }\r\n return speechImpl;\r\n }\r\n\r\n /**\r\n * Creates an instance of the speech translation config with specified endpoint and subscription key.\r\n * This method is intended only for users who use a non-standard service endpoint or paramters.\r\n * Note: The query properties specified in the endpoint URL are not changed, even if they are\r\n * set by any other APIs. For example, if language is defined in the uri as query parameter\r\n * \"language=de-DE\", and also set by the speechRecognitionLanguage property, the language\r\n * setting in uri takes precedence, and the effective language is \"de-DE\".\r\n * Only the properties that are not specified in the endpoint URL can be set by other APIs.\r\n * Note: To use authorization token with fromEndpoint, pass an empty string to the subscriptionKey in the\r\n * fromEndpoint method, and then set authorizationToken=\"token\" on the created SpeechConfig instance to\r\n * use the authorization token.\r\n * @member SpeechTranslationConfig.fromEndpoint\r\n * @function\r\n * @public\r\n * @param {URL} endpoint - The service endpoint to connect to.\r\n * @param {string} subscriptionKey - The subscription key.\r\n * @returns {SpeechTranslationConfig} A speech config instance.\r\n */\r\n public static fromEndpoint(endpoint: URL, subscriptionKey: string): SpeechTranslationConfig {\r\n Contracts.throwIfNull(endpoint, \"endpoint\");\r\n Contracts.throwIfNull(subscriptionKey, \"subscriptionKey\");\r\n\r\n const ret: SpeechTranslationConfigImpl = new SpeechTranslationConfigImpl();\r\n ret.properties.setProperty(PropertyId.SpeechServiceConnection_Endpoint, endpoint.href);\r\n ret.properties.setProperty(PropertyId.SpeechServiceConnection_Key, subscriptionKey);\r\n return ret;\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token.\r\n * Note: The caller needs to ensure that the authorization token is valid. Before the authorization token\r\n * expires, the caller needs to refresh it by calling this setter with a new valid token.\r\n * @member SpeechTranslationConfig.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public abstract set authorizationToken(value: string);\r\n\r\n /**\r\n * Gets/Sets the speech recognition language.\r\n * @member SpeechTranslationConfig.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public abstract set speechRecognitionLanguage(value: string);\r\n\r\n /**\r\n * Add a (text) target language to translate into.\r\n * @member SpeechTranslationConfig.prototype.addTargetLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The language such as de-DE\r\n */\r\n public abstract addTargetLanguage(value: string): void;\r\n\r\n /**\r\n * Gets the (text) target language to translate into.\r\n * @member SpeechTranslationConfig.prototype.targetLanguages\r\n * @function\r\n * @public\r\n * @param {string} value - The language such as de-DE\r\n */\r\n public abstract get targetLanguages(): string[];\r\n\r\n /**\r\n * Gets the selected voice name.\r\n * @member SpeechTranslationConfig.prototype.voiceName\r\n * @function\r\n * @public\r\n * @returns {string} The voice name.\r\n */\r\n public abstract get voiceName(): string;\r\n\r\n /**\r\n * Gets/Sets voice of the translated language, enable voice synthesis output.\r\n * @member SpeechTranslationConfig.prototype.voiceName\r\n * @function\r\n * @public\r\n * @param {string} value - The name of the voice.\r\n */\r\n public abstract set voiceName(value: string);\r\n\r\n /**\r\n * Sets a named property as value\r\n * @member SpeechTranslationConfig.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property.\r\n * @param {string} value - The value.\r\n */\r\n public abstract setProperty(name: string, value: string): void;\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member SpeechTranslationConfig.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public abstract close(): void;\r\n}\r\n\r\n/**\r\n * @private\r\n * @class SpeechTranslationConfigImpl\r\n */\r\nexport class SpeechTranslationConfigImpl extends SpeechTranslationConfig {\r\n\r\n private privSpeechProperties: PropertyCollection;\r\n\r\n public constructor() {\r\n super();\r\n this.privSpeechProperties = new PropertyCollection();\r\n this.outputFormat = OutputFormat.Simple;\r\n }\r\n /**\r\n * Gets/Sets the authorization token.\r\n * If this is set, subscription key is ignored.\r\n * User needs to make sure the provided authorization token is valid and not expired.\r\n * @member SpeechTranslationConfigImpl.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public set authorizationToken(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceAuthorization_Token, value);\r\n }\r\n\r\n /**\r\n * Sets the speech recognition language.\r\n * @member SpeechTranslationConfigImpl.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The authorization token.\r\n */\r\n public set speechRecognitionLanguage(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_RecoLanguage, value);\r\n }\r\n\r\n /**\r\n * Gets the speech recognition language.\r\n * @member SpeechTranslationConfigImpl.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @return {string} The speechRecognitionLanguage.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n }\r\n\r\n /**\r\n * @member SpeechTranslationConfigImpl.prototype.subscriptionKey\r\n * @function\r\n * @public\r\n */\r\n public get subscriptionKey(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId[PropertyId.SpeechServiceConnection_Key]);\r\n }\r\n\r\n /**\r\n * Gets the output format\r\n * @member SpeechTranslationConfigImpl.prototype.outputFormat\r\n * @function\r\n * @public\r\n */\r\n public get outputFormat(): OutputFormat {\r\n // eslint-disable-next-line\r\n return (OutputFormat as any)[this.privSpeechProperties.getProperty(OutputFormatPropertyName, undefined)];\r\n }\r\n\r\n /**\r\n * Gets/Sets the output format\r\n * @member SpeechTranslationConfigImpl.prototype.outputFormat\r\n * @function\r\n * @public\r\n */\r\n public set outputFormat(value: OutputFormat) {\r\n this.privSpeechProperties.setProperty(OutputFormatPropertyName, OutputFormat[value]);\r\n }\r\n\r\n /**\r\n * Gets the endpoint id.\r\n * @member SpeechTranslationConfigImpl.prototype.endpointId\r\n * @function\r\n * @public\r\n */\r\n public get endpointId(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_EndpointId);\r\n }\r\n\r\n /**\r\n * Gets/Sets the endpoint id.\r\n * @member SpeechTranslationConfigImpl.prototype.endpointId\r\n * @function\r\n * @public\r\n */\r\n public set endpointId(value: string) {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_EndpointId, value);\r\n }\r\n\r\n /**\r\n * Add a (text) target language to translate into.\r\n * @member SpeechTranslationConfigImpl.prototype.addTargetLanguage\r\n * @function\r\n * @public\r\n * @param {string} value - The language such as de-DE\r\n */\r\n public addTargetLanguage(value: string): void {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n\r\n const languages: string[] = this.targetLanguages;\r\n languages.push(value);\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, languages.join(\",\"));\r\n }\r\n\r\n /**\r\n * Gets the (text) target language to translate into.\r\n * @member SpeechTranslationConfigImpl.prototype.targetLanguages\r\n * @function\r\n * @public\r\n * @param {string} value - The language such as de-DE\r\n */\r\n public get targetLanguages(): string[] {\r\n\r\n if (this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, undefined) !== undefined) {\r\n return this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages).split(\",\");\r\n } else {\r\n return [];\r\n }\r\n\r\n }\r\n\r\n /**\r\n * Gets the voice name.\r\n * @member SpeechTranslationConfigImpl.prototype.voiceName\r\n * @function\r\n * @public\r\n */\r\n public get voiceName(): string {\r\n return this.getProperty(PropertyId[PropertyId.SpeechServiceConnection_TranslationVoice]);\r\n }\r\n\r\n /**\r\n * Gets/Sets the voice of the translated language, enable voice synthesis output.\r\n * @member SpeechTranslationConfigImpl.prototype.voiceName\r\n * @function\r\n * @public\r\n * @param {string} value - The name of the voice.\r\n */\r\n public set voiceName(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"value\");\r\n\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_TranslationVoice, value);\r\n }\r\n\r\n /**\r\n * Provides the region.\r\n * @member SpeechTranslationConfigImpl.prototype.region\r\n * @function\r\n * @public\r\n * @returns {string} The region.\r\n */\r\n public get region(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_Region);\r\n }\r\n\r\n public setProxy(proxyHostName: string, proxyPort: number): void;\r\n public setProxy(proxyHostName: string, proxyPort: number, proxyUserName: string, proxyPassword: string): void;\r\n public setProxy(proxyHostName: any, proxyPort: any, proxyUserName?: any, proxyPassword?: any): void {\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyHostName], proxyHostName as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyPort], proxyPort as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyUserName], proxyUserName as string);\r\n this.setProperty(PropertyId[PropertyId.SpeechServiceConnection_ProxyPassword], proxyPassword as string);\r\n }\r\n\r\n /**\r\n * Gets an arbitrary property value.\r\n * @member SpeechTranslationConfigImpl.prototype.getProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property.\r\n * @param {string} def - The default value of the property in case it is not set.\r\n * @returns {string} The value of the property.\r\n */\r\n public getProperty(name: string, def?: string): string {\r\n return this.privSpeechProperties.getProperty(name, def);\r\n }\r\n\r\n /**\r\n * Gets/Sets an arbitrary property value.\r\n * @member SpeechTranslationConfigImpl.prototype.setProperty\r\n * @function\r\n * @public\r\n * @param {string} name - The name of the property.\r\n * @param {string} value - The value of the property.\r\n */\r\n public setProperty(name: string | PropertyId, value: string): void {\r\n this.privSpeechProperties.setProperty(name, value);\r\n }\r\n\r\n /**\r\n * Provides access to custom properties.\r\n * @member SpeechTranslationConfigImpl.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The properties.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privSpeechProperties;\r\n }\r\n\r\n /**\r\n * Dispose of associated resources.\r\n * @member SpeechTranslationConfigImpl.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(): void {\r\n return;\r\n }\r\n\r\n public setServiceProperty(name: string, value: string): void {\r\n const currentProperties: IStringDictionary = JSON.parse(this.privSpeechProperties.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n\r\n currentProperties[name] = value;\r\n\r\n this.privSpeechProperties.setProperty(ServicePropertiesPropertyName, JSON.stringify(currentProperties));\r\n }\r\n\r\n public setProfanity(profanity: ProfanityOption): void {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceResponse_ProfanityOption, ProfanityOption[profanity]);\r\n }\r\n\r\n public enableAudioLogging(): void {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_EnableAudioLogging, \"true\");\r\n }\r\n public requestWordLevelTimestamps(): void {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceResponse_RequestWordLevelTimestamps, \"true\");\r\n }\r\n public enableDictation(): void {\r\n this.privSpeechProperties.setProperty(ForceDictationPropertyName, \"true\");\r\n }\r\n\r\n public get speechSynthesisLanguage(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_SynthLanguage);\r\n }\r\n\r\n public set speechSynthesisLanguage(language: string) {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_SynthLanguage, language);\r\n }\r\n\r\n public get speechSynthesisVoiceName(): string {\r\n return this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_SynthVoice);\r\n }\r\n\r\n public set speechSynthesisVoiceName(voice: string) {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_SynthVoice, voice);\r\n }\r\n\r\n public get speechSynthesisOutputFormat(): SpeechSynthesisOutputFormat {\r\n // eslint-disable-next-line\r\n return (SpeechSynthesisOutputFormat as any)[this.privSpeechProperties.getProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, undefined)];\r\n }\r\n\r\n public set speechSynthesisOutputFormat(format: SpeechSynthesisOutputFormat) {\r\n this.privSpeechProperties.setProperty(PropertyId.SpeechServiceConnection_SynthOutputFormat, SpeechSynthesisOutputFormat[format]);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, ResultReason } from \"./Exports\";\r\n\r\n/**\r\n * Base class for synthesis results\r\n * @class SynthesisResult\r\n * Added in version 1.20.0\r\n */\r\nexport class SynthesisResult {\r\n private privResultId: string;\r\n private privReason: ResultReason;\r\n private privErrorDetails: string;\r\n private privProperties: PropertyCollection;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n */\r\n public constructor(resultId?: string, reason?: ResultReason, errorDetails?: string, properties?: PropertyCollection) {\r\n this.privResultId = resultId;\r\n this.privReason = reason;\r\n this.privErrorDetails = errorDetails;\r\n this.privProperties = properties;\r\n }\r\n\r\n /**\r\n * Specifies the result identifier.\r\n * @member SynthesisResult.prototype.resultId\r\n * @function\r\n * @public\r\n * @returns {string} Specifies the result identifier.\r\n */\r\n public get resultId(): string {\r\n return this.privResultId;\r\n }\r\n\r\n /**\r\n * Specifies status of the result.\r\n * @member SynthesisResult.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {ResultReason} Specifies status of the result.\r\n */\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful synthesis, provides details of the occurred error.\r\n * @member SynthesisResult.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} a brief description of an error.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n\r\n /**\r\n * The set of properties exposed in the result.\r\n * @member SynthesisResult.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The set of properties exposed in the result.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, ResultReason, SynthesisResult, VoiceInfo } from \"./Exports\";\r\n\r\n/**\r\n * Defines result of speech synthesis.\r\n * @class SynthesisVoicesResult\r\n * Added in version 1.20.0\r\n */\r\nexport class SynthesisVoicesResult extends SynthesisResult {\r\n private privVoices: VoiceInfo[];\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param requestId - result id for request.\r\n * @param json - json payload from endpoint.\r\n */\r\n public constructor(requestId: string, json: any, errorDetails: string ) {\r\n if (Array.isArray(json)) {\r\n super(requestId, ResultReason.VoicesListRetrieved, undefined, new PropertyCollection());\r\n this.privVoices = [];\r\n for (const item of json) {\r\n this.privVoices.push(new VoiceInfo(item as { Name: string; LocalName: string; ShortName: string; Gender: string; VoiceType: string; Locale: string; StyleList: string[] }));\r\n }\r\n } else {\r\n super(requestId, ResultReason.Canceled, errorDetails ? errorDetails : \"Error information unavailable\", new PropertyCollection());\r\n }\r\n }\r\n\r\n /**\r\n * The list of voices\r\n * @member SynthesisVoicesResult.prototype.voices\r\n * @function\r\n * @public\r\n * @returns {VoiceInfo[]} List of synthesized voices.\r\n */\r\n public get voices(): VoiceInfo[] {\r\n return this.privVoices;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n ConversationConnectionConfig,\r\n ConversationManager,\r\n ConversationReceivedTranslationEventArgs,\r\n ConversationRecognizer,\r\n ConversationRecognizerFactory,\r\n ConversationTranslatorCommandTypes,\r\n ConversationTranslatorMessageTypes,\r\n IInternalConversation,\r\n IInternalParticipant,\r\n InternalParticipants,\r\n MuteAllEventArgs,\r\n ParticipantAttributeEventArgs,\r\n ParticipantEventArgs,\r\n ParticipantsListEventArgs,\r\n TranscriberRecognizer\r\n} from \"../../common.speech/Exports\";\r\nimport {\r\n IDisposable,\r\n IErrorMessages,\r\n marshalPromiseToCallbacks\r\n} from \"../../common/Exports\";\r\nimport { Contracts } from \"../Contracts\";\r\nimport {\r\n ConnectionEventArgs,\r\n ConversationExpirationEventArgs,\r\n ConversationParticipantsChangedEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n ConversationTranslationEventArgs,\r\n ConversationTranslator,\r\n Participant,\r\n ParticipantChangedReason,\r\n ProfanityOption,\r\n PropertyCollection,\r\n PropertyId,\r\n SpeechTranslationConfig,\r\n} from \"../Exports\";\r\nimport { SpeechTranslationConfigImpl } from \"../SpeechTranslationConfig\";\r\nimport { Callback, ConversationInfo, ConversationProperties, IConversation } from \"./IConversation\";\r\nimport { IParticipant, IUser, TranscriptionParticipant } from \"./IParticipant\";\r\n\r\nexport abstract class Conversation implements IConversation {\r\n\r\n protected constructor() {\r\n return;\r\n }\r\n\r\n public abstract get authorizationToken(): string;\r\n\r\n public abstract get config(): SpeechTranslationConfig;\r\n\r\n public abstract get conversationId(): string;\r\n public abstract get conversationInfo(): ConversationInfo;\r\n public abstract get properties(): PropertyCollection;\r\n public abstract get speechRecognitionLanguage(): string;\r\n public abstract get participants(): Participant[];\r\n public abstract set authorizationToken(value: string);\r\n public abstract get isConnected(): boolean;\r\n\r\n /**\r\n * Create a conversation\r\n * @param speechConfig\r\n * @param cb\r\n * @param err\r\n */\r\n public static createConversationAsync(speechConfig: SpeechTranslationConfig, arg2?: string | Callback, arg3?: Callback, arg4?: Callback): Conversation {\r\n Contracts.throwIfNullOrUndefined(speechConfig, ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"config\"));\r\n Contracts.throwIfNullOrUndefined(speechConfig.region, ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"SpeechServiceConnection_Region\"));\r\n if (!speechConfig.subscriptionKey && !speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceAuthorization_Token])) {\r\n Contracts.throwIfNullOrUndefined(speechConfig.subscriptionKey, ConversationConnectionConfig.restErrors.invalidArgs.replace(\"{arg}\", \"SpeechServiceConnection_Key\"));\r\n }\r\n let conversationImpl: ConversationImpl;\r\n let cb: Callback;\r\n let err: Callback;\r\n if (typeof arg2 === \"string\") {\r\n conversationImpl = new ConversationImpl(speechConfig, arg2);\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n marshalPromiseToCallbacks((async (): Promise => {})(), arg3, arg4);\r\n } else {\r\n conversationImpl = new ConversationImpl(speechConfig);\r\n cb = arg2;\r\n err = arg3;\r\n conversationImpl.createConversationAsync(\r\n ((): void => {\r\n if (!!cb) {\r\n cb();\r\n }\r\n }),\r\n (error: any): void => {\r\n if (!!err) {\r\n err(error);\r\n }\r\n });\r\n }\r\n return conversationImpl;\r\n\r\n }\r\n\r\n /** Start a conversation. */\r\n public abstract startConversationAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Delete a conversation. After this no one will be able to join the conversation. */\r\n public abstract deleteConversationAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** End a conversation. */\r\n public abstract endConversationAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Lock a conversation. This will prevent new participants from joining. */\r\n public abstract lockConversationAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Add Participant to Conversation. */\r\n public abstract addParticipantAsync(participant: IParticipant, cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Mute all other participants in the conversation. After this no other participants will\r\n * have their speech recognitions broadcast, nor be able to send text messages.\r\n */\r\n public abstract muteAllParticipantsAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Mute a participant.\r\n * @param userId A user identifier\r\n */\r\n public abstract muteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Remove a participant from a conversation using the user id, Participant or User object\r\n * @param userId A user identifier\r\n */\r\n public abstract removeParticipantAsync(userId: string | IParticipant | IUser, cb?: Callback, err?: Callback): void;\r\n\r\n /** Unlocks a conversation. */\r\n public abstract unlockConversationAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /** Unmute all other participants in the conversation. */\r\n public abstract unmuteAllParticipantsAsync(cb?: Callback, err?: Callback): void;\r\n\r\n /**\r\n * Unmute a participant.\r\n * @param userId A user identifier\r\n */\r\n public abstract unmuteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void;\r\n}\r\n\r\nexport class ConversationImpl extends Conversation implements IDisposable {\r\n\r\n private privConfig: SpeechTranslationConfig;\r\n private privProperties: PropertyCollection;\r\n private privLanguage: string;\r\n private privToken: string;\r\n private privIsDisposed: boolean;\r\n private privRoom: IInternalConversation;\r\n private privManager: ConversationManager;\r\n private privConversationRecognizer: ConversationRecognizer;\r\n private privIsConnected: boolean;\r\n private privParticipants: InternalParticipants;\r\n private privIsReady: boolean;\r\n private privConversationTranslator: ConversationTranslator;\r\n private privTranscriberRecognizer: TranscriberRecognizer;\r\n private privErrors: IErrorMessages = ConversationConnectionConfig.restErrors;\r\n private privConversationId: string;\r\n private readonly privTextMessageMaxLength: number;\r\n\r\n /**\r\n * Create a conversation impl\r\n * @param speechConfig\r\n * @param {string} id - optional conversationId\r\n */\r\n public constructor(speechConfig: SpeechTranslationConfig, id?: string) {\r\n super();\r\n this.privIsConnected = false;\r\n this.privIsDisposed = false;\r\n this.privConversationId = \"\";\r\n this.privProperties = new PropertyCollection();\r\n this.privManager = new ConversationManager();\r\n\r\n // check the speech language\r\n const language: string = speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n if (!language) {\r\n speechConfig.setProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage], ConversationConnectionConfig.defaultLanguageCode);\r\n }\r\n this.privLanguage = speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n\r\n if (!id) {\r\n // check the target language(s)\r\n if (speechConfig.targetLanguages.length === 0) {\r\n speechConfig.addTargetLanguage(this.privLanguage);\r\n }\r\n\r\n // check the profanity setting: speech and conversationTranslator should be in sync\r\n const profanity: string = speechConfig.getProperty(PropertyId[PropertyId.SpeechServiceResponse_ProfanityOption]);\r\n if (!profanity) {\r\n speechConfig.setProfanity(ProfanityOption.Masked);\r\n }\r\n // check the nickname: it should pass this regex: ^\\w+([\\s-][\\w\\(\\)]+)*$\"\r\n // TODO: specify the regex required. Nicknames must be unique or get the duplicate nickname error\r\n // TODO: check what the max length is and if a truncation is required or if the service handles it without an error\r\n let hostNickname: string = speechConfig.getProperty(PropertyId[PropertyId.ConversationTranslator_Name]);\r\n if (hostNickname === undefined || hostNickname === null) {\r\n hostNickname = \"Host\";\r\n }\r\n Contracts.throwIfNullOrTooLong(hostNickname, \"nickname\", 50);\r\n Contracts.throwIfNullOrTooShort(hostNickname, \"nickname\", 2);\r\n speechConfig.setProperty(PropertyId[PropertyId.ConversationTranslator_Name], hostNickname);\r\n\r\n } else {\r\n this.privConversationId = id;\r\n }\r\n\r\n // save the speech config for future usage\r\n this.privConfig = speechConfig;\r\n\r\n // save the config properties\r\n const configImpl = speechConfig as SpeechTranslationConfigImpl;\r\n Contracts.throwIfNull(configImpl, \"speechConfig\");\r\n this.privProperties = configImpl.properties.clone();\r\n this.privIsConnected = false;\r\n this.privParticipants = new InternalParticipants();\r\n this.privIsReady = false;\r\n this.privTextMessageMaxLength = 1000;\r\n }\r\n\r\n // get the internal data about a conversation\r\n public get room(): IInternalConversation {\r\n return this.privRoom;\r\n }\r\n\r\n // get the wrapper for connecting to the websockets\r\n public get connection(): ConversationRecognizer {\r\n return this.privConversationRecognizer; // this.privConnection;\r\n }\r\n\r\n // get the config\r\n public get config(): SpeechTranslationConfig {\r\n return this.privConfig;\r\n }\r\n\r\n // get the conversation Id\r\n public get conversationId(): string {\r\n return this.privRoom ? this.privRoom.roomId : this.privConversationId;\r\n }\r\n\r\n // get the properties\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n // get the speech language\r\n public get speechRecognitionLanguage(): string {\r\n return this.privLanguage;\r\n }\r\n\r\n public get isMutedByHost(): boolean {\r\n return this.privParticipants.me?.isHost ? false : this.privParticipants.me?.isMuted;\r\n }\r\n\r\n public get isConnected(): boolean {\r\n return this.privIsConnected && this.privIsReady;\r\n }\r\n\r\n public get participants(): Participant[] {\r\n return this.toParticipants(true);\r\n }\r\n\r\n public get me(): Participant {\r\n return this.toParticipant(this.privParticipants.me);\r\n }\r\n\r\n public get host(): Participant {\r\n return this.toParticipant(this.privParticipants.host);\r\n }\r\n\r\n public get transcriberRecognizer(): TranscriberRecognizer {\r\n return this.privTranscriberRecognizer;\r\n }\r\n\r\n public get conversationInfo(): ConversationInfo {\r\n const convId: string = this.conversationId;\r\n const p: TranscriptionParticipant[] = this.participants.map((part: Participant): TranscriptionParticipant => (\r\n {\r\n id: part.id,\r\n preferredLanguage: part.preferredLanguage,\r\n voice: part.voice\r\n }\r\n ));\r\n const props: ConversationProperties = {};\r\n for (const key of ConversationConnectionConfig.transcriptionEventKeys) {\r\n const val: string = this.properties.getProperty(key, \"\");\r\n if (val !== \"\") {\r\n props[key] = val;\r\n }\r\n }\r\n const info: ConversationInfo = { id: convId, participants: p, conversationProperties: props };\r\n return info;\r\n }\r\n\r\n private get canSend(): boolean {\r\n return this.privIsConnected && !this.privParticipants.me?.isMuted;\r\n }\r\n\r\n private get canSendAsHost(): boolean {\r\n return this.privIsConnected && this.privParticipants.me?.isHost;\r\n }\r\n\r\n // get / set the speech auth token\r\n // eslint-disable-next-line @typescript-eslint/member-ordering\r\n public get authorizationToken(): string {\r\n return this.privToken;\r\n }\r\n\r\n public set authorizationToken(value: string) {\r\n Contracts.throwIfNullOrWhitespace(value, \"authorizationToken\");\r\n this.privToken = value;\r\n }\r\n\r\n public set conversationTranslator(conversationTranslator: ConversationTranslator) {\r\n this.privConversationTranslator = conversationTranslator;\r\n }\r\n\r\n\r\n /**\r\n * Create a new conversation as Host\r\n * @param cb\r\n * @param err\r\n */\r\n public createConversationAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n if (!!this.privConversationRecognizer) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedStart), err);\r\n }\r\n this.privManager.createOrJoin(this.privProperties, undefined,\r\n ((room: IInternalConversation): void => {\r\n if (!room) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConnect), err);\r\n }\r\n this.privRoom = room;\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Starts a new conversation as host.\r\n * @param cb\r\n * @param err\r\n */\r\n public startConversationAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n // check if there is already a recognizer\r\n if (!!this.privConversationRecognizer) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedStart), err);\r\n }\r\n // check if there is conversation data available\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedConnect);\r\n // connect to the conversation websocket\r\n this.privParticipants.meId = this.privRoom.participantId;\r\n this.privConversationRecognizer = ConversationRecognizerFactory.fromConfig(this, this.privConfig);\r\n\r\n // Because ConversationTranslator manually sets up and manages the connection, Conversation\r\n // has to forward serviceRecognizer connection events that usually get passed automatically\r\n this.privConversationRecognizer.connected = this.onConnected;\r\n this.privConversationRecognizer.disconnected = this.onDisconnected;\r\n this.privConversationRecognizer.canceled = this.onCanceled;\r\n\r\n this.privConversationRecognizer.participantUpdateCommandReceived = this.onParticipantUpdateCommandReceived;\r\n this.privConversationRecognizer.lockRoomCommandReceived = this.onLockRoomCommandReceived;\r\n this.privConversationRecognizer.muteAllCommandReceived = this.onMuteAllCommandReceived;\r\n this.privConversationRecognizer.participantJoinCommandReceived = this.onParticipantJoinCommandReceived;\r\n this.privConversationRecognizer.participantLeaveCommandReceived = this.onParticipantLeaveCommandReceived;\r\n this.privConversationRecognizer.translationReceived = this.onTranslationReceived;\r\n this.privConversationRecognizer.participantsListReceived = this.onParticipantsListReceived;\r\n this.privConversationRecognizer.conversationExpiration = this.onConversationExpiration;\r\n\r\n this.privConversationRecognizer.connect(this.privRoom.token,\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Join a conversation as a participant.\r\n * @param { IParticipant } participant - participant to add\r\n * @param cb\r\n * @param err\r\n */\r\n public addParticipantAsync(participant: IParticipant, cb?: Callback, err?: Callback): void {\r\n Contracts.throwIfNullOrUndefined(participant, \"Participant\");\r\n marshalPromiseToCallbacks(this.addParticipantImplAsync(participant), cb, err);\r\n }\r\n\r\n /**\r\n * Join a conversation as a participant.\r\n * @param conversation\r\n * @param nickname\r\n * @param lang\r\n * @param cb\r\n * @param err\r\n */\r\n public joinConversationAsync(conversationId: string, nickname: string, lang: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n // TODO\r\n // if (!!this.privConversationRecognizer) {\r\n // throw new Error(this.privErrors.permissionDeniedStart);\r\n // }\r\n Contracts.throwIfNullOrWhitespace(conversationId, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversationId\"));\r\n Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\r\n Contracts.throwIfNullOrWhitespace(lang, this.privErrors.invalidArgs.replace(\"{arg}\", \"language\"));\r\n // join the conversation\r\n this.privManager.createOrJoin(this.privProperties, conversationId,\r\n ((room: IInternalConversation): void => {\r\n Contracts.throwIfNullOrUndefined(room, this.privErrors.permissionDeniedConnect);\r\n this.privRoom = room;\r\n this.privConfig.authorizationToken = room.cognitiveSpeechAuthToken;\r\n // join callback\r\n if (!!cb) {\r\n cb(room.cognitiveSpeechAuthToken);\r\n }\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Deletes a conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public deleteConversationAsync(cb?: Callback, err?: Callback): void {\r\n marshalPromiseToCallbacks(this.deleteConversationImplAsync(), cb, err);\r\n }\r\n\r\n public async deleteConversationImplAsync(): Promise {\r\n Contracts.throwIfNullOrUndefined(this.privProperties, this.privErrors.permissionDeniedConnect);\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.token, this.privErrors.permissionDeniedConnect);\r\n await this.privManager.leave(this.privProperties, this.privRoom.token);\r\n\r\n this.dispose();\r\n }\r\n\r\n /**\r\n * Issues a request to close the client websockets\r\n * @param cb\r\n * @param err\r\n */\r\n public endConversationAsync(cb?: Callback, err?: Callback): void {\r\n marshalPromiseToCallbacks(this.endConversationImplAsync(), cb, err);\r\n }\r\n\r\n public endConversationImplAsync(): Promise {\r\n return this.close(true);\r\n }\r\n\r\n /**\r\n * Issues a request to lock the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public lockConversationAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"lock\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getLockCommand(true),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to mute the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public muteAllParticipantsAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privConversationRecognizer, this.privErrors.permissionDeniedSend);\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n // check the user's permissions\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"mute\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteAllCommand(true),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to mute a participant in the conversation\r\n * @param userId\r\n * @param cb\r\n * @param err\r\n */\r\n public muteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(userId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n // check the connection is open (host + participant can perform the mute command)\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n // if not host, check the participant is not muting another participant\r\n if (!this.me.isHost && this.me.id !== userId) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"mute\")), err);\r\n }\r\n // check the user exists\r\n const exists: number = this.privParticipants.getParticipantIndex(userId);\r\n if (exists === -1) {\r\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteCommand(userId, true), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to remove a participant from the conversation\r\n * @param userId\r\n * @param cb\r\n * @param err\r\n */\r\n public removeParticipantAsync(userId: string | IParticipant | IUser, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n if (!!this.privTranscriberRecognizer && userId.hasOwnProperty(\"id\")) {\r\n // Assume this is a transcription participant\r\n marshalPromiseToCallbacks(this.removeParticipantImplAsync(userId as IParticipant), cb, err);\r\n } else {\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"remove\")), err);\r\n }\r\n let participantId = \"\";\r\n if (typeof userId === \"string\") {\r\n participantId = userId;\r\n } else if (userId.hasOwnProperty(\"id\")) {\r\n const participant: IParticipant = userId as IParticipant;\r\n participantId = participant.id;\r\n } else if (userId.hasOwnProperty(\"userId\")) {\r\n const user: IUser = userId as IUser;\r\n participantId = user.userId;\r\n }\r\n Contracts.throwIfNullOrWhitespace(participantId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\r\n // check the participant exists\r\n const index: number = this.participants.findIndex((p: Participant): boolean => p.id === participantId);\r\n if (index === -1) {\r\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getEjectCommand(participantId), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to unlock the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public unlockConversationAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"unlock\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getLockCommand(false), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to unmute all participants in the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public unmuteAllParticipantsAsync(cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSendAsHost) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConversation.replace(\"{command}\", \"unmute all\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteAllCommand(false), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Issues a request to unmute a participant in the conversation\r\n * @param userId\r\n * @param cb\r\n * @param err\r\n */\r\n public unmuteParticipantAsync(userId: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(userId, this.privErrors.invalidArgs.replace(\"{arg}\", \"userId\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n // check the connection is open (host + participant can perform the mute command)\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n // if not host, check the participant is not muting another participant\r\n if (!this.me.isHost && this.me.id !== userId) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedParticipant.replace(\"{command}\", \"mute\")), err);\r\n }\r\n // check the user exists\r\n const exists: number = this.privParticipants.getParticipantIndex(userId);\r\n if (exists === -1) {\r\n this.handleError(new Error(this.privErrors.invalidParticipantRequest), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMuteCommand(userId, false), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Send a text message\r\n * @param message\r\n * @param cb\r\n * @param err\r\n */\r\n public sendTextMessageAsync(message: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(message, this.privErrors.invalidArgs.replace(\"{arg}\", \"message\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n // TODO: is a max length check required?\r\n if (message.length > this.privTextMessageMaxLength) {\r\n this.handleError(new Error(this.privErrors.invalidArgs.replace(\"{arg}\", \"message length\")), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getMessageCommand(message), ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Set translated to languages\r\n * @param {string[]} languages - languages to translate to\r\n * @param cb\r\n * @param err\r\n */\r\n public setTranslatedLanguagesAsync(languages: string[], cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfArrayEmptyOrWhitespace(languages, this.privErrors.invalidArgs.replace(\"{arg}\", \"languages\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getSetTranslateToLanguagesCommand(languages),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Change nickname\r\n * @param {string} nickname - new nickname for the room\r\n * @param cb\r\n * @param err\r\n */\r\n public changeNicknameAsync(nickname: string, cb?: Callback, err?: Callback): void {\r\n try {\r\n Contracts.throwIfDisposed(this.privIsDisposed);\r\n Contracts.throwIfDisposed(this.privConversationRecognizer.isDisposed());\r\n Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\r\n Contracts.throwIfNullOrUndefined(this.privRoom, this.privErrors.permissionDeniedSend);\r\n if (!this.canSend) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n if (!!this.privConversationRecognizer) {\r\n this.privConversationRecognizer.sendRequest(this.getChangeNicknameCommand(nickname),\r\n ((): void => {\r\n this.handleCallback(cb, err);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, err);\r\n }));\r\n }\r\n } catch (error) {\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public dispose(): void {\r\n if (this.isDisposed) {\r\n return;\r\n }\r\n this.privIsDisposed = true;\r\n if (!!this.config) {\r\n this.config.close();\r\n }\r\n this.privConfig = undefined;\r\n this.privLanguage = undefined;\r\n this.privProperties = undefined;\r\n this.privRoom = undefined;\r\n this.privToken = undefined;\r\n this.privManager = undefined;\r\n this.privIsConnected = false;\r\n this.privIsReady = false;\r\n this.privParticipants = undefined;\r\n }\r\n\r\n public async connectTranscriberRecognizer(recognizer: TranscriberRecognizer): Promise {\r\n if (!!this.privTranscriberRecognizer) {\r\n await this.privTranscriberRecognizer.close();\r\n }\r\n await recognizer.enforceAudioGating();\r\n this.privTranscriberRecognizer = recognizer;\r\n this.privTranscriberRecognizer.conversation = this;\r\n }\r\n\r\n public getKeepAlive(): string {\r\n const nickname: string = (!!this.me) ? this.me.displayName : \"default_nickname\";\r\n return JSON.stringify({\r\n id: \"0\",\r\n nickname,\r\n participantId: this.privRoom.participantId,\r\n roomId: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.keepAlive\r\n });\r\n }\r\n\r\n /** websocket callbacks */\r\n /* eslint-disable @typescript-eslint/typedef */\r\n private onConnected = (e: ConnectionEventArgs): void => {\r\n this.privIsConnected = true;\r\n try {\r\n if (!!this.privConversationTranslator?.sessionStarted) {\r\n this.privConversationTranslator.sessionStarted(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onDisconnected = (e: ConnectionEventArgs): void => {\r\n try {\r\n if (!!this.privConversationTranslator?.sessionStopped) {\r\n this.privConversationTranslator.sessionStopped(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n } finally {\r\n void this.close(false);\r\n }\r\n };\r\n\r\n private onCanceled = (r: ConversationRecognizer, e: ConversationTranslationCanceledEventArgs): void => {\r\n try {\r\n if (!!this.privConversationTranslator?.canceled) {\r\n this.privConversationTranslator.canceled(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantUpdateCommandReceived = (r: ConversationRecognizer, e: ParticipantAttributeEventArgs): void => {\r\n try {\r\n const updatedParticipant: IInternalParticipant = this.privParticipants.getParticipant(e.id);\r\n if (updatedParticipant !== undefined) {\r\n\r\n switch (e.key) {\r\n case ConversationTranslatorCommandTypes.changeNickname:\r\n updatedParticipant.displayName = e.value as string;\r\n break;\r\n case ConversationTranslatorCommandTypes.setUseTTS:\r\n updatedParticipant.isUsingTts = e.value as boolean;\r\n break;\r\n case ConversationTranslatorCommandTypes.setProfanityFiltering:\r\n updatedParticipant.profanity = e.value as boolean;\r\n break;\r\n case ConversationTranslatorCommandTypes.setMute:\r\n updatedParticipant.isMuted = e.value as boolean;\r\n break;\r\n case ConversationTranslatorCommandTypes.setTranslateToLanguages:\r\n updatedParticipant.translateToLanguages = e.value as string[];\r\n break;\r\n }\r\n this.privParticipants.addOrUpdateParticipant(updatedParticipant);\r\n\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.Updated,\r\n [this.toParticipant(updatedParticipant)], e.sessionId));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onLockRoomCommandReceived = (): void => {\r\n // TODO\r\n };\r\n\r\n private onMuteAllCommandReceived = (r: ConversationRecognizer, e: MuteAllEventArgs): void => {\r\n try {\r\n this.privParticipants.participants.forEach((p: IInternalParticipant): boolean => p.isMuted = (p.isHost ? false : e.isMuted));\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.Updated,\r\n this.toParticipants(false), e.sessionId));\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantJoinCommandReceived = (r: ConversationRecognizer, e: ParticipantEventArgs): void => {\r\n try {\r\n const newParticipant: IInternalParticipant = this.privParticipants.addOrUpdateParticipant(e.participant);\r\n if (newParticipant !== undefined) {\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.JoinedConversation,\r\n [this.toParticipant(newParticipant)], e.sessionId));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantLeaveCommandReceived = (r: ConversationRecognizer, e: ParticipantEventArgs): void => {\r\n try {\r\n const ejectedParticipant: IInternalParticipant = this.privParticipants.getParticipant(e.participant.id);\r\n if (ejectedParticipant !== undefined) {\r\n // remove the participant from the internal participants list\r\n this.privParticipants.deleteParticipant(e.participant.id);\r\n if (!!this.privConversationTranslator) {\r\n // notify subscribers that the participant has left the conversation\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.LeftConversation,\r\n [this.toParticipant(ejectedParticipant)], e.sessionId));\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onTranslationReceived = (r: ConversationRecognizer, e: ConversationReceivedTranslationEventArgs): void => {\r\n try {\r\n switch (e.command) {\r\n case ConversationTranslatorMessageTypes.final:\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.transcribed(\r\n this.privConversationTranslator,\r\n new ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\r\n }\r\n break;\r\n case ConversationTranslatorMessageTypes.partial:\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.transcribing(\r\n this.privConversationTranslator,\r\n new ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\r\n }\r\n break;\r\n case ConversationTranslatorMessageTypes.instantMessage:\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.textMessageReceived(\r\n this.privConversationTranslator,\r\n new ConversationTranslationEventArgs(e.payload, undefined, e.sessionId));\r\n }\r\n break;\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onParticipantsListReceived = (r: ConversationRecognizer, e: ParticipantsListEventArgs): void => {\r\n try {\r\n // check if the session token needs to be updated\r\n if (e.sessionToken !== undefined && e.sessionToken !== null) {\r\n this.privRoom.token = e.sessionToken;\r\n }\r\n // save the participants\r\n this.privParticipants.participants = [...e.participants];\r\n // enable the conversation\r\n if (this.privParticipants.me !== undefined) {\r\n this.privIsReady = true;\r\n }\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.participantsChanged(\r\n this.privConversationTranslator,\r\n new ConversationParticipantsChangedEventArgs(ParticipantChangedReason.JoinedConversation, this.toParticipants(true), e.sessionId));\r\n }\r\n // if this is the host, update the nickname if needed\r\n if (this.me.isHost) {\r\n const nickname: string = this.privConversationTranslator?.properties.getProperty(PropertyId.ConversationTranslator_Name);\r\n if (nickname !== undefined && nickname.length > 0 && nickname !== this.me.displayName) {\r\n // issue a change nickname request\r\n this.changeNicknameAsync(nickname);\r\n }\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n\r\n private onConversationExpiration = (r: ConversationRecognizer, e: ConversationExpirationEventArgs): void => {\r\n try {\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.conversationExpiration(this.privConversationTranslator, e);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n };\r\n /* eslint-enable @typescript-eslint/typedef */\r\n\r\n private addParticipantImplAsync(participant: IParticipant): Promise {\r\n const newParticipant: IInternalParticipant = this.privParticipants.addOrUpdateParticipant(participant);\r\n if (newParticipant !== undefined) {\r\n if (!!this.privTranscriberRecognizer) {\r\n const conversationInfo = this.conversationInfo;\r\n conversationInfo.participants = [participant];\r\n return this.privTranscriberRecognizer.pushConversationEvent(conversationInfo, \"join\");\r\n }\r\n }\r\n }\r\n\r\n private removeParticipantImplAsync(participant: IParticipant): Promise {\r\n this.privParticipants.deleteParticipant(participant.id);\r\n const conversationInfo = this.conversationInfo;\r\n conversationInfo.participants = [participant];\r\n return this.privTranscriberRecognizer.pushConversationEvent(conversationInfo, \"leave\");\r\n }\r\n\r\n private async close(dispose: boolean): Promise {\r\n try {\r\n this.privIsConnected = false;\r\n await this.privConversationRecognizer?.close();\r\n this.privConversationRecognizer = undefined;\r\n if (!!this.privConversationTranslator) {\r\n this.privConversationTranslator.dispose();\r\n }\r\n } catch (e) {\r\n // ignore error\r\n throw e;\r\n }\r\n if (dispose) {\r\n this.dispose();\r\n }\r\n }\r\n\r\n /** Helpers */\r\n private handleCallback(cb: () => void, err: (message: string) => void): void {\r\n if (!!cb) {\r\n try {\r\n cb();\r\n } catch (e) {\r\n if (!!err) {\r\n err(e as string);\r\n }\r\n }\r\n cb = undefined;\r\n }\r\n }\r\n\r\n private handleError(error: any, err: (message: string) => void): void {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n\r\n } else {\r\n err(error as string);\r\n }\r\n }\r\n }\r\n\r\n /** Participant Helpers */\r\n private toParticipants(includeHost: boolean): Participant[] {\r\n\r\n const participants: Participant[] = this.privParticipants.participants.map((p: IInternalParticipant): Participant => ( this.toParticipant(p) ) );\r\n if (!includeHost) {\r\n return participants.filter((p: Participant): boolean => p.isHost === false);\r\n } else {\r\n return participants;\r\n }\r\n }\r\n\r\n private toParticipant(p: IInternalParticipant): Participant {\r\n return new Participant(p.id, p.avatar, p.displayName, p.isHost, p.isMuted, p.isUsingTts, p.preferredLanguage, p.voice);\r\n }\r\n\r\n private getMuteAllCommand(isMuted: boolean): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setMuteAll,\r\n participantId: this.privRoom.participantId, // the id of the host\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: isMuted\r\n });\r\n }\r\n\r\n private getMuteCommand(participantId: string, isMuted: boolean): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setMute,\r\n // eslint-disable-next-line object-shorthand\r\n participantId: participantId,\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: isMuted\r\n });\r\n }\r\n\r\n private getLockCommand(isLocked: boolean): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setLockState,\r\n participantId: this.privRoom.participantId,\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: isLocked\r\n });\r\n }\r\n\r\n private getEjectCommand(participantId: string): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.ejectParticipant,\r\n // eslint-disable-next-line object-shorthand\r\n participantId: participantId,\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n });\r\n }\r\n\r\n private getSetTranslateToLanguagesCommand(languages: string[]): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.setTranslateToLanguages,\r\n participantId: this.privRoom.participantId, // the id of the host\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: languages\r\n });\r\n }\r\n\r\n private getChangeNicknameCommand(nickname: string): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(nickname, \"nickname\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n\r\n return JSON.stringify({\r\n command: ConversationTranslatorCommandTypes.changeNickname,\r\n nickname,\r\n participantId: this.privRoom.participantId, // the id of the host\r\n roomid: this.privRoom.roomId,\r\n type: ConversationTranslatorMessageTypes.participantCommand,\r\n value: nickname\r\n });\r\n }\r\n\r\n private getMessageCommand(message: string): string {\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.roomId, \"conversationId\");\r\n Contracts.throwIfNullOrWhitespace(this.privRoom.participantId, \"participantId\");\r\n Contracts.throwIfNullOrWhitespace(message, \"message\");\r\n\r\n return JSON.stringify({\r\n participantId: this.privRoom.participantId,\r\n roomId: this.privRoom.roomId,\r\n text: message,\r\n type: ConversationTranslatorMessageTypes.instantMessage\r\n });\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n AudioConfig,\r\n SpeechTranslationConfig\r\n} from \"../Exports\";\r\nimport { Callback } from \"./IConversation\";\r\n\r\nexport class ConversationCommon {\r\n\r\n protected privAudioConfig: AudioConfig;\r\n protected privSpeechTranslationConfig: SpeechTranslationConfig;\r\n\r\n public constructor(audioConfig?: AudioConfig) {\r\n this.privAudioConfig = audioConfig;\r\n }\r\n\r\n protected handleCallback(cb: Callback, err: Callback): void {\r\n if (!!cb) {\r\n try {\r\n cb();\r\n } catch (e) {\r\n if (!!err) {\r\n err(e);\r\n }\r\n }\r\n cb = undefined;\r\n }\r\n }\r\n\r\n protected handleError(error: any, err: Callback): void {\r\n if (!!err) {\r\n if (error instanceof Error) {\r\n const typedError: Error = error;\r\n err(typedError.name + \": \" + typedError.message);\r\n\r\n } else {\r\n err(error);\r\n }\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { SessionEventArgs } from \"../Exports\";\r\n\r\nexport class ConversationExpirationEventArgs extends SessionEventArgs {\r\n private privExpirationTime: number;\r\n\r\n public constructor(expirationTime: number, sessionId?: string) {\r\n super(sessionId);\r\n this.privExpirationTime = expirationTime;\r\n }\r\n\r\n /** How much longer until the conversation expires (in minutes). */\r\n public get expirationTime(): number {\r\n return this.privExpirationTime;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { SessionEventArgs } from \"../Exports\";\r\nimport { ParticipantChangedReason } from \"./Exports\";\r\nimport { IParticipant } from \"./IParticipant\";\r\n\r\nexport class ConversationParticipantsChangedEventArgs extends SessionEventArgs {\r\n private privReason: ParticipantChangedReason;\r\n private privParticipant: IParticipant[];\r\n\r\n public constructor(reason: ParticipantChangedReason, participants: IParticipant[], sessionId?: string) {\r\n super(sessionId);\r\n this.privReason = reason;\r\n this.privParticipant = participants;\r\n }\r\n\r\n public get reason(): ParticipantChangedReason {\r\n return this.privReason;\r\n }\r\n\r\n public get participants(): IParticipant[] {\r\n return this.privParticipant;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { TranscriberRecognizer } from \"../../common.speech/Exports\";\r\nimport { marshalPromiseToCallbacks } from \"../../common/Exports\";\r\nimport { Contracts } from \"../Contracts\";\r\nimport {\r\n AudioConfig,\r\n CancellationEventArgs,\r\n Connection,\r\n ConversationTranscriptionEventArgs,\r\n PropertyCollection,\r\n PropertyId,\r\n SessionEventArgs\r\n} from \"../Exports\";\r\nimport {\r\n ConversationHandler,\r\n ConversationImpl,\r\n ConversationTranscriptionHandler\r\n} from \"./Exports\";\r\nimport { Callback, IConversation } from \"./IConversation\";\r\n\r\nexport class ConversationTranscriber implements ConversationTranscriptionHandler {\r\n\r\n /**\r\n * The event canceled signals that an error occurred during the conversation.\r\n * @member ConversationTranscriber.prototype.conversationCanceled\r\n * @function\r\n * @public\r\n */\r\n public conversationCanceled: (sender: ConversationHandler, event: CancellationEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during transcription.\r\n * @member ConversationTranscriber.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: ConversationHandler, event: CancellationEventArgs) => void;\r\n\r\n /**\r\n * The event recognized signals that a final conversation transcription result is received.\r\n * @member ConversationTranscriber.prototype.transcribed\r\n * @function\r\n * @public\r\n */\r\n public transcribed: (sender: ConversationTranscriptionHandler, event: ConversationTranscriptionEventArgs) => void;\r\n\r\n /**\r\n * The event recognizing signals that an intermediate conversation transcription result is received.\r\n * @member ConversationTranscriber.prototype.transcribing\r\n * @function\r\n * @public\r\n */\r\n public transcribing: (sender: ConversationTranscriptionHandler, event: ConversationTranscriptionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for session started events.\r\n * @member ConversationTranscriber.prototype.sessionStarted\r\n * @function\r\n * @public\r\n */\r\n public sessionStarted: (sender: ConversationHandler, event: SessionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for session stopped events.\r\n * @member ConversationTranscriber.prototype.sessionStopped\r\n * @function\r\n * @public\r\n */\r\n public sessionStopped: (sender: ConversationHandler, event: SessionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for conversation started events.\r\n * @member ConversationTranscriber.prototype.conversationStarted\r\n * @function\r\n * @public\r\n */\r\n public conversationStarted: (sender: ConversationHandler, event: SessionEventArgs) => void;\r\n\r\n /**\r\n * Defines event handler for conversation stopped events.\r\n * @member ConversationTranscriber.prototype.conversationStopped\r\n * @function\r\n * @public\r\n */\r\n public conversationStopped: (sender: ConversationHandler, event: SessionEventArgs) => void;\r\n\r\n protected privAudioConfig: AudioConfig;\r\n private privDisposedRecognizer: boolean;\r\n private privRecognizer: TranscriberRecognizer;\r\n private privProperties: PropertyCollection;\r\n\r\n /**\r\n * ConversationTranscriber constructor.\r\n * @constructor\r\n * @param {AudioConfig} audioConfig - An optional audio configuration associated with the recognizer\r\n */\r\n public constructor(audioConfig?: AudioConfig) {\r\n this.privAudioConfig = audioConfig;\r\n this.privProperties = new PropertyCollection();\r\n this.privRecognizer = undefined;\r\n this.privDisposedRecognizer = false;\r\n }\r\n\r\n /**\r\n * Gets the spoken language of recognition.\r\n * @member ConversationTranscriber.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @returns {string} The spoken language of recognition.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this ConversationTranscriber.\r\n * @member ConversationTranscriber.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this ConversationTranscriber.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * @Internal\r\n * Internal data member to support fromRecognizer* pattern methods on other classes.\r\n * Do not use externally, object returned will change without warning or notice.\r\n */\r\n public get internalData(): object {\r\n return this.privRecognizer.internalData;\r\n }\r\n\r\n /**\r\n * @Deprecated\r\n * @Obsolete\r\n * Please use the Connection.fromRecognizer pattern to obtain a connection object\r\n */\r\n public get connection(): Connection {\r\n return Connection.fromRecognizer(this.privRecognizer);\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member ConversationTranscriber.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member ConversationTranscriber.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * @param {Conversation} conversation - conversation to be recognized\r\n */\r\n public joinConversationAsync(conversation: IConversation, cb?: Callback, err?: Callback): void {\r\n const conversationImpl = conversation as ConversationImpl;\r\n Contracts.throwIfNullOrUndefined(conversationImpl, \"Conversation\");\r\n\r\n // ref the conversation object\r\n // create recognizer and subscribe to recognizer events\r\n this.privRecognizer = new TranscriberRecognizer(conversation.config, this.privAudioConfig);\r\n Contracts.throwIfNullOrUndefined(this.privRecognizer, \"Recognizer\");\r\n this.privRecognizer.connectCallbacks(this);\r\n\r\n marshalPromiseToCallbacks(conversationImpl.connectTranscriberRecognizer(this.privRecognizer), cb, err);\r\n }\r\n\r\n /**\r\n * Starts conversation transcription, until stopTranscribingAsync() is called.\r\n * User must subscribe to events to receive transcription results.\r\n * @member ConversationTranscriber.prototype.startTranscribingAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the transcription has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startTranscribingAsync(cb?: Callback, err?: Callback): void {\r\n this.privRecognizer.startContinuousRecognitionAsync(cb, err);\r\n }\r\n\r\n /**\r\n * Starts conversation transcription, until stopTranscribingAsync() is called.\r\n * User must subscribe to events to receive transcription results.\r\n * @member ConversationTranscriber.prototype.stopTranscribingAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback invoked once the transcription has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopTranscribingAsync(cb?: Callback, err?: Callback): void {\r\n this.privRecognizer.stopContinuousRecognitionAsync(cb, err);\r\n }\r\n\r\n /**\r\n * Leave the current conversation. After this is called, you will no longer receive any events.\r\n */\r\n public leaveConversationAsync(cb?: Callback, err?: Callback): void {\r\n this.privRecognizer.disconnectCallbacks();\r\n // eslint-disable-next-line\r\n marshalPromiseToCallbacks((async (): Promise => { return; })(), cb, err);\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member ConversationTranscriber.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedRecognizer);\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n /**\r\n * Disposes any resources held by the object.\r\n * @member ConversationTranscriber.prototype.dispose\r\n * @function\r\n * @public\r\n * @param {boolean} disposing - true if disposing the object.\r\n */\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedRecognizer) {\r\n return;\r\n }\r\n if (!!this.privRecognizer) {\r\n await this.privRecognizer.close();\r\n this.privRecognizer = undefined;\r\n }\r\n if (disposing) {\r\n this.privDisposedRecognizer = true;\r\n }\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { CancellationEventArgsBase } from \"../CancellationEventArgsBase\";\r\n\r\nexport class ConversationTranslationCanceledEventArgs extends CancellationEventArgsBase {\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { RecognitionEventArgs } from \"../Exports\";\r\nimport { ConversationTranslationResult } from \"./Exports\";\r\n\r\nexport class ConversationTranslationEventArgs extends RecognitionEventArgs {\r\n private privResult: ConversationTranslationResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {ConversationTranslationResult} result - The translation recognition result.\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(result: ConversationTranslationResult, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the recognition result.\r\n * @returns {ConversationTranslationResult} the recognition result.\r\n */\r\n public get result(): ConversationTranslationResult {\r\n return this.privResult;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nimport { PropertyCollection } from \"../PropertyCollection\";\r\nimport { ResultReason } from \"../ResultReason\";\r\nimport { TranslationRecognitionResult } from \"../TranslationRecognitionResult\";\r\nimport { Translations } from \"../Translations\";\r\n\r\nexport class ConversationTranslationResult extends TranslationRecognitionResult {\r\n private privId: string;\r\n private privOrigLang: string;\r\n\r\n public constructor(participantId: string,\r\n translations: Translations,\r\n originalLanguage?: string,\r\n resultId?: string,\r\n reason?: ResultReason,\r\n text?: string,\r\n duration?: number,\r\n offset?: number,\r\n errorDetails?: string,\r\n json?: string,\r\n properties?: PropertyCollection) {\r\n super(translations, resultId, reason, text, duration, offset, errorDetails, json, properties);\r\n this.privId = participantId;\r\n this.privOrigLang = originalLanguage;\r\n }\r\n\r\n /**\r\n * The unique identifier for the participant this result is for.\r\n */\r\n public get participantId(): string {\r\n return this.privId;\r\n }\r\n\r\n /**\r\n * The original language this result was in.\r\n */\r\n public get originalLang(): string {\r\n return this.privOrigLang;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\n/* eslint-disable max-classes-per-file */\r\n\r\nimport {\r\n ConversationConnectionConfig,\r\n ServicePropertiesPropertyName,\r\n} from \"../../common.speech/Exports\";\r\nimport { ConversationTranslatorConnectionFactory } from \"../../common.speech/Transcription/ConversationTranslatorConnectionFactory\";\r\nimport {\r\n IDisposable,\r\n IErrorMessages,\r\n IStringDictionary,\r\n marshalPromiseToCallbacks\r\n} from \"../../common/Exports\";\r\nimport { Contracts } from \"../Contracts\";\r\nimport {\r\n AudioConfig,\r\n CancellationErrorCode,\r\n CancellationReason,\r\n ProfanityOption,\r\n PropertyCollection,\r\n PropertyId,\r\n ServicePropertyChannel,\r\n SessionEventArgs,\r\n SpeechTranslationConfig,\r\n TranslationRecognitionEventArgs,\r\n TranslationRecognizer\r\n} from \"../Exports\";\r\nimport { ConversationImpl } from \"./Conversation\";\r\nimport {\r\n ConversationCommon,\r\n ConversationExpirationEventArgs,\r\n ConversationHandler,\r\n ConversationParticipantsChangedEventArgs,\r\n ConversationTranslationCanceledEventArgs,\r\n ConversationTranslationEventArgs,\r\n IConversationTranslator,\r\n Participant\r\n} from \"./Exports\";\r\nimport { Callback, IConversation } from \"./IConversation\";\r\n\r\nexport enum SpeechState {\r\n Inactive, Connecting, Connected\r\n}\r\n\r\n// child class of TranslationRecognizer meant only for use with ConversationTranslator\r\nclass ConversationTranslationRecognizer extends TranslationRecognizer {\r\n private privTranslator: ConversationTranslator;\r\n private privSpeechState: SpeechState;\r\n\r\n public constructor(speechConfig: SpeechTranslationConfig, audioConfig: AudioConfig, translator: ConversationTranslator, convGetter: () => ConversationImpl) {\r\n\r\n super(speechConfig, audioConfig, new ConversationTranslatorConnectionFactory(convGetter));\r\n\r\n this.privSpeechState = SpeechState.Inactive;\r\n if (!!translator) {\r\n this.privTranslator = translator;\r\n this.sessionStarted = (): void => {\r\n this.privSpeechState = SpeechState.Connected;\r\n };\r\n\r\n this.sessionStopped = (): void => {\r\n this.privSpeechState = SpeechState.Inactive;\r\n };\r\n\r\n this.recognizing = (tr: TranslationRecognizer, e: TranslationRecognitionEventArgs): void => {\r\n if (!!this.privTranslator.recognizing) {\r\n this.privTranslator.recognizing(this.privTranslator, e);\r\n }\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\r\n this.recognized = async (tr: TranslationRecognizer, e: TranslationRecognitionEventArgs): Promise => {\r\n // if there is an error connecting to the conversation service from the speech service the error will be returned in the ErrorDetails field.\r\n if (e.result?.errorDetails) {\r\n await this.cancelSpeech();\r\n // TODO: format the error message contained in 'errorDetails'\r\n this.fireCancelEvent(e.result.errorDetails);\r\n } else {\r\n if (!!this.privTranslator.recognized) {\r\n this.privTranslator.recognized(this.privTranslator, e);\r\n }\r\n }\r\n return;\r\n };\r\n\r\n // eslint-disable-next-line @typescript-eslint/no-misused-promises\r\n this.canceled = async (): Promise => {\r\n if (this.privSpeechState !== SpeechState.Inactive) {\r\n try {\r\n await this.cancelSpeech();\r\n } catch (error) {\r\n this.privSpeechState = SpeechState.Inactive;\r\n }\r\n }\r\n };\r\n }\r\n }\r\n\r\n public get state(): SpeechState {\r\n return this.privSpeechState;\r\n }\r\n\r\n public set state(newState: SpeechState) {\r\n this.privSpeechState = newState;\r\n }\r\n\r\n public onConnection(): void {\r\n this.privSpeechState = SpeechState.Connected;\r\n }\r\n\r\n public async onDisconnection(): Promise {\r\n this.privSpeechState = SpeechState.Inactive;\r\n await this.cancelSpeech();\r\n }\r\n\r\n /**\r\n * Fire a cancel event\r\n * @param error\r\n */\r\n private fireCancelEvent(error: string): void {\r\n try {\r\n if (!!this.privTranslator.canceled) {\r\n const cancelEvent: ConversationTranslationCanceledEventArgs = new ConversationTranslationCanceledEventArgs(\r\n CancellationReason.Error,\r\n error,\r\n CancellationErrorCode.RuntimeError\r\n );\r\n\r\n this.privTranslator.canceled(this.privTranslator, cancelEvent);\r\n }\r\n } catch (e) {\r\n //\r\n }\r\n }\r\n\r\n private async cancelSpeech(): Promise {\r\n try {\r\n this.stopContinuousRecognitionAsync();\r\n await this.privReco?.disconnect();\r\n this.privSpeechState = SpeechState.Inactive;\r\n } catch (e) {\r\n // ignore the error\r\n }\r\n }\r\n}\r\n\r\n/**\r\n * Join, leave or connect to a conversation.\r\n */\r\nexport class ConversationTranslator extends ConversationCommon implements IConversationTranslator, IDisposable {\r\n\r\n public canceled: (sender: ConversationHandler, event: ConversationTranslationCanceledEventArgs) => void;\r\n public conversationExpiration: (sender: IConversationTranslator, event: ConversationExpirationEventArgs) => void;\r\n public participantsChanged: (sender: IConversationTranslator, event: ConversationParticipantsChangedEventArgs) => void;\r\n public sessionStarted: (sender: ConversationHandler, event: SessionEventArgs) => void;\r\n public sessionStopped: (sender: ConversationHandler, event: SessionEventArgs) => void;\r\n public textMessageReceived: (sender: IConversationTranslator, event: ConversationTranslationEventArgs) => void;\r\n\r\n // Callbacks for whole conversation results\r\n public transcribed: (sender: IConversationTranslator, event: ConversationTranslationEventArgs) => void;\r\n public transcribing: (sender: IConversationTranslator, event: ConversationTranslationEventArgs) => void;\r\n\r\n // Callbacks for detecting speech/translation results from self\r\n public recognized: (sender: IConversationTranslator, event: TranslationRecognitionEventArgs) => void;\r\n public recognizing: (sender: IConversationTranslator, event: TranslationRecognitionEventArgs) => void;\r\n\r\n private privSpeechRecognitionLanguage: string;\r\n private privProperties: PropertyCollection;\r\n private privIsDisposed: boolean;\r\n private privCTRecognizer: ConversationTranslationRecognizer;\r\n private privIsSpeaking: boolean;\r\n private privConversation: ConversationImpl;\r\n private privErrors: IErrorMessages = ConversationConnectionConfig.restErrors;\r\n private privPlaceholderKey: string;\r\n private privPlaceholderRegion: string;\r\n\r\n public constructor(audioConfig?: AudioConfig) {\r\n super(audioConfig);\r\n this.privIsDisposed = false;\r\n this.privIsSpeaking = false;\r\n this.privPlaceholderKey = \"abcdefghijklmnopqrstuvwxyz012345\";\r\n this.privPlaceholderRegion = \"westus\";\r\n this.privProperties = new PropertyCollection();\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get speechRecognitionLanguage(): string {\r\n return this.privSpeechRecognitionLanguage;\r\n }\r\n\r\n public get participants(): Participant[] {\r\n return this.privConversation?.participants;\r\n }\r\n\r\n private get canSpeak(): boolean {\r\n\r\n // is there a Conversation websocket available and has the Recognizer been set up\r\n if (!this.privConversation.isConnected || !this.privCTRecognizer) {\r\n return false;\r\n }\r\n\r\n // is the user already speaking\r\n if (this.privIsSpeaking || this.privCTRecognizer.state === SpeechState.Connected || this.privCTRecognizer.state === SpeechState.Connecting) {\r\n return false;\r\n }\r\n\r\n // is the user muted\r\n if (this.privConversation.isMutedByHost) {\r\n return false;\r\n }\r\n\r\n return true;\r\n }\r\n\r\n public setServiceProperty(name: string, value: string): void {\r\n const currentProperties: IStringDictionary = JSON.parse(this.privProperties.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n\r\n currentProperties[name] = value;\r\n\r\n this.privProperties.setProperty(ServicePropertiesPropertyName, JSON.stringify(currentProperties));\r\n }\r\n\r\n /**\r\n * Join a conversation. If this is the host, pass in the previously created Conversation object.\r\n * @param conversation\r\n * @param nickname\r\n * @param lang\r\n * @param cb\r\n * @param err\r\n */\r\n public joinConversationAsync(conversation: IConversation, nickname: string, cb?: Callback, err?: Callback): void;\r\n public joinConversationAsync(conversationId: string, nickname: string, lang: string, cb?: Callback, err?: Callback): void;\r\n public joinConversationAsync(conversation: string | IConversation, nickname: string, param1?: string | Callback, param2?: Callback, param3?: Callback): void {\r\n\r\n try {\r\n\r\n if (typeof conversation === \"string\") {\r\n\r\n Contracts.throwIfNullOrUndefined(conversation, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversation id\"));\r\n Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\r\n\r\n if (!!this.privConversation) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedStart), param3);\r\n }\r\n\r\n let lang: string = param1 as string;\r\n if (lang === undefined || lang === null || lang === \"\") {\r\n lang = ConversationConnectionConfig.defaultLanguageCode;\r\n }\r\n\r\n // create a placeholder config\r\n this.privSpeechTranslationConfig = SpeechTranslationConfig.fromSubscription(\r\n this.privPlaceholderKey,\r\n this.privPlaceholderRegion);\r\n this.privSpeechTranslationConfig.setProfanity(ProfanityOption.Masked);\r\n this.privSpeechTranslationConfig.addTargetLanguage(lang);\r\n this.privSpeechTranslationConfig.setProperty(PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage], lang);\r\n this.privSpeechTranslationConfig.setProperty(PropertyId[PropertyId.ConversationTranslator_Name], nickname);\r\n\r\n const propertyIdsToCopy: (string | PropertyId)[] = [\r\n PropertyId.SpeechServiceConnection_Host,\r\n PropertyId.ConversationTranslator_Host,\r\n PropertyId.SpeechServiceConnection_Endpoint,\r\n PropertyId.SpeechServiceConnection_ProxyHostName,\r\n PropertyId.SpeechServiceConnection_ProxyPassword,\r\n PropertyId.SpeechServiceConnection_ProxyPort,\r\n PropertyId.SpeechServiceConnection_ProxyUserName,\r\n \"ConversationTranslator_MultiChannelAudio\",\r\n \"ConversationTranslator_Region\"\r\n ];\r\n\r\n for (const prop of propertyIdsToCopy) {\r\n const value = this.privProperties.getProperty(prop);\r\n if (value) {\r\n const key = typeof prop === \"string\" ? prop : PropertyId[prop];\r\n this.privSpeechTranslationConfig.setProperty(key, value);\r\n }\r\n }\r\n\r\n const currentProperties = JSON.parse(this.privProperties.getProperty(ServicePropertiesPropertyName, \"{}\")) as IStringDictionary;\r\n for (const prop of Object.keys(currentProperties)) {\r\n this.privSpeechTranslationConfig.setServiceProperty(prop, currentProperties[prop], ServicePropertyChannel.UriQueryParameter);\r\n }\r\n\r\n // join the conversation\r\n this.privConversation = new ConversationImpl(this.privSpeechTranslationConfig);\r\n this.privConversation.conversationTranslator = this;\r\n\r\n this.privConversation.joinConversationAsync(\r\n conversation,\r\n nickname,\r\n lang,\r\n ((result: string): void => {\r\n\r\n if (!result) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedConnect), param3);\r\n }\r\n\r\n this.privSpeechTranslationConfig.authorizationToken = result;\r\n this.privConversation.room.isHost = false;\r\n\r\n // connect to the ws\r\n this.privConversation.startConversationAsync(\r\n ((): void => {\r\n this.handleCallback(param2, param3);\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, param3);\r\n }));\r\n\r\n }),\r\n ((error: any): void => {\r\n this.handleError(error, param3);\r\n }));\r\n\r\n } else if (typeof conversation === \"object\") {\r\n\r\n Contracts.throwIfNullOrUndefined(conversation, this.privErrors.invalidArgs.replace(\"{arg}\", \"conversation id\"));\r\n Contracts.throwIfNullOrWhitespace(nickname, this.privErrors.invalidArgs.replace(\"{arg}\", \"nickname\"));\r\n\r\n // save the nickname\r\n this.privProperties.setProperty(PropertyId.ConversationTranslator_Name, nickname);\r\n // ref the conversation object\r\n this.privConversation = conversation as ConversationImpl;\r\n // ref the conversation translator object\r\n this.privConversation.conversationTranslator = this;\r\n this.privConversation.room.isHost = true;\r\n\r\n Contracts.throwIfNullOrUndefined(this.privConversation, this.privErrors.permissionDeniedConnect);\r\n Contracts.throwIfNullOrUndefined(this.privConversation.room.token, this.privErrors.permissionDeniedConnect);\r\n\r\n this.privSpeechTranslationConfig = conversation.config;\r\n\r\n this.handleCallback(param1 as Callback, param2);\r\n } else {\r\n this.handleError(\r\n new Error(this.privErrors.invalidArgs.replace(\"{arg}\", \"invalid conversation type\")),\r\n param2);\r\n }\r\n\r\n } catch (error) {\r\n this.handleError(error, typeof param1 === \"string\" ? param3 : param2);\r\n }\r\n }\r\n\r\n /**\r\n * Leave the conversation\r\n * @param cb\r\n * @param err\r\n */\r\n public leaveConversationAsync(cb?: Callback, err?: Callback): void {\r\n\r\n marshalPromiseToCallbacks((async (): Promise => {\r\n\r\n // stop the speech websocket\r\n await this.cancelSpeech();\r\n // stop the websocket\r\n await this.privConversation.endConversationImplAsync();\r\n // https delete request\r\n await this.privConversation.deleteConversationImplAsync();\r\n this.dispose();\r\n\r\n })(), cb, err);\r\n }\r\n\r\n /**\r\n * Send a text message\r\n * @param message\r\n * @param cb\r\n * @param err\r\n */\r\n public sendTextMessageAsync(message: string, cb?: Callback, err?: Callback): void {\r\n\r\n try {\r\n Contracts.throwIfNullOrUndefined(this.privConversation, this.privErrors.permissionDeniedSend);\r\n Contracts.throwIfNullOrWhitespace(message, this.privErrors.invalidArgs.replace(\"{arg}\", message));\r\n\r\n this.privConversation.sendTextMessageAsync(message, cb, err);\r\n } catch (error) {\r\n\r\n this.handleError(error, err);\r\n }\r\n }\r\n\r\n /**\r\n * Start speaking\r\n * @param cb\r\n * @param err\r\n */\r\n public startTranscribingAsync(cb?: Callback, err?: Callback): void {\r\n marshalPromiseToCallbacks((async (): Promise => {\r\n try {\r\n Contracts.throwIfNullOrUndefined(this.privConversation, this.privErrors.permissionDeniedSend);\r\n Contracts.throwIfNullOrUndefined(this.privConversation.room.token, this.privErrors.permissionDeniedConnect);\r\n\r\n if (this.privCTRecognizer === undefined) {\r\n await this.connectTranslatorRecognizer();\r\n }\r\n Contracts.throwIfNullOrUndefined(this.privCTRecognizer, this.privErrors.permissionDeniedSend);\r\n\r\n if (!this.canSpeak) {\r\n this.handleError(new Error(this.privErrors.permissionDeniedSend), err);\r\n }\r\n\r\n await this.startContinuousRecognition();\r\n\r\n this.privIsSpeaking = true;\r\n } catch (error) {\r\n this.privIsSpeaking = false;\r\n await this.cancelSpeech();\r\n throw error;\r\n }\r\n })(), cb, err);\r\n }\r\n\r\n /**\r\n * Stop speaking\r\n * @param cb\r\n * @param err\r\n */\r\n public stopTranscribingAsync(cb?: Callback, err?: Callback): void {\r\n marshalPromiseToCallbacks((async (): Promise => {\r\n try {\r\n if (!this.privIsSpeaking) {\r\n // stop speech\r\n await this.cancelSpeech();\r\n return;\r\n }\r\n\r\n // stop the recognition but leave the websocket open\r\n this.privIsSpeaking = false;\r\n await new Promise((resolve: () => void, reject: (error: string) => void): void => {\r\n this.privCTRecognizer.stopContinuousRecognitionAsync(resolve, reject);\r\n });\r\n\r\n } catch (error) {\r\n await this.cancelSpeech();\r\n }\r\n })(), cb, err);\r\n }\r\n\r\n public isDisposed(): boolean {\r\n return this.privIsDisposed;\r\n }\r\n\r\n public dispose(reason?: string, success?: () => void, err?: (error: string) => void): void {\r\n marshalPromiseToCallbacks((async (): Promise => {\r\n if (this.isDisposed && !this.privIsSpeaking) {\r\n return;\r\n }\r\n await this.cancelSpeech();\r\n this.privIsDisposed = true;\r\n this.privSpeechTranslationConfig.close();\r\n this.privSpeechRecognitionLanguage = undefined;\r\n this.privProperties = undefined;\r\n this.privAudioConfig = undefined;\r\n this.privSpeechTranslationConfig = undefined;\r\n this.privConversation.dispose();\r\n this.privConversation = undefined;\r\n })(), success, err);\r\n }\r\n\r\n /**\r\n * Cancel the speech websocket\r\n */\r\n private async cancelSpeech(): Promise {\r\n try {\r\n this.privIsSpeaking = false;\r\n await this.privCTRecognizer?.onDisconnection();\r\n this.privCTRecognizer = undefined;\r\n } catch (e) {\r\n // ignore the error\r\n }\r\n }\r\n\r\n /**\r\n * Connect to the speech translation recognizer.\r\n * Currently there is no language validation performed before sending the SpeechLanguage code to the service.\r\n * If it's an invalid language the raw error will be: 'Error during WebSocket handshake: Unexpected response code: 400'\r\n * e.g. pass in 'fr' instead of 'fr-FR', or a text-only language 'cy'\r\n */\r\n private async connectTranslatorRecognizer(): Promise {\r\n try {\r\n\r\n if (this.privAudioConfig === undefined) {\r\n this.privAudioConfig = AudioConfig.fromDefaultMicrophoneInput();\r\n }\r\n\r\n // clear the temp subscription key if it's a participant joining\r\n if (this.privSpeechTranslationConfig.getProperty(PropertyId[PropertyId.SpeechServiceConnection_Key])\r\n === this.privPlaceholderKey) {\r\n this.privSpeechTranslationConfig.setProperty(PropertyId[PropertyId.SpeechServiceConnection_Key], \"\");\r\n }\r\n\r\n const convGetter = (): ConversationImpl => this.privConversation;\r\n this.privCTRecognizer = new ConversationTranslationRecognizer(this.privSpeechTranslationConfig, this.privAudioConfig, this, convGetter);\r\n } catch (error) {\r\n await this.cancelSpeech();\r\n throw error;\r\n }\r\n }\r\n\r\n /**\r\n * Handle the start speaking request\r\n */\r\n private startContinuousRecognition(): Promise {\r\n return new Promise((resolve: () => void, reject: (error: string) => void): void => {\r\n this.privCTRecognizer.startContinuousRecognitionAsync(resolve, reject);\r\n });\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nexport { Conversation, ConversationImpl } from \"./Conversation\";\r\nexport { ConversationInfo } from \"./IConversation\";\r\nexport { ConversationCommon } from \"./ConversationCommon\";\r\nexport { ConversationExpirationEventArgs } from \"./ConversationExpirationEventArgs\";\r\nexport { ConversationParticipantsChangedEventArgs } from \"./ConversationParticipantsChangedEventArgs\";\r\nexport { ConversationTranslationCanceledEventArgs } from \"./ConversationTranslationCanceledEventArgs\";\r\nexport { ConversationTranslationEventArgs } from \"./ConversationTranslationEventArgs\";\r\nexport { ConversationTranslationResult } from \"./ConversationTranslationResult\";\r\nexport { ConversationTranslator } from \"./ConversationTranslator\";\r\nexport { ConversationTranscriber } from \"./ConversationTranscriber\";\r\nexport { IParticipant, Participant, User, VoiceSignature } from \"./IParticipant\";\r\nexport { ParticipantChangedReason } from \"./ParticipantChangedReason\";\r\nexport { ConversationHandler, ConversationTranscriptionHandler, IConversationTranslator } from \"./ConversationHandler\";\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { PropertyCollection } from \"../Exports\";\r\n\r\n/**\r\n * Represents a user in a conversation.\r\n * Added in version 1.4.0\r\n */\r\nexport interface IUser {\r\n /** Gets the user's ID */\r\n readonly userId: string;\r\n}\r\n\r\nexport class User implements IUser {\r\n private privUserId: string;\r\n\r\n public constructor(userId: string) {\r\n this.privUserId = userId;\r\n }\r\n\r\n public get userId(): string {\r\n return this.privUserId;\r\n }\r\n}\r\n\r\nexport interface VoiceSignature {\r\n Version: number;\r\n Tag: string;\r\n Data: string;\r\n}\r\n\r\nexport interface TranscriptionParticipant {\r\n /** The unique identifier for the participant. */\r\n readonly id: string;\r\n /** The participant's preferred spoken language. */\r\n readonly preferredLanguage: string;\r\n /** The participant's voice signature */\r\n readonly voice: string;\r\n}\r\n\r\n/**\r\n * Represents a participant in a conversation.\r\n * Added in version 1.4.0\r\n */\r\nexport interface IParticipant extends TranscriptionParticipant {\r\n /** Gets the colour of the user's avatar as an HTML hex string (e.g. FF0000 for red). */\r\n readonly avatar: string;\r\n /**\r\n * The participant's display name. Please note that there may be more than one participant\r\n * with the same name. You can use property to tell them apart.\r\n */\r\n readonly displayName: string;\r\n /** Gets whether or not this participant is the host. */\r\n readonly isHost: boolean;\r\n /** Gets whether or not this participant is muted. */\r\n readonly isMuted: boolean;\r\n /** Gets whether or not the participant is using Text To Speech (TTS). */\r\n readonly isUsingTts: boolean;\r\n /** Contains properties of the participant. */\r\n readonly properties: PropertyCollection;\r\n}\r\n\r\nexport class Participant implements IParticipant {\r\n private privAvatar: string;\r\n private privDisplayName: string;\r\n private privId: string;\r\n private privIsHost: boolean;\r\n private privIsMuted: boolean;\r\n private privIsUsingTts: boolean;\r\n private privPreferredLanguage: string;\r\n private privVoice: string;\r\n private privProperties: PropertyCollection;\r\n\r\n public constructor(id: string, avatar: string, displayName: string, isHost: boolean, isMuted: boolean, isUsingTts: boolean, preferredLanguage: string, voice?: string) {\r\n this.privId = id;\r\n this.privAvatar = avatar;\r\n this.privDisplayName = displayName;\r\n this.privIsHost = isHost;\r\n this.privIsMuted = isMuted;\r\n this.privIsUsingTts = isUsingTts;\r\n this.privPreferredLanguage = preferredLanguage;\r\n this.privVoice = voice;\r\n this.privProperties = new PropertyCollection();\r\n }\r\n\r\n public get avatar(): string {\r\n return this.privAvatar;\r\n }\r\n\r\n public get displayName(): string {\r\n return this.privDisplayName;\r\n }\r\n\r\n public get id(): string {\r\n return this.privId;\r\n }\r\n\r\n public get preferredLanguage(): string {\r\n return this.privPreferredLanguage;\r\n }\r\n\r\n public get isHost(): boolean {\r\n return this.privIsHost;\r\n }\r\n\r\n public get isMuted(): boolean {\r\n return this.privIsMuted;\r\n }\r\n\r\n public get isUsingTts(): boolean {\r\n return this.privIsUsingTts;\r\n }\r\n\r\n public get voice(): string {\r\n return this.privVoice;\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public static From(id: string, language: string, voice: string): IParticipant {\r\n return new Participant(id, \"\", id, false, false, false, language, voice);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n// Multi-device Conversation is a Preview feature.\r\n\r\nexport enum ParticipantChangedReason {\r\n /** Participant has joined the conversation. */\r\n JoinedConversation,\r\n\r\n /** Participant has left the conversation. This could be voluntary, or involuntary\r\n * (e.g. they are experiencing networking issues).\r\n */\r\n LeftConversation,\r\n\r\n /** The participants' state has changed (e.g. they became muted, changed their nickname). */\r\n Updated\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { CancellationErrorCode, CancellationReason, TranslationRecognitionResult } from \"./Exports\";\r\n\r\n/**\r\n * Define payload of speech recognition canceled result events.\r\n * @class TranslationRecognitionCanceledEventArgs\r\n */\r\nexport class TranslationRecognitionCanceledEventArgs {\r\n private privResult: TranslationRecognitionResult;\r\n private privSessionId: string;\r\n private privCancelReason: CancellationReason;\r\n private privErrorDetails: string;\r\n private privErrorCode: CancellationErrorCode;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} sessionid - The session id.\r\n * @param {CancellationReason} cancellationReason - The cancellation reason.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {TranslationRecognitionResult} result - The result.\r\n */\r\n public constructor(\r\n sessionid: string,\r\n cancellationReason: CancellationReason,\r\n errorDetails: string,\r\n errorCode: CancellationErrorCode,\r\n result: TranslationRecognitionResult) {\r\n this.privCancelReason = cancellationReason;\r\n this.privErrorDetails = errorDetails;\r\n this.privResult = result;\r\n this.privSessionId = sessionid;\r\n this.privErrorCode = errorCode;\r\n }\r\n\r\n /**\r\n * Specifies the recognition result.\r\n * @member TranslationRecognitionCanceledEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {TranslationRecognitionResult} the recognition result.\r\n */\r\n public get result(): TranslationRecognitionResult {\r\n return this.privResult;\r\n }\r\n\r\n /**\r\n * Specifies the session identifier.\r\n * @member TranslationRecognitionCanceledEventArgs.prototype.sessionId\r\n * @function\r\n * @public\r\n * @returns {string} the session identifier.\r\n */\r\n public get sessionId(): string {\r\n return this.privSessionId;\r\n }\r\n\r\n /**\r\n * The reason the recognition was canceled.\r\n * @member TranslationRecognitionCanceledEventArgs.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {CancellationReason} Specifies the reason canceled.\r\n */\r\n public get reason(): CancellationReason {\r\n return this.privCancelReason;\r\n }\r\n\r\n /**\r\n * The error code in case of an unsuccessful recognition.\r\n * Added in version 1.1.0.\r\n * @return An error code that represents the error reason.\r\n */\r\n public get errorCode(): CancellationErrorCode {\r\n return this.privErrorCode;\r\n }\r\n\r\n /**\r\n * In case of an unsuccessful recognition, provides details of the occurred error.\r\n * @member TranslationRecognitionCanceledEventArgs.prototype.errorDetails\r\n * @function\r\n * @public\r\n * @returns {string} A String that represents the error details.\r\n */\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { RecognitionEventArgs, TranslationRecognitionResult } from \"./Exports\";\r\n\r\n/**\r\n * Translation text result event arguments.\r\n * @class TranslationRecognitionEventArgs\r\n */\r\nexport class TranslationRecognitionEventArgs extends RecognitionEventArgs {\r\n private privResult: TranslationRecognitionResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {TranslationRecognitionResult} result - The translation recognition result.\r\n * @param {number} offset - The offset.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(result: TranslationRecognitionResult, offset?: number, sessionId?: string) {\r\n super(offset, sessionId);\r\n\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the recognition result.\r\n * @member TranslationRecognitionEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {TranslationRecognitionResult} the recognition result.\r\n */\r\n public get result(): TranslationRecognitionResult {\r\n return this.privResult;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection, ResultReason, SpeechRecognitionResult, Translations } from \"./Exports\";\r\n\r\n/**\r\n * Translation text result.\r\n * @class TranslationRecognitionResult\r\n */\r\nexport class TranslationRecognitionResult extends SpeechRecognitionResult {\r\n private privTranslations: Translations;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {Translations} translations - The translations.\r\n * @param {string} resultId - The result id.\r\n * @param {ResultReason} reason - The reason.\r\n * @param {string} text - The recognized text.\r\n * @param {number} duration - The duration.\r\n * @param {number} offset - The offset into the stream.\r\n * @param {string} errorDetails - Error details, if provided.\r\n * @param {string} json - Additional Json, if provided.\r\n * @param {PropertyCollection} properties - Additional properties, if provided.\r\n */\r\n public constructor(translations: Translations, resultId?: string, reason?: ResultReason,\r\n text?: string, duration?: number, offset?: number, errorDetails?: string,\r\n json?: string, properties?: PropertyCollection) {\r\n super(resultId, reason, text, duration, offset, undefined, undefined, undefined, errorDetails, json, properties);\r\n\r\n this.privTranslations = translations;\r\n }\r\n\r\n public static fromSpeechRecognitionResult(result: SpeechRecognitionResult): TranslationRecognitionResult {\r\n return new TranslationRecognitionResult(undefined, result.resultId, result.reason, result.text, result.duration, result.offset, result.errorDetails, result.json, result.properties);\r\n }\r\n\r\n /**\r\n * Presents the translation results. Each item in the dictionary represents\r\n * a translation result in one of target languages, where the key is the name\r\n * of the target language, in BCP-47 format, and the value is the translation\r\n * text in the specified language.\r\n * @member TranslationRecognitionResult.prototype.translations\r\n * @function\r\n * @public\r\n * @returns {Translations} the current translation map that holds all translations requested.\r\n */\r\n public get translations(): Translations {\r\n return this.privTranslations;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognitionMode,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig,\r\n TranslationConnectionFactory,\r\n TranslationServiceRecognizer\r\n} from \"../common.speech/Exports\";\r\nimport { marshalPromiseToCallbacks } from \"../common/Exports\";\r\nimport { AudioConfigImpl } from \"./Audio/AudioConfig\";\r\nimport { Connection } from \"./Connection\";\r\nimport { Contracts } from \"./Contracts\";\r\nimport {\r\n AudioConfig,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n TranslationRecognitionCanceledEventArgs,\r\n TranslationRecognitionEventArgs,\r\n TranslationRecognitionResult,\r\n TranslationSynthesisEventArgs\r\n} from \"./Exports\";\r\nimport { SpeechTranslationConfig, SpeechTranslationConfigImpl } from \"./SpeechTranslationConfig\";\r\n\r\n/**\r\n * Translation recognizer\r\n * @class TranslationRecognizer\r\n */\r\nexport class TranslationRecognizer extends Recognizer {\r\n /**\r\n * The event recognizing signals that an intermediate recognition result is received.\r\n * @member TranslationRecognizer.prototype.recognizing\r\n * @function\r\n * @public\r\n */\r\n public recognizing: (sender: TranslationRecognizer, event: TranslationRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event recognized signals that a final recognition result is received.\r\n * @member TranslationRecognizer.prototype.recognized\r\n * @function\r\n * @public\r\n */\r\n public recognized: (sender: TranslationRecognizer, event: TranslationRecognitionEventArgs) => void;\r\n\r\n /**\r\n * The event canceled signals that an error occurred during recognition.\r\n * @member TranslationRecognizer.prototype.canceled\r\n * @function\r\n * @public\r\n */\r\n public canceled: (sender: TranslationRecognizer, event: TranslationRecognitionCanceledEventArgs) => void;\r\n\r\n /**\r\n * The event synthesizing signals that a translation synthesis result is received.\r\n * @member TranslationRecognizer.prototype.synthesizing\r\n * @function\r\n * @public\r\n */\r\n public synthesizing: (sender: TranslationRecognizer, event: TranslationSynthesisEventArgs) => void;\r\n\r\n private privDisposedTranslationRecognizer: boolean;\r\n\r\n /**\r\n * Initializes an instance of the TranslationRecognizer.\r\n * @constructor\r\n * @param {SpeechTranslationConfig} speechConfig - Set of properties to configure this recognizer.\r\n * @param {AudioConfig} audioConfig - An optional audio config associated with the recognizer\r\n * @param {IConnectionFactory} connectionFactory - An optional connection factory to use to generate the endpoint URIs, headers to set, etc...\r\n */\r\n public constructor(speechConfig: SpeechTranslationConfig, audioConfig?: AudioConfig, connectionFactory?: IConnectionFactory) {\r\n const configImpl = speechConfig as SpeechTranslationConfigImpl;\r\n Contracts.throwIfNull(configImpl, \"speechConfig\");\r\n\r\n super(audioConfig, configImpl.properties, connectionFactory || new TranslationConnectionFactory());\r\n\r\n this.privDisposedTranslationRecognizer = false;\r\n\r\n if (this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationVoice, undefined) !== undefined) {\r\n Contracts.throwIfNullOrWhitespace(\r\n this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationVoice),\r\n PropertyId[PropertyId.SpeechServiceConnection_TranslationVoice]);\r\n }\r\n\r\n Contracts.throwIfNullOrWhitespace(\r\n this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages),\r\n PropertyId[PropertyId.SpeechServiceConnection_TranslationToLanguages]);\r\n\r\n Contracts.throwIfNullOrWhitespace(this.properties.getProperty(\r\n PropertyId.SpeechServiceConnection_RecoLanguage),\r\n PropertyId[PropertyId.SpeechServiceConnection_RecoLanguage]);\r\n\r\n }\r\n\r\n /**\r\n * Gets the language name that was set when the recognizer was created.\r\n * @member TranslationRecognizer.prototype.speechRecognitionLanguage\r\n * @function\r\n * @public\r\n * @returns {string} Gets the language name that was set when the recognizer was created.\r\n */\r\n public get speechRecognitionLanguage(): string {\r\n Contracts.throwIfDisposed(this.privDisposedTranslationRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_RecoLanguage);\r\n }\r\n\r\n /**\r\n * Gets target languages for translation that were set when the recognizer was created.\r\n * The language is specified in BCP-47 format. The translation will provide translated text for each of language.\r\n * @member TranslationRecognizer.prototype.targetLanguages\r\n * @function\r\n * @public\r\n * @returns {string[]} Gets target languages for translation that were set when the recognizer was created.\r\n */\r\n public get targetLanguages(): string[] {\r\n Contracts.throwIfDisposed(this.privDisposedTranslationRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages).split(\",\");\r\n }\r\n\r\n /**\r\n * Gets the name of output voice.\r\n * @member TranslationRecognizer.prototype.voiceName\r\n * @function\r\n * @public\r\n * @returns {string} the name of output voice.\r\n */\r\n public get voiceName(): string {\r\n Contracts.throwIfDisposed(this.privDisposedTranslationRecognizer);\r\n\r\n return this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationVoice, undefined);\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this TranslationRecognizer.\r\n * @member TranslationRecognizer.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this TranslationRecognizer.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member TranslationRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member TranslationRecognizer.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} value - Authorization token.\r\n */\r\n public set authorizationToken(value: string) {\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, value);\r\n }\r\n\r\n /**\r\n * Starts recognition and translation, and stops after the first utterance is recognized.\r\n * The task returns the translation text as result.\r\n * Note: recognizeOnceAsync returns when the first utterance has been recognized, so it is suitable only\r\n * for single shot recognition like command or query. For long-running recognition,\r\n * use startContinuousRecognitionAsync() instead.\r\n * @member TranslationRecognizer.prototype.recognizeOnceAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the result when the translation has completed.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public recognizeOnceAsync(cb?: (e: TranslationRecognitionResult) => void, err?: (e: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedTranslationRecognizer);\r\n marshalPromiseToCallbacks(this.recognizeOnceAsyncImpl(RecognitionMode.Conversation), cb, err);\r\n }\r\n\r\n /**\r\n * Starts recognition and translation, until stopContinuousRecognitionAsync() is called.\r\n * User must subscribe to events to receive translation results.\r\n * @member TranslationRecognizer.prototype.startContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the translation has started.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public startContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.startContinuousRecognitionAsyncImpl(RecognitionMode.Conversation), cb, err);\r\n }\r\n\r\n /**\r\n * Stops continuous recognition and translation.\r\n * @member TranslationRecognizer.prototype.stopContinuousRecognitionAsync\r\n * @function\r\n * @public\r\n * @param cb - Callback that received the translation has stopped.\r\n * @param err - Callback invoked in case of an error.\r\n */\r\n public stopContinuousRecognitionAsync(cb?: () => void, err?: (e: string) => void): void {\r\n marshalPromiseToCallbacks(this.stopContinuousRecognitionAsyncImpl(), cb, err);\r\n }\r\n\r\n /**\r\n * dynamically remove a language from list of target language\r\n * (can be used while recognition is ongoing)\r\n * @member TranslationRecognizer.prototype.removeTargetLanguage\r\n * @function\r\n * @param lang - language to be removed\r\n * @public\r\n */\r\n public removeTargetLanguage(lang: string): void {\r\n Contracts.throwIfNullOrUndefined(lang, \"language to be removed\");\r\n if (this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, undefined) !== undefined) {\r\n const languages: string[] = this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages).split(\",\");\r\n const index: number = languages.indexOf(lang);\r\n if (index > -1) {\r\n languages.splice(index, 1);\r\n this.properties.setProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, languages.join(\",\"));\r\n this.updateLanguages(languages);\r\n }\r\n }\r\n }\r\n\r\n /**\r\n * dynamically add a language to list of target language\r\n * (can be used while recognition is ongoing)\r\n * @member TranslationRecognizer.prototype.addTargetLanguage\r\n * @function\r\n * @param lang - language to be added\r\n * @public\r\n */\r\n public addTargetLanguage(lang: string): void {\r\n Contracts.throwIfNullOrUndefined(lang, \"language to be added\");\r\n let languages: string[] = [];\r\n if (this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, undefined) !== undefined) {\r\n languages = this.properties.getProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages).split(\",\");\r\n if (!languages.includes(lang)) {\r\n languages.push(lang);\r\n this.properties.setProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, languages.join(\",\"));\r\n }\r\n } else {\r\n this.properties.setProperty(PropertyId.SpeechServiceConnection_TranslationToLanguages, lang);\r\n languages = [lang];\r\n }\r\n this.updateLanguages(languages);\r\n }\r\n\r\n /**\r\n * closes all external resources held by an instance of this class.\r\n * @member TranslationRecognizer.prototype.close\r\n * @function\r\n * @public\r\n */\r\n public close(cb?: () => void, errorCb?: (error: string) => void): void {\r\n Contracts.throwIfDisposed(this.privDisposedTranslationRecognizer);\r\n marshalPromiseToCallbacks(this.dispose(true), cb, errorCb);\r\n }\r\n\r\n /**\r\n * handles ConnectionEstablishedEvent for conversation translation scenarios.\r\n * @member TranslationRecognizer.prototype.onConnection\r\n * @function\r\n * @public\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n public onConnection(): void { }\r\n\r\n /**\r\n * handles disconnection events for conversation translation scenarios.\r\n * @member TranslationRecognizer.prototype.onDisconnection\r\n * @function\r\n * @public\r\n */\r\n // eslint-disable-next-line @typescript-eslint/no-empty-function\r\n public async onDisconnection(): Promise { }\r\n\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedTranslationRecognizer) {\r\n return;\r\n }\r\n\r\n this.privDisposedTranslationRecognizer = true;\r\n\r\n if (disposing) {\r\n await this.implRecognizerStop();\r\n await super.dispose(disposing);\r\n }\r\n }\r\n\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.privProperties);\r\n }\r\n\r\n protected createServiceRecognizer(\r\n authentication: IAuthentication,\r\n connectionFactory: IConnectionFactory,\r\n audioConfig: AudioConfig,\r\n recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n\r\n const configImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n\r\n return new TranslationServiceRecognizer(authentication, connectionFactory, configImpl, recognizerConfig, this);\r\n }\r\n\r\n private updateLanguages(languages: string[]): void {\r\n const conn: Connection = Connection.fromRecognizer(this);\r\n if (!!conn) {\r\n conn.setMessageProperty(\"speech.context\", \"translationcontext\", {to: languages});\r\n conn.sendMessageAsync(\"event\", JSON.stringify({\r\n id: \"translation\",\r\n name: \"updateLanguage\",\r\n to: languages\r\n }));\r\n }\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { SessionEventArgs, TranslationSynthesisResult } from \"./Exports\";\r\n\r\n/**\r\n * Translation Synthesis event arguments\r\n * @class TranslationSynthesisEventArgs\r\n */\r\nexport class TranslationSynthesisEventArgs extends SessionEventArgs {\r\n private privResult: TranslationSynthesisResult;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {TranslationSynthesisResult} result - The translation synthesis result.\r\n * @param {string} sessionId - The session id.\r\n */\r\n public constructor(result: TranslationSynthesisResult, sessionId?: string) {\r\n super(sessionId);\r\n\r\n this.privResult = result;\r\n }\r\n\r\n /**\r\n * Specifies the translation synthesis result.\r\n * @member TranslationSynthesisEventArgs.prototype.result\r\n * @function\r\n * @public\r\n * @returns {TranslationSynthesisResult} Specifies the translation synthesis result.\r\n */\r\n public get result(): TranslationSynthesisResult {\r\n return this.privResult;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { ResultReason } from \"./ResultReason\";\r\n\r\n/**\r\n * Defines translation synthesis result, i.e. the voice output of the translated\r\n * text in the target language.\r\n * @class TranslationSynthesisResult\r\n */\r\nexport class TranslationSynthesisResult {\r\n private privReason: ResultReason;\r\n private privAudio: ArrayBuffer;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {ResultReason} reason - The synthesis reason.\r\n * @param {ArrayBuffer} audio - The audio data.\r\n */\r\n public constructor(reason: ResultReason, audio: ArrayBuffer) {\r\n this.privReason = reason;\r\n this.privAudio = audio;\r\n }\r\n\r\n /**\r\n * Translated text in the target language.\r\n * @member TranslationSynthesisResult.prototype.audio\r\n * @function\r\n * @public\r\n * @returns {ArrayBuffer} Translated audio in the target language.\r\n */\r\n public get audio(): ArrayBuffer {\r\n return this.privAudio;\r\n }\r\n\r\n /**\r\n * The synthesis status.\r\n * @member TranslationSynthesisResult.prototype.reason\r\n * @function\r\n * @public\r\n * @returns {ResultReason} The synthesis status.\r\n */\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { PropertyCollection } from \"./Exports\";\r\n\r\n/**\r\n * Represents collection of parameters and their values.\r\n * @class Translations\r\n */\r\nexport class Translations {\r\n // Use an PropertyCollection internally, just wrapping it to hide the | enum syntax it has.\r\n private privMap: PropertyCollection = new PropertyCollection();\r\n\r\n /**\r\n * Get the languages in the object in a String array.\r\n * @member Translations.prototype.languages\r\n * @function\r\n * @public\r\n * @returns {string[]} languages in translations object.\r\n */\r\n public get languages(): string[] {\r\n return this.privMap.keys;\r\n }\r\n\r\n /**\r\n * Returns the parameter value in type String. The parameter must have the same type as String.\r\n * Currently only String, int and bool are allowed.\r\n * If the name is not available, the specified defaultValue is returned.\r\n * @member Translations.prototype.get\r\n * @function\r\n * @public\r\n * @param {string} key - The parameter name.\r\n * @param {string} def - The default value which is returned if the parameter is not available in the collection.\r\n * @returns {string} value of the parameter.\r\n */\r\n public get(key: string, def?: string): string {\r\n return this.privMap.getProperty(key, def);\r\n }\r\n\r\n /**\r\n * Sets the String value of the parameter specified by name.\r\n * @member Translations.prototype.set\r\n * @function\r\n * @public\r\n * @param {string} key - The parameter name.\r\n * @param {string} value - The value of the parameter.\r\n */\r\n public set(key: string, value: string): void {\r\n this.privMap.setProperty(key, value);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n ITurnStatusResponsePayload,\r\n TurnStatusResponsePayload\r\n } from \"../common.speech/ServiceMessages/TurnStatusPayload\";\r\n\r\n/**\r\n * Defines contents of received message/events.\r\n * @class TurnStatusReceivedEventArgs\r\n */\r\nexport class TurnStatusReceivedEventArgs {\r\n private privTurnStatus: ITurnStatusResponsePayload;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} turnStatus - The JSON-encoded turn status message.\r\n */\r\n public constructor(turnStatus: string) {\r\n this.privTurnStatus = TurnStatusResponsePayload.fromJSON(turnStatus);\r\n }\r\n\r\n /**\r\n * Gets the interaction identifier associated with this turn status event.\r\n * @member TurnStatusReceivedEventArgs.prototype.interactionId\r\n * @function\r\n * @public\r\n * @returns {any} the received interaction id.\r\n */\r\n public get interactionId(): any {\r\n return this.privTurnStatus.interactionId;\r\n }\r\n\r\n /**\r\n * Gets the conversation identifier associated with this turn status event.\r\n * @member TurnStatusReceivedEventArgs.prototype.conversationId\r\n * @function\r\n * @public\r\n * @returns {any} the received conversation id.\r\n */\r\n public get conversationId(): any {\r\n return this.privTurnStatus.conversationId;\r\n }\r\n\r\n /**\r\n * Gets the received turn status code.\r\n * @member TurnStatusReceivedEventArgs.prototype.statusCode\r\n * @function\r\n * @public\r\n * @returns {number} the received turn status.\r\n */\r\n public get statusCode(): number {\r\n return this.privTurnStatus.statusCode; // eslint-disable-line @typescript-eslint/no-unsafe-return\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Defines the gender of synthesis voices.\r\n * Added in version 1.20.0.\r\n */\r\nexport enum SynthesisVoiceGender {\r\n\r\n /** Gender unknown */\r\n Unknown,\r\n\r\n /** Female voice */\r\n Female,\r\n\r\n /** Male voice */\r\n Male\r\n}\r\n\r\nexport enum SynthesisVoiceType {\r\n OnlineNeural = 1,\r\n OnlineStandard = 2,\r\n OfflineNeural = 3,\r\n OfflineStandard = 4,\r\n}\r\n\r\n/**\r\n * Information about Speech Synthesis voice\r\n * Added in version 1.20.0.\r\n * @class VoiceInfo\r\n */\r\nexport class VoiceInfo {\r\n private privName: string;\r\n private privLocale: string;\r\n private privShortName: string;\r\n private privLocalName: string;\r\n private privGender: SynthesisVoiceGender;\r\n private privVoiceType: SynthesisVoiceType;\r\n private privStyleList: string[] = [];\r\n private privVoicePath: string;\r\n\r\n public constructor(json: { Name: string; LocalName: string; ShortName: string; Gender: string; VoiceType: string; Locale: string; StyleList: string[] }) {\r\n this.privVoicePath = \"\";\r\n if (!!json) {\r\n this.privName = json.Name;\r\n this.privLocale = json.Locale;\r\n this.privShortName = json.ShortName;\r\n this.privLocalName = json.LocalName;\r\n this.privVoiceType = json.VoiceType.endsWith(\"Standard\") ? SynthesisVoiceType.OnlineStandard : SynthesisVoiceType.OnlineNeural;\r\n this.privGender = json.Gender === \"Male\" ? SynthesisVoiceGender.Male : json.Gender === \"Female\" ? SynthesisVoiceGender.Female : SynthesisVoiceGender.Unknown;\r\n if (!!json.StyleList && Array.isArray(json.StyleList)) {\r\n for (const style of json.StyleList) {\r\n this.privStyleList.push(style);\r\n }\r\n }\r\n }\r\n }\r\n\r\n public get name(): string {\r\n return this.privName;\r\n }\r\n\r\n public get locale(): string {\r\n return this.privLocale;\r\n }\r\n\r\n public get shortName(): string {\r\n return this.privShortName;\r\n }\r\n\r\n public get localName(): string {\r\n return this.privLocalName;\r\n }\r\n\r\n public get gender(): SynthesisVoiceGender {\r\n return this.privGender;\r\n }\r\n\r\n public get voiceType(): SynthesisVoiceType {\r\n return this.privVoiceType;\r\n }\r\n\r\n public get styleList(): string[] {\r\n return this.privStyleList;\r\n }\r\n\r\n public get voicePath(): string {\r\n return this.privVoicePath;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { VoiceProfileType } from \"./Exports\";\r\n\r\n/**\r\n * Defines Voice Profile class for Speaker Recognition\r\n * @class VoiceProfile\r\n */\r\nexport class VoiceProfile {\r\n private privId: string;\r\n private privProfileType: VoiceProfileType;\r\n\r\n /**\r\n * Creates and initializes an instance of this class.\r\n * @constructor\r\n * @param {string} profileId - profileId of this Voice Profile.\r\n * @param {VoiceProfileType} profileType - profileType of this Voice Profile.\r\n */\r\n public constructor(profileId: string, profileType: VoiceProfileType) {\r\n this.privId = profileId;\r\n this.privProfileType = profileType;\r\n }\r\n\r\n /**\r\n * profileId of this Voice Profile instance\r\n * @member VoiceProfile.prototype.profileId\r\n * @function\r\n * @public\r\n * @returns {string} profileId of this Voice Profile instance.\r\n */\r\n public get profileId(): string {\r\n return this.privId;\r\n }\r\n\r\n /**\r\n * profileType of this Voice Profile instance\r\n * @member VoiceProfile.prototype.profileType\r\n * @function\r\n * @public\r\n * @returns {VoiceProfileType} profile type of this Voice Profile instance.\r\n */\r\n public get profileType(): VoiceProfileType {\r\n return this.privProfileType;\r\n }\r\n\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport {\r\n IRestResponse\r\n} from \"../common.browser/Exports\";\r\nimport {\r\n IAuthentication,\r\n IConnectionFactory,\r\n RecognizerConfig,\r\n ServiceRecognizerBase,\r\n SpeechServiceConfig,\r\n VoiceProfileConnectionFactory,\r\n VoiceServiceRecognizer\r\n} from \"../common.speech/Exports\";\r\nimport { AudioConfig, AudioConfigImpl } from \"./Audio/AudioConfig\";\r\nimport { Contracts } from \"./Contracts\";\r\nimport {\r\n AudioInputStream,\r\n PropertyCollection,\r\n PropertyId,\r\n Recognizer,\r\n ResultReason,\r\n VoiceProfile,\r\n VoiceProfileEnrollmentResult,\r\n VoiceProfilePhraseResult,\r\n VoiceProfileResult,\r\n VoiceProfileType\r\n} from \"./Exports\";\r\nimport { SpeechConfig, SpeechConfigImpl } from \"./SpeechConfig\";\r\n\r\n/**\r\n * Defines VoiceProfileClient class for Speaker Recognition\r\n * Handles operations from user for Voice Profile operations (e.g. createProfile, deleteProfile)\r\n * @class VoiceProfileClient\r\n */\r\nexport class VoiceProfileClient extends Recognizer {\r\n protected privProperties: PropertyCollection;\r\n private privVoiceAdapter: VoiceServiceRecognizer;\r\n private privDisposedVoiceAdapter: boolean;\r\n\r\n /**\r\n * VoiceProfileClient constructor.\r\n * @constructor\r\n * @param {SpeechConfig} speechConfig - An set of initial properties for this synthesizer (authentication key, region, &c)\r\n */\r\n public constructor(speechConfig: SpeechConfig) {\r\n Contracts.throwIfNullOrUndefined(speechConfig, \"speechConfig\");\r\n const speechConfigImpl: SpeechConfigImpl = speechConfig as SpeechConfigImpl;\r\n Contracts.throwIfNull(speechConfigImpl, \"speechConfig\");\r\n\r\n super(AudioConfig.fromStreamInput(AudioInputStream.createPushStream()), speechConfigImpl.properties, new VoiceProfileConnectionFactory());\r\n\r\n this.privProperties = speechConfigImpl.properties.clone();\r\n this.privVoiceAdapter = this.privReco as VoiceServiceRecognizer;\r\n this.privDisposedVoiceAdapter = false;\r\n }\r\n\r\n /**\r\n * The collection of properties and their values defined for this VoiceProfileClient.\r\n * @member VoiceProfileClient.prototype.properties\r\n * @function\r\n * @public\r\n * @returns {PropertyCollection} The collection of properties and their values defined for this VoiceProfileClient.\r\n */\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n /**\r\n * Gets the authorization token used to communicate with the service.\r\n * @member VoiceProfileClient.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @returns {string} Authorization token.\r\n */\r\n public get authorizationToken(): string {\r\n return this.properties.getProperty(PropertyId.SpeechServiceAuthorization_Token);\r\n }\r\n\r\n /**\r\n * Gets/Sets the authorization token used to communicate with the service.\r\n * @member VoiceProfileClient.prototype.authorizationToken\r\n * @function\r\n * @public\r\n * @param {string} token - Authorization token.\r\n */\r\n public set authorizationToken(token: string) {\r\n Contracts.throwIfNullOrWhitespace(token, \"token\");\r\n this.properties.setProperty(PropertyId.SpeechServiceAuthorization_Token, token);\r\n }\r\n\r\n /**\r\n * Create a speaker recognition voice profile\r\n * @member VoiceProfileClient.prototype.createProfileAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfileType} profileType Type of Voice Profile to be created\r\n * @param {string} lang Language string (locale) for Voice Profile\r\n * @return {Promise} - Promise of a VoiceProfile.\r\n */\r\n public async createProfileAsync(profileType: VoiceProfileType, lang: string): Promise {\r\n const profileIds: string[] = await this.privVoiceAdapter.createProfile(profileType, lang);\r\n return new VoiceProfile(profileIds[0], profileType);\r\n }\r\n\r\n /**\r\n * Get current information of a voice profile\r\n * @member VoiceProfileClient.prototype.retrieveEnrollmentResultAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfile} profile Voice Profile to retrieve info for\r\n * @return {Promise} - Promise of a VoiceProfileEnrollmentResult.\r\n */\r\n public async retrieveEnrollmentResultAsync(profile: VoiceProfile): Promise {\r\n return this.privVoiceAdapter.retrieveEnrollmentResult(profile);\r\n }\r\n\r\n /**\r\n * Get all voice profiles on account with given voice profile type\r\n * @member VoiceProfileClient.prototype.getAllProfilesAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfileType} profileType profile type (identification/verification) for which to list profiles\r\n * @return {Promise} - Promise of an array of VoiceProfileEnrollmentResults.\r\n */\r\n public async getAllProfilesAsync(profileType: VoiceProfileType): Promise {\r\n return this.privVoiceAdapter.getAllProfiles(profileType);\r\n /*\r\n const result: { json: { value: EnrollmentResultJSON[] } } = await this.privAdapter.getProfiles(profileType);\r\n if (profileType === VoiceProfileType.TextIndependentIdentification) {\r\n return VoiceProfileEnrollmentResult.FromIdentificationProfileList(result.json);\r\n }\r\n return VoiceProfileEnrollmentResult.FromVerificationProfileList(result.json);\r\n */\r\n }\r\n\r\n /**\r\n * Get valid authorization phrases for voice profile enrollment\r\n * @member VoiceProfileClient.prototype.getActivationPhrasesAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfileType} profileType Profile Type to get activation phrases for\r\n * @param {string} lang Language string (locale) for Voice Profile\r\n */\r\n public async getActivationPhrasesAsync(profileType: VoiceProfileType, lang: string): Promise {\r\n return this.privVoiceAdapter.getActivationPhrases(profileType, lang);\r\n }\r\n\r\n /**\r\n * Create a speaker recognition voice profile\r\n * @member VoiceProfileClient.prototype.enrollProfileAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfile} profile Voice Profile to create enrollment for\r\n * @param {AudioConfig} audioConfig source info from which to create enrollment\r\n * @return {Promise} - Promise of a VoiceProfileEnrollmentResult.\r\n */\r\n public async enrollProfileAsync(profile: VoiceProfile, audioConfig: AudioConfig): Promise {\r\n const configImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n Contracts.throwIfNullOrUndefined(configImpl, \"audioConfig\");\r\n this.audioConfig = audioConfig;\r\n this.privVoiceAdapter.SpeakerAudioSource = configImpl;\r\n\r\n return this.privVoiceAdapter.enrollProfile(profile);\r\n }\r\n\r\n /**\r\n * Delete a speaker recognition voice profile\r\n * @member VoiceProfileClient.prototype.deleteProfileAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfile} profile Voice Profile to be deleted\r\n * @return {Promise} - Promise of a VoiceProfileResult.\r\n */\r\n public async deleteProfileAsync(profile: VoiceProfile): Promise {\r\n return this.privVoiceAdapter.deleteProfile(profile);\r\n }\r\n\r\n /**\r\n * Remove all enrollments for a speaker recognition voice profile\r\n * @member VoiceProfileClient.prototype.resetProfileAsync\r\n * @function\r\n * @public\r\n * @async\r\n * @param {VoiceProfile} profile Voice Profile to be reset\r\n * @return {Promise} - Promise of a VoiceProfileResult.\r\n */\r\n public async resetProfileAsync(profile: VoiceProfile): Promise {\r\n return this.privVoiceAdapter.resetProfile(profile);\r\n }\r\n\r\n /**\r\n * Clean up object and close underlying connection\r\n * @member VoiceProfileClient.prototype.close\r\n * @function\r\n * @async\r\n * @public\r\n */\r\n public async close(): Promise {\r\n await this.dispose(true);\r\n }\r\n\r\n protected createServiceRecognizer(authentication: IAuthentication, connectionFactory: IConnectionFactory, audioConfig: AudioConfig, recognizerConfig: RecognizerConfig): ServiceRecognizerBase {\r\n const audioImpl: AudioConfigImpl = audioConfig as AudioConfigImpl;\r\n return new VoiceServiceRecognizer(authentication, connectionFactory, audioImpl, recognizerConfig, this);\r\n }\r\n\r\n protected async dispose(disposing: boolean): Promise {\r\n if (this.privDisposedVoiceAdapter) {\r\n return;\r\n }\r\n\r\n this.privDisposedVoiceAdapter = true;\r\n\r\n if (disposing) {\r\n await super.dispose(disposing);\r\n }\r\n }\r\n\r\n protected createRecognizerConfig(speechConfig: SpeechServiceConfig): RecognizerConfig {\r\n return new RecognizerConfig(speechConfig, this.properties);\r\n }\r\n\r\n private getResult(result: IRestResponse, successReason: ResultReason): VoiceProfileResult {\r\n const response: VoiceProfileResult =\r\n new VoiceProfileResult(\r\n result.ok ? successReason : ResultReason.Canceled,\r\n result.statusText\r\n );\r\n return (response);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { CancellationErrorCodePropertyName } from \"../common.speech/Exports\";\r\nimport {\r\n CancellationDetailsBase,\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyCollection,\r\n ResultReason\r\n} from \"./Exports\";\r\n\r\nexport interface EnrollmentResultDetails {\r\n profileId: string;\r\n enrollmentsCount: number;\r\n enrollmentsLength: number;\r\n enrollmentsSpeechLength: number;\r\n remainingEnrollmentsCount: number;\r\n remainingEnrollmentsSpeechLength: number;\r\n audioLength: number;\r\n audioSpeechLength: number;\r\n enrollmentStatus: string;\r\n}\r\n\r\nexport interface EnrollmentResultJSON {\r\n profileId: string;\r\n enrollmentsCount: number;\r\n enrollmentsLength: string;\r\n enrollmentsSpeechLength: string;\r\n remainingEnrollmentsCount: number;\r\n remainingEnrollmentsSpeechLength: string;\r\n audioLength: string;\r\n audioSpeechLength: string;\r\n enrollmentStatus: string;\r\n remainingEnrollments?: number;\r\n identificationProfileId?: string;\r\n verificationProfileId?: string;\r\n}\r\n\r\n/**\r\n * Output format\r\n * @class VoiceProfileEnrollmentResult\r\n */\r\nexport class VoiceProfileEnrollmentResult {\r\n private privReason: ResultReason;\r\n private privDetails: EnrollmentResultDetails;\r\n private privProperties: PropertyCollection;\r\n private privErrorDetails: string;\r\n\r\n public constructor(reason: ResultReason, json: string, statusText: string) {\r\n this.privReason = reason;\r\n this.privProperties = new PropertyCollection();\r\n if (this.privReason !== ResultReason.Canceled) {\r\n if (!!json) {\r\n this.privDetails = JSON.parse(json) as EnrollmentResultDetails;\r\n if (this.privDetails.enrollmentStatus.toLowerCase() === \"enrolling\") {\r\n this.privReason = ResultReason.EnrollingVoiceProfile;\r\n }\r\n }\r\n } else {\r\n this.privErrorDetails = statusText;\r\n this.privProperties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.ServiceError]);\r\n }\r\n }\r\n\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n\r\n public get enrollmentsCount(): number {\r\n return this.privDetails.enrollmentsCount;\r\n }\r\n\r\n public get enrollmentsLength(): number {\r\n return this.privDetails.enrollmentsLength;\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get enrollmentResultDetails(): EnrollmentResultDetails {\r\n return this.privDetails;\r\n }\r\n\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n\r\n public static FromIdentificationProfileList(json: { value: EnrollmentResultJSON[] }): VoiceProfileEnrollmentResult[] {\r\n const results: VoiceProfileEnrollmentResult[] = [];\r\n for (const item of json.value) {\r\n const reason: ResultReason = item.enrollmentStatus.toLowerCase() === \"enrolling\" ?\r\n ResultReason.EnrollingVoiceProfile : item.enrollmentStatus.toLowerCase() === \"enrolled\" ?\r\n ResultReason.EnrolledVoiceProfile : ResultReason.Canceled;\r\n const result = new VoiceProfileEnrollmentResult(reason, null, null);\r\n result.privDetails = this.getIdentificationDetails(item) as EnrollmentResultDetails;\r\n results.push(result);\r\n }\r\n return results;\r\n }\r\n\r\n public static FromVerificationProfileList(json: { value: EnrollmentResultJSON[] }): VoiceProfileEnrollmentResult[] {\r\n const results: VoiceProfileEnrollmentResult[] = [];\r\n for (const item of json.value) {\r\n const reason: ResultReason = item.enrollmentStatus.toLowerCase() === \"enrolling\" ?\r\n ResultReason.EnrollingVoiceProfile : item.enrollmentStatus.toLowerCase() === \"enrolled\" ?\r\n ResultReason.EnrolledVoiceProfile : ResultReason.Canceled;\r\n const result = new VoiceProfileEnrollmentResult(reason, null, null);\r\n result.privDetails = this.getVerificationDetails(item) as EnrollmentResultDetails;\r\n results.push(result);\r\n }\r\n return results;\r\n }\r\n\r\n private static getIdentificationDetails(json: EnrollmentResultJSON): unknown {\r\n return {\r\n audioLength: json.audioLength ? parseFloat(json.audioLength) : 0,\r\n audioSpeechLength: json.audioSpeechLength ? parseFloat(json.audioSpeechLength) : 0,\r\n enrollmentStatus: json.enrollmentStatus,\r\n enrollmentsCount: json.enrollmentsCount || 0,\r\n enrollmentsLength: json.enrollmentsLength ? parseFloat(json.enrollmentsLength) : 0,\r\n enrollmentsSpeechLength: json.enrollmentsSpeechLength ? parseFloat(json.enrollmentsSpeechLength) : 0,\r\n profileId: json.profileId || json.identificationProfileId,\r\n remainingEnrollmentsSpeechLength: json.remainingEnrollmentsSpeechLength ? parseFloat(json.remainingEnrollmentsSpeechLength) : 0\r\n };\r\n }\r\n\r\n private static getVerificationDetails(json: EnrollmentResultJSON): unknown {\r\n return {\r\n audioLength: json.audioLength ? parseFloat(json.audioLength) : 0,\r\n audioSpeechLength: json.audioSpeechLength ? parseFloat(json.audioSpeechLength) : 0,\r\n enrollmentStatus: json.enrollmentStatus,\r\n enrollmentsCount: json.enrollmentsCount,\r\n enrollmentsLength: json.enrollmentsLength ? parseFloat(json.enrollmentsLength) : 0,\r\n enrollmentsSpeechLength: json.enrollmentsSpeechLength ? parseFloat(json.enrollmentsSpeechLength) : 0,\r\n profileId: json.profileId || json.verificationProfileId,\r\n remainingEnrollmentsCount: json.remainingEnrollments || json.remainingEnrollmentsCount,\r\n remainingEnrollmentsSpeechLength: json.remainingEnrollmentsSpeechLength ? parseFloat(json.remainingEnrollmentsSpeechLength) : 0\r\n };\r\n }\r\n}\r\n\r\n/**\r\n * @class VoiceProfileEnrollmentCancellationDetails\r\n */\r\nexport class VoiceProfileEnrollmentCancellationDetails extends CancellationDetailsBase {\r\n\r\n private constructor(reason: CancellationReason, errorDetails: string, errorCode: CancellationErrorCode) {\r\n super(reason, errorDetails, errorCode);\r\n }\r\n\r\n /**\r\n * Creates an instance of VoiceProfileEnrollmentCancellationDetails object for the canceled VoiceProfileEnrollmentResult.\r\n * @member VoiceProfileEnrollmentCancellationDetails.fromResult\r\n * @function\r\n * @public\r\n * @param {VoiceProfileEnrollmentResult} result - The result that was canceled.\r\n * @returns {VoiceProfileEnrollmentCancellationDetails} The cancellation details object being created.\r\n */\r\n public static fromResult(result: VoiceProfileEnrollmentResult): VoiceProfileEnrollmentCancellationDetails {\r\n const reason = CancellationReason.Error;\r\n let errorCode: CancellationErrorCode = CancellationErrorCode.NoError;\r\n\r\n if (!!result.properties) {\r\n errorCode = (CancellationErrorCode as any)[result.properties.getProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.NoError])]; //eslint-disable-line\r\n }\r\n\r\n return new VoiceProfileEnrollmentCancellationDetails(reason, result.errorDetails, errorCode);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\nimport { Contracts } from \"./Contracts\";\r\nimport {\r\n ResultReason,\r\n VoiceProfileResult\r\n} from \"./Exports\";\r\n\r\n/**\r\n * Output format\r\n * @class VoiceProfilePhraseResult\r\n */\r\nexport class VoiceProfilePhraseResult extends VoiceProfileResult {\r\n private privPhrases: string[] = [];\r\n private privType: string;\r\n\r\n public constructor(reason: ResultReason, statusText: string, type: string, phraseArray: string[]) {\r\n super(reason, statusText);\r\n Contracts.throwIfNullOrUndefined(phraseArray, \"phrase array\");\r\n this.privType = type;\r\n if (!!phraseArray && !!phraseArray[0]) {\r\n this.privPhrases = phraseArray;\r\n }\r\n }\r\n\r\n public get phrases(): string[] {\r\n return this.privPhrases;\r\n }\r\n\r\n public get type(): string {\r\n return this.privType;\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/* eslint-disable max-classes-per-file */\r\nimport { CancellationErrorCodePropertyName } from \"../common.speech/Exports\";\r\nimport { Contracts } from \"./Contracts\";\r\nimport {\r\n CancellationDetailsBase,\r\n CancellationErrorCode,\r\n CancellationReason,\r\n PropertyCollection,\r\n ResultReason\r\n} from \"./Exports\";\r\n\r\n/**\r\n * Output format\r\n * @class VoiceProfileResult\r\n */\r\nexport class VoiceProfileResult {\r\n private privReason: ResultReason;\r\n private privProperties: PropertyCollection;\r\n private privErrorDetails: string;\r\n\r\n public constructor(reason: ResultReason, statusText: string) {\r\n this.privReason = reason;\r\n this.privProperties = new PropertyCollection();\r\n if (reason === ResultReason.Canceled) {\r\n Contracts.throwIfNullOrUndefined(statusText, \"statusText\");\r\n this.privErrorDetails = statusText;\r\n this.privProperties.setProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.ServiceError]);\r\n }\r\n }\r\n\r\n public get reason(): ResultReason {\r\n return this.privReason;\r\n }\r\n\r\n public get properties(): PropertyCollection {\r\n return this.privProperties;\r\n }\r\n\r\n public get errorDetails(): string {\r\n return this.privErrorDetails;\r\n }\r\n}\r\n\r\n/**\r\n * @class VoiceProfileCancellationDetails\r\n */\r\nexport class VoiceProfileCancellationDetails extends CancellationDetailsBase {\r\n\r\n private constructor(reason: CancellationReason, errorDetails: string, errorCode: CancellationErrorCode) {\r\n super(reason, errorDetails, errorCode);\r\n }\r\n\r\n /**\r\n * Creates an instance of VoiceProfileCancellationDetails object for the canceled VoiceProfileResult.\r\n * @member VoiceProfileCancellationDetails.fromResult\r\n * @function\r\n * @public\r\n * @param {VoiceProfileResult} result - The result that was canceled.\r\n * @returns {VoiceProfileCancellationDetails} The cancellation details object being created.\r\n */\r\n public static fromResult(result: VoiceProfileResult): VoiceProfileCancellationDetails {\r\n const reason = CancellationReason.Error;\r\n let errorCode: CancellationErrorCode = CancellationErrorCode.NoError;\r\n\r\n if (!!result.properties) {\r\n errorCode = (CancellationErrorCode as any)[result.properties.getProperty(CancellationErrorCodePropertyName, CancellationErrorCode[CancellationErrorCode.NoError])]; //eslint-disable-line\r\n }\r\n\r\n return new VoiceProfileCancellationDetails(reason, result.errorDetails, errorCode);\r\n }\r\n}\r\n","// Copyright (c) Microsoft Corporation. All rights reserved.\r\n// Licensed under the MIT license.\r\n\r\n/**\r\n * Output format\r\n * @class VoiceProfileType\r\n */\r\nexport enum VoiceProfileType {\r\n\r\n /**\r\n * Text independent speaker identification\r\n * @member VoiceProfileType.TextIndependentIdentification\r\n */\r\n TextIndependentIdentification,\r\n\r\n /**\r\n * Text dependent speaker verification\r\n * @member VoiceProfileType.TextDependentVerification\r\n */\r\n TextDependentVerification,\r\n\r\n /**\r\n * Text independent speaker verification\r\n * @member VoiceProfileType.TextIndependentVerification\r\n */\r\n TextIndependentVerification,\r\n}\r\n","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"NIL\", {\n enumerable: true,\n get: function get() {\n return _nil.default;\n }\n});\nObject.defineProperty(exports, \"parse\", {\n enumerable: true,\n get: function get() {\n return _parse.default;\n }\n});\nObject.defineProperty(exports, \"stringify\", {\n enumerable: true,\n get: function get() {\n return _stringify.default;\n }\n});\nObject.defineProperty(exports, \"v1\", {\n enumerable: true,\n get: function get() {\n return _v.default;\n }\n});\nObject.defineProperty(exports, \"v3\", {\n enumerable: true,\n get: function get() {\n return _v2.default;\n }\n});\nObject.defineProperty(exports, \"v4\", {\n enumerable: true,\n get: function get() {\n return _v3.default;\n }\n});\nObject.defineProperty(exports, \"v5\", {\n enumerable: true,\n get: function get() {\n return _v4.default;\n }\n});\nObject.defineProperty(exports, \"validate\", {\n enumerable: true,\n get: function get() {\n return _validate.default;\n }\n});\nObject.defineProperty(exports, \"version\", {\n enumerable: true,\n get: function get() {\n return _version.default;\n }\n});\n\nvar _v = _interopRequireDefault(require(\"./v1.js\"));\n\nvar _v2 = _interopRequireDefault(require(\"./v3.js\"));\n\nvar _v3 = _interopRequireDefault(require(\"./v4.js\"));\n\nvar _v4 = _interopRequireDefault(require(\"./v5.js\"));\n\nvar _nil = _interopRequireDefault(require(\"./nil.js\"));\n\nvar _version = _interopRequireDefault(require(\"./version.js\"));\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nvar _stringify = _interopRequireDefault(require(\"./stringify.js\"));\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n/*\n * Browser-compatible JavaScript MD5\n *\n * Modification of JavaScript MD5\n * https://github.com/blueimp/JavaScript-MD5\n *\n * Copyright 2011, Sebastian Tschan\n * https://blueimp.net\n *\n * Licensed under the MIT license:\n * https://opensource.org/licenses/MIT\n *\n * Based on\n * A JavaScript implementation of the RSA Data Security, Inc. MD5 Message\n * Digest Algorithm, as defined in RFC 1321.\n * Version 2.2 Copyright (C) Paul Johnston 1999 - 2009\n * Other contributors: Greg Holt, Andrew Kepert, Ydnar, Lostinet\n * Distributed under the BSD License\n * See http://pajhome.org.uk/crypt/md5 for more info.\n */\nfunction md5(bytes) {\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = new Uint8Array(msg.length);\n\n for (let i = 0; i < msg.length; ++i) {\n bytes[i] = msg.charCodeAt(i);\n }\n }\n\n return md5ToHexEncodedArray(wordsToMd5(bytesToWords(bytes), bytes.length * 8));\n}\n/*\n * Convert an array of little-endian words to an array of bytes\n */\n\n\nfunction md5ToHexEncodedArray(input) {\n const output = [];\n const length32 = input.length * 32;\n const hexTab = '0123456789abcdef';\n\n for (let i = 0; i < length32; i += 8) {\n const x = input[i >> 5] >>> i % 32 & 0xff;\n const hex = parseInt(hexTab.charAt(x >>> 4 & 0x0f) + hexTab.charAt(x & 0x0f), 16);\n output.push(hex);\n }\n\n return output;\n}\n/**\n * Calculate output length with padding and bit length\n */\n\n\nfunction getOutputLength(inputLength8) {\n return (inputLength8 + 64 >>> 9 << 4) + 14 + 1;\n}\n/*\n * Calculate the MD5 of an array of little-endian words, and a bit length.\n */\n\n\nfunction wordsToMd5(x, len) {\n /* append padding */\n x[len >> 5] |= 0x80 << len % 32;\n x[getOutputLength(len) - 1] = len;\n let a = 1732584193;\n let b = -271733879;\n let c = -1732584194;\n let d = 271733878;\n\n for (let i = 0; i < x.length; i += 16) {\n const olda = a;\n const oldb = b;\n const oldc = c;\n const oldd = d;\n a = md5ff(a, b, c, d, x[i], 7, -680876936);\n d = md5ff(d, a, b, c, x[i + 1], 12, -389564586);\n c = md5ff(c, d, a, b, x[i + 2], 17, 606105819);\n b = md5ff(b, c, d, a, x[i + 3], 22, -1044525330);\n a = md5ff(a, b, c, d, x[i + 4], 7, -176418897);\n d = md5ff(d, a, b, c, x[i + 5], 12, 1200080426);\n c = md5ff(c, d, a, b, x[i + 6], 17, -1473231341);\n b = md5ff(b, c, d, a, x[i + 7], 22, -45705983);\n a = md5ff(a, b, c, d, x[i + 8], 7, 1770035416);\n d = md5ff(d, a, b, c, x[i + 9], 12, -1958414417);\n c = md5ff(c, d, a, b, x[i + 10], 17, -42063);\n b = md5ff(b, c, d, a, x[i + 11], 22, -1990404162);\n a = md5ff(a, b, c, d, x[i + 12], 7, 1804603682);\n d = md5ff(d, a, b, c, x[i + 13], 12, -40341101);\n c = md5ff(c, d, a, b, x[i + 14], 17, -1502002290);\n b = md5ff(b, c, d, a, x[i + 15], 22, 1236535329);\n a = md5gg(a, b, c, d, x[i + 1], 5, -165796510);\n d = md5gg(d, a, b, c, x[i + 6], 9, -1069501632);\n c = md5gg(c, d, a, b, x[i + 11], 14, 643717713);\n b = md5gg(b, c, d, a, x[i], 20, -373897302);\n a = md5gg(a, b, c, d, x[i + 5], 5, -701558691);\n d = md5gg(d, a, b, c, x[i + 10], 9, 38016083);\n c = md5gg(c, d, a, b, x[i + 15], 14, -660478335);\n b = md5gg(b, c, d, a, x[i + 4], 20, -405537848);\n a = md5gg(a, b, c, d, x[i + 9], 5, 568446438);\n d = md5gg(d, a, b, c, x[i + 14], 9, -1019803690);\n c = md5gg(c, d, a, b, x[i + 3], 14, -187363961);\n b = md5gg(b, c, d, a, x[i + 8], 20, 1163531501);\n a = md5gg(a, b, c, d, x[i + 13], 5, -1444681467);\n d = md5gg(d, a, b, c, x[i + 2], 9, -51403784);\n c = md5gg(c, d, a, b, x[i + 7], 14, 1735328473);\n b = md5gg(b, c, d, a, x[i + 12], 20, -1926607734);\n a = md5hh(a, b, c, d, x[i + 5], 4, -378558);\n d = md5hh(d, a, b, c, x[i + 8], 11, -2022574463);\n c = md5hh(c, d, a, b, x[i + 11], 16, 1839030562);\n b = md5hh(b, c, d, a, x[i + 14], 23, -35309556);\n a = md5hh(a, b, c, d, x[i + 1], 4, -1530992060);\n d = md5hh(d, a, b, c, x[i + 4], 11, 1272893353);\n c = md5hh(c, d, a, b, x[i + 7], 16, -155497632);\n b = md5hh(b, c, d, a, x[i + 10], 23, -1094730640);\n a = md5hh(a, b, c, d, x[i + 13], 4, 681279174);\n d = md5hh(d, a, b, c, x[i], 11, -358537222);\n c = md5hh(c, d, a, b, x[i + 3], 16, -722521979);\n b = md5hh(b, c, d, a, x[i + 6], 23, 76029189);\n a = md5hh(a, b, c, d, x[i + 9], 4, -640364487);\n d = md5hh(d, a, b, c, x[i + 12], 11, -421815835);\n c = md5hh(c, d, a, b, x[i + 15], 16, 530742520);\n b = md5hh(b, c, d, a, x[i + 2], 23, -995338651);\n a = md5ii(a, b, c, d, x[i], 6, -198630844);\n d = md5ii(d, a, b, c, x[i + 7], 10, 1126891415);\n c = md5ii(c, d, a, b, x[i + 14], 15, -1416354905);\n b = md5ii(b, c, d, a, x[i + 5], 21, -57434055);\n a = md5ii(a, b, c, d, x[i + 12], 6, 1700485571);\n d = md5ii(d, a, b, c, x[i + 3], 10, -1894986606);\n c = md5ii(c, d, a, b, x[i + 10], 15, -1051523);\n b = md5ii(b, c, d, a, x[i + 1], 21, -2054922799);\n a = md5ii(a, b, c, d, x[i + 8], 6, 1873313359);\n d = md5ii(d, a, b, c, x[i + 15], 10, -30611744);\n c = md5ii(c, d, a, b, x[i + 6], 15, -1560198380);\n b = md5ii(b, c, d, a, x[i + 13], 21, 1309151649);\n a = md5ii(a, b, c, d, x[i + 4], 6, -145523070);\n d = md5ii(d, a, b, c, x[i + 11], 10, -1120210379);\n c = md5ii(c, d, a, b, x[i + 2], 15, 718787259);\n b = md5ii(b, c, d, a, x[i + 9], 21, -343485551);\n a = safeAdd(a, olda);\n b = safeAdd(b, oldb);\n c = safeAdd(c, oldc);\n d = safeAdd(d, oldd);\n }\n\n return [a, b, c, d];\n}\n/*\n * Convert an array bytes to an array of little-endian words\n * Characters >255 have their high-byte silently ignored.\n */\n\n\nfunction bytesToWords(input) {\n if (input.length === 0) {\n return [];\n }\n\n const length8 = input.length * 8;\n const output = new Uint32Array(getOutputLength(length8));\n\n for (let i = 0; i < length8; i += 8) {\n output[i >> 5] |= (input[i / 8] & 0xff) << i % 32;\n }\n\n return output;\n}\n/*\n * Add integers, wrapping at 2^32. This uses 16-bit operations internally\n * to work around bugs in some JS interpreters.\n */\n\n\nfunction safeAdd(x, y) {\n const lsw = (x & 0xffff) + (y & 0xffff);\n const msw = (x >> 16) + (y >> 16) + (lsw >> 16);\n return msw << 16 | lsw & 0xffff;\n}\n/*\n * Bitwise rotate a 32-bit number to the left.\n */\n\n\nfunction bitRotateLeft(num, cnt) {\n return num << cnt | num >>> 32 - cnt;\n}\n/*\n * These functions implement the four basic operations the algorithm uses.\n */\n\n\nfunction md5cmn(q, a, b, x, s, t) {\n return safeAdd(bitRotateLeft(safeAdd(safeAdd(a, q), safeAdd(x, t)), s), b);\n}\n\nfunction md5ff(a, b, c, d, x, s, t) {\n return md5cmn(b & c | ~b & d, a, b, x, s, t);\n}\n\nfunction md5gg(a, b, c, d, x, s, t) {\n return md5cmn(b & d | c & ~d, a, b, x, s, t);\n}\n\nfunction md5hh(a, b, c, d, x, s, t) {\n return md5cmn(b ^ c ^ d, a, b, x, s, t);\n}\n\nfunction md5ii(a, b, c, d, x, s, t) {\n return md5cmn(c ^ (b | ~d), a, b, x, s, t);\n}\n\nvar _default = md5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nconst randomUUID = typeof crypto !== 'undefined' && crypto.randomUUID && crypto.randomUUID.bind(crypto);\nvar _default = {\n randomUUID\n};\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = '00000000-0000-0000-0000-000000000000';\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction parse(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n let v;\n const arr = new Uint8Array(16); // Parse ########-....-....-....-............\n\n arr[0] = (v = parseInt(uuid.slice(0, 8), 16)) >>> 24;\n arr[1] = v >>> 16 & 0xff;\n arr[2] = v >>> 8 & 0xff;\n arr[3] = v & 0xff; // Parse ........-####-....-....-............\n\n arr[4] = (v = parseInt(uuid.slice(9, 13), 16)) >>> 8;\n arr[5] = v & 0xff; // Parse ........-....-####-....-............\n\n arr[6] = (v = parseInt(uuid.slice(14, 18), 16)) >>> 8;\n arr[7] = v & 0xff; // Parse ........-....-....-####-............\n\n arr[8] = (v = parseInt(uuid.slice(19, 23), 16)) >>> 8;\n arr[9] = v & 0xff; // Parse ........-....-....-....-############\n // (Use \"/\" to avoid 32-bit truncation when bit-shifting high-order bytes)\n\n arr[10] = (v = parseInt(uuid.slice(24, 36), 16)) / 0x10000000000 & 0xff;\n arr[11] = v / 0x100000000 & 0xff;\n arr[12] = v >>> 24 & 0xff;\n arr[13] = v >>> 16 & 0xff;\n arr[14] = v >>> 8 & 0xff;\n arr[15] = v & 0xff;\n return arr;\n}\n\nvar _default = parse;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nvar _default = /^(?:[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}|00000000-0000-0000-0000-000000000000)$/i;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = rng;\n// Unique ID creation requires a high quality random # generator. In the browser we therefore\n// require the crypto API and do not support built-in fallback to lower quality random number\n// generators (like Math.random()).\nlet getRandomValues;\nconst rnds8 = new Uint8Array(16);\n\nfunction rng() {\n // lazy load so that environments that need to polyfill have a chance to do so\n if (!getRandomValues) {\n // getRandomValues needs to be invoked in a context where \"this\" is a Crypto implementation.\n getRandomValues = typeof crypto !== 'undefined' && crypto.getRandomValues && crypto.getRandomValues.bind(crypto);\n\n if (!getRandomValues) {\n throw new Error('crypto.getRandomValues() not supported. See https://github.com/uuidjs/uuid#getrandomvalues-not-supported');\n }\n }\n\n return getRandomValues(rnds8);\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\n// Adapted from Chris Veness' SHA1 code at\n// http://www.movable-type.co.uk/scripts/sha1.html\nfunction f(s, x, y, z) {\n switch (s) {\n case 0:\n return x & y ^ ~x & z;\n\n case 1:\n return x ^ y ^ z;\n\n case 2:\n return x & y ^ x & z ^ y & z;\n\n case 3:\n return x ^ y ^ z;\n }\n}\n\nfunction ROTL(x, n) {\n return x << n | x >>> 32 - n;\n}\n\nfunction sha1(bytes) {\n const K = [0x5a827999, 0x6ed9eba1, 0x8f1bbcdc, 0xca62c1d6];\n const H = [0x67452301, 0xefcdab89, 0x98badcfe, 0x10325476, 0xc3d2e1f0];\n\n if (typeof bytes === 'string') {\n const msg = unescape(encodeURIComponent(bytes)); // UTF8 escape\n\n bytes = [];\n\n for (let i = 0; i < msg.length; ++i) {\n bytes.push(msg.charCodeAt(i));\n }\n } else if (!Array.isArray(bytes)) {\n // Convert Array-like to Array\n bytes = Array.prototype.slice.call(bytes);\n }\n\n bytes.push(0x80);\n const l = bytes.length / 4 + 2;\n const N = Math.ceil(l / 16);\n const M = new Array(N);\n\n for (let i = 0; i < N; ++i) {\n const arr = new Uint32Array(16);\n\n for (let j = 0; j < 16; ++j) {\n arr[j] = bytes[i * 64 + j * 4] << 24 | bytes[i * 64 + j * 4 + 1] << 16 | bytes[i * 64 + j * 4 + 2] << 8 | bytes[i * 64 + j * 4 + 3];\n }\n\n M[i] = arr;\n }\n\n M[N - 1][14] = (bytes.length - 1) * 8 / Math.pow(2, 32);\n M[N - 1][14] = Math.floor(M[N - 1][14]);\n M[N - 1][15] = (bytes.length - 1) * 8 & 0xffffffff;\n\n for (let i = 0; i < N; ++i) {\n const W = new Uint32Array(80);\n\n for (let t = 0; t < 16; ++t) {\n W[t] = M[i][t];\n }\n\n for (let t = 16; t < 80; ++t) {\n W[t] = ROTL(W[t - 3] ^ W[t - 8] ^ W[t - 14] ^ W[t - 16], 1);\n }\n\n let a = H[0];\n let b = H[1];\n let c = H[2];\n let d = H[3];\n let e = H[4];\n\n for (let t = 0; t < 80; ++t) {\n const s = Math.floor(t / 20);\n const T = ROTL(a, 5) + f(s, b, c, d) + e + K[s] + W[t] >>> 0;\n e = d;\n d = c;\n c = ROTL(b, 30) >>> 0;\n b = a;\n a = T;\n }\n\n H[0] = H[0] + a >>> 0;\n H[1] = H[1] + b >>> 0;\n H[2] = H[2] + c >>> 0;\n H[3] = H[3] + d >>> 0;\n H[4] = H[4] + e >>> 0;\n }\n\n return [H[0] >> 24 & 0xff, H[0] >> 16 & 0xff, H[0] >> 8 & 0xff, H[0] & 0xff, H[1] >> 24 & 0xff, H[1] >> 16 & 0xff, H[1] >> 8 & 0xff, H[1] & 0xff, H[2] >> 24 & 0xff, H[2] >> 16 & 0xff, H[2] >> 8 & 0xff, H[2] & 0xff, H[3] >> 24 & 0xff, H[3] >> 16 & 0xff, H[3] >> 8 & 0xff, H[3] & 0xff, H[4] >> 24 & 0xff, H[4] >> 16 & 0xff, H[4] >> 8 & 0xff, H[4] & 0xff];\n}\n\nvar _default = sha1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\nexports.unsafeStringify = unsafeStringify;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n/**\n * Convert array of 16 byte values to UUID string format of the form:\n * XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX\n */\nconst byteToHex = [];\n\nfor (let i = 0; i < 256; ++i) {\n byteToHex.push((i + 0x100).toString(16).slice(1));\n}\n\nfunction unsafeStringify(arr, offset = 0) {\n // Note: Be careful editing this code! It's been tuned for performance\n // and works in ways you may not expect. See https://github.com/uuidjs/uuid/pull/434\n return (byteToHex[arr[offset + 0]] + byteToHex[arr[offset + 1]] + byteToHex[arr[offset + 2]] + byteToHex[arr[offset + 3]] + '-' + byteToHex[arr[offset + 4]] + byteToHex[arr[offset + 5]] + '-' + byteToHex[arr[offset + 6]] + byteToHex[arr[offset + 7]] + '-' + byteToHex[arr[offset + 8]] + byteToHex[arr[offset + 9]] + '-' + byteToHex[arr[offset + 10]] + byteToHex[arr[offset + 11]] + byteToHex[arr[offset + 12]] + byteToHex[arr[offset + 13]] + byteToHex[arr[offset + 14]] + byteToHex[arr[offset + 15]]).toLowerCase();\n}\n\nfunction stringify(arr, offset = 0) {\n const uuid = unsafeStringify(arr, offset); // Consistency check for valid UUID. If this throws, it's likely due to one\n // of the following:\n // - One or more input array values don't map to a hex octet (leading to\n // \"undefined\" in the uuid)\n // - Invalid input values for the RFC `version` or `variant` fields\n\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Stringified UUID is invalid');\n }\n\n return uuid;\n}\n\nvar _default = stringify;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\n// **`v1()` - Generate time-based UUID**\n//\n// Inspired by https://github.com/LiosK/UUID.js\n// and http://docs.python.org/library/uuid.html\nlet _nodeId;\n\nlet _clockseq; // Previous uuid creation time\n\n\nlet _lastMSecs = 0;\nlet _lastNSecs = 0; // See https://github.com/uuidjs/uuid for API details\n\nfunction v1(options, buf, offset) {\n let i = buf && offset || 0;\n const b = buf || new Array(16);\n options = options || {};\n let node = options.node || _nodeId;\n let clockseq = options.clockseq !== undefined ? options.clockseq : _clockseq; // node and clockseq need to be initialized to random values if they're not\n // specified. We do this lazily to minimize issues related to insufficient\n // system entropy. See #189\n\n if (node == null || clockseq == null) {\n const seedBytes = options.random || (options.rng || _rng.default)();\n\n if (node == null) {\n // Per 4.5, create and 48-bit node id, (47 random bits + multicast bit = 1)\n node = _nodeId = [seedBytes[0] | 0x01, seedBytes[1], seedBytes[2], seedBytes[3], seedBytes[4], seedBytes[5]];\n }\n\n if (clockseq == null) {\n // Per 4.2.2, randomize (14 bit) clockseq\n clockseq = _clockseq = (seedBytes[6] << 8 | seedBytes[7]) & 0x3fff;\n }\n } // UUID timestamps are 100 nano-second units since the Gregorian epoch,\n // (1582-10-15 00:00). JSNumbers aren't precise enough for this, so\n // time is handled internally as 'msecs' (integer milliseconds) and 'nsecs'\n // (100-nanoseconds offset from msecs) since unix epoch, 1970-01-01 00:00.\n\n\n let msecs = options.msecs !== undefined ? options.msecs : Date.now(); // Per 4.2.1.2, use count of uuid's generated during the current clock\n // cycle to simulate higher resolution clock\n\n let nsecs = options.nsecs !== undefined ? options.nsecs : _lastNSecs + 1; // Time since last uuid creation (in msecs)\n\n const dt = msecs - _lastMSecs + (nsecs - _lastNSecs) / 10000; // Per 4.2.1.2, Bump clockseq on clock regression\n\n if (dt < 0 && options.clockseq === undefined) {\n clockseq = clockseq + 1 & 0x3fff;\n } // Reset nsecs if clock regresses (new clockseq) or we've moved onto a new\n // time interval\n\n\n if ((dt < 0 || msecs > _lastMSecs) && options.nsecs === undefined) {\n nsecs = 0;\n } // Per 4.2.1.2 Throw error if too many uuids are requested\n\n\n if (nsecs >= 10000) {\n throw new Error(\"uuid.v1(): Can't create more than 10M uuids/sec\");\n }\n\n _lastMSecs = msecs;\n _lastNSecs = nsecs;\n _clockseq = clockseq; // Per 4.1.4 - Convert from unix epoch to Gregorian epoch\n\n msecs += 12219292800000; // `time_low`\n\n const tl = ((msecs & 0xfffffff) * 10000 + nsecs) % 0x100000000;\n b[i++] = tl >>> 24 & 0xff;\n b[i++] = tl >>> 16 & 0xff;\n b[i++] = tl >>> 8 & 0xff;\n b[i++] = tl & 0xff; // `time_mid`\n\n const tmh = msecs / 0x100000000 * 10000 & 0xfffffff;\n b[i++] = tmh >>> 8 & 0xff;\n b[i++] = tmh & 0xff; // `time_high_and_version`\n\n b[i++] = tmh >>> 24 & 0xf | 0x10; // include version\n\n b[i++] = tmh >>> 16 & 0xff; // `clock_seq_hi_and_reserved` (Per 4.2.2 - include variant)\n\n b[i++] = clockseq >>> 8 | 0x80; // `clock_seq_low`\n\n b[i++] = clockseq & 0xff; // `node`\n\n for (let n = 0; n < 6; ++n) {\n b[i + n] = node[n];\n }\n\n return buf || (0, _stringify.unsafeStringify)(b);\n}\n\nvar _default = v1;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _md = _interopRequireDefault(require(\"./md5.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v3 = (0, _v.default)('v3', 0x30, _md.default);\nvar _default = v3;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.URL = exports.DNS = void 0;\nexports.default = v35;\n\nvar _stringify = require(\"./stringify.js\");\n\nvar _parse = _interopRequireDefault(require(\"./parse.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction stringToBytes(str) {\n str = unescape(encodeURIComponent(str)); // UTF8 escape\n\n const bytes = [];\n\n for (let i = 0; i < str.length; ++i) {\n bytes.push(str.charCodeAt(i));\n }\n\n return bytes;\n}\n\nconst DNS = '6ba7b810-9dad-11d1-80b4-00c04fd430c8';\nexports.DNS = DNS;\nconst URL = '6ba7b811-9dad-11d1-80b4-00c04fd430c8';\nexports.URL = URL;\n\nfunction v35(name, version, hashfunc) {\n function generateUUID(value, namespace, buf, offset) {\n var _namespace;\n\n if (typeof value === 'string') {\n value = stringToBytes(value);\n }\n\n if (typeof namespace === 'string') {\n namespace = (0, _parse.default)(namespace);\n }\n\n if (((_namespace = namespace) === null || _namespace === void 0 ? void 0 : _namespace.length) !== 16) {\n throw TypeError('Namespace must be array-like (16 iterable integer values, 0-255)');\n } // Compute hash of namespace and value, Per 4.3\n // Future: Use spread syntax when supported on all platforms, e.g. `bytes =\n // hashfunc([...namespace, ... value])`\n\n\n let bytes = new Uint8Array(16 + value.length);\n bytes.set(namespace);\n bytes.set(value, namespace.length);\n bytes = hashfunc(bytes);\n bytes[6] = bytes[6] & 0x0f | version;\n bytes[8] = bytes[8] & 0x3f | 0x80;\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = bytes[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(bytes);\n } // Function#name is not settable on some platforms (#270)\n\n\n try {\n generateUUID.name = name; // eslint-disable-next-line no-empty\n } catch (err) {} // For CommonJS default export support\n\n\n generateUUID.DNS = DNS;\n generateUUID.URL = URL;\n return generateUUID;\n}","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _native = _interopRequireDefault(require(\"./native.js\"));\n\nvar _rng = _interopRequireDefault(require(\"./rng.js\"));\n\nvar _stringify = require(\"./stringify.js\");\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction v4(options, buf, offset) {\n if (_native.default.randomUUID && !buf && !options) {\n return _native.default.randomUUID();\n }\n\n options = options || {};\n\n const rnds = options.random || (options.rng || _rng.default)(); // Per 4.4, set bits for version and `clock_seq_hi_and_reserved`\n\n\n rnds[6] = rnds[6] & 0x0f | 0x40;\n rnds[8] = rnds[8] & 0x3f | 0x80; // Copy bytes to buffer, if provided\n\n if (buf) {\n offset = offset || 0;\n\n for (let i = 0; i < 16; ++i) {\n buf[offset + i] = rnds[i];\n }\n\n return buf;\n }\n\n return (0, _stringify.unsafeStringify)(rnds);\n}\n\nvar _default = v4;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _v = _interopRequireDefault(require(\"./v35.js\"));\n\nvar _sha = _interopRequireDefault(require(\"./sha1.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nconst v5 = (0, _v.default)('v5', 0x50, _sha.default);\nvar _default = v5;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _regex = _interopRequireDefault(require(\"./regex.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction validate(uuid) {\n return typeof uuid === 'string' && _regex.default.test(uuid);\n}\n\nvar _default = validate;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = void 0;\n\nvar _validate = _interopRequireDefault(require(\"./validate.js\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction version(uuid) {\n if (!(0, _validate.default)(uuid)) {\n throw TypeError('Invalid UUID');\n }\n\n return parseInt(uuid.slice(14, 15), 16);\n}\n\nvar _default = version;\nexports.default = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = onErrorResumeNext;\n\nfunction onErrorResumeNext(fn) {\n var context = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;\n\n try {\n var result = fn.call(context);\n\n if (typeof result.then === 'function') {\n return new Promise(function (resolve) {\n result.then(resolve, function () {\n return resolve();\n });\n });\n } else {\n return result;\n }\n } catch (err) {}\n}\n\nmodule.exports = exports.default;\nmodule.exports.default = exports.default;","\"use strict\";\n\nvar _interopRequireDefault = require(\"@babel/runtime-corejs3/helpers/interopRequireDefault\").default;\nvar _promise = _interopRequireDefault(require(\"@babel/runtime-corejs3/core-js-stable/promise\"));\n// ../p-defer/index.js\nfunction pDefer() {\n var deferred = {};\n deferred.promise = new _promise.default(function (resolve, reject) {\n deferred.resolve = resolve;\n deferred.reject = reject;\n });\n return deferred;\n}\n\n// src/index.js\nmodule.exports = pDefer;\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = require('./lib/ReactPropTypesSecret');\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bigint: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (process.env.NODE_ENV !== 'production') {\n var ReactIs = require('react-is');\n\n // By explicitly using `prop-types` you are opting into new development behavior.\n // http://fb.me/prop-types-in-prod\n var throwOnDirectAccess = true;\n module.exports = require('./factoryWithTypeCheckers')(ReactIs.isElement, throwOnDirectAccess);\n} else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = require('./factoryWithThrowingShims')();\n}\n","/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n'use strict';\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n","'use strict';\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.default = undefined;\n\nvar _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };\n\nvar _createClass = function () { function 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); } } return function (Constructor, protoProps, staticProps) { if (protoProps) defineProperties(Constructor.prototype, protoProps); if (staticProps) defineProperties(Constructor, staticProps); return Constructor; }; }();\n\nvar _class, _temp2;\n\nexports.confirmAlert = confirmAlert;\n\nvar _react = require('react');\n\nvar _react2 = _interopRequireDefault(_react);\n\nvar _propTypes = require('prop-types');\n\nvar _propTypes2 = _interopRequireDefault(_propTypes);\n\nvar _client = require('react-dom/client');\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\nfunction _possibleConstructorReturn(self, call) { if (!self) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return call && (typeof call === \"object\" || typeof call === \"function\") ? call : self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function, not \" + typeof superClass); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, enumerable: false, writable: true, configurable: true } }); if (superClass) Object.setPrototypeOf ? Object.setPrototypeOf(subClass, superClass) : subClass.__proto__ = superClass; }\n\nvar ReactConfirmAlert = (_temp2 = _class = function (_Component) {\n _inherits(ReactConfirmAlert, _Component);\n\n function ReactConfirmAlert() {\n var _ref;\n\n var _temp, _this, _ret;\n\n _classCallCheck(this, ReactConfirmAlert);\n\n for (var _len = arguments.length, args = Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return _ret = (_temp = (_this = _possibleConstructorReturn(this, (_ref = ReactConfirmAlert.__proto__ || Object.getPrototypeOf(ReactConfirmAlert)).call.apply(_ref, [this].concat(args))), _this), _this.handleClickButton = function (button) {\n if (button.onClick) button.onClick();\n _this.close();\n }, _this.handleClickOverlay = function (e) {\n var _this$props = _this.props,\n closeOnClickOutside = _this$props.closeOnClickOutside,\n onClickOutside = _this$props.onClickOutside;\n\n var isClickOutside = e.target === _this.overlay;\n\n if (closeOnClickOutside && isClickOutside) {\n onClickOutside();\n _this.close();\n }\n\n e.stopPropagation();\n }, _this.close = function () {\n var afterClose = _this.props.afterClose;\n\n removeBodyClass();\n removeElementReconfirm(_this.props);\n removeSVGBlurReconfirm(afterClose);\n }, _this.keyboard = function (event) {\n var _this$props2 = _this.props,\n closeOnEscape = _this$props2.closeOnEscape,\n onKeypressEscape = _this$props2.onKeypressEscape,\n onkeyPress = _this$props2.onkeyPress,\n keyCodeForClose = _this$props2.keyCodeForClose;\n\n var keyCode = event.keyCode;\n var isKeyCodeEscape = keyCode === 27;\n\n if (keyCodeForClose.includes(keyCode)) {\n _this.close();\n }\n\n if (closeOnEscape && isKeyCodeEscape) {\n onKeypressEscape(event);\n _this.close();\n }\n\n if (onkeyPress) {\n onkeyPress();\n }\n }, _this.componentDidMount = function () {\n document.addEventListener('keydown', _this.keyboard, false);\n }, _this.componentWillUnmount = function () {\n document.removeEventListener('keydown', _this.keyboard, false);\n _this.props.willUnmount();\n }, _this.renderCustomUI = function () {\n var _this$props3 = _this.props,\n title = _this$props3.title,\n message = _this$props3.message,\n buttons = _this$props3.buttons,\n customUI = _this$props3.customUI;\n\n var dataCustomUI = {\n title: title,\n message: message,\n buttons: buttons,\n onClose: _this.close\n };\n\n return customUI(dataCustomUI);\n }, _temp), _possibleConstructorReturn(_this, _ret);\n }\n\n _createClass(ReactConfirmAlert, [{\n key: 'render',\n value: function render() {\n var _this2 = this;\n\n var _props = this.props,\n title = _props.title,\n message = _props.message,\n buttons = _props.buttons,\n childrenElement = _props.childrenElement,\n customUI = _props.customUI,\n overlayClassName = _props.overlayClassName;\n\n\n return _react2.default.createElement(\n 'div',\n {\n className: 'react-confirm-alert-overlay ' + overlayClassName,\n ref: function ref(dom) {\n return _this2.overlay = dom;\n },\n onClick: this.handleClickOverlay\n },\n _react2.default.createElement(\n 'div',\n { className: 'react-confirm-alert' },\n customUI ? this.renderCustomUI() : _react2.default.createElement(\n 'div',\n { className: 'react-confirm-alert-body' },\n title && _react2.default.createElement(\n 'h1',\n null,\n title\n ),\n message,\n childrenElement(),\n _react2.default.createElement(\n 'div',\n { className: 'react-confirm-alert-button-group' },\n buttons.map(function (button, i) {\n return _react2.default.createElement(\n 'button',\n _extends({\n key: i,\n className: button.className\n }, button, {\n onClick: function onClick(e) {\n return _this2.handleClickButton(button);\n }\n }),\n button.label\n );\n })\n )\n )\n )\n );\n }\n }]);\n\n return ReactConfirmAlert;\n}(_react.Component), _class.propTypes = {\n title: _propTypes2.default.string,\n message: _propTypes2.default.string,\n buttons: _propTypes2.default.array.isRequired,\n childrenElement: _propTypes2.default.func,\n customUI: _propTypes2.default.func,\n closeOnClickOutside: _propTypes2.default.bool,\n closeOnEscape: _propTypes2.default.bool,\n keyCodeForClose: _propTypes2.default.arrayOf(_propTypes2.default.number),\n willUnmount: _propTypes2.default.func,\n afterClose: _propTypes2.default.func,\n onClickOutside: _propTypes2.default.func,\n onKeypressEscape: _propTypes2.default.func,\n onkeyPress: _propTypes2.default.func,\n overlayClassName: _propTypes2.default.string\n}, _class.defaultProps = {\n buttons: [{\n label: 'Cancel',\n onClick: function onClick() {\n return null;\n },\n className: null\n }, {\n label: 'Confirm',\n onClick: function onClick() {\n return null;\n },\n className: null\n }],\n childrenElement: function childrenElement() {\n return null;\n },\n closeOnClickOutside: true,\n closeOnEscape: true,\n keyCodeForClose: [],\n willUnmount: function willUnmount() {\n return null;\n },\n afterClose: function afterClose() {\n return null;\n },\n onClickOutside: function onClickOutside() {\n return null;\n },\n onKeypressEscape: function onKeypressEscape() {\n return null;\n }\n}, _temp2);\nexports.default = ReactConfirmAlert;\n\n\nvar root = null;\nvar targetId = 'react-confirm-alert';\n\nfunction createSVGBlurReconfirm() {\n // If has svg ignore to create the svg\n var svg = document.getElementById('react-confirm-alert-firm-svg');\n if (svg) return;\n var svgNS = 'http://www.w3.org/2000/svg';\n var feGaussianBlur = document.createElementNS(svgNS, 'feGaussianBlur');\n feGaussianBlur.setAttribute('stdDeviation', '0.3');\n\n var filter = document.createElementNS(svgNS, 'filter');\n filter.setAttribute('id', 'gaussian-blur');\n filter.appendChild(feGaussianBlur);\n\n var svgElem = document.createElementNS(svgNS, 'svg');\n svgElem.setAttribute('id', 'react-confirm-alert-firm-svg');\n svgElem.setAttribute('class', 'react-confirm-alert-svg');\n svgElem.appendChild(filter);\n\n document.body.appendChild(svgElem);\n}\n\nfunction removeSVGBlurReconfirm(afterClose) {\n var svg = document.getElementById('react-confirm-alert-firm-svg');\n if (svg) {\n svg.parentNode.removeChild(svg);\n }\n document.body.children[0].classList.remove('react-confirm-alert-blur');\n afterClose();\n}\n\nfunction createElementReconfirm(properties) {\n var divTarget = document.getElementById(properties.targetId || targetId);\n\n if (properties.targetId && !divTarget) {\n console.error('React Confirm Alert:', 'Can not get element id (#' + properties.targetId + ')');\n }\n\n if (divTarget) {\n root = (0, _client.createRoot)(divTarget);\n root.render(_react2.default.createElement(ReactConfirmAlert, properties));\n } else {\n document.body.children[0].classList.add('react-confirm-alert-blur');\n divTarget = document.createElement('div');\n divTarget.id = targetId;\n document.body.appendChild(divTarget);\n root = (0, _client.createRoot)(divTarget);\n root.render(_react2.default.createElement(ReactConfirmAlert, properties));\n }\n}\n\nfunction removeElementReconfirm(properties) {\n var target = document.getElementById(properties.targetId || targetId);\n if (target) {\n root.unmount(target);\n }\n}\n\nfunction addBodyClass() {\n document.body.classList.add('react-confirm-alert-body-element');\n}\n\nfunction removeBodyClass() {\n document.body.classList.remove('react-confirm-alert-body-element');\n}\n\nfunction confirmAlert(properties) {\n addBodyClass();\n createSVGBlurReconfirm();\n createElementReconfirm(properties);\n}","/**\n * @license React\n * react-dom.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n/*\n Modernizr 3.0.0pre (Custom Build) | MIT\n*/\n'use strict';var aa=require(\"react\"),ca=require(\"scheduler\");function p(a){for(var b=\"https://reactjs.org/docs/error-decoder.html?invariant=\"+a,c=1;cb}return!1}function v(a,b,c,d,e,f,g){this.acceptsBooleans=2===b||3===b||4===b;this.attributeName=d;this.attributeNamespace=e;this.mustUseProperty=c;this.propertyName=a;this.type=b;this.sanitizeURL=f;this.removeEmptyString=g}var z={};\n\"children dangerouslySetInnerHTML defaultValue defaultChecked innerHTML suppressContentEditableWarning suppressHydrationWarning style\".split(\" \").forEach(function(a){z[a]=new v(a,0,!1,a,null,!1,!1)});[[\"acceptCharset\",\"accept-charset\"],[\"className\",\"class\"],[\"htmlFor\",\"for\"],[\"httpEquiv\",\"http-equiv\"]].forEach(function(a){var b=a[0];z[b]=new v(b,1,!1,a[1],null,!1,!1)});[\"contentEditable\",\"draggable\",\"spellCheck\",\"value\"].forEach(function(a){z[a]=new v(a,2,!1,a.toLowerCase(),null,!1,!1)});\n[\"autoReverse\",\"externalResourcesRequired\",\"focusable\",\"preserveAlpha\"].forEach(function(a){z[a]=new v(a,2,!1,a,null,!1,!1)});\"allowFullScreen async autoFocus autoPlay controls default defer disabled disablePictureInPicture disableRemotePlayback formNoValidate hidden loop noModule noValidate open playsInline readOnly required reversed scoped seamless itemScope\".split(\" \").forEach(function(a){z[a]=new v(a,3,!1,a.toLowerCase(),null,!1,!1)});\n[\"checked\",\"multiple\",\"muted\",\"selected\"].forEach(function(a){z[a]=new v(a,3,!0,a,null,!1,!1)});[\"capture\",\"download\"].forEach(function(a){z[a]=new v(a,4,!1,a,null,!1,!1)});[\"cols\",\"rows\",\"size\",\"span\"].forEach(function(a){z[a]=new v(a,6,!1,a,null,!1,!1)});[\"rowSpan\",\"start\"].forEach(function(a){z[a]=new v(a,5,!1,a.toLowerCase(),null,!1,!1)});var ra=/[\\-:]([a-z])/g;function sa(a){return a[1].toUpperCase()}\n\"accent-height alignment-baseline arabic-form baseline-shift cap-height clip-path clip-rule color-interpolation color-interpolation-filters color-profile color-rendering dominant-baseline enable-background fill-opacity fill-rule flood-color flood-opacity font-family font-size font-size-adjust font-stretch font-style font-variant font-weight glyph-name glyph-orientation-horizontal glyph-orientation-vertical horiz-adv-x horiz-origin-x image-rendering letter-spacing lighting-color marker-end marker-mid marker-start overline-position overline-thickness paint-order panose-1 pointer-events rendering-intent shape-rendering stop-color stop-opacity strikethrough-position strikethrough-thickness stroke-dasharray stroke-dashoffset stroke-linecap stroke-linejoin stroke-miterlimit stroke-opacity stroke-width text-anchor text-decoration text-rendering underline-position underline-thickness unicode-bidi unicode-range units-per-em v-alphabetic v-hanging v-ideographic v-mathematical vector-effect vert-adv-y vert-origin-x vert-origin-y word-spacing writing-mode xmlns:xlink x-height\".split(\" \").forEach(function(a){var b=a.replace(ra,\nsa);z[b]=new v(b,1,!1,a,null,!1,!1)});\"xlink:actuate xlink:arcrole xlink:role xlink:show xlink:title xlink:type\".split(\" \").forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/1999/xlink\",!1,!1)});[\"xml:base\",\"xml:lang\",\"xml:space\"].forEach(function(a){var b=a.replace(ra,sa);z[b]=new v(b,1,!1,a,\"http://www.w3.org/XML/1998/namespace\",!1,!1)});[\"tabIndex\",\"crossOrigin\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!1,!1)});\nz.xlinkHref=new v(\"xlinkHref\",1,!1,\"xlink:href\",\"http://www.w3.org/1999/xlink\",!0,!1);[\"src\",\"href\",\"action\",\"formAction\"].forEach(function(a){z[a]=new v(a,1,!1,a.toLowerCase(),null,!0,!0)});\nfunction ta(a,b,c,d){var e=z.hasOwnProperty(b)?z[b]:null;if(null!==e?0!==e.type:d||!(2h||e[g]!==f[h]){var k=\"\\n\"+e[g].replace(\" at new \",\" at \");a.displayName&&k.includes(\"\")&&(k=k.replace(\"\",a.displayName));return k}while(1<=g&&0<=h)}break}}}finally{Na=!1,Error.prepareStackTrace=c}return(a=a?a.displayName||a.name:\"\")?Ma(a):\"\"}\nfunction Pa(a){switch(a.tag){case 5:return Ma(a.type);case 16:return Ma(\"Lazy\");case 13:return Ma(\"Suspense\");case 19:return Ma(\"SuspenseList\");case 0:case 2:case 15:return a=Oa(a.type,!1),a;case 11:return a=Oa(a.type.render,!1),a;case 1:return a=Oa(a.type,!0),a;default:return\"\"}}\nfunction Qa(a){if(null==a)return null;if(\"function\"===typeof a)return a.displayName||a.name||null;if(\"string\"===typeof a)return a;switch(a){case ya:return\"Fragment\";case wa:return\"Portal\";case Aa:return\"Profiler\";case za:return\"StrictMode\";case Ea:return\"Suspense\";case Fa:return\"SuspenseList\"}if(\"object\"===typeof a)switch(a.$$typeof){case Ca:return(a.displayName||\"Context\")+\".Consumer\";case Ba:return(a._context.displayName||\"Context\")+\".Provider\";case Da:var b=a.render;a=a.displayName;a||(a=b.displayName||\nb.name||\"\",a=\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");return a;case Ga:return b=a.displayName||null,null!==b?b:Qa(a.type)||\"Memo\";case Ha:b=a._payload;a=a._init;try{return Qa(a(b))}catch(c){}}return null}\nfunction Ra(a){var b=a.type;switch(a.tag){case 24:return\"Cache\";case 9:return(b.displayName||\"Context\")+\".Consumer\";case 10:return(b._context.displayName||\"Context\")+\".Provider\";case 18:return\"DehydratedFragment\";case 11:return a=b.render,a=a.displayName||a.name||\"\",b.displayName||(\"\"!==a?\"ForwardRef(\"+a+\")\":\"ForwardRef\");case 7:return\"Fragment\";case 5:return b;case 4:return\"Portal\";case 3:return\"Root\";case 6:return\"Text\";case 16:return Qa(b);case 8:return b===za?\"StrictMode\":\"Mode\";case 22:return\"Offscreen\";\ncase 12:return\"Profiler\";case 21:return\"Scope\";case 13:return\"Suspense\";case 19:return\"SuspenseList\";case 25:return\"TracingMarker\";case 1:case 0:case 17:case 2:case 14:case 15:if(\"function\"===typeof b)return b.displayName||b.name||null;if(\"string\"===typeof b)return b}return null}function Sa(a){switch(typeof a){case \"boolean\":case \"number\":case \"string\":case \"undefined\":return a;case \"object\":return a;default:return\"\"}}\nfunction Ta(a){var b=a.type;return(a=a.nodeName)&&\"input\"===a.toLowerCase()&&(\"checkbox\"===b||\"radio\"===b)}\nfunction Ua(a){var b=Ta(a)?\"checked\":\"value\",c=Object.getOwnPropertyDescriptor(a.constructor.prototype,b),d=\"\"+a[b];if(!a.hasOwnProperty(b)&&\"undefined\"!==typeof c&&\"function\"===typeof c.get&&\"function\"===typeof c.set){var e=c.get,f=c.set;Object.defineProperty(a,b,{configurable:!0,get:function(){return e.call(this)},set:function(a){d=\"\"+a;f.call(this,a)}});Object.defineProperty(a,b,{enumerable:c.enumerable});return{getValue:function(){return d},setValue:function(a){d=\"\"+a},stopTracking:function(){a._valueTracker=\nnull;delete a[b]}}}}function Va(a){a._valueTracker||(a._valueTracker=Ua(a))}function Wa(a){if(!a)return!1;var b=a._valueTracker;if(!b)return!0;var c=b.getValue();var d=\"\";a&&(d=Ta(a)?a.checked?\"true\":\"false\":a.value);a=d;return a!==c?(b.setValue(a),!0):!1}function Xa(a){a=a||(\"undefined\"!==typeof document?document:void 0);if(\"undefined\"===typeof a)return null;try{return a.activeElement||a.body}catch(b){return a.body}}\nfunction Ya(a,b){var c=b.checked;return A({},b,{defaultChecked:void 0,defaultValue:void 0,value:void 0,checked:null!=c?c:a._wrapperState.initialChecked})}function Za(a,b){var c=null==b.defaultValue?\"\":b.defaultValue,d=null!=b.checked?b.checked:b.defaultChecked;c=Sa(null!=b.value?b.value:c);a._wrapperState={initialChecked:d,initialValue:c,controlled:\"checkbox\"===b.type||\"radio\"===b.type?null!=b.checked:null!=b.value}}function ab(a,b){b=b.checked;null!=b&&ta(a,\"checked\",b,!1)}\nfunction bb(a,b){ab(a,b);var c=Sa(b.value),d=b.type;if(null!=c)if(\"number\"===d){if(0===c&&\"\"===a.value||a.value!=c)a.value=\"\"+c}else a.value!==\"\"+c&&(a.value=\"\"+c);else if(\"submit\"===d||\"reset\"===d){a.removeAttribute(\"value\");return}b.hasOwnProperty(\"value\")?cb(a,b.type,c):b.hasOwnProperty(\"defaultValue\")&&cb(a,b.type,Sa(b.defaultValue));null==b.checked&&null!=b.defaultChecked&&(a.defaultChecked=!!b.defaultChecked)}\nfunction db(a,b,c){if(b.hasOwnProperty(\"value\")||b.hasOwnProperty(\"defaultValue\")){var d=b.type;if(!(\"submit\"!==d&&\"reset\"!==d||void 0!==b.value&&null!==b.value))return;b=\"\"+a._wrapperState.initialValue;c||b===a.value||(a.value=b);a.defaultValue=b}c=a.name;\"\"!==c&&(a.name=\"\");a.defaultChecked=!!a._wrapperState.initialChecked;\"\"!==c&&(a.name=c)}\nfunction cb(a,b,c){if(\"number\"!==b||Xa(a.ownerDocument)!==a)null==c?a.defaultValue=\"\"+a._wrapperState.initialValue:a.defaultValue!==\"\"+c&&(a.defaultValue=\"\"+c)}var eb=Array.isArray;\nfunction fb(a,b,c,d){a=a.options;if(b){b={};for(var e=0;e\"+b.valueOf().toString()+\"\";for(b=mb.firstChild;a.firstChild;)a.removeChild(a.firstChild);for(;b.firstChild;)a.appendChild(b.firstChild)}});\nfunction ob(a,b){if(b){var c=a.firstChild;if(c&&c===a.lastChild&&3===c.nodeType){c.nodeValue=b;return}}a.textContent=b}\nvar pb={animationIterationCount:!0,aspectRatio:!0,borderImageOutset:!0,borderImageSlice:!0,borderImageWidth:!0,boxFlex:!0,boxFlexGroup:!0,boxOrdinalGroup:!0,columnCount:!0,columns:!0,flex:!0,flexGrow:!0,flexPositive:!0,flexShrink:!0,flexNegative:!0,flexOrder:!0,gridArea:!0,gridRow:!0,gridRowEnd:!0,gridRowSpan:!0,gridRowStart:!0,gridColumn:!0,gridColumnEnd:!0,gridColumnSpan:!0,gridColumnStart:!0,fontWeight:!0,lineClamp:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,tabSize:!0,widows:!0,zIndex:!0,\nzoom:!0,fillOpacity:!0,floodOpacity:!0,stopOpacity:!0,strokeDasharray:!0,strokeDashoffset:!0,strokeMiterlimit:!0,strokeOpacity:!0,strokeWidth:!0},qb=[\"Webkit\",\"ms\",\"Moz\",\"O\"];Object.keys(pb).forEach(function(a){qb.forEach(function(b){b=b+a.charAt(0).toUpperCase()+a.substring(1);pb[b]=pb[a]})});function rb(a,b,c){return null==b||\"boolean\"===typeof b||\"\"===b?\"\":c||\"number\"!==typeof b||0===b||pb.hasOwnProperty(a)&&pb[a]?(\"\"+b).trim():b+\"px\"}\nfunction sb(a,b){a=a.style;for(var c in b)if(b.hasOwnProperty(c)){var d=0===c.indexOf(\"--\"),e=rb(c,b[c],d);\"float\"===c&&(c=\"cssFloat\");d?a.setProperty(c,e):a[c]=e}}var tb=A({menuitem:!0},{area:!0,base:!0,br:!0,col:!0,embed:!0,hr:!0,img:!0,input:!0,keygen:!0,link:!0,meta:!0,param:!0,source:!0,track:!0,wbr:!0});\nfunction ub(a,b){if(b){if(tb[a]&&(null!=b.children||null!=b.dangerouslySetInnerHTML))throw Error(p(137,a));if(null!=b.dangerouslySetInnerHTML){if(null!=b.children)throw Error(p(60));if(\"object\"!==typeof b.dangerouslySetInnerHTML||!(\"__html\"in b.dangerouslySetInnerHTML))throw Error(p(61));}if(null!=b.style&&\"object\"!==typeof b.style)throw Error(p(62));}}\nfunction vb(a,b){if(-1===a.indexOf(\"-\"))return\"string\"===typeof b.is;switch(a){case \"annotation-xml\":case \"color-profile\":case \"font-face\":case \"font-face-src\":case \"font-face-uri\":case \"font-face-format\":case \"font-face-name\":case \"missing-glyph\":return!1;default:return!0}}var wb=null;function xb(a){a=a.target||a.srcElement||window;a.correspondingUseElement&&(a=a.correspondingUseElement);return 3===a.nodeType?a.parentNode:a}var yb=null,zb=null,Ab=null;\nfunction Bb(a){if(a=Cb(a)){if(\"function\"!==typeof yb)throw Error(p(280));var b=a.stateNode;b&&(b=Db(b),yb(a.stateNode,a.type,b))}}function Eb(a){zb?Ab?Ab.push(a):Ab=[a]:zb=a}function Fb(){if(zb){var a=zb,b=Ab;Ab=zb=null;Bb(a);if(b)for(a=0;a>>=0;return 0===a?32:31-(pc(a)/qc|0)|0}var rc=64,sc=4194304;\nfunction tc(a){switch(a&-a){case 1:return 1;case 2:return 2;case 4:return 4;case 8:return 8;case 16:return 16;case 32:return 32;case 64:case 128:case 256:case 512:case 1024:case 2048:case 4096:case 8192:case 16384:case 32768:case 65536:case 131072:case 262144:case 524288:case 1048576:case 2097152:return a&4194240;case 4194304:case 8388608:case 16777216:case 33554432:case 67108864:return a&130023424;case 134217728:return 134217728;case 268435456:return 268435456;case 536870912:return 536870912;case 1073741824:return 1073741824;\ndefault:return a}}function uc(a,b){var c=a.pendingLanes;if(0===c)return 0;var d=0,e=a.suspendedLanes,f=a.pingedLanes,g=c&268435455;if(0!==g){var h=g&~e;0!==h?d=tc(h):(f&=g,0!==f&&(d=tc(f)))}else g=c&~e,0!==g?d=tc(g):0!==f&&(d=tc(f));if(0===d)return 0;if(0!==b&&b!==d&&0===(b&e)&&(e=d&-d,f=b&-b,e>=f||16===e&&0!==(f&4194240)))return b;0!==(d&4)&&(d|=c&16);b=a.entangledLanes;if(0!==b)for(a=a.entanglements,b&=d;0c;c++)b.push(a);return b}\nfunction Ac(a,b,c){a.pendingLanes|=b;536870912!==b&&(a.suspendedLanes=0,a.pingedLanes=0);a=a.eventTimes;b=31-oc(b);a[b]=c}function Bc(a,b){var c=a.pendingLanes&~b;a.pendingLanes=b;a.suspendedLanes=0;a.pingedLanes=0;a.expiredLanes&=b;a.mutableReadLanes&=b;a.entangledLanes&=b;b=a.entanglements;var d=a.eventTimes;for(a=a.expirationTimes;0=be),ee=String.fromCharCode(32),fe=!1;\nfunction ge(a,b){switch(a){case \"keyup\":return-1!==$d.indexOf(b.keyCode);case \"keydown\":return 229!==b.keyCode;case \"keypress\":case \"mousedown\":case \"focusout\":return!0;default:return!1}}function he(a){a=a.detail;return\"object\"===typeof a&&\"data\"in a?a.data:null}var ie=!1;function je(a,b){switch(a){case \"compositionend\":return he(b);case \"keypress\":if(32!==b.which)return null;fe=!0;return ee;case \"textInput\":return a=b.data,a===ee&&fe?null:a;default:return null}}\nfunction ke(a,b){if(ie)return\"compositionend\"===a||!ae&&ge(a,b)?(a=nd(),md=ld=kd=null,ie=!1,a):null;switch(a){case \"paste\":return null;case \"keypress\":if(!(b.ctrlKey||b.altKey||b.metaKey)||b.ctrlKey&&b.altKey){if(b.char&&1=b)return{node:c,offset:b-a};a=d}a:{for(;c;){if(c.nextSibling){c=c.nextSibling;break a}c=c.parentNode}c=void 0}c=Je(c)}}function Le(a,b){return a&&b?a===b?!0:a&&3===a.nodeType?!1:b&&3===b.nodeType?Le(a,b.parentNode):\"contains\"in a?a.contains(b):a.compareDocumentPosition?!!(a.compareDocumentPosition(b)&16):!1:!1}\nfunction Me(){for(var a=window,b=Xa();b instanceof a.HTMLIFrameElement;){try{var c=\"string\"===typeof b.contentWindow.location.href}catch(d){c=!1}if(c)a=b.contentWindow;else break;b=Xa(a.document)}return b}function Ne(a){var b=a&&a.nodeName&&a.nodeName.toLowerCase();return b&&(\"input\"===b&&(\"text\"===a.type||\"search\"===a.type||\"tel\"===a.type||\"url\"===a.type||\"password\"===a.type)||\"textarea\"===b||\"true\"===a.contentEditable)}\nfunction Oe(a){var b=Me(),c=a.focusedElem,d=a.selectionRange;if(b!==c&&c&&c.ownerDocument&&Le(c.ownerDocument.documentElement,c)){if(null!==d&&Ne(c))if(b=d.start,a=d.end,void 0===a&&(a=b),\"selectionStart\"in c)c.selectionStart=b,c.selectionEnd=Math.min(a,c.value.length);else if(a=(b=c.ownerDocument||document)&&b.defaultView||window,a.getSelection){a=a.getSelection();var e=c.textContent.length,f=Math.min(d.start,e);d=void 0===d.end?f:Math.min(d.end,e);!a.extend&&f>d&&(e=d,d=f,f=e);e=Ke(c,f);var g=Ke(c,\nd);e&&g&&(1!==a.rangeCount||a.anchorNode!==e.node||a.anchorOffset!==e.offset||a.focusNode!==g.node||a.focusOffset!==g.offset)&&(b=b.createRange(),b.setStart(e.node,e.offset),a.removeAllRanges(),f>d?(a.addRange(b),a.extend(g.node,g.offset)):(b.setEnd(g.node,g.offset),a.addRange(b)))}b=[];for(a=c;a=a.parentNode;)1===a.nodeType&&b.push({element:a,left:a.scrollLeft,top:a.scrollTop});\"function\"===typeof c.focus&&c.focus();for(c=0;c=document.documentMode,Qe=null,Re=null,Se=null,Te=!1;\nfunction Ue(a,b,c){var d=c.window===c?c.document:9===c.nodeType?c:c.ownerDocument;Te||null==Qe||Qe!==Xa(d)||(d=Qe,\"selectionStart\"in d&&Ne(d)?d={start:d.selectionStart,end:d.selectionEnd}:(d=(d.ownerDocument&&d.ownerDocument.defaultView||window).getSelection(),d={anchorNode:d.anchorNode,anchorOffset:d.anchorOffset,focusNode:d.focusNode,focusOffset:d.focusOffset}),Se&&Ie(Se,d)||(Se=d,d=oe(Re,\"onSelect\"),0Tf||(a.current=Sf[Tf],Sf[Tf]=null,Tf--)}function G(a,b){Tf++;Sf[Tf]=a.current;a.current=b}var Vf={},H=Uf(Vf),Wf=Uf(!1),Xf=Vf;function Yf(a,b){var c=a.type.contextTypes;if(!c)return Vf;var d=a.stateNode;if(d&&d.__reactInternalMemoizedUnmaskedChildContext===b)return d.__reactInternalMemoizedMaskedChildContext;var e={},f;for(f in c)e[f]=b[f];d&&(a=a.stateNode,a.__reactInternalMemoizedUnmaskedChildContext=b,a.__reactInternalMemoizedMaskedChildContext=e);return e}\nfunction Zf(a){a=a.childContextTypes;return null!==a&&void 0!==a}function $f(){E(Wf);E(H)}function ag(a,b,c){if(H.current!==Vf)throw Error(p(168));G(H,b);G(Wf,c)}function bg(a,b,c){var d=a.stateNode;b=b.childContextTypes;if(\"function\"!==typeof d.getChildContext)return c;d=d.getChildContext();for(var e in d)if(!(e in b))throw Error(p(108,Ra(a)||\"Unknown\",e));return A({},c,d)}\nfunction cg(a){a=(a=a.stateNode)&&a.__reactInternalMemoizedMergedChildContext||Vf;Xf=H.current;G(H,a);G(Wf,Wf.current);return!0}function dg(a,b,c){var d=a.stateNode;if(!d)throw Error(p(169));c?(a=bg(a,b,Xf),d.__reactInternalMemoizedMergedChildContext=a,E(Wf),E(H),G(H,a)):E(Wf);G(Wf,c)}var eg=null,fg=!1,gg=!1;function hg(a){null===eg?eg=[a]:eg.push(a)}function ig(a){fg=!0;hg(a)}\nfunction jg(){if(!gg&&null!==eg){gg=!0;var a=0,b=C;try{var c=eg;for(C=1;a>=g;e-=g;rg=1<<32-oc(b)+e|c<w?(x=u,u=null):x=u.sibling;var n=r(e,u,h[w],k);if(null===n){null===u&&(u=x);break}a&&u&&null===n.alternate&&b(e,u);g=f(n,g,w);null===m?l=n:m.sibling=n;m=n;u=x}if(w===h.length)return c(e,u),I&&tg(e,w),l;if(null===u){for(;ww?(x=m,m=null):x=m.sibling;var t=r(e,m,n.value,k);if(null===t){null===m&&(m=x);break}a&&m&&null===t.alternate&&b(e,m);g=f(t,g,w);null===u?l=t:u.sibling=t;u=t;m=x}if(n.done)return c(e,\nm),I&&tg(e,w),l;if(null===m){for(;!n.done;w++,n=h.next())n=q(e,n.value,k),null!==n&&(g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);I&&tg(e,w);return l}for(m=d(e,m);!n.done;w++,n=h.next())n=y(m,e,w,n.value,k),null!==n&&(a&&null!==n.alternate&&m.delete(null===n.key?w:n.key),g=f(n,g,w),null===u?l=n:u.sibling=n,u=n);a&&m.forEach(function(a){return b(e,a)});I&&tg(e,w);return l}function J(a,d,f,h){\"object\"===typeof f&&null!==f&&f.type===ya&&null===f.key&&(f=f.props.children);if(\"object\"===typeof f&&null!==f){switch(f.$$typeof){case va:a:{for(var k=\nf.key,l=d;null!==l;){if(l.key===k){k=f.type;if(k===ya){if(7===l.tag){c(a,l.sibling);d=e(l,f.props.children);d.return=a;a=d;break a}}else if(l.elementType===k||\"object\"===typeof k&&null!==k&&k.$$typeof===Ha&&uh(k)===l.type){c(a,l.sibling);d=e(l,f.props);d.ref=sh(a,l,f);d.return=a;a=d;break a}c(a,l);break}else b(a,l);l=l.sibling}f.type===ya?(d=Ah(f.props.children,a.mode,h,f.key),d.return=a,a=d):(h=yh(f.type,f.key,f.props,null,a.mode,h),h.ref=sh(a,d,f),h.return=a,a=h)}return g(a);case wa:a:{for(l=f.key;null!==\nd;){if(d.key===l)if(4===d.tag&&d.stateNode.containerInfo===f.containerInfo&&d.stateNode.implementation===f.implementation){c(a,d.sibling);d=e(d,f.children||[]);d.return=a;a=d;break a}else{c(a,d);break}else b(a,d);d=d.sibling}d=zh(f,a.mode,h);d.return=a;a=d}return g(a);case Ha:return l=f._init,J(a,d,l(f._payload),h)}if(eb(f))return n(a,d,f,h);if(Ka(f))return t(a,d,f,h);th(a,f)}return\"string\"===typeof f&&\"\"!==f||\"number\"===typeof f?(f=\"\"+f,null!==d&&6===d.tag?(c(a,d.sibling),d=e(d,f),d.return=a,a=d):\n(c(a,d),d=xh(f,a.mode,h),d.return=a,a=d),g(a)):c(a,d)}return J}var Bh=vh(!0),Ch=vh(!1),Dh={},Eh=Uf(Dh),Fh=Uf(Dh),Gh=Uf(Dh);function Hh(a){if(a===Dh)throw Error(p(174));return a}function Ih(a,b){G(Gh,b);G(Fh,a);G(Eh,Dh);a=b.nodeType;switch(a){case 9:case 11:b=(b=b.documentElement)?b.namespaceURI:lb(null,\"\");break;default:a=8===a?b.parentNode:b,b=a.namespaceURI||null,a=a.tagName,b=lb(b,a)}E(Eh);G(Eh,b)}function Jh(){E(Eh);E(Fh);E(Gh)}\nfunction Kh(a){Hh(Gh.current);var b=Hh(Eh.current);var c=lb(b,a.type);b!==c&&(G(Fh,a),G(Eh,c))}function Lh(a){Fh.current===a&&(E(Eh),E(Fh))}var M=Uf(0);\nfunction Mh(a){for(var b=a;null!==b;){if(13===b.tag){var c=b.memoizedState;if(null!==c&&(c=c.dehydrated,null===c||\"$?\"===c.data||\"$!\"===c.data))return b}else if(19===b.tag&&void 0!==b.memoizedProps.revealOrder){if(0!==(b.flags&128))return b}else if(null!==b.child){b.child.return=b;b=b.child;continue}if(b===a)break;for(;null===b.sibling;){if(null===b.return||b.return===a)return null;b=b.return}b.sibling.return=b.return;b=b.sibling}return null}var Nh=[];\nfunction Oh(){for(var a=0;ac?c:4;a(!0);var d=Qh.transition;Qh.transition={};try{a(!1),b()}finally{C=c,Qh.transition=d}}function Fi(){return di().memoizedState}\nfunction Gi(a,b,c){var d=lh(a);c={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,c);else if(c=Yg(a,b,c,d),null!==c){var e=L();mh(c,a,d,e);Ji(c,b,d)}}\nfunction ri(a,b,c){var d=lh(a),e={lane:d,action:c,hasEagerState:!1,eagerState:null,next:null};if(Hi(a))Ii(b,e);else{var f=a.alternate;if(0===a.lanes&&(null===f||0===f.lanes)&&(f=b.lastRenderedReducer,null!==f))try{var g=b.lastRenderedState,h=f(g,c);e.hasEagerState=!0;e.eagerState=h;if(He(h,g)){var k=b.interleaved;null===k?(e.next=e,Xg(b)):(e.next=k.next,k.next=e);b.interleaved=e;return}}catch(l){}finally{}c=Yg(a,b,e,d);null!==c&&(e=L(),mh(c,a,d,e),Ji(c,b,d))}}\nfunction Hi(a){var b=a.alternate;return a===N||null!==b&&b===N}function Ii(a,b){Th=Sh=!0;var c=a.pending;null===c?b.next=b:(b.next=c.next,c.next=b);a.pending=b}function Ji(a,b,c){if(0!==(c&4194240)){var d=b.lanes;d&=a.pendingLanes;c|=d;b.lanes=c;Cc(a,c)}}\nvar ai={readContext:Vg,useCallback:Q,useContext:Q,useEffect:Q,useImperativeHandle:Q,useInsertionEffect:Q,useLayoutEffect:Q,useMemo:Q,useReducer:Q,useRef:Q,useState:Q,useDebugValue:Q,useDeferredValue:Q,useTransition:Q,useMutableSource:Q,useSyncExternalStore:Q,useId:Q,unstable_isNewReconciler:!1},Yh={readContext:Vg,useCallback:function(a,b){ci().memoizedState=[a,void 0===b?null:b];return a},useContext:Vg,useEffect:vi,useImperativeHandle:function(a,b,c){c=null!==c&&void 0!==c?c.concat([a]):null;return ti(4194308,\n4,yi.bind(null,b,a),c)},useLayoutEffect:function(a,b){return ti(4194308,4,a,b)},useInsertionEffect:function(a,b){return ti(4,2,a,b)},useMemo:function(a,b){var c=ci();b=void 0===b?null:b;a=a();c.memoizedState=[a,b];return a},useReducer:function(a,b,c){var d=ci();b=void 0!==c?c(b):b;d.memoizedState=d.baseState=b;a={pending:null,interleaved:null,lanes:0,dispatch:null,lastRenderedReducer:a,lastRenderedState:b};d.queue=a;a=a.dispatch=Gi.bind(null,N,a);return[d.memoizedState,a]},useRef:function(a){var b=\nci();a={current:a};return b.memoizedState=a},useState:qi,useDebugValue:Ai,useDeferredValue:function(a){return ci().memoizedState=a},useTransition:function(){var a=qi(!1),b=a[0];a=Ei.bind(null,a[1]);ci().memoizedState=a;return[b,a]},useMutableSource:function(){},useSyncExternalStore:function(a,b,c){var d=N,e=ci();if(I){if(void 0===c)throw Error(p(407));c=c()}else{c=b();if(null===R)throw Error(p(349));0!==(Rh&30)||ni(d,b,c)}e.memoizedState=c;var f={value:c,getSnapshot:b};e.queue=f;vi(ki.bind(null,d,\nf,a),[a]);d.flags|=2048;li(9,mi.bind(null,d,f,c,b),void 0,null);return c},useId:function(){var a=ci(),b=R.identifierPrefix;if(I){var c=sg;var d=rg;c=(d&~(1<<32-oc(d)-1)).toString(32)+c;b=\":\"+b+\"R\"+c;c=Uh++;0\\x3c/script>\",a=a.removeChild(a.firstChild)):\n\"string\"===typeof d.is?a=g.createElement(c,{is:d.is}):(a=g.createElement(c),\"select\"===c&&(g=a,d.multiple?g.multiple=!0:d.size&&(g.size=d.size))):a=g.createElementNS(a,c);a[Of]=b;a[Pf]=d;Aj(a,b,!1,!1);b.stateNode=a;a:{g=vb(c,d);switch(c){case \"dialog\":D(\"cancel\",a);D(\"close\",a);e=d;break;case \"iframe\":case \"object\":case \"embed\":D(\"load\",a);e=d;break;case \"video\":case \"audio\":for(e=0;eHj&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304)}else{if(!d)if(a=Mh(g),null!==a){if(b.flags|=128,d=!0,c=a.updateQueue,null!==c&&(b.updateQueue=c,b.flags|=4),Ej(f,!0),null===f.tail&&\"hidden\"===f.tailMode&&!g.alternate&&!I)return S(b),null}else 2*B()-f.renderingStartTime>Hj&&1073741824!==c&&(b.flags|=128,d=!0,Ej(f,!1),b.lanes=4194304);f.isBackwards?(g.sibling=b.child,b.child=g):(c=f.last,null!==c?c.sibling=g:b.child=g,f.last=g)}if(null!==f.tail)return b=f.tail,f.rendering=\nb,f.tail=b.sibling,f.renderingStartTime=B(),b.sibling=null,c=M.current,G(M,d?c&1|2:c&1),b;S(b);return null;case 22:case 23:return Ij(),d=null!==b.memoizedState,null!==a&&null!==a.memoizedState!==d&&(b.flags|=8192),d&&0!==(b.mode&1)?0!==(gj&1073741824)&&(S(b),b.subtreeFlags&6&&(b.flags|=8192)):S(b),null;case 24:return null;case 25:return null}throw Error(p(156,b.tag));}\nfunction Jj(a,b){wg(b);switch(b.tag){case 1:return Zf(b.type)&&$f(),a=b.flags,a&65536?(b.flags=a&-65537|128,b):null;case 3:return Jh(),E(Wf),E(H),Oh(),a=b.flags,0!==(a&65536)&&0===(a&128)?(b.flags=a&-65537|128,b):null;case 5:return Lh(b),null;case 13:E(M);a=b.memoizedState;if(null!==a&&null!==a.dehydrated){if(null===b.alternate)throw Error(p(340));Ig()}a=b.flags;return a&65536?(b.flags=a&-65537|128,b):null;case 19:return E(M),null;case 4:return Jh(),null;case 10:return Rg(b.type._context),null;case 22:case 23:return Ij(),\nnull;case 24:return null;default:return null}}var Kj=!1,U=!1,Lj=\"function\"===typeof WeakSet?WeakSet:Set,V=null;function Mj(a,b){var c=a.ref;if(null!==c)if(\"function\"===typeof c)try{c(null)}catch(d){W(a,b,d)}else c.current=null}function Nj(a,b,c){try{c()}catch(d){W(a,b,d)}}var Oj=!1;\nfunction Pj(a,b){Cf=dd;a=Me();if(Ne(a)){if(\"selectionStart\"in a)var c={start:a.selectionStart,end:a.selectionEnd};else a:{c=(c=a.ownerDocument)&&c.defaultView||window;var d=c.getSelection&&c.getSelection();if(d&&0!==d.rangeCount){c=d.anchorNode;var e=d.anchorOffset,f=d.focusNode;d=d.focusOffset;try{c.nodeType,f.nodeType}catch(F){c=null;break a}var g=0,h=-1,k=-1,l=0,m=0,q=a,r=null;b:for(;;){for(var y;;){q!==c||0!==e&&3!==q.nodeType||(h=g+e);q!==f||0!==d&&3!==q.nodeType||(k=g+d);3===q.nodeType&&(g+=\nq.nodeValue.length);if(null===(y=q.firstChild))break;r=q;q=y}for(;;){if(q===a)break b;r===c&&++l===e&&(h=g);r===f&&++m===d&&(k=g);if(null!==(y=q.nextSibling))break;q=r;r=q.parentNode}q=y}c=-1===h||-1===k?null:{start:h,end:k}}else c=null}c=c||{start:0,end:0}}else c=null;Df={focusedElem:a,selectionRange:c};dd=!1;for(V=b;null!==V;)if(b=V,a=b.child,0!==(b.subtreeFlags&1028)&&null!==a)a.return=b,V=a;else for(;null!==V;){b=V;try{var n=b.alternate;if(0!==(b.flags&1024))switch(b.tag){case 0:case 11:case 15:break;\ncase 1:if(null!==n){var t=n.memoizedProps,J=n.memoizedState,x=b.stateNode,w=x.getSnapshotBeforeUpdate(b.elementType===b.type?t:Lg(b.type,t),J);x.__reactInternalSnapshotBeforeUpdate=w}break;case 3:var u=b.stateNode.containerInfo;1===u.nodeType?u.textContent=\"\":9===u.nodeType&&u.documentElement&&u.removeChild(u.documentElement);break;case 5:case 6:case 4:case 17:break;default:throw Error(p(163));}}catch(F){W(b,b.return,F)}a=b.sibling;if(null!==a){a.return=b.return;V=a;break}V=b.return}n=Oj;Oj=!1;return n}\nfunction Qj(a,b,c){var d=b.updateQueue;d=null!==d?d.lastEffect:null;if(null!==d){var e=d=d.next;do{if((e.tag&a)===a){var f=e.destroy;e.destroy=void 0;void 0!==f&&Nj(b,c,f)}e=e.next}while(e!==d)}}function Rj(a,b){b=b.updateQueue;b=null!==b?b.lastEffect:null;if(null!==b){var c=b=b.next;do{if((c.tag&a)===a){var d=c.create;c.destroy=d()}c=c.next}while(c!==b)}}function Sj(a){var b=a.ref;if(null!==b){var c=a.stateNode;switch(a.tag){case 5:a=c;break;default:a=c}\"function\"===typeof b?b(a):b.current=a}}\nfunction Tj(a){var b=a.alternate;null!==b&&(a.alternate=null,Tj(b));a.child=null;a.deletions=null;a.sibling=null;5===a.tag&&(b=a.stateNode,null!==b&&(delete b[Of],delete b[Pf],delete b[of],delete b[Qf],delete b[Rf]));a.stateNode=null;a.return=null;a.dependencies=null;a.memoizedProps=null;a.memoizedState=null;a.pendingProps=null;a.stateNode=null;a.updateQueue=null}function Uj(a){return 5===a.tag||3===a.tag||4===a.tag}\nfunction Vj(a){a:for(;;){for(;null===a.sibling;){if(null===a.return||Uj(a.return))return null;a=a.return}a.sibling.return=a.return;for(a=a.sibling;5!==a.tag&&6!==a.tag&&18!==a.tag;){if(a.flags&2)continue a;if(null===a.child||4===a.tag)continue a;else a.child.return=a,a=a.child}if(!(a.flags&2))return a.stateNode}}\nfunction Wj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?8===c.nodeType?c.parentNode.insertBefore(a,b):c.insertBefore(a,b):(8===c.nodeType?(b=c.parentNode,b.insertBefore(a,c)):(b=c,b.appendChild(a)),c=c._reactRootContainer,null!==c&&void 0!==c||null!==b.onclick||(b.onclick=Bf));else if(4!==d&&(a=a.child,null!==a))for(Wj(a,b,c),a=a.sibling;null!==a;)Wj(a,b,c),a=a.sibling}\nfunction Xj(a,b,c){var d=a.tag;if(5===d||6===d)a=a.stateNode,b?c.insertBefore(a,b):c.appendChild(a);else if(4!==d&&(a=a.child,null!==a))for(Xj(a,b,c),a=a.sibling;null!==a;)Xj(a,b,c),a=a.sibling}var X=null,Yj=!1;function Zj(a,b,c){for(c=c.child;null!==c;)ak(a,b,c),c=c.sibling}\nfunction ak(a,b,c){if(lc&&\"function\"===typeof lc.onCommitFiberUnmount)try{lc.onCommitFiberUnmount(kc,c)}catch(h){}switch(c.tag){case 5:U||Mj(c,b);case 6:var d=X,e=Yj;X=null;Zj(a,b,c);X=d;Yj=e;null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?a.parentNode.removeChild(c):a.removeChild(c)):X.removeChild(c.stateNode));break;case 18:null!==X&&(Yj?(a=X,c=c.stateNode,8===a.nodeType?Kf(a.parentNode,c):1===a.nodeType&&Kf(a,c),bd(a)):Kf(X,c.stateNode));break;case 4:d=X;e=Yj;X=c.stateNode.containerInfo;Yj=!0;\nZj(a,b,c);X=d;Yj=e;break;case 0:case 11:case 14:case 15:if(!U&&(d=c.updateQueue,null!==d&&(d=d.lastEffect,null!==d))){e=d=d.next;do{var f=e,g=f.destroy;f=f.tag;void 0!==g&&(0!==(f&2)?Nj(c,b,g):0!==(f&4)&&Nj(c,b,g));e=e.next}while(e!==d)}Zj(a,b,c);break;case 1:if(!U&&(Mj(c,b),d=c.stateNode,\"function\"===typeof d.componentWillUnmount))try{d.props=c.memoizedProps,d.state=c.memoizedState,d.componentWillUnmount()}catch(h){W(c,b,h)}Zj(a,b,c);break;case 21:Zj(a,b,c);break;case 22:c.mode&1?(U=(d=U)||null!==\nc.memoizedState,Zj(a,b,c),U=d):Zj(a,b,c);break;default:Zj(a,b,c)}}function bk(a){var b=a.updateQueue;if(null!==b){a.updateQueue=null;var c=a.stateNode;null===c&&(c=a.stateNode=new Lj);b.forEach(function(b){var d=ck.bind(null,a,b);c.has(b)||(c.add(b),b.then(d,d))})}}\nfunction dk(a,b){var c=b.deletions;if(null!==c)for(var d=0;de&&(e=g);d&=~f}d=e;d=B()-d;d=(120>d?120:480>d?480:1080>d?1080:1920>d?1920:3E3>d?3E3:4320>d?4320:1960*mk(d/1960))-d;if(10a?16:a;if(null===xk)var d=!1;else{a=xk;xk=null;yk=0;if(0!==(K&6))throw Error(p(331));var e=K;K|=4;for(V=a.current;null!==V;){var f=V,g=f.child;if(0!==(V.flags&16)){var h=f.deletions;if(null!==h){for(var k=0;kB()-gk?Lk(a,0):sk|=c);Ek(a,b)}function Zk(a,b){0===b&&(0===(a.mode&1)?b=1:(b=sc,sc<<=1,0===(sc&130023424)&&(sc=4194304)));var c=L();a=Zg(a,b);null!==a&&(Ac(a,b,c),Ek(a,c))}function vj(a){var b=a.memoizedState,c=0;null!==b&&(c=b.retryLane);Zk(a,c)}\nfunction ck(a,b){var c=0;switch(a.tag){case 13:var d=a.stateNode;var e=a.memoizedState;null!==e&&(c=e.retryLane);break;case 19:d=a.stateNode;break;default:throw Error(p(314));}null!==d&&d.delete(b);Zk(a,c)}var Wk;\nWk=function(a,b,c){if(null!==a)if(a.memoizedProps!==b.pendingProps||Wf.current)Ug=!0;else{if(0===(a.lanes&c)&&0===(b.flags&128))return Ug=!1,zj(a,b,c);Ug=0!==(a.flags&131072)?!0:!1}else Ug=!1,I&&0!==(b.flags&1048576)&&ug(b,ng,b.index);b.lanes=0;switch(b.tag){case 2:var d=b.type;jj(a,b);a=b.pendingProps;var e=Yf(b,H.current);Tg(b,c);e=Xh(null,b,d,a,e,c);var f=bi();b.flags|=1;\"object\"===typeof e&&null!==e&&\"function\"===typeof e.render&&void 0===e.$$typeof?(b.tag=1,b.memoizedState=null,b.updateQueue=\nnull,Zf(d)?(f=!0,cg(b)):f=!1,b.memoizedState=null!==e.state&&void 0!==e.state?e.state:null,ah(b),e.updater=nh,b.stateNode=e,e._reactInternals=b,rh(b,d,a,c),b=kj(null,b,d,!0,f,c)):(b.tag=0,I&&f&&vg(b),Yi(null,b,e,c),b=b.child);return b;case 16:d=b.elementType;a:{jj(a,b);a=b.pendingProps;e=d._init;d=e(d._payload);b.type=d;e=b.tag=$k(d);a=Lg(d,a);switch(e){case 0:b=dj(null,b,d,a,c);break a;case 1:b=ij(null,b,d,a,c);break a;case 11:b=Zi(null,b,d,a,c);break a;case 14:b=aj(null,b,d,Lg(d.type,a),c);break a}throw Error(p(306,\nd,\"\"));}return b;case 0:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),dj(a,b,d,e,c);case 1:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),ij(a,b,d,e,c);case 3:a:{lj(b);if(null===a)throw Error(p(387));d=b.pendingProps;f=b.memoizedState;e=f.element;bh(a,b);gh(b,d,null,c);var g=b.memoizedState;d=g.element;if(f.isDehydrated)if(f={element:d,isDehydrated:!1,cache:g.cache,pendingSuspenseBoundaries:g.pendingSuspenseBoundaries,transitions:g.transitions},b.updateQueue.baseState=\nf,b.memoizedState=f,b.flags&256){e=Ki(Error(p(423)),b);b=mj(a,b,d,c,e);break a}else if(d!==e){e=Ki(Error(p(424)),b);b=mj(a,b,d,c,e);break a}else for(yg=Lf(b.stateNode.containerInfo.firstChild),xg=b,I=!0,zg=null,c=Ch(b,null,d,c),b.child=c;c;)c.flags=c.flags&-3|4096,c=c.sibling;else{Ig();if(d===e){b=$i(a,b,c);break a}Yi(a,b,d,c)}b=b.child}return b;case 5:return Kh(b),null===a&&Eg(b),d=b.type,e=b.pendingProps,f=null!==a?a.memoizedProps:null,g=e.children,Ef(d,e)?g=null:null!==f&&Ef(d,f)&&(b.flags|=32),\nhj(a,b),Yi(a,b,g,c),b.child;case 6:return null===a&&Eg(b),null;case 13:return pj(a,b,c);case 4:return Ih(b,b.stateNode.containerInfo),d=b.pendingProps,null===a?b.child=Bh(b,null,d,c):Yi(a,b,d,c),b.child;case 11:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),Zi(a,b,d,e,c);case 7:return Yi(a,b,b.pendingProps,c),b.child;case 8:return Yi(a,b,b.pendingProps.children,c),b.child;case 12:return Yi(a,b,b.pendingProps.children,c),b.child;case 10:a:{d=b.type._context;e=b.pendingProps;f=b.memoizedProps;\ng=e.value;G(Mg,d._currentValue);d._currentValue=g;if(null!==f)if(He(f.value,g)){if(f.children===e.children&&!Wf.current){b=$i(a,b,c);break a}}else for(f=b.child,null!==f&&(f.return=b);null!==f;){var h=f.dependencies;if(null!==h){g=f.child;for(var k=h.firstContext;null!==k;){if(k.context===d){if(1===f.tag){k=ch(-1,c&-c);k.tag=2;var l=f.updateQueue;if(null!==l){l=l.shared;var m=l.pending;null===m?k.next=k:(k.next=m.next,m.next=k);l.pending=k}}f.lanes|=c;k=f.alternate;null!==k&&(k.lanes|=c);Sg(f.return,\nc,b);h.lanes|=c;break}k=k.next}}else if(10===f.tag)g=f.type===b.type?null:f.child;else if(18===f.tag){g=f.return;if(null===g)throw Error(p(341));g.lanes|=c;h=g.alternate;null!==h&&(h.lanes|=c);Sg(g,c,b);g=f.sibling}else g=f.child;if(null!==g)g.return=f;else for(g=f;null!==g;){if(g===b){g=null;break}f=g.sibling;if(null!==f){f.return=g.return;g=f;break}g=g.return}f=g}Yi(a,b,e.children,c);b=b.child}return b;case 9:return e=b.type,d=b.pendingProps.children,Tg(b,c),e=Vg(e),d=d(e),b.flags|=1,Yi(a,b,d,c),\nb.child;case 14:return d=b.type,e=Lg(d,b.pendingProps),e=Lg(d.type,e),aj(a,b,d,e,c);case 15:return cj(a,b,b.type,b.pendingProps,c);case 17:return d=b.type,e=b.pendingProps,e=b.elementType===d?e:Lg(d,e),jj(a,b),b.tag=1,Zf(d)?(a=!0,cg(b)):a=!1,Tg(b,c),ph(b,d,e),rh(b,d,e,c),kj(null,b,d,!0,a,c);case 19:return yj(a,b,c);case 22:return ej(a,b,c)}throw Error(p(156,b.tag));};function Gk(a,b){return ac(a,b)}\nfunction al(a,b,c,d){this.tag=a;this.key=c;this.sibling=this.child=this.return=this.stateNode=this.type=this.elementType=null;this.index=0;this.ref=null;this.pendingProps=b;this.dependencies=this.memoizedState=this.updateQueue=this.memoizedProps=null;this.mode=d;this.subtreeFlags=this.flags=0;this.deletions=null;this.childLanes=this.lanes=0;this.alternate=null}function Bg(a,b,c,d){return new al(a,b,c,d)}function bj(a){a=a.prototype;return!(!a||!a.isReactComponent)}\nfunction $k(a){if(\"function\"===typeof a)return bj(a)?1:0;if(void 0!==a&&null!==a){a=a.$$typeof;if(a===Da)return 11;if(a===Ga)return 14}return 2}\nfunction wh(a,b){var c=a.alternate;null===c?(c=Bg(a.tag,b,a.key,a.mode),c.elementType=a.elementType,c.type=a.type,c.stateNode=a.stateNode,c.alternate=a,a.alternate=c):(c.pendingProps=b,c.type=a.type,c.flags=0,c.subtreeFlags=0,c.deletions=null);c.flags=a.flags&14680064;c.childLanes=a.childLanes;c.lanes=a.lanes;c.child=a.child;c.memoizedProps=a.memoizedProps;c.memoizedState=a.memoizedState;c.updateQueue=a.updateQueue;b=a.dependencies;c.dependencies=null===b?null:{lanes:b.lanes,firstContext:b.firstContext};\nc.sibling=a.sibling;c.index=a.index;c.ref=a.ref;return c}\nfunction yh(a,b,c,d,e,f){var g=2;d=a;if(\"function\"===typeof a)bj(a)&&(g=1);else if(\"string\"===typeof a)g=5;else a:switch(a){case ya:return Ah(c.children,e,f,b);case za:g=8;e|=8;break;case Aa:return a=Bg(12,c,b,e|2),a.elementType=Aa,a.lanes=f,a;case Ea:return a=Bg(13,c,b,e),a.elementType=Ea,a.lanes=f,a;case Fa:return a=Bg(19,c,b,e),a.elementType=Fa,a.lanes=f,a;case Ia:return qj(c,e,f,b);default:if(\"object\"===typeof a&&null!==a)switch(a.$$typeof){case Ba:g=10;break a;case Ca:g=9;break a;case Da:g=11;\nbreak a;case Ga:g=14;break a;case Ha:g=16;d=null;break a}throw Error(p(130,null==a?a:typeof a,\"\"));}b=Bg(g,c,b,e);b.elementType=a;b.type=d;b.lanes=f;return b}function Ah(a,b,c,d){a=Bg(7,a,d,b);a.lanes=c;return a}function qj(a,b,c,d){a=Bg(22,a,d,b);a.elementType=Ia;a.lanes=c;a.stateNode={isHidden:!1};return a}function xh(a,b,c){a=Bg(6,a,null,b);a.lanes=c;return a}\nfunction zh(a,b,c){b=Bg(4,null!==a.children?a.children:[],a.key,b);b.lanes=c;b.stateNode={containerInfo:a.containerInfo,pendingChildren:null,implementation:a.implementation};return b}\nfunction bl(a,b,c,d,e){this.tag=b;this.containerInfo=a;this.finishedWork=this.pingCache=this.current=this.pendingChildren=null;this.timeoutHandle=-1;this.callbackNode=this.pendingContext=this.context=null;this.callbackPriority=0;this.eventTimes=zc(0);this.expirationTimes=zc(-1);this.entangledLanes=this.finishedLanes=this.mutableReadLanes=this.expiredLanes=this.pingedLanes=this.suspendedLanes=this.pendingLanes=0;this.entanglements=zc(0);this.identifierPrefix=d;this.onRecoverableError=e;this.mutableSourceEagerHydrationData=\nnull}function cl(a,b,c,d,e,f,g,h,k){a=new bl(a,b,c,h,k);1===b?(b=1,!0===f&&(b|=8)):b=0;f=Bg(3,null,null,b);a.current=f;f.stateNode=a;f.memoizedState={element:d,isDehydrated:c,cache:null,transitions:null,pendingSuspenseBoundaries:null};ah(f);return a}function dl(a,b,c){var d=3 0)) {\n this.updateFinalTranscript(results[i][0].transcript);\n } else {\n this.interimTranscript = (0, _utils.concatTranscripts)(this.interimTranscript, results[i][0].transcript);\n }\n }\n\n var isDuplicateResult = false;\n\n if (this.interimTranscript === '' && this.finalTranscript !== '') {\n if (this.previousResultWasFinalOnly) {\n isDuplicateResult = true;\n }\n\n this.previousResultWasFinalOnly = true;\n } else {\n this.previousResultWasFinalOnly = false;\n }\n\n if (!isDuplicateResult) {\n this.emitTranscriptChange(this.interimTranscript, this.finalTranscript);\n }\n }\n }, {\n key: \"updateFinalTranscript\",\n value: function updateFinalTranscript(newFinalTranscript) {\n this.finalTranscript = (0, _utils.concatTranscripts)(this.finalTranscript, newFinalTranscript);\n }\n }, {\n key: \"resetTranscript\",\n value: function resetTranscript() {\n this.disconnect('RESET');\n }\n }, {\n key: \"startListening\",\n value: function () {\n var _startListening = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n var _ref2,\n _ref2$continuous,\n continuous,\n language,\n isContinuousChanged,\n isLanguageChanged,\n _args = arguments;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _ref2 = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, _ref2$continuous = _ref2.continuous, continuous = _ref2$continuous === void 0 ? false : _ref2$continuous, language = _ref2.language;\n\n if (this.recognition) {\n _context.next = 3;\n break;\n }\n\n return _context.abrupt(\"return\");\n\n case 3:\n isContinuousChanged = continuous !== this.recognition.continuous;\n isLanguageChanged = language && language !== this.recognition.lang;\n\n if (!(isContinuousChanged || isLanguageChanged)) {\n _context.next = 11;\n break;\n }\n\n if (!this.listening) {\n _context.next = 9;\n break;\n }\n\n _context.next = 9;\n return this.stopListening();\n\n case 9:\n this.recognition.continuous = isContinuousChanged ? continuous : this.recognition.continuous;\n this.recognition.lang = isLanguageChanged ? language : this.recognition.lang;\n\n case 11:\n if (this.listening) {\n _context.next = 22;\n break;\n }\n\n if (!this.recognition.continuous) {\n this.resetTranscript();\n this.emitClearTranscript();\n }\n\n _context.prev = 13;\n _context.next = 16;\n return this.start();\n\n case 16:\n this.emitListeningChange(true);\n _context.next = 22;\n break;\n\n case 19:\n _context.prev = 19;\n _context.t0 = _context[\"catch\"](13);\n\n // DOMExceptions indicate a redundant microphone start - safe to swallow\n if (!(_context.t0 instanceof DOMException)) {\n this.emitMicrophoneAvailabilityChange(false);\n }\n\n case 22:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee, this, [[13, 19]]);\n }));\n\n function startListening() {\n return _startListening.apply(this, arguments);\n }\n\n return startListening;\n }()\n }, {\n key: \"abortListening\",\n value: function () {\n var _abortListening = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n var _this6 = this;\n\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n this.disconnect('ABORT');\n this.emitListeningChange(false);\n _context2.next = 4;\n return new Promise(function (resolve) {\n _this6.onStopListening = resolve;\n });\n\n case 4:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2, this);\n }));\n\n function abortListening() {\n return _abortListening.apply(this, arguments);\n }\n\n return abortListening;\n }()\n }, {\n key: \"stopListening\",\n value: function () {\n var _stopListening = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n var _this7 = this;\n\n return regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n this.disconnect('STOP');\n this.emitListeningChange(false);\n _context3.next = 4;\n return new Promise(function (resolve) {\n _this7.onStopListening = resolve;\n });\n\n case 4:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3, this);\n }));\n\n function stopListening() {\n return _stopListening.apply(this, arguments);\n }\n\n return stopListening;\n }()\n }, {\n key: \"getRecognition\",\n value: function getRecognition() {\n return this.recognition;\n }\n }, {\n key: \"start\",\n value: function () {\n var _start = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee4() {\n return regeneratorRuntime.wrap(function _callee4$(_context4) {\n while (1) {\n switch (_context4.prev = _context4.next) {\n case 0:\n if (!(this.recognition && !this.listening)) {\n _context4.next = 4;\n break;\n }\n\n _context4.next = 3;\n return this.recognition.start();\n\n case 3:\n this.listening = true;\n\n case 4:\n case \"end\":\n return _context4.stop();\n }\n }\n }, _callee4, this);\n }));\n\n function start() {\n return _start.apply(this, arguments);\n }\n\n return start;\n }()\n }, {\n key: \"stop\",\n value: function stop() {\n if (this.recognition && this.listening) {\n this.recognition.stop();\n this.listening = false;\n }\n }\n }, {\n key: \"abort\",\n value: function abort() {\n if (this.recognition && this.listening) {\n this.recognition.abort();\n this.listening = false;\n }\n }\n }]);\n\n return RecognitionManager;\n}();\n\nexports[\"default\"] = RecognitionManager;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = exports.useSpeechRecognition = void 0;\n\nvar _react = require(\"react\");\n\nvar _utils = require(\"./utils\");\n\nvar _actions = require(\"./actions\");\n\nvar _reducers = require(\"./reducers\");\n\nvar _RecognitionManager = _interopRequireDefault(require(\"./RecognitionManager\"));\n\nvar _isAndroid = _interopRequireDefault(require(\"./isAndroid\"));\n\nvar _NativeSpeechRecognition = _interopRequireDefault(require(\"./NativeSpeechRecognition\"));\n\nfunction _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { \"default\": obj }; }\n\nfunction asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) { try { var info = gen[key](arg); var value = info.value; } catch (error) { reject(error); return; } if (info.done) { resolve(value); } else { Promise.resolve(value).then(_next, _throw); } }\n\nfunction _asyncToGenerator(fn) { return function () { var self = this, args = arguments; return new Promise(function (resolve, reject) { var gen = fn.apply(self, args); function _next(value) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value); } function _throw(err) { asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err); } _next(undefined); }); }; }\n\nfunction _toConsumableArray(arr) { return _arrayWithoutHoles(arr) || _iterableToArray(arr) || _unsupportedIterableToArray(arr) || _nonIterableSpread(); }\n\nfunction _nonIterableSpread() { 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\nfunction _iterableToArray(iter) { if (typeof Symbol !== \"undefined\" && Symbol.iterator in Object(iter)) return Array.from(iter); }\n\nfunction _arrayWithoutHoles(arr) { if (Array.isArray(arr)) return _arrayLikeToArray(arr); }\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _slicedToArray(arr, i) { return _arrayWithHoles(arr) || _iterableToArrayLimit(arr, i) || _unsupportedIterableToArray(arr, i) || _nonIterableRest(); }\n\nfunction _nonIterableRest() { 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\nfunction _unsupportedIterableToArray(o, minLen) { if (!o) return; if (typeof o === \"string\") return _arrayLikeToArray(o, minLen); var n = Object.prototype.toString.call(o).slice(8, -1); if (n === \"Object\" && o.constructor) n = o.constructor.name; if (n === \"Map\" || n === \"Set\") return Array.from(o); if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return _arrayLikeToArray(o, minLen); }\n\nfunction _arrayLikeToArray(arr, len) { if (len == null || len > arr.length) len = arr.length; for (var i = 0, arr2 = new Array(len); i < len; i++) { arr2[i] = arr[i]; } return arr2; }\n\nfunction _iterableToArrayLimit(arr, i) { if (typeof Symbol === \"undefined\" || !(Symbol.iterator in Object(arr))) return; var _arr = []; var _n = true; var _d = false; var _e = undefined; try { for (var _i = arr[Symbol.iterator](), _s; !(_n = (_s = _i.next()).done); _n = true) { _arr.push(_s.value); if (i && _arr.length === i) break; } } catch (err) { _d = true; _e = err; } finally { try { if (!_n && _i[\"return\"] != null) _i[\"return\"](); } finally { if (_d) throw _e; } } return _arr; }\n\nfunction _arrayWithHoles(arr) { if (Array.isArray(arr)) return arr; }\n\nvar _browserSupportsSpeechRecognition = !!_NativeSpeechRecognition[\"default\"];\n\nvar _browserSupportsContinuousListening = _browserSupportsSpeechRecognition && !(0, _isAndroid[\"default\"])();\n\nvar recognitionManager;\n\nvar useSpeechRecognition = function useSpeechRecognition() {\n var _ref = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {},\n _ref$transcribing = _ref.transcribing,\n transcribing = _ref$transcribing === void 0 ? true : _ref$transcribing,\n _ref$clearTranscriptO = _ref.clearTranscriptOnListen,\n clearTranscriptOnListen = _ref$clearTranscriptO === void 0 ? true : _ref$clearTranscriptO,\n _ref$commands = _ref.commands,\n commands = _ref$commands === void 0 ? [] : _ref$commands;\n\n var _useState = (0, _react.useState)(SpeechRecognition.getRecognitionManager()),\n _useState2 = _slicedToArray(_useState, 1),\n recognitionManager = _useState2[0];\n\n var _useState3 = (0, _react.useState)(_browserSupportsSpeechRecognition),\n _useState4 = _slicedToArray(_useState3, 2),\n browserSupportsSpeechRecognition = _useState4[0],\n setBrowserSupportsSpeechRecognition = _useState4[1];\n\n var _useState5 = (0, _react.useState)(_browserSupportsContinuousListening),\n _useState6 = _slicedToArray(_useState5, 2),\n browserSupportsContinuousListening = _useState6[0],\n setBrowserSupportsContinuousListening = _useState6[1];\n\n var _useReducer = (0, _react.useReducer)(_reducers.transcriptReducer, {\n interimTranscript: recognitionManager.interimTranscript,\n finalTranscript: ''\n }),\n _useReducer2 = _slicedToArray(_useReducer, 2),\n _useReducer2$ = _useReducer2[0],\n interimTranscript = _useReducer2$.interimTranscript,\n finalTranscript = _useReducer2$.finalTranscript,\n dispatch = _useReducer2[1];\n\n var _useState7 = (0, _react.useState)(recognitionManager.listening),\n _useState8 = _slicedToArray(_useState7, 2),\n listening = _useState8[0],\n setListening = _useState8[1];\n\n var _useState9 = (0, _react.useState)(recognitionManager.isMicrophoneAvailable),\n _useState10 = _slicedToArray(_useState9, 2),\n isMicrophoneAvailable = _useState10[0],\n setMicrophoneAvailable = _useState10[1];\n\n var commandsRef = (0, _react.useRef)(commands);\n commandsRef.current = commands;\n\n var dispatchClearTranscript = function dispatchClearTranscript() {\n dispatch((0, _actions.clearTranscript)());\n };\n\n var resetTranscript = (0, _react.useCallback)(function () {\n recognitionManager.resetTranscript();\n dispatchClearTranscript();\n }, [recognitionManager]);\n\n var testFuzzyMatch = function testFuzzyMatch(command, input, fuzzyMatchingThreshold) {\n var commandToString = _typeof(command) === 'object' ? command.toString() : command;\n var commandWithoutSpecials = commandToString.replace(/[&/\\\\#,+()!$~%.'\":*?<>{}]/g, '').replace(/ +/g, ' ').trim();\n var howSimilar = (0, _utils.compareTwoStringsUsingDiceCoefficient)(commandWithoutSpecials, input);\n\n if (howSimilar >= fuzzyMatchingThreshold) {\n return {\n command: command,\n commandWithoutSpecials: commandWithoutSpecials,\n howSimilar: howSimilar,\n isFuzzyMatch: true\n };\n }\n\n return null;\n };\n\n var testMatch = function testMatch(command, input) {\n var pattern = (0, _utils.commandToRegExp)(command);\n var result = pattern.exec(input);\n\n if (result) {\n return {\n command: command,\n parameters: result.slice(1)\n };\n }\n\n return null;\n };\n\n var matchCommands = (0, _react.useCallback)(function (newInterimTranscript, newFinalTranscript) {\n commandsRef.current.forEach(function (_ref2) {\n var command = _ref2.command,\n callback = _ref2.callback,\n _ref2$matchInterim = _ref2.matchInterim,\n matchInterim = _ref2$matchInterim === void 0 ? false : _ref2$matchInterim,\n _ref2$isFuzzyMatch = _ref2.isFuzzyMatch,\n isFuzzyMatch = _ref2$isFuzzyMatch === void 0 ? false : _ref2$isFuzzyMatch,\n _ref2$fuzzyMatchingTh = _ref2.fuzzyMatchingThreshold,\n fuzzyMatchingThreshold = _ref2$fuzzyMatchingTh === void 0 ? 0.8 : _ref2$fuzzyMatchingTh,\n _ref2$bestMatchOnly = _ref2.bestMatchOnly,\n bestMatchOnly = _ref2$bestMatchOnly === void 0 ? false : _ref2$bestMatchOnly;\n var input = !newFinalTranscript && matchInterim ? newInterimTranscript.trim() : newFinalTranscript.trim();\n var subcommands = Array.isArray(command) ? command : [command];\n var results = subcommands.map(function (subcommand) {\n if (isFuzzyMatch) {\n return testFuzzyMatch(subcommand, input, fuzzyMatchingThreshold);\n }\n\n return testMatch(subcommand, input);\n }).filter(function (x) {\n return x;\n });\n\n if (isFuzzyMatch && bestMatchOnly && results.length >= 2) {\n results.sort(function (a, b) {\n return b.howSimilar - a.howSimilar;\n });\n var _results$ = results[0],\n _command = _results$.command,\n commandWithoutSpecials = _results$.commandWithoutSpecials,\n howSimilar = _results$.howSimilar;\n callback(commandWithoutSpecials, input, howSimilar, {\n command: _command,\n resetTranscript: resetTranscript\n });\n } else {\n results.forEach(function (result) {\n if (result.isFuzzyMatch) {\n var _command2 = result.command,\n _commandWithoutSpecials = result.commandWithoutSpecials,\n _howSimilar = result.howSimilar;\n callback(_commandWithoutSpecials, input, _howSimilar, {\n command: _command2,\n resetTranscript: resetTranscript\n });\n } else {\n var _command3 = result.command,\n parameters = result.parameters;\n callback.apply(void 0, _toConsumableArray(parameters).concat([{\n command: _command3,\n resetTranscript: resetTranscript\n }]));\n }\n });\n }\n });\n }, [resetTranscript]);\n var handleTranscriptChange = (0, _react.useCallback)(function (newInterimTranscript, newFinalTranscript) {\n if (transcribing) {\n dispatch((0, _actions.appendTranscript)(newInterimTranscript, newFinalTranscript));\n }\n\n matchCommands(newInterimTranscript, newFinalTranscript);\n }, [matchCommands, transcribing]);\n var handleClearTranscript = (0, _react.useCallback)(function () {\n if (clearTranscriptOnListen) {\n dispatchClearTranscript();\n }\n }, [clearTranscriptOnListen]);\n (0, _react.useEffect)(function () {\n var id = SpeechRecognition.counter;\n SpeechRecognition.counter += 1;\n var callbacks = {\n onListeningChange: setListening,\n onMicrophoneAvailabilityChange: setMicrophoneAvailable,\n onTranscriptChange: handleTranscriptChange,\n onClearTranscript: handleClearTranscript,\n onBrowserSupportsSpeechRecognitionChange: setBrowserSupportsSpeechRecognition,\n onBrowserSupportsContinuousListeningChange: setBrowserSupportsContinuousListening\n };\n recognitionManager.subscribe(id, callbacks);\n return function () {\n recognitionManager.unsubscribe(id);\n };\n }, [transcribing, clearTranscriptOnListen, recognitionManager, handleTranscriptChange, handleClearTranscript]);\n var transcript = (0, _utils.concatTranscripts)(finalTranscript, interimTranscript);\n return {\n transcript: transcript,\n interimTranscript: interimTranscript,\n finalTranscript: finalTranscript,\n listening: listening,\n isMicrophoneAvailable: isMicrophoneAvailable,\n resetTranscript: resetTranscript,\n browserSupportsSpeechRecognition: browserSupportsSpeechRecognition,\n browserSupportsContinuousListening: browserSupportsContinuousListening\n };\n};\n\nexports.useSpeechRecognition = useSpeechRecognition;\nvar SpeechRecognition = {\n counter: 0,\n applyPolyfill: function applyPolyfill(PolyfillSpeechRecognition) {\n if (recognitionManager) {\n recognitionManager.setSpeechRecognition(PolyfillSpeechRecognition);\n } else {\n recognitionManager = new _RecognitionManager[\"default\"](PolyfillSpeechRecognition);\n }\n\n var browserSupportsPolyfill = !!PolyfillSpeechRecognition && (0, _utils.browserSupportsPolyfills)();\n _browserSupportsSpeechRecognition = browserSupportsPolyfill;\n _browserSupportsContinuousListening = browserSupportsPolyfill;\n },\n removePolyfill: function removePolyfill() {\n if (recognitionManager) {\n recognitionManager.setSpeechRecognition(_NativeSpeechRecognition[\"default\"]);\n } else {\n recognitionManager = new _RecognitionManager[\"default\"](_NativeSpeechRecognition[\"default\"]);\n }\n\n _browserSupportsSpeechRecognition = !!_NativeSpeechRecognition[\"default\"];\n _browserSupportsContinuousListening = _browserSupportsSpeechRecognition && !(0, _isAndroid[\"default\"])();\n },\n getRecognitionManager: function getRecognitionManager() {\n if (!recognitionManager) {\n recognitionManager = new _RecognitionManager[\"default\"](_NativeSpeechRecognition[\"default\"]);\n }\n\n return recognitionManager;\n },\n getRecognition: function getRecognition() {\n var recognitionManager = SpeechRecognition.getRecognitionManager();\n return recognitionManager.getRecognition();\n },\n startListening: function () {\n var _startListening = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee() {\n var _ref3,\n continuous,\n language,\n recognitionManager,\n _args = arguments;\n\n return regeneratorRuntime.wrap(function _callee$(_context) {\n while (1) {\n switch (_context.prev = _context.next) {\n case 0:\n _ref3 = _args.length > 0 && _args[0] !== undefined ? _args[0] : {}, continuous = _ref3.continuous, language = _ref3.language;\n recognitionManager = SpeechRecognition.getRecognitionManager();\n _context.next = 4;\n return recognitionManager.startListening({\n continuous: continuous,\n language: language\n });\n\n case 4:\n case \"end\":\n return _context.stop();\n }\n }\n }, _callee);\n }));\n\n function startListening() {\n return _startListening.apply(this, arguments);\n }\n\n return startListening;\n }(),\n stopListening: function () {\n var _stopListening = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee2() {\n var recognitionManager;\n return regeneratorRuntime.wrap(function _callee2$(_context2) {\n while (1) {\n switch (_context2.prev = _context2.next) {\n case 0:\n recognitionManager = SpeechRecognition.getRecognitionManager();\n _context2.next = 3;\n return recognitionManager.stopListening();\n\n case 3:\n case \"end\":\n return _context2.stop();\n }\n }\n }, _callee2);\n }));\n\n function stopListening() {\n return _stopListening.apply(this, arguments);\n }\n\n return stopListening;\n }(),\n abortListening: function () {\n var _abortListening = _asyncToGenerator( /*#__PURE__*/regeneratorRuntime.mark(function _callee3() {\n var recognitionManager;\n return regeneratorRuntime.wrap(function _callee3$(_context3) {\n while (1) {\n switch (_context3.prev = _context3.next) {\n case 0:\n recognitionManager = SpeechRecognition.getRecognitionManager();\n _context3.next = 3;\n return recognitionManager.abortListening();\n\n case 3:\n case \"end\":\n return _context3.stop();\n }\n }\n }, _callee3);\n }));\n\n function abortListening() {\n return _abortListening.apply(this, arguments);\n }\n\n return abortListening;\n }(),\n browserSupportsSpeechRecognition: function browserSupportsSpeechRecognition() {\n return _browserSupportsSpeechRecognition;\n },\n browserSupportsContinuousListening: function browserSupportsContinuousListening() {\n return _browserSupportsContinuousListening;\n }\n};\nvar _default = SpeechRecognition;\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.appendTranscript = exports.clearTranscript = void 0;\n\nvar _constants = require(\"./constants\");\n\nvar clearTranscript = function clearTranscript() {\n return {\n type: _constants.CLEAR_TRANSCRIPT\n };\n};\n\nexports.clearTranscript = clearTranscript;\n\nvar appendTranscript = function appendTranscript(interimTranscript, finalTranscript) {\n return {\n type: _constants.APPEND_TRANSCRIPT,\n payload: {\n interimTranscript: interimTranscript,\n finalTranscript: finalTranscript\n }\n };\n};\n\nexports.appendTranscript = appendTranscript;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.APPEND_TRANSCRIPT = exports.CLEAR_TRANSCRIPT = void 0;\nvar CLEAR_TRANSCRIPT = 'CLEAR_TRANSCRIPT';\nexports.CLEAR_TRANSCRIPT = CLEAR_TRANSCRIPT;\nvar APPEND_TRANSCRIPT = 'APPEND_TRANSCRIPT';\nexports.APPEND_TRANSCRIPT = APPEND_TRANSCRIPT;","\"use strict\";\n\nfunction _typeof(obj) { \"@babel/helpers - typeof\"; if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nObject.defineProperty(exports, \"useSpeechRecognition\", {\n enumerable: true,\n get: function get() {\n return _SpeechRecognition.useSpeechRecognition;\n }\n});\nexports[\"default\"] = void 0;\n\nvar _SpeechRecognition = _interopRequireWildcard(require(\"./SpeechRecognition\"));\n\nfunction _getRequireWildcardCache() { if (typeof WeakMap !== \"function\") return null; var cache = new WeakMap(); _getRequireWildcardCache = function _getRequireWildcardCache() { return cache; }; return cache; }\n\nfunction _interopRequireWildcard(obj) { if (obj && obj.__esModule) { return obj; } if (obj === null || _typeof(obj) !== \"object\" && typeof obj !== \"function\") { return { \"default\": obj }; } var cache = _getRequireWildcardCache(); if (cache && cache.has(obj)) { return cache.get(obj); } var newObj = {}; var hasPropertyDescriptor = Object.defineProperty && Object.getOwnPropertyDescriptor; for (var key in obj) { if (Object.prototype.hasOwnProperty.call(obj, key)) { var desc = hasPropertyDescriptor ? Object.getOwnPropertyDescriptor(obj, key) : null; if (desc && (desc.get || desc.set)) { Object.defineProperty(newObj, key, desc); } else { newObj[key] = obj[key]; } } } newObj[\"default\"] = obj; if (cache) { cache.set(obj, newObj); } return newObj; }\n\nvar _default = _SpeechRecognition[\"default\"];\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports[\"default\"] = void 0;\n\nvar _default = function _default() {\n return /(android)/i.test(typeof navigator !== 'undefined' ? navigator.userAgent : '');\n};\n\nexports[\"default\"] = _default;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.transcriptReducer = void 0;\n\nvar _constants = require(\"./constants\");\n\nvar _utils = require(\"./utils\");\n\nvar transcriptReducer = function transcriptReducer(state, action) {\n switch (action.type) {\n case _constants.CLEAR_TRANSCRIPT:\n return {\n interimTranscript: '',\n finalTranscript: ''\n };\n\n case _constants.APPEND_TRANSCRIPT:\n return {\n interimTranscript: action.payload.interimTranscript,\n finalTranscript: (0, _utils.concatTranscripts)(state.finalTranscript, action.payload.finalTranscript)\n };\n\n default:\n throw new Error();\n }\n};\n\nexports.transcriptReducer = transcriptReducer;","\"use strict\";\n\nObject.defineProperty(exports, \"__esModule\", {\n value: true\n});\nexports.browserSupportsPolyfills = exports.compareTwoStringsUsingDiceCoefficient = exports.commandToRegExp = exports.concatTranscripts = exports.debounce = void 0;\n\nvar debounce = function debounce(func, wait, immediate) {\n var timeout;\n return function () {\n var context = this;\n var args = arguments;\n\n var later = function later() {\n timeout = null;\n if (!immediate) func.apply(context, args);\n };\n\n var callNow = immediate && !timeout;\n clearTimeout(timeout);\n timeout = setTimeout(later, wait);\n if (callNow) func.apply(context, args);\n };\n};\n\nexports.debounce = debounce;\n\nvar concatTranscripts = function concatTranscripts() {\n for (var _len = arguments.length, transcriptParts = new Array(_len), _key = 0; _key < _len; _key++) {\n transcriptParts[_key] = arguments[_key];\n }\n\n return transcriptParts.map(function (t) {\n return t.trim();\n }).join(' ').trim();\n}; // The command matching code is a modified version of Backbone.Router by Jeremy Ashkenas, under the MIT license.\n\n\nexports.concatTranscripts = concatTranscripts;\nvar optionalParam = /\\s*\\((.*?)\\)\\s*/g;\nvar optionalRegex = /(\\(\\?:[^)]+\\))\\?/g;\nvar namedParam = /(\\(\\?)?:\\w+/g;\nvar splatParam = /\\*/g;\nvar escapeRegExp = /[-{}[\\]+?.,\\\\^$|#]/g;\n\nvar commandToRegExp = function commandToRegExp(command) {\n if (command instanceof RegExp) {\n return new RegExp(command.source, 'i');\n }\n\n command = command.replace(escapeRegExp, '\\\\$&').replace(optionalParam, '(?:$1)?').replace(namedParam, function (match, optional) {\n return optional ? match : '([^\\\\s]+)';\n }).replace(splatParam, '(.*?)').replace(optionalRegex, '\\\\s*$1?\\\\s*');\n return new RegExp('^' + command + '$', 'i');\n}; // this is from https://github.com/aceakash/string-similarity\n\n\nexports.commandToRegExp = commandToRegExp;\n\nvar compareTwoStringsUsingDiceCoefficient = function compareTwoStringsUsingDiceCoefficient(first, second) {\n first = first.replace(/\\s+/g, '').toLowerCase();\n second = second.replace(/\\s+/g, '').toLowerCase();\n if (!first.length && !second.length) return 1; // if both are empty strings\n\n if (!first.length || !second.length) return 0; // if only one is empty string\n\n if (first === second) return 1; // identical\n\n if (first.length === 1 && second.length === 1) return 0; // both are 1-letter strings\n\n if (first.length < 2 || second.length < 2) return 0; // if either is a 1-letter string\n\n var firstBigrams = new Map();\n\n for (var i = 0; i < first.length - 1; i++) {\n var bigram = first.substring(i, i + 2);\n var count = firstBigrams.has(bigram) ? firstBigrams.get(bigram) + 1 : 1;\n firstBigrams.set(bigram, count);\n }\n\n var intersectionSize = 0;\n\n for (var _i = 0; _i < second.length - 1; _i++) {\n var _bigram = second.substring(_i, _i + 2);\n\n var _count = firstBigrams.has(_bigram) ? firstBigrams.get(_bigram) : 0;\n\n if (_count > 0) {\n firstBigrams.set(_bigram, _count - 1);\n intersectionSize++;\n }\n }\n\n return 2.0 * intersectionSize / (first.length + second.length - 2);\n};\n\nexports.compareTwoStringsUsingDiceCoefficient = compareTwoStringsUsingDiceCoefficient;\n\nvar browserSupportsPolyfills = function browserSupportsPolyfills() {\n return typeof window !== 'undefined' && window.navigator !== undefined && window.navigator.mediaDevices !== undefined && window.navigator.mediaDevices.getUserMedia !== undefined && (window.AudioContext !== undefined || window.webkitAudioContext !== undefined);\n};\n\nexports.browserSupportsPolyfills = browserSupportsPolyfills;","(function webpackUniversalModuleDefinition(root, factory) {\n\tif(typeof exports === 'object' && typeof module === 'object')\n\t\tmodule.exports = factory(require(\"react\"), require(\"react-dom\"));\n\telse if(typeof define === 'function' && define.amd)\n\t\tdefine([\"React\", \"ReactDOM\"], factory);\n\telse if(typeof exports === 'object')\n\t\texports[\"react-visibility-sensor\"] = factory(require(\"react\"), require(\"react-dom\"));\n\telse\n\t\troot[\"react-visibility-sensor\"] = factory(root[\"React\"], root[\"ReactDOM\"]);\n})(this, function(__WEBPACK_EXTERNAL_MODULE__1__, __WEBPACK_EXTERNAL_MODULE__2__) {\nreturn /******/ (function(modules) { // webpackBootstrap\n/******/ \t// The module cache\n/******/ \tvar installedModules = {};\n/******/\n/******/ \t// The require function\n/******/ \tfunction __webpack_require__(moduleId) {\n/******/\n/******/ \t\t// Check if module is in cache\n/******/ \t\tif(installedModules[moduleId]) {\n/******/ \t\t\treturn installedModules[moduleId].exports;\n/******/ \t\t}\n/******/ \t\t// Create a new module (and put it into the cache)\n/******/ \t\tvar module = installedModules[moduleId] = {\n/******/ \t\t\ti: moduleId,\n/******/ \t\t\tl: false,\n/******/ \t\t\texports: {}\n/******/ \t\t};\n/******/\n/******/ \t\t// Execute the module function\n/******/ \t\tmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n/******/\n/******/ \t\t// Flag the module as loaded\n/******/ \t\tmodule.l = true;\n/******/\n/******/ \t\t// Return the exports of the module\n/******/ \t\treturn module.exports;\n/******/ \t}\n/******/\n/******/\n/******/ \t// expose the modules object (__webpack_modules__)\n/******/ \t__webpack_require__.m = modules;\n/******/\n/******/ \t// expose the module cache\n/******/ \t__webpack_require__.c = installedModules;\n/******/\n/******/ \t// define getter function for harmony exports\n/******/ \t__webpack_require__.d = function(exports, name, getter) {\n/******/ \t\tif(!__webpack_require__.o(exports, name)) {\n/******/ \t\t\tObject.defineProperty(exports, name, { enumerable: true, get: getter });\n/******/ \t\t}\n/******/ \t};\n/******/\n/******/ \t// define __esModule on exports\n/******/ \t__webpack_require__.r = function(exports) {\n/******/ \t\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n/******/ \t\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n/******/ \t\t}\n/******/ \t\tObject.defineProperty(exports, '__esModule', { value: true });\n/******/ \t};\n/******/\n/******/ \t// create a fake namespace object\n/******/ \t// mode & 1: value is a module id, require it\n/******/ \t// mode & 2: merge all properties of value into the ns\n/******/ \t// mode & 4: return value when already ns object\n/******/ \t// mode & 8|1: behave like require\n/******/ \t__webpack_require__.t = function(value, mode) {\n/******/ \t\tif(mode & 1) value = __webpack_require__(value);\n/******/ \t\tif(mode & 8) return value;\n/******/ \t\tif((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;\n/******/ \t\tvar ns = Object.create(null);\n/******/ \t\t__webpack_require__.r(ns);\n/******/ \t\tObject.defineProperty(ns, 'default', { enumerable: true, value: value });\n/******/ \t\tif(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));\n/******/ \t\treturn ns;\n/******/ \t};\n/******/\n/******/ \t// getDefaultExport function for compatibility with non-harmony modules\n/******/ \t__webpack_require__.n = function(module) {\n/******/ \t\tvar getter = module && module.__esModule ?\n/******/ \t\t\tfunction getDefault() { return module['default']; } :\n/******/ \t\t\tfunction getModuleExports() { return module; };\n/******/ \t\t__webpack_require__.d(getter, 'a', getter);\n/******/ \t\treturn getter;\n/******/ \t};\n/******/\n/******/ \t// Object.prototype.hasOwnProperty.call\n/******/ \t__webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };\n/******/\n/******/ \t// __webpack_public_path__\n/******/ \t__webpack_require__.p = \"\";\n/******/\n/******/\n/******/ \t// Load entry module and return exports\n/******/ \treturn __webpack_require__(__webpack_require__.s = 4);\n/******/ })\n/************************************************************************/\n/******/ ([\n/* 0 */\n/***/ (function(module, exports, __webpack_require__) {\n\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nif (false) { var throwOnDirectAccess, ReactIs; } else {\n // By explicitly using `prop-types` you are opting into new production behavior.\n // http://fb.me/prop-types-in-prod\n module.exports = __webpack_require__(5)();\n}\n\n\n/***/ }),\n/* 1 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__1__;\n\n/***/ }),\n/* 2 */\n/***/ (function(module, exports) {\n\nmodule.exports = __WEBPACK_EXTERNAL_MODULE__2__;\n\n/***/ }),\n/* 3 */\n/***/ (function(module, exports) {\n\n// Tell whether the rect is visible, given an offset\n//\n// return: boolean\nmodule.exports = function (offset, rect, containmentRect) {\n var offsetDir = offset.direction;\n var offsetVal = offset.value; // Rules for checking different kind of offsets. In example if the element is\n // 90px below viewport and offsetTop is 100, it is considered visible.\n\n switch (offsetDir) {\n case 'top':\n return containmentRect.top + offsetVal < rect.top && containmentRect.bottom > rect.bottom && containmentRect.left < rect.left && containmentRect.right > rect.right;\n\n case 'left':\n return containmentRect.left + offsetVal < rect.left && containmentRect.bottom > rect.bottom && containmentRect.top < rect.top && containmentRect.right > rect.right;\n\n case 'bottom':\n return containmentRect.bottom - offsetVal > rect.bottom && containmentRect.left < rect.left && containmentRect.right > rect.right && containmentRect.top < rect.top;\n\n case 'right':\n return containmentRect.right - offsetVal > rect.right && containmentRect.left < rect.left && containmentRect.top < rect.top && containmentRect.bottom > rect.bottom;\n }\n};\n\n/***/ }),\n/* 4 */\n/***/ (function(module, __webpack_exports__, __webpack_require__) {\n\n\"use strict\";\n__webpack_require__.r(__webpack_exports__);\n/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, \"default\", function() { return VisibilitySensor; });\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(1);\n/* harmony import */ var react__WEBPACK_IMPORTED_MODULE_0___default = /*#__PURE__*/__webpack_require__.n(react__WEBPACK_IMPORTED_MODULE_0__);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1__ = __webpack_require__(2);\n/* harmony import */ var react_dom__WEBPACK_IMPORTED_MODULE_1___default = /*#__PURE__*/__webpack_require__.n(react_dom__WEBPACK_IMPORTED_MODULE_1__);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2__ = __webpack_require__(0);\n/* harmony import */ var prop_types__WEBPACK_IMPORTED_MODULE_2___default = /*#__PURE__*/__webpack_require__.n(prop_types__WEBPACK_IMPORTED_MODULE_2__);\n/* harmony import */ var _lib_is_visible_with_offset__WEBPACK_IMPORTED_MODULE_3__ = __webpack_require__(3);\n/* harmony import */ var _lib_is_visible_with_offset__WEBPACK_IMPORTED_MODULE_3___default = /*#__PURE__*/__webpack_require__.n(_lib_is_visible_with_offset__WEBPACK_IMPORTED_MODULE_3__);\n\n\nfunction _typeof(obj) { if (typeof Symbol === \"function\" && typeof Symbol.iterator === \"symbol\") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === \"function\" && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj; }; } return _typeof(obj); }\n\nfunction _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError(\"Cannot call a class as a function\"); } }\n\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); } }\n\nfunction _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }\n\nfunction _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) { return call; } return _assertThisInitialized(self); }\n\nfunction _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }\n\nfunction _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\"); } return self; }\n\nfunction _inherits(subClass, superClass) { if (typeof superClass !== \"function\" && superClass !== null) { throw new TypeError(\"Super expression must either be null or a function\"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }\n\nfunction _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }\n\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; }\n\n\n\n\n\n\nfunction normalizeRect(rect) {\n if (rect.width === undefined) {\n rect.width = rect.right - rect.left;\n }\n\n if (rect.height === undefined) {\n rect.height = rect.bottom - rect.top;\n }\n\n return rect;\n}\n\nvar VisibilitySensor =\n/*#__PURE__*/\nfunction (_React$Component) {\n _inherits(VisibilitySensor, _React$Component);\n\n function VisibilitySensor(props) {\n var _this;\n\n _classCallCheck(this, VisibilitySensor);\n\n _this = _possibleConstructorReturn(this, _getPrototypeOf(VisibilitySensor).call(this, props));\n\n _defineProperty(_assertThisInitialized(_this), \"getContainer\", function () {\n return _this.props.containment || window;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"addEventListener\", function (target, event, delay, throttle) {\n if (!_this.debounceCheck) {\n _this.debounceCheck = {};\n }\n\n var timeout;\n var func;\n\n var later = function later() {\n timeout = null;\n\n _this.check();\n };\n\n if (throttle > -1) {\n func = function func() {\n if (!timeout) {\n timeout = setTimeout(later, throttle || 0);\n }\n };\n } else {\n func = function func() {\n clearTimeout(timeout);\n timeout = setTimeout(later, delay || 0);\n };\n }\n\n var info = {\n target: target,\n fn: func,\n getLastTimeout: function getLastTimeout() {\n return timeout;\n }\n };\n target.addEventListener(event, info.fn);\n _this.debounceCheck[event] = info;\n });\n\n _defineProperty(_assertThisInitialized(_this), \"startWatching\", function () {\n if (_this.debounceCheck || _this.interval) {\n return;\n }\n\n if (_this.props.intervalCheck) {\n _this.interval = setInterval(_this.check, _this.props.intervalDelay);\n }\n\n if (_this.props.scrollCheck) {\n _this.addEventListener(_this.getContainer(), \"scroll\", _this.props.scrollDelay, _this.props.scrollThrottle);\n }\n\n if (_this.props.resizeCheck) {\n _this.addEventListener(window, \"resize\", _this.props.resizeDelay, _this.props.resizeThrottle);\n } // if dont need delayed call, check on load ( before the first interval fires )\n\n\n !_this.props.delayedCall && _this.check();\n });\n\n _defineProperty(_assertThisInitialized(_this), \"stopWatching\", function () {\n if (_this.debounceCheck) {\n // clean up event listeners and their debounce callers\n for (var debounceEvent in _this.debounceCheck) {\n if (_this.debounceCheck.hasOwnProperty(debounceEvent)) {\n var debounceInfo = _this.debounceCheck[debounceEvent];\n clearTimeout(debounceInfo.getLastTimeout());\n debounceInfo.target.removeEventListener(debounceEvent, debounceInfo.fn);\n _this.debounceCheck[debounceEvent] = null;\n }\n }\n }\n\n _this.debounceCheck = null;\n\n if (_this.interval) {\n _this.interval = clearInterval(_this.interval);\n }\n });\n\n _defineProperty(_assertThisInitialized(_this), \"check\", function () {\n var el = _this.node;\n var rect;\n var containmentRect; // if the component has rendered to null, dont update visibility\n\n if (!el) {\n return _this.state;\n }\n\n rect = normalizeRect(_this.roundRectDown(el.getBoundingClientRect()));\n\n if (_this.props.containment) {\n var containmentDOMRect = _this.props.containment.getBoundingClientRect();\n\n containmentRect = {\n top: containmentDOMRect.top,\n left: containmentDOMRect.left,\n bottom: containmentDOMRect.bottom,\n right: containmentDOMRect.right\n };\n } else {\n containmentRect = {\n top: 0,\n left: 0,\n bottom: window.innerHeight || document.documentElement.clientHeight,\n right: window.innerWidth || document.documentElement.clientWidth\n };\n } // Check if visibility is wanted via offset?\n\n\n var offset = _this.props.offset || {};\n var hasValidOffset = _typeof(offset) === \"object\";\n\n if (hasValidOffset) {\n containmentRect.top += offset.top || 0;\n containmentRect.left += offset.left || 0;\n containmentRect.bottom -= offset.bottom || 0;\n containmentRect.right -= offset.right || 0;\n }\n\n var visibilityRect = {\n top: rect.top >= containmentRect.top,\n left: rect.left >= containmentRect.left,\n bottom: rect.bottom <= containmentRect.bottom,\n right: rect.right <= containmentRect.right\n }; // https://github.com/joshwnj/react-visibility-sensor/pull/114\n\n var hasSize = rect.height > 0 && rect.width > 0;\n var isVisible = hasSize && visibilityRect.top && visibilityRect.left && visibilityRect.bottom && visibilityRect.right; // check for partial visibility\n\n if (hasSize && _this.props.partialVisibility) {\n var partialVisible = rect.top <= containmentRect.bottom && rect.bottom >= containmentRect.top && rect.left <= containmentRect.right && rect.right >= containmentRect.left; // account for partial visibility on a single edge\n\n if (typeof _this.props.partialVisibility === \"string\") {\n partialVisible = visibilityRect[_this.props.partialVisibility];\n } // if we have minimum top visibility set by props, lets check, if it meets the passed value\n // so if for instance element is at least 200px in viewport, then show it.\n\n\n isVisible = _this.props.minTopValue ? partialVisible && rect.top <= containmentRect.bottom - _this.props.minTopValue : partialVisible;\n } // Deprecated options for calculating offset.\n\n\n if (typeof offset.direction === \"string\" && typeof offset.value === \"number\") {\n console.warn(\"[notice] offset.direction and offset.value have been deprecated. They still work for now, but will be removed in next major version. Please upgrade to the new syntax: { %s: %d }\", offset.direction, offset.value);\n isVisible = _lib_is_visible_with_offset__WEBPACK_IMPORTED_MODULE_3___default()(offset, rect, containmentRect);\n }\n\n var state = _this.state; // notify the parent when the value changes\n\n if (_this.state.isVisible !== isVisible) {\n state = {\n isVisible: isVisible,\n visibilityRect: visibilityRect\n };\n\n _this.setState(state);\n\n if (_this.props.onChange) _this.props.onChange(isVisible);\n }\n\n return state;\n });\n\n _this.state = {\n isVisible: null,\n visibilityRect: {}\n };\n return _this;\n }\n\n _createClass(VisibilitySensor, [{\n key: \"componentDidMount\",\n value: function componentDidMount() {\n this.node = react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.findDOMNode(this);\n\n if (this.props.active) {\n this.startWatching();\n }\n }\n }, {\n key: \"componentWillUnmount\",\n value: function componentWillUnmount() {\n this.stopWatching();\n }\n }, {\n key: \"componentDidUpdate\",\n value: function componentDidUpdate(prevProps) {\n // re-register node in componentDidUpdate if children diffs [#103]\n this.node = react_dom__WEBPACK_IMPORTED_MODULE_1___default.a.findDOMNode(this);\n\n if (this.props.active && !prevProps.active) {\n this.setState({\n isVisible: null,\n visibilityRect: {}\n });\n this.startWatching();\n } else if (!this.props.active) {\n this.stopWatching();\n }\n }\n }, {\n key: \"roundRectDown\",\n value: function roundRectDown(rect) {\n return {\n top: Math.floor(rect.top),\n left: Math.floor(rect.left),\n bottom: Math.floor(rect.bottom),\n right: Math.floor(rect.right)\n };\n }\n /**\n * Check if the element is within the visible viewport\n */\n\n }, {\n key: \"render\",\n value: function render() {\n if (this.props.children instanceof Function) {\n return this.props.children({\n isVisible: this.state.isVisible,\n visibilityRect: this.state.visibilityRect\n });\n }\n\n return react__WEBPACK_IMPORTED_MODULE_0___default.a.Children.only(this.props.children);\n }\n }]);\n\n return VisibilitySensor;\n}(react__WEBPACK_IMPORTED_MODULE_0___default.a.Component);\n\n_defineProperty(VisibilitySensor, \"defaultProps\", {\n active: true,\n partialVisibility: false,\n minTopValue: 0,\n scrollCheck: false,\n scrollDelay: 250,\n scrollThrottle: -1,\n resizeCheck: false,\n resizeDelay: 250,\n resizeThrottle: -1,\n intervalCheck: true,\n intervalDelay: 100,\n delayedCall: false,\n offset: {},\n containment: null,\n children: react__WEBPACK_IMPORTED_MODULE_0___default.a.createElement(\"span\", null)\n});\n\n_defineProperty(VisibilitySensor, \"propTypes\", {\n onChange: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func,\n active: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n partialVisibility: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool, prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOf([\"top\", \"right\", \"bottom\", \"left\"])]),\n delayedCall: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n offset: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.shape({\n top: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n left: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n bottom: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n right: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number\n }), // deprecated offset property\n prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.shape({\n direction: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOf([\"top\", \"right\", \"bottom\", \"left\"]),\n value: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number\n })]),\n scrollCheck: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n scrollDelay: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n scrollThrottle: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n resizeCheck: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n resizeDelay: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n resizeThrottle: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n intervalCheck: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.bool,\n intervalDelay: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number,\n containment: typeof window !== \"undefined\" ? prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.instanceOf(window.Element) : prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.any,\n children: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.oneOfType([prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.element, prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.func]),\n minTopValue: prop_types__WEBPACK_IMPORTED_MODULE_2___default.a.number\n});\n\n\n\n/***/ }),\n/* 5 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = __webpack_require__(6);\n\nfunction emptyFunction() {}\nfunction emptyFunctionWithReset() {}\nemptyFunctionWithReset.resetWarningCache = emptyFunction;\n\nmodule.exports = function() {\n function shim(props, propName, componentName, location, propFullName, secret) {\n if (secret === ReactPropTypesSecret) {\n // It is still safe when called from React.\n return;\n }\n var err = new Error(\n 'Calling PropTypes validators directly is not supported by the `prop-types` package. ' +\n 'Use PropTypes.checkPropTypes() to call them. ' +\n 'Read more at http://fb.me/use-check-prop-types'\n );\n err.name = 'Invariant Violation';\n throw err;\n };\n shim.isRequired = shim;\n function getShim() {\n return shim;\n };\n // Important!\n // Keep this list in sync with production version in `./factoryWithTypeCheckers.js`.\n var ReactPropTypes = {\n array: shim,\n bool: shim,\n func: shim,\n number: shim,\n object: shim,\n string: shim,\n symbol: shim,\n\n any: shim,\n arrayOf: getShim,\n element: shim,\n elementType: shim,\n instanceOf: getShim,\n node: shim,\n objectOf: getShim,\n oneOf: getShim,\n oneOfType: getShim,\n shape: getShim,\n exact: getShim,\n\n checkPropTypes: emptyFunctionWithReset,\n resetWarningCache: emptyFunction\n };\n\n ReactPropTypes.PropTypes = ReactPropTypes;\n\n return ReactPropTypes;\n};\n\n\n/***/ }),\n/* 6 */\n/***/ (function(module, exports, __webpack_require__) {\n\n\"use strict\";\n/**\n * Copyright (c) 2013-present, Facebook, Inc.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\n\n\nvar ReactPropTypesSecret = 'SECRET_DO_NOT_PASS_THIS_OR_YOU_WILL_BE_FIRED';\n\nmodule.exports = ReactPropTypesSecret;\n\n\n/***/ })\n/******/ ]);\n});","/**\n * @license React\n * react-jsx-runtime.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var f=require(\"react\"),k=Symbol.for(\"react.element\"),l=Symbol.for(\"react.fragment\"),m=Object.prototype.hasOwnProperty,n=f.__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED.ReactCurrentOwner,p={key:!0,ref:!0,__self:!0,__source:!0};\nfunction q(c,a,g){var b,d={},e=null,h=null;void 0!==g&&(e=\"\"+g);void 0!==a.key&&(e=\"\"+a.key);void 0!==a.ref&&(h=a.ref);for(b in a)m.call(a,b)&&!p.hasOwnProperty(b)&&(d[b]=a[b]);if(c&&c.defaultProps)for(b in a=c.defaultProps,a)void 0===d[b]&&(d[b]=a[b]);return{$$typeof:k,type:c,key:e,ref:h,props:d,_owner:n.current}}exports.Fragment=l;exports.jsx=q;exports.jsxs=q;\n","/**\n * @license React\n * react.production.min.js\n *\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n'use strict';var l=Symbol.for(\"react.element\"),n=Symbol.for(\"react.portal\"),p=Symbol.for(\"react.fragment\"),q=Symbol.for(\"react.strict_mode\"),r=Symbol.for(\"react.profiler\"),t=Symbol.for(\"react.provider\"),u=Symbol.for(\"react.context\"),v=Symbol.for(\"react.forward_ref\"),w=Symbol.for(\"react.suspense\"),x=Symbol.for(\"react.memo\"),y=Symbol.for(\"react.lazy\"),z=Symbol.iterator;function A(a){if(null===a||\"object\"!==typeof a)return null;a=z&&a[z]||a[\"@@iterator\"];return\"function\"===typeof a?a:null}\nvar B={isMounted:function(){return!1},enqueueForceUpdate:function(){},enqueueReplaceState:function(){},enqueueSetState:function(){}},C=Object.assign,D={};function E(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}E.prototype.isReactComponent={};\nE.prototype.setState=function(a,b){if(\"object\"!==typeof a&&\"function\"!==typeof a&&null!=a)throw Error(\"setState(...): takes an object of state variables to update or a function which returns an object of state variables.\");this.updater.enqueueSetState(this,a,b,\"setState\")};E.prototype.forceUpdate=function(a){this.updater.enqueueForceUpdate(this,a,\"forceUpdate\")};function F(){}F.prototype=E.prototype;function G(a,b,e){this.props=a;this.context=b;this.refs=D;this.updater=e||B}var H=G.prototype=new F;\nH.constructor=G;C(H,E.prototype);H.isPureReactComponent=!0;var I=Array.isArray,J=Object.prototype.hasOwnProperty,K={current:null},L={key:!0,ref:!0,__self:!0,__source:!0};\nfunction M(a,b,e){var d,c={},k=null,h=null;if(null!=b)for(d in void 0!==b.ref&&(h=b.ref),void 0!==b.key&&(k=\"\"+b.key),b)J.call(b,d)&&!L.hasOwnProperty(d)&&(c[d]=b[d]);var g=arguments.length-2;if(1===g)c.children=e;else if(1>>1,e=a[d];if(0>>1;dg(C,c))ng(x,C)?(a[d]=x,a[n]=c,d=n):(a[d]=C,a[m]=c,d=m);else if(ng(x,c))a[d]=x,a[n]=c,d=n;else break a}}return b}\nfunction g(a,b){var c=a.sortIndex-b.sortIndex;return 0!==c?c:a.id-b.id}if(\"object\"===typeof performance&&\"function\"===typeof performance.now){var l=performance;exports.unstable_now=function(){return l.now()}}else{var p=Date,q=p.now();exports.unstable_now=function(){return p.now()-q}}var r=[],t=[],u=1,v=null,y=3,z=!1,A=!1,B=!1,D=\"function\"===typeof setTimeout?setTimeout:null,E=\"function\"===typeof clearTimeout?clearTimeout:null,F=\"undefined\"!==typeof setImmediate?setImmediate:null;\n\"undefined\"!==typeof navigator&&void 0!==navigator.scheduling&&void 0!==navigator.scheduling.isInputPending&&navigator.scheduling.isInputPending.bind(navigator.scheduling);function G(a){for(var b=h(t);null!==b;){if(null===b.callback)k(t);else if(b.startTime<=a)k(t),b.sortIndex=b.expirationTime,f(r,b);else break;b=h(t)}}function H(a){B=!1;G(a);if(!A)if(null!==h(r))A=!0,I(J);else{var b=h(t);null!==b&&K(H,b.startTime-a)}}\nfunction J(a,b){A=!1;B&&(B=!1,E(L),L=-1);z=!0;var c=y;try{G(b);for(v=h(r);null!==v&&(!(v.expirationTime>b)||a&&!M());){var d=v.callback;if(\"function\"===typeof d){v.callback=null;y=v.priorityLevel;var e=d(v.expirationTime<=b);b=exports.unstable_now();\"function\"===typeof e?v.callback=e:v===h(r)&&k(r);G(b)}else k(r);v=h(r)}if(null!==v)var w=!0;else{var m=h(t);null!==m&&K(H,m.startTime-b);w=!1}return w}finally{v=null,y=c,z=!1}}var N=!1,O=null,L=-1,P=5,Q=-1;\nfunction M(){return exports.unstable_now()-Qa||125d?(a.sortIndex=c,f(t,a),null===h(r)&&a===h(t)&&(B?(E(L),L=-1):B=!0,K(H,c-d))):(a.sortIndex=e,f(r,a),A||z||(A=!0,I(J)));return a};\nexports.unstable_shouldYield=M;exports.unstable_wrapCallback=function(a){var b=y;return function(){var c=y;y=b;try{return a.apply(this,arguments)}finally{y=c}}};\n","'use strict';\n\nif (process.env.NODE_ENV === 'production') {\n module.exports = require('./cjs/scheduler.production.min.js');\n} else {\n module.exports = require('./cjs/scheduler.development.js');\n}\n","/* global process */\n\nimport createSpeechRecognitionPonyfill, {\n createSpeechRecognitionPonyfillFromRecognizer\n} from './SpeechServices/SpeechToText';\nimport createSpeechSynthesisPonyfill from './SpeechServices/TextToSpeech';\nimport fetchAuthorizationToken from './SpeechServices/fetchAuthorizationToken';\n\nexport default function createSpeechServicesPonyfill(options = {}, ...args) {\n const ponyfill = {\n ...createSpeechRecognitionPonyfill(options, ...args),\n ...createSpeechSynthesisPonyfill(options, ...args)\n };\n\n return {\n ...ponyfill,\n then: resolve => {\n console.warn(\n 'web-speech-cognitive-services: This function no longer need to be called in an asynchronous fashion. Please update your code. We will remove this Promise.then function on or after 2020-08-10.'\n );\n\n resolve(ponyfill);\n }\n };\n}\n\nexport {\n createSpeechRecognitionPonyfill,\n createSpeechRecognitionPonyfillFromRecognizer,\n createSpeechSynthesisPonyfill,\n fetchAuthorizationToken\n}\n\nconst meta = document.createElement('meta');\n\nmeta.setAttribute('name', 'web-speech-cognitive-services');\nmeta.setAttribute('content', `version=${ process.env.npm_package_version }`);\n\ndocument.head.appendChild(meta);\n","// We are only importing what we need.\n\nimport {\n AudioConfig,\n OutputFormat,\n ResultReason,\n SpeechConfig,\n SpeechRecognizer\n} from 'microsoft-cognitiveservices-speech-sdk/distrib/lib/microsoft.cognitiveservices.speech.sdk';\n\nexport default {\n AudioConfig,\n OutputFormat,\n ResultReason,\n SpeechConfig,\n SpeechRecognizer\n};\n","import createSpeechRecognitionPonyfill, {\n createSpeechRecognitionPonyfillFromRecognizer\n} from './SpeechToText/createSpeechRecognitionPonyfill';\n\nexport default createSpeechRecognitionPonyfill;\n\nexport { createSpeechRecognitionPonyfillFromRecognizer };\n","/* eslint class-methods-use-this: \"off\" */\n\nexport default class {\n constructor() {\n this._phrases = [];\n }\n\n addFromString() {\n throw new Error('JSGF is not supported');\n }\n\n get phrases() {\n return this._phrases;\n }\n\n set phrases(value) {\n if (Array.isArray(value)) {\n this._phrases = value;\n } else if (typeof value === 'string') {\n this._phrases = [value];\n } else {\n throw new Error(`The provided value is not an array or of type 'string'`);\n }\n }\n}\n","import arrayToMap from '../../Util/arrayToMap';\nimport SpeechSDK from '../SpeechSDK';\n\nconst {\n ResultReason: { RecognizingSpeech, RecognizedSpeech }\n} = SpeechSDK;\n\nexport default function(result, { maxAlternatives = Infinity, textNormalization = 'display' } = {}) {\n if (result.reason === RecognizingSpeech || (result.reason === RecognizedSpeech && !result.json.NBest)) {\n const resultList = [\n {\n confidence: 0.5,\n transcript: result.text\n }\n ];\n\n if (result.reason === RecognizedSpeech) {\n resultList.isFinal = true;\n }\n\n return resultList;\n } else if (result.reason === RecognizedSpeech) {\n const resultList = arrayToMap(\n (result.json.NBest || [])\n .slice(0, maxAlternatives)\n .map(({ Confidence: confidence, Display: display, ITN: itn, Lexical: lexical, MaskedITN: maskedITN }) => ({\n confidence,\n transcript:\n textNormalization === 'itn'\n ? itn\n : textNormalization === 'lexical'\n ? lexical\n : textNormalization === 'maskeditn'\n ? maskedITN\n : display\n })),\n { isFinal: true }\n );\n\n return resultList;\n }\n\n return [];\n}\n","/* eslint class-methods-use-this: \"off\" */\n/* eslint complexity: [\"error\", 70] */\n/* eslint no-await-in-loop: \"off\" */\n/* eslint no-empty-function: \"off\" */\n/* eslint no-magic-numbers: [\"error\", { \"ignore\": [0, 100, 150] }] */\n\nimport { Event, EventTarget, getEventAttributeValue, setEventAttributeValue } from 'event-target-shim/es5';\n\nimport cognitiveServiceEventResultToWebSpeechRecognitionResultList from './cognitiveServiceEventResultToWebSpeechRecognitionResultList';\nimport createPromiseQueue from '../../Util/createPromiseQueue';\nimport patchOptions from '../patchOptions';\nimport SpeechGrammarList from './SpeechGrammarList';\nimport SpeechSDK from '../SpeechSDK';\n\n// https://docs.microsoft.com/en-us/javascript/api/microsoft-cognitiveservices-speech-sdk/speechconfig?view=azure-node-latest#outputformat\n// {\n// \"RecognitionStatus\": \"Success\",\n// \"Offset\": 900000,\n// \"Duration\": 49000000,\n// \"NBest\": [\n// {\n// \"Confidence\": 0.738919,\n// \"Lexical\": \"second\",\n// \"ITN\": \"second\",\n// \"MaskedITN\": \"second\",\n// \"Display\": \"Second.\"\n// }\n// ]\n// }\n\n// {\n// \"RecognitionStatus\": \"InitialSilenceTimeout\",\n// \"Offset\": 50000000,\n// \"Duration\": 0\n// }\n\nconst { AudioConfig, OutputFormat, ResultReason, SpeechConfig, SpeechRecognizer } = SpeechSDK;\n\nfunction serializeRecognitionResult({ duration, errorDetails, json, offset, properties, reason, resultId, text }) {\n return {\n duration,\n errorDetails,\n json: JSON.parse(json),\n offset,\n properties,\n reason,\n resultId,\n text\n };\n}\n\nfunction averageAmplitude(arrayBuffer) {\n const array = new Int16Array(arrayBuffer);\n\n return (\n [].reduce.call(array, (averageAmplitude, amplitude) => averageAmplitude + Math.abs(amplitude), 0) / array.length\n );\n}\n\nfunction cognitiveServicesAsyncToPromise(fn) {\n return (...args) => new Promise((resolve, reject) => fn(...args, resolve, reject));\n}\n\nclass SpeechRecognitionEvent extends Event {\n constructor(type, { data, emma, interpretation, resultIndex, results } = {}) {\n super(type);\n\n this.data = data;\n this.emma = emma;\n this.interpretation = interpretation;\n this.resultIndex = resultIndex;\n this.results = results;\n }\n}\n\nfunction prepareAudioConfig(audioConfig) {\n const originalAttach = audioConfig.attach;\n const boundOriginalAttach = audioConfig.attach.bind(audioConfig);\n let firstChunk;\n let muted;\n\n // We modify \"attach\" function and detect when audible chunk is read.\n // We will only modify \"attach\" function once.\n audioConfig.attach = async () => {\n const reader = await boundOriginalAttach();\n\n return {\n ...reader,\n read: async () => {\n const chunk = await reader.read();\n\n // The magic number 150 is measured by:\n // 1. Set microphone volume to 0\n // 2. Observe the amplitude (100-110) for the first few chunks\n // (There is a short static caught when turning on the microphone)\n // 3. Set the number a bit higher than the observation\n\n if (!firstChunk && averageAmplitude(chunk.buffer) > 150) {\n audioConfig.events.onEvent({ name: 'FirstAudibleChunk' });\n firstChunk = true;\n }\n\n if (muted) {\n return { buffer: new ArrayBuffer(0), isEnd: true, timeReceived: Date.now() };\n }\n\n return chunk;\n }\n };\n };\n\n return {\n audioConfig,\n pause: () => {\n muted = true;\n },\n unprepare: () => {\n audioConfig.attach = originalAttach;\n }\n };\n}\n\nexport function createSpeechRecognitionPonyfillFromRecognizer({\n createRecognizer,\n enableTelemetry,\n looseEvents,\n referenceGrammars,\n textNormalization\n}) {\n // If enableTelemetry is set to null or non-boolean, we will default to true.\n SpeechRecognizer.enableTelemetry(enableTelemetry !== false);\n\n class SpeechRecognition extends EventTarget {\n constructor() {\n super();\n\n this._continuous = false;\n this._interimResults = false;\n this._lang =\n typeof window !== 'undefined'\n ? window.document.documentElement.getAttribute('lang') || window.navigator.language\n : 'en-US';\n this._grammars = new SpeechGrammarList();\n this._maxAlternatives = 1;\n }\n\n emitCognitiveServices(type, event) {\n this.dispatchEvent(\n new SpeechRecognitionEvent('cognitiveservices', {\n data: {\n ...event,\n type\n }\n })\n );\n }\n\n get continuous() {\n return this._continuous;\n }\n\n set continuous(value) {\n this._continuous = value;\n }\n\n get grammars() {\n return this._grammars;\n }\n\n set grammars(value) {\n if (value instanceof SpeechGrammarList) {\n this._grammars = value;\n } else {\n throw new Error(`The provided value is not of type 'SpeechGrammarList'`);\n }\n }\n\n get interimResults() {\n return this._interimResults;\n }\n\n set interimResults(value) {\n this._interimResults = value;\n }\n\n get maxAlternatives() {\n return this._maxAlternatives;\n }\n\n set maxAlternatives(value) {\n this._maxAlternatives = value;\n }\n\n get lang() {\n return this._lang;\n }\n\n set lang(value) {\n this._lang = value;\n }\n\n get onaudioend() {\n return getEventAttributeValue(this, 'audioend');\n }\n\n set onaudioend(value) {\n setEventAttributeValue(this, 'audioend', value);\n }\n\n get onaudiostart() {\n return getEventAttributeValue(this, 'audiostart');\n }\n\n set onaudiostart(value) {\n setEventAttributeValue(this, 'audiostart', value);\n }\n\n get oncognitiveservices() {\n return getEventAttributeValue(this, 'cognitiveservices');\n }\n\n set oncognitiveservices(value) {\n setEventAttributeValue(this, 'cognitiveservices', value);\n }\n\n get onend() {\n return getEventAttributeValue(this, 'end');\n }\n\n set onend(value) {\n setEventAttributeValue(this, 'end', value);\n }\n\n get onerror() {\n return getEventAttributeValue(this, 'error');\n }\n\n set onerror(value) {\n setEventAttributeValue(this, 'error', value);\n }\n\n get onresult() {\n return getEventAttributeValue(this, 'result');\n }\n\n set onresult(value) {\n setEventAttributeValue(this, 'result', value);\n }\n\n get onsoundend() {\n return getEventAttributeValue(this, 'soundend');\n }\n\n set onsoundend(value) {\n setEventAttributeValue(this, 'soundend', value);\n }\n\n get onsoundstart() {\n return getEventAttributeValue(this, 'soundstart');\n }\n\n set onsoundstart(value) {\n setEventAttributeValue(this, 'soundstart', value);\n }\n\n get onspeechend() {\n return getEventAttributeValue(this, 'speechend');\n }\n\n set onspeechend(value) {\n setEventAttributeValue(this, 'speechend', value);\n }\n\n get onspeechstart() {\n return getEventAttributeValue(this, 'speechstart');\n }\n\n set onspeechstart(value) {\n setEventAttributeValue(this, 'speechstart', value);\n }\n\n get onstart() {\n return getEventAttributeValue(this, 'start');\n }\n\n set onstart(value) {\n setEventAttributeValue(this, 'start', value);\n }\n\n start() {\n this._startOnce().catch(err => {\n this.dispatchEvent(new ErrorEvent('error', { error: err, message: err && (err.stack || err.message) }));\n });\n }\n\n async _startOnce() {\n // TODO: [P2] Should check if recognition is active, we should not start recognition twice\n const recognizer = await createRecognizer(this.lang);\n\n const { pause, unprepare } = prepareAudioConfig(recognizer.audioConfig);\n\n try {\n const queue = createPromiseQueue();\n let soundStarted;\n let speechStarted;\n let stopping;\n\n const { detach: detachAudioConfigEvent } = recognizer.audioConfig.events.attach(event => {\n const { name } = event;\n\n if (name === 'AudioSourceReadyEvent') {\n queue.push({ audioSourceReady: {} });\n } else if (name === 'AudioSourceOffEvent') {\n queue.push({ audioSourceOff: {} });\n } else if (name === 'FirstAudibleChunk') {\n queue.push({ firstAudibleChunk: {} });\n }\n });\n\n recognizer.canceled = (_, { errorDetails, offset, reason, sessionId }) => {\n queue.push({\n canceled: {\n errorDetails,\n offset,\n reason,\n sessionId\n }\n });\n };\n\n recognizer.recognized = (_, { offset, result, sessionId }) => {\n queue.push({\n recognized: {\n offset,\n result: serializeRecognitionResult(result),\n sessionId\n }\n });\n };\n\n recognizer.recognizing = (_, { offset, result, sessionId }) => {\n queue.push({\n recognizing: {\n offset,\n result: serializeRecognitionResult(result),\n sessionId\n }\n });\n };\n\n recognizer.sessionStarted = (_, { sessionId }) => {\n queue.push({ sessionStarted: { sessionId } });\n };\n\n recognizer.sessionStopped = (_, { sessionId }) => {\n // \"sessionStopped\" is never fired, probably because we are using startContinuousRecognitionAsync instead of recognizeOnceAsync.\n queue.push({ sessionStopped: { sessionId } });\n };\n\n recognizer.speechStartDetected = (_, { offset, sessionId }) => {\n queue.push({ speechStartDetected: { offset, sessionId } });\n };\n\n recognizer.speechEndDetected = (_, { sessionId }) => {\n // \"speechEndDetected\" is never fired, probably because we are using startContinuousRecognitionAsync instead of recognizeOnceAsync.\n // Update: \"speechEndDetected\" is fired for DLSpeech.listenOnceAsync()\n queue.push({ speechEndDetected: { sessionId } });\n };\n\n const { phrases } = this.grammars;\n\n // HACK: We are using the internal of SpeechRecognizer because they did not expose it\n const { dynamicGrammar } = recognizer.privReco;\n\n referenceGrammars && referenceGrammars.length && dynamicGrammar.addReferenceGrammar(referenceGrammars);\n phrases && phrases.length && dynamicGrammar.addPhrase(phrases);\n\n await cognitiveServicesAsyncToPromise(recognizer.startContinuousRecognitionAsync.bind(recognizer))();\n\n if (recognizer.stopContinuousRecognitionAsync) {\n this.abort = () => queue.push({ abort: {} });\n this.stop = () => queue.push({ stop: {} });\n } else {\n this.abort = this.stop = undefined;\n }\n\n let audioStarted;\n let finalEvent;\n let finalizedResults = [];\n\n for (let loop = 0; !stopping || audioStarted; loop++) {\n const event = await queue.shift();\n const {\n abort,\n audioSourceOff,\n audioSourceReady,\n canceled,\n firstAudibleChunk,\n recognized,\n recognizing,\n stop\n } = event;\n\n // We are emitting event \"cognitiveservices\" for debugging purpose.\n Object.keys(event).forEach(name => this.emitCognitiveServices(name, event[name]));\n\n const errorMessage = canceled && canceled.errorDetails;\n\n if (/Permission\\sdenied/u.test(errorMessage || '')) {\n // If microphone is not allowed, we should not emit \"start\" event.\n\n finalEvent = {\n error: 'not-allowed',\n type: 'error'\n };\n\n break;\n }\n\n if (!loop) {\n this.dispatchEvent(new SpeechRecognitionEvent('start'));\n }\n\n if (errorMessage) {\n if (/1006/u.test(errorMessage)) {\n if (!audioStarted) {\n this.dispatchEvent(new SpeechRecognitionEvent('audiostart'));\n this.dispatchEvent(new SpeechRecognitionEvent('audioend'));\n }\n\n finalEvent = {\n error: 'network',\n type: 'error'\n };\n } else {\n finalEvent = {\n error: 'unknown',\n type: 'error'\n };\n }\n\n break;\n } else if (abort || stop) {\n if (abort) {\n finalEvent = {\n error: 'aborted',\n type: 'error'\n };\n\n // If we are aborting, we will ignore lingering recognizing/recognized events. But if we are stopping, we need them.\n stopping = 'abort';\n } else {\n // When we pause, we will send { isEnd: true }, Speech Services will send us \"recognized\" event.\n pause();\n stopping = 'stop';\n }\n\n // Abort should not be dispatched without support of \"stopContinuousRecognitionAsync\".\n // But for defensive purpose, we make sure \"stopContinuousRecognitionAsync\" is available before we can call.\n if (abort && recognizer.stopContinuousRecognitionAsync) {\n await cognitiveServicesAsyncToPromise(recognizer.stopContinuousRecognitionAsync.bind(recognizer))();\n }\n } else if (audioSourceReady) {\n this.dispatchEvent(new SpeechRecognitionEvent('audiostart'));\n\n audioStarted = true;\n } else if (firstAudibleChunk) {\n this.dispatchEvent(new SpeechRecognitionEvent('soundstart'));\n\n soundStarted = true;\n } else if (audioSourceOff) {\n // Looks like we don't need this line and all the tests are still working.\n // Guessing probably stopping is already truthy.\n // stopping = true;\n\n speechStarted && this.dispatchEvent(new SpeechRecognitionEvent('speechend'));\n soundStarted && this.dispatchEvent(new SpeechRecognitionEvent('soundend'));\n audioStarted && this.dispatchEvent(new SpeechRecognitionEvent('audioend'));\n\n audioStarted = soundStarted = speechStarted = false;\n\n break;\n } else if (stopping !== 'abort') {\n if (recognized && recognized.result && recognized.result.reason === ResultReason.NoMatch) {\n finalEvent = {\n error: 'no-speech',\n type: 'error'\n };\n } else if (recognized || recognizing) {\n if (!audioStarted) {\n // Unconfirmed prevention of quirks\n this.dispatchEvent(new SpeechRecognitionEvent('audiostart'));\n\n audioStarted = true;\n }\n\n if (!soundStarted) {\n this.dispatchEvent(new SpeechRecognitionEvent('soundstart'));\n\n soundStarted = true;\n }\n\n if (!speechStarted) {\n this.dispatchEvent(new SpeechRecognitionEvent('speechstart'));\n\n speechStarted = true;\n }\n\n if (recognized) {\n const result = cognitiveServiceEventResultToWebSpeechRecognitionResultList(recognized.result, {\n maxAlternatives: this.maxAlternatives,\n textNormalization\n });\n\n const recognizable = !!result[0].transcript;\n\n if (recognizable) {\n finalizedResults = [...finalizedResults, result];\n\n this.continuous &&\n this.dispatchEvent(\n new SpeechRecognitionEvent('result', {\n results: finalizedResults\n })\n );\n }\n\n // If it is continuous, we just sent the finalized results. So we don't need to send it again after \"audioend\" event.\n if (this.continuous && recognizable) {\n finalEvent = null;\n } else {\n finalEvent = {\n results: finalizedResults,\n type: 'result'\n };\n }\n\n if (!this.continuous && recognizer.stopContinuousRecognitionAsync) {\n await cognitiveServicesAsyncToPromise(recognizer.stopContinuousRecognitionAsync.bind(recognizer))();\n }\n\n // If event order can be loosened, we can send the recognized event as soon as we receive it.\n // 1. If it is not recognizable (no-speech), we should send an \"error\" event just before \"end\" event. We will not loosen \"error\" events.\n if (looseEvents && finalEvent && recognizable) {\n this.dispatchEvent(new SpeechRecognitionEvent(finalEvent.type, finalEvent));\n finalEvent = null;\n }\n } else if (recognizing) {\n this.interimResults &&\n this.dispatchEvent(\n new SpeechRecognitionEvent('result', {\n results: [\n ...finalizedResults,\n cognitiveServiceEventResultToWebSpeechRecognitionResultList(recognizing.result, {\n maxAlternatives: this.maxAlternatives,\n textNormalization\n })\n ]\n })\n );\n }\n }\n }\n }\n\n if (speechStarted) {\n this.dispatchEvent(new SpeechRecognitionEvent('speechend'));\n }\n\n if (soundStarted) {\n this.dispatchEvent(new SpeechRecognitionEvent('soundend'));\n }\n\n if (audioStarted) {\n this.dispatchEvent(new SpeechRecognitionEvent('audioend'));\n }\n\n if (finalEvent) {\n if (finalEvent.type === 'result' && !finalEvent.results.length) {\n finalEvent = {\n error: 'no-speech',\n type: 'error'\n };\n }\n\n if (finalEvent.type === 'error') {\n this.dispatchEvent(new ErrorEvent('error', finalEvent));\n } else {\n this.dispatchEvent(new SpeechRecognitionEvent(finalEvent.type, finalEvent));\n }\n }\n\n // Even though there is no \"start\" event emitted, we will still emit \"end\" event\n // This is mainly for \"microphone blocked\" story.\n this.dispatchEvent(new SpeechRecognitionEvent('end'));\n\n detachAudioConfigEvent();\n } catch (err) {\n // Logging out the erorr because Speech SDK would fail silently.\n console.error(err);\n\n throw err;\n } finally {\n unprepare();\n recognizer.dispose();\n }\n }\n }\n\n return {\n SpeechGrammarList,\n SpeechRecognition,\n SpeechRecognitionEvent\n };\n}\n\nexport default options => {\n const {\n audioConfig = AudioConfig.fromDefaultMicrophoneInput(),\n\n // We set telemetry to true to honor the default telemetry settings of Speech SDK\n // https://github.com/Microsoft/cognitive-services-speech-sdk-js#data--telemetry\n enableTelemetry = true,\n\n fetchCredentials,\n looseEvents,\n referenceGrammars,\n speechRecognitionEndpointId,\n textNormalization = 'display'\n } = patchOptions(options);\n\n if (!audioConfig && (!window.navigator.mediaDevices || !window.navigator.mediaDevices.getUserMedia)) {\n console.warn(\n 'web-speech-cognitive-services: This browser does not support WebRTC and it will not work with Cognitive Services Speech Services.'\n );\n\n return {};\n }\n\n const createRecognizer = async lang => {\n const { authorizationToken, region, speechRecognitionHostname, subscriptionKey } = await fetchCredentials();\n let speechConfig;\n\n if (speechRecognitionHostname) {\n const host = { hostname: speechRecognitionHostname, port: 443, protocol: 'wss:' };\n\n if (authorizationToken) {\n speechConfig = SpeechConfig.fromHost(host);\n speechConfig.authorizationToken = authorizationToken;\n } else {\n speechConfig = SpeechConfig.fromHost(host, subscriptionKey);\n }\n } else {\n speechConfig = authorizationToken\n ? SpeechConfig.fromAuthorizationToken(authorizationToken, region)\n : SpeechConfig.fromSubscription(subscriptionKey, region);\n }\n\n if (speechRecognitionEndpointId) {\n speechConfig.endpointId = speechRecognitionEndpointId;\n }\n\n speechConfig.outputFormat = OutputFormat.Detailed;\n speechConfig.speechRecognitionLanguage = lang || 'en-US';\n\n return new SpeechRecognizer(speechConfig, audioConfig);\n };\n\n return createSpeechRecognitionPonyfillFromRecognizer({\n audioConfig,\n createRecognizer,\n enableTelemetry,\n looseEvents,\n referenceGrammars,\n textNormalization\n });\n};\n","import createSpeechSynthesisPonyfill from './TextToSpeech/createSpeechSynthesisPonyfill';\n\nexport default createSpeechSynthesisPonyfill;\n","/* eslint no-await-in-loop: \"off\" */\n\nexport default class {\n constructor(audioContext) {\n this.audioContext = audioContext;\n }\n\n pause() {\n this.audioContext && this.audioContext.suspend();\n this.playingUtterance && this.playingUtterance.dispatchEvent(new CustomEvent('pause'));\n }\n\n resume() {\n this.audioContext && this.audioContext.resume();\n this.playingUtterance && this.playingUtterance.dispatchEvent(new CustomEvent('resume'));\n }\n\n async start(queue) {\n let utterance;\n\n while ((utterance = queue.shift())) {\n this.playingUtterance = utterance;\n\n await utterance.play(this.audioContext);\n\n this.playingUtterance = null;\n }\n }\n\n stop() {\n this.playingUtterance && this.playingUtterance.stop();\n\n if (this.audioContext.state === 'suspended') {\n // Play -> Pause -> Cancel (stop)\n // This would generate these events: \"start\", \"pause\", \"end\"\n\n // Without this code, the \"end\" event will not emit until resume() is called\n // Cancelling an unstarted utterance will not emit any \"start\" or \"end\" event\n this.audioContext.resume();\n }\n }\n}\n","/* eslint no-await-in-loop: \"off\" */\n\nimport memoize from 'memoize-one';\n\nimport AudioContextConsumer from './AudioContextConsumer';\n\nexport default class {\n constructor({ audioContext, ponyfill }) {\n this.consumer = null;\n this.paused = false;\n this.queue = [];\n\n this.getAudioContext = memoize(() => audioContext || new ponyfill.AudioContext());\n }\n\n pause() {\n this.paused = true;\n this.consumer && this.consumer.pause();\n }\n\n push(utterance) {\n this.queue.push(utterance);\n this.startConsumer();\n }\n\n resume() {\n this.paused = false;\n\n if (this.consumer) {\n this.consumer.resume();\n } else {\n this.startConsumer();\n }\n }\n\n get speaking() {\n return !!this.consumer;\n }\n\n async startConsumer() {\n while (!this.paused && this.queue.length && !this.consumer) {\n this.consumer = new AudioContextConsumer(this.getAudioContext());\n\n await this.consumer.start(this.queue);\n\n this.consumer = null;\n }\n }\n\n stop() {\n this.queue.splice(0);\n this.consumer && this.consumer.stop();\n }\n}\n","import { Event } from 'event-target-shim/es5';\n\nexport default class SpeechSynthesisEvent extends Event {\n constructor(type) {\n super(type);\n }\n}\n","/* eslint no-empty: [\"error\", { \"allowEmptyCatch\": true }] */\n\nimport { EventTarget, getEventAttributeValue, setEventAttributeValue } from 'event-target-shim/es5';\nimport EventAsPromise from 'event-as-promise';\n\nimport fetchSpeechData from './fetchSpeechData';\nimport SpeechSynthesisEvent from './SpeechSynthesisEvent';\nimport subscribeEvent from './subscribeEvent';\n\nfunction asyncDecodeAudioData(audioContext, arrayBuffer) {\n return new Promise((resolve, reject) => {\n const promise = audioContext.decodeAudioData(arrayBuffer, resolve, reject);\n\n // Newer implementation of \"decodeAudioData\" will return a Promise\n promise && typeof promise.then === 'function' && resolve(promise);\n });\n}\n\nfunction playDecoded(audioContext, audioBuffer, source) {\n return new Promise((resolve, reject) => {\n const audioContextClosed = new EventAsPromise();\n const sourceEnded = new EventAsPromise();\n const unsubscribe = subscribeEvent(\n audioContext,\n 'statechange',\n ({ target: { state } }) => state === 'closed' && audioContextClosed.eventListener()\n );\n\n try {\n source.buffer = audioBuffer;\n // \"ended\" may not fire if the underlying AudioContext is closed prematurely\n source.onended = sourceEnded.eventListener;\n\n source.connect(audioContext.destination);\n source.start(0);\n\n Promise.race([audioContextClosed.upcoming(), sourceEnded.upcoming()]).then(resolve);\n } catch (err) {\n reject(err);\n } finally {\n unsubscribe();\n }\n });\n}\n\nclass SpeechSynthesisUtterance extends EventTarget {\n constructor(text) {\n super();\n\n this._lang = null;\n this._pitch = 1;\n this._rate = 1;\n this._voice = null;\n this._volume = 1;\n\n this.text = text;\n\n this.onboundary = null;\n this.onend = null;\n this.onerror = null;\n this.onmark = null;\n this.onpause = null;\n this.onresume = null;\n this.onstart = null;\n }\n\n get lang() {\n return this._lang;\n }\n\n set lang(value) {\n this._lang = value;\n }\n\n get onboundary() {\n return getEventAttributeValue(this, 'boundary');\n }\n\n set onboundary(value) {\n setEventAttributeValue(this, 'boundary', value);\n }\n\n get onend() {\n return getEventAttributeValue(this, 'end');\n }\n\n set onend(value) {\n setEventAttributeValue(this, 'end', value);\n }\n\n get onerror() {\n return getEventAttributeValue(this, 'error');\n }\n\n set onerror(value) {\n setEventAttributeValue(this, 'error', value);\n }\n\n get onmark() {\n return getEventAttributeValue(this, 'mark');\n }\n\n set onmark(value) {\n setEventAttributeValue(this, 'mark', value);\n }\n\n get onpause() {\n return getEventAttributeValue(this, 'pause');\n }\n\n set onpause(value) {\n setEventAttributeValue(this, 'pause', value);\n }\n\n get onresume() {\n return getEventAttributeValue(this, 'resume');\n }\n\n set onresume(value) {\n setEventAttributeValue(this, 'resume', value);\n }\n\n get onstart() {\n return getEventAttributeValue(this, 'start');\n }\n\n set onstart(value) {\n setEventAttributeValue(this, 'start', value);\n }\n\n get pitch() {\n return this._pitch;\n }\n\n set pitch(value) {\n this._pitch = value;\n }\n\n get rate() {\n return this._rate;\n }\n\n set rate(value) {\n this._rate = value;\n }\n\n get voice() {\n return this._voice;\n }\n\n set voice(value) {\n this._voice = value;\n }\n\n get volume() {\n return this._volume;\n }\n\n set volume(value) {\n this._volume = value;\n }\n\n preload({ deploymentId, fetchCredentials, outputFormat }) {\n this.arrayBufferPromise = fetchSpeechData({\n fetchCredentials,\n deploymentId,\n lang: this.lang || window.navigator.language,\n outputFormat,\n pitch: this.pitch,\n rate: this.rate,\n text: this.text,\n voice: this.voice && this.voice.voiceURI,\n volume: this.volume\n });\n\n // We need to call \"catch\" to make sure the Promise is running.\n // We will ignore the reject result and handled in play() later.\n this.arrayBufferPromise.catch();\n }\n\n async play(audioContext) {\n try {\n // We should emit \"start\" event even if preload() failed.\n this.dispatchEvent(new SpeechSynthesisEvent('start'));\n\n // HACK: iOS requires bufferSourceNode to be constructed before decoding data.\n const source = audioContext.createBufferSource();\n const audioBuffer = await asyncDecodeAudioData(audioContext, await this.arrayBufferPromise);\n\n this._playingSource = source;\n\n await playDecoded(audioContext, audioBuffer, source);\n\n this._playingSource = null;\n this.dispatchEvent(new SpeechSynthesisEvent('end'));\n } catch (error) {\n // \"message\" is not in spec but to provide a friendly message.\n this.dispatchEvent(new ErrorEvent('error', { error: 'synthesis-failed', message: error.stack }));\n }\n }\n\n stop() {\n this._playingSource && this._playingSource.stop();\n }\n}\n\nexport default SpeechSynthesisUtterance;\n","export default class {\n constructor({ gender, lang, voiceURI }) {\n this._default = false;\n this._gender = gender;\n this._lang = lang;\n this._localService = false;\n this._name = voiceURI;\n this._voiceURI = voiceURI;\n }\n\n get default() {\n return this._default;\n }\n\n get gender() {\n return this._gender;\n }\n\n get lang() {\n return this._lang;\n }\n\n get localService() {\n return this._localService;\n }\n\n get name() {\n return this._name;\n }\n\n get voiceURI() {\n return this._voiceURI;\n }\n}\n","/* eslint no-magic-numbers: [\"error\", { \"ignore\": [0, 1, 100] }] */\n\n// Cognitive Services does not support unsigned percentage\n// It must be converted into +/- first.\nfunction relativePercentage(value) {\n let relative = Math.round((value - 1) * 100);\n\n if (relative >= 0) {\n relative = '+' + relative;\n }\n\n return relative + '%';\n}\n\nexport default function buildSSML({ lang, pitch = 1, rate = 1, text, voice, volume }) {\n return `\n \n \n ${ text }\n \n \n`;\n}\n","/* eslint class-methods-use-this: 0 */\n\nimport { EventTarget, getEventAttributeValue, setEventAttributeValue } from 'event-target-shim/es5';\nimport createDeferred from 'p-defer-es5';\nimport onErrorResumeNext from 'on-error-resume-next';\n\nimport AudioContextQueue from './AudioContextQueue';\nimport fetchCustomVoices from './fetchCustomVoices';\nimport fetchVoices from './fetchVoices';\nimport patchOptions from '../patchOptions';\nimport SpeechSynthesisEvent from './SpeechSynthesisEvent';\nimport SpeechSynthesisUtterance from './SpeechSynthesisUtterance';\n\n// Supported output format can be found at https://docs.microsoft.com/en-us/azure/cognitive-services/speech-service/rest-text-to-speech#audio-outputs\nconst DEFAULT_OUTPUT_FORMAT = 'audio-24khz-160kbitrate-mono-mp3';\nconst EMPTY_ARRAY = [];\n\nexport default options => {\n const {\n audioContext,\n fetchCredentials,\n ponyfill = {\n AudioContext: window.AudioContext || window.webkitAudioContext\n },\n speechSynthesisDeploymentId,\n speechSynthesisOutputFormat = DEFAULT_OUTPUT_FORMAT\n } = patchOptions(options);\n\n if (!audioContext && !ponyfill.AudioContext) {\n console.warn(\n 'web-speech-cognitive-services: This browser does not support Web Audio and it will not work with Cognitive Services Speech Services.'\n );\n\n return {};\n }\n\n class SpeechSynthesis extends EventTarget {\n constructor() {\n super();\n\n this.queue = new AudioContextQueue({ audioContext, ponyfill });\n\n this.updateVoices();\n }\n\n cancel() {\n this.queue.stop();\n }\n\n getVoices() {\n return EMPTY_ARRAY;\n }\n\n get onvoiceschanged() {\n return getEventAttributeValue(this, 'voiceschanged');\n }\n\n set onvoiceschanged(value) {\n setEventAttributeValue(this, 'voiceschanged', value);\n }\n\n pause() {\n this.queue.pause();\n }\n\n resume() {\n this.queue.resume();\n }\n\n speak(utterance) {\n if (!(utterance instanceof SpeechSynthesisUtterance)) {\n throw new Error('invalid utterance');\n }\n\n const { reject, resolve, promise } = createDeferred();\n const handleError = ({ error: errorCode, message }) => {\n const error = new Error(errorCode);\n\n error.stack = message;\n\n reject(error);\n };\n\n utterance.addEventListener('end', resolve);\n utterance.addEventListener('error', handleError);\n\n utterance.preload({\n deploymentId: speechSynthesisDeploymentId,\n fetchCredentials,\n outputFormat: speechSynthesisOutputFormat\n });\n\n this.queue.push(utterance);\n\n return promise.finally(() => {\n utterance.removeEventListener('end', resolve);\n utterance.removeEventListener('error', handleError);\n });\n }\n\n get speaking() {\n return this.queue.speaking;\n }\n\n async updateVoices() {\n const { customVoiceHostname, region, speechSynthesisHostname, subscriptionKey } = await fetchCredentials();\n\n if (speechSynthesisDeploymentId) {\n if (subscriptionKey) {\n console.warn(\n 'web-speech-cognitive-services: Listing of custom voice models are only available when using subscription key.'\n );\n\n await onErrorResumeNext(async () => {\n const voices = await fetchCustomVoices({\n customVoiceHostname,\n deploymentId: speechSynthesisDeploymentId,\n region,\n speechSynthesisHostname,\n subscriptionKey\n });\n\n this.getVoices = () => voices;\n });\n }\n } else {\n // If fetch voice list failed, we will not emit \"voiceschanged\" event.\n // In the spec, there is no \"error\" event.\n\n await onErrorResumeNext(async () => {\n const voices = await fetchVoices(await fetchCredentials());\n\n this.getVoices = () => voices;\n });\n }\n\n this.dispatchEvent(new SpeechSynthesisEvent('voiceschanged'));\n }\n }\n\n return {\n speechSynthesis: new SpeechSynthesis(),\n SpeechSynthesisEvent,\n SpeechSynthesisUtterance\n };\n};\n","/* eslint no-magic-numbers: [\"error\", { \"ignore\": [0, 1, -1] }] */\n\nimport SpeechSynthesisVoice from './SpeechSynthesisVoice';\n\nasync function fetchCustomVoices({ customVoiceHostname, deploymentId, region, subscriptionKey }) {\n const hostname = customVoiceHostname || `${ region }.customvoice.api.speech.microsoft.com`;\n\n // Although encodeURI on a hostname doesn't work as expected for hostname, at least, it will fail peacefully.\n const res = await fetch(\n `https://${ encodeURI(hostname) }/api/texttospeech/v2.0/endpoints/${ encodeURIComponent(deploymentId) }`,\n {\n headers: {\n accept: 'application/json',\n 'ocp-apim-subscription-key': subscriptionKey\n }\n }\n );\n\n if (!res.ok) {\n throw new Error('Failed to fetch custom voices');\n }\n\n return res.json();\n}\n\nexport default async function({ customVoiceHostname, deploymentId, region, subscriptionKey }) {\n const { models } = await fetchCustomVoices({ customVoiceHostname, deploymentId, region, subscriptionKey });\n\n return models\n .map(\n ({ properties: { Gender: gender }, locale: lang, name: voiceURI }) =>\n new SpeechSynthesisVoice({ gender, lang, voiceURI })\n )\n .sort(({ name: x }, { name: y }) => (x > y ? 1 : x < y ? -1 : 0));\n}\n","import { decode } from 'base64-arraybuffer';\nimport buildSSML from './buildSSML';\nimport isSSML from './isSSML';\n\nconst DEFAULT_LANGUAGE = 'en-US';\nconst DEFAULT_OUTPUT_FORMAT = 'riff-16khz-16bit-mono-pcm';\nconst DEFAULT_VOICE = 'Microsoft Server Speech Text to Speech Voice (en-US, AriaNeural)';\nconst EMPTY_MP3_BASE64 =\n 'SUQzBAAAAAAAI1RTU0UAAAAPAAADTGF2ZjU3LjU2LjEwMQAAAAAAAAAAAAAA//tAwAAAAAAAAAAAAAAAAAAAAAAASW5mbwAAAA8AAAACAAABhgC7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7u7//////////////////////////////////////////////////////////////////8AAAAATGF2YzU3LjY0AAAAAAAAAAAAAAAAJAUHAAAAAAAAAYYoRBqpAAAAAAD/+xDEAAPAAAGkAAAAIAAANIAAAARMQU1FMy45OS41VVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVf/7EMQpg8AAAaQAAAAgAAA0gAAABFVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVVV';\n\nexport default async function({\n deploymentId,\n fetchCredentials,\n lang = DEFAULT_LANGUAGE,\n outputFormat = DEFAULT_OUTPUT_FORMAT,\n pitch,\n rate,\n text,\n voice = DEFAULT_VOICE,\n volume\n}) {\n if (!text) {\n // If text is empty, play a short audio clip. This allows developers to easily prime the AudioContext object by playing an empty string.\n return decode(EMPTY_MP3_BASE64);\n }\n\n const { authorizationToken, region, speechSynthesisHostname, subscriptionKey } = await fetchCredentials();\n\n if ((authorizationToken && subscriptionKey) || (!authorizationToken && !subscriptionKey)) {\n throw new Error('Only \"authorizationToken\" or \"subscriptionKey\" should be set.');\n } else if ((region && speechSynthesisHostname) || (!region && !speechSynthesisHostname)) {\n throw new Error('Only \"region\" or \"speechSynthesisHostnamename\" should be set.');\n }\n\n const ssml = isSSML(text) ? text : buildSSML({ lang, pitch, rate, text, voice, volume });\n\n // Although calling encodeURI on hostname does not actually works, it fails faster and safer.\n const hostname =\n speechSynthesisHostname ||\n (deploymentId\n ? `${ encodeURI(region) }.voice.speech.microsoft.com`\n : `${ encodeURI(region) }.tts.speech.microsoft.com`);\n const search = deploymentId ? `?deploymentId=${ encodeURI(deploymentId) }` : '';\n const url = `https://${ hostname }/cognitiveservices/v1${ search }`;\n\n const res = await fetch(url, {\n headers: {\n 'Content-Type': 'application/ssml+xml',\n 'X-Microsoft-OutputFormat': outputFormat,\n ...(authorizationToken\n ? {\n Authorization: `Bearer ${ authorizationToken }`\n }\n : {\n 'Ocp-Apim-Subscription-Key': subscriptionKey\n })\n },\n method: 'POST',\n body: ssml\n });\n\n if (!res.ok) {\n throw new Error(`web-speech-cognitive-services: Failed to syntheis speech, server returned ${ res.status }`);\n }\n\n return res.arrayBuffer();\n}\n","/* eslint no-magic-numbers: [\"error\", { \"ignore\": [0, 1, -1] }] */\n\nimport SpeechSynthesisVoice from './SpeechSynthesisVoice';\n\nexport default async function fetchVoices({ authorizationToken, region, speechSynthesisHostname, subscriptionKey }) {\n // Although encodeURI on a hostname doesn't work as expected for hostname, at least, it will fail peacefully.\n const hostname = speechSynthesisHostname || `${ encodeURI(region) }.tts.speech.microsoft.com`;\n const res = await fetch(`https://${ hostname }/cognitiveservices/voices/list`, {\n headers: {\n 'content-type': 'application/json',\n ...(authorizationToken\n ? {\n authorization: `Bearer ${ authorizationToken }`\n }\n : {\n 'Ocp-Apim-Subscription-Key': subscriptionKey\n })\n }\n });\n\n if (!res.ok) {\n throw new Error('Failed to fetch voices');\n }\n\n const voices = await res.json();\n\n return voices\n .map(({ Gender: gender, Locale: lang, Name: voiceURI }) => new SpeechSynthesisVoice({ gender, lang, voiceURI }))\n .sort(({ name: x }, { name: y }) => (x > y ? 1 : x < y ? -1 : 0));\n}\n","const SPEAK_TAG_PATTERN = /^\\s*)/u;\nconst XML_PROLOG_PATTERN = /^\\s*<\\?xml\\s/u;\n\nexport default function isSSML(text) {\n return SPEAK_TAG_PATTERN.test(text) || XML_PROLOG_PATTERN.test(text);\n}\n","export default function subscribeEvent(target, name, handler) {\n target.addEventListener(name, handler);\n\n return () => target.removeEventListener(name, handler);\n}\n","const TOKEN_URL_TEMPLATE = 'https://{region}.api.cognitive.microsoft.com/sts/v1.0/issueToken';\n\nexport default async function ({ region, subscriptionKey }) {\n const res = await fetch(\n TOKEN_URL_TEMPLATE.replace(/\\{region\\}/u, region),\n {\n headers: {\n 'Ocp-Apim-Subscription-Key': subscriptionKey\n },\n method: 'POST'\n }\n );\n\n if (!res.ok) {\n throw new Error(`Failed to fetch authorization token, server returned ${ res.status }`);\n }\n\n return res.text();\n}\n","import resolveFunctionOrReturnValue from './resolveFunctionOrReturnValue';\n\nlet shouldWarnOnSubscriptionKey = true;\n\nexport default function patchOptions({\n authorizationToken,\n credentials,\n looseEvent,\n looseEvents,\n region = 'westus',\n subscriptionKey,\n ...otherOptions\n} = {}) {\n if (typeof looseEvent !== 'undefined') {\n console.warn('web-speech-cognitive-services: The option \"looseEvent\" should be named as \"looseEvents\".');\n\n looseEvents = looseEvent;\n }\n\n if (!credentials) {\n if (!authorizationToken && !subscriptionKey) {\n throw new Error('web-speech-cognitive-services: Credentials must be specified.');\n } else {\n console.warn(\n 'web-speech-cognitive-services: We are deprecating authorizationToken, region, and subscriptionKey. Please use credentials instead. The deprecated option will be removed on or after 2020-11-14.'\n );\n\n credentials = async () =>\n authorizationToken\n ? { authorizationToken: await resolveFunctionOrReturnValue(authorizationToken), region }\n : { region, subscriptionKey: await resolveFunctionOrReturnValue(subscriptionKey) };\n }\n }\n\n return {\n ...otherOptions,\n fetchCredentials: async () => {\n const {\n authorizationToken,\n customVoiceHostname,\n region,\n speechRecognitionHostname,\n speechSynthesisHostname,\n subscriptionKey\n } = await resolveFunctionOrReturnValue(credentials);\n\n if ((!authorizationToken && !subscriptionKey) || (authorizationToken && subscriptionKey)) {\n throw new Error(\n 'web-speech-cognitive-services: Either \"authorizationToken\" or \"subscriptionKey\" must be provided.'\n );\n } else if (!region && !(speechRecognitionHostname && speechSynthesisHostname)) {\n throw new Error(\n 'web-speech-cognitive-services: Either \"region\" or \"speechRecognitionHostname\" and \"speechSynthesisHostname\" must be set.'\n );\n } else if (region && (customVoiceHostname || speechRecognitionHostname || speechSynthesisHostname)) {\n throw new Error(\n 'web-speech-cognitive-services: Only either \"region\" or \"customVoiceHostname\", \"speechRecognitionHostname\" and \"speechSynthesisHostname\" can be set.'\n );\n } else if (authorizationToken) {\n if (typeof authorizationToken !== 'string') {\n throw new Error('web-speech-cognitive-services: \"authorizationToken\" must be a string.');\n }\n } else if (typeof subscriptionKey !== 'string') {\n throw new Error('web-speech-cognitive-services: \"subscriptionKey\" must be a string.');\n }\n\n if (shouldWarnOnSubscriptionKey && subscriptionKey) {\n console.warn(\n 'web-speech-cognitive-services: In production environment, subscription key should not be used, authorization token should be used instead.'\n );\n\n shouldWarnOnSubscriptionKey = false;\n }\n\n const resolvedCredentials = authorizationToken ? { authorizationToken } : { subscriptionKey };\n\n if (region) {\n resolvedCredentials.region = region;\n } else {\n resolvedCredentials.customVoiceHostname = customVoiceHostname;\n resolvedCredentials.speechRecognitionHostname = speechRecognitionHostname;\n resolvedCredentials.speechSynthesisHostname = speechSynthesisHostname;\n }\n\n return resolvedCredentials;\n },\n looseEvents\n };\n}\n","export default function resolveFunctionOrReturnValue(fnOrValue) {\n return typeof fnOrValue === 'function' ? fnOrValue() : fnOrValue;\n}\n","export default function(array, extras) {\n const map = {\n ...[].reduce.call(\n array,\n (map, value, index) => {\n map[index] = value;\n\n return map;\n },\n {}\n ),\n ...extras,\n length: array.length,\n [Symbol.iterator]: () => [].slice.call(map)[Symbol.iterator]()\n };\n\n return map;\n}\n","import createDeferred from 'p-defer-es5';\n\nexport default function() {\n let shiftDeferred;\n const queue = [];\n\n const push = value => {\n if (shiftDeferred) {\n const { resolve } = shiftDeferred;\n\n shiftDeferred = null;\n resolve(value);\n } else {\n queue.push(value);\n }\n };\n\n const shift = () => {\n if (queue.length) {\n return Promise.resolve(queue.shift());\n }\n\n return (shiftDeferred || (shiftDeferred = createDeferred())).promise;\n };\n\n return {\n push,\n shift\n };\n}\n","import SpeechServices from './SpeechServices';\n\nexport default SpeechServices;\n","module.exports = require(\"core-js-pure/stable/promise\");","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}\nmodule.exports = _arrayWithHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nfunction _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n module.exports = _construct = Reflect.construct.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n return _construct.apply(null, arguments);\n}\nmodule.exports = _construct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\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}\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nfunction _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\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 var F = function F() {};\n return {\n s: F,\n n: function n() {\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(_e) {\n throw _e;\n },\n f: F\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 var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}\nmodule.exports = _createForOfIteratorHelper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar isNativeReflectConstruct = require(\"./isNativeReflectConstruct.js\");\nvar possibleConstructorReturn = require(\"./possibleConstructorReturn.js\");\nfunction _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}\nmodule.exports = _createSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var toPropertyKey = require(\"./toPropertyKey.js\");\nfunction _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\nfunction _get() {\n if (typeof Reflect !== \"undefined\" && Reflect.get) {\n module.exports = _get = Reflect.get.bind(), module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n } else {\n module.exports = _get = function _get(target, property, receiver) {\n var base = superPropBase(target, property);\n if (!base) return;\n var desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.get) {\n return desc.get.call(arguments.length < 3 ? target : receiver);\n }\n return desc.value;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n }\n return _get.apply(this, arguments);\n}\nmodule.exports = _get, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\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 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}\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}\nmodule.exports = _isNativeFunction, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _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 try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}\nmodule.exports = _isNativeReflectConstruct, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}\nmodule.exports = _iterableToArrayLimit, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _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}\nmodule.exports = _nonIterableRest, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _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}\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var defineProperty = require(\"./defineProperty.js\");\nfunction ownKeys(object, enumerableOnly) {\n var keys = Object.keys(object);\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 return keys;\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 return target;\n}\nmodule.exports = _objectSpread2, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\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 return assertThisInitialized(self);\n}\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var superPropBase = require(\"./superPropBase.js\");\nvar defineProperty = require(\"./defineProperty.js\");\nfunction set(target, property, value, receiver) {\n if (typeof Reflect !== \"undefined\" && Reflect.set) {\n set = Reflect.set;\n } else {\n set = function set(target, property, value, receiver) {\n var base = superPropBase(target, property);\n var desc;\n if (base) {\n desc = Object.getOwnPropertyDescriptor(base, property);\n if (desc.set) {\n desc.set.call(receiver, value);\n return true;\n } else if (!desc.writable) {\n return false;\n }\n }\n desc = Object.getOwnPropertyDescriptor(receiver, property);\n if (desc) {\n if (!desc.writable) {\n return false;\n }\n desc.value = value;\n Object.defineProperty(receiver, property, desc);\n } else {\n defineProperty(receiver, property, value);\n }\n return true;\n };\n }\n return set(target, property, value, receiver);\n}\nfunction _set(target, property, value, receiver, isStrict) {\n var s = set(target, property, value, receiver || target);\n if (!s && isStrict) {\n throw new TypeError('failed to set property');\n }\n return value;\n}\nmodule.exports = _set, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithHoles = require(\"./arrayWithHoles.js\");\nvar iterableToArrayLimit = require(\"./iterableToArrayLimit.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableRest = require(\"./nonIterableRest.js\");\nfunction _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}\nmodule.exports = _slicedToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nfunction _superPropBase(object, property) {\n while (!Object.prototype.hasOwnProperty.call(object, property)) {\n object = getPrototypeOf(object);\n if (object === null) break;\n }\n return object;\n}\nmodule.exports = _superPropBase, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\nvar iterableToArray = require(\"./iterableToArray.js\");\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nfunction _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}\nmodule.exports = _toPrimitive, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\nvar toPrimitive = require(\"./toPrimitive.js\");\nfunction _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}\nmodule.exports = _toPropertyKey, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\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}\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var getPrototypeOf = require(\"./getPrototypeOf.js\");\nvar setPrototypeOf = require(\"./setPrototypeOf.js\");\nvar isNativeFunction = require(\"./isNativeFunction.js\");\nvar construct = require(\"./construct.js\");\nfunction _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n module.exports = _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _wrapNativeSuper(Class);\n}\nmodule.exports = _wrapNativeSuper, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _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++) {\n arr2[i] = arr[i];\n }\n\n return arr2;\n}\n\nmodule.exports = _arrayLikeToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\n\nfunction _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}\n\nmodule.exports = _arrayWithoutHoles, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n\n return self;\n}\n\nmodule.exports = _assertThisInitialized, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\n\nfunction _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n\n _next(undefined);\n });\n };\n}\n\nmodule.exports = _asyncToGenerator, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}\n\nmodule.exports = _classCallCheck, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, descriptor.key, descriptor);\n }\n}\n\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\nmodule.exports = _createClass, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _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\nmodule.exports = _defineProperty, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _getPrototypeOf(o) {\n module.exports = _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf.bind() : function _getPrototypeOf(o) {\n return o.__proto__ || Object.getPrototypeOf(o);\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _getPrototypeOf(o);\n}\n\nmodule.exports = _getPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var setPrototypeOf = require(\"./setPrototypeOf.js\");\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\nmodule.exports = _inherits, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _interopRequireDefault(obj) {\n return obj && obj.__esModule ? obj : {\n \"default\": obj\n };\n}\n\nmodule.exports = _interopRequireDefault, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}\n\nmodule.exports = _iterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _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\nmodule.exports = _nonIterableSpread, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var objectWithoutPropertiesLoose = require(\"./objectWithoutPropertiesLoose.js\");\n\nfunction _objectWithoutProperties(source, excluded) {\n if (source == null) return {};\n var target = objectWithoutPropertiesLoose(source, excluded);\n var key, i;\n\n if (Object.getOwnPropertySymbols) {\n var sourceSymbolKeys = Object.getOwnPropertySymbols(source);\n\n for (i = 0; i < sourceSymbolKeys.length; i++) {\n key = sourceSymbolKeys[i];\n if (excluded.indexOf(key) >= 0) continue;\n if (!Object.prototype.propertyIsEnumerable.call(source, key)) continue;\n target[key] = source[key];\n }\n }\n\n return target;\n}\n\nmodule.exports = _objectWithoutProperties, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _objectWithoutPropertiesLoose(source, excluded) {\n if (source == null) return {};\n var target = {};\n var sourceKeys = Object.keys(source);\n var key, i;\n\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\n return target;\n}\n\nmodule.exports = _objectWithoutPropertiesLoose, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nvar assertThisInitialized = require(\"./assertThisInitialized.js\");\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\nmodule.exports = _possibleConstructorReturn, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var _typeof = require(\"./typeof.js\")[\"default\"];\n\nfunction _regeneratorRuntime() {\n \"use strict\";\n /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n\n module.exports = _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return generator._invoke = function (innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }(innerFn, self, context), generator;\n }\n\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n\n exports.wrap = wrap;\n var ContinueSentinel = {};\n\n function Generator() {}\n\n function GeneratorFunction() {}\n\n function GeneratorFunctionPrototype() {}\n\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n\n reject(record.arg);\n }\n\n var previousPromise;\n\n this._invoke = function (method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n };\n }\n\n function maybeInvokeDelegate(delegate, context) {\n var method = delegate.iterator[context.method];\n\n if (undefined === method) {\n if (context.delegate = null, \"throw\" === context.method) {\n if (delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method)) return ContinueSentinel;\n context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a 'throw' method\");\n }\n\n return ContinueSentinel;\n }\n\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) {\n if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n }\n\n return next.value = undefined, next.done = !0, next;\n };\n\n return next.next = next;\n }\n }\n\n return {\n next: doneResult\n };\n }\n\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, define(Gp, \"constructor\", GeneratorFunctionPrototype), define(GeneratorFunctionPrototype, \"constructor\", GeneratorFunction), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (object) {\n var keys = [];\n\n for (var key in object) {\n keys.push(key);\n }\n\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) {\n \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n }\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n\n return thrown;\n }\n }\n\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}\n\nmodule.exports = _regeneratorRuntime, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _setPrototypeOf(o, p) {\n module.exports = _setPrototypeOf = Object.setPrototypeOf ? Object.setPrototypeOf.bind() : function _setPrototypeOf(o, p) {\n o.__proto__ = p;\n return o;\n }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;\n return _setPrototypeOf(o, p);\n}\n\nmodule.exports = _setPrototypeOf, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayWithoutHoles = require(\"./arrayWithoutHoles.js\");\n\nvar iterableToArray = require(\"./iterableToArray.js\");\n\nvar unsupportedIterableToArray = require(\"./unsupportedIterableToArray.js\");\n\nvar nonIterableSpread = require(\"./nonIterableSpread.js\");\n\nfunction _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}\n\nmodule.exports = _toConsumableArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return (module.exports = _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 }, module.exports.__esModule = true, module.exports[\"default\"] = module.exports), _typeof(obj);\n}\n\nmodule.exports = _typeof, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","var arrayLikeToArray = require(\"./arrayLikeToArray.js\");\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\nmodule.exports = _unsupportedIterableToArray, module.exports.__esModule = true, module.exports[\"default\"] = module.exports;","// TODO(Babel 8): Remove this file.\n\nvar runtime = require(\"../helpers/regeneratorRuntime\")();\nmodule.exports = runtime;\n\n// Copied from https://github.com/facebook/regenerator/blob/main/packages/runtime/runtime.js#L736=\ntry {\n regeneratorRuntime = runtime;\n} catch (accidentalStrictMode) {\n if (typeof globalThis === \"object\") {\n globalThis.regeneratorRuntime = runtime;\n } else {\n Function(\"r\", \"regeneratorRuntime = r\")(runtime);\n }\n}\n","// The module cache\nvar __webpack_module_cache__ = {};\n\n// The require function\nfunction __webpack_require__(moduleId) {\n\t// Check if module is in cache\n\tvar cachedModule = __webpack_module_cache__[moduleId];\n\tif (cachedModule !== undefined) {\n\t\treturn cachedModule.exports;\n\t}\n\t// Create a new module (and put it into the cache)\n\tvar module = __webpack_module_cache__[moduleId] = {\n\t\t// no module.id needed\n\t\t// no module.loaded needed\n\t\texports: {}\n\t};\n\n\t// Execute the module function\n\t__webpack_modules__[moduleId].call(module.exports, module, module.exports, __webpack_require__);\n\n\t// Return the exports of the module\n\treturn module.exports;\n}\n\n","// getDefaultExport function for compatibility with non-harmony modules\n__webpack_require__.n = function(module) {\n\tvar getter = module && module.__esModule ?\n\t\tfunction() { return module['default']; } :\n\t\tfunction() { return module; };\n\t__webpack_require__.d(getter, { a: getter });\n\treturn getter;\n};","var getProto = Object.getPrototypeOf ? function(obj) { return Object.getPrototypeOf(obj); } : function(obj) { return obj.__proto__; };\nvar leafPrototypes;\n// create a fake namespace object\n// mode & 1: value is a module id, require it\n// mode & 2: merge all properties of value into the ns\n// mode & 4: return value when already ns object\n// mode & 16: return value when it's Promise-like\n// mode & 8|1: behave like require\n__webpack_require__.t = function(value, mode) {\n\tif(mode & 1) value = this(value);\n\tif(mode & 8) return value;\n\tif(typeof value === 'object' && value) {\n\t\tif((mode & 4) && value.__esModule) return value;\n\t\tif((mode & 16) && typeof value.then === 'function') return value;\n\t}\n\tvar ns = Object.create(null);\n\t__webpack_require__.r(ns);\n\tvar def = {};\n\tleafPrototypes = leafPrototypes || [null, getProto({}), getProto([]), getProto(getProto)];\n\tfor(var current = mode & 2 && value; typeof current == 'object' && !~leafPrototypes.indexOf(current); current = getProto(current)) {\n\t\tObject.getOwnPropertyNames(current).forEach(function(key) { def[key] = function() { return value[key]; }; });\n\t}\n\tdef['default'] = function() { return value; };\n\t__webpack_require__.d(ns, def);\n\treturn ns;\n};","// define getter functions for harmony exports\n__webpack_require__.d = function(exports, definition) {\n\tfor(var key in definition) {\n\t\tif(__webpack_require__.o(definition, key) && !__webpack_require__.o(exports, key)) {\n\t\t\tObject.defineProperty(exports, key, { enumerable: true, get: definition[key] });\n\t\t}\n\t}\n};","__webpack_require__.g = (function() {\n\tif (typeof globalThis === 'object') return globalThis;\n\ttry {\n\t\treturn this || new Function('return this')();\n\t} catch (e) {\n\t\tif (typeof window === 'object') return window;\n\t}\n})();","__webpack_require__.o = function(obj, prop) { return Object.prototype.hasOwnProperty.call(obj, prop); }","// define __esModule on exports\n__webpack_require__.r = function(exports) {\n\tif(typeof Symbol !== 'undefined' && Symbol.toStringTag) {\n\t\tObject.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });\n\t}\n\tObject.defineProperty(exports, '__esModule', { value: true });\n};","export default function _typeof(obj) {\n \"@babel/helpers - typeof\";\n\n return _typeof = \"function\" == typeof Symbol && \"symbol\" == typeof Symbol.iterator ? function (obj) {\n return typeof obj;\n } : function (obj) {\n return obj && \"function\" == typeof Symbol && obj.constructor === Symbol && obj !== Symbol.prototype ? \"symbol\" : typeof obj;\n }, _typeof(obj);\n}","import _typeof from \"./typeof.js\";\nexport default function _regeneratorRuntime() {\n \"use strict\"; /*! regenerator-runtime -- Copyright (c) 2014-present, Facebook, Inc. -- license (MIT): https://github.com/facebook/regenerator/blob/main/LICENSE */\n _regeneratorRuntime = function _regeneratorRuntime() {\n return exports;\n };\n var exports = {},\n Op = Object.prototype,\n hasOwn = Op.hasOwnProperty,\n defineProperty = Object.defineProperty || function (obj, key, desc) {\n obj[key] = desc.value;\n },\n $Symbol = \"function\" == typeof Symbol ? Symbol : {},\n iteratorSymbol = $Symbol.iterator || \"@@iterator\",\n asyncIteratorSymbol = $Symbol.asyncIterator || \"@@asyncIterator\",\n toStringTagSymbol = $Symbol.toStringTag || \"@@toStringTag\";\n function define(obj, key, value) {\n return Object.defineProperty(obj, key, {\n value: value,\n enumerable: !0,\n configurable: !0,\n writable: !0\n }), obj[key];\n }\n try {\n define({}, \"\");\n } catch (err) {\n define = function define(obj, key, value) {\n return obj[key] = value;\n };\n }\n function wrap(innerFn, outerFn, self, tryLocsList) {\n var protoGenerator = outerFn && outerFn.prototype instanceof Generator ? outerFn : Generator,\n generator = Object.create(protoGenerator.prototype),\n context = new Context(tryLocsList || []);\n return defineProperty(generator, \"_invoke\", {\n value: makeInvokeMethod(innerFn, self, context)\n }), generator;\n }\n function tryCatch(fn, obj, arg) {\n try {\n return {\n type: \"normal\",\n arg: fn.call(obj, arg)\n };\n } catch (err) {\n return {\n type: \"throw\",\n arg: err\n };\n }\n }\n exports.wrap = wrap;\n var ContinueSentinel = {};\n function Generator() {}\n function GeneratorFunction() {}\n function GeneratorFunctionPrototype() {}\n var IteratorPrototype = {};\n define(IteratorPrototype, iteratorSymbol, function () {\n return this;\n });\n var getProto = Object.getPrototypeOf,\n NativeIteratorPrototype = getProto && getProto(getProto(values([])));\n NativeIteratorPrototype && NativeIteratorPrototype !== Op && hasOwn.call(NativeIteratorPrototype, iteratorSymbol) && (IteratorPrototype = NativeIteratorPrototype);\n var Gp = GeneratorFunctionPrototype.prototype = Generator.prototype = Object.create(IteratorPrototype);\n function defineIteratorMethods(prototype) {\n [\"next\", \"throw\", \"return\"].forEach(function (method) {\n define(prototype, method, function (arg) {\n return this._invoke(method, arg);\n });\n });\n }\n function AsyncIterator(generator, PromiseImpl) {\n function invoke(method, arg, resolve, reject) {\n var record = tryCatch(generator[method], generator, arg);\n if (\"throw\" !== record.type) {\n var result = record.arg,\n value = result.value;\n return value && \"object\" == _typeof(value) && hasOwn.call(value, \"__await\") ? PromiseImpl.resolve(value.__await).then(function (value) {\n invoke(\"next\", value, resolve, reject);\n }, function (err) {\n invoke(\"throw\", err, resolve, reject);\n }) : PromiseImpl.resolve(value).then(function (unwrapped) {\n result.value = unwrapped, resolve(result);\n }, function (error) {\n return invoke(\"throw\", error, resolve, reject);\n });\n }\n reject(record.arg);\n }\n var previousPromise;\n defineProperty(this, \"_invoke\", {\n value: function value(method, arg) {\n function callInvokeWithMethodAndArg() {\n return new PromiseImpl(function (resolve, reject) {\n invoke(method, arg, resolve, reject);\n });\n }\n return previousPromise = previousPromise ? previousPromise.then(callInvokeWithMethodAndArg, callInvokeWithMethodAndArg) : callInvokeWithMethodAndArg();\n }\n });\n }\n function makeInvokeMethod(innerFn, self, context) {\n var state = \"suspendedStart\";\n return function (method, arg) {\n if (\"executing\" === state) throw new Error(\"Generator is already running\");\n if (\"completed\" === state) {\n if (\"throw\" === method) throw arg;\n return doneResult();\n }\n for (context.method = method, context.arg = arg;;) {\n var delegate = context.delegate;\n if (delegate) {\n var delegateResult = maybeInvokeDelegate(delegate, context);\n if (delegateResult) {\n if (delegateResult === ContinueSentinel) continue;\n return delegateResult;\n }\n }\n if (\"next\" === context.method) context.sent = context._sent = context.arg;else if (\"throw\" === context.method) {\n if (\"suspendedStart\" === state) throw state = \"completed\", context.arg;\n context.dispatchException(context.arg);\n } else \"return\" === context.method && context.abrupt(\"return\", context.arg);\n state = \"executing\";\n var record = tryCatch(innerFn, self, context);\n if (\"normal\" === record.type) {\n if (state = context.done ? \"completed\" : \"suspendedYield\", record.arg === ContinueSentinel) continue;\n return {\n value: record.arg,\n done: context.done\n };\n }\n \"throw\" === record.type && (state = \"completed\", context.method = \"throw\", context.arg = record.arg);\n }\n };\n }\n function maybeInvokeDelegate(delegate, context) {\n var methodName = context.method,\n method = delegate.iterator[methodName];\n if (undefined === method) return context.delegate = null, \"throw\" === methodName && delegate.iterator[\"return\"] && (context.method = \"return\", context.arg = undefined, maybeInvokeDelegate(delegate, context), \"throw\" === context.method) || \"return\" !== methodName && (context.method = \"throw\", context.arg = new TypeError(\"The iterator does not provide a '\" + methodName + \"' method\")), ContinueSentinel;\n var record = tryCatch(method, delegate.iterator, context.arg);\n if (\"throw\" === record.type) return context.method = \"throw\", context.arg = record.arg, context.delegate = null, ContinueSentinel;\n var info = record.arg;\n return info ? info.done ? (context[delegate.resultName] = info.value, context.next = delegate.nextLoc, \"return\" !== context.method && (context.method = \"next\", context.arg = undefined), context.delegate = null, ContinueSentinel) : info : (context.method = \"throw\", context.arg = new TypeError(\"iterator result is not an object\"), context.delegate = null, ContinueSentinel);\n }\n function pushTryEntry(locs) {\n var entry = {\n tryLoc: locs[0]\n };\n 1 in locs && (entry.catchLoc = locs[1]), 2 in locs && (entry.finallyLoc = locs[2], entry.afterLoc = locs[3]), this.tryEntries.push(entry);\n }\n function resetTryEntry(entry) {\n var record = entry.completion || {};\n record.type = \"normal\", delete record.arg, entry.completion = record;\n }\n function Context(tryLocsList) {\n this.tryEntries = [{\n tryLoc: \"root\"\n }], tryLocsList.forEach(pushTryEntry, this), this.reset(!0);\n }\n function values(iterable) {\n if (iterable) {\n var iteratorMethod = iterable[iteratorSymbol];\n if (iteratorMethod) return iteratorMethod.call(iterable);\n if (\"function\" == typeof iterable.next) return iterable;\n if (!isNaN(iterable.length)) {\n var i = -1,\n next = function next() {\n for (; ++i < iterable.length;) if (hasOwn.call(iterable, i)) return next.value = iterable[i], next.done = !1, next;\n return next.value = undefined, next.done = !0, next;\n };\n return next.next = next;\n }\n }\n return {\n next: doneResult\n };\n }\n function doneResult() {\n return {\n value: undefined,\n done: !0\n };\n }\n return GeneratorFunction.prototype = GeneratorFunctionPrototype, defineProperty(Gp, \"constructor\", {\n value: GeneratorFunctionPrototype,\n configurable: !0\n }), defineProperty(GeneratorFunctionPrototype, \"constructor\", {\n value: GeneratorFunction,\n configurable: !0\n }), GeneratorFunction.displayName = define(GeneratorFunctionPrototype, toStringTagSymbol, \"GeneratorFunction\"), exports.isGeneratorFunction = function (genFun) {\n var ctor = \"function\" == typeof genFun && genFun.constructor;\n return !!ctor && (ctor === GeneratorFunction || \"GeneratorFunction\" === (ctor.displayName || ctor.name));\n }, exports.mark = function (genFun) {\n return Object.setPrototypeOf ? Object.setPrototypeOf(genFun, GeneratorFunctionPrototype) : (genFun.__proto__ = GeneratorFunctionPrototype, define(genFun, toStringTagSymbol, \"GeneratorFunction\")), genFun.prototype = Object.create(Gp), genFun;\n }, exports.awrap = function (arg) {\n return {\n __await: arg\n };\n }, defineIteratorMethods(AsyncIterator.prototype), define(AsyncIterator.prototype, asyncIteratorSymbol, function () {\n return this;\n }), exports.AsyncIterator = AsyncIterator, exports.async = function (innerFn, outerFn, self, tryLocsList, PromiseImpl) {\n void 0 === PromiseImpl && (PromiseImpl = Promise);\n var iter = new AsyncIterator(wrap(innerFn, outerFn, self, tryLocsList), PromiseImpl);\n return exports.isGeneratorFunction(outerFn) ? iter : iter.next().then(function (result) {\n return result.done ? result.value : iter.next();\n });\n }, defineIteratorMethods(Gp), define(Gp, toStringTagSymbol, \"Generator\"), define(Gp, iteratorSymbol, function () {\n return this;\n }), define(Gp, \"toString\", function () {\n return \"[object Generator]\";\n }), exports.keys = function (val) {\n var object = Object(val),\n keys = [];\n for (var key in object) keys.push(key);\n return keys.reverse(), function next() {\n for (; keys.length;) {\n var key = keys.pop();\n if (key in object) return next.value = key, next.done = !1, next;\n }\n return next.done = !0, next;\n };\n }, exports.values = values, Context.prototype = {\n constructor: Context,\n reset: function reset(skipTempReset) {\n if (this.prev = 0, this.next = 0, this.sent = this._sent = undefined, this.done = !1, this.delegate = null, this.method = \"next\", this.arg = undefined, this.tryEntries.forEach(resetTryEntry), !skipTempReset) for (var name in this) \"t\" === name.charAt(0) && hasOwn.call(this, name) && !isNaN(+name.slice(1)) && (this[name] = undefined);\n },\n stop: function stop() {\n this.done = !0;\n var rootRecord = this.tryEntries[0].completion;\n if (\"throw\" === rootRecord.type) throw rootRecord.arg;\n return this.rval;\n },\n dispatchException: function dispatchException(exception) {\n if (this.done) throw exception;\n var context = this;\n function handle(loc, caught) {\n return record.type = \"throw\", record.arg = exception, context.next = loc, caught && (context.method = \"next\", context.arg = undefined), !!caught;\n }\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i],\n record = entry.completion;\n if (\"root\" === entry.tryLoc) return handle(\"end\");\n if (entry.tryLoc <= this.prev) {\n var hasCatch = hasOwn.call(entry, \"catchLoc\"),\n hasFinally = hasOwn.call(entry, \"finallyLoc\");\n if (hasCatch && hasFinally) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n } else if (hasCatch) {\n if (this.prev < entry.catchLoc) return handle(entry.catchLoc, !0);\n } else {\n if (!hasFinally) throw new Error(\"try statement without catch or finally\");\n if (this.prev < entry.finallyLoc) return handle(entry.finallyLoc);\n }\n }\n }\n },\n abrupt: function abrupt(type, arg) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc <= this.prev && hasOwn.call(entry, \"finallyLoc\") && this.prev < entry.finallyLoc) {\n var finallyEntry = entry;\n break;\n }\n }\n finallyEntry && (\"break\" === type || \"continue\" === type) && finallyEntry.tryLoc <= arg && arg <= finallyEntry.finallyLoc && (finallyEntry = null);\n var record = finallyEntry ? finallyEntry.completion : {};\n return record.type = type, record.arg = arg, finallyEntry ? (this.method = \"next\", this.next = finallyEntry.finallyLoc, ContinueSentinel) : this.complete(record);\n },\n complete: function complete(record, afterLoc) {\n if (\"throw\" === record.type) throw record.arg;\n return \"break\" === record.type || \"continue\" === record.type ? this.next = record.arg : \"return\" === record.type ? (this.rval = this.arg = record.arg, this.method = \"return\", this.next = \"end\") : \"normal\" === record.type && afterLoc && (this.next = afterLoc), ContinueSentinel;\n },\n finish: function finish(finallyLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.finallyLoc === finallyLoc) return this.complete(entry.completion, entry.afterLoc), resetTryEntry(entry), ContinueSentinel;\n }\n },\n \"catch\": function _catch(tryLoc) {\n for (var i = this.tryEntries.length - 1; i >= 0; --i) {\n var entry = this.tryEntries[i];\n if (entry.tryLoc === tryLoc) {\n var record = entry.completion;\n if (\"throw\" === record.type) {\n var thrown = record.arg;\n resetTryEntry(entry);\n }\n return thrown;\n }\n }\n throw new Error(\"illegal catch attempt\");\n },\n delegateYield: function delegateYield(iterable, resultName, nextLoc) {\n return this.delegate = {\n iterator: values(iterable),\n resultName: resultName,\n nextLoc: nextLoc\n }, \"next\" === this.method && (this.arg = undefined), ContinueSentinel;\n }\n }, exports;\n}","function asyncGeneratorStep(gen, resolve, reject, _next, _throw, key, arg) {\n try {\n var info = gen[key](arg);\n var value = info.value;\n } catch (error) {\n reject(error);\n return;\n }\n if (info.done) {\n resolve(value);\n } else {\n Promise.resolve(value).then(_next, _throw);\n }\n}\nexport default function _asyncToGenerator(fn) {\n return function () {\n var self = this,\n args = arguments;\n return new Promise(function (resolve, reject) {\n var gen = fn.apply(self, args);\n function _next(value) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"next\", value);\n }\n function _throw(err) {\n asyncGeneratorStep(gen, resolve, reject, _next, _throw, \"throw\", err);\n }\n _next(undefined);\n });\n };\n}","////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Actions represent the type of change to a location value.\n */\nexport enum Action {\n /**\n * A POP indicates a change to an arbitrary index in the history stack, such\n * as a back or forward navigation. It does not describe the direction of the\n * navigation, only that the current index changed.\n *\n * Note: This is the default action for newly created history objects.\n */\n Pop = \"POP\",\n\n /**\n * A PUSH indicates a new entry being added to the history stack, such as when\n * a link is clicked and a new page loads. When this happens, all subsequent\n * entries in the stack are lost.\n */\n Push = \"PUSH\",\n\n /**\n * A REPLACE indicates the entry at the current index in the history stack\n * being replaced by a new one.\n */\n Replace = \"REPLACE\",\n}\n\n/**\n * The pathname, search, and hash values of a URL.\n */\nexport interface Path {\n /**\n * A URL pathname, beginning with a /.\n */\n pathname: string;\n\n /**\n * A URL search string, beginning with a ?.\n */\n search: string;\n\n /**\n * A URL fragment identifier, beginning with a #.\n */\n hash: string;\n}\n\n/**\n * An entry in a history stack. A location contains information about the\n * URL path, as well as possibly some arbitrary state and a key.\n */\nexport interface Location extends Path {\n /**\n * A value of arbitrary data associated with this location.\n */\n state: any;\n\n /**\n * A unique string associated with this location. May be used to safely store\n * and retrieve data in some other storage API, like `localStorage`.\n *\n * Note: This value is always \"default\" on the initial location.\n */\n key: string;\n}\n\n/**\n * A change to the current location.\n */\nexport interface Update {\n /**\n * The action that triggered the change.\n */\n action: Action;\n\n /**\n * The new location.\n */\n location: Location;\n\n /**\n * The delta between this location and the former location in the history stack\n */\n delta: number | null;\n}\n\n/**\n * A function that receives notifications about location changes.\n */\nexport interface Listener {\n (update: Update): void;\n}\n\n/**\n * Describes a location that is the destination of some navigation, either via\n * `history.push` or `history.replace`. May be either a URL or the pieces of a\n * URL path.\n */\nexport type To = string | Partial;\n\n/**\n * A history is an interface to the navigation stack. The history serves as the\n * source of truth for the current location, as well as provides a set of\n * methods that may be used to change it.\n *\n * It is similar to the DOM's `window.history` object, but with a smaller, more\n * focused API.\n */\nexport interface History {\n /**\n * The last action that modified the current location. This will always be\n * Action.Pop when a history instance is first created. This value is mutable.\n */\n readonly action: Action;\n\n /**\n * The current location. This value is mutable.\n */\n readonly location: Location;\n\n /**\n * Returns a valid href for the given `to` value that may be used as\n * the value of an attribute.\n *\n * @param to - The destination URL\n */\n createHref(to: To): string;\n\n /**\n * Returns a URL for the given `to` value\n *\n * @param to - The destination URL\n */\n createURL(to: To): URL;\n\n /**\n * Encode a location the same way window.history would do (no-op for memory\n * history) so we ensure our PUSH/REPLACE navigations for data routers\n * behave the same as POP\n *\n * @param to Unencoded path\n */\n encodeLocation(to: To): Path;\n\n /**\n * Pushes a new location onto the history stack, increasing its length by one.\n * If there were any entries in the stack after the current one, they are\n * lost.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n push(to: To, state?: any): void;\n\n /**\n * Replaces the current location in the history stack with a new one. The\n * location that was replaced will no longer be available.\n *\n * @param to - The new URL\n * @param state - Data to associate with the new location\n */\n replace(to: To, state?: any): void;\n\n /**\n * Navigates `n` entries backward/forward in the history stack relative to the\n * current index. For example, a \"back\" navigation would use go(-1).\n *\n * @param delta - The delta in the stack index\n */\n go(delta: number): void;\n\n /**\n * Sets up a listener that will be called whenever the current location\n * changes.\n *\n * @param listener - A function that will be called when the location changes\n * @returns unlisten - A function that may be used to stop listening\n */\n listen(listener: Listener): () => void;\n}\n\ntype HistoryState = {\n usr: any;\n key?: string;\n idx: number;\n};\n\nconst PopStateEventType = \"popstate\";\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Memory History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A user-supplied object that describes a location. Used when providing\n * entries to `createMemoryHistory` via its `initialEntries` option.\n */\nexport type InitialEntry = string | Partial;\n\nexport type MemoryHistoryOptions = {\n initialEntries?: InitialEntry[];\n initialIndex?: number;\n v5Compat?: boolean;\n};\n\n/**\n * A memory history stores locations in memory. This is useful in stateful\n * environments where there is no web browser, such as node tests or React\n * Native.\n */\nexport interface MemoryHistory extends History {\n /**\n * The current index in the history stack.\n */\n readonly index: number;\n}\n\n/**\n * Memory history stores the current location in memory. It is designed for use\n * in stateful non-browser environments like tests and React Native.\n */\nexport function createMemoryHistory(\n options: MemoryHistoryOptions = {}\n): MemoryHistory {\n let { initialEntries = [\"/\"], initialIndex, v5Compat = false } = options;\n let entries: Location[]; // Declare so we can access from createMemoryLocation\n entries = initialEntries.map((entry, index) =>\n createMemoryLocation(\n entry,\n typeof entry === \"string\" ? null : entry.state,\n index === 0 ? \"default\" : undefined\n )\n );\n let index = clampIndex(\n initialIndex == null ? entries.length - 1 : initialIndex\n );\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n function clampIndex(n: number): number {\n return Math.min(Math.max(n, 0), entries.length - 1);\n }\n function getCurrentLocation(): Location {\n return entries[index];\n }\n function createMemoryLocation(\n to: To,\n state: any = null,\n key?: string\n ): Location {\n let location = createLocation(\n entries ? getCurrentLocation().pathname : \"/\",\n to,\n state,\n key\n );\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in memory history: ${JSON.stringify(\n to\n )}`\n );\n return location;\n }\n\n function createHref(to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n let history: MemoryHistory = {\n get index() {\n return index;\n },\n get action() {\n return action;\n },\n get location() {\n return getCurrentLocation();\n },\n createHref,\n createURL(to) {\n return new URL(createHref(to), \"http://localhost\");\n },\n encodeLocation(to: To) {\n let path = typeof to === \"string\" ? parsePath(to) : to;\n return {\n pathname: path.pathname || \"\",\n search: path.search || \"\",\n hash: path.hash || \"\",\n };\n },\n push(to, state) {\n action = Action.Push;\n let nextLocation = createMemoryLocation(to, state);\n index += 1;\n entries.splice(index, entries.length, nextLocation);\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 1 });\n }\n },\n replace(to, state) {\n action = Action.Replace;\n let nextLocation = createMemoryLocation(to, state);\n entries[index] = nextLocation;\n if (v5Compat && listener) {\n listener({ action, location: nextLocation, delta: 0 });\n }\n },\n go(delta) {\n action = Action.Pop;\n let nextIndex = clampIndex(index + delta);\n let nextLocation = entries[nextIndex];\n index = nextIndex;\n if (listener) {\n listener({ action, location: nextLocation, delta });\n }\n },\n listen(fn: Listener) {\n listener = fn;\n return () => {\n listener = null;\n };\n },\n };\n\n return history;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Browser History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A browser history stores the current location in regular URLs in a web\n * browser environment. This is the standard for most web apps and provides the\n * cleanest URLs the browser's address bar.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#browserhistory\n */\nexport interface BrowserHistory extends UrlHistory {}\n\nexport type BrowserHistoryOptions = UrlHistoryOptions;\n\n/**\n * Browser history stores the location in regular URLs. This is the standard for\n * most web apps, but it requires some configuration on the server to ensure you\n * serve the same app at multiple URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createbrowserhistory\n */\nexport function createBrowserHistory(\n options: BrowserHistoryOptions = {}\n): BrowserHistory {\n function createBrowserLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let { pathname, search, hash } = window.location;\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createBrowserHref(window: Window, to: To) {\n return typeof to === \"string\" ? to : createPath(to);\n }\n\n return getUrlBasedHistory(\n createBrowserLocation,\n createBrowserHref,\n null,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Hash History\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A hash history stores the current location in the fragment identifier portion\n * of the URL in a web browser environment.\n *\n * This is ideal for apps that do not control the server for some reason\n * (because the fragment identifier is never sent to the server), including some\n * shared hosting environments that do not provide fine-grained controls over\n * which pages are served at which URLs.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#hashhistory\n */\nexport interface HashHistory extends UrlHistory {}\n\nexport type HashHistoryOptions = UrlHistoryOptions;\n\n/**\n * Hash history stores the location in window.location.hash. This makes it ideal\n * for situations where you don't want to send the location to the server for\n * some reason, either because you do cannot configure it or the URL space is\n * reserved for something else.\n *\n * @see https://github.com/remix-run/history/tree/main/docs/api-reference.md#createhashhistory\n */\nexport function createHashHistory(\n options: HashHistoryOptions = {}\n): HashHistory {\n function createHashLocation(\n window: Window,\n globalHistory: Window[\"history\"]\n ) {\n let {\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n } = parsePath(window.location.hash.substr(1));\n return createLocation(\n \"\",\n { pathname, search, hash },\n // state defaults to `null` because `window.history.state` does\n (globalHistory.state && globalHistory.state.usr) || null,\n (globalHistory.state && globalHistory.state.key) || \"default\"\n );\n }\n\n function createHashHref(window: Window, to: To) {\n let base = window.document.querySelector(\"base\");\n let href = \"\";\n\n if (base && base.getAttribute(\"href\")) {\n let url = window.location.href;\n let hashIndex = url.indexOf(\"#\");\n href = hashIndex === -1 ? url : url.slice(0, hashIndex);\n }\n\n return href + \"#\" + (typeof to === \"string\" ? to : createPath(to));\n }\n\n function validateHashLocation(location: Location, to: To) {\n warning(\n location.pathname.charAt(0) === \"/\",\n `relative pathnames are not supported in hash history.push(${JSON.stringify(\n to\n )})`\n );\n }\n\n return getUrlBasedHistory(\n createHashLocation,\n createHashHref,\n validateHashLocation,\n options\n );\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region UTILS\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * @private\n */\nexport function invariant(value: boolean, message?: string): asserts value;\nexport function invariant(\n value: T | null | undefined,\n message?: string\n): asserts value is T;\nexport function invariant(value: any, message?: string) {\n if (value === false || value === null || typeof value === \"undefined\") {\n throw new Error(message);\n }\n}\n\nexport function warning(cond: any, message: string) {\n if (!cond) {\n // eslint-disable-next-line no-console\n if (typeof console !== \"undefined\") console.warn(message);\n\n try {\n // Welcome to debugging history!\n //\n // This error is thrown as a convenience so you can more easily\n // find the source for a warning that appears in the console by\n // enabling \"pause on exceptions\" in your JavaScript debugger.\n throw new Error(message);\n // eslint-disable-next-line no-empty\n } catch (e) {}\n }\n}\n\nfunction createKey() {\n return Math.random().toString(36).substr(2, 8);\n}\n\n/**\n * For browser-based histories, we combine the state and key into an object\n */\nfunction getHistoryState(location: Location, index: number): HistoryState {\n return {\n usr: location.state,\n key: location.key,\n idx: index,\n };\n}\n\n/**\n * Creates a Location object with a unique key from the given Path\n */\nexport function createLocation(\n current: string | Location,\n to: To,\n state: any = null,\n key?: string\n): Readonly {\n let location: Readonly = {\n pathname: typeof current === \"string\" ? current : current.pathname,\n search: \"\",\n hash: \"\",\n ...(typeof to === \"string\" ? parsePath(to) : to),\n state,\n // TODO: This could be cleaned up. push/replace should probably just take\n // full Locations now and avoid the need to run through this flow at all\n // But that's a pretty big refactor to the current test suite so going to\n // keep as is for the time being and just let any incoming keys take precedence\n key: (to && (to as Location).key) || key || createKey(),\n };\n return location;\n}\n\n/**\n * Creates a string URL path from the given pathname, search, and hash components.\n */\nexport function createPath({\n pathname = \"/\",\n search = \"\",\n hash = \"\",\n}: Partial) {\n if (search && search !== \"?\")\n pathname += search.charAt(0) === \"?\" ? search : \"?\" + search;\n if (hash && hash !== \"#\")\n pathname += hash.charAt(0) === \"#\" ? hash : \"#\" + hash;\n return pathname;\n}\n\n/**\n * Parses a string URL path into its separate pathname, search, and hash components.\n */\nexport function parsePath(path: string): Partial {\n let parsedPath: Partial = {};\n\n if (path) {\n let hashIndex = path.indexOf(\"#\");\n if (hashIndex >= 0) {\n parsedPath.hash = path.substr(hashIndex);\n path = path.substr(0, hashIndex);\n }\n\n let searchIndex = path.indexOf(\"?\");\n if (searchIndex >= 0) {\n parsedPath.search = path.substr(searchIndex);\n path = path.substr(0, searchIndex);\n }\n\n if (path) {\n parsedPath.pathname = path;\n }\n }\n\n return parsedPath;\n}\n\nexport interface UrlHistory extends History {}\n\nexport type UrlHistoryOptions = {\n window?: Window;\n v5Compat?: boolean;\n};\n\nfunction getUrlBasedHistory(\n getLocation: (window: Window, globalHistory: Window[\"history\"]) => Location,\n createHref: (window: Window, to: To) => string,\n validateLocation: ((location: Location, to: To) => void) | null,\n options: UrlHistoryOptions = {}\n): UrlHistory {\n let { window = document.defaultView!, v5Compat = false } = options;\n let globalHistory = window.history;\n let action = Action.Pop;\n let listener: Listener | null = null;\n\n let index = getIndex()!;\n // Index should only be null when we initialize. If not, it's because the\n // user called history.pushState or history.replaceState directly, in which\n // case we should log a warning as it will result in bugs.\n if (index == null) {\n index = 0;\n globalHistory.replaceState({ ...globalHistory.state, idx: index }, \"\");\n }\n\n function getIndex(): number {\n let state = globalHistory.state || { idx: null };\n return state.idx;\n }\n\n function handlePop() {\n action = Action.Pop;\n let nextIndex = getIndex();\n let delta = nextIndex == null ? null : nextIndex - index;\n index = nextIndex;\n if (listener) {\n listener({ action, location: history.location, delta });\n }\n }\n\n function push(to: To, state?: any) {\n action = Action.Push;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex() + 1;\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n\n // try...catch because iOS limits us to 100 pushState calls :/\n try {\n globalHistory.pushState(historyState, \"\", url);\n } catch (error) {\n // They are going to lose state here, but there is no real\n // way to warn them about it since the page will refresh...\n window.location.assign(url);\n }\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 1 });\n }\n }\n\n function replace(to: To, state?: any) {\n action = Action.Replace;\n let location = createLocation(history.location, to, state);\n if (validateLocation) validateLocation(location, to);\n\n index = getIndex();\n let historyState = getHistoryState(location, index);\n let url = history.createHref(location);\n globalHistory.replaceState(historyState, \"\", url);\n\n if (v5Compat && listener) {\n listener({ action, location: history.location, delta: 0 });\n }\n }\n\n function createURL(to: To): URL {\n // window.location.origin is \"null\" (the literal string value) in Firefox\n // under certain conditions, notably when serving from a local HTML file\n // See https://bugzilla.mozilla.org/show_bug.cgi?id=878297\n let base =\n window.location.origin !== \"null\"\n ? window.location.origin\n : window.location.href;\n\n let href = typeof to === \"string\" ? to : createPath(to);\n invariant(\n base,\n `No window.location.(origin|href) available to create URL for href: ${href}`\n );\n return new URL(href, base);\n }\n\n let history: History = {\n get action() {\n return action;\n },\n get location() {\n return getLocation(window, globalHistory);\n },\n listen(fn: Listener) {\n if (listener) {\n throw new Error(\"A history only accepts one active listener\");\n }\n window.addEventListener(PopStateEventType, handlePop);\n listener = fn;\n\n return () => {\n window.removeEventListener(PopStateEventType, handlePop);\n listener = null;\n };\n },\n createHref(to) {\n return createHref(window, to);\n },\n createURL,\n encodeLocation(to) {\n // Encode a Location the same way window.location would\n let url = createURL(to);\n return {\n pathname: url.pathname,\n search: url.search,\n hash: url.hash,\n };\n },\n push,\n replace,\n go(n) {\n return globalHistory.go(n);\n },\n };\n\n return history;\n}\n\n//#endregion\n","export default function _arrayWithHoles(arr) {\n if (Array.isArray(arr)) return arr;\n}","export default function _arrayLikeToArray(arr, len) {\n if (len == null || len > arr.length) len = arr.length;\n for (var i = 0, arr2 = new Array(len); i < len; i++) arr2[i] = arr[i];\n return arr2;\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _unsupportedIterableToArray(o, minLen) {\n if (!o) return;\n if (typeof o === \"string\") return arrayLikeToArray(o, minLen);\n var n = Object.prototype.toString.call(o).slice(8, -1);\n if (n === \"Object\" && o.constructor) n = o.constructor.name;\n if (n === \"Map\" || n === \"Set\") return Array.from(o);\n if (n === \"Arguments\" || /^(?:Ui|I)nt(?:8|16|32)(?:Clamped)?Array$/.test(n)) return arrayLikeToArray(o, minLen);\n}","export default function _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}","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArrayLimit from \"./iterableToArrayLimit.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _slicedToArray(arr, i) {\n return arrayWithHoles(arr) || iterableToArrayLimit(arr, i) || unsupportedIterableToArray(arr, i) || nonIterableRest();\n}","export default function _iterableToArrayLimit(arr, i) {\n var _i = null == arr ? null : \"undefined\" != typeof Symbol && arr[Symbol.iterator] || arr[\"@@iterator\"];\n if (null != _i) {\n var _s,\n _e,\n _x,\n _r,\n _arr = [],\n _n = !0,\n _d = !1;\n try {\n if (_x = (_i = _i.call(arr)).next, 0 === i) {\n if (Object(_i) !== _i) return;\n _n = !1;\n } else for (; !(_n = (_s = _x.call(_i)).done) && (_arr.push(_s.value), _arr.length !== i); _n = !0);\n } catch (err) {\n _d = !0, _e = err;\n } finally {\n try {\n if (!_n && null != _i[\"return\"] && (_r = _i[\"return\"](), Object(_r) !== _r)) return;\n } finally {\n if (_d) throw _e;\n }\n }\n return _arr;\n }\n}","import unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nexport default function _createForOfIteratorHelper(o, allowArrayLike) {\n var it = typeof Symbol !== \"undefined\" && o[Symbol.iterator] || o[\"@@iterator\"];\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 var F = function F() {};\n return {\n s: F,\n n: function n() {\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(_e) {\n throw _e;\n },\n f: F\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 var normalCompletion = true,\n didErr = false,\n err;\n return {\n s: function s() {\n it = it.call(o);\n },\n n: function n() {\n var step = it.next();\n normalCompletion = step.done;\n return step;\n },\n e: function e(_e2) {\n didErr = true;\n err = _e2;\n },\n f: function f() {\n try {\n if (!normalCompletion && it[\"return\"] != null) it[\"return\"]();\n } finally {\n if (didErr) throw err;\n }\n }\n };\n}","export default function _iterableToArray(iter) {\n if (typeof Symbol !== \"undefined\" && iter[Symbol.iterator] != null || iter[\"@@iterator\"] != null) return Array.from(iter);\n}","import arrayWithoutHoles from \"./arrayWithoutHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableSpread from \"./nonIterableSpread.js\";\nexport default function _toConsumableArray(arr) {\n return arrayWithoutHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableSpread();\n}","import arrayLikeToArray from \"./arrayLikeToArray.js\";\nexport default function _arrayWithoutHoles(arr) {\n if (Array.isArray(arr)) return arrayLikeToArray(arr);\n}","export default function _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}","export default function _classCallCheck(instance, Constructor) {\n if (!(instance instanceof Constructor)) {\n throw new TypeError(\"Cannot call a class as a function\");\n }\n}","import _typeof from \"./typeof.js\";\nimport toPrimitive from \"./toPrimitive.js\";\nexport default function _toPropertyKey(arg) {\n var key = toPrimitive(arg, \"string\");\n return _typeof(key) === \"symbol\" ? key : String(key);\n}","import _typeof from \"./typeof.js\";\nexport default function _toPrimitive(input, hint) {\n if (_typeof(input) !== \"object\" || input === null) return input;\n var prim = input[Symbol.toPrimitive];\n if (prim !== undefined) {\n var res = prim.call(input, hint || \"default\");\n if (_typeof(res) !== \"object\") return res;\n throw new TypeError(\"@@toPrimitive must return a primitive value.\");\n }\n return (hint === \"string\" ? String : Number)(input);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nfunction _defineProperties(target, props) {\n for (var i = 0; i < props.length; i++) {\n var descriptor = props[i];\n descriptor.enumerable = descriptor.enumerable || false;\n descriptor.configurable = true;\n if (\"value\" in descriptor) descriptor.writable = true;\n Object.defineProperty(target, toPropertyKey(descriptor.key), descriptor);\n }\n}\nexport default function _createClass(Constructor, protoProps, staticProps) {\n if (protoProps) _defineProperties(Constructor.prototype, protoProps);\n if (staticProps) _defineProperties(Constructor, staticProps);\n Object.defineProperty(Constructor, \"prototype\", {\n writable: false\n });\n return Constructor;\n}","export default function _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}","import setPrototypeOf from \"./setPrototypeOf.js\";\nexport default function _inherits(subClass, superClass) {\n if (typeof superClass !== \"function\" && superClass !== null) {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n 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}","export default function _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}","export default function _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 try {\n Boolean.prototype.valueOf.call(Reflect.construct(Boolean, [], function () {}));\n return true;\n } catch (e) {\n return false;\n }\n}","export default function _assertThisInitialized(self) {\n if (self === void 0) {\n throw new ReferenceError(\"this hasn't been initialised - super() hasn't been called\");\n }\n return self;\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nimport possibleConstructorReturn from \"./possibleConstructorReturn.js\";\nexport default function _createSuper(Derived) {\n var hasNativeReflectConstruct = isNativeReflectConstruct();\n return function _createSuperInternal() {\n var Super = getPrototypeOf(Derived),\n result;\n if (hasNativeReflectConstruct) {\n var NewTarget = getPrototypeOf(this).constructor;\n result = Reflect.construct(Super, arguments, NewTarget);\n } else {\n result = Super.apply(this, arguments);\n }\n return possibleConstructorReturn(this, result);\n };\n}","import _typeof from \"./typeof.js\";\nimport assertThisInitialized from \"./assertThisInitialized.js\";\nexport default function _possibleConstructorReturn(self, call) {\n if (call && (_typeof(call) === \"object\" || typeof call === \"function\")) {\n return call;\n } else if (call !== void 0) {\n throw new TypeError(\"Derived constructors may only return object or undefined\");\n }\n return assertThisInitialized(self);\n}","import toPropertyKey from \"./toPropertyKey.js\";\nexport default function _defineProperty(obj, key, value) {\n key = toPropertyKey(key);\n if (key in obj) {\n Object.defineProperty(obj, key, {\n value: value,\n enumerable: true,\n configurable: true,\n writable: true\n });\n } else {\n obj[key] = value;\n }\n return obj;\n}","import setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeReflectConstruct from \"./isNativeReflectConstruct.js\";\nexport default function _construct(Parent, args, Class) {\n if (isNativeReflectConstruct()) {\n _construct = Reflect.construct.bind();\n } else {\n _construct = function _construct(Parent, args, Class) {\n var a = [null];\n a.push.apply(a, args);\n var Constructor = Function.bind.apply(Parent, a);\n var instance = new Constructor();\n if (Class) setPrototypeOf(instance, Class.prototype);\n return instance;\n };\n }\n return _construct.apply(null, arguments);\n}","import getPrototypeOf from \"./getPrototypeOf.js\";\nimport setPrototypeOf from \"./setPrototypeOf.js\";\nimport isNativeFunction from \"./isNativeFunction.js\";\nimport construct from \"./construct.js\";\nexport default function _wrapNativeSuper(Class) {\n var _cache = typeof Map === \"function\" ? new Map() : undefined;\n _wrapNativeSuper = function _wrapNativeSuper(Class) {\n if (Class === null || !isNativeFunction(Class)) return Class;\n if (typeof Class !== \"function\") {\n throw new TypeError(\"Super expression must either be null or a function\");\n }\n if (typeof _cache !== \"undefined\") {\n if (_cache.has(Class)) return _cache.get(Class);\n _cache.set(Class, Wrapper);\n }\n function Wrapper() {\n return construct(Class, arguments, getPrototypeOf(this).constructor);\n }\n Wrapper.prototype = Object.create(Class.prototype, {\n constructor: {\n value: Wrapper,\n enumerable: false,\n writable: true,\n configurable: true\n }\n });\n return setPrototypeOf(Wrapper, Class);\n };\n return _wrapNativeSuper(Class);\n}","export default function _isNativeFunction(fn) {\n return Function.toString.call(fn).indexOf(\"[native code]\") !== -1;\n}","import type { Location, Path, To } from \"./history\";\nimport { warning, invariant, parsePath } from \"./history\";\n\n/**\n * Map of routeId -> data returned from a loader/action/error\n */\nexport interface RouteData {\n [routeId: string]: any;\n}\n\nexport enum ResultType {\n data = \"data\",\n deferred = \"deferred\",\n redirect = \"redirect\",\n error = \"error\",\n}\n\n/**\n * Successful result from a loader or action\n */\nexport interface SuccessResult {\n type: ResultType.data;\n data: any;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Successful defer() result from a loader or action\n */\nexport interface DeferredResult {\n type: ResultType.deferred;\n deferredData: DeferredData;\n statusCode?: number;\n headers?: Headers;\n}\n\n/**\n * Redirect result from a loader or action\n */\nexport interface RedirectResult {\n type: ResultType.redirect;\n status: number;\n location: string;\n revalidate: boolean;\n}\n\n/**\n * Unsuccessful result from a loader or action\n */\nexport interface ErrorResult {\n type: ResultType.error;\n error: any;\n headers?: Headers;\n}\n\n/**\n * Result from a loader or action - potentially successful or unsuccessful\n */\nexport type DataResult =\n | SuccessResult\n | DeferredResult\n | RedirectResult\n | ErrorResult;\n\ntype LowerCaseFormMethod = \"get\" | \"post\" | \"put\" | \"patch\" | \"delete\";\ntype UpperCaseFormMethod = Uppercase;\n\n/**\n * Users can specify either lowercase or uppercase form methods on
,\n * useSubmit(), , etc.\n */\nexport type HTMLFormMethod = LowerCaseFormMethod | UpperCaseFormMethod;\n\n/**\n * Active navigation/fetcher form methods are exposed in lowercase on the\n * RouterState\n */\nexport type FormMethod = LowerCaseFormMethod;\nexport type MutationFormMethod = Exclude;\n\n/**\n * In v7, active navigation/fetcher form methods are exposed in uppercase on the\n * RouterState. This is to align with the normalization done via fetch().\n */\nexport type V7_FormMethod = UpperCaseFormMethod;\nexport type V7_MutationFormMethod = Exclude;\n\nexport type FormEncType =\n | \"application/x-www-form-urlencoded\"\n | \"multipart/form-data\";\n\n/**\n * @private\n * Internal interface to pass around for action submissions, not intended for\n * external consumption\n */\nexport interface Submission {\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n}\n\n/**\n * @private\n * Arguments passed to route loader/action functions. Same for now but we keep\n * this as a private implementation detail in case they diverge in the future.\n */\ninterface DataFunctionArgs {\n request: Request;\n params: Params;\n context?: any;\n}\n\n/**\n * Arguments passed to loader functions\n */\nexport interface LoaderFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Arguments passed to action functions\n */\nexport interface ActionFunctionArgs extends DataFunctionArgs {}\n\n/**\n * Route loader function signature\n */\nexport interface LoaderFunction {\n (args: LoaderFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route action function signature\n */\nexport interface ActionFunction {\n (args: ActionFunctionArgs): Promise | Response | Promise | any;\n}\n\n/**\n * Route shouldRevalidate function signature. This runs after any submission\n * (navigation or fetcher), so we flatten the navigation/fetcher submission\n * onto the arguments. It shouldn't matter whether it came from a navigation\n * or a fetcher, what really matters is the URLs and the formData since loaders\n * have to re-run based on the data models that were potentially mutated.\n */\nexport interface ShouldRevalidateFunction {\n (args: {\n currentUrl: URL;\n currentParams: AgnosticDataRouteMatch[\"params\"];\n nextUrl: URL;\n nextParams: AgnosticDataRouteMatch[\"params\"];\n formMethod?: Submission[\"formMethod\"];\n formAction?: Submission[\"formAction\"];\n formEncType?: Submission[\"formEncType\"];\n formData?: Submission[\"formData\"];\n actionResult?: DataResult;\n defaultShouldRevalidate: boolean;\n }): boolean;\n}\n\n/**\n * Function provided by the framework-aware layers to set `hasErrorBoundary`\n * from the framework-aware `errorElement` prop\n */\nexport interface DetectErrorBoundaryFunction {\n (route: AgnosticRouteObject): boolean;\n}\n\n/**\n * Keys we cannot change from within a lazy() function. We spread all other keys\n * onto the route. Either they're meaningful to the router, or they'll get\n * ignored.\n */\nexport type ImmutableRouteKey =\n | \"lazy\"\n | \"caseSensitive\"\n | \"path\"\n | \"id\"\n | \"index\"\n | \"children\";\n\nexport const immutableRouteKeys = new Set([\n \"lazy\",\n \"caseSensitive\",\n \"path\",\n \"id\",\n \"index\",\n \"children\",\n]);\n\n/**\n * lazy() function to load a route definition, which can add non-matching\n * related properties to a route\n */\nexport interface LazyRouteFunction {\n (): Promise>;\n}\n\n/**\n * Base RouteObject with common props shared by all types of routes\n */\ntype AgnosticBaseRouteObject = {\n caseSensitive?: boolean;\n path?: string;\n id?: string;\n loader?: LoaderFunction;\n action?: ActionFunction;\n hasErrorBoundary?: boolean;\n shouldRevalidate?: ShouldRevalidateFunction;\n handle?: any;\n lazy?: LazyRouteFunction;\n};\n\n/**\n * Index routes must not have children\n */\nexport type AgnosticIndexRouteObject = AgnosticBaseRouteObject & {\n children?: undefined;\n index: true;\n};\n\n/**\n * Non-index routes may have children, but cannot have index\n */\nexport type AgnosticNonIndexRouteObject = AgnosticBaseRouteObject & {\n children?: AgnosticRouteObject[];\n index?: false;\n};\n\n/**\n * A route object represents a logical route, with (optionally) its child\n * routes organized in a tree-like structure.\n */\nexport type AgnosticRouteObject =\n | AgnosticIndexRouteObject\n | AgnosticNonIndexRouteObject;\n\nexport type AgnosticDataIndexRouteObject = AgnosticIndexRouteObject & {\n id: string;\n};\n\nexport type AgnosticDataNonIndexRouteObject = AgnosticNonIndexRouteObject & {\n children?: AgnosticDataRouteObject[];\n id: string;\n};\n\n/**\n * A data route object, which is just a RouteObject with a required unique ID\n */\nexport type AgnosticDataRouteObject =\n | AgnosticDataIndexRouteObject\n | AgnosticDataNonIndexRouteObject;\n\nexport type RouteManifest = Record;\n\n// Recursive helper for finding path parameters in the absence of wildcards\ntype _PathParam =\n // split path into individual path segments\n Path extends `${infer L}/${infer R}`\n ? _PathParam | _PathParam\n : // find params after `:`\n Path extends `:${infer Param}`\n ? Param extends `${infer Optional}?`\n ? Optional\n : Param\n : // otherwise, there aren't any params present\n never;\n\n/**\n * Examples:\n * \"/a/b/*\" -> \"*\"\n * \":a\" -> \"a\"\n * \"/a/:b\" -> \"b\"\n * \"/a/blahblahblah:b\" -> \"b\"\n * \"/:a/:b\" -> \"a\" | \"b\"\n * \"/:a/b/:c/*\" -> \"a\" | \"c\" | \"*\"\n */\ntype PathParam =\n // check if path is just a wildcard\n Path extends \"*\" | \"/*\"\n ? \"*\"\n : // look for wildcard at the end of the path\n Path extends `${infer Rest}/*`\n ? \"*\" | _PathParam\n : // look for params in the absence of wildcards\n _PathParam;\n\n// Attempt to parse the given string segment. If it fails, then just return the\n// plain string type as a default fallback. Otherwise return the union of the\n// parsed string literals that were referenced as dynamic segments in the route.\nexport type ParamParseKey =\n // if could not find path params, fallback to `string`\n [PathParam] extends [never] ? string : PathParam;\n\n/**\n * The parameters that were parsed from the URL path.\n */\nexport type Params = {\n readonly [key in Key]: string | undefined;\n};\n\n/**\n * A RouteMatch contains info about how a route matched a URL.\n */\nexport interface AgnosticRouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The route object that was used to match.\n */\n route: RouteObjectType;\n}\n\nexport interface AgnosticDataRouteMatch\n extends AgnosticRouteMatch {}\n\nfunction isIndexRoute(\n route: AgnosticRouteObject\n): route is AgnosticIndexRouteObject {\n return route.index === true;\n}\n\n// Walk the route tree generating unique IDs where necessary so we are working\n// solely with AgnosticDataRouteObject's within the Router\nexport function convertRoutesToDataRoutes(\n routes: AgnosticRouteObject[],\n detectErrorBoundary: DetectErrorBoundaryFunction,\n parentPath: number[] = [],\n manifest: RouteManifest = {}\n): AgnosticDataRouteObject[] {\n return routes.map((route, index) => {\n let treePath = [...parentPath, index];\n let id = typeof route.id === \"string\" ? route.id : treePath.join(\"-\");\n invariant(\n route.index !== true || !route.children,\n `Cannot specify children on an index route`\n );\n invariant(\n !manifest[id],\n `Found a route id collision on id \"${id}\". Route ` +\n \"id's must be globally unique within Data Router usages\"\n );\n\n if (isIndexRoute(route)) {\n let indexRoute: AgnosticDataIndexRouteObject = {\n ...route,\n hasErrorBoundary: detectErrorBoundary(route),\n id,\n };\n manifest[id] = indexRoute;\n return indexRoute;\n } else {\n let pathOrLayoutRoute: AgnosticDataNonIndexRouteObject = {\n ...route,\n id,\n hasErrorBoundary: detectErrorBoundary(route),\n children: undefined,\n };\n manifest[id] = pathOrLayoutRoute;\n\n if (route.children) {\n pathOrLayoutRoute.children = convertRoutesToDataRoutes(\n route.children,\n detectErrorBoundary,\n treePath,\n manifest\n );\n }\n\n return pathOrLayoutRoute;\n }\n });\n}\n\n/**\n * Matches the given routes to a location and returns the match data.\n *\n * @see https://reactrouter.com/utils/match-routes\n */\nexport function matchRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n locationArg: Partial | string,\n basename = \"/\"\n): AgnosticRouteMatch[] | null {\n let location =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n let pathname = stripBasename(location.pathname || \"/\", basename);\n\n if (pathname == null) {\n return null;\n }\n\n let branches = flattenRoutes(routes);\n rankRouteBranches(branches);\n\n let matches = null;\n for (let i = 0; matches == null && i < branches.length; ++i) {\n matches = matchRouteBranch(\n branches[i],\n // Incoming pathnames are generally encoded from either window.location\n // or from router.navigate, but we want to match against the unencoded\n // paths in the route definitions. Memory router locations won't be\n // encoded here but there also shouldn't be anything to decode so this\n // should be a safe operation. This avoids needing matchRoutes to be\n // history-aware.\n safelyDecodeURI(pathname)\n );\n }\n\n return matches;\n}\n\ninterface RouteMeta<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n relativePath: string;\n caseSensitive: boolean;\n childrenIndex: number;\n route: RouteObjectType;\n}\n\ninterface RouteBranch<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n> {\n path: string;\n score: number;\n routesMeta: RouteMeta[];\n}\n\nfunction flattenRoutes<\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n routes: RouteObjectType[],\n branches: RouteBranch[] = [],\n parentsMeta: RouteMeta[] = [],\n parentPath = \"\"\n): RouteBranch[] {\n let flattenRoute = (\n route: RouteObjectType,\n index: number,\n relativePath?: string\n ) => {\n let meta: RouteMeta = {\n relativePath:\n relativePath === undefined ? route.path || \"\" : relativePath,\n caseSensitive: route.caseSensitive === true,\n childrenIndex: index,\n route,\n };\n\n if (meta.relativePath.startsWith(\"/\")) {\n invariant(\n meta.relativePath.startsWith(parentPath),\n `Absolute route path \"${meta.relativePath}\" nested under path ` +\n `\"${parentPath}\" is not valid. An absolute child route path ` +\n `must start with the combined path of all its parent routes.`\n );\n\n meta.relativePath = meta.relativePath.slice(parentPath.length);\n }\n\n let path = joinPaths([parentPath, meta.relativePath]);\n let routesMeta = parentsMeta.concat(meta);\n\n // Add the children before adding this route to the array so we traverse the\n // route tree depth-first and child routes appear before their parents in\n // the \"flattened\" version.\n if (route.children && route.children.length > 0) {\n invariant(\n // Our types know better, but runtime JS may not!\n // @ts-expect-error\n route.index !== true,\n `Index routes must not have child routes. Please remove ` +\n `all child routes from route path \"${path}\".`\n );\n\n flattenRoutes(route.children, branches, routesMeta, path);\n }\n\n // Routes without a path shouldn't ever match by themselves unless they are\n // index routes, so don't add them to the list of possible branches.\n if (route.path == null && !route.index) {\n return;\n }\n\n branches.push({\n path,\n score: computeScore(path, route.index),\n routesMeta,\n });\n };\n routes.forEach((route, index) => {\n // coarse-grain check for optional params\n if (route.path === \"\" || !route.path?.includes(\"?\")) {\n flattenRoute(route, index);\n } else {\n for (let exploded of explodeOptionalSegments(route.path)) {\n flattenRoute(route, index, exploded);\n }\n }\n });\n\n return branches;\n}\n\n/**\n * Computes all combinations of optional path segments for a given path,\n * excluding combinations that are ambiguous and of lower priority.\n *\n * For example, `/one/:two?/three/:four?/:five?` explodes to:\n * - `/one/three`\n * - `/one/:two/three`\n * - `/one/three/:four`\n * - `/one/three/:five`\n * - `/one/:two/three/:four`\n * - `/one/:two/three/:five`\n * - `/one/three/:four/:five`\n * - `/one/:two/three/:four/:five`\n */\nfunction explodeOptionalSegments(path: string): string[] {\n let segments = path.split(\"/\");\n if (segments.length === 0) return [];\n\n let [first, ...rest] = segments;\n\n // Optional path segments are denoted by a trailing `?`\n let isOptional = first.endsWith(\"?\");\n // Compute the corresponding required segment: `foo?` -> `foo`\n let required = first.replace(/\\?$/, \"\");\n\n if (rest.length === 0) {\n // Intepret empty string as omitting an optional segment\n // `[\"one\", \"\", \"three\"]` corresponds to omitting `:two` from `/one/:two?/three` -> `/one/three`\n return isOptional ? [required, \"\"] : [required];\n }\n\n let restExploded = explodeOptionalSegments(rest.join(\"/\"));\n\n let result: string[] = [];\n\n // All child paths with the prefix. Do this for all children before the\n // optional version for all children so we get consistent ordering where the\n // parent optional aspect is preferred as required. Otherwise, we can get\n // child sections interspersed where deeper optional segments are higher than\n // parent optional segments, where for example, /:two would explodes _earlier_\n // then /:one. By always including the parent as required _for all children_\n // first, we avoid this issue\n result.push(\n ...restExploded.map((subpath) =>\n subpath === \"\" ? required : [required, subpath].join(\"/\")\n )\n );\n\n // Then if this is an optional value, add all child versions without\n if (isOptional) {\n result.push(...restExploded);\n }\n\n // for absolute paths, ensure `/` instead of empty segment\n return result.map((exploded) =>\n path.startsWith(\"/\") && exploded === \"\" ? \"/\" : exploded\n );\n}\n\nfunction rankRouteBranches(branches: RouteBranch[]): void {\n branches.sort((a, b) =>\n a.score !== b.score\n ? b.score - a.score // Higher score first\n : compareIndexes(\n a.routesMeta.map((meta) => meta.childrenIndex),\n b.routesMeta.map((meta) => meta.childrenIndex)\n )\n );\n}\n\nconst paramRe = /^:\\w+$/;\nconst dynamicSegmentValue = 3;\nconst indexRouteValue = 2;\nconst emptySegmentValue = 1;\nconst staticSegmentValue = 10;\nconst splatPenalty = -2;\nconst isSplat = (s: string) => s === \"*\";\n\nfunction computeScore(path: string, index: boolean | undefined): number {\n let segments = path.split(\"/\");\n let initialScore = segments.length;\n if (segments.some(isSplat)) {\n initialScore += splatPenalty;\n }\n\n if (index) {\n initialScore += indexRouteValue;\n }\n\n return segments\n .filter((s) => !isSplat(s))\n .reduce(\n (score, segment) =>\n score +\n (paramRe.test(segment)\n ? dynamicSegmentValue\n : segment === \"\"\n ? emptySegmentValue\n : staticSegmentValue),\n initialScore\n );\n}\n\nfunction compareIndexes(a: number[], b: number[]): number {\n let siblings =\n a.length === b.length && a.slice(0, -1).every((n, i) => n === b[i]);\n\n return siblings\n ? // If two routes are siblings, we should try to match the earlier sibling\n // first. This allows people to have fine-grained control over the matching\n // behavior by simply putting routes with identical paths in the order they\n // want them tried.\n a[a.length - 1] - b[b.length - 1]\n : // Otherwise, it doesn't really make sense to rank non-siblings by index,\n // so they sort equally.\n 0;\n}\n\nfunction matchRouteBranch<\n ParamKey extends string = string,\n RouteObjectType extends AgnosticRouteObject = AgnosticRouteObject\n>(\n branch: RouteBranch,\n pathname: string\n): AgnosticRouteMatch[] | null {\n let { routesMeta } = branch;\n\n let matchedParams = {};\n let matchedPathname = \"/\";\n let matches: AgnosticRouteMatch[] = [];\n for (let i = 0; i < routesMeta.length; ++i) {\n let meta = routesMeta[i];\n let end = i === routesMeta.length - 1;\n let remainingPathname =\n matchedPathname === \"/\"\n ? pathname\n : pathname.slice(matchedPathname.length) || \"/\";\n let match = matchPath(\n { path: meta.relativePath, caseSensitive: meta.caseSensitive, end },\n remainingPathname\n );\n\n if (!match) return null;\n\n Object.assign(matchedParams, match.params);\n\n let route = meta.route;\n\n matches.push({\n // TODO: Can this as be avoided?\n params: matchedParams as Params,\n pathname: joinPaths([matchedPathname, match.pathname]),\n pathnameBase: normalizePathname(\n joinPaths([matchedPathname, match.pathnameBase])\n ),\n route,\n });\n\n if (match.pathnameBase !== \"/\") {\n matchedPathname = joinPaths([matchedPathname, match.pathnameBase]);\n }\n }\n\n return matches;\n}\n\n/**\n * Returns a path with params interpolated.\n *\n * @see https://reactrouter.com/utils/generate-path\n */\nexport function generatePath(\n originalPath: Path,\n params: {\n [key in PathParam]: string | null;\n } = {} as any\n): string {\n let path: string = originalPath;\n if (path.endsWith(\"*\") && path !== \"*\" && !path.endsWith(\"/*\")) {\n warning(\n false,\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n path = path.replace(/\\*$/, \"/*\") as Path;\n }\n\n // ensure `/` is added at the beginning if the path is absolute\n const prefix = path.startsWith(\"/\") ? \"/\" : \"\";\n\n const segments = path\n .split(/\\/+/)\n .map((segment, index, array) => {\n const isLastSegment = index === array.length - 1;\n\n // only apply the splat if it's the last segment\n if (isLastSegment && segment === \"*\") {\n const star = \"*\" as PathParam;\n const starParam = params[star];\n\n // Apply the splat\n return starParam;\n }\n\n const keyMatch = segment.match(/^:(\\w+)(\\??)$/);\n if (keyMatch) {\n const [, key, optional] = keyMatch;\n let param = params[key as PathParam];\n\n if (optional === \"?\") {\n return param == null ? \"\" : param;\n }\n\n if (param == null) {\n invariant(false, `Missing \":${key}\" param`);\n }\n\n return param;\n }\n\n // Remove any optional markers from optional static segments\n return segment.replace(/\\?$/g, \"\");\n })\n // Remove empty segments\n .filter((segment) => !!segment);\n\n return prefix + segments.join(\"/\");\n}\n\n/**\n * A PathPattern is used to match on some portion of a URL pathname.\n */\nexport interface PathPattern {\n /**\n * A string to match against a URL pathname. May contain `:id`-style segments\n * to indicate placeholders for dynamic parameters. May also end with `/*` to\n * indicate matching the rest of the URL pathname.\n */\n path: Path;\n /**\n * Should be `true` if the static portions of the `path` should be matched in\n * the same case.\n */\n caseSensitive?: boolean;\n /**\n * Should be `true` if this pattern should match the entire URL pathname.\n */\n end?: boolean;\n}\n\n/**\n * A PathMatch contains info about how a PathPattern matched on a URL pathname.\n */\nexport interface PathMatch {\n /**\n * The names and values of dynamic parameters in the URL.\n */\n params: Params;\n /**\n * The portion of the URL pathname that was matched.\n */\n pathname: string;\n /**\n * The portion of the URL pathname that was matched before child routes.\n */\n pathnameBase: string;\n /**\n * The pattern that was used to match.\n */\n pattern: PathPattern;\n}\n\ntype Mutable = {\n -readonly [P in keyof T]: T[P];\n};\n\n/**\n * Performs pattern matching on a URL pathname and returns information about\n * the match.\n *\n * @see https://reactrouter.com/utils/match-path\n */\nexport function matchPath<\n ParamKey extends ParamParseKey,\n Path extends string\n>(\n pattern: PathPattern | Path,\n pathname: string\n): PathMatch | null {\n if (typeof pattern === \"string\") {\n pattern = { path: pattern, caseSensitive: false, end: true };\n }\n\n let [matcher, paramNames] = compilePath(\n pattern.path,\n pattern.caseSensitive,\n pattern.end\n );\n\n let match = pathname.match(matcher);\n if (!match) return null;\n\n let matchedPathname = match[0];\n let pathnameBase = matchedPathname.replace(/(.)\\/+$/, \"$1\");\n let captureGroups = match.slice(1);\n let params: Params = paramNames.reduce>(\n (memo, paramName, index) => {\n // We need to compute the pathnameBase here using the raw splat value\n // instead of using params[\"*\"] later because it will be decoded then\n if (paramName === \"*\") {\n let splatValue = captureGroups[index] || \"\";\n pathnameBase = matchedPathname\n .slice(0, matchedPathname.length - splatValue.length)\n .replace(/(.)\\/+$/, \"$1\");\n }\n\n memo[paramName] = safelyDecodeURIComponent(\n captureGroups[index] || \"\",\n paramName\n );\n return memo;\n },\n {}\n );\n\n return {\n params,\n pathname: matchedPathname,\n pathnameBase,\n pattern,\n };\n}\n\nfunction compilePath(\n path: string,\n caseSensitive = false,\n end = true\n): [RegExp, string[]] {\n warning(\n path === \"*\" || !path.endsWith(\"*\") || path.endsWith(\"/*\"),\n `Route path \"${path}\" will be treated as if it were ` +\n `\"${path.replace(/\\*$/, \"/*\")}\" because the \\`*\\` character must ` +\n `always follow a \\`/\\` in the pattern. To get rid of this warning, ` +\n `please change the route path to \"${path.replace(/\\*$/, \"/*\")}\".`\n );\n\n let paramNames: string[] = [];\n let regexpSource =\n \"^\" +\n path\n .replace(/\\/*\\*?$/, \"\") // Ignore trailing / and /*, we'll handle it below\n .replace(/^\\/*/, \"/\") // Make sure it has a leading /\n .replace(/[\\\\.*+^$?{}|()[\\]]/g, \"\\\\$&\") // Escape special regex chars\n .replace(/\\/:(\\w+)/g, (_: string, paramName: string) => {\n paramNames.push(paramName);\n return \"/([^\\\\/]+)\";\n });\n\n if (path.endsWith(\"*\")) {\n paramNames.push(\"*\");\n regexpSource +=\n path === \"*\" || path === \"/*\"\n ? \"(.*)$\" // Already matched the initial /, just match the rest\n : \"(?:\\\\/(.+)|\\\\/*)$\"; // Don't include the / in params[\"*\"]\n } else if (end) {\n // When matching to the end, ignore trailing slashes\n regexpSource += \"\\\\/*$\";\n } else if (path !== \"\" && path !== \"/\") {\n // If our path is non-empty and contains anything beyond an initial slash,\n // then we have _some_ form of path in our regex so we should expect to\n // match only if we find the end of this path segment. Look for an optional\n // non-captured trailing slash (to match a portion of the URL) or the end\n // of the path (if we've matched to the end). We used to do this with a\n // word boundary but that gives false positives on routes like\n // /user-preferences since `-` counts as a word boundary.\n regexpSource += \"(?:(?=\\\\/|$))\";\n } else {\n // Nothing to match for \"\" or \"/\"\n }\n\n let matcher = new RegExp(regexpSource, caseSensitive ? undefined : \"i\");\n\n return [matcher, paramNames];\n}\n\nfunction safelyDecodeURI(value: string) {\n try {\n return decodeURI(value);\n } catch (error) {\n warning(\n false,\n `The URL path \"${value}\" could not be decoded because it is is a ` +\n `malformed URL segment. This is probably due to a bad percent ` +\n `encoding (${error}).`\n );\n\n return value;\n }\n}\n\nfunction safelyDecodeURIComponent(value: string, paramName: string) {\n try {\n return decodeURIComponent(value);\n } catch (error) {\n warning(\n false,\n `The value for the URL param \"${paramName}\" will not be decoded because` +\n ` the string \"${value}\" is a malformed URL segment. This is probably` +\n ` due to a bad percent encoding (${error}).`\n );\n\n return value;\n }\n}\n\n/**\n * @private\n */\nexport function stripBasename(\n pathname: string,\n basename: string\n): string | null {\n if (basename === \"/\") return pathname;\n\n if (!pathname.toLowerCase().startsWith(basename.toLowerCase())) {\n return null;\n }\n\n // We want to leave trailing slash behavior in the user's control, so if they\n // specify a basename with a trailing slash, we should support it\n let startIndex = basename.endsWith(\"/\")\n ? basename.length - 1\n : basename.length;\n let nextChar = pathname.charAt(startIndex);\n if (nextChar && nextChar !== \"/\") {\n // pathname does not start with basename/\n return null;\n }\n\n return pathname.slice(startIndex) || \"/\";\n}\n\n/**\n * Returns a resolved path object relative to the given pathname.\n *\n * @see https://reactrouter.com/utils/resolve-path\n */\nexport function resolvePath(to: To, fromPathname = \"/\"): Path {\n let {\n pathname: toPathname,\n search = \"\",\n hash = \"\",\n } = typeof to === \"string\" ? parsePath(to) : to;\n\n let pathname = toPathname\n ? toPathname.startsWith(\"/\")\n ? toPathname\n : resolvePathname(toPathname, fromPathname)\n : fromPathname;\n\n return {\n pathname,\n search: normalizeSearch(search),\n hash: normalizeHash(hash),\n };\n}\n\nfunction resolvePathname(relativePath: string, fromPathname: string): string {\n let segments = fromPathname.replace(/\\/+$/, \"\").split(\"/\");\n let relativeSegments = relativePath.split(\"/\");\n\n relativeSegments.forEach((segment) => {\n if (segment === \"..\") {\n // Keep the root \"\" segment so the pathname starts at /\n if (segments.length > 1) segments.pop();\n } else if (segment !== \".\") {\n segments.push(segment);\n }\n });\n\n return segments.length > 1 ? segments.join(\"/\") : \"/\";\n}\n\nfunction getInvalidPathError(\n char: string,\n field: string,\n dest: string,\n path: Partial\n) {\n return (\n `Cannot include a '${char}' character in a manually specified ` +\n `\\`to.${field}\\` field [${JSON.stringify(\n path\n )}]. Please separate it out to the ` +\n `\\`to.${dest}\\` field. Alternatively you may provide the full path as ` +\n `a string in and the router will parse it for you.`\n );\n}\n\n/**\n * @private\n *\n * When processing relative navigation we want to ignore ancestor routes that\n * do not contribute to the path, such that index/pathless layout routes don't\n * interfere.\n *\n * For example, when moving a route element into an index route and/or a\n * pathless layout route, relative link behavior contained within should stay\n * the same. Both of the following examples should link back to the root:\n *\n * \n * \n * \n *\n * \n * \n * }> // <-- Does not contribute\n * // <-- Does not contribute\n * \n * \n */\nexport function getPathContributingMatches<\n T extends AgnosticRouteMatch = AgnosticRouteMatch\n>(matches: T[]) {\n return matches.filter(\n (match, index) =>\n index === 0 || (match.route.path && match.route.path.length > 0)\n );\n}\n\n/**\n * @private\n */\nexport function resolveTo(\n toArg: To,\n routePathnames: string[],\n locationPathname: string,\n isPathRelative = false\n): Path {\n let to: Partial;\n if (typeof toArg === \"string\") {\n to = parsePath(toArg);\n } else {\n to = { ...toArg };\n\n invariant(\n !to.pathname || !to.pathname.includes(\"?\"),\n getInvalidPathError(\"?\", \"pathname\", \"search\", to)\n );\n invariant(\n !to.pathname || !to.pathname.includes(\"#\"),\n getInvalidPathError(\"#\", \"pathname\", \"hash\", to)\n );\n invariant(\n !to.search || !to.search.includes(\"#\"),\n getInvalidPathError(\"#\", \"search\", \"hash\", to)\n );\n }\n\n let isEmptyPath = toArg === \"\" || to.pathname === \"\";\n let toPathname = isEmptyPath ? \"/\" : to.pathname;\n\n let from: string;\n\n // Routing is relative to the current pathname if explicitly requested.\n //\n // If a pathname is explicitly provided in `to`, it should be relative to the\n // route context. This is explained in `Note on `` values` in our\n // migration guide from v5 as a means of disambiguation between `to` values\n // that begin with `/` and those that do not. However, this is problematic for\n // `to` values that do not provide a pathname. `to` can simply be a search or\n // hash string, in which case we should assume that the navigation is relative\n // to the current location's pathname and *not* the route pathname.\n if (isPathRelative || toPathname == null) {\n from = locationPathname;\n } else {\n let routePathnameIndex = routePathnames.length - 1;\n\n if (toPathname.startsWith(\"..\")) {\n let toSegments = toPathname.split(\"/\");\n\n // Each leading .. segment means \"go up one route\" instead of \"go up one\n // URL segment\". This is a key difference from how works and a\n // major reason we call this a \"to\" value instead of a \"href\".\n while (toSegments[0] === \"..\") {\n toSegments.shift();\n routePathnameIndex -= 1;\n }\n\n to.pathname = toSegments.join(\"/\");\n }\n\n // If there are more \"..\" segments than parent routes, resolve relative to\n // the root / URL.\n from = routePathnameIndex >= 0 ? routePathnames[routePathnameIndex] : \"/\";\n }\n\n let path = resolvePath(to, from);\n\n // Ensure the pathname has a trailing slash if the original \"to\" had one\n let hasExplicitTrailingSlash =\n toPathname && toPathname !== \"/\" && toPathname.endsWith(\"/\");\n // Or if this was a link to the current path which has a trailing slash\n let hasCurrentTrailingSlash =\n (isEmptyPath || toPathname === \".\") && locationPathname.endsWith(\"/\");\n if (\n !path.pathname.endsWith(\"/\") &&\n (hasExplicitTrailingSlash || hasCurrentTrailingSlash)\n ) {\n path.pathname += \"/\";\n }\n\n return path;\n}\n\n/**\n * @private\n */\nexport function getToPathname(to: To): string | undefined {\n // Empty strings should be treated the same as / paths\n return to === \"\" || (to as Path).pathname === \"\"\n ? \"/\"\n : typeof to === \"string\"\n ? parsePath(to).pathname\n : to.pathname;\n}\n\n/**\n * @private\n */\nexport const joinPaths = (paths: string[]): string =>\n paths.join(\"/\").replace(/\\/\\/+/g, \"/\");\n\n/**\n * @private\n */\nexport const normalizePathname = (pathname: string): string =>\n pathname.replace(/\\/+$/, \"\").replace(/^\\/*/, \"/\");\n\n/**\n * @private\n */\nexport const normalizeSearch = (search: string): string =>\n !search || search === \"?\"\n ? \"\"\n : search.startsWith(\"?\")\n ? search\n : \"?\" + search;\n\n/**\n * @private\n */\nexport const normalizeHash = (hash: string): string =>\n !hash || hash === \"#\" ? \"\" : hash.startsWith(\"#\") ? hash : \"#\" + hash;\n\nexport type JsonFunction = (\n data: Data,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * This is a shortcut for creating `application/json` responses. Converts `data`\n * to JSON and sets the `Content-Type` header.\n */\nexport const json: JsonFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n let headers = new Headers(responseInit.headers);\n if (!headers.has(\"Content-Type\")) {\n headers.set(\"Content-Type\", \"application/json; charset=utf-8\");\n }\n\n return new Response(JSON.stringify(data), {\n ...responseInit,\n headers,\n });\n};\n\nexport interface TrackedPromise extends Promise {\n _tracked?: boolean;\n _data?: any;\n _error?: any;\n}\n\nexport class AbortedDeferredError extends Error {}\n\nexport class DeferredData {\n private pendingKeysSet: Set = new Set();\n private controller: AbortController;\n private abortPromise: Promise;\n private unlistenAbortSignal: () => void;\n private subscribers: Set<(aborted: boolean, settledKey?: string) => void> =\n new Set();\n data: Record;\n init?: ResponseInit;\n deferredKeys: string[] = [];\n\n constructor(data: Record, responseInit?: ResponseInit) {\n invariant(\n data && typeof data === \"object\" && !Array.isArray(data),\n \"defer() only accepts plain objects\"\n );\n\n // Set up an AbortController + Promise we can race against to exit early\n // cancellation\n let reject: (e: AbortedDeferredError) => void;\n this.abortPromise = new Promise((_, r) => (reject = r));\n this.controller = new AbortController();\n let onAbort = () =>\n reject(new AbortedDeferredError(\"Deferred data aborted\"));\n this.unlistenAbortSignal = () =>\n this.controller.signal.removeEventListener(\"abort\", onAbort);\n this.controller.signal.addEventListener(\"abort\", onAbort);\n\n this.data = Object.entries(data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: this.trackPromise(key, value),\n }),\n {}\n );\n\n if (this.done) {\n // All incoming values were resolved\n this.unlistenAbortSignal();\n }\n\n this.init = responseInit;\n }\n\n private trackPromise(\n key: string,\n value: Promise | unknown\n ): TrackedPromise | unknown {\n if (!(value instanceof Promise)) {\n return value;\n }\n\n this.deferredKeys.push(key);\n this.pendingKeysSet.add(key);\n\n // We store a little wrapper promise that will be extended with\n // _data/_error props upon resolve/reject\n let promise: TrackedPromise = Promise.race([value, this.abortPromise]).then(\n (data) => this.onSettle(promise, key, null, data as unknown),\n (error) => this.onSettle(promise, key, error as unknown)\n );\n\n // Register rejection listeners to avoid uncaught promise rejections on\n // errors or aborted deferred values\n promise.catch(() => {});\n\n Object.defineProperty(promise, \"_tracked\", { get: () => true });\n return promise;\n }\n\n private onSettle(\n promise: TrackedPromise,\n key: string,\n error: unknown,\n data?: unknown\n ): unknown {\n if (\n this.controller.signal.aborted &&\n error instanceof AbortedDeferredError\n ) {\n this.unlistenAbortSignal();\n Object.defineProperty(promise, \"_error\", { get: () => error });\n return Promise.reject(error);\n }\n\n this.pendingKeysSet.delete(key);\n\n if (this.done) {\n // Nothing left to abort!\n this.unlistenAbortSignal();\n }\n\n if (error) {\n Object.defineProperty(promise, \"_error\", { get: () => error });\n this.emit(false, key);\n return Promise.reject(error);\n }\n\n Object.defineProperty(promise, \"_data\", { get: () => data });\n this.emit(false, key);\n return data;\n }\n\n private emit(aborted: boolean, settledKey?: string) {\n this.subscribers.forEach((subscriber) => subscriber(aborted, settledKey));\n }\n\n subscribe(fn: (aborted: boolean, settledKey?: string) => void) {\n this.subscribers.add(fn);\n return () => this.subscribers.delete(fn);\n }\n\n cancel() {\n this.controller.abort();\n this.pendingKeysSet.forEach((v, k) => this.pendingKeysSet.delete(k));\n this.emit(true);\n }\n\n async resolveData(signal: AbortSignal) {\n let aborted = false;\n if (!this.done) {\n let onAbort = () => this.cancel();\n signal.addEventListener(\"abort\", onAbort);\n aborted = await new Promise((resolve) => {\n this.subscribe((aborted) => {\n signal.removeEventListener(\"abort\", onAbort);\n if (aborted || this.done) {\n resolve(aborted);\n }\n });\n });\n }\n return aborted;\n }\n\n get done() {\n return this.pendingKeysSet.size === 0;\n }\n\n get unwrappedData() {\n invariant(\n this.data !== null && this.done,\n \"Can only unwrap data on initialized and settled deferreds\"\n );\n\n return Object.entries(this.data).reduce(\n (acc, [key, value]) =>\n Object.assign(acc, {\n [key]: unwrapTrackedPromise(value),\n }),\n {}\n );\n }\n\n get pendingKeys() {\n return Array.from(this.pendingKeysSet);\n }\n}\n\nfunction isTrackedPromise(value: any): value is TrackedPromise {\n return (\n value instanceof Promise && (value as TrackedPromise)._tracked === true\n );\n}\n\nfunction unwrapTrackedPromise(value: any) {\n if (!isTrackedPromise(value)) {\n return value;\n }\n\n if (value._error) {\n throw value._error;\n }\n return value._data;\n}\n\nexport type DeferFunction = (\n data: Record,\n init?: number | ResponseInit\n) => DeferredData;\n\nexport const defer: DeferFunction = (data, init = {}) => {\n let responseInit = typeof init === \"number\" ? { status: init } : init;\n\n return new DeferredData(data, responseInit);\n};\n\nexport type RedirectFunction = (\n url: string,\n init?: number | ResponseInit\n) => Response;\n\n/**\n * A redirect response. Sets the status code and the `Location` header.\n * Defaults to \"302 Found\".\n */\nexport const redirect: RedirectFunction = (url, init = 302) => {\n let responseInit = init;\n if (typeof responseInit === \"number\") {\n responseInit = { status: responseInit };\n } else if (typeof responseInit.status === \"undefined\") {\n responseInit.status = 302;\n }\n\n let headers = new Headers(responseInit.headers);\n headers.set(\"Location\", url);\n\n return new Response(null, {\n ...responseInit,\n headers,\n });\n};\n\n/**\n * @private\n * Utility class we use to hold auto-unwrapped 4xx/5xx Response bodies\n */\nexport class ErrorResponse {\n status: number;\n statusText: string;\n data: any;\n error?: Error;\n internal: boolean;\n\n constructor(\n status: number,\n statusText: string | undefined,\n data: any,\n internal = false\n ) {\n this.status = status;\n this.statusText = statusText || \"\";\n this.internal = internal;\n if (data instanceof Error) {\n this.data = data.toString();\n this.error = data;\n } else {\n this.data = data;\n }\n }\n}\n\n/**\n * Check if the given error is an ErrorResponse generated from a 4xx/5xx\n * Response thrown from an action/loader\n */\nexport function isRouteErrorResponse(error: any): error is ErrorResponse {\n return (\n error != null &&\n typeof error.status === \"number\" &&\n typeof error.statusText === \"string\" &&\n typeof error.internal === \"boolean\" &&\n \"data\" in error\n );\n}\n","import arrayWithHoles from \"./arrayWithHoles.js\";\nimport iterableToArray from \"./iterableToArray.js\";\nimport unsupportedIterableToArray from \"./unsupportedIterableToArray.js\";\nimport nonIterableRest from \"./nonIterableRest.js\";\nexport default function _toArray(arr) {\n return arrayWithHoles(arr) || iterableToArray(arr) || unsupportedIterableToArray(arr) || nonIterableRest();\n}","import type { History, Location, Path, To } from \"./history\";\nimport {\n Action as HistoryAction,\n createLocation,\n createPath,\n invariant,\n parsePath,\n warning,\n} from \"./history\";\nimport type {\n DataResult,\n DeferredData,\n AgnosticDataRouteMatch,\n AgnosticDataRouteObject,\n DeferredResult,\n ErrorResult,\n FormEncType,\n FormMethod,\n DetectErrorBoundaryFunction,\n RedirectResult,\n RouteData,\n AgnosticRouteObject,\n Submission,\n SuccessResult,\n AgnosticRouteMatch,\n ShouldRevalidateFunction,\n RouteManifest,\n ImmutableRouteKey,\n ActionFunction,\n LoaderFunction,\n V7_MutationFormMethod,\n V7_FormMethod,\n HTMLFormMethod,\n MutationFormMethod,\n} from \"./utils\";\nimport {\n ErrorResponse,\n ResultType,\n convertRoutesToDataRoutes,\n getPathContributingMatches,\n immutableRouteKeys,\n isRouteErrorResponse,\n joinPaths,\n matchRoutes,\n resolveTo,\n stripBasename,\n} from \"./utils\";\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Types and Constants\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * A Router instance manages all navigation and data loading/mutations\n */\nexport interface Router {\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the basename for the router\n */\n get basename(): RouterInit[\"basename\"];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the current state of the router\n */\n get state(): RouterState;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Return the routes for this router instance\n */\n get routes(): AgnosticDataRouteObject[];\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Initialize the router, including adding history listeners and kicking off\n * initial data fetches. Returns a function to cleanup listeners and abort\n * any in-progress loads\n */\n initialize(): Router;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Subscribe to router.state updates\n *\n * @param fn function to call with the new state\n */\n subscribe(fn: RouterSubscriber): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Enable scroll restoration behavior in the router\n *\n * @param savedScrollPositions Object that will manage positions, in case\n * it's being restored from sessionStorage\n * @param getScrollPosition Function to get the active Y scroll position\n * @param getKey Function to get the key to use for restoration\n */\n enableScrollRestoration(\n savedScrollPositions: Record,\n getScrollPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ): () => void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Navigate forward/backward in the history stack\n * @param to Delta to move in the history stack\n */\n navigate(to: number): Promise;\n\n /**\n * Navigate to the given path\n * @param to Path to navigate to\n * @param opts Navigation options (method, submission, etc.)\n */\n navigate(to: To, opts?: RouterNavigateOptions): Promise;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a fetcher load/submission\n *\n * @param key Fetcher key\n * @param routeId Route that owns the fetcher\n * @param href href to fetch\n * @param opts Fetcher options, (method, submission, etc.)\n */\n fetch(\n key: string,\n routeId: string,\n href: string,\n opts?: RouterNavigateOptions\n ): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Trigger a revalidation of all current route loaders and fetcher loads\n */\n revalidate(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to create an href for the given location\n * @param location\n */\n createHref(location: Location | URL): string;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Utility function to URL encode a destination path according to the internal\n * history implementation\n * @param to\n */\n encodeLocation(to: To): Path;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get/create a fetcher for the given key\n * @param key\n */\n getFetcher(key?: string): Fetcher;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete the fetcher for a given key\n * @param key\n */\n deleteFetcher(key?: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Cleanup listeners and abort any in-progress loads\n */\n dispose(): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Get a navigation blocker\n * @param key The identifier for the blocker\n * @param fn The blocker function implementation\n */\n getBlocker(key: string, fn: BlockerFunction): Blocker;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Delete a navigation blocker\n * @param key The identifier for the blocker\n */\n deleteBlocker(key: string): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * HMR needs to pass in-flight route updates to React Router\n * TODO: Replace this with granular route update APIs (addRoute, updateRoute, deleteRoute)\n */\n _internalSetRoutes(routes: AgnosticRouteObject[]): void;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal fetch AbortControllers accessed by unit tests\n */\n _internalFetchControllers: Map;\n\n /**\n * @internal\n * PRIVATE - DO NOT USE\n *\n * Internal pending DeferredData instances accessed by unit tests\n */\n _internalActiveDeferreds: Map;\n}\n\n/**\n * State maintained internally by the router. During a navigation, all states\n * reflect the the \"old\" location unless otherwise noted.\n */\nexport interface RouterState {\n /**\n * The action of the most recent navigation\n */\n historyAction: HistoryAction;\n\n /**\n * The current location reflected by the router\n */\n location: Location;\n\n /**\n * The current set of route matches\n */\n matches: AgnosticDataRouteMatch[];\n\n /**\n * Tracks whether we've completed our initial data load\n */\n initialized: boolean;\n\n /**\n * Current scroll position we should start at for a new view\n * - number -> scroll position to restore to\n * - false -> do not restore scroll at all (used during submissions)\n * - null -> don't have a saved position, scroll to hash or top of page\n */\n restoreScrollPosition: number | false | null;\n\n /**\n * Indicate whether this navigation should skip resetting the scroll position\n * if we are unable to restore the scroll position\n */\n preventScrollReset: boolean;\n\n /**\n * Tracks the state of the current navigation\n */\n navigation: Navigation;\n\n /**\n * Tracks any in-progress revalidations\n */\n revalidation: RevalidationState;\n\n /**\n * Data from the loaders for the current matches\n */\n loaderData: RouteData;\n\n /**\n * Data from the action for the current matches\n */\n actionData: RouteData | null;\n\n /**\n * Errors caught from loaders for the current matches\n */\n errors: RouteData | null;\n\n /**\n * Map of current fetchers\n */\n fetchers: Map;\n\n /**\n * Map of current blockers\n */\n blockers: Map;\n}\n\n/**\n * Data that can be passed into hydrate a Router from SSR\n */\nexport type HydrationState = Partial<\n Pick\n>;\n\n/**\n * Future flags to toggle new feature behavior\n */\nexport interface FutureConfig {\n v7_normalizeFormMethod: boolean;\n}\n\n/**\n * Initialization options for createRouter\n */\nexport interface RouterInit {\n routes: AgnosticRouteObject[];\n history: History;\n basename?: string;\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n future?: FutureConfig;\n hydrationData?: HydrationState;\n}\n\n/**\n * State returned from a server-side query() call\n */\nexport interface StaticHandlerContext {\n basename: Router[\"basename\"];\n location: RouterState[\"location\"];\n matches: RouterState[\"matches\"];\n loaderData: RouterState[\"loaderData\"];\n actionData: RouterState[\"actionData\"];\n errors: RouterState[\"errors\"];\n statusCode: number;\n loaderHeaders: Record;\n actionHeaders: Record;\n activeDeferreds: Record | null;\n _deepestRenderedBoundaryId?: string | null;\n}\n\n/**\n * A StaticHandler instance manages a singular SSR navigation/fetch event\n */\nexport interface StaticHandler {\n dataRoutes: AgnosticDataRouteObject[];\n query(\n request: Request,\n opts?: { requestContext?: unknown }\n ): Promise;\n queryRoute(\n request: Request,\n opts?: { routeId?: string; requestContext?: unknown }\n ): Promise;\n}\n\n/**\n * Subscriber function signature for changes to router state\n */\nexport interface RouterSubscriber {\n (state: RouterState): void;\n}\n\ninterface UseMatchesMatch {\n id: string;\n pathname: string;\n params: AgnosticRouteMatch[\"params\"];\n data: unknown;\n handle: unknown;\n}\n\n/**\n * Function signature for determining the key to be used in scroll restoration\n * for a given location\n */\nexport interface GetScrollRestorationKeyFunction {\n (location: Location, matches: UseMatchesMatch[]): string | null;\n}\n\n/**\n * Function signature for determining the current scroll position\n */\nexport interface GetScrollPositionFunction {\n (): number;\n}\n\n/**\n * Options for a navigate() call for a Link navigation\n */\ntype LinkNavigateOptions = {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n};\n\n/**\n * Options for a navigate() call for a Form navigation\n */\ntype SubmissionNavigateOptions = {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n formMethod?: HTMLFormMethod;\n formEncType?: FormEncType;\n formData: FormData;\n};\n\n/**\n * Options to pass to navigate() for either a Link or Form navigation\n */\nexport type RouterNavigateOptions =\n | LinkNavigateOptions\n | SubmissionNavigateOptions;\n\n/**\n * Options to pass to fetch()\n */\nexport type RouterFetchOptions =\n | Omit\n | Omit;\n\n/**\n * Potential states for state.navigation\n */\nexport type NavigationStates = {\n Idle: {\n state: \"idle\";\n location: undefined;\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n };\n Loading: {\n state: \"loading\";\n location: Location;\n formMethod: FormMethod | V7_FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n };\n Submitting: {\n state: \"submitting\";\n location: Location;\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n };\n};\n\nexport type Navigation = NavigationStates[keyof NavigationStates];\n\nexport type RevalidationState = \"idle\" | \"loading\";\n\n/**\n * Potential states for fetchers\n */\ntype FetcherStates = {\n Idle: {\n state: \"idle\";\n formMethod: undefined;\n formAction: undefined;\n formEncType: undefined;\n formData: undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Loading: {\n state: \"loading\";\n formMethod: FormMethod | V7_FormMethod | undefined;\n formAction: string | undefined;\n formEncType: FormEncType | undefined;\n formData: FormData | undefined;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n Submitting: {\n state: \"submitting\";\n formMethod: FormMethod | V7_FormMethod;\n formAction: string;\n formEncType: FormEncType;\n formData: FormData;\n data: TData | undefined;\n \" _hasFetcherDoneAnything \"?: boolean;\n };\n};\n\nexport type Fetcher =\n FetcherStates[keyof FetcherStates];\n\ninterface BlockerBlocked {\n state: \"blocked\";\n reset(): void;\n proceed(): void;\n location: Location;\n}\n\ninterface BlockerUnblocked {\n state: \"unblocked\";\n reset: undefined;\n proceed: undefined;\n location: undefined;\n}\n\ninterface BlockerProceeding {\n state: \"proceeding\";\n reset: undefined;\n proceed: undefined;\n location: Location;\n}\n\nexport type Blocker = BlockerUnblocked | BlockerBlocked | BlockerProceeding;\n\nexport type BlockerFunction = (args: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n}) => boolean;\n\ninterface ShortCircuitable {\n /**\n * startNavigation does not need to complete the navigation because we\n * redirected or got interrupted\n */\n shortCircuited?: boolean;\n}\n\ninterface HandleActionResult extends ShortCircuitable {\n /**\n * Error thrown from the current action, keyed by the route containing the\n * error boundary to render the error. To be committed to the state after\n * loaders have completed\n */\n pendingActionError?: RouteData;\n /**\n * Data returned from the current action, keyed by the route owning the action.\n * To be committed to the state after loaders have completed\n */\n pendingActionData?: RouteData;\n}\n\ninterface HandleLoadersResult extends ShortCircuitable {\n /**\n * loaderData returned from the current set of loaders\n */\n loaderData?: RouterState[\"loaderData\"];\n /**\n * errors thrown from the current set of loaders\n */\n errors?: RouterState[\"errors\"];\n}\n\n/**\n * Cached info for active fetcher.load() instances so they can participate\n * in revalidation\n */\ninterface FetchLoadMatch {\n routeId: string;\n path: string;\n}\n\n/**\n * Identified fetcher.load() calls that need to be revalidated\n */\ninterface RevalidatingFetcher extends FetchLoadMatch {\n key: string;\n match: AgnosticDataRouteMatch | null;\n matches: AgnosticDataRouteMatch[] | null;\n}\n\n/**\n * Wrapper object to allow us to throw any response out from callLoaderOrAction\n * for queryRouter while preserving whether or not it was thrown or returned\n * from the loader/action\n */\ninterface QueryRouteResponse {\n type: ResultType.data | ResultType.error;\n response: Response;\n}\n\nconst validMutationMethodsArr: MutationFormMethod[] = [\n \"post\",\n \"put\",\n \"patch\",\n \"delete\",\n];\nconst validMutationMethods = new Set(\n validMutationMethodsArr\n);\n\nconst validRequestMethodsArr: FormMethod[] = [\n \"get\",\n ...validMutationMethodsArr,\n];\nconst validRequestMethods = new Set(validRequestMethodsArr);\n\nconst redirectStatusCodes = new Set([301, 302, 303, 307, 308]);\nconst redirectPreserveMethodStatusCodes = new Set([307, 308]);\n\nexport const IDLE_NAVIGATION: NavigationStates[\"Idle\"] = {\n state: \"idle\",\n location: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n};\n\nexport const IDLE_FETCHER: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: undefined,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n};\n\nexport const IDLE_BLOCKER: BlockerUnblocked = {\n state: \"unblocked\",\n proceed: undefined,\n reset: undefined,\n location: undefined,\n};\n\nconst ABSOLUTE_URL_REGEX = /^(?:[a-z][a-z0-9+.-]*:|\\/\\/)/i;\n\nconst isBrowser =\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\";\nconst isServer = !isBrowser;\n\nconst defaultDetectErrorBoundary = (route: AgnosticRouteObject) =>\n Boolean(route.hasErrorBoundary);\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createRouter\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Create a router and listen to history POP navigations\n */\nexport function createRouter(init: RouterInit): Router {\n invariant(\n init.routes.length > 0,\n \"You must provide a non-empty routes array to createRouter\"\n );\n\n let detectErrorBoundary =\n init.detectErrorBoundary || defaultDetectErrorBoundary;\n\n // Routes keyed by ID\n let manifest: RouteManifest = {};\n // Routes in tree format for matching\n let dataRoutes = convertRoutesToDataRoutes(\n init.routes,\n detectErrorBoundary,\n undefined,\n manifest\n );\n let inFlightDataRoutes: AgnosticDataRouteObject[] | undefined;\n // Config driven behavior flags\n let future: FutureConfig = {\n v7_normalizeFormMethod: false,\n ...init.future,\n };\n // Cleanup function for history\n let unlistenHistory: (() => void) | null = null;\n // Externally-provided functions to call on all state changes\n let subscribers = new Set();\n // Externally-provided object to hold scroll restoration locations during routing\n let savedScrollPositions: Record | null = null;\n // Externally-provided function to get scroll restoration keys\n let getScrollRestorationKey: GetScrollRestorationKeyFunction | null = null;\n // Externally-provided function to get current scroll position\n let getScrollPosition: GetScrollPositionFunction | null = null;\n // One-time flag to control the initial hydration scroll restoration. Because\n // we don't get the saved positions from until _after_\n // the initial render, we need to manually trigger a separate updateState to\n // send along the restoreScrollPosition\n // Set to true if we have `hydrationData` since we assume we were SSR'd and that\n // SSR did the initial scroll restoration.\n let initialScrollRestored = init.hydrationData != null;\n\n let initialMatches = matchRoutes(\n dataRoutes,\n init.history.location,\n init.basename\n );\n let initialErrors: RouteData | null = null;\n\n if (initialMatches == null) {\n // If we do not match a user-provided-route, fall back to the root\n // to allow the error boundary to take over\n let error = getInternalRouterError(404, {\n pathname: init.history.location.pathname,\n });\n let { matches, route } = getShortCircuitMatches(dataRoutes);\n initialMatches = matches;\n initialErrors = { [route.id]: error };\n }\n\n let initialized =\n // All initialMatches need to be loaded before we're ready. If we have lazy\n // functions around still then we'll need to run them in initialize()\n !initialMatches.some((m) => m.route.lazy) &&\n // And we have to either have no loaders or have been provided hydrationData\n (!initialMatches.some((m) => m.route.loader) || init.hydrationData != null);\n\n let router: Router;\n let state: RouterState = {\n historyAction: init.history.action,\n location: init.history.location,\n matches: initialMatches,\n initialized,\n navigation: IDLE_NAVIGATION,\n // Don't restore on initial updateState() if we were SSR'd\n restoreScrollPosition: init.hydrationData != null ? false : null,\n preventScrollReset: false,\n revalidation: \"idle\",\n loaderData: (init.hydrationData && init.hydrationData.loaderData) || {},\n actionData: (init.hydrationData && init.hydrationData.actionData) || null,\n errors: (init.hydrationData && init.hydrationData.errors) || initialErrors,\n fetchers: new Map(),\n blockers: new Map(),\n };\n\n // -- Stateful internal variables to manage navigations --\n // Current navigation in progress (to be committed in completeNavigation)\n let pendingAction: HistoryAction = HistoryAction.Pop;\n\n // Should the current navigation prevent the scroll reset if scroll cannot\n // be restored?\n let pendingPreventScrollReset = false;\n\n // AbortController for the active navigation\n let pendingNavigationController: AbortController | null;\n\n // We use this to avoid touching history in completeNavigation if a\n // revalidation is entirely uninterrupted\n let isUninterruptedRevalidation = false;\n\n // Use this internal flag to force revalidation of all loaders:\n // - submissions (completed or interrupted)\n // - useRevalidate()\n // - X-Remix-Revalidate (from redirect)\n let isRevalidationRequired = false;\n\n // Use this internal array to capture routes that require revalidation due\n // to a cancelled deferred on action submission\n let cancelledDeferredRoutes: string[] = [];\n\n // Use this internal array to capture fetcher loads that were cancelled by an\n // action navigation and require revalidation\n let cancelledFetcherLoads: string[] = [];\n\n // AbortControllers for any in-flight fetchers\n let fetchControllers = new Map();\n\n // Track loads based on the order in which they started\n let incrementingLoadId = 0;\n\n // Track the outstanding pending navigation data load to be compared against\n // the globally incrementing load when a fetcher load lands after a completed\n // navigation\n let pendingNavigationLoadId = -1;\n\n // Fetchers that triggered data reloads as a result of their actions\n let fetchReloadIds = new Map();\n\n // Fetchers that triggered redirect navigations from their actions\n let fetchRedirectIds = new Set();\n\n // Most recent href/match for fetcher.load calls for fetchers\n let fetchLoadMatches = new Map();\n\n // Store DeferredData instances for active route matches. When a\n // route loader returns defer() we stick one in here. Then, when a nested\n // promise resolves we update loaderData. If a new navigation starts we\n // cancel active deferreds for eliminated routes.\n let activeDeferreds = new Map();\n\n // Store blocker functions in a separate Map outside of router state since\n // we don't need to update UI state if they change\n let blockerFunctions = new Map();\n\n // Flag to ignore the next history update, so we can revert the URL change on\n // a POP navigation that was blocked by the user without touching router state\n let ignoreNextHistoryUpdate = false;\n\n // Initialize the router, all side effects should be kicked off from here.\n // Implemented as a Fluent API for ease of:\n // let router = createRouter(init).initialize();\n function initialize() {\n // If history informs us of a POP navigation, start the navigation but do not update\n // state. We'll update our own state once the navigation completes\n unlistenHistory = init.history.listen(\n ({ action: historyAction, location, delta }) => {\n // Ignore this event if it was just us resetting the URL from a\n // blocked POP navigation\n if (ignoreNextHistoryUpdate) {\n ignoreNextHistoryUpdate = false;\n return;\n }\n\n warning(\n blockerFunctions.size === 0 || delta != null,\n \"You are trying to use a blocker on a POP navigation to a location \" +\n \"that was not created by @remix-run/router. This will fail silently in \" +\n \"production. This can happen if you are navigating outside the router \" +\n \"via `window.history.pushState`/`window.location.hash` instead of using \" +\n \"router navigation APIs. This can also happen if you are using \" +\n \"createHashRouter and the user manually changes the URL.\"\n );\n\n let blockerKey = shouldBlockNavigation({\n currentLocation: state.location,\n nextLocation: location,\n historyAction,\n });\n\n if (blockerKey && delta != null) {\n // Restore the URL to match the current UI, but don't update router state\n ignoreNextHistoryUpdate = true;\n init.history.go(delta * -1);\n\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location,\n });\n // Re-do the same POP navigation we just blocked\n init.history.go(delta);\n },\n reset() {\n deleteBlocker(blockerKey!);\n updateState({ blockers: new Map(router.state.blockers) });\n },\n });\n return;\n }\n\n return startNavigation(historyAction, location);\n }\n );\n\n // Kick off initial data load if needed. Use Pop to avoid modifying history\n // Note we don't do any handling of lazy here. For SPA's it'll get handled\n // in the normal navigation flow. For SSR it's expected that lazy modules are\n // resolved prior to router creation since we can't go into a fallbackElement\n // UI for SSR'd apps\n if (!state.initialized) {\n startNavigation(HistoryAction.Pop, state.location);\n }\n\n return router;\n }\n\n // Clean up a router and it's side effects\n function dispose() {\n if (unlistenHistory) {\n unlistenHistory();\n }\n subscribers.clear();\n pendingNavigationController && pendingNavigationController.abort();\n state.fetchers.forEach((_, key) => deleteFetcher(key));\n state.blockers.forEach((_, key) => deleteBlocker(key));\n }\n\n // Subscribe to state updates for the router\n function subscribe(fn: RouterSubscriber) {\n subscribers.add(fn);\n return () => subscribers.delete(fn);\n }\n\n // Update our state and notify the calling context of the change\n function updateState(newState: Partial): void {\n state = {\n ...state,\n ...newState,\n };\n subscribers.forEach((subscriber) => subscriber(state));\n }\n\n // Complete a navigation returning the state.navigation back to the IDLE_NAVIGATION\n // and setting state.[historyAction/location/matches] to the new route.\n // - Location is a required param\n // - Navigation will always be set to IDLE_NAVIGATION\n // - Can pass any other state in newState\n function completeNavigation(\n location: Location,\n newState: Partial>\n ): void {\n // Deduce if we're in a loading/actionReload state:\n // - We have committed actionData in the store\n // - The current navigation was a mutation submission\n // - We're past the submitting state and into the loading state\n // - The location being loaded is not the result of a redirect\n let isActionReload =\n state.actionData != null &&\n state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n state.navigation.state === \"loading\" &&\n location.state?._isRedirect !== true;\n\n let actionData: RouteData | null;\n if (newState.actionData) {\n if (Object.keys(newState.actionData).length > 0) {\n actionData = newState.actionData;\n } else {\n // Empty actionData -> clear prior actionData due to an action error\n actionData = null;\n }\n } else if (isActionReload) {\n // Keep the current data if we're wrapping up the action reload\n actionData = state.actionData;\n } else {\n // Clear actionData on any other completed navigations\n actionData = null;\n }\n\n // Always preserve any existing loaderData from re-used routes\n let loaderData = newState.loaderData\n ? mergeLoaderData(\n state.loaderData,\n newState.loaderData,\n newState.matches || [],\n newState.errors\n )\n : state.loaderData;\n\n // On a successful navigation we can assume we got through all blockers\n // so we can start fresh\n for (let [key] of blockerFunctions) {\n deleteBlocker(key);\n }\n\n // Always respect the user flag. Otherwise don't reset on mutation\n // submission navigations unless they redirect\n let preventScrollReset =\n pendingPreventScrollReset === true ||\n (state.navigation.formMethod != null &&\n isMutationMethod(state.navigation.formMethod) &&\n location.state?._isRedirect !== true);\n\n if (inFlightDataRoutes) {\n dataRoutes = inFlightDataRoutes;\n inFlightDataRoutes = undefined;\n }\n\n updateState({\n ...newState, // matches, errors, fetchers go through as-is\n actionData,\n loaderData,\n historyAction: pendingAction,\n location,\n initialized: true,\n navigation: IDLE_NAVIGATION,\n revalidation: \"idle\",\n restoreScrollPosition: getSavedScrollPosition(\n location,\n newState.matches || state.matches\n ),\n preventScrollReset,\n blockers: new Map(state.blockers),\n });\n\n if (isUninterruptedRevalidation) {\n // If this was an uninterrupted revalidation then do not touch history\n } else if (pendingAction === HistoryAction.Pop) {\n // Do nothing for POP - URL has already been updated\n } else if (pendingAction === HistoryAction.Push) {\n init.history.push(location, location.state);\n } else if (pendingAction === HistoryAction.Replace) {\n init.history.replace(location, location.state);\n }\n\n // Reset stateful navigation vars\n pendingAction = HistoryAction.Pop;\n pendingPreventScrollReset = false;\n isUninterruptedRevalidation = false;\n isRevalidationRequired = false;\n cancelledDeferredRoutes = [];\n cancelledFetcherLoads = [];\n }\n\n // Trigger a navigation event, which can either be a numerical POP or a PUSH\n // replace with an optional submission\n async function navigate(\n to: number | To,\n opts?: RouterNavigateOptions\n ): Promise {\n if (typeof to === \"number\") {\n init.history.go(to);\n return;\n }\n\n let { path, submission, error } = normalizeNavigateOptions(\n to,\n future,\n opts\n );\n\n let currentLocation = state.location;\n let nextLocation = createLocation(state.location, path, opts && opts.state);\n\n // When using navigate as a PUSH/REPLACE we aren't reading an already-encoded\n // URL from window.location, so we need to encode it here so the behavior\n // remains the same as POP and non-data-router usages. new URL() does all\n // the same encoding we'd get from a history.pushState/window.location read\n // without having to touch history\n nextLocation = {\n ...nextLocation,\n ...init.history.encodeLocation(nextLocation),\n };\n\n let userReplace = opts && opts.replace != null ? opts.replace : undefined;\n\n let historyAction = HistoryAction.Push;\n\n if (userReplace === true) {\n historyAction = HistoryAction.Replace;\n } else if (userReplace === false) {\n // no-op\n } else if (\n submission != null &&\n isMutationMethod(submission.formMethod) &&\n submission.formAction === state.location.pathname + state.location.search\n ) {\n // By default on submissions to the current location we REPLACE so that\n // users don't have to double-click the back button to get to the prior\n // location. If the user redirects to a different location from the\n // action/loader this will be ignored and the redirect will be a PUSH\n historyAction = HistoryAction.Replace;\n }\n\n let preventScrollReset =\n opts && \"preventScrollReset\" in opts\n ? opts.preventScrollReset === true\n : undefined;\n\n let blockerKey = shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n });\n if (blockerKey) {\n // Put the blocker into a blocked state\n updateBlocker(blockerKey, {\n state: \"blocked\",\n location: nextLocation,\n proceed() {\n updateBlocker(blockerKey!, {\n state: \"proceeding\",\n proceed: undefined,\n reset: undefined,\n location: nextLocation,\n });\n // Send the same navigation through\n navigate(to, opts);\n },\n reset() {\n deleteBlocker(blockerKey!);\n updateState({ blockers: new Map(state.blockers) });\n },\n });\n return;\n }\n\n return await startNavigation(historyAction, nextLocation, {\n submission,\n // Send through the formData serialization error if we have one so we can\n // render at the right error boundary after we match routes\n pendingError: error,\n preventScrollReset,\n replace: opts && opts.replace,\n });\n }\n\n // Revalidate all current loaders. If a navigation is in progress or if this\n // is interrupted by a navigation, allow this to \"succeed\" by calling all\n // loaders during the next loader round\n function revalidate() {\n interruptActiveLoads();\n updateState({ revalidation: \"loading\" });\n\n // If we're currently submitting an action, we don't need to start a new\n // navigation, we'll just let the follow up loader execution call all loaders\n if (state.navigation.state === \"submitting\") {\n return;\n }\n\n // If we're currently in an idle state, start a new navigation for the current\n // action/location and mark it as uninterrupted, which will skip the history\n // update in completeNavigation\n if (state.navigation.state === \"idle\") {\n startNavigation(state.historyAction, state.location, {\n startUninterruptedRevalidation: true,\n });\n return;\n }\n\n // Otherwise, if we're currently in a loading state, just start a new\n // navigation to the navigation.location but do not trigger an uninterrupted\n // revalidation so that history correctly updates once the navigation completes\n startNavigation(\n pendingAction || state.historyAction,\n state.navigation.location,\n { overrideNavigation: state.navigation }\n );\n }\n\n // Start a navigation to the given action/location. Can optionally provide a\n // overrideNavigation which will override the normalLoad in the case of a redirect\n // navigation\n async function startNavigation(\n historyAction: HistoryAction,\n location: Location,\n opts?: {\n submission?: Submission;\n fetcherSubmission?: Submission;\n overrideNavigation?: Navigation;\n pendingError?: ErrorResponse;\n startUninterruptedRevalidation?: boolean;\n preventScrollReset?: boolean;\n replace?: boolean;\n }\n ): Promise {\n // Abort any in-progress navigations and start a new one. Unset any ongoing\n // uninterrupted revalidations unless told otherwise, since we want this\n // new navigation to update history normally\n pendingNavigationController && pendingNavigationController.abort();\n pendingNavigationController = null;\n pendingAction = historyAction;\n isUninterruptedRevalidation =\n (opts && opts.startUninterruptedRevalidation) === true;\n\n // Save the current scroll position every time we start a new navigation,\n // and track whether we should reset scroll on completion\n saveScrollPosition(state.location, state.matches);\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let loadingNavigation = opts && opts.overrideNavigation;\n let matches = matchRoutes(routesToUse, location, init.basename);\n\n // Short circuit with a 404 on the root error boundary if we match nothing\n if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(routesToUse);\n // Cancel all pending deferred on 404s since we don't keep any routes\n cancelActiveDeferreds();\n completeNavigation(location, {\n matches: notFoundMatches,\n loaderData: {},\n errors: {\n [route.id]: error,\n },\n });\n return;\n }\n\n // Short circuit if it's only a hash change and not a mutation submission\n // For example, on /page#hash and submit a which will\n // default to a navigation to /page\n if (\n isHashChangeOnly(state.location, location) &&\n !(opts && opts.submission && isMutationMethod(opts.submission.formMethod))\n ) {\n completeNavigation(location, { matches });\n return;\n }\n\n // Create a controller/Request for this navigation\n pendingNavigationController = new AbortController();\n let request = createClientSideRequest(\n init.history,\n location,\n pendingNavigationController.signal,\n opts && opts.submission\n );\n let pendingActionData: RouteData | undefined;\n let pendingError: RouteData | undefined;\n\n if (opts && opts.pendingError) {\n // If we have a pendingError, it means the user attempted a GET submission\n // with binary FormData so assign here and skip to handleLoaders. That\n // way we handle calling loaders above the boundary etc. It's not really\n // different from an actionError in that sense.\n pendingError = {\n [findNearestBoundary(matches).route.id]: opts.pendingError,\n };\n } else if (\n opts &&\n opts.submission &&\n isMutationMethod(opts.submission.formMethod)\n ) {\n // Call action if we received an action submission\n let actionOutput = await handleAction(\n request,\n location,\n opts.submission,\n matches,\n { replace: opts.replace }\n );\n\n if (actionOutput.shortCircuited) {\n return;\n }\n\n pendingActionData = actionOutput.pendingActionData;\n pendingError = actionOutput.pendingActionError;\n\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n ...opts.submission,\n };\n loadingNavigation = navigation;\n\n // Create a GET request for the loaders\n request = new Request(request.url, { signal: request.signal });\n }\n\n // Call loaders\n let { shortCircuited, loaderData, errors } = await handleLoaders(\n request,\n location,\n matches,\n loadingNavigation,\n opts && opts.submission,\n opts && opts.fetcherSubmission,\n opts && opts.replace,\n pendingActionData,\n pendingError\n );\n\n if (shortCircuited) {\n return;\n }\n\n // Clean up now that the action/loaders have completed. Don't clean up if\n // we short circuited because pendingNavigationController will have already\n // been assigned to a new controller for the next navigation\n pendingNavigationController = null;\n\n completeNavigation(location, {\n matches,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n loaderData,\n errors,\n });\n }\n\n // Call the action matched by the leaf route for this navigation and handle\n // redirects/errors\n async function handleAction(\n request: Request,\n location: Location,\n submission: Submission,\n matches: AgnosticDataRouteMatch[],\n opts?: { replace?: boolean }\n ): Promise {\n interruptActiveLoads();\n\n // Put us in a submitting state\n let navigation: NavigationStates[\"Submitting\"] = {\n state: \"submitting\",\n location,\n ...submission,\n };\n updateState({ navigation });\n\n // Call our action and get the result\n let result: DataResult;\n let actionMatch = getTargetMatch(matches, location);\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n result = {\n type: ResultType.error,\n error: getInternalRouterError(405, {\n method: request.method,\n pathname: location.pathname,\n routeId: actionMatch.route.id,\n }),\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n }\n\n if (isRedirectResult(result)) {\n let replace: boolean;\n if (opts && opts.replace != null) {\n replace = opts.replace;\n } else {\n // If the user didn't explicity indicate replace behavior, replace if\n // we redirected to the exact same location we're currently at to avoid\n // double back-buttons\n replace =\n result.location === state.location.pathname + state.location.search;\n }\n await startRedirectNavigation(state, result, { submission, replace });\n return { shortCircuited: true };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n\n // By default, all submissions are REPLACE navigations, but if the\n // action threw an error that'll be rendered in an errorElement, we fall\n // back to PUSH so that the user can use the back button to get back to\n // the pre-submission form location to try again\n if ((opts && opts.replace) !== true) {\n pendingAction = HistoryAction.Push;\n }\n\n return {\n // Send back an empty object we can use to clear out any prior actionData\n pendingActionData: {},\n pendingActionError: { [boundaryMatch.route.id]: result.error },\n };\n }\n\n if (isDeferredResult(result)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n return {\n pendingActionData: { [actionMatch.route.id]: result.data },\n };\n }\n\n // Call all applicable loaders for the given matches, handling redirects,\n // errors, etc.\n async function handleLoaders(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n overrideNavigation?: Navigation,\n submission?: Submission,\n fetcherSubmission?: Submission,\n replace?: boolean,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n ): Promise {\n // Figure out the right navigation we want to use for data loading\n let loadingNavigation = overrideNavigation;\n if (!loadingNavigation) {\n let navigation: NavigationStates[\"Loading\"] = {\n state: \"loading\",\n location,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n ...submission,\n };\n loadingNavigation = navigation;\n }\n\n // If this was a redirect from an action we don't have a \"submission\" but\n // we have it on the loading navigation so use that if available\n let activeSubmission =\n submission || fetcherSubmission\n ? submission || fetcherSubmission\n : loadingNavigation.formMethod &&\n loadingNavigation.formAction &&\n loadingNavigation.formData &&\n loadingNavigation.formEncType\n ? {\n formMethod: loadingNavigation.formMethod,\n formAction: loadingNavigation.formAction,\n formData: loadingNavigation.formData,\n formEncType: loadingNavigation.formEncType,\n }\n : undefined;\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n activeSubmission,\n location,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n routesToUse,\n init.basename,\n pendingActionData,\n pendingError\n );\n\n // Cancel pending deferreds for no-longer-matched routes or routes we're\n // about to reload. Note that if this is an action reload we would have\n // already cancelled all pending deferreds so this would be a no-op\n cancelActiveDeferreds(\n (routeId) =>\n !(matches && matches.some((m) => m.route.id === routeId)) ||\n (matchesToLoad && matchesToLoad.some((m) => m.route.id === routeId))\n );\n\n // Short circuit if we have no loaders to run\n if (matchesToLoad.length === 0 && revalidatingFetchers.length === 0) {\n completeNavigation(location, {\n matches,\n loaderData: {},\n // Commit pending error if we're short circuiting\n errors: pendingError || null,\n ...(pendingActionData ? { actionData: pendingActionData } : {}),\n });\n return { shortCircuited: true };\n }\n\n // If this is an uninterrupted revalidation, we remain in our current idle\n // state. If not, we need to switch to our loading state and load data,\n // preserving any new action data or existing action data (in the case of\n // a revalidation interrupting an actionReload)\n if (!isUninterruptedRevalidation) {\n revalidatingFetchers.forEach((rf) => {\n let fetcher = state.fetchers.get(rf.key);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: fetcher && fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(rf.key, revalidatingFetcher);\n });\n let actionData = pendingActionData || state.actionData;\n updateState({\n navigation: loadingNavigation,\n ...(actionData\n ? Object.keys(actionData).length === 0\n ? { actionData: null }\n : { actionData }\n : {}),\n ...(revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n });\n }\n\n pendingNavigationLoadId = ++incrementingLoadId;\n revalidatingFetchers.forEach((rf) =>\n fetchControllers.set(rf.key, pendingNavigationController!)\n );\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n request\n );\n\n if (request.signal.aborted) {\n return { shortCircuited: true };\n }\n\n // Clean up _after_ loaders have completed. Don't clean up if we short\n // circuited because fetchControllers would have been aborted and\n // reassigned to new controllers for the next navigation\n revalidatingFetchers.forEach((rf) => fetchControllers.delete(rf.key));\n\n // If any loaders returned a redirect Response, start a new REPLACE navigation\n let redirect = findRedirect(results);\n if (redirect) {\n await startRedirectNavigation(state, redirect, { replace });\n return { shortCircuited: true };\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n matches,\n matchesToLoad,\n loaderResults,\n pendingError,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n // Wire up subscribers to update loaderData as promises settle\n activeDeferreds.forEach((deferredData, routeId) => {\n deferredData.subscribe((aborted) => {\n // Note: No need to updateState here since the TrackedPromise on\n // loaderData is stable across resolve/reject\n // Remove this instance if we were aborted or if promises have settled\n if (aborted || deferredData.done) {\n activeDeferreds.delete(routeId);\n }\n });\n });\n\n markFetchRedirectsDone();\n let didAbortFetchLoads = abortStaleFetchLoads(pendingNavigationLoadId);\n\n return {\n loaderData,\n errors,\n ...(didAbortFetchLoads || revalidatingFetchers.length > 0\n ? { fetchers: new Map(state.fetchers) }\n : {}),\n };\n }\n\n function getFetcher(key: string): Fetcher {\n return state.fetchers.get(key) || IDLE_FETCHER;\n }\n\n // Trigger a fetcher load/submit for the given fetcher key\n function fetch(\n key: string,\n routeId: string,\n href: string,\n opts?: RouterFetchOptions\n ) {\n if (isServer) {\n throw new Error(\n \"router.fetch() was called during the server render, but it shouldn't be. \" +\n \"You are likely calling a useFetcher() method in the body of your component. \" +\n \"Try moving it to a useEffect or a callback.\"\n );\n }\n\n if (fetchControllers.has(key)) abortFetcher(key);\n\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches = matchRoutes(routesToUse, href, init.basename);\n if (!matches) {\n setFetcherError(\n key,\n routeId,\n getInternalRouterError(404, { pathname: href })\n );\n return;\n }\n\n let { path, submission } = normalizeNavigateOptions(\n href,\n future,\n opts,\n true\n );\n let match = getTargetMatch(matches, path);\n\n pendingPreventScrollReset = (opts && opts.preventScrollReset) === true;\n\n if (submission && isMutationMethod(submission.formMethod)) {\n handleFetcherAction(key, routeId, path, match, matches, submission);\n return;\n }\n\n // Store off the match so we can call it's shouldRevalidate on subsequent\n // revalidations\n fetchLoadMatches.set(key, { routeId, path });\n handleFetcherLoader(key, routeId, path, match, matches, submission);\n }\n\n // Call the action for the matched fetcher.submit(), and then handle redirects,\n // errors, and revalidation\n async function handleFetcherAction(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n requestMatches: AgnosticDataRouteMatch[],\n submission: Submission\n ) {\n interruptActiveLoads();\n fetchLoadMatches.delete(key);\n\n if (!match.route.action && !match.route.lazy) {\n let error = getInternalRouterError(405, {\n method: submission.formMethod,\n pathname: path,\n routeId: routeId,\n });\n setFetcherError(key, routeId, error);\n return;\n }\n\n // Put this fetcher into it's submitting state\n let existingFetcher = state.fetchers.get(key);\n let fetcher: FetcherStates[\"Submitting\"] = {\n state: \"submitting\",\n ...submission,\n data: existingFetcher && existingFetcher.data,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, fetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the action for the fetcher\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal,\n submission\n );\n fetchControllers.set(key, abortController);\n\n let actionResult = await callLoaderOrAction(\n \"action\",\n fetchRequest,\n match,\n requestMatches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n\n if (fetchRequest.signal.aborted) {\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-submit which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n return;\n }\n\n if (isRedirectResult(actionResult)) {\n fetchControllers.delete(key);\n fetchRedirectIds.add(key);\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n ...submission,\n data: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n return startRedirectNavigation(state, actionResult, {\n submission,\n isFetchActionRedirect: true,\n });\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(actionResult)) {\n setFetcherError(key, routeId, actionResult.error);\n return;\n }\n\n if (isDeferredResult(actionResult)) {\n throw getInternalRouterError(400, { type: \"defer-action\" });\n }\n\n // Start the data load for current matches, or the next location if we're\n // in the middle of a navigation\n let nextLocation = state.navigation.location || state.location;\n let revalidationRequest = createClientSideRequest(\n init.history,\n\n nextLocation,\n abortController.signal\n );\n let routesToUse = inFlightDataRoutes || dataRoutes;\n let matches =\n state.navigation.state !== \"idle\"\n ? matchRoutes(routesToUse, state.navigation.location, init.basename)\n : state.matches;\n\n invariant(matches, \"Didn't find any matches after fetcher action\");\n\n let loadId = ++incrementingLoadId;\n fetchReloadIds.set(key, loadId);\n\n let loadFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: actionResult.data,\n ...submission,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadFetcher);\n\n let [matchesToLoad, revalidatingFetchers] = getMatchesToLoad(\n init.history,\n state,\n matches,\n submission,\n nextLocation,\n isRevalidationRequired,\n cancelledDeferredRoutes,\n cancelledFetcherLoads,\n fetchLoadMatches,\n routesToUse,\n init.basename,\n { [match.route.id]: actionResult.data },\n undefined // No need to send through errors since we short circuit above\n );\n\n // Put all revalidating fetchers into the loading state, except for the\n // current fetcher which we want to keep in it's current loading state which\n // contains it's action submission info + action data\n revalidatingFetchers\n .filter((rf) => rf.key !== key)\n .forEach((rf) => {\n let staleKey = rf.key;\n let existingFetcher = state.fetchers.get(staleKey);\n let revalidatingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n data: existingFetcher && existingFetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(staleKey, revalidatingFetcher);\n fetchControllers.set(staleKey, abortController);\n });\n\n updateState({ fetchers: new Map(state.fetchers) });\n\n let { results, loaderResults, fetcherResults } =\n await callLoadersAndMaybeResolveData(\n state.matches,\n matches,\n matchesToLoad,\n revalidatingFetchers,\n revalidationRequest\n );\n\n if (abortController.signal.aborted) {\n return;\n }\n\n fetchReloadIds.delete(key);\n fetchControllers.delete(key);\n revalidatingFetchers.forEach((r) => fetchControllers.delete(r.key));\n\n let redirect = findRedirect(results);\n if (redirect) {\n return startRedirectNavigation(state, redirect);\n }\n\n // Process and commit output from loaders\n let { loaderData, errors } = processLoaderData(\n state,\n state.matches,\n matchesToLoad,\n loaderResults,\n undefined,\n revalidatingFetchers,\n fetcherResults,\n activeDeferreds\n );\n\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: actionResult.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n\n let didAbortFetchLoads = abortStaleFetchLoads(loadId);\n\n // If we are currently in a navigation loading state and this fetcher is\n // more recent than the navigation, we want the newer data so abort the\n // navigation and complete it with the fetcher data\n if (\n state.navigation.state === \"loading\" &&\n loadId > pendingNavigationLoadId\n ) {\n invariant(pendingAction, \"Expected pending action\");\n pendingNavigationController && pendingNavigationController.abort();\n\n completeNavigation(state.navigation.location, {\n matches,\n loaderData,\n errors,\n fetchers: new Map(state.fetchers),\n });\n } else {\n // otherwise just update with the fetcher data, preserving any existing\n // loaderData for loaders that did not need to reload. We have to\n // manually merge here since we aren't going through completeNavigation\n updateState({\n errors,\n loaderData: mergeLoaderData(\n state.loaderData,\n loaderData,\n matches,\n errors\n ),\n ...(didAbortFetchLoads ? { fetchers: new Map(state.fetchers) } : {}),\n });\n isRevalidationRequired = false;\n }\n }\n\n // Call the matched loader for fetcher.load(), handling redirects, errors, etc.\n async function handleFetcherLoader(\n key: string,\n routeId: string,\n path: string,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n submission?: Submission\n ) {\n let existingFetcher = state.fetchers.get(key);\n // Put this fetcher into it's loading state\n let loadingFetcher: FetcherStates[\"Loading\"] = {\n state: \"loading\",\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n ...submission,\n data: existingFetcher && existingFetcher.data,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, loadingFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n\n // Call the loader for this fetcher route match\n let abortController = new AbortController();\n let fetchRequest = createClientSideRequest(\n init.history,\n path,\n abortController.signal\n );\n fetchControllers.set(key, abortController);\n\n let result: DataResult = await callLoaderOrAction(\n \"loader\",\n fetchRequest,\n match,\n matches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n\n // Deferred isn't supported for fetcher loads, await everything and treat it\n // as a normal load. resolveDeferredData will return undefined if this\n // fetcher gets aborted, so we just leave result untouched and short circuit\n // below if that happens\n if (isDeferredResult(result)) {\n result =\n (await resolveDeferredData(result, fetchRequest.signal, true)) ||\n result;\n }\n\n // We can delete this so long as we weren't aborted by ou our own fetcher\n // re-load which would have put _new_ controller is in fetchControllers\n if (fetchControllers.get(key) === abortController) {\n fetchControllers.delete(key);\n }\n\n if (fetchRequest.signal.aborted) {\n return;\n }\n\n // If the loader threw a redirect Response, start a new REPLACE navigation\n if (isRedirectResult(result)) {\n await startRedirectNavigation(state, result);\n return;\n }\n\n // Process any non-redirect errors thrown\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n state.fetchers.delete(key);\n // TODO: In remix, this would reset to IDLE_NAVIGATION if it was a catch -\n // do we need to behave any differently with our non-redirect errors?\n // What if it was a non-redirect Response?\n updateState({\n fetchers: new Map(state.fetchers),\n errors: {\n [boundaryMatch.route.id]: result.error,\n },\n });\n return;\n }\n\n invariant(!isDeferredResult(result), \"Unhandled fetcher deferred data\");\n\n // Put the fetcher back into an idle state\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n updateState({ fetchers: new Map(state.fetchers) });\n }\n\n /**\n * Utility function to handle redirects returned from an action or loader.\n * Normally, a redirect \"replaces\" the navigation that triggered it. So, for\n * example:\n *\n * - user is on /a\n * - user clicks a link to /b\n * - loader for /b redirects to /c\n *\n * In a non-JS app the browser would track the in-flight navigation to /b and\n * then replace it with /c when it encountered the redirect response. In\n * the end it would only ever update the URL bar with /c.\n *\n * In client-side routing using pushState/replaceState, we aim to emulate\n * this behavior and we also do not update history until the end of the\n * navigation (including processed redirects). This means that we never\n * actually touch history until we've processed redirects, so we just use\n * the history action from the original navigation (PUSH or REPLACE).\n */\n async function startRedirectNavigation(\n state: RouterState,\n redirect: RedirectResult,\n {\n submission,\n replace,\n isFetchActionRedirect,\n }: {\n submission?: Submission;\n replace?: boolean;\n isFetchActionRedirect?: boolean;\n } = {}\n ) {\n if (redirect.revalidate) {\n isRevalidationRequired = true;\n }\n\n let redirectLocation = createLocation(\n state.location,\n redirect.location,\n // TODO: This can be removed once we get rid of useTransition in Remix v2\n {\n _isRedirect: true,\n ...(isFetchActionRedirect ? { _isFetchActionRedirect: true } : {}),\n }\n );\n invariant(\n redirectLocation,\n \"Expected a location on the redirect navigation\"\n );\n // Check if this an absolute external redirect that goes to a new origin\n if (\n ABSOLUTE_URL_REGEX.test(redirect.location) &&\n isBrowser &&\n typeof window?.location !== \"undefined\"\n ) {\n let url = init.history.createURL(redirect.location);\n let isDifferentBasename =\n stripBasename(url.pathname, init.basename || \"/\") == null;\n\n if (window.location.origin !== url.origin || isDifferentBasename) {\n if (replace) {\n window.location.replace(redirect.location);\n } else {\n window.location.assign(redirect.location);\n }\n return;\n }\n }\n\n // There's no need to abort on redirects, since we don't detect the\n // redirect until the action/loaders have settled\n pendingNavigationController = null;\n\n let redirectHistoryAction =\n replace === true ? HistoryAction.Replace : HistoryAction.Push;\n\n // Use the incoming submission if provided, fallback on the active one in\n // state.navigation\n let { formMethod, formAction, formEncType, formData } = state.navigation;\n if (!submission && formMethod && formAction && formData && formEncType) {\n submission = {\n formMethod,\n formAction,\n formEncType,\n formData,\n };\n }\n\n // If this was a 307/308 submission we want to preserve the HTTP method and\n // re-submit the GET/POST/PUT/PATCH/DELETE as a submission navigation to the\n // redirected location\n if (\n redirectPreserveMethodStatusCodes.has(redirect.status) &&\n submission &&\n isMutationMethod(submission.formMethod)\n ) {\n await startNavigation(redirectHistoryAction, redirectLocation, {\n submission: {\n ...submission,\n formAction: redirect.location,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else if (isFetchActionRedirect) {\n // For a fetch action redirect, we kick off a new loading navigation\n // without the fetcher submission, but we send it along for shouldRevalidate\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation: {\n state: \"loading\",\n location: redirectLocation,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n },\n fetcherSubmission: submission,\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n } else {\n // Otherwise, we kick off a new loading navigation, preserving the\n // submission info for the duration of this navigation\n await startNavigation(redirectHistoryAction, redirectLocation, {\n overrideNavigation: {\n state: \"loading\",\n location: redirectLocation,\n formMethod: submission ? submission.formMethod : undefined,\n formAction: submission ? submission.formAction : undefined,\n formEncType: submission ? submission.formEncType : undefined,\n formData: submission ? submission.formData : undefined,\n },\n // Preserve this flag across redirects\n preventScrollReset: pendingPreventScrollReset,\n });\n }\n }\n\n async function callLoadersAndMaybeResolveData(\n currentMatches: AgnosticDataRouteMatch[],\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n fetchersToLoad: RevalidatingFetcher[],\n request: Request\n ) {\n // Call all navigation loaders and revalidating fetcher loaders in parallel,\n // then slice off the results into separate arrays so we can handle them\n // accordingly\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n detectErrorBoundary,\n router.basename\n )\n ),\n ...fetchersToLoad.map((f) => {\n if (f.matches && f.match) {\n return callLoaderOrAction(\n \"loader\",\n createClientSideRequest(init.history, f.path, request.signal),\n f.match,\n f.matches,\n manifest,\n detectErrorBoundary,\n router.basename\n );\n } else {\n let error: ErrorResult = {\n type: ResultType.error,\n error: getInternalRouterError(404, { pathname: f.path }),\n };\n return error;\n }\n }),\n ]);\n let loaderResults = results.slice(0, matchesToLoad.length);\n let fetcherResults = results.slice(matchesToLoad.length);\n\n await Promise.all([\n resolveDeferredResults(\n currentMatches,\n matchesToLoad,\n loaderResults,\n request.signal,\n false,\n state.loaderData\n ),\n resolveDeferredResults(\n currentMatches,\n fetchersToLoad.map((f) => f.match),\n fetcherResults,\n request.signal,\n true\n ),\n ]);\n\n return { results, loaderResults, fetcherResults };\n }\n\n function interruptActiveLoads() {\n // Every interruption triggers a revalidation\n isRevalidationRequired = true;\n\n // Cancel pending route-level deferreds and mark cancelled routes for\n // revalidation\n cancelledDeferredRoutes.push(...cancelActiveDeferreds());\n\n // Abort in-flight fetcher loads\n fetchLoadMatches.forEach((_, key) => {\n if (fetchControllers.has(key)) {\n cancelledFetcherLoads.push(key);\n abortFetcher(key);\n }\n });\n }\n\n function setFetcherError(key: string, routeId: string, error: any) {\n let boundaryMatch = findNearestBoundary(state.matches, routeId);\n deleteFetcher(key);\n updateState({\n errors: {\n [boundaryMatch.route.id]: error,\n },\n fetchers: new Map(state.fetchers),\n });\n }\n\n function deleteFetcher(key: string): void {\n if (fetchControllers.has(key)) abortFetcher(key);\n fetchLoadMatches.delete(key);\n fetchReloadIds.delete(key);\n fetchRedirectIds.delete(key);\n state.fetchers.delete(key);\n }\n\n function abortFetcher(key: string) {\n let controller = fetchControllers.get(key);\n invariant(controller, `Expected fetch controller: ${key}`);\n controller.abort();\n fetchControllers.delete(key);\n }\n\n function markFetchersDone(keys: string[]) {\n for (let key of keys) {\n let fetcher = getFetcher(key);\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: fetcher.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n function markFetchRedirectsDone(): void {\n let doneKeys = [];\n for (let key of fetchRedirectIds) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n fetchRedirectIds.delete(key);\n doneKeys.push(key);\n }\n }\n markFetchersDone(doneKeys);\n }\n\n function abortStaleFetchLoads(landedId: number): boolean {\n let yeetedKeys = [];\n for (let [key, id] of fetchReloadIds) {\n if (id < landedId) {\n let fetcher = state.fetchers.get(key);\n invariant(fetcher, `Expected fetcher: ${key}`);\n if (fetcher.state === \"loading\") {\n abortFetcher(key);\n fetchReloadIds.delete(key);\n yeetedKeys.push(key);\n }\n }\n }\n markFetchersDone(yeetedKeys);\n return yeetedKeys.length > 0;\n }\n\n function getBlocker(key: string, fn: BlockerFunction) {\n let blocker: Blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n if (blockerFunctions.get(key) !== fn) {\n blockerFunctions.set(key, fn);\n }\n\n return blocker;\n }\n\n function deleteBlocker(key: string) {\n state.blockers.delete(key);\n blockerFunctions.delete(key);\n }\n\n // Utility function to update blockers, ensuring valid state transitions\n function updateBlocker(key: string, newBlocker: Blocker) {\n let blocker = state.blockers.get(key) || IDLE_BLOCKER;\n\n // Poor mans state machine :)\n // https://mermaid.live/edit#pako:eNqVkc9OwzAMxl8l8nnjAYrEtDIOHEBIgwvKJTReGy3_lDpIqO27k6awMG0XcrLlnz87nwdonESogKXXBuE79rq75XZO3-yHds0RJVuv70YrPlUrCEe2HfrORS3rubqZfuhtpg5C9wk5tZ4VKcRUq88q9Z8RS0-48cE1iHJkL0ugbHuFLus9L6spZy8nX9MP2CNdomVaposqu3fGayT8T8-jJQwhepo_UtpgBQaDEUom04dZhAN1aJBDlUKJBxE1ceB2Smj0Mln-IBW5AFU2dwUiktt_2Qaq2dBfaKdEup85UV7Yd-dKjlnkabl2Pvr0DTkTreM\n invariant(\n (blocker.state === \"unblocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"blocked\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"proceeding\") ||\n (blocker.state === \"blocked\" && newBlocker.state === \"unblocked\") ||\n (blocker.state === \"proceeding\" && newBlocker.state === \"unblocked\"),\n `Invalid blocker state transition: ${blocker.state} -> ${newBlocker.state}`\n );\n\n state.blockers.set(key, newBlocker);\n updateState({ blockers: new Map(state.blockers) });\n }\n\n function shouldBlockNavigation({\n currentLocation,\n nextLocation,\n historyAction,\n }: {\n currentLocation: Location;\n nextLocation: Location;\n historyAction: HistoryAction;\n }): string | undefined {\n if (blockerFunctions.size === 0) {\n return;\n }\n\n // We ony support a single active blocker at the moment since we don't have\n // any compelling use cases for multi-blocker yet\n if (blockerFunctions.size > 1) {\n warning(false, \"A router only supports one blocker at a time\");\n }\n\n let entries = Array.from(blockerFunctions.entries());\n let [blockerKey, blockerFunction] = entries[entries.length - 1];\n let blocker = state.blockers.get(blockerKey);\n\n if (blocker && blocker.state === \"proceeding\") {\n // If the blocker is currently proceeding, we don't need to re-check\n // it and can let this navigation continue\n return;\n }\n\n // At this point, we know we're unblocked/blocked so we need to check the\n // user-provided blocker function\n if (blockerFunction({ currentLocation, nextLocation, historyAction })) {\n return blockerKey;\n }\n }\n\n function cancelActiveDeferreds(\n predicate?: (routeId: string) => boolean\n ): string[] {\n let cancelledRouteIds: string[] = [];\n activeDeferreds.forEach((dfd, routeId) => {\n if (!predicate || predicate(routeId)) {\n // Cancel the deferred - but do not remove from activeDeferreds here -\n // we rely on the subscribers to do that so our tests can assert proper\n // cleanup via _internalActiveDeferreds\n dfd.cancel();\n cancelledRouteIds.push(routeId);\n activeDeferreds.delete(routeId);\n }\n });\n return cancelledRouteIds;\n }\n\n // Opt in to capturing and reporting scroll positions during navigations,\n // used by the component\n function enableScrollRestoration(\n positions: Record,\n getPosition: GetScrollPositionFunction,\n getKey?: GetScrollRestorationKeyFunction\n ) {\n savedScrollPositions = positions;\n getScrollPosition = getPosition;\n getScrollRestorationKey = getKey || ((location) => location.key);\n\n // Perform initial hydration scroll restoration, since we miss the boat on\n // the initial updateState() because we've not yet rendered \n // and therefore have no savedScrollPositions available\n if (!initialScrollRestored && state.navigation === IDLE_NAVIGATION) {\n initialScrollRestored = true;\n let y = getSavedScrollPosition(state.location, state.matches);\n if (y != null) {\n updateState({ restoreScrollPosition: y });\n }\n }\n\n return () => {\n savedScrollPositions = null;\n getScrollPosition = null;\n getScrollRestorationKey = null;\n };\n }\n\n function saveScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): void {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n savedScrollPositions[key] = getScrollPosition();\n }\n }\n\n function getSavedScrollPosition(\n location: Location,\n matches: AgnosticDataRouteMatch[]\n ): number | null {\n if (savedScrollPositions && getScrollRestorationKey && getScrollPosition) {\n let userMatches = matches.map((m) =>\n createUseMatchesMatch(m, state.loaderData)\n );\n let key = getScrollRestorationKey(location, userMatches) || location.key;\n let y = savedScrollPositions[key];\n if (typeof y === \"number\") {\n return y;\n }\n }\n return null;\n }\n\n function _internalSetRoutes(newRoutes: AgnosticDataRouteObject[]) {\n inFlightDataRoutes = newRoutes;\n }\n\n router = {\n get basename() {\n return init.basename;\n },\n get state() {\n return state;\n },\n get routes() {\n return dataRoutes;\n },\n initialize,\n subscribe,\n enableScrollRestoration,\n navigate,\n fetch,\n revalidate,\n // Passthrough to history-aware createHref used by useHref so we get proper\n // hash-aware URLs in DOM paths\n createHref: (to: To) => init.history.createHref(to),\n encodeLocation: (to: To) => init.history.encodeLocation(to),\n getFetcher,\n deleteFetcher,\n dispose,\n getBlocker,\n deleteBlocker,\n _internalFetchControllers: fetchControllers,\n _internalActiveDeferreds: activeDeferreds,\n // TODO: Remove setRoutes, it's temporary to avoid dealing with\n // updating the tree while validating the update algorithm.\n _internalSetRoutes,\n };\n\n return router;\n}\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region createStaticHandler\n////////////////////////////////////////////////////////////////////////////////\n\nexport const UNSAFE_DEFERRED_SYMBOL = Symbol(\"deferred\");\n\nexport interface CreateStaticHandlerOptions {\n basename?: string;\n detectErrorBoundary?: DetectErrorBoundaryFunction;\n}\n\nexport function createStaticHandler(\n routes: AgnosticRouteObject[],\n opts?: CreateStaticHandlerOptions\n): StaticHandler {\n invariant(\n routes.length > 0,\n \"You must provide a non-empty routes array to createStaticHandler\"\n );\n\n let manifest: RouteManifest = {};\n let detectErrorBoundary =\n opts?.detectErrorBoundary || defaultDetectErrorBoundary;\n let dataRoutes = convertRoutesToDataRoutes(\n routes,\n detectErrorBoundary,\n undefined,\n manifest\n );\n let basename = (opts ? opts.basename : null) || \"/\";\n\n /**\n * The query() method is intended for document requests, in which we want to\n * call an optional action and potentially multiple loaders for all nested\n * routes. It returns a StaticHandlerContext object, which is very similar\n * to the router state (location, loaderData, actionData, errors, etc.) and\n * also adds SSR-specific information such as the statusCode and headers\n * from action/loaders Responses.\n *\n * It _should_ never throw and should report all errors through the\n * returned context.errors object, properly associating errors to their error\n * boundary. Additionally, it tracks _deepestRenderedBoundaryId which can be\n * used to emulate React error boundaries during SSr by performing a second\n * pass only down to the boundaryId.\n *\n * The one exception where we do not return a StaticHandlerContext is when a\n * redirect response is returned or thrown from any action/loader. We\n * propagate that out and return the raw Response so the HTTP server can\n * return it directly.\n */\n async function query(\n request: Request,\n { requestContext }: { requestContext?: unknown } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\") {\n let error = getInternalRouterError(405, { method });\n let { matches: methodNotAllowedMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: methodNotAllowedMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n } else if (!matches) {\n let error = getInternalRouterError(404, { pathname: location.pathname });\n let { matches: notFoundMatches, route } =\n getShortCircuitMatches(dataRoutes);\n return {\n basename,\n location,\n matches: notFoundMatches,\n loaderData: {},\n actionData: null,\n errors: {\n [route.id]: error,\n },\n statusCode: error.status,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let result = await queryImpl(request, location, matches, requestContext);\n if (isResponse(result)) {\n return result;\n }\n\n // When returning StaticHandlerContext, we patch back in the location here\n // since we need it for React Context. But this helps keep our submit and\n // loadRouteData operating on a Request instead of a Location\n return { location, basename, ...result };\n }\n\n /**\n * The queryRoute() method is intended for targeted route requests, either\n * for fetch ?_data requests or resource route requests. In this case, we\n * are only ever calling a single action or loader, and we are returning the\n * returned value directly. In most cases, this will be a Response returned\n * from the action/loader, but it may be a primitive or other value as well -\n * and in such cases the calling context should handle that accordingly.\n *\n * We do respect the throw/return differentiation, so if an action/loader\n * throws, then this method will throw the value. This is important so we\n * can do proper boundary identification in Remix where a thrown Response\n * must go to the Catch Boundary but a returned Response is happy-path.\n *\n * One thing to note is that any Router-initiated Errors that make sense\n * to associate with a status code will be thrown as an ErrorResponse\n * instance which include the raw Error, such that the calling context can\n * serialize the error as they see fit while including the proper response\n * code. Examples here are 404 and 405 errors that occur prior to reaching\n * any user-defined loaders.\n */\n async function queryRoute(\n request: Request,\n {\n routeId,\n requestContext,\n }: { requestContext?: unknown; routeId?: string } = {}\n ): Promise {\n let url = new URL(request.url);\n let method = request.method;\n let location = createLocation(\"\", createPath(url), null, \"default\");\n let matches = matchRoutes(dataRoutes, location, basename);\n\n // SSR supports HEAD requests while SPA doesn't\n if (!isValidMethod(method) && method !== \"HEAD\" && method !== \"OPTIONS\") {\n throw getInternalRouterError(405, { method });\n } else if (!matches) {\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let match = routeId\n ? matches.find((m) => m.route.id === routeId)\n : getTargetMatch(matches, location);\n\n if (routeId && !match) {\n throw getInternalRouterError(403, {\n pathname: location.pathname,\n routeId,\n });\n } else if (!match) {\n // This should never hit I don't think?\n throw getInternalRouterError(404, { pathname: location.pathname });\n }\n\n let result = await queryImpl(\n request,\n location,\n matches,\n requestContext,\n match\n );\n if (isResponse(result)) {\n return result;\n }\n\n let error = result.errors ? Object.values(result.errors)[0] : undefined;\n if (error !== undefined) {\n // If we got back result.errors, that means the loader/action threw\n // _something_ that wasn't a Response, but it's not guaranteed/required\n // to be an `instanceof Error` either, so we have to use throw here to\n // preserve the \"error\" state outside of queryImpl.\n throw error;\n }\n\n // Pick off the right state value to return\n if (result.actionData) {\n return Object.values(result.actionData)[0];\n }\n\n if (result.loaderData) {\n let data = Object.values(result.loaderData)[0];\n if (result.activeDeferreds?.[match.route.id]) {\n data[UNSAFE_DEFERRED_SYMBOL] = result.activeDeferreds[match.route.id];\n }\n return data;\n }\n\n return undefined;\n }\n\n async function queryImpl(\n request: Request,\n location: Location,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch\n ): Promise | Response> {\n invariant(\n request.signal,\n \"query()/queryRoute() requests must contain an AbortController signal\"\n );\n\n try {\n if (isMutationMethod(request.method.toLowerCase())) {\n let result = await submit(\n request,\n matches,\n routeMatch || getTargetMatch(matches, location),\n requestContext,\n routeMatch != null\n );\n return result;\n }\n\n let result = await loadRouteData(\n request,\n matches,\n requestContext,\n routeMatch\n );\n return isResponse(result)\n ? result\n : {\n ...result,\n actionData: null,\n actionHeaders: {},\n };\n } catch (e) {\n // If the user threw/returned a Response in callLoaderOrAction, we throw\n // it to bail out and then return or throw here based on whether the user\n // returned or threw\n if (isQueryRouteResponse(e)) {\n if (e.type === ResultType.error && !isRedirectResponse(e.response)) {\n throw e.response;\n }\n return e.response;\n }\n // Redirects are always returned since they don't propagate to catch\n // boundaries\n if (isRedirectResponse(e)) {\n return e;\n }\n throw e;\n }\n }\n\n async function submit(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n actionMatch: AgnosticDataRouteMatch,\n requestContext: unknown,\n isRouteRequest: boolean\n ): Promise | Response> {\n let result: DataResult;\n\n if (!actionMatch.route.action && !actionMatch.route.lazy) {\n let error = getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: actionMatch.route.id,\n });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n } else {\n result = await callLoaderOrAction(\n \"action\",\n request,\n actionMatch,\n matches,\n manifest,\n detectErrorBoundary,\n basename,\n true,\n isRouteRequest,\n requestContext\n );\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n }\n\n if (isRedirectResult(result)) {\n // Uhhhh - this should never happen, we should always throw these from\n // callLoaderOrAction, but the type narrowing here keeps TS happy and we\n // can get back on the \"throw all redirect responses\" train here should\n // this ever happen :/\n throw new Response(null, {\n status: result.status,\n headers: {\n Location: result.location,\n },\n });\n }\n\n if (isDeferredResult(result)) {\n let error = getInternalRouterError(400, { type: \"defer-action\" });\n if (isRouteRequest) {\n throw error;\n }\n result = {\n type: ResultType.error,\n error,\n };\n }\n\n if (isRouteRequest) {\n // Note: This should only be non-Response values if we get here, since\n // isRouteRequest should throw any Response received in callLoaderOrAction\n if (isErrorResult(result)) {\n throw result.error;\n }\n\n return {\n matches: [actionMatch],\n loaderData: {},\n actionData: { [actionMatch.route.id]: result.data },\n errors: null,\n // Note: statusCode + headers are unused here since queryRoute will\n // return the raw Response or value\n statusCode: 200,\n loaderHeaders: {},\n actionHeaders: {},\n activeDeferreds: null,\n };\n }\n\n if (isErrorResult(result)) {\n // Store off the pending error - we use it to determine which loaders\n // to call and will commit it when we complete the navigation\n let boundaryMatch = findNearestBoundary(matches, actionMatch.route.id);\n let context = await loadRouteData(\n request,\n matches,\n requestContext,\n undefined,\n {\n [boundaryMatch.route.id]: result.error,\n }\n );\n\n // action status codes take precedence over loader status codes\n return {\n ...context,\n statusCode: isRouteErrorResponse(result.error)\n ? result.error.status\n : 500,\n actionData: null,\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n // Create a GET request for the loaders\n let loaderRequest = new Request(request.url, {\n headers: request.headers,\n redirect: request.redirect,\n signal: request.signal,\n });\n let context = await loadRouteData(loaderRequest, matches, requestContext);\n\n return {\n ...context,\n // action status codes take precedence over loader status codes\n ...(result.statusCode ? { statusCode: result.statusCode } : {}),\n actionData: {\n [actionMatch.route.id]: result.data,\n },\n actionHeaders: {\n ...(result.headers ? { [actionMatch.route.id]: result.headers } : {}),\n },\n };\n }\n\n async function loadRouteData(\n request: Request,\n matches: AgnosticDataRouteMatch[],\n requestContext: unknown,\n routeMatch?: AgnosticDataRouteMatch,\n pendingActionError?: RouteData\n ): Promise<\n | Omit<\n StaticHandlerContext,\n \"location\" | \"basename\" | \"actionData\" | \"actionHeaders\"\n >\n | Response\n > {\n let isRouteRequest = routeMatch != null;\n\n // Short circuit if we have no loaders to run (queryRoute())\n if (\n isRouteRequest &&\n !routeMatch?.route.loader &&\n !routeMatch?.route.lazy\n ) {\n throw getInternalRouterError(400, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: routeMatch?.route.id,\n });\n }\n\n let requestMatches = routeMatch\n ? [routeMatch]\n : getLoaderMatchesUntilBoundary(\n matches,\n Object.keys(pendingActionError || {})[0]\n );\n let matchesToLoad = requestMatches.filter(\n (m) => m.route.loader || m.route.lazy\n );\n\n // Short circuit if we have no loaders to run (query())\n if (matchesToLoad.length === 0) {\n return {\n matches,\n // Add a null for all matched routes for proper revalidation on the client\n loaderData: matches.reduce(\n (acc, m) => Object.assign(acc, { [m.route.id]: null }),\n {}\n ),\n errors: pendingActionError || null,\n statusCode: 200,\n loaderHeaders: {},\n activeDeferreds: null,\n };\n }\n\n let results = await Promise.all([\n ...matchesToLoad.map((match) =>\n callLoaderOrAction(\n \"loader\",\n request,\n match,\n matches,\n manifest,\n detectErrorBoundary,\n basename,\n true,\n isRouteRequest,\n requestContext\n )\n ),\n ]);\n\n if (request.signal.aborted) {\n let method = isRouteRequest ? \"queryRoute\" : \"query\";\n throw new Error(`${method}() call aborted`);\n }\n\n // Process and commit output from loaders\n let activeDeferreds = new Map();\n let context = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingActionError,\n activeDeferreds\n );\n\n // Add a null for any non-loader matches for proper revalidation on the client\n let executedLoaders = new Set(\n matchesToLoad.map((match) => match.route.id)\n );\n matches.forEach((match) => {\n if (!executedLoaders.has(match.route.id)) {\n context.loaderData[match.route.id] = null;\n }\n });\n\n return {\n ...context,\n matches,\n activeDeferreds:\n activeDeferreds.size > 0\n ? Object.fromEntries(activeDeferreds.entries())\n : null,\n };\n }\n\n return {\n dataRoutes,\n query,\n queryRoute,\n };\n}\n\n//#endregion\n\n////////////////////////////////////////////////////////////////////////////////\n//#region Helpers\n////////////////////////////////////////////////////////////////////////////////\n\n/**\n * Given an existing StaticHandlerContext and an error thrown at render time,\n * provide an updated StaticHandlerContext suitable for a second SSR render\n */\nexport function getStaticContextFromError(\n routes: AgnosticDataRouteObject[],\n context: StaticHandlerContext,\n error: any\n) {\n let newContext: StaticHandlerContext = {\n ...context,\n statusCode: 500,\n errors: {\n [context._deepestRenderedBoundaryId || routes[0].id]: error,\n },\n };\n return newContext;\n}\n\nfunction isSubmissionNavigation(\n opts: RouterNavigateOptions\n): opts is SubmissionNavigateOptions {\n return opts != null && \"formData\" in opts;\n}\n\n// Normalize navigation options by converting formMethod=GET formData objects to\n// URLSearchParams so they behave identically to links with query params\nfunction normalizeNavigateOptions(\n to: To,\n future: FutureConfig,\n opts?: RouterNavigateOptions,\n isFetcher = false\n): {\n path: string;\n submission?: Submission;\n error?: ErrorResponse;\n} {\n let path = typeof to === \"string\" ? to : createPath(to);\n\n // Return location verbatim on non-submission navigations\n if (!opts || !isSubmissionNavigation(opts)) {\n return { path };\n }\n\n if (opts.formMethod && !isValidMethod(opts.formMethod)) {\n return {\n path,\n error: getInternalRouterError(405, { method: opts.formMethod }),\n };\n }\n\n // Create a Submission on non-GET navigations\n let submission: Submission | undefined;\n if (opts.formData) {\n let formMethod = opts.formMethod || \"get\";\n submission = {\n formMethod: future.v7_normalizeFormMethod\n ? (formMethod.toUpperCase() as V7_FormMethod)\n : (formMethod.toLowerCase() as FormMethod),\n formAction: stripHashFromPath(path),\n formEncType:\n (opts && opts.formEncType) || \"application/x-www-form-urlencoded\",\n formData: opts.formData,\n };\n\n if (isMutationMethod(submission.formMethod)) {\n return { path, submission };\n }\n }\n\n // Flatten submission onto URLSearchParams for GET submissions\n let parsedPath = parsePath(path);\n let searchParams = convertFormDataToSearchParams(opts.formData);\n // Since fetcher GET submissions only run a single loader (as opposed to\n // navigation GET submissions which run all loaders), we need to preserve\n // any incoming ?index params\n if (isFetcher && parsedPath.search && hasNakedIndexQuery(parsedPath.search)) {\n searchParams.append(\"index\", \"\");\n }\n parsedPath.search = `?${searchParams}`;\n\n return { path: createPath(parsedPath), submission };\n}\n\n// Filter out all routes below any caught error as they aren't going to\n// render so we don't need to load them\nfunction getLoaderMatchesUntilBoundary(\n matches: AgnosticDataRouteMatch[],\n boundaryId?: string\n) {\n let boundaryMatches = matches;\n if (boundaryId) {\n let index = matches.findIndex((m) => m.route.id === boundaryId);\n if (index >= 0) {\n boundaryMatches = matches.slice(0, index);\n }\n }\n return boundaryMatches;\n}\n\nfunction getMatchesToLoad(\n history: History,\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n submission: Submission | undefined,\n location: Location,\n isRevalidationRequired: boolean,\n cancelledDeferredRoutes: string[],\n cancelledFetcherLoads: string[],\n fetchLoadMatches: Map,\n routesToUse: AgnosticDataRouteObject[],\n basename: string | undefined,\n pendingActionData?: RouteData,\n pendingError?: RouteData\n): [AgnosticDataRouteMatch[], RevalidatingFetcher[]] {\n let actionResult = pendingError\n ? Object.values(pendingError)[0]\n : pendingActionData\n ? Object.values(pendingActionData)[0]\n : undefined;\n\n let currentUrl = history.createURL(state.location);\n let nextUrl = history.createURL(location);\n\n let defaultShouldRevalidate =\n // Forced revalidation due to submission, useRevalidate, or X-Remix-Revalidate\n isRevalidationRequired ||\n // Clicked the same link, resubmitted a GET form\n currentUrl.toString() === nextUrl.toString() ||\n // Search params affect all loaders\n currentUrl.search !== nextUrl.search;\n\n // Pick navigation matches that are net-new or qualify for revalidation\n let boundaryId = pendingError ? Object.keys(pendingError)[0] : undefined;\n let boundaryMatches = getLoaderMatchesUntilBoundary(matches, boundaryId);\n\n let navigationMatches = boundaryMatches.filter((match, index) => {\n if (match.route.lazy) {\n // We haven't loaded this route yet so we don't know if it's got a loader!\n return true;\n }\n if (match.route.loader == null) {\n return false;\n }\n\n // Always call the loader on new route instances and pending defer cancellations\n if (\n isNewLoader(state.loaderData, state.matches[index], match) ||\n cancelledDeferredRoutes.some((id) => id === match.route.id)\n ) {\n return true;\n }\n\n // This is the default implementation for when we revalidate. If the route\n // provides it's own implementation, then we give them full control but\n // provide this value so they can leverage it if needed after they check\n // their own specific use cases\n let currentRouteMatch = state.matches[index];\n let nextRouteMatch = match;\n\n return shouldRevalidateLoader(match, {\n currentUrl,\n currentParams: currentRouteMatch.params,\n nextUrl,\n nextParams: nextRouteMatch.params,\n ...submission,\n actionResult,\n defaultShouldRevalidate:\n defaultShouldRevalidate ||\n isNewRouteInstance(currentRouteMatch, nextRouteMatch),\n });\n });\n\n // Pick fetcher.loads that need to be revalidated\n let revalidatingFetchers: RevalidatingFetcher[] = [];\n fetchLoadMatches.forEach((f, key) => {\n // Don't revalidate if fetcher won't be present in the subsequent render\n if (!matches.some((m) => m.route.id === f.routeId)) {\n return;\n }\n\n let fetcherMatches = matchRoutes(routesToUse, f.path, basename);\n\n // If the fetcher path no longer matches, push it in with null matches so\n // we can trigger a 404 in callLoadersAndMaybeResolveData\n if (!fetcherMatches) {\n revalidatingFetchers.push({ key, ...f, matches: null, match: null });\n return;\n }\n\n let fetcherMatch = getTargetMatch(fetcherMatches, f.path);\n\n if (cancelledFetcherLoads.includes(key)) {\n revalidatingFetchers.push({\n key,\n matches: fetcherMatches,\n match: fetcherMatch,\n ...f,\n });\n return;\n }\n\n // Revalidating fetchers are decoupled from the route matches since they\n // hit a static href, so they _always_ check shouldRevalidate and the\n // default is strictly if a revalidation is explicitly required (action\n // submissions, useRevalidator, X-Remix-Revalidate).\n let shouldRevalidate = shouldRevalidateLoader(fetcherMatch, {\n currentUrl,\n currentParams: state.matches[state.matches.length - 1].params,\n nextUrl,\n nextParams: matches[matches.length - 1].params,\n ...submission,\n actionResult,\n defaultShouldRevalidate,\n });\n if (shouldRevalidate) {\n revalidatingFetchers.push({\n key,\n matches: fetcherMatches,\n match: fetcherMatch,\n ...f,\n });\n }\n });\n\n return [navigationMatches, revalidatingFetchers];\n}\n\nfunction isNewLoader(\n currentLoaderData: RouteData,\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let isNew =\n // [a] -> [a, b]\n !currentMatch ||\n // [a, b] -> [a, c]\n match.route.id !== currentMatch.route.id;\n\n // Handle the case that we don't have data for a re-used route, potentially\n // from a prior error or from a cancelled pending deferred\n let isMissingData = currentLoaderData[match.route.id] === undefined;\n\n // Always load if this is a net-new route or we don't yet have data\n return isNew || isMissingData;\n}\n\nfunction isNewRouteInstance(\n currentMatch: AgnosticDataRouteMatch,\n match: AgnosticDataRouteMatch\n) {\n let currentPath = currentMatch.route.path;\n return (\n // param change for this match, /users/123 -> /users/456\n currentMatch.pathname !== match.pathname ||\n // splat param changed, which is not present in match.path\n // e.g. /files/images/avatar.jpg -> files/finances.xls\n (currentPath != null &&\n currentPath.endsWith(\"*\") &&\n currentMatch.params[\"*\"] !== match.params[\"*\"])\n );\n}\n\nfunction shouldRevalidateLoader(\n loaderMatch: AgnosticDataRouteMatch,\n arg: Parameters[0]\n) {\n if (loaderMatch.route.shouldRevalidate) {\n let routeChoice = loaderMatch.route.shouldRevalidate(arg);\n if (typeof routeChoice === \"boolean\") {\n return routeChoice;\n }\n }\n\n return arg.defaultShouldRevalidate;\n}\n\n/**\n * Execute route.lazy() methods to lazily load route modules (loader, action,\n * shouldRevalidate) and update the routeManifest in place which shares objects\n * with dataRoutes so those get updated as well.\n */\nasync function loadLazyRouteModule(\n route: AgnosticDataRouteObject,\n detectErrorBoundary: DetectErrorBoundaryFunction,\n manifest: RouteManifest\n) {\n if (!route.lazy) {\n return;\n }\n\n let lazyRoute = await route.lazy();\n\n // If the lazy route function was executed and removed by another parallel\n // call then we can return - first lazy() to finish wins because the return\n // value of lazy is expected to be static\n if (!route.lazy) {\n return;\n }\n\n let routeToUpdate = manifest[route.id];\n invariant(routeToUpdate, \"No route found in manifest\");\n\n // Update the route in place. This should be safe because there's no way\n // we could yet be sitting on this route as we can't get there without\n // resolving lazy() first.\n //\n // This is different than the HMR \"update\" use-case where we may actively be\n // on the route being updated. The main concern boils down to \"does this\n // mutation affect any ongoing navigations or any current state.matches\n // values?\". If not, it should be safe to update in place.\n let routeUpdates: Record = {};\n for (let lazyRouteProperty in lazyRoute) {\n let staticRouteValue =\n routeToUpdate[lazyRouteProperty as keyof typeof routeToUpdate];\n\n let isPropertyStaticallyDefined =\n staticRouteValue !== undefined &&\n // This property isn't static since it should always be updated based\n // on the route updates\n lazyRouteProperty !== \"hasErrorBoundary\";\n\n warning(\n !isPropertyStaticallyDefined,\n `Route \"${routeToUpdate.id}\" has a static property \"${lazyRouteProperty}\" ` +\n `defined but its lazy function is also returning a value for this property. ` +\n `The lazy route property \"${lazyRouteProperty}\" will be ignored.`\n );\n\n if (\n !isPropertyStaticallyDefined &&\n !immutableRouteKeys.has(lazyRouteProperty as ImmutableRouteKey)\n ) {\n routeUpdates[lazyRouteProperty] =\n lazyRoute[lazyRouteProperty as keyof typeof lazyRoute];\n }\n }\n\n // Mutate the route with the provided updates. Do this first so we pass\n // the updated version to detectErrorBoundary\n Object.assign(routeToUpdate, routeUpdates);\n\n // Mutate the `hasErrorBoundary` property on the route based on the route\n // updates and remove the `lazy` function so we don't resolve the lazy\n // route again.\n Object.assign(routeToUpdate, {\n // To keep things framework agnostic, we use the provided\n // `detectErrorBoundary` function to set the `hasErrorBoundary` route\n // property since the logic will differ between frameworks.\n hasErrorBoundary: detectErrorBoundary({ ...routeToUpdate }),\n lazy: undefined,\n });\n}\n\nasync function callLoaderOrAction(\n type: \"loader\" | \"action\",\n request: Request,\n match: AgnosticDataRouteMatch,\n matches: AgnosticDataRouteMatch[],\n manifest: RouteManifest,\n detectErrorBoundary: DetectErrorBoundaryFunction,\n basename = \"/\",\n isStaticRequest: boolean = false,\n isRouteRequest: boolean = false,\n requestContext?: unknown\n): Promise {\n let resultType;\n let result;\n let onReject: (() => void) | undefined;\n\n let runHandler = (handler: ActionFunction | LoaderFunction) => {\n // Setup a promise we can race against so that abort signals short circuit\n let reject: () => void;\n let abortPromise = new Promise((_, r) => (reject = r));\n onReject = () => reject();\n request.signal.addEventListener(\"abort\", onReject);\n return Promise.race([\n handler({ request, params: match.params, context: requestContext }),\n abortPromise,\n ]);\n };\n\n try {\n let handler = match.route[type];\n\n if (match.route.lazy) {\n if (handler) {\n // Run statically defined handler in parallel with lazy()\n let values = await Promise.all([\n runHandler(handler),\n loadLazyRouteModule(match.route, detectErrorBoundary, manifest),\n ]);\n result = values[0];\n } else {\n // Load lazy route module, then run any returned handler\n await loadLazyRouteModule(match.route, detectErrorBoundary, manifest);\n\n handler = match.route[type];\n if (handler) {\n // Handler still run even if we got interrupted to maintain consistency\n // with un-abortable behavior of handler execution on non-lazy or\n // previously-lazy-loaded routes\n result = await runHandler(handler);\n } else if (type === \"action\") {\n throw getInternalRouterError(405, {\n method: request.method,\n pathname: new URL(request.url).pathname,\n routeId: match.route.id,\n });\n } else {\n // lazy() route has no loader to run. Short circuit here so we don't\n // hit the invariant below that errors on returning undefined.\n return { type: ResultType.data, data: undefined };\n }\n }\n } else {\n invariant(\n handler,\n `Could not find the ${type} to run on the \"${match.route.id}\" route`\n );\n\n result = await runHandler(handler);\n }\n\n invariant(\n result !== undefined,\n `You defined ${type === \"action\" ? \"an action\" : \"a loader\"} for route ` +\n `\"${match.route.id}\" but didn't return anything from your \\`${type}\\` ` +\n `function. Please return a value or \\`null\\`.`\n );\n } catch (e) {\n resultType = ResultType.error;\n result = e;\n } finally {\n if (onReject) {\n request.signal.removeEventListener(\"abort\", onReject);\n }\n }\n\n if (isResponse(result)) {\n let status = result.status;\n\n // Process redirects\n if (redirectStatusCodes.has(status)) {\n let location = result.headers.get(\"Location\");\n invariant(\n location,\n \"Redirects returned/thrown from loaders/actions must have a Location header\"\n );\n\n // Support relative routing in internal redirects\n if (!ABSOLUTE_URL_REGEX.test(location)) {\n let activeMatches = matches.slice(0, matches.indexOf(match) + 1);\n let routePathnames = getPathContributingMatches(activeMatches).map(\n (match) => match.pathnameBase\n );\n let resolvedLocation = resolveTo(\n location,\n routePathnames,\n new URL(request.url).pathname\n );\n invariant(\n createPath(resolvedLocation),\n `Unable to resolve redirect location: ${location}`\n );\n\n // Prepend the basename to the redirect location if we have one\n if (basename) {\n let path = resolvedLocation.pathname;\n resolvedLocation.pathname =\n path === \"/\" ? basename : joinPaths([basename, path]);\n }\n\n location = createPath(resolvedLocation);\n } else if (!isStaticRequest) {\n // Strip off the protocol+origin for same-origin + same-basename absolute\n // redirects. If this is a static request, we can let it go back to the\n // browser as-is\n let currentUrl = new URL(request.url);\n let url = location.startsWith(\"//\")\n ? new URL(currentUrl.protocol + location)\n : new URL(location);\n let isSameBasename = stripBasename(url.pathname, basename) != null;\n if (url.origin === currentUrl.origin && isSameBasename) {\n location = url.pathname + url.search + url.hash;\n }\n }\n\n // Don't process redirects in the router during static requests requests.\n // Instead, throw the Response and let the server handle it with an HTTP\n // redirect. We also update the Location header in place in this flow so\n // basename and relative routing is taken into account\n if (isStaticRequest) {\n result.headers.set(\"Location\", location);\n throw result;\n }\n\n return {\n type: ResultType.redirect,\n status,\n location,\n revalidate: result.headers.get(\"X-Remix-Revalidate\") !== null,\n };\n }\n\n // For SSR single-route requests, we want to hand Responses back directly\n // without unwrapping. We do this with the QueryRouteResponse wrapper\n // interface so we can know whether it was returned or thrown\n if (isRouteRequest) {\n // eslint-disable-next-line no-throw-literal\n throw {\n type: resultType || ResultType.data,\n response: result,\n };\n }\n\n let data: any;\n let contentType = result.headers.get(\"Content-Type\");\n // Check between word boundaries instead of startsWith() due to the last\n // paragraph of https://httpwg.org/specs/rfc9110.html#field.content-type\n if (contentType && /\\bapplication\\/json\\b/.test(contentType)) {\n data = await result.json();\n } else {\n data = await result.text();\n }\n\n if (resultType === ResultType.error) {\n return {\n type: resultType,\n error: new ErrorResponse(status, result.statusText, data),\n headers: result.headers,\n };\n }\n\n return {\n type: ResultType.data,\n data,\n statusCode: result.status,\n headers: result.headers,\n };\n }\n\n if (resultType === ResultType.error) {\n return { type: resultType, error: result };\n }\n\n if (isDeferredData(result)) {\n return {\n type: ResultType.deferred,\n deferredData: result,\n statusCode: result.init?.status,\n headers: result.init?.headers && new Headers(result.init.headers),\n };\n }\n\n return { type: ResultType.data, data: result };\n}\n\n// Utility method for creating the Request instances for loaders/actions during\n// client-side navigations and fetches. During SSR we will always have a\n// Request instance from the static handler (query/queryRoute)\nfunction createClientSideRequest(\n history: History,\n location: string | Location,\n signal: AbortSignal,\n submission?: Submission\n): Request {\n let url = history.createURL(stripHashFromPath(location)).toString();\n let init: RequestInit = { signal };\n\n if (submission && isMutationMethod(submission.formMethod)) {\n let { formMethod, formEncType, formData } = submission;\n // Didn't think we needed this but it turns out unlike other methods, patch\n // won't be properly normalized to uppercase and results in a 405 error.\n // See: https://fetch.spec.whatwg.org/#concept-method\n init.method = formMethod.toUpperCase();\n init.body =\n formEncType === \"application/x-www-form-urlencoded\"\n ? convertFormDataToSearchParams(formData)\n : formData;\n }\n\n // Content-Type is inferred (https://fetch.spec.whatwg.org/#dom-request)\n return new Request(url, init);\n}\n\nfunction convertFormDataToSearchParams(formData: FormData): URLSearchParams {\n let searchParams = new URLSearchParams();\n\n for (let [key, value] of formData.entries()) {\n // https://html.spec.whatwg.org/multipage/form-control-infrastructure.html#converting-an-entry-list-to-a-list-of-name-value-pairs\n searchParams.append(key, value instanceof File ? value.name : value);\n }\n\n return searchParams;\n}\n\nfunction processRouteLoaderData(\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors: RouterState[\"errors\"] | null;\n statusCode: number;\n loaderHeaders: Record;\n} {\n // Fill in loaderData/errors from our loaders\n let loaderData: RouterState[\"loaderData\"] = {};\n let errors: RouterState[\"errors\"] | null = null;\n let statusCode: number | undefined;\n let foundError = false;\n let loaderHeaders: Record = {};\n\n // Process loader results into state.loaderData/state.errors\n results.forEach((result, index) => {\n let id = matchesToLoad[index].route.id;\n invariant(\n !isRedirectResult(result),\n \"Cannot handle redirect results in processLoaderData\"\n );\n if (isErrorResult(result)) {\n // Look upwards from the matched route for the closest ancestor\n // error boundary, defaulting to the root match\n let boundaryMatch = findNearestBoundary(matches, id);\n let error = result.error;\n // If we have a pending action error, we report it at the highest-route\n // that throws a loader error, and then clear it out to indicate that\n // it was consumed\n if (pendingError) {\n error = Object.values(pendingError)[0];\n pendingError = undefined;\n }\n\n errors = errors || {};\n\n // Prefer higher error values if lower errors bubble to the same boundary\n if (errors[boundaryMatch.route.id] == null) {\n errors[boundaryMatch.route.id] = error;\n }\n\n // Clear our any prior loaderData for the throwing route\n loaderData[id] = undefined;\n\n // Once we find our first (highest) error, we set the status code and\n // prevent deeper status codes from overriding\n if (!foundError) {\n foundError = true;\n statusCode = isRouteErrorResponse(result.error)\n ? result.error.status\n : 500;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n } else {\n if (isDeferredResult(result)) {\n activeDeferreds.set(id, result.deferredData);\n loaderData[id] = result.deferredData.data;\n } else {\n loaderData[id] = result.data;\n }\n\n // Error status codes always override success status codes, but if all\n // loaders are successful we take the deepest status code.\n if (\n result.statusCode != null &&\n result.statusCode !== 200 &&\n !foundError\n ) {\n statusCode = result.statusCode;\n }\n if (result.headers) {\n loaderHeaders[id] = result.headers;\n }\n }\n });\n\n // If we didn't consume the pending action error (i.e., all loaders\n // resolved), then consume it here. Also clear out any loaderData for the\n // throwing route\n if (pendingError) {\n errors = pendingError;\n loaderData[Object.keys(pendingError)[0]] = undefined;\n }\n\n return {\n loaderData,\n errors,\n statusCode: statusCode || 200,\n loaderHeaders,\n };\n}\n\nfunction processLoaderData(\n state: RouterState,\n matches: AgnosticDataRouteMatch[],\n matchesToLoad: AgnosticDataRouteMatch[],\n results: DataResult[],\n pendingError: RouteData | undefined,\n revalidatingFetchers: RevalidatingFetcher[],\n fetcherResults: DataResult[],\n activeDeferreds: Map\n): {\n loaderData: RouterState[\"loaderData\"];\n errors?: RouterState[\"errors\"];\n} {\n let { loaderData, errors } = processRouteLoaderData(\n matches,\n matchesToLoad,\n results,\n pendingError,\n activeDeferreds\n );\n\n // Process results from our revalidating fetchers\n for (let index = 0; index < revalidatingFetchers.length; index++) {\n let { key, match } = revalidatingFetchers[index];\n invariant(\n fetcherResults !== undefined && fetcherResults[index] !== undefined,\n \"Did not find corresponding fetcher result\"\n );\n let result = fetcherResults[index];\n\n // Process fetcher non-redirect errors\n if (isErrorResult(result)) {\n let boundaryMatch = findNearestBoundary(state.matches, match?.route.id);\n if (!(errors && errors[boundaryMatch.route.id])) {\n errors = {\n ...errors,\n [boundaryMatch.route.id]: result.error,\n };\n }\n state.fetchers.delete(key);\n } else if (isRedirectResult(result)) {\n // Should never get here, redirects should get processed above, but we\n // keep this to type narrow to a success result in the else\n invariant(false, \"Unhandled fetcher revalidation redirect\");\n } else if (isDeferredResult(result)) {\n // Should never get here, deferred data should be awaited for fetchers\n // in resolveDeferredResults\n invariant(false, \"Unhandled fetcher deferred data\");\n } else {\n let doneFetcher: FetcherStates[\"Idle\"] = {\n state: \"idle\",\n data: result.data,\n formMethod: undefined,\n formAction: undefined,\n formEncType: undefined,\n formData: undefined,\n \" _hasFetcherDoneAnything \": true,\n };\n state.fetchers.set(key, doneFetcher);\n }\n }\n\n return { loaderData, errors };\n}\n\nfunction mergeLoaderData(\n loaderData: RouteData,\n newLoaderData: RouteData,\n matches: AgnosticDataRouteMatch[],\n errors: RouteData | null | undefined\n): RouteData {\n let mergedLoaderData = { ...newLoaderData };\n for (let match of matches) {\n let id = match.route.id;\n if (newLoaderData.hasOwnProperty(id)) {\n if (newLoaderData[id] !== undefined) {\n mergedLoaderData[id] = newLoaderData[id];\n } else {\n // No-op - this is so we ignore existing data if we have a key in the\n // incoming object with an undefined value, which is how we unset a prior\n // loaderData if we encounter a loader error\n }\n } else if (loaderData[id] !== undefined && match.route.loader) {\n // Preserve existing keys not included in newLoaderData and where a loader\n // wasn't removed by HMR\n mergedLoaderData[id] = loaderData[id];\n }\n\n if (errors && errors.hasOwnProperty(id)) {\n // Don't keep any loader data below the boundary\n break;\n }\n }\n return mergedLoaderData;\n}\n\n// Find the nearest error boundary, looking upwards from the leaf route (or the\n// route specified by routeId) for the closest ancestor error boundary,\n// defaulting to the root match\nfunction findNearestBoundary(\n matches: AgnosticDataRouteMatch[],\n routeId?: string\n): AgnosticDataRouteMatch {\n let eligibleMatches = routeId\n ? matches.slice(0, matches.findIndex((m) => m.route.id === routeId) + 1)\n : [...matches];\n return (\n eligibleMatches.reverse().find((m) => m.route.hasErrorBoundary === true) ||\n matches[0]\n );\n}\n\nfunction getShortCircuitMatches(routes: AgnosticDataRouteObject[]): {\n matches: AgnosticDataRouteMatch[];\n route: AgnosticDataRouteObject;\n} {\n // Prefer a root layout route if present, otherwise shim in a route object\n let route = routes.find((r) => r.index || !r.path || r.path === \"/\") || {\n id: `__shim-error-route__`,\n };\n\n return {\n matches: [\n {\n params: {},\n pathname: \"\",\n pathnameBase: \"\",\n route,\n },\n ],\n route,\n };\n}\n\nfunction getInternalRouterError(\n status: number,\n {\n pathname,\n routeId,\n method,\n type,\n }: {\n pathname?: string;\n routeId?: string;\n method?: string;\n type?: \"defer-action\";\n } = {}\n) {\n let statusText = \"Unknown Server Error\";\n let errorMessage = \"Unknown @remix-run/router error\";\n\n if (status === 400) {\n statusText = \"Bad Request\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method} request to \"${pathname}\" but ` +\n `did not provide a \\`loader\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (type === \"defer-action\") {\n errorMessage = \"defer() is not supported in actions\";\n }\n } else if (status === 403) {\n statusText = \"Forbidden\";\n errorMessage = `Route \"${routeId}\" does not match URL \"${pathname}\"`;\n } else if (status === 404) {\n statusText = \"Not Found\";\n errorMessage = `No route matches URL \"${pathname}\"`;\n } else if (status === 405) {\n statusText = \"Method Not Allowed\";\n if (method && pathname && routeId) {\n errorMessage =\n `You made a ${method.toUpperCase()} request to \"${pathname}\" but ` +\n `did not provide an \\`action\\` for route \"${routeId}\", ` +\n `so there is no way to handle the request.`;\n } else if (method) {\n errorMessage = `Invalid request method \"${method.toUpperCase()}\"`;\n }\n }\n\n return new ErrorResponse(\n status || 500,\n statusText,\n new Error(errorMessage),\n true\n );\n}\n\n// Find any returned redirect errors, starting from the lowest match\nfunction findRedirect(results: DataResult[]): RedirectResult | undefined {\n for (let i = results.length - 1; i >= 0; i--) {\n let result = results[i];\n if (isRedirectResult(result)) {\n return result;\n }\n }\n}\n\nfunction stripHashFromPath(path: To) {\n let parsedPath = typeof path === \"string\" ? parsePath(path) : path;\n return createPath({ ...parsedPath, hash: \"\" });\n}\n\nfunction isHashChangeOnly(a: Location, b: Location): boolean {\n return (\n a.pathname === b.pathname && a.search === b.search && a.hash !== b.hash\n );\n}\n\nfunction isDeferredResult(result: DataResult): result is DeferredResult {\n return result.type === ResultType.deferred;\n}\n\nfunction isErrorResult(result: DataResult): result is ErrorResult {\n return result.type === ResultType.error;\n}\n\nfunction isRedirectResult(result?: DataResult): result is RedirectResult {\n return (result && result.type) === ResultType.redirect;\n}\n\nexport function isDeferredData(value: any): value is DeferredData {\n let deferred: DeferredData = value;\n return (\n deferred &&\n typeof deferred === \"object\" &&\n typeof deferred.data === \"object\" &&\n typeof deferred.subscribe === \"function\" &&\n typeof deferred.cancel === \"function\" &&\n typeof deferred.resolveData === \"function\"\n );\n}\n\nfunction isResponse(value: any): value is Response {\n return (\n value != null &&\n typeof value.status === \"number\" &&\n typeof value.statusText === \"string\" &&\n typeof value.headers === \"object\" &&\n typeof value.body !== \"undefined\"\n );\n}\n\nfunction isRedirectResponse(result: any): result is Response {\n if (!isResponse(result)) {\n return false;\n }\n\n let status = result.status;\n let location = result.headers.get(\"Location\");\n return status >= 300 && status <= 399 && location != null;\n}\n\nfunction isQueryRouteResponse(obj: any): obj is QueryRouteResponse {\n return (\n obj &&\n isResponse(obj.response) &&\n (obj.type === ResultType.data || ResultType.error)\n );\n}\n\nfunction isValidMethod(method: string): method is FormMethod | V7_FormMethod {\n return validRequestMethods.has(method.toLowerCase() as FormMethod);\n}\n\nfunction isMutationMethod(\n method: string\n): method is MutationFormMethod | V7_MutationFormMethod {\n return validMutationMethods.has(method.toLowerCase() as MutationFormMethod);\n}\n\nasync function resolveDeferredResults(\n currentMatches: AgnosticDataRouteMatch[],\n matchesToLoad: (AgnosticDataRouteMatch | null)[],\n results: DataResult[],\n signal: AbortSignal,\n isFetcher: boolean,\n currentLoaderData?: RouteData\n) {\n for (let index = 0; index < results.length; index++) {\n let result = results[index];\n let match = matchesToLoad[index];\n // If we don't have a match, then we can have a deferred result to do\n // anything with. This is for revalidating fetchers where the route was\n // removed during HMR\n if (!match) {\n continue;\n }\n\n let currentMatch = currentMatches.find(\n (m) => m.route.id === match!.route.id\n );\n let isRevalidatingLoader =\n currentMatch != null &&\n !isNewRouteInstance(currentMatch, match) &&\n (currentLoaderData && currentLoaderData[match.route.id]) !== undefined;\n\n if (isDeferredResult(result) && (isFetcher || isRevalidatingLoader)) {\n // Note: we do not have to touch activeDeferreds here since we race them\n // against the signal in resolveDeferredData and they'll get aborted\n // there if needed\n await resolveDeferredData(result, signal, isFetcher).then((result) => {\n if (result) {\n results[index] = result || results[index];\n }\n });\n }\n }\n}\n\nasync function resolveDeferredData(\n result: DeferredResult,\n signal: AbortSignal,\n unwrap = false\n): Promise {\n let aborted = await result.deferredData.resolveData(signal);\n if (aborted) {\n return;\n }\n\n if (unwrap) {\n try {\n return {\n type: ResultType.data,\n data: result.deferredData.unwrappedData,\n };\n } catch (e) {\n // Handle any TrackedPromise._error values encountered while unwrapping\n return {\n type: ResultType.error,\n error: e,\n };\n }\n }\n\n return {\n type: ResultType.data,\n data: result.deferredData.data,\n };\n}\n\nfunction hasNakedIndexQuery(search: string): boolean {\n return new URLSearchParams(search).getAll(\"index\").some((v) => v === \"\");\n}\n\n// Note: This should match the format exported by useMatches, so if you change\n// this please also change that :) Eventually we'll DRY this up\nfunction createUseMatchesMatch(\n match: AgnosticDataRouteMatch,\n loaderData: RouteData\n): UseMatchesMatch {\n let { route, pathname, params } = match;\n return {\n id: route.id,\n pathname,\n params,\n data: loaderData[route.id] as unknown,\n handle: route.handle as unknown,\n };\n}\n\nfunction getTargetMatch(\n matches: AgnosticDataRouteMatch[],\n location: Location | string\n) {\n let search =\n typeof location === \"string\" ? parsePath(location).search : location.search;\n if (\n matches[matches.length - 1].route.index &&\n hasNakedIndexQuery(search || \"\")\n ) {\n // Return the leaf index route when index is present\n return matches[matches.length - 1];\n }\n // Otherwise grab the deepest \"path contributing\" match (ignoring index and\n // pathless layout routes)\n let pathMatches = getPathContributingMatches(matches);\n return pathMatches[pathMatches.length - 1];\n}\n//#endregion\n","/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n */\n\nimport * as React from \"react\";\n\n/**\n * inlined Object.is polyfill to avoid requiring consumers ship their own\n * https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/is\n */\nfunction isPolyfill(x: any, y: any) {\n return (\n (x === y && (x !== 0 || 1 / x === 1 / y)) || (x !== x && y !== y) // eslint-disable-line no-self-compare\n );\n}\n\nconst is: (x: any, y: any) => boolean =\n typeof Object.is === \"function\" ? Object.is : isPolyfill;\n\n// Intentionally not using named imports because Rollup uses dynamic\n// dispatch for CommonJS interop named imports.\nconst { useState, useEffect, useLayoutEffect, useDebugValue } = React;\n\nlet didWarnOld18Alpha = false;\nlet didWarnUncachedGetSnapshot = false;\n\n// Disclaimer: This shim breaks many of the rules of React, and only works\n// because of a very particular set of implementation details and assumptions\n// -- change any one of them and it will break. The most important assumption\n// is that updates are always synchronous, because concurrent rendering is\n// only available in versions of React that also have a built-in\n// useSyncExternalStore API. And we only use this shim when the built-in API\n// does not exist.\n//\n// Do not assume that the clever hacks used by this hook also work in general.\n// The point of this shim is to replace the need for hacks by other libraries.\nexport function useSyncExternalStore(\n subscribe: (fn: () => void) => () => void,\n getSnapshot: () => T,\n // Note: The shim does not use getServerSnapshot, because pre-18 versions of\n // React do not expose a way to check if we're hydrating. So users of the shim\n // will need to track that themselves and return the correct value\n // from `getSnapshot`.\n getServerSnapshot?: () => T\n): T {\n if (__DEV__) {\n if (!didWarnOld18Alpha) {\n if (\"startTransition\" in React) {\n didWarnOld18Alpha = true;\n console.error(\n \"You are using an outdated, pre-release alpha of React 18 that \" +\n \"does not support useSyncExternalStore. The \" +\n \"use-sync-external-store shim will not work correctly. Upgrade \" +\n \"to a newer pre-release.\"\n );\n }\n }\n }\n\n // Read the current snapshot from the store on every render. Again, this\n // breaks the rules of React, and only works here because of specific\n // implementation details, most importantly that updates are\n // always synchronous.\n const value = getSnapshot();\n if (__DEV__) {\n if (!didWarnUncachedGetSnapshot) {\n const cachedValue = getSnapshot();\n if (!is(value, cachedValue)) {\n console.error(\n \"The result of getSnapshot should be cached to avoid an infinite loop\"\n );\n didWarnUncachedGetSnapshot = true;\n }\n }\n }\n\n // Because updates are synchronous, we don't queue them. Instead we force a\n // re-render whenever the subscribed state changes by updating an some\n // arbitrary useState hook. Then, during render, we call getSnapshot to read\n // the current value.\n //\n // Because we don't actually use the state returned by the useState hook, we\n // can save a bit of memory by storing other stuff in that slot.\n //\n // To implement the early bailout, we need to track some things on a mutable\n // object. Usually, we would put that in a useRef hook, but we can stash it in\n // our useState hook instead.\n //\n // To force a re-render, we call forceUpdate({inst}). That works because the\n // new object always fails an equality check.\n const [{ inst }, forceUpdate] = useState({ inst: { value, getSnapshot } });\n\n // Track the latest getSnapshot function with a ref. This needs to be updated\n // in the layout phase so we can access it during the tearing check that\n // happens on subscribe.\n useLayoutEffect(() => {\n inst.value = value;\n inst.getSnapshot = getSnapshot;\n\n // Whenever getSnapshot or subscribe changes, we need to check in the\n // commit phase if there was an interleaved mutation. In concurrent mode\n // this can happen all the time, but even in synchronous mode, an earlier\n // effect may have mutated the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe, value, getSnapshot]);\n\n useEffect(() => {\n // Check for changes right before subscribing. Subsequent changes will be\n // detected in the subscription handler.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n const handleStoreChange = () => {\n // TODO: Because there is no cross-renderer API for batching updates, it's\n // up to the consumer of this library to wrap their subscription event\n // with unstable_batchedUpdates. Should we try to detect when this isn't\n // the case and print a warning in development?\n\n // The store changed. Check if the snapshot changed since the last time we\n // read from the store.\n if (checkIfSnapshotChanged(inst)) {\n // Force a re-render.\n forceUpdate({ inst });\n }\n };\n // Subscribe to the store and return a clean-up function.\n return subscribe(handleStoreChange);\n // eslint-disable-next-line react-hooks/exhaustive-deps\n }, [subscribe]);\n\n useDebugValue(value);\n return value;\n}\n\nfunction checkIfSnapshotChanged(inst: any) {\n const latestGetSnapshot = inst.getSnapshot;\n const prevValue = inst.value;\n try {\n const nextValue = latestGetSnapshot();\n return !is(prevValue, nextValue);\n } catch (error) {\n return true;\n }\n}\n","/**\n * Inlined into the react-router repo since use-sync-external-store does not\n * provide a UMD-compatible package, so we need this to be able to distribute\n * UMD react-router bundles\n */\n\n/**\n * Copyright (c) Facebook, Inc. and its affiliates.\n *\n * This source code is licensed under the MIT license found in the\n * LICENSE file in the root directory of this source tree.\n *\n * @flow\n */\n\nimport * as React from \"react\";\n\nimport { useSyncExternalStore as client } from \"./useSyncExternalStoreShimClient\";\nimport { useSyncExternalStore as server } from \"./useSyncExternalStoreShimServer\";\n\nconst canUseDOM: boolean = !!(\n typeof window !== \"undefined\" &&\n typeof window.document !== \"undefined\" &&\n typeof window.document.createElement !== \"undefined\"\n);\nconst isServerEnvironment = !canUseDOM;\nconst shim = isServerEnvironment ? server : client;\n\nexport const useSyncExternalStore =\n \"useSyncExternalStore\" in React\n ? ((module) => module.useSyncExternalStore)(React)\n : shim;\n","import * as React from \"react\";\nimport type {\n AgnosticRouteMatch,\n AgnosticIndexRouteObject,\n AgnosticNonIndexRouteObject,\n History,\n Location,\n Router,\n StaticHandlerContext,\n To,\n TrackedPromise,\n LazyRouteFunction,\n} from \"@remix-run/router\";\nimport type { Action as NavigationType } from \"@remix-run/router\";\n\n// Create react-specific types from the agnostic types in @remix-run/router to\n// export from react-router\nexport interface IndexRouteObject {\n caseSensitive?: AgnosticIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticIndexRouteObject[\"path\"];\n id?: AgnosticIndexRouteObject[\"id\"];\n loader?: AgnosticIndexRouteObject[\"loader\"];\n action?: AgnosticIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticIndexRouteObject[\"handle\"];\n index: true;\n children?: undefined;\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport interface NonIndexRouteObject {\n caseSensitive?: AgnosticNonIndexRouteObject[\"caseSensitive\"];\n path?: AgnosticNonIndexRouteObject[\"path\"];\n id?: AgnosticNonIndexRouteObject[\"id\"];\n loader?: AgnosticNonIndexRouteObject[\"loader\"];\n action?: AgnosticNonIndexRouteObject[\"action\"];\n hasErrorBoundary?: AgnosticNonIndexRouteObject[\"hasErrorBoundary\"];\n shouldRevalidate?: AgnosticNonIndexRouteObject[\"shouldRevalidate\"];\n handle?: AgnosticNonIndexRouteObject[\"handle\"];\n index?: false;\n children?: RouteObject[];\n element?: React.ReactNode | null;\n errorElement?: React.ReactNode | null;\n Component?: React.ComponentType | null;\n ErrorBoundary?: React.ComponentType | null;\n lazy?: LazyRouteFunction;\n}\n\nexport type RouteObject = IndexRouteObject | NonIndexRouteObject;\n\nexport type DataRouteObject = RouteObject & {\n children?: DataRouteObject[];\n id: string;\n};\n\nexport interface RouteMatch<\n ParamKey extends string = string,\n RouteObjectType extends RouteObject = RouteObject\n> extends AgnosticRouteMatch {}\n\nexport interface DataRouteMatch extends RouteMatch {}\n\nexport interface DataRouterContextObject extends NavigationContextObject {\n router: Router;\n staticContext?: StaticHandlerContext;\n}\n\nexport const DataRouterContext =\n React.createContext(null);\nif (__DEV__) {\n DataRouterContext.displayName = \"DataRouter\";\n}\n\nexport const DataRouterStateContext = React.createContext<\n Router[\"state\"] | null\n>(null);\nif (__DEV__) {\n DataRouterStateContext.displayName = \"DataRouterState\";\n}\n\nexport const AwaitContext = React.createContext(null);\nif (__DEV__) {\n AwaitContext.displayName = \"Await\";\n}\n\nexport type RelativeRoutingType = \"route\" | \"path\";\n\nexport interface NavigateOptions {\n replace?: boolean;\n state?: any;\n preventScrollReset?: boolean;\n relative?: RelativeRoutingType;\n}\n\n/**\n * A Navigator is a \"location changer\"; it's how you get to different locations.\n *\n * Every history instance conforms to the Navigator interface, but the\n * distinction is useful primarily when it comes to the low-level API\n * where both the location and a navigator must be provided separately in order\n * to avoid \"tearing\" that may occur in a suspense-enabled app if the action\n * and/or location were to be read directly from the history instance.\n */\nexport interface Navigator {\n createHref: History[\"createHref\"];\n // Optional for backwards-compat with Router/HistoryRouter usage (edge case)\n encodeLocation?: History[\"encodeLocation\"];\n go: History[\"go\"];\n push(to: To, state?: any, opts?: NavigateOptions): void;\n replace(to: To, state?: any, opts?: NavigateOptions): void;\n}\n\ninterface NavigationContextObject {\n basename: string;\n navigator: Navigator;\n static: boolean;\n}\n\nexport const NavigationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n NavigationContext.displayName = \"Navigation\";\n}\n\ninterface LocationContextObject {\n location: Location;\n navigationType: NavigationType;\n}\n\nexport const LocationContext = React.createContext(\n null!\n);\n\nif (__DEV__) {\n LocationContext.displayName = \"Location\";\n}\n\nexport interface RouteContextObject {\n outlet: React.ReactElement | null;\n matches: RouteMatch[];\n}\n\nexport const RouteContext = React.createContext({\n outlet: null,\n matches: [],\n});\n\nif (__DEV__) {\n RouteContext.displayName = \"Route\";\n}\n\nexport const RouteErrorContext = React.createContext(null);\n\nif (__DEV__) {\n RouteErrorContext.displayName = \"RouteError\";\n}\n","import * as React from \"react\";\nimport type {\n Blocker,\n BlockerFunction,\n Location,\n ParamParseKey,\n Params,\n Path,\n PathMatch,\n PathPattern,\n Router as RemixRouter,\n To,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n UNSAFE_invariant as invariant,\n isRouteErrorResponse,\n joinPaths,\n matchPath,\n matchRoutes,\n parsePath,\n resolveTo,\n UNSAFE_getPathContributingMatches as getPathContributingMatches,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\n\nimport type {\n NavigateOptions,\n RouteContextObject,\n RouteMatch,\n RouteObject,\n DataRouteMatch,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n DataRouterContext,\n DataRouterStateContext,\n LocationContext,\n NavigationContext,\n RouteContext,\n RouteErrorContext,\n AwaitContext,\n} from \"./context\";\n\n/**\n * Returns the full href for the given \"to\" value. This is useful for building\n * custom links that are also accessible and preserve right-click behavior.\n *\n * @see https://reactrouter.com/hooks/use-href\n */\nexport function useHref(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): string {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useHref() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { hash, pathname, search } = useResolvedPath(to, { relative });\n\n let joinedPathname = pathname;\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to creating the href. If this is a root navigation, then just use the raw\n // basename which allows the basename to have full control over the presence\n // of a trailing slash on root links\n if (basename !== \"/\") {\n joinedPathname =\n pathname === \"/\" ? basename : joinPaths([basename, pathname]);\n }\n\n return navigator.createHref({ pathname: joinedPathname, search, hash });\n}\n\n/**\n * Returns true if this component is a descendant of a .\n *\n * @see https://reactrouter.com/hooks/use-in-router-context\n */\nexport function useInRouterContext(): boolean {\n return React.useContext(LocationContext) != null;\n}\n\n/**\n * Returns the current location object, which represents the current URL in web\n * browsers.\n *\n * Note: If you're using this it may mean you're doing some of your own\n * \"routing\" in your app, and we'd like to know what your use case is. We may\n * be able to provide something higher-level to better suit your needs.\n *\n * @see https://reactrouter.com/hooks/use-location\n */\nexport function useLocation(): Location {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useLocation() may be used only in the context of a component.`\n );\n\n return React.useContext(LocationContext).location;\n}\n\n/**\n * Returns the current navigation action which describes how the router came to\n * the current location, either by a pop, push, or replace on the history stack.\n *\n * @see https://reactrouter.com/hooks/use-navigation-type\n */\nexport function useNavigationType(): NavigationType {\n return React.useContext(LocationContext).navigationType;\n}\n\n/**\n * Returns a PathMatch object if the given pattern matches the current URL.\n * This is useful for components that need to know \"active\" state, e.g.\n * .\n *\n * @see https://reactrouter.com/hooks/use-match\n */\nexport function useMatch<\n ParamKey extends ParamParseKey,\n Path extends string\n>(pattern: PathPattern | Path): PathMatch | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useMatch() may be used only in the context of a component.`\n );\n\n let { pathname } = useLocation();\n return React.useMemo(\n () => matchPath(pattern, pathname),\n [pathname, pattern]\n );\n}\n\n/**\n * The interface for the navigate() function returned from useNavigate().\n */\nexport interface NavigateFunction {\n (to: To, options?: NavigateOptions): void;\n (delta: number): void;\n}\n\n/**\n * Returns an imperative method for changing the location. Used by s, but\n * may also be used by other elements to change the location.\n *\n * @see https://reactrouter.com/hooks/use-navigate\n */\nexport function useNavigate(): NavigateFunction {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useNavigate() may be used only in the context of a component.`\n );\n\n let { basename, navigator } = React.useContext(NavigationContext);\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n let activeRef = React.useRef(false);\n React.useEffect(() => {\n activeRef.current = true;\n });\n\n let navigate: NavigateFunction = React.useCallback(\n (to: To | number, options: NavigateOptions = {}) => {\n warning(\n activeRef.current,\n `You should call navigate() in a React.useEffect(), not when ` +\n `your component is first rendered.`\n );\n\n if (!activeRef.current) return;\n\n if (typeof to === \"number\") {\n navigator.go(to);\n return;\n }\n\n let path = resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n options.relative === \"path\"\n );\n\n // If we're operating within a basename, prepend it to the pathname prior\n // to handing off to history. If this is a root navigation, then we\n // navigate to the raw basename which allows the basename to have full\n // control over the presence of a trailing slash on root links\n if (basename !== \"/\") {\n path.pathname =\n path.pathname === \"/\"\n ? basename\n : joinPaths([basename, path.pathname]);\n }\n\n (!!options.replace ? navigator.replace : navigator.push)(\n path,\n options.state,\n options\n );\n },\n [basename, navigator, routePathnamesJson, locationPathname]\n );\n\n return navigate;\n}\n\nconst OutletContext = React.createContext(null);\n\n/**\n * Returns the context (if provided) for the child route at this level of the route\n * hierarchy.\n * @see https://reactrouter.com/hooks/use-outlet-context\n */\nexport function useOutletContext(): Context {\n return React.useContext(OutletContext) as Context;\n}\n\n/**\n * Returns the element for the child route at this level of the route\n * hierarchy. Used internally by to render child routes.\n *\n * @see https://reactrouter.com/hooks/use-outlet\n */\nexport function useOutlet(context?: unknown): React.ReactElement | null {\n let outlet = React.useContext(RouteContext).outlet;\n if (outlet) {\n return (\n {outlet}\n );\n }\n return outlet;\n}\n\n/**\n * Returns an object of key/value pairs of the dynamic params from the current\n * URL that were matched by the route path.\n *\n * @see https://reactrouter.com/hooks/use-params\n */\nexport function useParams<\n ParamsOrKey extends string | Record = string\n>(): Readonly<\n [ParamsOrKey] extends [string] ? Params : Partial\n> {\n let { matches } = React.useContext(RouteContext);\n let routeMatch = matches[matches.length - 1];\n return routeMatch ? (routeMatch.params as any) : {};\n}\n\n/**\n * Resolves the pathname of the given `to` value against the current location.\n *\n * @see https://reactrouter.com/hooks/use-resolved-path\n */\nexport function useResolvedPath(\n to: To,\n { relative }: { relative?: RelativeRoutingType } = {}\n): Path {\n let { matches } = React.useContext(RouteContext);\n let { pathname: locationPathname } = useLocation();\n\n let routePathnamesJson = JSON.stringify(\n getPathContributingMatches(matches).map((match) => match.pathnameBase)\n );\n\n return React.useMemo(\n () =>\n resolveTo(\n to,\n JSON.parse(routePathnamesJson),\n locationPathname,\n relative === \"path\"\n ),\n [to, routePathnamesJson, locationPathname, relative]\n );\n}\n\n/**\n * Returns the element of the route that matched the current location, prepared\n * with the correct context to render the remainder of the route tree. Route\n * elements in the tree must render an to render their child route's\n * element.\n *\n * @see https://reactrouter.com/hooks/use-routes\n */\nexport function useRoutes(\n routes: RouteObject[],\n locationArg?: Partial | string\n): React.ReactElement | null {\n invariant(\n useInRouterContext(),\n // TODO: This error is probably because they somehow have 2 versions of the\n // router loaded. We can help them understand how to avoid that.\n `useRoutes() may be used only in the context of a component.`\n );\n\n let { navigator } = React.useContext(NavigationContext);\n let dataRouterStateContext = React.useContext(DataRouterStateContext);\n let { matches: parentMatches } = React.useContext(RouteContext);\n let routeMatch = parentMatches[parentMatches.length - 1];\n let parentParams = routeMatch ? routeMatch.params : {};\n let parentPathname = routeMatch ? routeMatch.pathname : \"/\";\n let parentPathnameBase = routeMatch ? routeMatch.pathnameBase : \"/\";\n let parentRoute = routeMatch && routeMatch.route;\n\n if (__DEV__) {\n // You won't get a warning about 2 different under a \n // without a trailing *, but this is a best-effort warning anyway since we\n // cannot even give the warning unless they land at the parent route.\n //\n // Example:\n //\n // \n // {/* This route path MUST end with /* because otherwise\n // it will never match /blog/post/123 */}\n // } />\n // } />\n // \n //\n // function Blog() {\n // return (\n // \n // } />\n // \n // );\n // }\n let parentPath = (parentRoute && parentRoute.path) || \"\";\n warningOnce(\n parentPathname,\n !parentRoute || parentPath.endsWith(\"*\"),\n `You rendered descendant (or called \\`useRoutes()\\`) at ` +\n `\"${parentPathname}\" (under ) but the ` +\n `parent route path has no trailing \"*\". This means if you navigate ` +\n `deeper, the parent won't match anymore and therefore the child ` +\n `routes will never render.\\n\\n` +\n `Please change the parent to .`\n );\n }\n\n let locationFromContext = useLocation();\n\n let location;\n if (locationArg) {\n let parsedLocationArg =\n typeof locationArg === \"string\" ? parsePath(locationArg) : locationArg;\n\n invariant(\n parentPathnameBase === \"/\" ||\n parsedLocationArg.pathname?.startsWith(parentPathnameBase),\n `When overriding the location using \\`\\` or \\`useRoutes(routes, location)\\`, ` +\n `the location pathname must begin with the portion of the URL pathname that was ` +\n `matched by all parent routes. The current pathname base is \"${parentPathnameBase}\" ` +\n `but pathname \"${parsedLocationArg.pathname}\" was given in the \\`location\\` prop.`\n );\n\n location = parsedLocationArg;\n } else {\n location = locationFromContext;\n }\n\n let pathname = location.pathname || \"/\";\n let remainingPathname =\n parentPathnameBase === \"/\"\n ? pathname\n : pathname.slice(parentPathnameBase.length) || \"/\";\n\n let matches = matchRoutes(routes, { pathname: remainingPathname });\n\n if (__DEV__) {\n warning(\n parentRoute || matches != null,\n `No routes matched location \"${location.pathname}${location.search}${location.hash}\" `\n );\n\n warning(\n matches == null ||\n matches[matches.length - 1].route.element !== undefined ||\n matches[matches.length - 1].route.Component !== undefined,\n `Matched leaf route at location \"${location.pathname}${location.search}${location.hash}\" ` +\n `does not have an element or Component. This means it will render an with a ` +\n `null value by default resulting in an \"empty\" page.`\n );\n }\n\n let renderedMatches = _renderMatches(\n matches &&\n matches.map((match) =>\n Object.assign({}, match, {\n params: Object.assign({}, parentParams, match.params),\n pathname: joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathname).pathname\n : match.pathname,\n ]),\n pathnameBase:\n match.pathnameBase === \"/\"\n ? parentPathnameBase\n : joinPaths([\n parentPathnameBase,\n // Re-encode pathnames that were decoded inside matchRoutes\n navigator.encodeLocation\n ? navigator.encodeLocation(match.pathnameBase).pathname\n : match.pathnameBase,\n ]),\n })\n ),\n parentMatches,\n dataRouterStateContext || undefined\n );\n\n // When a user passes in a `locationArg`, the associated routes need to\n // be wrapped in a new `LocationContext.Provider` in order for `useLocation`\n // to use the scoped location instead of the global location.\n if (locationArg && renderedMatches) {\n return (\n \n {renderedMatches}\n \n );\n }\n\n return renderedMatches;\n}\n\nfunction DefaultErrorComponent() {\n let error = useRouteError();\n let message = isRouteErrorResponse(error)\n ? `${error.status} ${error.statusText}`\n : error instanceof Error\n ? error.message\n : JSON.stringify(error);\n let stack = error instanceof Error ? error.stack : null;\n let lightgrey = \"rgba(200,200,200, 0.5)\";\n let preStyles = { padding: \"0.5rem\", backgroundColor: lightgrey };\n let codeStyles = { padding: \"2px 4px\", backgroundColor: lightgrey };\n\n let devInfo = null;\n if (__DEV__) {\n devInfo = (\n <>\n

💿 Hey developer 👋

\n

\n You can provide a way better UX than this when your app throws errors\n by providing your own \n ErrorBoundary prop on \n <Route>\n

\n \n );\n }\n\n return (\n <>\n

Unexpected Application Error!

\n

{message}

\n {stack ?
{stack}
: null}\n {devInfo}\n \n );\n}\n\ntype RenderErrorBoundaryProps = React.PropsWithChildren<{\n location: Location;\n error: any;\n component: React.ReactNode;\n routeContext: RouteContextObject;\n}>;\n\ntype RenderErrorBoundaryState = {\n location: Location;\n error: any;\n};\n\nexport class RenderErrorBoundary extends React.Component<\n RenderErrorBoundaryProps,\n RenderErrorBoundaryState\n> {\n constructor(props: RenderErrorBoundaryProps) {\n super(props);\n this.state = {\n location: props.location,\n error: props.error,\n };\n }\n\n static getDerivedStateFromError(error: any) {\n return { error: error };\n }\n\n static getDerivedStateFromProps(\n props: RenderErrorBoundaryProps,\n state: RenderErrorBoundaryState\n ) {\n // When we get into an error state, the user will likely click \"back\" to the\n // previous page that didn't have an error. Because this wraps the entire\n // application, that will have no effect--the error page continues to display.\n // This gives us a mechanism to recover from the error when the location changes.\n //\n // Whether we're in an error state or not, we update the location in state\n // so that when we are in an error state, it gets reset when a new location\n // comes in and the user recovers from the error.\n if (state.location !== props.location) {\n return {\n error: props.error,\n location: props.location,\n };\n }\n\n // If we're not changing locations, preserve the location but still surface\n // any new errors that may come through. We retain the existing error, we do\n // this because the error provided from the app state may be cleared without\n // the location changing.\n return {\n error: props.error || state.error,\n location: state.location,\n };\n }\n\n componentDidCatch(error: any, errorInfo: any) {\n console.error(\n \"React Router caught the following error during render\",\n error,\n errorInfo\n );\n }\n\n render() {\n return this.state.error ? (\n \n \n \n ) : (\n this.props.children\n );\n }\n}\n\ninterface RenderedRouteProps {\n routeContext: RouteContextObject;\n match: RouteMatch;\n children: React.ReactNode | null;\n}\n\nfunction RenderedRoute({ routeContext, match, children }: RenderedRouteProps) {\n let dataRouterContext = React.useContext(DataRouterContext);\n\n // Track how deep we got in our render pass to emulate SSR componentDidCatch\n // in a DataStaticRouter\n if (\n dataRouterContext &&\n dataRouterContext.static &&\n dataRouterContext.staticContext &&\n (match.route.errorElement || match.route.ErrorBoundary)\n ) {\n dataRouterContext.staticContext._deepestRenderedBoundaryId = match.route.id;\n }\n\n return (\n \n {children}\n \n );\n}\n\nexport function _renderMatches(\n matches: RouteMatch[] | null,\n parentMatches: RouteMatch[] = [],\n dataRouterState?: RemixRouter[\"state\"]\n): React.ReactElement | null {\n if (matches == null) {\n if (dataRouterState?.errors) {\n // Don't bail if we have data router errors so we can render them in the\n // boundary. Use the pre-matched (or shimmed) matches\n matches = dataRouterState.matches as DataRouteMatch[];\n } else {\n return null;\n }\n }\n\n let renderedMatches = matches;\n\n // If we have data errors, trim matches to the highest error boundary\n let errors = dataRouterState?.errors;\n if (errors != null) {\n let errorIndex = renderedMatches.findIndex(\n (m) => m.route.id && errors?.[m.route.id]\n );\n invariant(\n errorIndex >= 0,\n `Could not find a matching route for the current errors: ${errors}`\n );\n renderedMatches = renderedMatches.slice(\n 0,\n Math.min(renderedMatches.length, errorIndex + 1)\n );\n }\n\n return renderedMatches.reduceRight((outlet, match, index) => {\n let error = match.route.id ? errors?.[match.route.id] : null;\n // Only data routers handle errors\n let errorElement: React.ReactNode | null = null;\n if (dataRouterState) {\n if (match.route.ErrorBoundary) {\n errorElement = ;\n } else if (match.route.errorElement) {\n errorElement = match.route.errorElement;\n } else {\n errorElement = ;\n }\n }\n let matches = parentMatches.concat(renderedMatches.slice(0, index + 1));\n let getChildren = () => {\n let children: React.ReactNode = outlet;\n if (error) {\n children = errorElement;\n } else if (match.route.Component) {\n children = ;\n } else if (match.route.element) {\n children = match.route.element;\n }\n return (\n \n );\n };\n // Only wrap in an error boundary within data router usages when we have an\n // ErrorBoundary/errorElement on this route. Otherwise let it bubble up to\n // an ancestor ErrorBoundary/errorElement\n return dataRouterState &&\n (match.route.ErrorBoundary || match.route.errorElement || index === 0) ? (\n \n ) : (\n getChildren()\n );\n }, null as React.ReactElement | null);\n}\n\nenum DataRouterHook {\n UseBlocker = \"useBlocker\",\n UseRevalidator = \"useRevalidator\",\n}\n\nenum DataRouterStateHook {\n UseBlocker = \"useBlocker\",\n UseLoaderData = \"useLoaderData\",\n UseActionData = \"useActionData\",\n UseRouteError = \"useRouteError\",\n UseNavigation = \"useNavigation\",\n UseRouteLoaderData = \"useRouteLoaderData\",\n UseMatches = \"useMatches\",\n UseRevalidator = \"useRevalidator\",\n}\n\nfunction getDataRouterConsoleError(\n hookName: DataRouterHook | DataRouterStateHook\n) {\n return `${hookName} must be used within a data router. See https://reactrouter.com/routers/picking-a-router.`;\n}\n\nfunction useDataRouterContext(hookName: DataRouterHook) {\n let ctx = React.useContext(DataRouterContext);\n invariant(ctx, getDataRouterConsoleError(hookName));\n return ctx;\n}\n\nfunction useDataRouterState(hookName: DataRouterStateHook) {\n let state = React.useContext(DataRouterStateContext);\n invariant(state, getDataRouterConsoleError(hookName));\n return state;\n}\n\nfunction useRouteContext(hookName: DataRouterStateHook) {\n let route = React.useContext(RouteContext);\n invariant(route, getDataRouterConsoleError(hookName));\n return route;\n}\n\nfunction useCurrentRouteId(hookName: DataRouterStateHook) {\n let route = useRouteContext(hookName);\n let thisRoute = route.matches[route.matches.length - 1];\n invariant(\n thisRoute.route.id,\n `${hookName} can only be used on routes that contain a unique \"id\"`\n );\n return thisRoute.route.id;\n}\n\n/**\n * Returns the current navigation, defaulting to an \"idle\" navigation when\n * no navigation is in progress\n */\nexport function useNavigation() {\n let state = useDataRouterState(DataRouterStateHook.UseNavigation);\n return state.navigation;\n}\n\n/**\n * Returns a revalidate function for manually triggering revalidation, as well\n * as the current state of any manual revalidations\n */\nexport function useRevalidator() {\n let dataRouterContext = useDataRouterContext(DataRouterHook.UseRevalidator);\n let state = useDataRouterState(DataRouterStateHook.UseRevalidator);\n return {\n revalidate: dataRouterContext.router.revalidate,\n state: state.revalidation,\n };\n}\n\n/**\n * Returns the active route matches, useful for accessing loaderData for\n * parent/child routes or the route \"handle\" property\n */\nexport function useMatches() {\n let { matches, loaderData } = useDataRouterState(\n DataRouterStateHook.UseMatches\n );\n return React.useMemo(\n () =>\n matches.map((match) => {\n let { pathname, params } = match;\n // Note: This structure matches that created by createUseMatchesMatch\n // in the @remix-run/router , so if you change this please also change\n // that :) Eventually we'll DRY this up\n return {\n id: match.route.id,\n pathname,\n params,\n data: loaderData[match.route.id] as unknown,\n handle: match.route.handle as unknown,\n };\n }),\n [matches, loaderData]\n );\n}\n\n/**\n * Returns the loader data for the nearest ancestor Route loader\n */\nexport function useLoaderData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseLoaderData);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseLoaderData);\n\n if (state.errors && state.errors[routeId] != null) {\n console.error(\n `You cannot \\`useLoaderData\\` in an errorElement (routeId: ${routeId})`\n );\n return undefined;\n }\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the loaderData for the given routeId\n */\nexport function useRouteLoaderData(routeId: string): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseRouteLoaderData);\n return state.loaderData[routeId];\n}\n\n/**\n * Returns the action data for the nearest ancestor Route action\n */\nexport function useActionData(): unknown {\n let state = useDataRouterState(DataRouterStateHook.UseActionData);\n\n let route = React.useContext(RouteContext);\n invariant(route, `useActionData must be used inside a RouteContext`);\n\n return Object.values(state?.actionData || {})[0];\n}\n\n/**\n * Returns the nearest ancestor Route error, which could be a loader/action\n * error or a render error. This is intended to be called from your\n * ErrorBoundary/errorElement to display a proper error message.\n */\nexport function useRouteError(): unknown {\n let error = React.useContext(RouteErrorContext);\n let state = useDataRouterState(DataRouterStateHook.UseRouteError);\n let routeId = useCurrentRouteId(DataRouterStateHook.UseRouteError);\n\n // If this was a render error, we put it in a RouteError context inside\n // of RenderErrorBoundary\n if (error) {\n return error;\n }\n\n // Otherwise look for errors from our data router state\n return state.errors?.[routeId];\n}\n\n/**\n * Returns the happy-path data from the nearest ancestor value\n */\nexport function useAsyncValue(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._data;\n}\n\n/**\n * Returns the error from the nearest ancestor value\n */\nexport function useAsyncError(): unknown {\n let value = React.useContext(AwaitContext);\n return value?._error;\n}\n\nlet blockerId = 0;\n\n/**\n * Allow the application to block navigations within the SPA and present the\n * user a confirmation dialog to confirm the navigation. Mostly used to avoid\n * using half-filled form data. This does not handle hard-reloads or\n * cross-origin navigations.\n */\nexport function useBlocker(shouldBlock: boolean | BlockerFunction): Blocker {\n let { router } = useDataRouterContext(DataRouterHook.UseBlocker);\n let state = useDataRouterState(DataRouterStateHook.UseBlocker);\n let [blockerKey] = React.useState(() => String(++blockerId));\n\n let blockerFunction = React.useCallback(\n (args) => {\n return typeof shouldBlock === \"function\"\n ? !!shouldBlock(args)\n : !!shouldBlock;\n },\n [shouldBlock]\n );\n\n let blocker = router.getBlocker(blockerKey, blockerFunction);\n\n // Cleanup on unmount\n React.useEffect(\n () => () => router.deleteBlocker(blockerKey),\n [router, blockerKey]\n );\n\n // Prefer the blocker from state since DataRouterContext is memoized so this\n // ensures we update on blocker state updates\n return state.blockers.get(blockerKey) || blocker;\n}\n\nconst alreadyWarned: Record = {};\n\nfunction warningOnce(key: string, cond: boolean, message: string) {\n if (!cond && !alreadyWarned[key]) {\n alreadyWarned[key] = true;\n warning(false, message);\n }\n}\n","import * as React from \"react\";\nimport type {\n TrackedPromise,\n InitialEntry,\n Location,\n MemoryHistory,\n Router as RemixRouter,\n RouterState,\n To,\n LazyRouteFunction,\n} from \"@remix-run/router\";\nimport {\n Action as NavigationType,\n AbortedDeferredError,\n createMemoryHistory,\n UNSAFE_invariant as invariant,\n parsePath,\n stripBasename,\n UNSAFE_warning as warning,\n} from \"@remix-run/router\";\nimport { useSyncExternalStore as useSyncExternalStoreShim } from \"./use-sync-external-store-shim\";\n\nimport type {\n DataRouteObject,\n IndexRouteObject,\n RouteMatch,\n RouteObject,\n Navigator,\n NonIndexRouteObject,\n RelativeRoutingType,\n} from \"./context\";\nimport {\n LocationContext,\n NavigationContext,\n DataRouterContext,\n DataRouterStateContext,\n AwaitContext,\n} from \"./context\";\nimport {\n useAsyncValue,\n useInRouterContext,\n useNavigate,\n useOutlet,\n useRoutes,\n _renderMatches,\n} from \"./hooks\";\n\nexport interface RouterProviderProps {\n fallbackElement?: React.ReactNode;\n router: RemixRouter;\n}\n\n/**\n * Given a Remix Router instance, render the appropriate UI\n */\nexport function RouterProvider({\n fallbackElement,\n router,\n}: RouterProviderProps): React.ReactElement {\n let getState = React.useCallback(() => router.state, [router]);\n\n // Sync router state to our component state to force re-renders\n let state: RouterState = useSyncExternalStoreShim(\n router.subscribe,\n getState,\n // We have to provide this so React@18 doesn't complain during hydration,\n // but we pass our serialized hydration data into the router so state here\n // is already synced with what the server saw\n getState\n );\n\n let navigator = React.useMemo((): Navigator => {\n return {\n createHref: router.createHref,\n encodeLocation: router.encodeLocation,\n go: (n) => router.navigate(n),\n push: (to, state, opts) =>\n router.navigate(to, {\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n replace: (to, state, opts) =>\n router.navigate(to, {\n replace: true,\n state,\n preventScrollReset: opts?.preventScrollReset,\n }),\n };\n }, [router]);\n\n let basename = router.basename || \"/\";\n\n let dataRouterContext = React.useMemo(\n () => ({\n router,\n navigator,\n static: false,\n basename,\n }),\n [router, navigator, basename]\n );\n\n // The fragment and {null} here are important! We need them to keep React 18's\n // useId happy when we are server-rendering since we may have a ' + '');\n printWindow.document.close();\n printWindow.focus();\n // eslint-disable-next-line\n var interval = setInterval(function () {\n if (printWindow.ready) {\n printWindow.print();\n printWindow.close();\n clearInterval(interval);\n }\n }, 500);\n return printWindow;\n}\n/**\n * Function to normalize the units applied to the element.\n *\n * @param {number|string} value ?\n * @returns {string} result\n * @private\n */\nexport function formatUnit(value) {\n var result = value + '';\n if (result.match(/auto|cm|mm|in|px|pt|pc|%|em|ex|ch|rem|vw|vh|vmin|vmax/)) {\n return result;\n }\n return result + 'px';\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {void} result\n * @private\n */\nexport function enableBlazorMode() {\n isBlazorPlatform = true;\n}\n/**\n * Function to check whether the platform is blazor or not.\n *\n * @returns {boolean} result\n * @private\n */\nexport function isBlazor() {\n return isBlazorPlatform;\n}\n/**\n * Function to convert xPath to DOM element in blazor platform\n *\n * @returns {HTMLElement} result\n * @param {HTMLElement | object} element ?\n * @private\n */\nexport function getElement(element) {\n var xPath = 'xPath';\n if (!(element instanceof Node) && isBlazor() && !isNullOrUndefined(element[\"\" + xPath])) {\n return document.evaluate(element[\"\" + xPath], document, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null).singleNodeValue;\n }\n return element;\n}\n/**\n * Function to fetch the Instances of a HTML element for the given component.\n *\n * @param {string | HTMLElement} element ?\n * @param {any} component ?\n * @returns {Object} ?\n * @private\n */\n// eslint-disable-next-line\nexport function getInstance(element, component) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n for (var _i = 0, _a = elem[\"\" + instances]; _i < _a.length; _i++) {\n var inst = _a[_i];\n if (inst instanceof component) {\n return inst;\n }\n }\n }\n return null;\n}\n/**\n * Function to add instances for the given element.\n *\n * @param {string | HTMLElement} element ?\n * @param {Object} instance ?\n * @returns {void} ?\n * @private\n */\nexport function addInstance(element, instance) {\n // eslint-disable-next-line\n var elem = (typeof (element) === 'string') ? document.querySelector(element) : element;\n if (elem[\"\" + instances]) {\n elem[\"\" + instances].push(instance);\n }\n else {\n elem[\"\" + instances] = [instance];\n }\n}\n/**\n * Function to generate the unique id.\n *\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function uniqueID() {\n if ((typeof window) === 'undefined') {\n return;\n }\n // eslint-disable-next-line\n var num = new Uint16Array(5);\n var intCrypto = window.msCrypto || window.crypto;\n return intCrypto.getRandomValues(num);\n}\n/**\n *\n * @param {Int16Array} num ?\n * @returns {string} ?\n */\nfunction combineArray(num) {\n var ret = '';\n for (var i = 0; i < 5; i++) {\n ret += (i ? ',' : '') + num[parseInt(i.toString(), 10)];\n }\n return ret;\n}\n","/**\n * Parser\n */\nvar defaultNumberingSystem = {\n 'latn': {\n '_digits': '0123456789',\n '_type': 'numeric'\n }\n};\nimport { isUndefined, getValue, isBlazor } from '../util';\nvar defaultNumberSymbols = {\n 'decimal': '.',\n 'group': ',',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'exponential': 'E'\n};\nvar latnNumberSystem = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9];\n/**\n * Interface for parser base\n *\n * @private\n */\nvar ParserBase = /** @class */ (function () {\n function ParserBase() {\n }\n /**\n * Returns the cldr object for the culture specifies\n *\n * @param {Object} obj - Specifies the object from which culture object to be acquired.\n * @param {string} cName - Specifies the culture name.\n * @returns {Object} ?\n */\n ParserBase.getMainObject = function (obj, cName) {\n var value = isBlazor() ? cName : 'main.' + cName;\n return getValue(value, obj);\n };\n /**\n * Returns the numbering system object from given cldr data.\n *\n * @param {Object} obj - Specifies the object from which number system is acquired.\n * @returns {Object} ?\n */\n ParserBase.getNumberingSystem = function (obj) {\n return getValue('supplemental.numberingSystems', obj) || this.numberingSystems;\n };\n /**\n * Returns the reverse of given object keys or keys specified.\n *\n * @param {Object} prop - Specifies the object to be reversed.\n * @param {number[]} keys - Optional parameter specifies the custom keyList for reversal.\n * @returns {Object} ?\n */\n ParserBase.reverseObject = function (prop, keys) {\n var propKeys = keys || Object.keys(prop);\n var res = {};\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var key = propKeys_1[_i];\n // eslint-disable-next-line\n if (!res.hasOwnProperty(prop[key])) {\n // eslint-disable-next-line\n res[prop[key]] = key;\n }\n }\n return res;\n };\n /**\n * Returns the symbol regex by skipping the escape sequence.\n *\n * @param {string[]} props - Specifies the array values to be skipped.\n * @returns {RegExp} ?\n */\n ParserBase.getSymbolRegex = function (props) {\n var regexStr = props.map(function (str) {\n return str.replace(/([.*+?^=!:${}()|[\\]/\\\\])/g, '\\\\$1');\n }).join('|');\n var regExp = RegExp;\n return new regExp(regexStr, 'g');\n };\n /**\n *\n * @param {Object} prop ?\n * @returns {Object} ?\n */\n ParserBase.getSymbolMatch = function (prop) {\n var matchKeys = Object.keys(defaultNumberSymbols);\n var ret = {};\n for (var _i = 0, matchKeys_1 = matchKeys; _i < matchKeys_1.length; _i++) {\n var key = matchKeys_1[_i];\n // eslint-disable-next-line\n ret[prop[key]] = defaultNumberSymbols[key];\n }\n return ret;\n };\n /**\n * Returns regex string for provided value\n *\n * @param {string} val ?\n * @returns {string} ?\n */\n ParserBase.constructRegex = function (val) {\n var len = val.length;\n var ret = '';\n for (var i = 0; i < len; i++) {\n if (i !== len - 1) {\n ret += val[parseInt(i.toString(), 10)] + '|';\n }\n else {\n ret += val[parseInt(i.toString(), 10)];\n }\n }\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {string} value - Specifies the values to be replaced.\n * @param {RegExp} regex - Specifies the regex to search.\n * @param {Object} obj - Specifies the object matcher to be replace value parts.\n * @returns {string} ?\n */\n ParserBase.convertValueParts = function (value, regex, obj) {\n return value.replace(regex, function (str) {\n // eslint-disable-next-line\n return obj[str];\n });\n };\n /**\n * Returns default numbering system object for formatting from cldr data\n *\n * @param {Object} obj ?\n * @returns {NumericObject} ?\n */\n ParserBase.getDefaultNumberingSystem = function (obj) {\n var ret = {};\n ret.obj = getValue('numbers', obj);\n ret.nSystem = getValue('defaultNumberingSystem', ret.obj);\n return ret;\n };\n /**\n * Returns the replaced value of matching regex and obj mapper.\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} needSymbols ?\n * @param {boolean} blazorMode ?\n * @returns {Object} ?\n */\n ParserBase.getCurrentNumericOptions = function (curObj, numberSystem, needSymbols, blazorMode) {\n var ret = {};\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem) || blazorMode) {\n var digits = blazorMode ? getValue('obj.mapperDigits', cur) : getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n ret.numericPair = this.reverseObject(digits, latnNumberSystem);\n var regExp = RegExp;\n ret.numberParseRegex = new regExp(this.constructRegex(digits), 'g');\n ret.numericRegex = '[' + digits[0] + '-' + digits[9] + ']';\n if (needSymbols) {\n ret.numericRegex = digits[0] + '-' + digits[9];\n ret.symbolNumberSystem = getValue(blazorMode ? 'numberSymbols' : 'symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.symbolMatch = this.getSymbolMatch(ret.symbolNumberSystem);\n ret.numberSystem = cur.nSystem;\n }\n }\n }\n return ret;\n };\n /**\n * Returns number mapper object for the provided cldr data\n *\n * @param {Object} curObj ?\n * @param {Object} numberSystem ?\n * @param {boolean} isNumber ?\n * @returns {NumberMapper} ?\n */\n // eslint-disable-next-line\n ParserBase.getNumberMapper = function (curObj, numberSystem, isNumber) {\n var ret = { mapper: {} };\n var cur = this.getDefaultNumberingSystem(curObj);\n if (!isUndefined(cur.nSystem)) {\n ret.numberSystem = cur.nSystem;\n ret.numberSymbols = getValue('symbols-numberSystem-' + cur.nSystem, cur.obj);\n ret.timeSeparator = getValue('timeSeparator', ret.numberSymbols);\n var digits = getValue(cur.nSystem + '._digits', numberSystem);\n if (!isUndefined(digits)) {\n for (var _i = 0, latnNumberSystem_1 = latnNumberSystem; _i < latnNumberSystem_1.length; _i++) {\n var i = latnNumberSystem_1[_i];\n // eslint-disable-next-line\n ret.mapper[i] = digits[i];\n }\n }\n }\n return ret;\n };\n ParserBase.nPair = 'numericPair';\n ParserBase.nRegex = 'numericRegex';\n ParserBase.numberingSystems = defaultNumberingSystem;\n return ParserBase;\n}());\nexport { ParserBase };\n/**\n * @private\n */\nvar blazorCurrencyData = {\n 'DJF': 'Fdj',\n 'ERN': 'Nfk',\n 'ETB': 'Br',\n 'NAD': '$',\n 'ZAR': 'R',\n 'XAF': 'FCFA',\n 'GHS': 'GH₵',\n 'XDR': 'XDR',\n 'AED': 'د.إ.',\n 'BHD': 'د.ب.',\n 'DZD': 'د.ج.',\n 'EGP': 'ج.م.',\n 'ILS': '₪',\n 'IQD': 'د.ع.',\n 'JOD': 'د.ا.',\n 'KMF': 'CF',\n 'KWD': 'د.ك.',\n 'LBP': 'ل.ل.',\n 'LYD': 'د.ل.',\n 'MAD': 'د.م.',\n 'MRU': 'أ.م.',\n 'OMR': 'ر.ع.',\n 'QAR': 'ر.ق.',\n 'SAR': 'ر.س.',\n 'SDG': 'ج.س.',\n 'SOS': 'S',\n 'SSP': '£',\n 'SYP': 'ل.س.',\n 'TND': 'د.ت.',\n 'YER': 'ر.ي.',\n 'CLP': '$',\n 'INR': '₹',\n 'TZS': 'TSh',\n 'EUR': '€',\n 'AZN': '₼',\n 'RUB': '₽',\n 'BYN': 'Br',\n 'ZMW': 'K',\n 'BGN': 'лв.',\n 'NGN': '₦',\n 'XOF': 'CFA',\n 'BDT': '৳',\n 'CNY': '¥',\n 'BAM': 'КМ',\n 'UGX': 'USh',\n 'USD': '$',\n 'CZK': 'Kč',\n 'GBP': '£',\n 'DKK': 'kr.',\n 'KES': 'Ksh',\n 'CHF': 'CHF',\n 'MVR': 'ރ.',\n 'BTN': 'Nu.',\n 'XCD': 'EC$',\n 'AUD': '$',\n 'BBD': '$',\n 'BIF': 'FBu',\n 'BMD': '$',\n 'BSD': '$',\n 'BWP': 'P',\n 'BZD': '$',\n 'CAD': '$',\n 'NZD': '$',\n 'FJD': '$',\n 'FKP': '£',\n 'GIP': '£',\n 'GMD': 'D',\n 'GYD': '$',\n 'HKD': '$',\n 'IDR': 'Rp',\n 'JMD': '$',\n 'KYD': '$',\n 'LRD': '$',\n 'MGA': 'Ar',\n 'MOP': 'MOP$',\n 'MUR': 'Rs',\n 'MWK': 'MK',\n 'MYR': 'RM',\n 'PGK': 'K',\n 'PHP': '₱',\n 'PKR': 'Rs',\n 'RWF': 'RF',\n 'SBD': '$',\n 'SCR': 'SR',\n 'SEK': 'kr',\n 'SGD': '$',\n 'SHP': '£',\n 'SLL': 'Le',\n 'ANG': 'NAf.',\n 'SZL': 'E',\n 'TOP': 'T$',\n 'TTD': '$',\n 'VUV': 'VT',\n 'WST': 'WS$',\n 'ARS': '$',\n 'BOB': 'Bs',\n 'BRL': 'R$',\n 'COP': '$',\n 'CRC': '₡',\n 'CUP': '$',\n 'DOP': '$',\n 'GTQ': 'Q',\n 'HNL': 'L',\n 'MXN': '$',\n 'NIO': 'C$',\n 'PAB': 'B/.',\n 'PEN': 'S/',\n 'PYG': '₲',\n 'UYU': '$',\n 'VES': 'Bs.S',\n 'IRR': 'ريال',\n 'GNF': 'FG',\n 'CDF': 'FC',\n 'HTG': 'G',\n 'XPF': 'FCFP',\n 'HRK': 'kn',\n 'HUF': 'Ft',\n 'AMD': '֏',\n 'ISK': 'kr',\n 'JPY': '¥',\n 'GEL': '₾',\n 'CVE': '​',\n 'KZT': '₸',\n 'KHR': '៛',\n 'KPW': '₩',\n 'KRW': '₩',\n 'KGS': 'сом',\n 'AOA': 'Kz',\n 'LAK': '₭',\n 'MZN': 'MTn',\n 'MKD': 'ден',\n 'MNT': '₮',\n 'BND': '$',\n 'MMK': 'K',\n 'NOK': 'kr',\n 'NPR': 'रु',\n 'AWG': 'Afl.',\n 'SRD': '$',\n 'PLN': 'zł',\n 'AFN': '؋',\n 'STN': 'Db',\n 'MDL': 'L',\n 'RON': 'lei',\n 'UAH': '₴',\n 'LKR': 'රු.',\n 'ALL': 'Lekë',\n 'RSD': 'дин.',\n 'TJS': 'смн',\n 'THB': '฿',\n 'TMT': 'm.',\n 'TRY': '₺',\n 'UZS': 'сўм',\n 'VND': '₫',\n 'TWD': 'NT$'\n};\n/**\n *\n * @param {string} currencyCode ?\n * @returns {string} ?\n */\nexport function getBlazorCurrencySymbol(currencyCode) {\n return getValue(currencyCode || '', blazorCurrencyData);\n}\n","/***\n * Hijri parser\n */\n// eslint-disable-next-line\nexport var HijriParser;\n(function (HijriParser) {\n var dateCorrection = [28607, 28636, 28665, 28695, 28724, 28754, 28783, 28813, 28843, 28872, 28901, 28931, 28960, 28990,\n 29019, 29049, 29078, 29108, 29137, 29167, 29196, 29226, 29255, 29285, 29315, 29345, 29375, 29404, 29434, 29463, 29492, 29522,\n 29551, 29580, 29610, 29640, 29669, 29699, 29729, 29759, 29788, 29818, 29847, 29876, 29906, 29935, 29964, 29994, 30023, 30053,\n 30082, 30112, 30141, 30171, 30200, 30230, 30259, 30289, 30318, 30348, 30378, 30408, 30437, 30467, 30496, 30526, 30555, 30585,\n 30614, 30644, 30673, 30703, 30732, 30762, 30791, 30821, 30850, 30880, 30909, 30939, 30968, 30998, 31027, 31057, 31086, 31116,\n 31145, 31175, 31204, 31234, 31263, 31293, 31322, 31352, 31381, 31411, 31441, 31471, 31500, 31530, 31559, 31589, 31618, 31648,\n 31676, 31706, 31736, 31766, 31795, 31825, 31854, 31884, 31913, 31943, 31972, 32002, 32031, 32061, 32090, 32120, 32150, 32180,\n 32209, 32239, 32268, 32298, 32327, 32357, 32386, 32416, 32445, 32475, 32504, 32534, 32563, 32593, 32622, 32652, 32681, 32711,\n 32740, 32770, 32799, 32829, 32858, 32888, 32917, 32947, 32976, 33006, 33035, 33065, 33094, 33124, 33153, 33183, 33213, 33243,\n 33272, 33302, 33331, 33361, 33390, 33420, 33450, 33479, 33509, 33539, 33568, 33598, 33627, 33657, 33686, 33716, 33745, 33775,\n 33804, 33834, 33863, 33893, 33922, 33952, 33981, 34011, 34040, 34069, 34099, 34128, 34158, 34187, 34217, 34247, 34277, 34306,\n 34336, 34365, 34395, 34424, 34454, 34483, 34512, 34542, 34571, 34601, 34631, 34660, 34690, 34719, 34749, 34778, 34808, 34837,\n 34867, 34896, 34926, 34955, 34985, 35015, 35044, 35074, 35103, 35133, 35162, 35192, 35222, 35251, 35280, 35310, 35340, 35370,\n 35399, 35429, 35458, 35488, 35517, 35547, 35576, 35605, 35635, 35665, 35694, 35723, 35753, 35782, 35811, 35841, 35871, 35901,\n 35930, 35960, 35989, 36019, 36048, 36078, 36107, 36136, 36166, 36195, 36225, 36254, 36284, 36314, 36343, 36373, 36403, 36433,\n 36462, 36492, 36521, 36551, 36580, 36610, 36639, 36669, 36698, 36728, 36757, 36786, 36816, 36845, 36875, 36904, 36934, 36963,\n 36993, 37022, 37052, 37081, 37111, 37141, 37170, 37200, 37229, 37259, 37288, 37318, 37347, 37377, 37406, 37436, 37465, 37495,\n 37524, 37554, 37584, 37613, 37643, 37672, 37701, 37731, 37760, 37790, 37819, 37849, 37878, 37908, 37938, 37967, 37997, 38027,\n 38056, 38085, 38115, 38144, 38174, 38203, 38233, 38262, 38292, 38322, 38351, 38381, 38410, 38440, 38469, 38499, 38528, 38558,\n 38587, 38617, 38646, 38676, 38705, 38735, 38764, 38794, 38823, 38853, 38882, 38912, 38941, 38971, 39001, 39030, 39059, 39089,\n 39118, 39148, 39178, 39208, 39237, 39267, 39297, 39326, 39355, 39385, 39414, 39444, 39473, 39503, 39532, 39562, 39592, 39621,\n 39650, 39680, 39709, 39739, 39768, 39798, 39827, 39857, 39886, 39916, 39946, 39975, 40005, 40035, 40064, 40094, 40123, 40153,\n 40182, 40212, 40241, 40271, 40300, 40330, 40359, 40389, 40418, 40448, 40477, 40507, 40536, 40566, 40595, 40625, 40655, 40685,\n 40714, 40744, 40773, 40803, 40832, 40862, 40892, 40921, 40951, 40980, 41009, 41039, 41068, 41098, 41127, 41157, 41186, 41216,\n 41245, 41275, 41304, 41334, 41364, 41393, 41422, 41452, 41481, 41511, 41540, 41570, 41599, 41629, 41658, 41688, 41718, 41748,\n 41777, 41807, 41836, 41865, 41894, 41924, 41953, 41983, 42012, 42042, 42072, 42102, 42131, 42161, 42190, 42220, 42249, 42279,\n 42308, 42337, 42367, 42397, 42426, 42456, 42485, 42515, 42545, 42574, 42604, 42633, 42662, 42692, 42721, 42751, 42780, 42810,\n 42839, 42869, 42899, 42929, 42958, 42988, 43017, 43046, 43076, 43105, 43135, 43164, 43194, 43223, 43253, 43283, 43312, 43342,\n 43371, 43401, 43430, 43460, 43489, 43519, 43548, 43578, 43607, 43637, 43666, 43696, 43726, 43755, 43785, 43814, 43844, 43873,\n 43903, 43932, 43962, 43991, 44021, 44050, 44080, 44109, 44139, 44169, 44198, 44228, 44258, 44287, 44317, 44346, 44375, 44405,\n 44434, 44464, 44493, 44523, 44553, 44582, 44612, 44641, 44671, 44700, 44730, 44759, 44788, 44818, 44847, 44877, 44906, 44936,\n 44966, 44996, 45025, 45055, 45084, 45114, 45143, 45172, 45202, 45231, 45261, 45290, 45320, 45350, 45380, 45409, 45439, 45468,\n 45498, 45527, 45556, 45586, 45615, 45644, 45674, 45704, 45733, 45763, 45793, 45823, 45852, 45882, 45911, 45940, 45970, 45999,\n 46028, 46058, 46088, 46117, 46147, 46177, 46206, 46236, 46265, 46295, 46324, 46354, 46383, 46413, 46442, 46472, 46501, 46531,\n 46560, 46590, 46620, 46649, 46679, 46708, 46738, 46767, 46797, 46826, 46856, 46885, 46915, 46944, 46974, 47003, 47033, 47063,\n 47092, 47122, 47151, 47181, 47210, 47240, 47269, 47298, 47328, 47357, 47387, 47417, 47446, 47476, 47506, 47535, 47565, 47594,\n 47624, 47653, 47682, 47712, 47741, 47771, 47800, 47830, 47860, 47890, 47919, 47949, 47978, 48008, 48037, 48066, 48096, 48125,\n 48155, 48184, 48214, 48244, 48273, 48303, 48333, 48362, 48392, 48421, 48450, 48480, 48509, 48538, 48568, 48598, 48627, 48657,\n 48687, 48717, 48746, 48776, 48805, 48834, 48864, 48893, 48922, 48952, 48982, 49011, 49041, 49071, 49100, 49130, 49160, 49189,\n 49218, 49248, 49277, 49306, 49336, 49365, 49395, 49425, 49455, 49484, 49514, 49543, 49573, 49602, 49632, 49661, 49690, 49720,\n 49749, 49779, 49809, 49838, 49868, 49898, 49927, 49957, 49986, 50016, 50045, 50075, 50104, 50133, 50163, 50192, 50222, 50252,\n 50281, 50311, 50340, 50370, 50400, 50429, 50459, 50488, 50518, 50547, 50576, 50606, 50635, 50665, 50694, 50724, 50754, 50784,\n 50813, 50843, 50872, 50902, 50931, 50960, 50990, 51019, 51049, 51078, 51108, 51138, 51167, 51197, 51227, 51256, 51286, 51315,\n 51345, 51374, 51403, 51433, 51462, 51492, 51522, 51552, 51582, 51611, 51641, 51670, 51699, 51729, 51758, 51787, 51816, 51846,\n 51876, 51906, 51936, 51965, 51995, 52025, 52054, 52083, 52113, 52142, 52171, 52200, 52230, 52260, 52290, 52319, 52349, 52379,\n 52408, 52438, 52467, 52497, 52526, 52555, 52585, 52614, 52644, 52673, 52703, 52733, 52762, 52792, 52822, 52851, 52881, 52910,\n 52939, 52969, 52998, 53028, 53057, 53087, 53116, 53146, 53176, 53205, 53235, 53264, 53294, 53324, 53353, 53383, 53412, 53441,\n 53471, 53500, 53530, 53559, 53589, 53619, 53648, 53678, 53708, 53737, 53767, 53796, 53825, 53855, 53884, 53913, 53943, 53973,\n 54003, 54032, 54062, 54092, 54121, 54151, 54180, 54209, 54239, 54268, 54297, 54327, 54357, 54387, 54416, 54446, 54476, 54505,\n 54535, 54564, 54593, 54623, 54652, 54681, 54711, 54741, 54770, 54800, 54830, 54859, 54889, 54919, 54948, 54977, 55007, 55036,\n 55066, 55095, 55125, 55154, 55184, 55213, 55243, 55273, 55302, 55332, 55361, 55391, 55420, 55450, 55479, 55508, 55538, 55567,\n 55597, 55627, 55657, 55686, 55716, 55745, 55775, 55804, 55834, 55863, 55892, 55922, 55951, 55981, 56011, 56040, 56070, 56100,\n 56129, 56159, 56188, 56218, 56247, 56276, 56306, 56335, 56365, 56394, 56424, 56454, 56483, 56513, 56543, 56572, 56601, 56631,\n 56660, 56690, 56719, 56749, 56778, 56808, 56837, 56867, 56897, 56926, 56956, 56985, 57015, 57044, 57074, 57103, 57133, 57162,\n 57192, 57221, 57251, 57280, 57310, 57340, 57369, 57399, 57429, 57458, 57487, 57517, 57546, 57576, 57605, 57634, 57664, 57694,\n 57723, 57753, 57783, 57813, 57842, 57871, 57901, 57930, 57959, 57989, 58018, 58048, 58077, 58107, 58137, 58167, 58196, 58226,\n 58255, 58285, 58314, 58343, 58373, 58402, 58432, 58461, 58491, 58521, 58551, 58580, 58610, 58639, 58669, 58698, 58727, 58757,\n 58786, 58816, 58845, 58875, 58905, 58934, 58964, 58994, 59023, 59053, 59082, 59111, 59141, 59170, 59200, 59229, 59259, 59288,\n 59318, 59348, 59377, 59407, 59436, 59466, 59495, 59525, 59554, 59584, 59613, 59643, 59672, 59702, 59731, 59761, 59791, 59820,\n 59850, 59879, 59909, 59939, 59968, 59997, 60027, 60056, 60086, 60115, 60145, 60174, 60204, 60234, 60264, 60293, 60323, 60352,\n 60381, 60411, 60440, 60469, 60499, 60528, 60558, 60588, 60618, 60648, 60677, 60707, 60736, 60765, 60795, 60824, 60853, 60883,\n 60912, 60942, 60972, 61002, 61031, 61061, 61090, 61120, 61149, 61179, 61208, 61237, 61267, 61296, 61326, 61356, 61385, 61415,\n 61445, 61474, 61504, 61533, 61563, 61592, 61621, 61651, 61680, 61710, 61739, 61769, 61799, 61828, 61858, 61888, 61917, 61947,\n 61976, 62006, 62035, 62064, 62094, 62123, 62153, 62182, 62212, 62242, 62271, 62301, 62331, 62360, 62390, 62419, 62448, 62478,\n 62507, 62537, 62566, 62596, 62625, 62655, 62685, 62715, 62744, 62774, 62803, 62832, 62862, 62891, 62921, 62950, 62980, 63009,\n 63039, 63069, 63099, 63128, 63157, 63187, 63216, 63246, 63275, 63305, 63334, 63363, 63393, 63423, 63453, 63482, 63512, 63541,\n 63571, 63600, 63630, 63659, 63689, 63718, 63747, 63777, 63807, 63836, 63866, 63895, 63925, 63955, 63984, 64014, 64043, 64073,\n 64102, 64131, 64161, 64190, 64220, 64249, 64279, 64309, 64339, 64368, 64398, 64427, 64457, 64486, 64515, 64545, 64574, 64603,\n 64633, 64663, 64692, 64722, 64752, 64782, 64811, 64841, 64870, 64899, 64929, 64958, 64987, 65017, 65047, 65076, 65106, 65136,\n 65166, 65195, 65225, 65254, 65283, 65313, 65342, 65371, 65401, 65431, 65460, 65490, 65520, 65549, 65579, 65608, 65638, 65667,\n 65697, 65726, 65755, 65785, 65815, 65844, 65874, 65903, 65933, 65963, 65992, 66022, 66051, 66081, 66110, 66140, 66169, 66199,\n 66228, 66258, 66287, 66317, 66346, 66376, 66405, 66435, 66465, 66494, 66524, 66553, 66583, 66612, 66641, 66671, 66700, 66730,\n 66760, 66789, 66819, 66849, 66878, 66908, 66937, 66967, 66996, 67025, 67055, 67084, 67114, 67143, 67173, 67203, 67233, 67262,\n 67292, 67321, 67351, 67380, 67409, 67439, 67468, 67497, 67527, 67557, 67587, 67617, 67646, 67676, 67705, 67735, 67764, 67793,\n 67823, 67852, 67882, 67911, 67941, 67971, 68000, 68030, 68060, 68089, 68119, 68148, 68177, 68207, 68236, 68266, 68295, 68325,\n 68354, 68384, 68414, 68443, 68473, 68502, 68532, 68561, 68591, 68620, 68650, 68679, 68708, 68738, 68768, 68797, 68827, 68857,\n 68886, 68916, 68946, 68975, 69004, 69034, 69063, 69092, 69122, 69152, 69181, 69211, 69240, 69270, 69300, 69330, 69359, 69388,\n 69418, 69447, 69476, 69506, 69535, 69565, 69595, 69624, 69654, 69684, 69713, 69743, 69772, 69802, 69831, 69861, 69890, 69919,\n 69949, 69978, 70008, 70038, 70067, 70097, 70126, 70156, 70186, 70215, 70245, 70274, 70303, 70333, 70362, 70392, 70421, 70451,\n 70481, 70510, 70540, 70570, 70599, 70629, 70658, 70687, 70717, 70746, 70776, 70805, 70835, 70864, 70894, 70924, 70954, 70983,\n 71013, 71042, 71071, 71101, 71130, 71159, 71189, 71218, 71248, 71278, 71308, 71337, 71367, 71397, 71426, 71455, 71485, 71514,\n 71543, 71573, 71602, 71632, 71662, 71691, 71721, 71751, 71781, 71810, 71839, 71869, 71898, 71927, 71957, 71986, 72016, 72046,\n 72075, 72105, 72135, 72164, 72194, 72223, 72253, 72282, 72311, 72341, 72370, 72400, 72429, 72459, 72489, 72518, 72548, 72577,\n 72607, 72637, 72666, 72695, 72725, 72754, 72784, 72813, 72843, 72872, 72902, 72931, 72961, 72991, 73020, 73050, 73080, 73109,\n 73139, 73168, 73197, 73227, 73256, 73286, 73315, 73345, 73375, 73404, 73434, 73464, 73493, 73523, 73552, 73581, 73611, 73640,\n 73669, 73699, 73729, 73758, 73788, 73818, 73848, 73877, 73907, 73936, 73965, 73995, 74024, 74053, 74083, 74113, 74142, 74172,\n 74202, 74231, 74261, 74291, 74320, 74349, 74379, 74408, 74437, 74467, 74497, 74526, 74556, 74586, 74615, 74645, 74675, 74704,\n 74733, 74763, 74792, 74822, 74851, 74881, 74910, 74940, 74969, 74999, 75029, 75058, 75088, 75117, 75147, 75176, 75206, 75235,\n 75264, 75294, 75323, 75353, 75383, 75412, 75442, 75472, 75501, 75531, 75560, 75590, 75619, 75648, 75678, 75707, 75737, 75766,\n 75796, 75826, 75856, 75885, 75915, 75944, 75974, 76003, 76032, 76062, 76091, 76121, 76150, 76180, 76210, 76239, 76269, 76299,\n 76328, 76358, 76387, 76416, 76446, 76475, 76505, 76534, 76564, 76593, 76623, 76653, 76682, 76712, 76741, 76771, 76801, 76830,\n 76859, 76889, 76918, 76948, 76977, 77007, 77036, 77066, 77096, 77125, 77155, 77185, 77214, 77243, 77273, 77302, 77332, 77361,\n 77390, 77420, 77450, 77479, 77509, 77539, 77569, 77598, 77627, 77657, 77686, 77715, 77745, 77774, 77804, 77833, 77863, 77893,\n 77923, 77952, 77982, 78011, 78041, 78070, 78099, 78129, 78158, 78188, 78217, 78247, 78277, 78307, 78336, 78366, 78395, 78425,\n 78454, 78483, 78513, 78542, 78572, 78601, 78631, 78661, 78690, 78720, 78750, 78779, 78808, 78838, 78867, 78897, 78926, 78956,\n 78985, 79015, 79044, 79074, 79104, 79133, 79163, 79192, 79222, 79251, 79281, 79310, 79340, 79369, 79399, 79428, 79458, 79487,\n 79517, 79546, 79576, 79606, 79635, 79665, 79695, 79724, 79753, 79783, 79812, 79841, 79871, 79900, 79930, 79960, 79990\n ];\n /**\n *\n * @param {Date} gDate ?\n * @returns {Object} ?\n */\n function getHijriDate(gDate) {\n var day = gDate.getDate();\n var month = gDate.getMonth();\n var year = gDate.getFullYear();\n var tMonth = month + 1;\n var tYear = year;\n if (tMonth < 3) {\n tYear -= 1;\n tMonth += 12;\n }\n var yPrefix = Math.floor(tYear / 100.);\n var julilanOffset = yPrefix - Math.floor(yPrefix / 4.) - 2;\n var julianNumber = Math.floor(365.25 * (tYear + 4716)) + Math.floor(30.6001 * (tMonth + 1)) + day - julilanOffset - 1524;\n yPrefix = Math.floor((julianNumber - 1867216.25) / 36524.25);\n julilanOffset = yPrefix - Math.floor(yPrefix / 4.) + 1;\n var b = julianNumber + julilanOffset + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var tempMonth = Math.floor((b - d) / 30.6001);\n day = (b - d) - Math.floor(30.6001 * tempMonth);\n month = Math.floor((b - d) / 20.6001);\n if (month > 13) {\n c += 1;\n month -= 12;\n }\n month -= 1;\n year = c - 4716;\n var modifiedJulianDate = julianNumber - 2400000;\n // date calculation for year after 2077\n var iyear = 10631. / 30.;\n var z = julianNumber - 1948084;\n var cyc = Math.floor(z / 10631.);\n z = z - 10631 * cyc;\n var j = Math.floor((z - 0.1335) / iyear);\n var iy = 30 * cyc + j;\n z = z - Math.floor(j * iyear + 0.1335);\n var im = Math.floor((z + 28.5001) / 29.5);\n /* istanbul ignore next */\n if (im === 13) {\n im = 12;\n }\n var tempDay = z - Math.floor(29.5001 * im - 29);\n var i = 0;\n for (; i < dateCorrection.length; i++) {\n if (dateCorrection[parseInt(i.toString(), 10)] > modifiedJulianDate) {\n break;\n }\n }\n var iln = i + 16260;\n var ii = Math.floor((iln - 1) / 12);\n var hYear = ii + 1;\n var hmonth = iln - 12 * ii;\n var hDate = modifiedJulianDate - dateCorrection[i - 1] + 1;\n if ((hDate + '').length > 2) {\n hDate = tempDay;\n hmonth = im;\n hYear = iy;\n }\n return { year: hYear, month: hmonth, date: hDate };\n }\n HijriParser.getHijriDate = getHijriDate;\n /**\n *\n * @param {number} year ?\n * @param {number} month ?\n * @param {number} day ?\n * @returns {Date} ?\n */\n function toGregorian(year, month, day) {\n var iy = year;\n var im = month;\n var id = day;\n var ii = iy - 1;\n var iln = (ii * 12) + 1 + (im - 1);\n var i = iln - 16260;\n var mcjdn = id + dateCorrection[i - 1] - 1;\n var julianDate = mcjdn + 2400000;\n var z = Math.floor(julianDate + 0.5);\n var a = Math.floor((z - 1867216.25) / 36524.25);\n a = z + 1 + a - Math.floor(a / 4);\n var b = a + 1524;\n var c = Math.floor((b - 122.1) / 365.25);\n var d = Math.floor(365.25 * c);\n var e = Math.floor((b - d) / 30.6001);\n var gDay = b - d - Math.floor(e * 30.6001);\n var gMonth = e - (e > 13.5 ? 13 : 1);\n var gYear = c - (gMonth > 2.5 ? 4716 : 4715);\n /* istanbul ignore next */\n if (gYear <= 0) {\n gMonth--;\n } // No year zero\n return new Date(gYear + '/' + (gMonth) + '/' + gDay);\n }\n HijriParser.toGregorian = toGregorian;\n})(HijriParser || (HijriParser = {}));\n","import { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nimport { isUndefined, throwError, getValue, isBlazor } from '../util';\nimport { HijriParser } from '../hijri-parser';\nimport { isNullOrUndefined, extend } from '../util';\nvar abbreviateRegexGlobal = /\\/MMMMM|MMMM|MMM|a|LLLL|LLL|EEEEE|EEEE|E|K|cccc|ccc|WW|W|G+|z+/gi;\nvar standalone = 'stand-alone';\nvar weekdayKey = ['sun', 'mon', 'tue', 'wed', 'thu', 'fri', 'sat'];\nexport var basicPatterns = ['short', 'medium', 'long', 'full'];\nvar timeSetter = {\n m: 'getMinutes',\n h: 'getHours',\n H: 'getHours',\n s: 'getSeconds',\n d: 'getDate',\n f: 'getMilliseconds'\n};\nexport var datePartMatcher = {\n 'M': 'month',\n 'd': 'day',\n 'E': 'weekday',\n 'c': 'weekday',\n 'y': 'year',\n 'm': 'minute',\n 'h': 'hour',\n 'H': 'hour',\n 's': 'second',\n 'L': 'month',\n 'a': 'designator',\n 'z': 'timeZone',\n 'Z': 'timeZone',\n 'G': 'era',\n 'f': 'milliseconds'\n};\nvar timeSeparator = 'timeSeparator';\n/* tslint:disable no-any */\n/**\n * Date Format is a framework provides support for date formatting.\n *\n * @private\n */\nvar DateFormat = /** @class */ (function () {\n function DateFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which date will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateFormat.dateFormat = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numObject = getValue('parserObject.numbers', dependable);\n var dateObject = dependable.dateObject;\n var formatOptions = { isIslamic: base.islamicRegex.test(option.calendar) };\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n formatOptions.dateSeperator = isBlazor() ? getValue('dateSeperator', dateObject) : base.getDateSeparator(dependable.dateObject);\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n if (isBlazor()) {\n resPattern = resPattern.replace(/tt/, 'a');\n }\n formatOptions.pattern = resPattern;\n formatOptions.numMapper = isBlazor() ?\n extend({}, numObject) : parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n var patternMatch = resPattern.match(abbreviateRegexGlobal) || [];\n for (var _i = 0, patternMatch_1 = patternMatch; _i < patternMatch_1.length; _i++) {\n var str = patternMatch_1[_i];\n var len = str.length;\n var char = str[0];\n if (char === 'K') {\n char = 'h';\n }\n switch (char) {\n case 'E':\n case 'c':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.weekday = getValue('days.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.weekday = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n break;\n case 'M':\n case 'L':\n if (isBlazor()) {\n // eslint-disable-next-line\n formatOptions.month = getValue('months.' + base.monthIndex[len], dateObject);\n }\n else {\n // eslint-disable-next-line\n formatOptions.month = dependable.dateObject[base.month][standalone][base.monthIndex[len]];\n }\n break;\n case 'a':\n formatOptions.designator = isBlazor() ?\n getValue('dayPeriods', dateObject) : getValue('dayPeriods.format.wide', dateObject);\n break;\n case 'G':\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n formatOptions.era = isBlazor() ? getValue('eras', dateObject) : getValue('eras.' + eText, dependable.dateObject);\n break;\n case 'z':\n formatOptions.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n break;\n }\n }\n }\n return function (value) {\n if (isNaN(value.getDate())) {\n return null;\n }\n return _this.intDateFormatter(value, formatOptions);\n };\n };\n /**\n * Returns formatted date string based on options passed.\n *\n * @param {Date} value ?\n * @param {FormatOptions} options ?\n * @returns {string} ?\n */\n DateFormat.intDateFormatter = function (value, options) {\n var pattern = options.pattern;\n var ret = '';\n var matches = pattern.match(base.dateParseRegex);\n var dObject = this.getCurrentDateValue(value, options.isIslamic);\n for (var _i = 0, matches_1 = matches; _i < matches_1.length; _i++) {\n var match = matches_1[_i];\n var length_1 = match.length;\n var char = match[0];\n if (char === 'K') {\n char = 'h';\n }\n var curval = void 0;\n var curvalstr = '';\n var isNumber = void 0;\n var processNumber = void 0;\n var curstr = '';\n switch (char) {\n case 'M':\n case 'L':\n curval = dObject.month;\n if (length_1 > 2) {\n // eslint-disable-next-line\n ret += options.month[curval];\n }\n else {\n isNumber = true;\n }\n break;\n case 'E':\n case 'c':\n // eslint-disable-next-line\n ret += options.weekday[weekdayKey[value.getDay()]];\n break;\n case 'H':\n case 'h':\n case 'm':\n case 's':\n case 'd':\n case 'f':\n isNumber = true;\n if (char === 'd') {\n curval = dObject.date;\n }\n else if (char === 'f') {\n isNumber = false;\n processNumber = true;\n // eslint-disable-next-line\n curvalstr = value[timeSetter[char]]().toString();\n curvalstr = curvalstr.substring(0, length_1);\n var curlength = curvalstr.length;\n if (length_1 !== curlength) {\n if (length_1 > 3) {\n continue;\n }\n for (var i = 0; i < length_1 - curlength; i++) {\n curvalstr = '0' + curvalstr.toString();\n }\n }\n curstr += curvalstr;\n }\n else {\n // eslint-disable-next-line\n curval = value[timeSetter[char]]();\n }\n if (char === 'h') {\n curval = curval % 12 || 12;\n }\n break;\n case 'y':\n processNumber = true;\n curstr += dObject.year;\n if (length_1 === 2) {\n curstr = curstr.substr(curstr.length - 2);\n }\n break;\n case 'a':\n // eslint-disable-next-line\n var desig = value.getHours() < 12 ? 'am' : 'pm';\n // eslint-disable-next-line\n ret += options.designator[desig];\n break;\n case 'G':\n // eslint-disable-next-line\n var dec = value.getFullYear() < 0 ? 0 : 1;\n // eslint-disable-next-line\n var retu = options.era[dec];\n if (isNullOrUndefined(retu)) {\n // eslint-disable-next-line\n retu = options.era[dec ? 0 : 1];\n }\n ret += retu || '';\n break;\n case '\\'':\n ret += (match === '\\'\\'') ? '\\'' : match.replace(/'/g, '');\n break;\n case 'z':\n // eslint-disable-next-line\n var timezone = value.getTimezoneOffset();\n // eslint-disable-next-line\n var pattern_1 = (length_1 < 4) ? '+H;-H' : options.timeZone.hourFormat;\n pattern_1 = pattern_1.replace(/:/g, options.numMapper.timeSeparator);\n if (timezone === 0) {\n ret += options.timeZone.gmtZeroFormat;\n }\n else {\n processNumber = true;\n curstr = this.getTimeZoneValue(timezone, pattern_1);\n }\n curstr = options.timeZone.gmtFormat.replace(/\\{0\\}/, curstr);\n break;\n case ':':\n // eslint-disable-next-line\n ret += options.numMapper.numberSymbols[timeSeparator];\n break;\n case '/':\n ret += options.dateSeperator;\n break;\n case 'W':\n isNumber = true;\n curval = base.getWeekOfYear(value);\n break;\n default:\n ret += match;\n }\n if (isNumber) {\n processNumber = true;\n curstr = this.checkTwodigitNumber(curval, length_1);\n }\n if (processNumber) {\n ret += parser.convertValueParts(curstr, base.latnParseRegex, options.numMapper.mapper);\n }\n }\n return ret;\n };\n DateFormat.getCurrentDateValue = function (value, isIslamic) {\n if (isIslamic) {\n return HijriParser.getHijriDate(value);\n }\n return { year: value.getFullYear(), month: value.getMonth() + 1, date: value.getDate() };\n };\n /**\n * Returns two digit numbers for given value and length\n *\n * @param {number} val ?\n * @param {number} len ?\n * @returns {string} ?\n */\n DateFormat.checkTwodigitNumber = function (val, len) {\n var ret = val + '';\n if (len === 2 && ret.length !== 2) {\n return '0' + ret;\n }\n return ret;\n };\n /**\n * Returns the value of the Time Zone.\n *\n * @param {number} tVal ?\n * @param {string} pattern ?\n * @returns {string} ?\n * @private\n */\n DateFormat.getTimeZoneValue = function (tVal, pattern) {\n var _this = this;\n var splt = pattern.split(';');\n var curPattern = splt[tVal > 0 ? 1 : 0];\n var no = Math.abs(tVal);\n return curPattern = curPattern.replace(/HH?|mm/g, function (str) {\n var len = str.length;\n var ishour = str.indexOf('H') !== -1;\n return _this.checkTwodigitNumber(Math.floor(ishour ? (no / 60) : (no % 60)), len);\n });\n };\n return DateFormat;\n}());\nexport { DateFormat };\n","import { isUndefined, throwError, isNullOrUndefined, extend, isBlazor, getValue } from '../util';\nimport { defaultCurrencyCode } from '../internationalization';\nimport { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nvar errorText = {\n 'ms': 'minimumSignificantDigits',\n 'ls': 'maximumSignificantDigits',\n 'mf': 'minimumFractionDigits',\n 'lf': 'maximumFractionDigits'\n};\nvar integerError = 'minimumIntegerDigits';\nvar percentSign = 'percentSign';\nvar minusSign = 'minusSign';\nvar spaceRegex = /\\s/;\nvar mapper = ['infinity', 'nan', 'group', 'decimal', 'exponential'];\nvar infinity = 'infinity';\nvar nan = 'nan';\n/**\n * Module for number formatting.\n *\n * @private\n */\nvar NumberFormat = /** @class */ (function () {\n function NumberFormat() {\n }\n /**\n * Returns the formatter function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will format.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberFormat.numberFormatter = function (culture, option, cldr) {\n var _this = this;\n var fOptions = extend({}, option);\n var cOptions = {};\n var dOptions = {};\n var symbolPattern;\n var dependable = base.getDependables(cldr, culture, '', true);\n var numObject = dependable.numericObject;\n dOptions.numberMapper = isBlazor() ? extend({}, numObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n dOptions.currencySymbol = isBlazor() ? getValue('currencySymbol', numObject) : base.getCurrencySymbol(dependable.numericObject, fOptions.currency || defaultCurrencyCode, option.altSymbol);\n /* eslint-disable @typescript-eslint/no-explicit-any */\n dOptions.percentSymbol = isBlazor() ? getValue('numberSymbols.percentSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + percentSign];\n dOptions.minusSymbol = isBlazor() ? getValue('numberSymbols.minusSign', numObject) :\n dOptions.numberMapper.numberSymbols[\"\" + minusSign];\n var symbols = dOptions.numberMapper.numberSymbols;\n if ((option.format) && !(base.formatRegex.test(option.format))) {\n cOptions = base.customFormat(option.format, dOptions, dependable.numericObject);\n }\n else {\n extend(fOptions, base.getProperNumericSkeleton(option.format || 'N'));\n fOptions.isCurrency = fOptions.type === 'currency';\n fOptions.isPercent = fOptions.type === 'percent';\n if (!isBlazor()) {\n symbolPattern = base.getSymbolPattern(fOptions.type, dOptions.numberMapper.numberSystem, dependable.numericObject, fOptions.isAccount);\n }\n fOptions.groupOne = this.checkValueRange(fOptions.maximumSignificantDigits, fOptions.minimumSignificantDigits, true);\n this.checkValueRange(fOptions.maximumFractionDigits, fOptions.minimumFractionDigits, false, true);\n if (!isUndefined(fOptions.fractionDigits)) {\n fOptions.minimumFractionDigits = fOptions.maximumFractionDigits = fOptions.fractionDigits;\n }\n if (isUndefined(fOptions.useGrouping)) {\n fOptions.useGrouping = true;\n }\n if (fOptions.isCurrency && !isBlazor()) {\n symbolPattern = symbolPattern.replace(/\\u00A4/g, base.defaultCurrency);\n }\n if (!isBlazor()) {\n var split = symbolPattern.split(';');\n cOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, dOptions.currencySymbol);\n cOptions.pData = base.getFormatData(split[0], false, dOptions.currencySymbol);\n if (fOptions.useGrouping) {\n fOptions.groupSeparator = symbols[mapper[2]];\n fOptions.groupData = this.getGroupingDetails(split[0]);\n }\n }\n else {\n cOptions.nData = extend({}, {}, getValue(fOptions.type + 'nData', numObject));\n cOptions.pData = extend({}, {}, getValue(fOptions.type + 'pData', numObject));\n if (fOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([cOptions.pData, cOptions.nData], dOptions.currencySymbol, option.currency);\n }\n }\n var minFrac = isUndefined(fOptions.minimumFractionDigits);\n if (minFrac) {\n fOptions.minimumFractionDigits = cOptions.nData.minimumFraction;\n }\n if (isUndefined(fOptions.maximumFractionDigits)) {\n var mval = cOptions.nData.maximumFraction;\n fOptions.maximumFractionDigits = isUndefined(mval) && fOptions.isPercent ? 0 : mval;\n }\n var mfrac = fOptions.minimumFractionDigits;\n var lfrac = fOptions.maximumFractionDigits;\n if (!isUndefined(mfrac) && !isUndefined(lfrac)) {\n if (mfrac > lfrac) {\n fOptions.maximumFractionDigits = mfrac;\n }\n }\n }\n extend(cOptions.nData, fOptions);\n extend(cOptions.pData, fOptions);\n return function (value) {\n if (isNaN(value)) {\n return symbols[mapper[1]];\n }\n else if (!isFinite(value)) {\n return symbols[mapper[0]];\n }\n return _this.intNumberFormatter(value, cOptions, dOptions, option);\n };\n };\n /**\n * Returns grouping details for the pattern provided\n *\n * @param {string} pattern ?\n * @returns {GroupDetails} ?\n */\n NumberFormat.getGroupingDetails = function (pattern) {\n var ret = {};\n var match = pattern.match(base.negativeDataRegex);\n if (match && match[4]) {\n var pattern_1 = match[4];\n var p = pattern_1.lastIndexOf(',');\n if (p !== -1) {\n var temp = pattern_1.split('.')[0];\n ret.primary = (temp.length - p) - 1;\n var s = pattern_1.lastIndexOf(',', p - 1);\n if (s !== -1) {\n ret.secondary = p - 1 - s;\n }\n }\n }\n return ret;\n };\n /**\n * Returns if the provided integer range is valid.\n *\n * @param {number} val1 ?\n * @param {number} val2 ?\n * @param {boolean} checkbothExist ?\n * @param {boolean} isFraction ?\n * @returns {boolean} ?\n */\n NumberFormat.checkValueRange = function (val1, val2, checkbothExist, isFraction) {\n var decide = isFraction ? 'f' : 's';\n var dint = 0;\n var str1 = errorText['l' + decide];\n // eslint-disable-next-line\n var str2 = errorText['m' + decide];\n if (!isUndefined(val1)) {\n this.checkRange(val1, str1, isFraction);\n dint++;\n }\n if (!isUndefined(val2)) {\n this.checkRange(val2, str2, isFraction);\n dint++;\n }\n if (dint === 2) {\n if (val1 < val2) {\n throwError(str2 + 'specified must be less than the' + str1);\n }\n else {\n return true;\n }\n }\n else if (checkbothExist && dint === 1) {\n throwError('Both' + str2 + 'and' + str2 + 'must be present');\n }\n return false;\n };\n /**\n * Check if the provided fraction range is valid\n *\n * @param {number} val ?\n * @param {string} text ?\n * @param {boolean} isFraction ?\n * @returns {void} ?\n */\n NumberFormat.checkRange = function (val, text, isFraction) {\n var range = isFraction ? [0, 20] : [1, 21];\n if (val < range[0] || val > range[1]) {\n throwError(text + 'value must be within the range' + range[0] + 'to' + range[1]);\n }\n };\n /**\n * Returns formatted numeric string for provided formatting options\n *\n * @param {number} value ?\n * @param {base.GenericFormatOptions} fOptions ?\n * @param {CommonOptions} dOptions ?\n * @returns {string} ?\n */\n NumberFormat.intNumberFormatter = function (value, fOptions, dOptions, option) {\n var curData;\n if (isUndefined(fOptions.nData.type)) {\n return undefined;\n }\n else {\n if (value < 0) {\n value = value * -1;\n curData = fOptions.nData;\n }\n else if (value === 0) {\n curData = fOptions.zeroData || fOptions.pData;\n }\n else {\n curData = fOptions.pData;\n }\n var fValue = '';\n if (curData.isPercent) {\n value = value * 100;\n }\n if (curData.groupOne) {\n fValue = this.processSignificantDigits(value, curData.minimumSignificantDigits, curData.maximumSignificantDigits);\n }\n else {\n fValue = this.processFraction(value, curData.minimumFractionDigits, curData.maximumFractionDigits, option);\n if (curData.minimumIntegerDigits) {\n fValue = this.processMinimumIntegers(fValue, curData.minimumIntegerDigits);\n }\n if (dOptions.isCustomFormat && curData.minimumFractionDigits < curData.maximumFractionDigits\n && /\\d+\\.\\d+/.test(fValue)) {\n var temp = fValue.split('.');\n var decimalPart = temp[1];\n var len = decimalPart.length;\n for (var i = len - 1; i >= 0; i--) {\n if (decimalPart[\"\" + i] === '0' && i >= curData.minimumFractionDigits) {\n decimalPart = decimalPart.slice(0, i);\n }\n else {\n break;\n }\n }\n fValue = temp[0] + '.' + decimalPart;\n }\n }\n if (curData.type === 'scientific') {\n fValue = value.toExponential(curData.maximumFractionDigits);\n fValue = fValue.replace('e', dOptions.numberMapper.numberSymbols[mapper[4]]);\n }\n fValue = fValue.replace('.', dOptions.numberMapper.numberSymbols[mapper[3]]);\n fValue = curData.format === \"#,###,,;(#,###,,)\" ? this.customPivotFormat(parseInt(fValue)) : fValue;\n if (curData.useGrouping) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n fValue = this.groupNumbers(fValue, curData.groupData.primary, curData.groupSeparator || ',', dOptions.numberMapper.numberSymbols[mapper[3]] || '.', curData.groupData.secondary);\n }\n fValue = parser.convertValueParts(fValue, base.latnParseRegex, dOptions.numberMapper.mapper);\n if (curData.nlead === 'N/A') {\n return curData.nlead;\n }\n else {\n if (fValue === '0' && option && option.format === '0') {\n return fValue + curData.nend;\n }\n return curData.nlead + fValue + curData.nend;\n }\n }\n };\n /**\n * Returns significant digits processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processSignificantDigits = function (value, min, max) {\n var temp = value + '';\n var tn;\n var length = temp.length;\n if (length < min) {\n return value.toPrecision(min);\n }\n else {\n temp = value.toPrecision(max);\n tn = +temp;\n return tn + '';\n }\n };\n /**\n * Returns grouped numeric string\n *\n * @param {string} val ?\n * @param {number} level1 ?\n * @param {string} sep ?\n * @param {string} decimalSymbol ?\n * @param {number} level2 ?\n * @returns {string} ?\n */\n NumberFormat.groupNumbers = function (val, level1, sep, decimalSymbol, level2) {\n var flag = !isNullOrUndefined(level2) && level2 !== 0;\n var split = val.split(decimalSymbol);\n var prefix = split[0];\n var length = prefix.length;\n var str = '';\n while (length > level1) {\n str = prefix.slice(length - level1, length) + (str.length ?\n (sep + str) : '');\n length -= level1;\n if (flag) {\n level1 = level2;\n flag = false;\n }\n }\n split[0] = prefix.slice(0, length) + (str.length ? sep : '') + str;\n return split.join(decimalSymbol);\n };\n /**\n * Returns fraction processed numeric string\n *\n * @param {number} value ?\n * @param {number} min ?\n * @param {number} max ?\n * @returns {string} ?\n */\n NumberFormat.processFraction = function (value, min, max, option) {\n var temp = (value + '').split('.')[1];\n var length = temp ? temp.length : 0;\n if (min && length < min) {\n var ret = '';\n if (length === 0) {\n ret = value.toFixed(min);\n }\n else {\n ret += value;\n for (var j = 0; j < min - length; j++) {\n ret += '0';\n }\n return ret;\n }\n return value.toFixed(min);\n }\n else if (!isNullOrUndefined(max) && (length > max || max === 0)) {\n return value.toFixed(max);\n }\n var str = value + '';\n if (str[0] === '0' && option && option.format === '###.00') {\n str = str.slice(1);\n }\n return str;\n };\n /**\n * Returns integer processed numeric string\n *\n * @param {string} value ?\n * @param {number} min ?\n * @returns {string} ?\n */\n NumberFormat.processMinimumIntegers = function (value, min) {\n var temp = value.split('.');\n var lead = temp[0];\n var len = lead.length;\n if (len < min) {\n for (var i = 0; i < min - len; i++) {\n lead = '0' + lead;\n }\n temp[0] = lead;\n }\n return temp.join('.');\n };\n /**\n * Returns custom format for pivot table\n *\n * @param {number} value ?\n */\n NumberFormat.customPivotFormat = function (value) {\n if (value >= 500000) {\n value /= 1000000;\n var _a = value.toString().split(\".\"), integer = _a[0], decimal = _a[1];\n return decimal && +decimal.substring(0, 1) >= 5\n ? Math.ceil(value).toString()\n : Math.floor(value).toString();\n }\n return \"\";\n };\n return NumberFormat;\n}());\nexport { NumberFormat };\n","import { IntlBase as base } from './intl-base';\nimport { ParserBase as parser } from './parser-base';\nimport { isUndefined, throwError, getValue, isNullOrUndefined, isBlazor } from '../util';\nimport { datePartMatcher } from './date-formatter';\nimport { HijriParser } from '../hijri-parser';\nvar standalone = 'stand-alone';\nvar latnRegex = /^[0-9]*$/;\nvar timeSetter = {\n minute: 'setMinutes',\n hour: 'setHours',\n second: 'setSeconds',\n day: 'setDate',\n month: 'setMonth',\n milliseconds: 'setMilliseconds'\n};\nvar month = 'months';\n/* tslint:disable no-any */\n/**\n * Date Parser.\n *\n * @private\n */\nvar DateParser = /** @class */ (function () {\n function DateParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {DateFormatOptions} option - Specific the format in which string date will be parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n DateParser.dateParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, option.calendar);\n var numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), false, isBlazor());\n var parseOptions = {};\n if (isBlazor() && option.isServerRendered) {\n option = base.compareBlazorDateFormats(option, culture);\n }\n var resPattern = option.format ||\n base.getResultantPattern(option.skeleton, dependable.dateObject, option.type, false, isBlazor() ? culture : '');\n var regexString = '';\n var hourOnly;\n if (isUndefined(resPattern)) {\n throwError('Format options or type given must be invalid');\n }\n else {\n resPattern = base.ConvertDateToWeekFormat(resPattern);\n parseOptions = { isIslamic: base.islamicRegex.test(option.calendar), pattern: resPattern, evalposition: {}, culture: culture };\n var patternMatch = resPattern.match(base.dateParseRegex) || [];\n var length_1 = patternMatch.length;\n var gmtCorrection = 0;\n var zCorrectTemp = 0;\n var isgmtTraversed = false;\n var nRegx = numOptions.numericRegex;\n // eslint-disable-next-line\n var numMapper = isBlazor() ? dependable.parserObject.numbers :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n for (var i = 0; i < length_1; i++) {\n var str = patternMatch[parseInt(i.toString(), 10)];\n var len = str.length;\n var char = (str[0] === 'K') ? 'h' : str[0];\n var isNumber = void 0;\n var canUpdate = void 0;\n // eslint-disable-next-line\n var charKey = datePartMatcher[char];\n var optional = (len === 2) ? '' : '?';\n if (isgmtTraversed) {\n gmtCorrection = zCorrectTemp;\n isgmtTraversed = false;\n }\n switch (char) {\n case 'E':\n case 'c':\n // eslint-disable-next-line\n var weekData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n weekData = getValue('days.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n weekData = dependable.dateObject[base.days][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n var weekObject = parser.reverseObject(weekData);\n // tslint:enable\n regexString += '(' + Object.keys(weekObject).join('|') + ')';\n break;\n case 'M':\n case 'L':\n case 'd':\n case 'm':\n case 's':\n case 'h':\n case 'H':\n case 'f':\n canUpdate = true;\n if ((char === 'M' || char === 'L') && len > 2) {\n var monthData = void 0;\n if (isBlazor()) {\n // eslint-disable-next-line\n monthData = getValue('months.' + base.monthIndex[len], dependable.dateObject);\n }\n else {\n // eslint-disable-next-line\n monthData = dependable.dateObject[month][standalone][base.monthIndex[len]];\n }\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(monthData);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n }\n else if (char === 'f') {\n if (len > 3) {\n continue;\n }\n isNumber = true;\n regexString += '(' + nRegx + nRegx + '?' + nRegx + '?' + ')';\n }\n else {\n isNumber = true;\n regexString += '(' + nRegx + nRegx + optional + ')';\n }\n if (char === 'h') {\n parseOptions.hour12 = true;\n }\n break;\n case 'W':\n // eslint-disable-next-line\n var opt = len === 1 ? '?' : '';\n regexString += '(' + nRegx + opt + nRegx + ')';\n break;\n case 'y':\n canUpdate = isNumber = true;\n if (len === 2) {\n regexString += '(' + nRegx + nRegx + ')';\n }\n else {\n regexString += '(' + nRegx + '{' + len + ',})';\n }\n break;\n case 'a':\n canUpdate = true;\n // eslint-disable-next-line\n var periodValur = isBlazor() ?\n getValue('dayPeriods', dependable.dateObject) :\n getValue('dayPeriods.format.wide', dependable.dateObject);\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(periodValur);\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + ')';\n break;\n case 'G':\n canUpdate = true;\n // eslint-disable-next-line\n var eText = (len <= 3) ? 'eraAbbr' : (len === 4) ? 'eraNames' : 'eraNarrow';\n // eslint-disable-next-line\n parseOptions[charKey] = parser.reverseObject(isBlazor() ?\n getValue('eras', dependable.dateObject) : getValue('eras.' + eText, dependable.dateObject));\n // eslint-disable-next-line\n regexString += '(' + Object.keys(parseOptions[charKey]).join('|') + '?)';\n break;\n case 'z':\n // eslint-disable-next-line\n var tval = new Date().getTimezoneOffset();\n canUpdate = (tval !== 0);\n // eslint-disable-next-line\n parseOptions[charKey] = getValue('dates.timeZoneNames', dependable.parserObject);\n // eslint-disable-next-line\n var tzone = parseOptions[charKey];\n hourOnly = (len < 4);\n // eslint-disable-next-line\n var hpattern = hourOnly ? '+H;-H' : tzone.hourFormat;\n hpattern = hpattern.replace(/:/g, numMapper.timeSeparator);\n regexString += '(' + this.parseTimeZoneRegx(hpattern, tzone, nRegx) + ')?';\n isgmtTraversed = true;\n zCorrectTemp = hourOnly ? 6 : 12;\n break;\n case '\\'':\n // eslint-disable-next-line\n var iString = str.replace(/'/g, '');\n regexString += '(' + iString + ')?';\n break;\n default:\n regexString += '([\\\\D])';\n break;\n }\n if (canUpdate) {\n parseOptions.evalposition[\"\" + charKey] = { isNumber: isNumber, pos: i + 1 + gmtCorrection, hourOnly: hourOnly };\n }\n if (i === length_1 - 1 && !isNullOrUndefined(regexString)) {\n var regExp = RegExp;\n parseOptions.parserRegex = new regExp('^' + regexString + '$', 'i');\n }\n }\n }\n return function (value) {\n var parsedDateParts = _this.internalDateParse(value, parseOptions, numOptions);\n if (isNullOrUndefined(parsedDateParts) || !Object.keys(parsedDateParts).length) {\n return null;\n }\n if (parseOptions.isIslamic) {\n var dobj = {};\n var tYear = parsedDateParts.year;\n var tDate = parsedDateParts.day;\n var tMonth = parsedDateParts.month;\n var ystrig = tYear ? (tYear + '') : '';\n var is2DigitYear = (ystrig.length === 2);\n if (!tYear || !tMonth || !tDate || is2DigitYear) {\n dobj = HijriParser.getHijriDate(new Date());\n }\n if (is2DigitYear) {\n tYear = parseInt((dobj.year + '').slice(0, 2) + ystrig, 10);\n }\n // tslint:disable-next-line\n var dateObject = HijriParser.toGregorian(tYear || dobj.year, tMonth || dobj.month, tDate || dobj.date);\n parsedDateParts.year = dateObject.getFullYear();\n parsedDateParts.month = dateObject.getMonth() + 1;\n parsedDateParts.day = dateObject.getDate();\n }\n return _this.getDateObject(parsedDateParts);\n };\n };\n /* tslint:disable */\n /**\n * Returns date object for provided date options\n *\n * @param {DateParts} options ?\n * @param {Date} value ?\n * @returns {Date} ?\n */\n DateParser.getDateObject = function (options, value) {\n var res = value || new Date();\n res.setMilliseconds(0);\n var tKeys = ['hour', 'minute', 'second', 'milliseconds', 'month', 'day'];\n var y = options.year;\n var desig = options.designator;\n var tzone = options.timeZone;\n if (!isUndefined(y)) {\n var len = (y + '').length;\n if (len <= 2) {\n var century = Math.floor(res.getFullYear() / 100) * 100;\n y += century;\n }\n res.setFullYear(y);\n }\n for (var _i = 0, tKeys_1 = tKeys; _i < tKeys_1.length; _i++) {\n var key = tKeys_1[_i];\n // eslint-disable-next-line\n var tValue = options[key];\n if (isUndefined(tValue) && key === 'day') {\n res.setDate(1);\n }\n if (!isUndefined(tValue)) {\n if (key === 'month') {\n tValue -= 1;\n if (tValue < 0 || tValue > 11) {\n return new Date('invalid');\n }\n var pDate = res.getDate();\n res.setDate(1);\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n var lDate = new Date(res.getFullYear(), tValue + 1, 0).getDate();\n res.setDate(pDate < lDate ? pDate : lDate);\n }\n else {\n if (key === 'day') {\n var lastDay = new Date(res.getFullYear(), res.getMonth() + 1, 0).getDate();\n if ((tValue < 1 || tValue > lastDay)) {\n return null;\n }\n }\n // eslint-disable-next-line\n res[timeSetter[key]](tValue);\n }\n }\n }\n if (!isUndefined(desig)) {\n var hour = res.getHours();\n if (desig === 'pm') {\n res.setHours(hour + (hour === 12 ? 0 : 12));\n }\n else if (hour === 12) {\n res.setHours(0);\n }\n }\n if (!isUndefined(tzone)) {\n var tzValue = tzone - res.getTimezoneOffset();\n if (tzValue !== 0) {\n res.setMinutes(res.getMinutes() + tzValue);\n }\n }\n return res;\n };\n /**\n * Returns date parsing options for provided value along with parse and numeric options\n *\n * @param {string} value ?\n * @param {ParseOptions} parseOptions ?\n * @param {NumericOptions} num ?\n * @returns {DateParts} ?\n */\n DateParser.internalDateParse = function (value, parseOptions, num) {\n var matches = value.match(parseOptions.parserRegex);\n var retOptions = { 'hour': 0, 'minute': 0, 'second': 0 };\n if (isNullOrUndefined(matches)) {\n return null;\n }\n else {\n var props = Object.keys(parseOptions.evalposition);\n for (var _i = 0, props_1 = props; _i < props_1.length; _i++) {\n var prop = props_1[_i];\n var curObject = parseOptions.evalposition[\"\" + prop];\n var matchString = matches[curObject.pos];\n if (curObject.isNumber) {\n // eslint-disable-next-line\n retOptions[prop] = this.internalNumberParser(matchString, num);\n }\n else {\n if (prop === 'timeZone' && !isUndefined(matchString)) {\n var pos = curObject.pos;\n var val = void 0;\n var tmatch = matches[pos + 1];\n var flag = !isUndefined(tmatch);\n if (curObject.hourOnly) {\n val = this.getZoneValue(flag, tmatch, matches[pos + 4], num) * 60;\n }\n else {\n val = this.getZoneValue(flag, tmatch, matches[pos + 7], num) * 60;\n val += this.getZoneValue(flag, matches[pos + 4], matches[pos + 10], num);\n }\n if (!isNullOrUndefined(val)) {\n retOptions[\"\" + prop] = val;\n }\n }\n else {\n // eslint-disable-next-line\n matchString = ((prop === 'month') && (!parseOptions.isIslamic) && (parseOptions.culture === 'en' || parseOptions.culture === 'en-GB' || parseOptions.culture === 'en-US'))\n ? matchString[0].toUpperCase() + matchString.substring(1).toLowerCase() : matchString;\n matchString = ((prop !== 'month') && (prop === 'designator') && parseOptions.culture === 'en-GB') ? matchString.toLowerCase() : matchString;\n // eslint-disable-next-line\n retOptions[prop] = parseOptions[prop][matchString];\n }\n }\n }\n if (parseOptions.hour12) {\n retOptions.hour12 = true;\n }\n }\n return retOptions;\n };\n /**\n * Returns parsed number for provided Numeric string and Numeric Options\n *\n * @param {string} value ?\n * @param {NumericOptions} option ?\n * @returns {number} ?\n */\n DateParser.internalNumberParser = function (value, option) {\n value = parser.convertValueParts(value, option.numberParseRegex, option.numericPair);\n if (latnRegex.test(value)) {\n return +value;\n }\n return null;\n };\n /**\n * Returns parsed time zone RegExp for provided hour format and time zone\n *\n * @param {string} hourFormat ?\n * @param {base.TimeZoneOptions} tZone ?\n * @param {string} nRegex ?\n * @returns {string} ?\n */\n DateParser.parseTimeZoneRegx = function (hourFormat, tZone, nRegex) {\n var pattern = tZone.gmtFormat;\n var ret;\n var cRegex = '(' + nRegex + ')' + '(' + nRegex + ')';\n var splitStr;\n ret = hourFormat.replace('+', '\\\\+');\n if (hourFormat.indexOf('HH') !== -1) {\n ret = ret.replace(/HH|mm/g, '(' + cRegex + ')');\n }\n else {\n ret = ret.replace(/H|m/g, '(' + cRegex + '?)');\n }\n // eslint-disable-next-line\n splitStr = (ret.split(';').map(function (str) {\n return pattern.replace('{0}', str);\n }));\n ret = splitStr.join('|') + '|' + tZone.gmtZeroFormat;\n return ret;\n };\n /**\n * Returns zone based value.\n *\n * @param {boolean} flag ?\n * @param {string} val1 ?\n * @param {string} val2 ?\n * @param {NumericOptions} num ?\n * @returns {number} ?\n */\n DateParser.getZoneValue = function (flag, val1, val2, num) {\n var ival = flag ? val1 : val2;\n if (!ival) {\n return 0;\n }\n var value = this.internalNumberParser(ival, num);\n if (flag) {\n return -value;\n }\n return value;\n };\n return DateParser;\n}());\nexport { DateParser };\n","import { extend, isNullOrUndefined, isBlazor, getValue } from '../util';\nimport { ParserBase as parser } from './parser-base';\nimport { IntlBase as base } from './intl-base';\nvar regExp = RegExp;\nvar parseRegex = new regExp('^([^0-9]*)' + '(([0-9,]*[0-9]+)(\\.[0-9]+)?)' + '([Ee][+-]?[0-9]+)?([^0-9]*)$');\nvar groupRegex = /,/g;\nvar keys = ['minusSign', 'infinity'];\n/**\n * Module for Number Parser.\n *\n * @private\n */\nvar NumberParser = /** @class */ (function () {\n function NumberParser() {\n }\n /**\n * Returns the parser function for given skeleton.\n *\n * @param {string} culture - Specifies the culture name to be which formatting.\n * @param {NumberFormatOptions} option - Specific the format in which number will parsed.\n * @param {Object} cldr - Specifies the global cldr data collection.\n * @returns {Function} ?\n */\n NumberParser.numberParser = function (culture, option, cldr) {\n var _this = this;\n var dependable = base.getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numOptions;\n if ((base.formatRegex.test(option.format)) || !(option.format)) {\n extend(parseOptions, base.getProperNumericSkeleton(option.format || 'N'));\n parseOptions.custom = false;\n if (!parseOptions.fractionDigits) {\n if (option.maximumFractionDigits) {\n parseOptions.maximumFractionDigits = option.maximumFractionDigits;\n }\n }\n }\n else {\n extend(parseOptions, base.customFormat(option.format, null, null));\n }\n var numbers = getValue('numbers', dependable.parserObject);\n // eslint-disable-next-line\n numOptions = parser.getCurrentNumericOptions(dependable.parserObject, parser.getNumberingSystem(cldr), true, isBlazor());\n parseOptions.symbolRegex = parser.getSymbolRegex(Object.keys(numOptions.symbolMatch));\n // eslint-disable-next-line\n parseOptions.infinity = numOptions.symbolNumberSystem[keys[1]];\n var symbolpattern;\n if (!isBlazor()) {\n symbolpattern = base.getSymbolPattern(parseOptions.type, numOptions.numberSystem, dependable.numericObject, parseOptions.isAccount);\n if (symbolpattern) {\n symbolpattern = symbolpattern.replace(/\\u00A4/g, base.defaultCurrency);\n var split = symbolpattern.split(';');\n parseOptions.nData = base.getFormatData(split[1] || '-' + split[0], true, '');\n parseOptions.pData = base.getFormatData(split[0], true, '');\n }\n }\n else {\n parseOptions.nData = extend({}, {}, getValue(parseOptions.type + 'nData', numbers));\n parseOptions.pData = extend({}, {}, getValue(parseOptions.type + 'pData', numbers));\n if (parseOptions.type === 'currency' && option.currency) {\n base.replaceBlazorCurrency([parseOptions.pData, parseOptions.nData], getValue('currencySymbol', numbers), option.currency);\n }\n }\n return function (value) {\n return _this.getParsedNumber(value, parseOptions, numOptions);\n };\n };\n /**\n * Returns parsed number for the provided formatting options\n *\n * @param {string} value ?\n * @param {NumericParts} options ?\n * @param {NumericOptions} numOptions ?\n * @returns {number} ?\n */\n NumberParser.getParsedNumber = function (value, options, numOptions) {\n var isNegative;\n var isPercent;\n var tempValue;\n var lead;\n var end;\n var ret;\n if (value.indexOf(options.infinity) !== -1) {\n return Infinity;\n }\n else {\n value = parser.convertValueParts(value, options.symbolRegex, numOptions.symbolMatch);\n value = parser.convertValueParts(value, numOptions.numberParseRegex, numOptions.numericPair);\n value = value.indexOf('-') !== -1 ? value.replace('-.', '-0.') : value;\n if (value.indexOf('.') === 0) {\n value = '0' + value;\n }\n var matches = value.match(parseRegex);\n if (isNullOrUndefined(matches)) {\n return NaN;\n }\n lead = matches[1];\n tempValue = matches[2];\n var exponent = matches[5];\n end = matches[6];\n isNegative = options.custom ? ((lead === options.nData.nlead) && (end === options.nData.nend)) :\n ((lead.indexOf(options.nData.nlead) !== -1) && (end.indexOf(options.nData.nend) !== -1));\n isPercent = isNegative ?\n options.nData.isPercent :\n options.pData.isPercent;\n tempValue = tempValue.replace(groupRegex, '');\n if (exponent) {\n tempValue += exponent;\n }\n ret = +tempValue;\n if (options.type === 'percent' || isPercent) {\n ret = ret / 100;\n }\n if (options.custom || options.fractionDigits) {\n ret = parseFloat(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.fractionDigits));\n }\n if (options.maximumFractionDigits) {\n ret = this.convertMaxFracDigits(tempValue, options, ret, isNegative);\n }\n if (isNegative) {\n ret *= -1;\n }\n return ret;\n }\n };\n NumberParser.convertMaxFracDigits = function (value, options, ret, isNegative) {\n var decimalSplitValue = value.split('.');\n if (decimalSplitValue[1] && decimalSplitValue[1].length > options.maximumFractionDigits) {\n ret = +(ret.toFixed(options.custom ?\n (isNegative ? options.nData.maximumFractionDigits : options.pData.maximumFractionDigits) : options.maximumFractionDigits));\n }\n return ret;\n };\n return NumberParser;\n}());\nexport { NumberParser };\n","import { isNullOrUndefined, getValue, extend, isBlazor } from './util';\nvar Observer = /** @class */ (function () {\n function Observer(context) {\n this.ranArray = [];\n this.boundedEvents = {};\n if (isNullOrUndefined(context)) {\n return;\n }\n this.context = context;\n }\n /**\n * To attach handler for given property in current context.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Specifies the handler function to be called while event notified.\n * @param {Object} context - Specifies the context binded to the handler.\n * @param {string} id - specifies the random generated id.\n * @returns {void}\n */\n Observer.prototype.on = function (property, handler, context, id) {\n if (isNullOrUndefined(handler)) {\n return;\n }\n var cntxt = context || this.context;\n if (this.notExist(property)) {\n this.boundedEvents[\"\" + property] = [{ handler: handler, context: cntxt, id: id }];\n return;\n }\n if (!isNullOrUndefined(id)) {\n if (this.ranArray.indexOf(id) === -1) {\n this.ranArray.push(id);\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt, id: id });\n }\n }\n else if (!this.isHandlerPresent(this.boundedEvents[\"\" + property], handler)) {\n this.boundedEvents[\"\" + property].push({ handler: handler, context: cntxt });\n }\n };\n /**\n * To remove handlers from a event attached using on() function.\n *\n * @param {string} property - specifies the name of the event.\n * @param {Function} handler - Optional argument specifies the handler function to be called while event notified.\n * @param {string} id - specifies the random generated id.\n * @returns {void} ?\n */\n Observer.prototype.off = function (property, handler, id) {\n if (this.notExist(property)) {\n return;\n }\n var curObject = getValue(property, this.boundedEvents);\n if (handler) {\n for (var i = 0; i < curObject.length; i++) {\n if (id) {\n if (curObject[parseInt(i.toString(), 10)].id === id) {\n curObject.splice(i, 1);\n var indexLocation = this.ranArray.indexOf(id);\n if (indexLocation !== -1) {\n this.ranArray.splice(indexLocation, 1);\n }\n break;\n }\n }\n else if (handler === curObject[parseInt(i.toString(), 10)].handler) {\n curObject.splice(i, 1);\n break;\n }\n }\n }\n else {\n delete this.boundedEvents[\"\" + property];\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it was failure to call.\n * @returns {void} ?\n */\n Observer.prototype.notify = function (property, argument, successHandler, errorHandler) {\n if (this.notExist(property)) {\n if (successHandler) {\n successHandler.call(this, argument);\n }\n return;\n }\n if (argument) {\n argument.name = property;\n }\n var blazor = 'Blazor';\n var curObject = getValue(property, this.boundedEvents).slice(0);\n if (window[\"\" + blazor]) {\n return this.blazorCallback(curObject, argument, successHandler, errorHandler, 0);\n }\n else {\n for (var _i = 0, curObject_1 = curObject; _i < curObject_1.length; _i++) {\n var cur = curObject_1[_i];\n cur.handler.call(cur.context, argument);\n }\n if (successHandler) {\n successHandler.call(this, argument);\n }\n }\n };\n Observer.prototype.blazorCallback = function (objs, argument, successHandler, errorHandler, index) {\n var _this = this;\n var isTrigger = index === objs.length - 1;\n if (index < objs.length) {\n var obj_1 = objs[parseInt(index.toString(), 10)];\n var promise = obj_1.handler.call(obj_1.context, argument);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n return promise;\n }\n promise.then(function (data) {\n data = typeof data === 'string' && _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data;\n extend(argument, argument, data, true);\n if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return _this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }).catch(function (data) {\n if (errorHandler) {\n errorHandler.call(obj_1.context, typeof data === 'string' &&\n _this.isJson(data) ? JSON.parse(data, _this.dateReviver) : data);\n }\n });\n }\n else if (successHandler && isTrigger) {\n successHandler.call(obj_1.context, argument);\n }\n else {\n return this.blazorCallback(objs, argument, successHandler, errorHandler, index + 1);\n }\n }\n };\n // eslint-disable-next-line\n Observer.prototype.dateReviver = function (key, value) {\n var dPattern = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}/;\n if (isBlazor && typeof value === 'string' && value.match(dPattern) !== null) {\n return (new Date(value));\n }\n return (value);\n };\n Observer.prototype.isJson = function (value) {\n try {\n JSON.parse(value);\n }\n catch (e) {\n return false;\n }\n return true;\n };\n /**\n * To destroy handlers in the event\n *\n * @returns {void} ?\n */\n Observer.prototype.destroy = function () {\n this.boundedEvents = this.context = undefined;\n };\n /**\n * To remove internationalization events\n *\n * @returns {void} ?\n */\n Observer.prototype.offIntlEvents = function () {\n var eventsArr = this.boundedEvents['notifyExternalChange'];\n if (eventsArr) {\n for (var i = 0; i < eventsArr.length; i++) {\n var curContext = eventsArr[0].context;\n if (curContext && curContext.detectFunction && curContext.randomId && !curContext.isRendered) {\n this.off('notifyExternalChange', curContext.detectFunction, curContext.randomId);\n i--;\n }\n }\n if (!this.boundedEvents['notifyExternalChange'].length) {\n delete this.boundedEvents['notifyExternalChange'];\n }\n }\n };\n /**\n * Returns if the property exists.\n *\n * @param {string} prop ?\n * @returns {boolean} ?\n */\n Observer.prototype.notExist = function (prop) {\n // eslint-disable-next-line\n return this.boundedEvents.hasOwnProperty(prop) === false || this.boundedEvents[prop].length <= 0;\n };\n /**\n * Returns if the handler is present.\n *\n * @param {BoundOptions[]} boundedEvents ?\n * @param {Function} handler ?\n * @returns {boolean} ?\n */\n Observer.prototype.isHandlerPresent = function (boundedEvents, handler) {\n for (var _i = 0, boundedEvents_1 = boundedEvents; _i < boundedEvents_1.length; _i++) {\n var cur = boundedEvents_1[_i];\n if (cur.handler === handler) {\n return true;\n }\n }\n return false;\n };\n return Observer;\n}());\nexport { Observer };\n","import { DateFormat } from './intl/date-formatter';\nimport { NumberFormat } from './intl/number-formatter';\nimport { DateParser } from './intl/date-parser';\nimport { NumberParser } from './intl/number-parser';\nimport { IntlBase } from './intl/intl-base';\nimport { extend, getValue, isBlazor } from './util';\nimport { Observer } from './observer';\n/**\n * Specifies the observer used for external change detection.\n */\nexport var onIntlChange = new Observer();\n/**\n * Specifies the default rtl status for EJ2 components.\n */\nexport var rightToLeft = false;\n/**\n * Specifies the CLDR data loaded for internationalization functionalities.\n *\n * @private\n */\nexport var cldrData = {};\n/**\n * Specifies the default culture value to be considered.\n *\n * @private\n */\nexport var defaultCulture = 'en-US';\n/**\n * Specifies default currency code to be considered\n *\n * @private\n */\nexport var defaultCurrencyCode = 'USD';\nvar mapper = ['numericObject', 'dateObject'];\n/**\n * Internationalization class provides support to parse and format the number and date object to the desired format.\n * ```typescript\n * // To set the culture globally\n * setCulture('en-GB');\n *\n * // To set currency code globally\n * setCurrencyCode('EUR');\n *\n * //Load cldr data\n * loadCldr(gregorainData);\n * loadCldr(timeZoneData);\n * loadCldr(numbersData);\n * loadCldr(numberSystemData);\n *\n * // To use formatter in component side\n * let Intl:Internationalization = new Internationalization();\n *\n * // Date formatting\n * let dateFormatter: Function = Intl.getDateFormat({skeleton:'long',type:'dateTime'});\n * dateFormatter(new Date('11/2/2016'));\n * dateFormatter(new Date('25/2/2030'));\n * Intl.formatDate(new Date(),{skeleton:'E'});\n *\n * //Number formatting\n * let numberFormatter: Function = Intl.getNumberFormat({skeleton:'C5'})\n * numberFormatter(24563334);\n * Intl.formatNumber(123123,{skeleton:'p2'});\n *\n * // Date parser\n * let dateParser: Function = Intl.getDateParser({skeleton:'short',type:'time'});\n * dateParser('10:30 PM');\n * Intl.parseDate('10',{skeleton:'H'});\n * ```\n */\nvar Internationalization = /** @class */ (function () {\n function Internationalization(cultureName) {\n if (cultureName) {\n this.culture = cultureName;\n }\n }\n /**\n * Returns the format function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateFormat = function (options) {\n return DateFormat.dateFormat(this.getCulture(), options || { type: 'date', skeleton: 'short' }, cldrData);\n };\n /**\n * Returns the format function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the format function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberFormat = function (options) {\n if (options && !options.currency) {\n options.currency = defaultCurrencyCode;\n }\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberFormat.numberFormatter(this.getCulture(), options || {}, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {DateFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getDateParser = function (options) {\n return DateParser.dateParser(this.getCulture(), options || { skeleton: 'short', type: 'date' }, cldrData);\n };\n /**\n * Returns the parser function for given options.\n *\n * @param {NumberFormatOptions} options - Specifies the format options in which the parser function will return.\n * @returns {Function} ?\n */\n Internationalization.prototype.getNumberParser = function (options) {\n if (isBlazor() && options && !options.format) {\n options.minimumFractionDigits = 0;\n }\n return NumberParser.numberParser(this.getCulture(), options || { format: 'N' }, cldrData);\n };\n /**\n * Returns the formatted string based on format options.\n *\n * @param {number} value - Specifies the number to format.\n * @param {NumberFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatNumber = function (value, option) {\n return this.getNumberFormat(option)(value);\n };\n /**\n * Returns the formatted date string based on format options.\n *\n * @param {Date} value - Specifies the number to format.\n * @param {DateFormatOptions} option - Specifies the format options in which the number will be formatted.\n * @returns {string} ?\n */\n Internationalization.prototype.formatDate = function (value, option) {\n return this.getDateFormat(option)(value);\n };\n /**\n * Returns the date object for given date string and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {DateFormatOptions} option - Specifies the parse options in which the date string will be parsed.\n * @returns {Date} ?\n */\n Internationalization.prototype.parseDate = function (value, option) {\n return this.getDateParser(option)(value);\n };\n /**\n * Returns the number object from the given string value and options.\n *\n * @param {string} value - Specifies the string to parse.\n * @param {NumberFormatOptions} option - Specifies the parse options in which the string number will be parsed.\n * @returns {number} ?\n */\n Internationalization.prototype.parseNumber = function (value, option) {\n return this.getNumberParser(option)(value);\n };\n /**\n * Returns Native Date Time Pattern\n *\n * @param {DateFormatOptions} option - Specifies the parse options for resultant date time pattern.\n * @param {boolean} isExcelFormat - Specifies format value to be converted to excel pattern.\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getDatePattern = function (option, isExcelFormat) {\n return IntlBase.getActualDateTimeFormat(this.getCulture(), option, cldrData, isExcelFormat);\n };\n /**\n * Returns Native Number Pattern\n *\n * @param {NumberFormatOptions} option - Specifies the parse options for resultant number pattern.\n * @param {boolean} isExcel ?\n * @returns {string} ?\n * @private\n */\n Internationalization.prototype.getNumberPattern = function (option, isExcel) {\n return IntlBase.getActualNumberFormat(this.getCulture(), option, cldrData, isExcel);\n };\n /**\n * Returns the First Day of the Week\n *\n * @returns {number} ?\n */\n Internationalization.prototype.getFirstDayOfWeek = function () {\n return IntlBase.getWeekData(this.getCulture(), cldrData);\n };\n /**\n * Returns the culture\n *\n * @returns {string} ?\n */\n Internationalization.prototype.getCulture = function () {\n return this.culture || defaultCulture;\n };\n return Internationalization;\n}());\nexport { Internationalization };\n/**\n * Set the default culture to all EJ2 components\n *\n * @param {string} cultureName - Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCulture(cultureName) {\n defaultCulture = cultureName;\n onIntlChange.notify('notifyExternalChange', { 'locale': defaultCulture });\n}\n/**\n * Set the default currency code to all EJ2 components\n *\n * @param {string} currencyCode Specifies the culture name to be set as default culture.\n * @returns {void} ?\n */\nexport function setCurrencyCode(currencyCode) {\n defaultCurrencyCode = currencyCode;\n onIntlChange.notify('notifyExternalChange', { 'currencyCode': defaultCurrencyCode });\n}\n/**\n * Load the CLDR data into context\n *\n * @param {Object[]} data Specifies the CLDR data's to be used for formatting and parser.\n * @returns {void} ?\n */\nexport function loadCldr() {\n var data = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n data[_i] = arguments[_i];\n }\n for (var _a = 0, data_1 = data; _a < data_1.length; _a++) {\n var obj = data_1[_a];\n extend(cldrData, obj, {}, true);\n }\n}\n/**\n * To enable or disable RTL functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable rtl option.\n * @returns {void} ?\n */\nexport function enableRtl(status) {\n if (status === void 0) { status = true; }\n rightToLeft = status;\n onIntlChange.notify('notifyExternalChange', { enableRtl: rightToLeft });\n}\n/**\n * To get the numeric CLDR object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} type ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getNumericObject(locale, type) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true)[mapper[0]];\n // eslint-disable-next-line\n var dateObject = IntlBase.getDependables(cldrData, locale, '')[mapper[1]];\n var numSystem = getValue('defaultNumberingSystem', numObject);\n var symbPattern = isBlazor() ? getValue('numberSymbols', numObject) : getValue('symbols-numberSystem-' + numSystem, numObject);\n var pattern = IntlBase.getSymbolPattern(type || 'decimal', numSystem, numObject, false);\n return extend(symbPattern, IntlBase.getFormatData(pattern, true, '', true), { 'dateSeparator': IntlBase.getDateSeparator(dateObject) });\n}\n/**\n * To get the numeric CLDR number base object for given culture\n *\n * @param {string} locale - Specifies the locale for which numericObject to be returned.\n * @param {string} currency - Specifies the currency for which numericObject to be returned.\n * @returns {string} ?\n * @ignore\n * @private\n */\nexport function getNumberDependable(locale, currency) {\n // eslint-disable-next-line\n var numObject = IntlBase.getDependables(cldrData, locale, '', true);\n // eslint-disable-next-line\n return IntlBase.getCurrencySymbol(numObject.numericObject, currency);\n}\n/**\n * To get the default date CLDR object.\n *\n * @param {string} mode ?\n * @returns {Object} ?\n * @ignore\n * @private\n */\nexport function getDefaultDateObject(mode) {\n // eslint-disable-next-line\n return IntlBase.getDependables(cldrData, '', mode, false)[mapper[1]];\n}\n","import { defaultCurrencyCode } from '../internationalization';\nimport { getValue, isNullOrUndefined, extend, isBlazor } from '../util';\nimport { ParserBase as parser, getBlazorCurrencySymbol } from './parser-base';\nimport { DateFormat } from './date-formatter';\nimport { NumberFormat } from './number-formatter';\nimport { isUndefined } from '../util';\nvar regExp = RegExp;\nexport var blazorCultureFormats = {\n 'en-US': {\n 'd': 'M/d/y',\n 'D': 'EEEE, MMMM d, y',\n 'f': 'EEEE, MMMM d, y h:mm a',\n 'F': 'EEEE, MMMM d, y h:mm:s a',\n 'g': 'M/d/y h:mm a',\n 'G': 'M/d/yyyy h:mm:ss tt',\n 'm': 'MMMM d',\n 'M': 'MMMM d',\n 'r': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 'R': 'ddd, dd MMM yyyy HH\\':\\'mm\\':\\'ss \\'GMT\\'',\n 's': 'yyyy\\'-\\'MM\\'-\\'dd\\'T\\'HH\\':\\'mm\\':\\'ss',\n 't': 'h:mm tt',\n 'T': 'h:m:s tt',\n 'u': 'yyyy\\'-\\'MM\\'-\\'dd HH\\':\\'mm\\':\\'ss\\'Z\\'',\n 'U': 'dddd, MMMM d, yyyy h:mm:ss tt',\n 'y': 'MMMM yyyy',\n 'Y': 'MMMM yyyy'\n }\n};\n/**\n * Date base common constants and function for date parser and formatter.\n */\n// eslint-disable-next-line\nexport var IntlBase;\n(function (IntlBase) {\n /* eslint-disable */\n // tslint:disable-next-line:max-line-length.\n IntlBase.negativeDataRegex = /^(('[^']+'|''|[^*#@0,.E])*)(\\*.)?((([#,]*[0,]*0+)(\\.0*[0-9]*#*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.customRegex = /^(('[^']+'|''|[^*#@0,.])*)(\\*.)?((([0#,]*[0,]*[0#]*[0#\\ ]*)(\\.[0#]*)?)|([#,]*@+#*))(E\\+?0+)?(('[^']+'|''|[^*#@0,.E])*)$/;\n IntlBase.latnParseRegex = /0|1|2|3|4|5|6|7|8|9/g;\n var fractionRegex = /[0-9]/g;\n IntlBase.defaultCurrency = '$';\n var mapper = ['infinity', 'nan', 'group', 'decimal'];\n var patternRegex = /G|M|L|H|c|'| a|yy|y|EEEE|E/g;\n var patternMatch = {\n 'G': '',\n 'M': 'm',\n 'L': 'm',\n 'H': 'h',\n 'c': 'd',\n '\\'': '\"',\n ' a': ' AM/PM',\n 'yy': 'yy',\n 'y': 'yyyy',\n 'EEEE': 'dddd',\n 'E': 'ddd'\n };\n IntlBase.dateConverterMapper = /dddd|ddd/ig;\n var defaultFirstDay = 'sun';\n IntlBase.islamicRegex = /^islamic/;\n var firstDayMapper = {\n 'sun': 0,\n 'mon': 1,\n 'tue': 2,\n 'wed': 3,\n 'thu': 4,\n 'fri': 5,\n 'sat': 6\n };\n IntlBase.formatRegex = new regExp(\"(^[ncpae]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.currencyFormatRegex = new regExp(\"(^[ca]{1})([0-1]?[0-9]|20)?$\", \"i\");\n IntlBase.curWithoutNumberRegex = /(c|a)$/ig;\n var typeMapper = {\n '$': 'isCurrency',\n '%': 'isPercent',\n '-': 'isNegative',\n 0: 'nlead',\n 1: 'nend'\n };\n IntlBase.dateParseRegex = /([a-z])\\1*|'([^']|'')+'|''|./gi;\n IntlBase.basicPatterns = ['short', 'medium', 'long', 'full'];\n /* tslint:disable:quotemark */\n IntlBase.defaultObject = {\n 'dates': {\n 'calendars': {\n 'gregorian': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'narrow': {\n '1': 'J',\n '2': 'F',\n '3': 'M',\n '4': 'A',\n '5': 'M',\n '6': 'J',\n '7': 'J',\n '8': 'A',\n '9': 'S',\n '10': 'O',\n '11': 'N',\n '12': 'D'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'Before Christ',\n '0-alt-variant': 'Before Common Era',\n '1': 'Anno Domini',\n '1-alt-variant': 'Common Era'\n },\n 'eraAbbr': {\n '0': 'BC',\n '0-alt-variant': 'BCE',\n '1': 'AD',\n '1-alt-variant': 'CE'\n },\n 'eraNarrow': {\n '0': 'B',\n '0-alt-variant': 'BCE',\n '1': 'A',\n '1-alt-variant': 'CE'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y',\n 'long': 'MMMM d, y',\n 'medium': 'MMM d, y',\n 'short': 'M/d/yy'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'hmsv': 'h:mm:ss a v',\n 'Hmsv': 'HH:mm:ss v',\n 'hmv': 'h:mm a v',\n 'Hmv': 'HH:mm v',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y',\n 'yM': 'M/y',\n 'yMd': 'M/d/y',\n 'yMEd': 'E, M/d/y',\n 'yMMM': 'MMM y',\n 'yMMMd': 'MMM d, y',\n 'yMMMEd': 'E, MMM d, y',\n 'yMMMM': 'MMMM y'\n }\n }\n },\n 'islamic': {\n 'months': {\n 'stand-alone': {\n 'abbreviated': {\n '1': 'Muh.',\n '2': 'Saf.',\n '3': 'Rab. I',\n '4': 'Rab. II',\n '5': 'Jum. I',\n '6': 'Jum. II',\n '7': 'Raj.',\n '8': 'Sha.',\n '9': 'Ram.',\n '10': 'Shaw.',\n '11': 'Dhuʻl-Q.',\n '12': 'Dhuʻl-H.'\n },\n 'narrow': {\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9',\n '10': '10',\n '11': '11',\n '12': '12'\n },\n 'wide': {\n '1': 'Muharram',\n '2': 'Safar',\n '3': 'Rabiʻ I',\n '4': 'Rabiʻ II',\n '5': 'Jumada I',\n '6': 'Jumada II',\n '7': 'Rajab',\n '8': 'Shaʻban',\n '9': 'Ramadan',\n '10': 'Shawwal',\n '11': 'Dhuʻl-Qiʻdah',\n '12': 'Dhuʻl-Hijjah'\n }\n }\n },\n 'days': {\n 'stand-alone': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'narrow': {\n 'sun': 'S',\n 'mon': 'M',\n 'tue': 'T',\n 'wed': 'W',\n 'thu': 'T',\n 'fri': 'F',\n 'sat': 'S'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n }\n },\n 'dayPeriods': {\n 'format': {\n 'wide': {\n 'am': 'AM',\n 'pm': 'PM'\n }\n }\n },\n 'eras': {\n 'eraNames': {\n '0': 'AH'\n },\n 'eraAbbr': {\n '0': 'AH'\n },\n 'eraNarrow': {\n '0': 'AH'\n }\n },\n 'dateFormats': {\n 'full': 'EEEE, MMMM d, y G',\n 'long': 'MMMM d, y G',\n 'medium': 'MMM d, y G',\n 'short': 'M/d/y GGGGG'\n },\n 'timeFormats': {\n 'full': 'h:mm:ss a zzzz',\n 'long': 'h:mm:ss a z',\n 'medium': 'h:mm:ss a',\n 'short': 'h:mm a'\n },\n 'dateTimeFormats': {\n 'full': '{1} \\'at\\' {0}',\n 'long': '{1} \\'at\\' {0}',\n 'medium': '{1}, {0}',\n 'short': '{1}, {0}',\n 'availableFormats': {\n 'd': 'd',\n 'E': 'ccc',\n 'Ed': 'd E',\n 'Ehm': 'E h:mm a',\n 'EHm': 'E HH:mm',\n 'Ehms': 'E h:mm:ss a',\n 'EHms': 'E HH:mm:ss',\n 'Gy': 'y G',\n 'GyMMM': 'MMM y G',\n 'GyMMMd': 'MMM d, y G',\n 'GyMMMEd': 'E, MMM d, y G',\n 'h': 'h a',\n 'H': 'HH',\n 'hm': 'h:mm a',\n 'Hm': 'HH:mm',\n 'hms': 'h:mm:ss a',\n 'Hms': 'HH:mm:ss',\n 'M': 'L',\n 'Md': 'M/d',\n 'MEd': 'E, M/d',\n 'MMM': 'LLL',\n 'MMMd': 'MMM d',\n 'MMMEd': 'E, MMM d',\n 'MMMMd': 'MMMM d',\n 'ms': 'mm:ss',\n 'y': 'y G',\n 'yyyy': 'y G',\n 'yyyyM': 'M/y GGGGG',\n 'yyyyMd': 'M/d/y GGGGG',\n 'yyyyMEd': 'E, M/d/y GGGGG',\n 'yyyyMMM': 'MMM y G',\n 'yyyyMMMd': 'MMM d, y G',\n 'yyyyMMMEd': 'E, MMM d, y G',\n 'yyyyMMMM': 'MMMM y G',\n 'yyyyQQQ': 'QQQ y G',\n 'yyyyQQQQ': 'QQQQ y G'\n }\n }\n }\n },\n 'timeZoneNames': {\n 'hourFormat': '+HH:mm;-HH:mm',\n 'gmtFormat': 'GMT{0}',\n 'gmtZeroFormat': 'GMT'\n }\n },\n 'numbers': {\n 'currencies': {\n 'USD': {\n 'displayName': 'US Dollar',\n 'symbol': '$',\n 'symbol-alt-narrow': '$'\n },\n 'EUR': {\n 'displayName': 'Euro',\n 'symbol': '€',\n 'symbol-alt-narrow': '€'\n },\n 'GBP': {\n 'displayName': 'British Pound',\n 'symbol-alt-narrow': '£'\n }\n },\n 'defaultNumberingSystem': 'latn',\n 'minimumGroupingDigits': '1',\n 'symbols-numberSystem-latn': {\n 'decimal': '.',\n 'group': ',',\n 'list': ';',\n 'percentSign': '%',\n 'plusSign': '+',\n 'minusSign': '-',\n 'exponential': 'E',\n 'superscriptingExponent': '×',\n 'perMille': '‰',\n 'infinity': '∞',\n 'nan': 'NaN',\n 'timeSeparator': ':'\n },\n 'decimalFormats-numberSystem-latn': {\n 'standard': '#,##0.###'\n },\n 'percentFormats-numberSystem-latn': {\n 'standard': '#,##0%'\n },\n 'currencyFormats-numberSystem-latn': {\n 'standard': '¤#,##0.00',\n 'accounting': '¤#,##0.00;(¤#,##0.00)'\n },\n 'scientificFormats-numberSystem-latn': {\n 'standard': '#E0'\n }\n }\n };\n IntlBase.blazorDefaultObject = {\n 'numbers': {\n 'mapper': {\n '0': '0',\n '1': '1',\n '2': '2',\n '3': '3',\n '4': '4',\n '5': '5',\n '6': '6',\n '7': '7',\n '8': '8',\n '9': '9'\n },\n 'mapperDigits': '0123456789',\n 'numberSymbols': {\n 'decimal': '.',\n 'group': ',',\n 'plusSign': '+',\n 'minusSign': '-',\n 'percentSign': '%',\n 'nan': 'NaN',\n 'timeSeparator': ':',\n 'infinity': '∞'\n },\n 'timeSeparator': ':',\n 'currencySymbol': '$',\n 'currencypData': {\n 'nlead': '$',\n 'nend': '',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentpData': {\n 'nlead': '',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'percentnData': {\n 'nlead': '-',\n 'nend': '%',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'currencynData': {\n 'nlead': '($',\n 'nend': ')',\n 'groupSeparator': ',',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalnData': {\n 'nlead': '-',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n },\n 'decimalpData': {\n 'nlead': '',\n 'nend': '',\n 'groupData': {\n 'primary': 3\n },\n 'maximumFraction': 2,\n 'minimumFraction': 2\n }\n },\n 'dates': {\n 'dayPeriods': {\n 'am': 'AM',\n 'pm': 'PM'\n },\n 'dateSeperator': '/',\n 'days': {\n 'abbreviated': {\n 'sun': 'Sun',\n 'mon': 'Mon',\n 'tue': 'Tue',\n 'wed': 'Wed',\n 'thu': 'Thu',\n 'fri': 'Fri',\n 'sat': 'Sat'\n },\n 'short': {\n 'sun': 'Su',\n 'mon': 'Mo',\n 'tue': 'Tu',\n 'wed': 'We',\n 'thu': 'Th',\n 'fri': 'Fr',\n 'sat': 'Sa'\n },\n 'wide': {\n 'sun': 'Sunday',\n 'mon': 'Monday',\n 'tue': 'Tuesday',\n 'wed': 'Wednesday',\n 'thu': 'Thursday',\n 'fri': 'Friday',\n 'sat': 'Saturday'\n }\n },\n 'months': {\n 'abbreviated': {\n '1': 'Jan',\n '2': 'Feb',\n '3': 'Mar',\n '4': 'Apr',\n '5': 'May',\n '6': 'Jun',\n '7': 'Jul',\n '8': 'Aug',\n '9': 'Sep',\n '10': 'Oct',\n '11': 'Nov',\n '12': 'Dec'\n },\n 'wide': {\n '1': 'January',\n '2': 'February',\n '3': 'March',\n '4': 'April',\n '5': 'May',\n '6': 'June',\n '7': 'July',\n '8': 'August',\n '9': 'September',\n '10': 'October',\n '11': 'November',\n '12': 'December'\n }\n },\n 'eras': {\n '1': 'AD'\n }\n }\n };\n /* tslint:enable:quotemark */\n IntlBase.monthIndex = {\n 3: 'abbreviated',\n 4: 'wide',\n 5: 'narrow',\n 1: 'abbreviated'\n };\n /**\n *\n */\n IntlBase.month = 'months';\n IntlBase.days = 'days';\n /**\n * Default numerber Object\n */\n IntlBase.patternMatcher = {\n C: 'currency',\n P: 'percent',\n N: 'decimal',\n A: 'currency',\n E: 'scientific'\n };\n /**\n * Returns the resultant pattern based on the skeleton, dateObject and the type provided\n *\n * @private\n * @param {string} skeleton ?\n * @param {Object} dateObject ?\n * @param {string} type ?\n * @param {boolean} isIslamic ?\n * @param {string} blazorCulture ?\n * @returns {string} ?\n */\n function getResultantPattern(skeleton, dateObject, type, isIslamic, blazorCulture) {\n var resPattern;\n var iType = type || 'date';\n if (blazorCulture) {\n resPattern = compareBlazorDateFormats({ skeleton: skeleton }, blazorCulture).format ||\n compareBlazorDateFormats({ skeleton: 'd' }, 'en-US').format;\n }\n else {\n if (IntlBase.basicPatterns.indexOf(skeleton) !== -1) {\n resPattern = getValue(iType + 'Formats.' + skeleton, dateObject);\n if (iType === 'dateTime') {\n var dPattern = getValue('dateFormats.' + skeleton, dateObject);\n var tPattern = getValue('timeFormats.' + skeleton, dateObject);\n resPattern = resPattern.replace('{1}', dPattern).replace('{0}', tPattern);\n }\n }\n else {\n resPattern = getValue('dateTimeFormats.availableFormats.' + skeleton, dateObject);\n }\n if (isUndefined(resPattern) && skeleton === 'yMd') {\n resPattern = 'M/d/y';\n }\n }\n return resPattern;\n }\n IntlBase.getResultantPattern = getResultantPattern;\n /**\n * Returns the dependable object for provided cldr data and culture\n *\n * @private\n * @param {Object} cldr ?\n * @param {string} culture ?\n * @param {string} mode ?\n * @param {boolean} isNumber ?\n * @returns {any} ?\n */\n function getDependables(cldr, culture, mode, isNumber) {\n var ret = {};\n var calendartype = mode || 'gregorian';\n ret.parserObject = parser.getMainObject(cldr, culture) || (isBlazor() ? IntlBase.blazorDefaultObject : IntlBase.defaultObject);\n if (isNumber) {\n ret.numericObject = getValue('numbers', ret.parserObject);\n }\n else {\n var dateString = isBlazor() ? 'dates' : ('dates.calendars.' + calendartype);\n ret.dateObject = getValue(dateString, ret.parserObject);\n }\n return ret;\n }\n IntlBase.getDependables = getDependables;\n /**\n * Returns the symbol pattern for provided parameters\n *\n * @private\n * @param {string} type ?\n * @param {string} numSystem ?\n * @param {Object} obj ?\n * @param {boolean} isAccount ?\n * @returns {string} ?\n */\n function getSymbolPattern(type, numSystem, obj, isAccount) {\n return getValue(type + 'Formats-numberSystem-' +\n numSystem + (isAccount ? '.accounting' : '.standard'), obj) || (isAccount ? getValue(type + 'Formats-numberSystem-' +\n numSystem + '.standard', obj) : '');\n }\n IntlBase.getSymbolPattern = getSymbolPattern;\n /**\n *\n * @param {string} format ?\n * @returns {string} ?\n */\n function ConvertDateToWeekFormat(format) {\n var convertMapper = format.match(IntlBase.dateConverterMapper);\n if (convertMapper && isBlazor()) {\n var tempString = convertMapper[0].length === 3 ? 'EEE' : 'EEEE';\n return format.replace(IntlBase.dateConverterMapper, tempString);\n }\n return format;\n }\n IntlBase.ConvertDateToWeekFormat = ConvertDateToWeekFormat;\n /**\n *\n * @param {DateFormatOptions} formatOptions ?\n * @param {string} culture ?\n * @returns {DateFormatOptions} ?\n */\n function compareBlazorDateFormats(formatOptions, culture) {\n var format = formatOptions.format || formatOptions.skeleton;\n var curFormatMapper = getValue((culture || 'en-US') + '.' + format, blazorCultureFormats);\n if (!curFormatMapper) {\n curFormatMapper = getValue('en-US.' + format, blazorCultureFormats);\n }\n if (curFormatMapper) {\n curFormatMapper = ConvertDateToWeekFormat(curFormatMapper);\n formatOptions.format = curFormatMapper.replace(/tt/, 'a');\n }\n return formatOptions;\n }\n IntlBase.compareBlazorDateFormats = compareBlazorDateFormats;\n /**\n * Returns proper numeric skeleton\n *\n * @private\n * @param {string} skeleton ?\n * @returns {any} ?\n */\n function getProperNumericSkeleton(skeleton) {\n var matches = skeleton.match(IntlBase.formatRegex);\n var ret = {};\n var pattern = matches[1].toUpperCase();\n ret.isAccount = (pattern === 'A');\n // eslint-disable-next-line\n ret.type = IntlBase.patternMatcher[pattern];\n if (skeleton.length > 1) {\n ret.fractionDigits = parseInt(matches[2], 10);\n }\n return ret;\n }\n IntlBase.getProperNumericSkeleton = getProperNumericSkeleton;\n /**\n * Returns format data for number formatting like minimum fraction, maximum fraction, etc..,\n *\n * @private\n * @param {string} pattern ?\n * @param {boolean} needFraction ?\n * @param {string} cSymbol ?\n * @param {boolean} fractionOnly ?\n * @returns {any} ?\n */\n function getFormatData(pattern, needFraction, cSymbol, fractionOnly) {\n var nData = fractionOnly ? {} : { nlead: '', nend: '' };\n var match = pattern.match(IntlBase.customRegex);\n if (match) {\n if (!fractionOnly) {\n nData.nlead = changeCurrencySymbol(match[1], cSymbol);\n nData.nend = changeCurrencySymbol(match[10], cSymbol);\n nData.groupPattern = match[4];\n }\n var fraction = match[7];\n if (fraction && needFraction) {\n var fmatch = fraction.match(fractionRegex);\n if (!isNullOrUndefined(fmatch)) {\n nData.minimumFraction = fmatch.length;\n }\n else {\n nData.minimumFraction = 0;\n }\n nData.maximumFraction = fraction.length - 1;\n }\n }\n return nData;\n }\n IntlBase.getFormatData = getFormatData;\n /**\n * Changes currency symbol\n *\n * @private\n * @param {string} val ?\n * @param {string} sym ?\n * @returns {string} ?\n */\n function changeCurrencySymbol(val, sym) {\n if (val) {\n val = val.replace(IntlBase.defaultCurrency, sym);\n return (sym === '') ? val.trim() : val;\n }\n return '';\n }\n IntlBase.changeCurrencySymbol = changeCurrencySymbol;\n /**\n * Returns currency symbol based on currency code ?\n *\n * @private\n * @param {Object} numericObject ?\n * @param {string} currencyCode ?\n * @param {string} altSymbol ?\n * @returns {string} ?\n */\n function getCurrencySymbol(numericObject, currencyCode, altSymbol) {\n var symbol = altSymbol ? ('.' + altSymbol) : '.symbol';\n var getCurrency = getValue('currencies.' + currencyCode + symbol, numericObject) ||\n getValue('currencies.' + currencyCode + '.symbol-alt-narrow', numericObject) || '$';\n return getCurrency;\n }\n IntlBase.getCurrencySymbol = getCurrencySymbol;\n /**\n * Returns formatting options for custom number format\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {any} obj ?\n * @returns {any} ?\n */\n function customFormat(format, dOptions, obj) {\n var options = {};\n var formatSplit = format.split(';');\n var data = ['pData', 'nData', 'zeroData'];\n for (var i = 0; i < formatSplit.length; i++) {\n // eslint-disable-next-line\n options[data[i]] = customNumberFormat(formatSplit[i], dOptions, obj);\n }\n if (isNullOrUndefined(options.nData)) {\n options.nData = extend({}, options.pData);\n options.nData.nlead = isNullOrUndefined(dOptions) ? '-' + options.nData.nlead : dOptions.minusSymbol + options.nData.nlead;\n }\n return options;\n }\n IntlBase.customFormat = customFormat;\n /**\n * Returns custom formatting options\n *\n * @private\n * @param {string} format ?\n * @param {CommonOptions} dOptions ?\n * @param {Object} numObject ?\n * @returns {any} ?\n */\n function customNumberFormat(format, dOptions, numObject) {\n var cOptions = { type: 'decimal', minimumFractionDigits: 0, maximumFractionDigits: 0 };\n var pattern = format.match(IntlBase.customRegex);\n if (isNullOrUndefined(pattern) || (pattern[5] === '' && format !== 'N/A')) {\n cOptions.type = undefined;\n return cOptions;\n }\n cOptions.nlead = pattern[1];\n cOptions.nend = pattern[10];\n var integerPart = pattern[6];\n var spaceCapture = integerPart.match(/\\ $/g) ? true : false;\n var spaceGrouping = integerPart.replace(/\\ $/g, '').indexOf(' ') !== -1;\n cOptions.useGrouping = integerPart.indexOf(',') !== -1 || spaceGrouping;\n integerPart = integerPart.replace(/,/g, '');\n var fractionPart = pattern[7];\n if (integerPart.indexOf('0') !== -1) {\n cOptions.minimumIntegerDigits = integerPart.length - integerPart.indexOf('0');\n }\n if (!isNullOrUndefined(fractionPart)) {\n cOptions.minimumFractionDigits = fractionPart.lastIndexOf('0');\n cOptions.maximumFractionDigits = fractionPart.lastIndexOf('#');\n if (cOptions.minimumFractionDigits === -1) {\n cOptions.minimumFractionDigits = 0;\n }\n if (cOptions.maximumFractionDigits === -1 || cOptions.maximumFractionDigits < cOptions.minimumFractionDigits) {\n cOptions.maximumFractionDigits = cOptions.minimumFractionDigits;\n }\n }\n if (!isNullOrUndefined(dOptions)) {\n dOptions.isCustomFormat = true;\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '$', dOptions.currencySymbol));\n if (!cOptions.isCurrency) {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', dOptions.percentSymbol));\n }\n }\n else {\n extend(cOptions, isCurrencyPercent([cOptions.nlead, cOptions.nend], '%', '%'));\n }\n if (!isNullOrUndefined(numObject)) {\n var symbolPattern = getSymbolPattern(cOptions.type, dOptions.numberMapper.numberSystem, numObject, false);\n if (cOptions.useGrouping) {\n // eslint-disable-next-line\n cOptions.groupSeparator = spaceGrouping ? ' ' : dOptions.numberMapper.numberSymbols[mapper[2]];\n cOptions.groupData = NumberFormat.getGroupingDetails(symbolPattern.split(';')[0]);\n }\n cOptions.nlead = cOptions.nlead.replace(/'/g, '');\n cOptions.nend = spaceCapture ? ' ' + cOptions.nend.replace(/'/g, '') : cOptions.nend.replace(/'/g, '');\n }\n return cOptions;\n }\n IntlBase.customNumberFormat = customNumberFormat;\n /**\n * Returns formatting options for currency or percent type\n *\n * @private\n * @param {string[]} parts ?\n * @param {string} actual ?\n * @param {string} symbol ?\n * @returns {any} ?\n */\n function isCurrencyPercent(parts, actual, symbol) {\n var options = { nlead: parts[0], nend: parts[1] };\n for (var i = 0; i < 2; i++) {\n var part = parts[parseInt(i.toString(), 10)];\n var loc = part.indexOf(actual);\n if ((loc !== -1) && ((loc < part.indexOf('\\'')) || (loc > part.lastIndexOf('\\'')))) {\n // eslint-disable-next-line\n options[typeMapper[i]] = part.substr(0, loc) + symbol + part.substr(loc + 1);\n // eslint-disable-next-line\n options[typeMapper[actual]] = true;\n options.type = options.isCurrency ? 'currency' : 'percent';\n break;\n }\n }\n return options;\n }\n IntlBase.isCurrencyPercent = isCurrencyPercent;\n /**\n * Returns culture based date separator\n *\n * @private\n * @param {Object} dateObj ?\n * @returns {string} ?\n */\n function getDateSeparator(dateObj) {\n var value = (getValue('dateFormats.short', dateObj) || '').match(/[d‏M‏]([^d‏M])[d‏M‏]/i);\n return value ? value[1] : '/';\n }\n IntlBase.getDateSeparator = getDateSeparator;\n /**\n * Returns Native Date Time pattern\n *\n * @private\n * @param {string} culture ?\n * @param {DateFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcelFormat ?\n * @returns {string} ?\n */\n function getActualDateTimeFormat(culture, options, cldr, isExcelFormat) {\n var dependable = getDependables(cldr, culture, options.calendar);\n if (isBlazor()) {\n options = compareBlazorDateFormats(options, culture);\n }\n var actualPattern = options.format || getResultantPattern(options.skeleton, dependable.dateObject, options.type);\n if (isExcelFormat) {\n actualPattern = actualPattern.replace(patternRegex, function (pattern) {\n // eslint-disable-next-line\n return patternMatch[pattern];\n });\n if (actualPattern.indexOf('z') !== -1) {\n var tLength = actualPattern.match(/z/g).length;\n var timeZonePattern = void 0;\n var options_1 = { 'timeZone': {} };\n options_1.numMapper = parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr));\n options_1.timeZone = getValue('dates.timeZoneNames', dependable.parserObject);\n var value = new Date();\n var timezone = value.getTimezoneOffset();\n var pattern = (tLength < 4) ? '+H;-H' : options_1.timeZone.hourFormat;\n pattern = pattern.replace(/:/g, options_1.numMapper.timeSeparator);\n if (timezone === 0) {\n timeZonePattern = options_1.timeZone.gmtZeroFormat;\n }\n else {\n timeZonePattern = DateFormat.getTimeZoneValue(timezone, pattern);\n timeZonePattern = options_1.timeZone.gmtFormat.replace(/\\{0\\}/, timeZonePattern);\n }\n actualPattern = actualPattern.replace(/[z]+/, '\"' + timeZonePattern + '\"');\n }\n actualPattern = actualPattern.replace(/ $/, '');\n }\n return actualPattern;\n }\n IntlBase.getActualDateTimeFormat = getActualDateTimeFormat;\n /**\n *\n * @param {string} actual ?\n * @param {any} option ?\n * @returns {any} ?\n */\n // eslint-disable-next-line\n function processSymbol(actual, option) {\n if (actual.indexOf(',') !== -1) {\n // eslint-disable-next-line\n var split = actual.split(',');\n actual = (split[0] + getValue('numberMapper.numberSymbols.group', option) +\n split[1].replace('.', getValue('numberMapper.numberSymbols.decimal', option)));\n }\n else {\n actual = actual.replace('.', getValue('numberMapper.numberSymbols.decimal', option));\n }\n return actual;\n }\n /**\n * Returns Native Number pattern\n *\n * @private\n * @param {string} culture ?\n * @param {NumberFormatOptions} options ?\n * @param {Object} cldr ?\n * @param {boolean} isExcel ?\n * @returns {string} ?\n */\n function getActualNumberFormat(culture, options, cldr, isExcel) {\n var dependable = getDependables(cldr, culture, '', true);\n var parseOptions = { custom: true };\n var numrericObject = dependable.numericObject;\n var minFrac;\n var curObj = {};\n var curMatch = (options.format || '').match(IntlBase.currencyFormatRegex);\n var type = IntlBase.formatRegex.test(options.format) ? getProperNumericSkeleton(options.format || 'N') : {};\n var dOptions = {};\n if (curMatch) {\n dOptions.numberMapper = isBlazor() ?\n extend({}, dependable.numericObject) :\n parser.getNumberMapper(dependable.parserObject, parser.getNumberingSystem(cldr), true);\n var curCode = isBlazor() ? getValue('currencySymbol', dependable.numericObject) :\n getCurrencySymbol(dependable.numericObject, options.currency || defaultCurrencyCode, options.altSymbol);\n var symbolPattern = getSymbolPattern('currency', dOptions.numberMapper.numberSystem, dependable.numericObject, (/a/i).test(options.format));\n symbolPattern = symbolPattern.replace(/\\u00A4/g, curCode);\n var split = symbolPattern.split(';');\n curObj.hasNegativePattern = isBlazor() ? true : (split.length > 1);\n curObj.nData = isBlazor() ? getValue(type.type + 'nData', numrericObject) :\n getFormatData(split[1] || '-' + split[0], true, curCode);\n curObj.pData = isBlazor() ? getValue(type.type + 'pData', numrericObject) :\n getFormatData(split[0], false, curCode);\n if (!curMatch[2] && !options.minimumFractionDigits && !options.maximumFractionDigits) {\n minFrac = getFormatData(symbolPattern.split(';')[0], true, '', true).minimumFraction;\n }\n }\n var actualPattern;\n if ((IntlBase.formatRegex.test(options.format)) || !(options.format)) {\n extend(parseOptions, getProperNumericSkeleton(options.format || 'N'));\n parseOptions.custom = false;\n actualPattern = '###0';\n if (parseOptions.fractionDigits || options.minimumFractionDigits || options.maximumFractionDigits || minFrac) {\n var defaultMinimum = 0;\n if (parseOptions.fractionDigits) {\n options.minimumFractionDigits = options.maximumFractionDigits = parseOptions.fractionDigits;\n }\n actualPattern = fractionDigitsPattern(actualPattern, minFrac || parseOptions.fractionDigits ||\n options.minimumFractionDigits || defaultMinimum, options.maximumFractionDigits || defaultMinimum);\n }\n if (options.minimumIntegerDigits) {\n actualPattern = minimumIntegerPattern(actualPattern, options.minimumIntegerDigits);\n }\n if (options.useGrouping) {\n actualPattern = groupingPattern(actualPattern);\n }\n if (parseOptions.type === 'currency' || (parseOptions.type && isBlazor())) {\n if (isBlazor() && parseOptions.type !== 'currency') {\n curObj.pData = getValue(parseOptions.type + 'pData', numrericObject);\n curObj.nData = getValue(parseOptions.type + 'nData', numrericObject);\n }\n var cPattern = actualPattern;\n actualPattern = curObj.pData.nlead + cPattern + curObj.pData.nend;\n if (curObj.hasNegativePattern || isBlazor()) {\n actualPattern += ';' + curObj.nData.nlead + cPattern + curObj.nData.nend;\n }\n }\n if (parseOptions.type === 'percent' && !isBlazor()) {\n actualPattern += ' %';\n }\n }\n else {\n actualPattern = options.format.replace(/'/g, '\"');\n }\n if (Object.keys(dOptions).length > 0) {\n actualPattern = !isExcel ? processSymbol(actualPattern, dOptions) : actualPattern;\n }\n return actualPattern;\n }\n IntlBase.getActualNumberFormat = getActualNumberFormat;\n /**\n *\n * @param {string} pattern ?\n * @param {number} minDigits ?\n * @param {number} maxDigits ?\n * @returns {string} ?\n */\n function fractionDigitsPattern(pattern, minDigits, maxDigits) {\n pattern += '.';\n for (var a = 0; a < minDigits; a++) {\n pattern += '0';\n }\n if (minDigits < maxDigits) {\n var diff = maxDigits - minDigits;\n for (var b = 0; b < diff; b++) {\n pattern += '#';\n }\n }\n return pattern;\n }\n IntlBase.fractionDigitsPattern = fractionDigitsPattern;\n /**\n *\n * @param {string} pattern ?\n * @param {number} digits ?\n * @returns {string} ?\n */\n function minimumIntegerPattern(pattern, digits) {\n var temp = pattern.split('.');\n var integer = '';\n for (var x = 0; x < digits; x++) {\n integer += '0';\n }\n return temp[1] ? (integer + '.' + temp[1]) : integer;\n }\n IntlBase.minimumIntegerPattern = minimumIntegerPattern;\n /**\n *\n * @param {string} pattern ?\n * @returns {string} ?\n */\n function groupingPattern(pattern) {\n var temp = pattern.split('.');\n var integer = temp[0];\n var no = 3 - integer.length % 3;\n var hash = (no && no === 1) ? '#' : (no === 2 ? '##' : '');\n integer = hash + integer;\n pattern = '';\n for (var x = integer.length - 1; x > 0; x = x - 3) {\n pattern = ',' + integer[x - 2] + integer[x - 1] + integer[parseInt(x.toString(), 10)] + pattern;\n }\n pattern = pattern.slice(1);\n return temp[1] ? (pattern + '.' + temp[1]) : pattern;\n }\n IntlBase.groupingPattern = groupingPattern;\n /**\n *\n * @param {string} culture ?\n * @param {Object} cldr ?\n * @returns {number} ?\n */\n function getWeekData(culture, cldr) {\n var firstDay = defaultFirstDay;\n var mapper = getValue('supplemental.weekData.firstDay', cldr);\n var iCulture = culture;\n if ((/en-/).test(iCulture)) {\n iCulture = iCulture.slice(3);\n }\n iCulture = iCulture.slice(0, 2).toUpperCase() + iCulture.substr(2);\n if (mapper) {\n firstDay = mapper[\"\" + iCulture] || mapper[iCulture.slice(0, 2)] || defaultFirstDay;\n }\n return firstDayMapper[\"\" + firstDay];\n }\n IntlBase.getWeekData = getWeekData;\n /**\n * @private\n * @param {any} pData ?\n * @param {string} aCurrency ?\n * @param {string} rCurrency ?\n * @returns {void} ?\n */\n function replaceBlazorCurrency(pData, aCurrency, rCurrency) {\n var iCurrency = getBlazorCurrencySymbol(rCurrency);\n if (aCurrency !== iCurrency) {\n for (var _i = 0, pData_1 = pData; _i < pData_1.length; _i++) {\n var data = pData_1[_i];\n data.nend = data.nend.replace(aCurrency, iCurrency);\n data.nlead = data.nlead.replace(aCurrency, iCurrency);\n }\n }\n }\n IntlBase.replaceBlazorCurrency = replaceBlazorCurrency;\n /**\n * @private\n * @param {Date} date ?\n * @returns {number} ?\n */\n function getWeekOfYear(date) {\n var newYear = new Date(date.getFullYear(), 0, 1);\n var day = newYear.getDay();\n var weeknum;\n day = (day >= 0 ? day : day + 7);\n var daynum = Math.floor((date.getTime() - newYear.getTime() -\n (date.getTimezoneOffset() - newYear.getTimezoneOffset()) * 60000) / 86400000) + 1;\n if (day < 4) {\n weeknum = Math.floor((daynum + day - 1) / 7) + 1;\n if (weeknum > 52) {\n var nYear = new Date(date.getFullYear() + 1, 0, 1);\n var nday = nYear.getDay();\n nday = nday >= 0 ? nday : nday + 7;\n weeknum = nday < 4 ? 1 : 53;\n }\n }\n else {\n weeknum = Math.floor((daynum + day - 1) / 7);\n }\n return weeknum;\n }\n IntlBase.getWeekOfYear = getWeekOfYear;\n})(IntlBase || (IntlBase = {}));\n","import { isNullOrUndefined, merge } from './util';\nvar headerRegex = /^(.*?):[ \\t]*([^\\r\\n]*)$/gm;\nvar defaultType = 'GET';\n/**\n * Ajax class provides ability to make asynchronous HTTP request to the server\n * ```typescript\n * var ajax = new Ajax(\"index.html\", \"GET\", true);\n * ajax.send().then(\n * function (value) {\n * console.log(value);\n * },\n * function (reason) {\n * console.log(reason);\n * });\n * ```\n */\nvar Ajax = /** @class */ (function () {\n /**\n * Constructor for Ajax class\n *\n * @param {string|Object} options ?\n * @param {string} type ?\n * @param {boolean} async ?\n * @returns defaultType any\n */\n function Ajax(options, type, async, contentType) {\n /**\n * A boolean value indicating whether the request should be sent asynchronous or not.\n *\n * @default true\n */\n this.mode = true;\n /**\n * A boolean value indicating whether to ignore the promise reject.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n this.options = {};\n if (typeof options === 'string') {\n this.url = options;\n this.type = type ? type.toUpperCase() : defaultType;\n this.mode = !isNullOrUndefined(async) ? async : true;\n }\n else if (typeof options === 'object') {\n this.options = options;\n merge(this, this.options);\n }\n this.type = this.type ? this.type.toUpperCase() : defaultType;\n this.contentType = (this.contentType !== undefined) ? this.contentType : contentType;\n }\n /**\n *\n * Send the request to server.\n *\n * @param {any} data - To send the user data\n * @return {Promise} ?\n */\n Ajax.prototype.send = function (data) {\n var _this = this;\n this.data = isNullOrUndefined(data) ? this.data : data;\n var eventArgs = {\n cancel: false,\n httpRequest: null\n };\n var promise = new Promise(function (resolve, reject) {\n _this.httpRequest = new XMLHttpRequest();\n _this.httpRequest.onreadystatechange = function () { _this.stateChange(resolve, reject); };\n if (!isNullOrUndefined(_this.onLoad)) {\n _this.httpRequest.onload = _this.onLoad;\n }\n if (!isNullOrUndefined(_this.onProgress)) {\n _this.httpRequest.onprogress = _this.onProgress;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onAbort)) {\n _this.httpRequest.onabort = _this.onAbort;\n }\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onError)) {\n _this.httpRequest.onerror = _this.onError;\n }\n //** Upload Events **/\n /* istanbul ignore next */\n if (!isNullOrUndefined(_this.onUploadProgress)) {\n _this.httpRequest.upload.onprogress = _this.onUploadProgress;\n }\n // eslint-disable-next-line\n _this.httpRequest.open(_this.type, _this.url, _this.mode);\n // Set default headers\n if (!isNullOrUndefined(_this.data) && _this.contentType !== null) {\n _this.httpRequest.setRequestHeader('Content-Type', _this.contentType || 'application/json; charset=utf-8');\n }\n if (_this.beforeSend) {\n eventArgs.httpRequest = _this.httpRequest;\n _this.beforeSend(eventArgs);\n }\n if (!eventArgs.cancel) {\n _this.httpRequest.send(!isNullOrUndefined(_this.data) ? _this.data : null);\n }\n });\n return promise;\n };\n Ajax.prototype.successHandler = function (data) {\n if (this.onSuccess) {\n this.onSuccess(data, this);\n }\n return data;\n };\n Ajax.prototype.failureHandler = function (reason) {\n if (this.onFailure) {\n this.onFailure(this.httpRequest);\n }\n return reason;\n };\n Ajax.prototype.stateChange = function (resolve, reject) {\n var data = this.httpRequest.responseText;\n if (this.dataType && this.dataType.toLowerCase() === 'json') {\n if (data === '') {\n data = undefined;\n }\n else {\n try {\n data = JSON.parse(data);\n }\n catch (error) {\n // no exception handle\n }\n }\n }\n if (this.httpRequest.readyState === 4) {\n //success range should be 200 to 299\n if ((this.httpRequest.status >= 200 && this.httpRequest.status <= 299) || this.httpRequest.status === 304) {\n resolve(this.successHandler(data));\n }\n else {\n if (this.emitError) {\n reject(new Error(this.failureHandler(this.httpRequest.statusText)));\n }\n else {\n resolve();\n }\n }\n }\n };\n /**\n * To get the response header from XMLHttpRequest\n *\n * @param {string} key Key to search in the response header\n * @returns {string} ?\n */\n Ajax.prototype.getResponseHeader = function (key) {\n var responseHeaders;\n var header;\n // eslint-disable-next-line\n responseHeaders = {};\n var headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n while (headers) {\n responseHeaders[headers[1].toLowerCase()] = headers[2];\n headers = headerRegex.exec(this.httpRequest.getAllResponseHeaders());\n }\n // eslint-disable-next-line\n header = responseHeaders[key.toLowerCase()];\n return isNullOrUndefined(header) ? null : header;\n };\n return Ajax;\n}());\nexport { Ajax };\n","import { isNullOrUndefined as isNOU, isObject, merge } from './util';\n/**\n * The Fetch class provides a way to make asynchronous network requests, typically to retrieve resources from a server.\n * ```typescript\n * var fetchApi = new Fetch('index.html', 'GET');\n * fetchApi.send()\n * .then((value) => {\n * console.log(value);\n * }).catch((error) => {\n * console.log(error);\n * });\n * ```\n */\nvar Fetch = /** @class */ (function () {\n /**\n * Constructor for Fetch class.\n *\n * @param {string|Object} options - Specifies the URL or Request object with URL to which the request is to be sent.\n * @param {string} type - Specifies which request method is to be used, such as GET, POST, etc.\n * @param {string} contentType - Specifies the content type of the request, which is used to indicate the original media type of the resource.\n */\n function Fetch(options, type, contentType) {\n /**\n * Specifies which request method is to be used, such as GET, POST, etc.\n *\n * @default GET\n */\n this.type = 'GET';\n /**\n * A boolean value indicating whether to reject the promise or not.\n *\n * @private\n * @default true\n */\n this.emitError = true;\n if (typeof options === 'string') {\n this.url = options;\n this.type = !isNOU(type) ? type.toUpperCase() : this.type;\n this.contentType = contentType;\n }\n else if (isObject(options) && Object.keys(options).length > 0) {\n merge(this, options);\n }\n this.contentType = !isNOU(this.contentType) ? this.contentType : 'application/json; charset=utf-8';\n }\n /**\n * Send the request to server.\n *\n * @param {string|Object} data - Specifies the data that needs to be added to the request.\n * @returns {Promise} - Returns the response to a request.\n */\n Fetch.prototype.send = function (data) {\n var _this = this;\n var contentTypes = {\n 'application/json': 'json',\n 'multipart/form-data': 'formData',\n 'application/octet-stream': 'blob',\n 'application/x-www-form-urlencoded': 'formData'\n };\n try {\n if (isNOU(this.fetchRequest) && this.type === 'GET') {\n this.fetchRequest = new Request(this.url, { method: this.type });\n }\n else if (isNOU(this.fetchRequest)) {\n this.data = !isNOU(data) ? data : this.data;\n this.fetchRequest = new Request(this.url, {\n method: this.type,\n headers: { 'Content-Type': this.contentType },\n body: this.data\n });\n }\n var eventArgs = { cancel: false, fetchRequest: this.fetchRequest };\n this.triggerEvent(this['beforeSend'], eventArgs);\n if (eventArgs.cancel) {\n return null;\n }\n this.fetchResponse = fetch(this.fetchRequest);\n return this.fetchResponse.then(function (response) {\n _this.triggerEvent(_this['onLoad'], response);\n if (!response.ok) {\n throw response;\n }\n var responseType = 'text';\n for (var _i = 0, _a = Object.keys(contentTypes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (response.headers.get('Content-Type') && response.headers.get('Content-Type').indexOf(key) !== -1) {\n responseType = contentTypes[key];\n }\n }\n return response[responseType]();\n // eslint-disable-next-line\n }).then(function (data) {\n _this.triggerEvent(_this['onSuccess'], data, _this);\n return data;\n // eslint-disable-next-line\n }).catch(function (error) {\n var returnVal = {};\n if (_this.emitError) {\n _this.triggerEvent(_this['onFailure'], error);\n returnVal = Promise.reject(error);\n }\n return returnVal;\n });\n }\n catch (error) {\n return error;\n }\n };\n Fetch.prototype.triggerEvent = function (callback, data, instance) {\n if (!isNOU(callback) && typeof callback === 'function') {\n callback(data, instance);\n }\n };\n return Fetch;\n}());\nexport { Fetch };\n","import { isUndefined } from './util';\nvar REGX_MOBILE = /android|webos|iphone|ipad|ipod|blackberry|iemobile|opera mini|mobile/i;\nvar REGX_IE = /msie|trident/i;\nvar REGX_IE11 = /Trident\\/7\\./;\nvar REGX_IOS = /(ipad|iphone|ipod touch)/i;\nvar REGX_IOS7 = /(ipad|iphone|ipod touch);.*os 7_\\d|(ipad|iphone|ipod touch);.*os 8_\\d/i;\nvar REGX_ANDROID = /android/i;\nvar REGX_WINDOWS = /trident|windows phone|edge/i;\nvar REGX_VERSION = /(version)[ /]([\\w.]+)/i;\nvar REGX_BROWSER = {\n OPERA: /(opera|opr)(?:.*version|)[ /]([\\w.]+)/i,\n EDGE: /(edge)(?:.*version|)[ /]([\\w.]+)/i,\n CHROME: /(chrome|crios)[ /]([\\w.]+)/i,\n PANTHOMEJS: /(phantomjs)[ /]([\\w.]+)/i,\n SAFARI: /(safari)[ /]([\\w.]+)/i,\n WEBKIT: /(webkit)[ /]([\\w.]+)/i,\n MSIE: /(msie|trident) ([\\w.]+)/i,\n MOZILLA: /(mozilla)(?:.*? rv:([\\w.]+)|)/i\n};\n/* istanbul ignore else */\nif (typeof window !== 'undefined') {\n window.browserDetails = window.browserDetails || {};\n}\n/**\n * Get configuration details for Browser\n *\n * @private\n */\nvar Browser = /** @class */ (function () {\n function Browser() {\n }\n Browser.extractBrowserDetail = function () {\n var browserInfo = { culture: {} };\n var keys = Object.keys(REGX_BROWSER);\n var clientInfo = [];\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n clientInfo = Browser.userAgent.match(REGX_BROWSER[\"\" + key]);\n if (clientInfo) {\n browserInfo.name = (clientInfo[1].toLowerCase() === 'opr' ? 'opera' : clientInfo[1].toLowerCase());\n browserInfo.name = (clientInfo[1].toLowerCase() === 'crios' ? 'chrome' : browserInfo.name);\n browserInfo.version = clientInfo[2];\n browserInfo.culture.name = browserInfo.culture.language = navigator.language;\n // eslint-disable-next-line\n if (!!Browser.userAgent.match(REGX_IE11)) {\n browserInfo.name = 'msie';\n break;\n }\n var version = Browser.userAgent.match(REGX_VERSION);\n if (browserInfo.name === 'safari' && version) {\n browserInfo.version = version[2];\n }\n break;\n }\n }\n return browserInfo;\n };\n /**\n * To get events from the browser\n *\n * @param {string} event - type of event triggered.\n * @returns {boolean}\n */\n Browser.getEvent = function (event) {\n // eslint-disable-next-line\n var events = {\n start: {\n isPointer: 'pointerdown', isTouch: 'touchstart', isDevice: 'mousedown'\n },\n move: {\n isPointer: 'pointermove', isTouch: 'touchmove', isDevice: 'mousemove'\n },\n end: {\n isPointer: 'pointerup', isTouch: 'touchend', isDevice: 'mouseup'\n },\n cancel: {\n isPointer: 'pointercancel', isTouch: 'touchcancel', isDevice: 'mouseleave'\n }\n };\n return (Browser.isPointer ? events[\"\" + event].isPointer :\n (Browser.isTouch ? events[\"\" + event].isTouch + (!Browser.isDevice ? ' ' + events[\"\" + event].isDevice : '')\n : events[\"\" + event].isDevice));\n };\n /**\n * To get the Touch start event from browser\n *\n * @returns {string}\n */\n Browser.getTouchStartEvent = function () {\n return Browser.getEvent('start');\n };\n /**\n * To get the Touch end event from browser\n *\n * @returns {string}\n */\n Browser.getTouchEndEvent = function () {\n return Browser.getEvent('end');\n };\n /**\n * To get the Touch move event from browser\n *\n * @returns {string}\n */\n Browser.getTouchMoveEvent = function () {\n return Browser.getEvent('move');\n };\n /**\n * To cancel the touch event from browser\n *\n * @returns {string}\n */\n Browser.getTouchCancelEvent = function () {\n return Browser.getEvent('cancel');\n };\n /**\n * Check whether the browser on the iPad device is Safari or not\n *\n * @returns {boolean}\n */\n Browser.isSafari = function () {\n return (Browser.isDevice && Browser.isIos && Browser.isTouch && typeof window !== 'undefined'\n && window.navigator.userAgent.toLowerCase().indexOf('iphone') === -1\n && window.navigator.userAgent.toLowerCase().indexOf('safari') > -1);\n };\n /**\n * To get the value based on provided key and regX\n *\n * @param {string} key ?\n * @param {RegExp} regX ?\n * @returns {Object} ?\n */\n Browser.getValue = function (key, regX) {\n var browserDetails = typeof window !== 'undefined' ? window.browserDetails : {};\n if (typeof navigator !== 'undefined' && navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1 && Browser.isTouch === true && !REGX_BROWSER.CHROME.test(navigator.userAgent)) {\n browserDetails['isIos'] = true;\n browserDetails['isDevice'] = true;\n browserDetails['isTouch'] = true;\n browserDetails['isPointer'] = true;\n }\n if ('undefined' === typeof browserDetails[\"\" + key]) {\n return browserDetails[\"\" + key] = regX.test(Browser.userAgent);\n }\n return browserDetails[\"\" + key];\n };\n Object.defineProperty(Browser, \"userAgent\", {\n get: function () {\n return Browser.uA;\n },\n //Properties\n /**\n * Property specifies the userAgent of the browser. Default userAgent value is based on the browser.\n * Also we can set our own userAgent.\n *\n * @param {string} uA ?\n */\n set: function (uA) {\n Browser.uA = uA;\n window.browserDetails = {};\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"info\", {\n //Read Only Properties\n /**\n * Property is to get the browser information like Name, Version and Language\n *\n * @returns {BrowserInfo} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.info)) {\n return window.browserDetails.info = Browser.extractBrowserDetail();\n }\n return window.browserDetails.info;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIE\", {\n /**\n * Property is to get whether the userAgent is based IE.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIE', REGX_IE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isTouch\", {\n /**\n * Property is to get whether the browser has touch support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isTouch)) {\n return (window.browserDetails.isTouch =\n ('ontouchstart' in window.navigator) ||\n (window &&\n window.navigator &&\n (window.navigator.maxTouchPoints > 0)) || ('ontouchstart' in window));\n }\n return window.browserDetails.isTouch;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isPointer\", {\n /**\n * Property is to get whether the browser has Pointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isPointer)) {\n return window.browserDetails.isPointer = ('pointerEnabled' in window.navigator);\n }\n return window.browserDetails.isPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isMSPointer\", {\n /**\n * Property is to get whether the browser has MSPointer support.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isMSPointer)) {\n return window.browserDetails.isMSPointer = ('msPointerEnabled' in window.navigator);\n }\n return window.browserDetails.isMSPointer;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isDevice\", {\n /**\n * Property is to get whether the userAgent is device based.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isDevice', REGX_MOBILE);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos\", {\n /**\n * Property is to get whether the userAgent is IOS.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos', REGX_IOS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isIos7\", {\n /**\n * Property is to get whether the userAgent is Ios7.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isIos7', REGX_IOS7);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isAndroid\", {\n /**\n * Property is to get whether the userAgent is Android.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isAndroid', REGX_ANDROID);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWebView\", {\n /**\n * Property is to identify whether application ran in web view.\n *\n * @returns {boolean} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.isWebView)) {\n window.browserDetails.isWebView = !(isUndefined(window.cordova) && isUndefined(window.PhoneGap)\n && isUndefined(window.phonegap) && window.forge !== 'object');\n return window.browserDetails.isWebView;\n }\n return window.browserDetails.isWebView;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"isWindows\", {\n /**\n * Property is to get whether the userAgent is Windows.\n *\n * @returns {boolean} ?\n */\n get: function () {\n return Browser.getValue('isWindows', REGX_WINDOWS);\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchStartEvent\", {\n /**\n * Property is to get the touch start event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchStartEvent)) {\n return window.browserDetails.touchStartEvent = Browser.getTouchStartEvent();\n }\n return window.browserDetails.touchStartEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchMoveEvent\", {\n /**\n * Property is to get the touch move event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchMoveEvent)) {\n return window.browserDetails.touchMoveEvent = Browser.getTouchMoveEvent();\n }\n return window.browserDetails.touchMoveEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchEndEvent\", {\n /**\n * Property is to get the touch end event. It returns event name based on browser.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchEndEvent)) {\n return window.browserDetails.touchEndEvent = Browser.getTouchEndEvent();\n }\n return window.browserDetails.touchEndEvent;\n },\n enumerable: true,\n configurable: true\n });\n Object.defineProperty(Browser, \"touchCancelEvent\", {\n /**\n * Property is to cancel the touch end event.\n *\n * @returns {string} ?\n */\n get: function () {\n if (isUndefined(window.browserDetails.touchCancelEvent)) {\n return window.browserDetails.touchCancelEvent = Browser.getTouchCancelEvent();\n }\n return window.browserDetails.touchCancelEvent;\n },\n enumerable: true,\n configurable: true\n });\n /* istanbul ignore next */\n Browser.uA = typeof navigator !== 'undefined' ? navigator.userAgent : '';\n return Browser;\n}());\nexport { Browser };\n","import { debounce, extend } from './util';\nimport { Browser } from './browser';\n/**\n * EventHandler class provides option to add, remove, clear and trigger events to a HTML DOM element\n * ```html\n *
\n * \n * ```\n */\nvar EventHandler = /** @class */ (function () {\n function EventHandler() {\n }\n // to get the event data based on element\n EventHandler.addOrGetEventData = function (element) {\n if ('__eventList' in element) {\n return element.__eventList.events;\n }\n else {\n element.__eventList = {};\n return element.__eventList.events = [];\n }\n };\n /**\n * Add an event to the specified DOM element.\n *\n * @param {any} element - Target HTML DOM element\n * @param {string} eventName - A string that specifies the name of the event\n * @param {Function} listener - Specifies the function to run when the event occurs\n * @param {Object} bindTo - A object that binds 'this' variable in the event handler\n * @param {number} intDebounce - Specifies at what interval given event listener should be triggered.\n * @returns {Function} ?\n */\n EventHandler.add = function (element, eventName, listener, bindTo, intDebounce) {\n var eventData = EventHandler.addOrGetEventData(element);\n var debounceListener;\n if (intDebounce) {\n debounceListener = debounce(listener, intDebounce);\n }\n else {\n debounceListener = listener;\n }\n if (bindTo) {\n debounceListener = debounceListener.bind(bindTo);\n }\n var event = eventName.split(' ');\n for (var i = 0; i < event.length; i++) {\n eventData.push({\n name: event[parseInt(i.toString(), 10)],\n listener: listener,\n debounce: debounceListener\n });\n if (Browser.isIE) {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener);\n }\n else {\n element.addEventListener(event[parseInt(i.toString(), 10)], debounceListener, { passive: false });\n }\n }\n return debounceListener;\n };\n /**\n * Remove an event listener that has been attached before.\n *\n * @param {any} element - Specifies the target html element to remove the event\n * @param {string} eventName - A string that specifies the name of the event to remove\n * @param {Function} listener - Specifies the function to remove\n * @returns {void} ?\n */\n EventHandler.remove = function (element, eventName, listener) {\n var eventData = EventHandler.addOrGetEventData(element);\n var event = eventName.split(' ');\n var _loop_1 = function (j) {\n var index = -1;\n var debounceListener;\n if (eventData && eventData.length !== 0) {\n eventData.some(function (x, i) {\n return x.name === event[parseInt(j.toString(), 10)] && x.listener === listener ?\n (index = i, debounceListener = x.debounce, true) : false;\n });\n }\n if (index !== -1) {\n eventData.splice(index, 1);\n }\n if (debounceListener) {\n element.removeEventListener(event[parseInt(j.toString(), 10)], debounceListener);\n }\n };\n for (var j = 0; j < event.length; j++) {\n _loop_1(j);\n }\n };\n /**\n * Clear all the event listeners that has been previously attached to the element.\n *\n * @param {any} element - Specifies the target html element to clear the events\n * @returns {void} ?\n */\n EventHandler.clearEvents = function (element) {\n var eventData;\n var copyData;\n // eslint-disable-next-line\n eventData = EventHandler.addOrGetEventData(element);\n // eslint-disable-next-line\n copyData = extend([], copyData, eventData);\n for (var i = 0; i < copyData.length; i++) {\n element.removeEventListener(copyData[parseInt(i.toString(), 10)].name, copyData[parseInt(i.toString(), 10)].debounce);\n eventData.shift();\n }\n };\n /**\n * Trigger particular event of the element.\n *\n * @param {any} element - Specifies the target html element to trigger the events\n * @param {string} eventName - Specifies the event to trigger for the specified element.\n * Can be a custom event, or any of the standard events.\n * @param {any} eventProp - Additional parameters to pass on to the event properties\n * @returns {void} ?\n */\n EventHandler.trigger = function (element, eventName, eventProp) {\n var eventData = EventHandler.addOrGetEventData(element);\n for (var _i = 0, eventData_1 = eventData; _i < eventData_1.length; _i++) {\n var event_1 = eventData_1[_i];\n if (event_1.name === eventName) {\n event_1.debounce.call(this, eventProp);\n }\n }\n };\n return EventHandler;\n}());\nexport { EventHandler };\n","/**\n * Functions related to dom operations.\n */\nimport { EventHandler } from './event-handler';\nimport { isNullOrUndefined, getValue, setValue, isObject, extend } from './util';\nvar SVG_REG = /^svg|^path|^g/;\n/**\n * Function to create Html element.\n *\n * @param {string} tagName - Name of the tag, id and class names.\n * @param {ElementProperties} properties - Object to set properties in the element.\n * @param {ElementProperties} properties.id - To set the id to the created element.\n * @param {ElementProperties} properties.className - To add classes to the element.\n * @param {ElementProperties} properties.innerHTML - To set the innerHTML to element.\n * @param {ElementProperties} properties.styles - To set the some custom styles to element.\n * @param {ElementProperties} properties.attrs - To set the attributes to element.\n * @returns {any} ?\n * @private\n */\nexport function createElement(tagName, properties) {\n var element = (SVG_REG.test(tagName) ? document.createElementNS('http://www.w3.org/2000/svg', tagName) : document.createElement(tagName));\n if (typeof (properties) === 'undefined') {\n return element;\n }\n element.innerHTML = (properties.innerHTML ? properties.innerHTML : '');\n if (properties.className !== undefined) {\n element.className = properties.className;\n }\n if (properties.id !== undefined) {\n element.id = properties.id;\n }\n if (properties.styles !== undefined) {\n element.setAttribute('style', properties.styles);\n }\n if (properties.attrs !== undefined) {\n attributes(element, properties.attrs);\n }\n return element;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to add a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function addClass(elements, classes) {\n var classList = getClassList(classes);\n var regExp = RegExp;\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n for (var _b = 0, classList_1 = classList; _b < classList_1.length; _b++) {\n var className = classList_1[_b];\n if (isObject(ele)) {\n var curClass = getValue('attributes.className', ele);\n if (isNullOrUndefined(curClass)) {\n setValue('attributes.className', className, ele);\n }\n else if (!new regExp('\\\\b' + className + '\\\\b', 'i').test(curClass)) {\n setValue('attributes.className', curClass + ' ' + className, ele);\n }\n }\n else {\n if (!ele.classList.contains(className)) {\n ele.classList.add(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to add the classes to array of elements\n *\n * @param {Element[]|NodeList} elements - An array of elements that need to remove a list of classes\n * @param {string|string[]} classes - String or array of string that need to add an individual element as a class\n * @returns {any} .\n * @private\n */\nexport function removeClass(elements, classes) {\n var classList = getClassList(classes);\n for (var _i = 0, _a = elements; _i < _a.length; _i++) {\n var ele = _a[_i];\n var flag = isObject(ele);\n var canRemove = flag ? getValue('attributes.className', ele) : ele.className !== '';\n if (canRemove) {\n for (var _b = 0, classList_2 = classList; _b < classList_2.length; _b++) {\n var className = classList_2[_b];\n if (flag) {\n var classes_1 = getValue('attributes.className', ele);\n var classArr = classes_1.split(' ');\n var index = classArr.indexOf(className);\n if (index !== -1) {\n classArr.splice(index, 1);\n }\n setValue('attributes.className', classArr.join(' '), ele);\n }\n else {\n ele.classList.remove(className);\n }\n }\n }\n }\n return elements;\n}\n/**\n * The function used to get classlist.\n *\n * @param {string | string[]} classes - An element the need to check visibility\n * @returns {string[]} ?\n * @private\n */\nfunction getClassList(classes) {\n var classList = [];\n if (typeof classes === 'string') {\n classList.push(classes);\n }\n else {\n classList = classes;\n }\n return classList;\n}\n/**\n * The function used to check element is visible or not.\n *\n * @param {Element|Node} element - An element the need to check visibility\n * @returns {boolean} ?\n * @private\n */\nexport function isVisible(element) {\n var ele = element;\n return (ele.style.visibility === '' && ele.offsetWidth > 0);\n}\n/**\n * The function used to insert an array of elements into a first of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to prepend.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function prepend(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n toElement.insertBefore(docFrag, toElement.firstElementChild);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function used to insert an array of elements into last of the element.\n *\n * @param {Element[]|NodeList} fromElements - An array of elements that need to append.\n * @param {Element} toElement - An element that is going to prepend.\n * @param {boolean} isEval - ?\n * @returns {Element[] | NodeList} ?\n * @private\n */\nexport function append(fromElements, toElement, isEval) {\n var docFrag = document.createDocumentFragment();\n if (fromElements instanceof NodeList) {\n while (fromElements.length > 0) {\n docFrag.appendChild(fromElements[0]);\n }\n }\n else {\n for (var _i = 0, _a = fromElements; _i < _a.length; _i++) {\n var ele = _a[_i];\n docFrag.appendChild(ele);\n }\n }\n toElement.appendChild(docFrag);\n if (isEval) {\n executeScript(toElement);\n }\n return fromElements;\n}\n/**\n * The function is used to evaluate script from Ajax request\n *\n * @param {Element} ele - An element is going to evaluate the script\n * @returns {void} ?\n */\nfunction executeScript(ele) {\n var eleArray = ele.querySelectorAll('script');\n eleArray.forEach(function (element) {\n var script = document.createElement('script');\n script.text = element.innerHTML;\n document.head.appendChild(script);\n detach(script);\n });\n}\n/**\n * The function used to remove the element from parentnode\n *\n * @param {Element|Node|HTMLElement} element - An element that is going to detach from the Dom\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function detach(element) {\n var parentNode = element.parentNode;\n if (parentNode) {\n return parentNode.removeChild(element);\n }\n}\n/**\n * The function used to remove the element from Dom also clear the bounded events\n *\n * @param {Element|Node|HTMLElement} element - An element remove from the Dom\n * @returns {void} ?\n * @private\n */\nexport function remove(element) {\n var parentNode = element.parentNode;\n EventHandler.clearEvents(element);\n parentNode.removeChild(element);\n}\n/**\n * The function helps to set multiple attributes to an element\n *\n * @param {Element|Node} element - An element that need to set attributes.\n * @param {string} attributes - JSON Object that is going to as attributes.\n * @returns {Element} ?\n * @private\n */\n// eslint-disable-next-line\nexport function attributes(element, attributes) {\n var keys = Object.keys(attributes);\n var ele = element;\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (isObject(ele)) {\n var iKey = key;\n if (key === 'tabindex') {\n iKey = 'tabIndex';\n }\n ele.attributes[\"\" + iKey] = attributes[\"\" + key];\n }\n else {\n ele.setAttribute(key, attributes[\"\" + key]);\n }\n }\n return ele;\n}\n/**\n * The function selects the element from giving context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function select(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n return context.querySelector(selector);\n}\n/**\n * The function selects an array of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @param {Document|Element} context - It is an optional type, That specifies a Dom context.\n * @param {boolean} needsVDOM ?\n * @returns {HTMLElement[]} ?\n * @private\n */\n// eslint-disable-next-line\nexport function selectAll(selector, context, needsVDOM) {\n if (context === void 0) { context = document; }\n selector = querySelectId(selector);\n var nodeList = context.querySelectorAll(selector);\n return nodeList;\n}\n/**\n * The function selects an id of element from the given context.\n *\n * @param {string} selector - Selector string need fetch element\n * @returns {string} ?\n * @private\n */\nfunction querySelectId(selector) {\n var charRegex = /(!|\"|\\$|%|&|'|\\(|\\)|\\*|\\/|:|;|<|=|\\?|@|\\]|\\^|`|{|}|\\||\\+|~)/g;\n if (selector.match(/#[0-9]/g) || selector.match(charRegex)) {\n var idList = selector.split(',');\n for (var i = 0; i < idList.length; i++) {\n var list = idList[parseInt(i.toString(), 10)].split(' ');\n for (var j = 0; j < list.length; j++) {\n if (list[parseInt(j.toString(), 10)].indexOf('#') > -1) {\n if (!list[parseInt(j.toString(), 10)].match(/\\[.*\\]/)) {\n var splitId = list[parseInt(j.toString(), 10)].split('#');\n if (splitId[1].match(/^\\d/) || splitId[1].match(charRegex)) {\n var setId = list[parseInt(j.toString(), 10)].split('.');\n setId[0] = setId[0].replace(/#/, '[id=\\'') + '\\']';\n list[parseInt(j.toString(), 10)] = setId.join('.');\n }\n }\n }\n }\n idList[parseInt(i.toString(), 10)] = list.join(' ');\n }\n return idList.join(',');\n }\n return selector;\n}\n/**\n * Returns single closest parent element based on class selector.\n *\n * @param {Element} element - An element that need to find the closest element.\n * @param {string} selector - A classSelector of closest element.\n * @returns {Element} ?\n * @private\n */\nexport function closest(element, selector) {\n var el = element;\n if (typeof el.closest === 'function') {\n return el.closest(selector);\n }\n while (el && el.nodeType === 1) {\n if (matches(el, selector)) {\n return el;\n }\n el = el.parentNode;\n }\n return null;\n}\n/**\n * Returns all sibling elements of the given element.\n *\n * @param {Element|Node} element - An element that need to get siblings.\n * @returns {Element[]} ?\n * @private\n */\nexport function siblings(element) {\n var siblings = [];\n var childNodes = Array.prototype.slice.call(element.parentNode.childNodes);\n for (var _i = 0, childNodes_1 = childNodes; _i < childNodes_1.length; _i++) {\n var curNode = childNodes_1[_i];\n if (curNode.nodeType === Node.ELEMENT_NODE && element !== curNode) {\n siblings.push(curNode);\n }\n }\n return siblings;\n}\n/**\n * set the value if not exist. Otherwise set the existing value\n *\n * @param {HTMLElement} element - An element to which we need to set value.\n * @param {string} property - Property need to get or set.\n * @param {string} value - value need to set.\n * @returns {string} ?\n * @private\n */\nexport function getAttributeOrDefault(element, property, value) {\n var attrVal;\n var isObj = isObject(element);\n if (isObj) {\n attrVal = getValue('attributes.' + property, element);\n }\n else {\n attrVal = element.getAttribute(property);\n }\n if (isNullOrUndefined(attrVal) && value) {\n if (!isObj) {\n element.setAttribute(property, value.toString());\n }\n else {\n element.attributes[\"\" + property] = value;\n }\n attrVal = value;\n }\n return attrVal;\n}\n/**\n * Set the style attributes to Html element.\n *\n * @param {HTMLElement} element - Element which we want to set attributes\n * @param {any} attrs - Set the given attributes to element\n * @returns {void} ?\n * @private\n */\nexport function setStyleAttribute(element, attrs) {\n if (attrs !== undefined) {\n Object.keys(attrs).forEach(function (key) {\n // eslint-disable-next-line\n element.style[key] = attrs[key];\n });\n }\n}\n/**\n * Method for add and remove classes to a dom element.\n *\n * @param {Element} element - Element for add and remove classes\n * @param {string[]} addClasses - List of classes need to be add to the element\n * @param {string[]} removeClasses - List of classes need to be remove from the element\n * @returns {void} ?\n * @private\n */\nexport function classList(element, addClasses, removeClasses) {\n addClass([element], addClasses);\n removeClass([element], removeClasses);\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Element} element - Element to compare with the selector.\n * @param {string} selector - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function matches(element, selector) {\n // eslint-disable-next-line\n var matches = element.matches || element.msMatchesSelector || element.webkitMatchesSelector;\n if (matches) {\n return matches.call(element, selector);\n }\n else {\n return [].indexOf.call(document.querySelectorAll(selector), element) !== -1;\n }\n}\n/**\n * Method to get the html text from DOM.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} innerHTML - String selector which element will satisfy.\n * @returns {void} ?\n * @private\n */\nexport function includeInnerHTML(ele, innerHTML) {\n ele.innerHTML = innerHTML;\n}\n/**\n * Method to get the containsclass.\n *\n * @param {HTMLElement} ele - Element to compare with the selector.\n * @param {string} className - String selector which element will satisfy.\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function containsClass(ele, className) {\n if (isObject(ele)) {\n // eslint-disable-next-line\n return new RegExp('\\\\b' + className + '\\\\b', 'i').test(ele.attributes.className);\n }\n else {\n return ele.classList.contains(className);\n }\n}\n/**\n * Method to check whether the element matches the given selector.\n *\n * @param {Object} element - Element to compare with the selector.\n * @param {boolean} deep ?\n * @returns {any} ?\n * @private\n */\n// eslint-disable-next-line\nexport function cloneNode(element, deep) {\n if (isObject(element)) {\n if (deep) {\n return extend({}, {}, element, true);\n }\n }\n else {\n return element.cloneNode(deep);\n }\n}\n","import { isUndefined, isNullOrUndefined, merge, setImmediate, setValue, isBlazor, getValue, extend } from './util';\nimport { addClass, removeClass } from './dom';\nimport { Observer } from './observer';\nvar isColEName = new RegExp(']');\n/* tslint:enable:no-any */\n/**\n * Base library module is common module for Framework modules like touch,keyboard and etc.,\n *\n * @private\n */\nvar Base = /** @class */ (function () {\n /**\n * Base constructor accept options and element\n *\n * @param {Object} options ?\n * @param {string} element ?\n */\n function Base(options, element) {\n this.isRendered = false;\n this.isComplexArraySetter = false;\n this.isServerRendered = false;\n this.allowServerDataBinding = true;\n this.isProtectedOnChange = true;\n this.properties = {};\n this.changedProperties = {};\n this.oldProperties = {};\n this.bulkChanges = {};\n this.refreshing = false;\n this.ignoreCollectionWatch = false;\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.childChangedProperties = {};\n this.modelObserver = new Observer(this);\n if (!isUndefined(element)) {\n if ('string' === typeof (element)) {\n this.element = document.querySelector(element);\n }\n else {\n this.element = element;\n }\n if (!isNullOrUndefined(this.element)) {\n this.isProtectedOnChange = false;\n this.addInstance();\n }\n }\n if (!isUndefined(options)) {\n this.setProperties(options, true);\n }\n this.isDestroyed = false;\n }\n /** Property base section */\n /**\n * Function used to set bunch of property at a time.\n *\n * @private\n * @param {Object} prop - JSON object which holds components properties.\n * @param {boolean} muteOnChange ? - Specifies to true when we set properties.\n * @returns {void} ?\n */\n Base.prototype.setProperties = function (prop, muteOnChange) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = !!muteOnChange;\n merge(this, prop);\n if (muteOnChange !== true) {\n merge(this.changedProperties, prop);\n this.dataBind();\n }\n else if (isBlazor() && this.isRendered) {\n this.serverDataBind(prop);\n }\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.isProtectedOnChange = prevDetection;\n };\n /**\n * Calls for child element data bind\n *\n * @param {Object} obj ?\n * @param {Object} parent ?\n * @returns {void} ?\n */\n // tslint:disable-next-line:no-any\n Base.callChildDataBind = function (obj, parent) {\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n if (parent[\"\" + key] instanceof Array) {\n for (var _a = 0, _b = parent[\"\" + key]; _a < _b.length; _a++) {\n var obj_1 = _b[_a];\n if (obj_1.dataBind !== undefined) {\n obj_1.dataBind();\n }\n }\n }\n else {\n parent[\"\" + key].dataBind();\n }\n }\n };\n Base.prototype.clearChanges = function () {\n this.finalUpdate();\n this.changedProperties = {};\n this.oldProperties = {};\n this.childChangedProperties = {};\n };\n /**\n * Bind property changes immediately to components\n *\n * @returns {void} ?\n */\n Base.prototype.dataBind = function () {\n Base.callChildDataBind(this.childChangedProperties, this);\n if (Object.getOwnPropertyNames(this.changedProperties).length) {\n var prevDetection = this.isProtectedOnChange;\n var newChanges = this.changedProperties;\n var oldChanges = this.oldProperties;\n this.clearChanges();\n this.isProtectedOnChange = true;\n this.onPropertyChanged(newChanges, oldChanges);\n this.isProtectedOnChange = prevDetection;\n }\n };\n /* tslint:disable:no-any */\n Base.prototype.serverDataBind = function (newChanges) {\n if (!isBlazor()) {\n return;\n }\n newChanges = newChanges ? newChanges : {};\n extend(this.bulkChanges, {}, newChanges, true);\n var sfBlazor = 'sfBlazor';\n if (this.allowServerDataBinding && window[\"\" + sfBlazor].updateModel) {\n window[\"\" + sfBlazor].updateModel(this);\n this.bulkChanges = {};\n }\n };\n /* tslint:enable:no-any */\n Base.prototype.saveChanges = function (key, newValue, oldValue) {\n if (isBlazor()) {\n // tslint:disable-next-line:no-any\n var newChanges = {};\n newChanges[\"\" + key] = newValue;\n this.serverDataBind(newChanges);\n }\n if (this.isProtectedOnChange) {\n return;\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.finalUpdate();\n this.finalUpdate = setImmediate(this.dataBind.bind(this));\n };\n /** Event Base Section */\n /**\n * Adds the handler to the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event\n * @param {Function} handler - Specifies the call to run when the event occurs.\n * @returns {void} ?\n */\n Base.prototype.addEventListener = function (eventName, handler) {\n this.modelObserver.on(eventName, handler);\n };\n /**\n * Removes the handler from the given event listener.\n *\n * @param {string} eventName - A String that specifies the name of the event to remove\n * @param {Function} handler - Specifies the function to remove\n * @returns {void} ?\n */\n Base.prototype.removeEventListener = function (eventName, handler) {\n this.modelObserver.off(eventName, handler);\n };\n /**\n * Triggers the handlers in the specified event.\n *\n * @private\n * @param {string} eventName - Specifies the event to trigger for the specified component properties.\n * Can be a custom event, or any of the standard events.\n * @param {Event} eventProp - Additional parameters to pass on to the event properties\n * @param {Function} successHandler - this function will invoke after event successfully triggered\n * @param {Function} errorHandler - this function will invoke after event if it failured to call.\n * @returns {void} ?\n */\n Base.prototype.trigger = function (eventName, eventProp, successHandler, errorHandler) {\n var _this = this;\n if (this.isDestroyed !== true) {\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n var data = this.modelObserver.notify(eventName, eventProp, successHandler, errorHandler);\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n var blazor = 'Blazor';\n if (window[\"\" + blazor]) {\n var promise = handler.call(this, eventProp);\n if (promise && typeof promise.then === 'function') {\n if (!successHandler) {\n data = promise;\n }\n else {\n promise.then(function (data) {\n if (successHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ?\n JSON.parse(data) : data;\n successHandler.call(_this, data);\n }\n }).catch(function (data) {\n if (errorHandler) {\n data = typeof data === 'string' && _this.modelObserver.isJson(data) ? JSON.parse(data) : data;\n errorHandler.call(_this, data);\n }\n });\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n this.isProtectedOnChange = prevDetection;\n return data;\n }\n };\n /**\n * To maintain instance in base class\n *\n * @returns {void} ?\n */\n Base.prototype.addInstance = function () {\n // Add module class to the root element\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-lib', moduleClass]);\n if (!isNullOrUndefined(this.element.ej2_instances)) {\n this.element.ej2_instances.push(this);\n }\n else {\n setValue('ej2_instances', [this], this.element);\n }\n };\n /**\n * To remove the instance from the element\n *\n * @returns {void} ?\n */\n Base.prototype.destroy = function () {\n var _this = this;\n // eslint-disable-next-line\n this.element.ej2_instances =\n this.element.ej2_instances ? this.element.ej2_instances.filter(function (i) { return i !== _this; })\n : [];\n removeClass([this.element], ['e-' + this.getModuleName()]);\n if (this.element.ej2_instances.length === 0) {\n // Remove module class from the root element\n removeClass([this.element], ['e-lib']);\n }\n this.clearChanges();\n this.modelObserver.destroy();\n this.isDestroyed = true;\n };\n return Base;\n}());\nexport { Base };\n/**\n * Global function to get the component instance from the rendered element.\n *\n * @param {HTMLElement} elem Specifies the HTMLElement or element id string.\n * @param {string} comp Specifies the component module name or Component.\n * @returns {any} ?\n */\n// tslint:disable-next-line:no-any\nexport function getComponent(elem, comp) {\n var instance;\n var i;\n var ele = typeof elem === 'string' ? document.getElementById(elem) : elem;\n for (i = 0; i < ele.ej2_instances.length; i++) {\n instance = ele.ej2_instances[parseInt(i.toString(), 10)];\n if (typeof comp === 'string') {\n var compName = instance.getModuleName();\n if (comp === compName) {\n return instance;\n }\n }\n else {\n // tslint:disable-next-line:no-any\n if (instance instanceof comp) {\n return instance;\n }\n }\n }\n return undefined;\n}\n/**\n * Function to remove the child instances.\n *\n * @param {HTMLElement} element ?\n * @return {void}\n * @private\n */\n// tslint:disable-next-line:no-any\nexport function removeChildInstance(element) {\n // tslint:disable-next-line:no-any\n var childEle = [].slice.call(element.getElementsByClassName('e-control'));\n for (var i = 0; i < childEle.length; i++) {\n var compName = childEle[parseInt(i.toString(), 10)].classList[1].split('e-')[1];\n // tslint:disable-next-line:no-any\n var compInstance = getComponent(childEle[parseInt(i.toString(), 10)], compName);\n if (!isUndefined(compInstance)) {\n compInstance.destroy();\n }\n }\n}\n","import { createInstance, isUndefined, merge, extend, getValue } from './util';\n/**\n * Returns the Class Object\n *\n * @param {ClassObject} instance - instance of ClassObject\n * @param {string} curKey - key of the current instance\n * @param {Object} defaultValue - default Value\n * @param {Object[]} type ?\n * @returns {ClassObject} ?\n */\n// eslint-disable-next-line\nfunction getObject(instance, curKey, defaultValue, type) {\n // eslint-disable-next-line\n if (!instance.properties.hasOwnProperty(curKey) || !(instance.properties[curKey] instanceof type)) {\n instance.properties[\"\" + curKey] = createInstance(type, [instance, curKey, defaultValue]);\n }\n return instance.properties[\"\" + curKey];\n}\n/**\n * Returns object array\n *\n * @param {ClassObject} instance ?\n * @param {string} curKey ?\n * @param {Object[]} defaultValue ?\n * @param {Object} type ?\n * @param {boolean} isSetter ?\n * @param {boolean} isFactory ?\n * @returns {Object[]} ?\n */\n// eslint-disable-next-line\nfunction getObjectArray(instance, curKey, defaultValue, type, isSetter, isFactory) {\n var result = [];\n var len = defaultValue ? defaultValue.length : 0;\n for (var i = 0; i < len; i++) {\n var curType = type;\n if (isFactory) {\n curType = type(defaultValue[parseInt(i.toString(), 10)], instance);\n }\n if (isSetter) {\n var inst = createInstance(curType, [instance, curKey, {}, true]);\n inst.setProperties(defaultValue[parseInt(i.toString(), 10)], true);\n result.push(inst);\n }\n else {\n result.push(createInstance(curType, [instance, curKey, defaultValue[parseInt(i.toString(), 10)], false]));\n }\n }\n return result;\n}\n/**\n * Returns the properties of the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertyGetter(defaultValue, curKey) {\n return function () {\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n this.properties[\"\" + curKey] = defaultValue;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n * Set the properties for the object\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @returns {void} ?\n */\nfunction propertySetter(defaultValue, curKey) {\n return function (newValue) {\n if (this.properties[\"\" + curKey] !== newValue) {\n // eslint-disable-next-line\n var oldVal = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n this.saveChanges(curKey, newValue, oldVal);\n this.properties[\"\" + curKey] = newValue;\n }\n };\n}\n/**\n * Returns complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexGetter(defaultValue, curKey, type) {\n return function () {\n return getObject(this, curKey, defaultValue, type);\n };\n}\n/**\n * Sets complex objects\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexSetter(defaultValue, curKey, type) {\n return function (newValue) {\n getObject(this, curKey, defaultValue, type).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\n// eslint-disable-next-line\nfunction complexFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (this.properties.hasOwnProperty(curKey)) {\n return this.properties[\"\" + curKey];\n }\n else {\n return getObject(this, curKey, defaultValue, curType);\n }\n };\n}\n/**\n *\n * @param {Object} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n var curType = type(newValue, this);\n getObject(this, curKey, defaultValue, curType).setProperties(newValue);\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayGetter(defaultValue, curKey, type) {\n return function () {\n var _this = this;\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, type, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n var ignore = ((this.controlParent !== undefined && this.controlParent.ignoreCollectionWatch)\n || this.ignoreCollectionWatch);\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('push') && !ignore) {\n ['push', 'pop'].forEach(function (extendFunc) {\n var descriptor = {\n value: complexArrayDefinedCallback(extendFunc, curKey, type, _this.properties[\"\" + curKey]).bind(_this),\n configurable: true\n };\n Object.defineProperty(_this.properties[\"\" + curKey], extendFunc, descriptor);\n });\n }\n // eslint-disable-next-line\n if (!this.properties[curKey].hasOwnProperty('isComplexArray')) {\n Object.defineProperty(this.properties[\"\" + curKey], 'isComplexArray', { value: true });\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArraySetter(defaultValue, curKey, type) {\n return function (newValue) {\n this.isComplexArraySetter = true;\n var oldValueCollection = getObjectArray(this, curKey, defaultValue, type, false);\n var newValCollection = getObjectArray(this, curKey, newValue, type, true);\n this.isComplexArraySetter = false;\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {Object[]} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactorySetter(defaultValue, curKey, type) {\n return function (newValue) {\n // eslint-disable-next-line\n var oldValueCollection = this.properties.hasOwnProperty(curKey) ? this.properties[curKey] : defaultValue;\n var newValCollection = getObjectArray(this, curKey, newValue, type, true, true);\n this.saveChanges(curKey, newValCollection, oldValueCollection);\n this.properties[\"\" + curKey] = newValCollection;\n };\n}\n/**\n *\n * @param {Object[]} defaultValue ?\n * @param {string} curKey ?\n * @param {FunctionConstructor} type ?\n * @returns {void} ?\n */\nfunction complexArrayFactoryGetter(defaultValue, curKey, type) {\n return function () {\n var curType = type({});\n // eslint-disable-next-line\n if (!this.properties.hasOwnProperty(curKey)) {\n var defCollection = getObjectArray(this, curKey, defaultValue, curType, false);\n this.properties[\"\" + curKey] = defCollection;\n }\n return this.properties[\"\" + curKey];\n };\n}\n/**\n *\n * @param {string} dFunc ?\n * @param {string} curKey ?\n * @param {Object} type ?\n * @param {Object} prop ?\n * @returns {Object} ?\n */\nfunction complexArrayDefinedCallback(dFunc, curKey, type, prop) {\n /* tslint:disable no-function-expression */\n return function () {\n var newValue = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n newValue[_i] = arguments[_i];\n }\n var keyString = this.propName ? this.getParentKey() + '.' + curKey + '-' : curKey + '-';\n switch (dFunc) {\n case 'push':\n for (var i = 0; i < newValue.length; i++) {\n Array.prototype[\"\" + dFunc].apply(prop, [newValue[parseInt(i.toString(), 10)]]);\n var model_1 = getArrayModel(keyString + (prop.length - 1), newValue[parseInt(i.toString(), 10)], !this.controlParent, dFunc);\n this.serverDataBind(model_1, newValue[parseInt(i.toString(), 10)], false, dFunc);\n }\n break;\n case 'pop':\n Array.prototype[\"\" + dFunc].apply(prop);\n // eslint-disable-next-line\n var model = getArrayModel(keyString + prop.length, null, !this.controlParent, dFunc);\n this.serverDataBind(model, { ejsAction: 'pop' }, false, dFunc);\n break;\n }\n return prop;\n };\n}\n/**\n *\n * @param {string} keyString ?\n * @param {Object} value ?\n * @param {boolean} isControlParent ?\n * @param {string} arrayFunction ?\n * @returns {Object} ?\n */\nfunction getArrayModel(keyString, value, isControlParent, arrayFunction) {\n var modelObject = keyString;\n if (isControlParent) {\n modelObject = {};\n modelObject[\"\" + keyString] = value;\n if (value && typeof value === 'object') {\n var action = 'ejsAction';\n modelObject[\"\" + keyString][\"\" + action] = arrayFunction;\n }\n }\n return modelObject;\n}\n// eslint-disable-next-line\n/**\n * Method used to create property. General syntax below.\n *\n * @param {Object} defaultValue - Specifies the default value of property.\n * @returns {PropertyDecorator} ?\n * ```\n * @Property('TypeScript')\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Property(defaultValue) {\n return function (target, key) {\n var propertyDescriptor = {\n set: propertySetter(defaultValue, key),\n get: propertyGetter(defaultValue, key),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'prop', defaultValue);\n };\n}\n/**\n * Method used to create complex property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Complex({},Type)\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Complex(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexSetter(defaultValue, key, type),\n get: complexGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex Factory property. General syntax below.\n *\n * @param {Function} type - Specifies the class factory type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @ComplexFactory(defaultType, factoryFunction)\n * propertyName: Type1 | Type2;\n * ```\n * @private\n */\nexport function ComplexFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexFactorySetter({}, key, type),\n get: complexFactoryGetter({}, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'complexProp', {}, type);\n };\n}\n/**\n * Method used to create complex array property. General syntax below.\n *\n * @param {any} defaultValue - Specifies the default value of property.\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyDecorator} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function Collection(defaultValue, type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArraySetter(defaultValue, key, type),\n get: complexArrayGetter(defaultValue, key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', defaultValue, type);\n };\n}\n/**\n * Method used to create complex factory array property. General syntax below.\n *\n * @param {Function} type - Specifies the class type of complex object.\n * @returns {PropertyCollectionInfo} ?\n * ```\n * @Collection([], Type);\n * propertyName: Type;\n * ```\n * @private\n */\nexport function CollectionFactory(type) {\n return function (target, key) {\n var propertyDescriptor = {\n set: complexArrayFactorySetter([], key, type),\n get: complexArrayFactoryGetter([], key, type),\n enumerable: true,\n configurable: true\n };\n //new property creation\n Object.defineProperty(target, key, propertyDescriptor);\n addPropertyCollection(target, key, 'colProp', {}, type);\n };\n}\n/**\n * Method used to create event property. General syntax below.\n *\n * @returns {PropertyDecorator} ?\n * ```\n * @Event(()=>{return true;})\n * ```\n * @private\n */\nexport function Event() {\n return function (target, key) {\n var eventDescriptor = {\n set: function (newValue) {\n var oldValue = this.properties[\"\" + key];\n if (oldValue !== newValue) {\n var finalContext = getParentContext(this, key);\n if (isUndefined(oldValue) === false) {\n finalContext.context.removeEventListener(finalContext.prefix, oldValue);\n }\n finalContext.context.addEventListener(finalContext.prefix, newValue);\n this.properties[\"\" + key] = newValue;\n }\n },\n get: propertyGetter(undefined, key),\n enumerable: true,\n configurable: true\n };\n Object.defineProperty(target, key, eventDescriptor);\n addPropertyCollection(target, key, 'event');\n };\n}\n/**\n * NotifyPropertyChanges is triggers the call back when the property has been changed.\n *\n * @param {Function} classConstructor ?\n * @returns {void} ?\n * ```\n * @NotifyPropertyChanges\n * class DemoClass implements INotifyPropertyChanged {\n *\n * @Property()\n * property1: string;\n *\n * dataBind: () => void;\n *\n * constructor() { }\n *\n * onPropertyChanged(newProp: any, oldProp: any) {\n * // Called when property changed\n * }\n * }\n * ```\n * @private\n */\n// eslint-disable-next-line\nexport function NotifyPropertyChanges(classConstructor) {\n /** Need to code */\n}\n/**\n * Method used to create the builderObject for the target component.\n *\n * @param {BuildInfo} target ?\n * @param {string} key ?\n * @param {string} propertyType ?\n * @param {Object} defaultValue ?\n * @param {Function} type ?\n * @returns {void} ?\n * @private\n */\nfunction addPropertyCollection(target, key, propertyType, defaultValue, type) {\n if (isUndefined(target.propList)) {\n target.propList = {\n props: [],\n complexProps: [],\n colProps: [],\n events: [],\n propNames: [],\n complexPropNames: [],\n colPropNames: [],\n eventNames: []\n };\n }\n // eslint-disable-next-line\n target.propList[propertyType + 's'].push({\n propertyName: key,\n defaultValue: defaultValue,\n type: type\n });\n // eslint-disable-next-line\n target.propList[propertyType + 'Names'].push(key);\n}\n/**\n * Returns an object containing the builder properties\n *\n * @param {Function} component ?\n * @returns {Object} ?\n * @private\n */\nfunction getBuilderProperties(component) {\n if (isUndefined(component.prototype.builderObject)) {\n component.prototype.builderObject = {\n properties: {}, propCollections: [], add: function () {\n this.isPropertyArray = true;\n this.propCollections.push(extend({}, this.properties, {}));\n }\n };\n var rex = /complex/;\n for (var _i = 0, _a = Object.keys(component.prototype.propList); _i < _a.length; _i++) {\n var key = _a[_i];\n var _loop_1 = function (prop) {\n if (rex.test(key)) {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n var childType = {};\n merge(childType, getBuilderProperties(prop.type));\n value(childType);\n var tempValue;\n if (!childType.isPropertyArray) {\n tempValue = extend({}, childType.properties, {});\n }\n else {\n tempValue = childType.propCollections;\n }\n this.properties[prop.propertyName] = tempValue;\n childType.properties = {};\n childType.propCollections = [];\n childType.isPropertyArray = false;\n return this;\n };\n }\n else {\n component.prototype.builderObject[prop.propertyName] = function (value) {\n this.properties[prop.propertyName] = value;\n return this;\n };\n }\n };\n for (var _b = 0, _c = component.prototype.propList[\"\" + key]; _b < _c.length; _b++) {\n var prop = _c[_b];\n _loop_1(prop);\n }\n }\n }\n return component.prototype.builderObject;\n}\n/**\n * Method used to create builder for the components\n *\n * @param {any} component -specifies the target component for which builder to be created.\n * @returns {Object} ?\n * @private\n */\nexport function CreateBuilder(component) {\n var builderFunction = function (element) {\n this.element = element;\n return this;\n };\n var instanceFunction = function (element) {\n // eslint-disable-next-line\n if (!builderFunction.prototype.hasOwnProperty('create')) {\n builderFunction.prototype = getBuilderProperties(component);\n builderFunction.prototype.create = function () {\n var temp = extend({}, {}, this.properties);\n this.properties = {};\n return new component(temp, this.element);\n };\n }\n return new builderFunction(element);\n };\n return instanceFunction;\n}\n/**\n * Returns parent options for the object\n *\n * @param {Object} context ?\n * @param {string} prefix ?\n * @returns {ParentOption} ?\n * @private\n */\nfunction getParentContext(context, prefix) {\n // eslint-disable-next-line\n if (context.hasOwnProperty('parentObj') === false) {\n return { context: context, prefix: prefix };\n }\n else {\n var curText = getValue('propName', context);\n if (curText) {\n prefix = curText + '-' + prefix;\n }\n return getParentContext(getValue('parentObj', context), prefix);\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { createElement, selectAll, closest } from './dom';\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { EventHandler } from './event-handler';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\n/**\n * The Animation framework provide options to animate the html DOM elements\n * ```typescript\n * let animeObject = new Animation({\n * name: 'SlideLeftIn',\n * duration: 1000\n * });\n * animeObject.animate('#anime1');\n * animeObject.animate('#anime2', { duration: 500 });\n * ```\n */\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation(options) {\n var _this = _super.call(this, options, undefined) || this;\n /**\n * @private\n */\n _this.easing = {\n ease: 'cubic-bezier(0.250, 0.100, 0.250, 1.000)',\n linear: 'cubic-bezier(0.250, 0.250, 0.750, 0.750)',\n easeIn: 'cubic-bezier(0.420, 0.000, 1.000, 1.000)',\n easeOut: 'cubic-bezier(0.000, 0.000, 0.580, 1.000)',\n easeInOut: 'cubic-bezier(0.420, 0.000, 0.580, 1.000)',\n elasticInOut: 'cubic-bezier(0.5,-0.58,0.38,1.81)',\n elasticIn: 'cubic-bezier(0.17,0.67,0.59,1.81)',\n elasticOut: 'cubic-bezier(0.7,-0.75,0.99,1.01)'\n };\n return _this;\n }\n Animation_1 = Animation;\n /**\n * Applies animation to the current element.\n *\n * @param {string | HTMLElement} element - Element which needs to be animated.\n * @param {AnimationModel} options - Overriding default animation settings.\n * @returns {void} ?\n */\n Animation.prototype.animate = function (element, options) {\n options = !options ? {} : options;\n var model = this.getModel(options);\n if (typeof element === 'string') {\n var elements = Array.prototype.slice.call(selectAll(element, document));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element_1 = elements_1[_i];\n model.element = element_1;\n Animation_1.delayAnimation(model);\n }\n }\n else {\n model.element = element;\n Animation_1.delayAnimation(model);\n }\n };\n /**\n * Stop the animation effect on animated element.\n *\n * @param {HTMLElement} element - Element which needs to be stop the animation.\n * @param {AnimationOptions} model - Handling the animation model at stop function.\n * @return {void}\n */\n Animation.stop = function (element, model) {\n element.style.animation = '';\n element.removeAttribute('e-animate');\n var animationId = element.getAttribute('e-animation-id');\n if (animationId) {\n var frameId = parseInt(animationId, 10);\n cancelAnimationFrame(frameId);\n element.removeAttribute('e-animation-id');\n }\n if (model && model.end) {\n model.end.call(this, model);\n }\n };\n /**\n * Set delay to animation element\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.delayAnimation = function (model) {\n if (animationMode === 'Disable' || animationMode === GlobalAnimationMode.Disable) {\n if (model.begin) {\n model.begin.call(this, model);\n }\n if (model.end) {\n model.end.call(this, model);\n }\n }\n else {\n if (model.delay) {\n setTimeout(function () { Animation_1.applyAnimation(model); }, model.delay);\n }\n else {\n Animation_1.applyAnimation(model);\n }\n }\n };\n /**\n * Triggers animation\n *\n * @param {AnimationModel} model ?\n * @returns {void}\n */\n Animation.applyAnimation = function (model) {\n var _this = this;\n model.timeStamp = 0;\n var step = 0;\n var timerId = 0;\n var prevTimeStamp = 0;\n var duration = model.duration;\n model.element.setAttribute('e-animate', 'true');\n var startAnimation = function (timeStamp) {\n try {\n if (timeStamp) {\n // let step: number = model.timeStamp = timeStamp - startTime;\n /** phantomjs workaround for timestamp fix */\n prevTimeStamp = prevTimeStamp === 0 ? timeStamp : prevTimeStamp;\n model.timeStamp = (timeStamp + model.timeStamp) - prevTimeStamp;\n prevTimeStamp = timeStamp;\n /** phantomjs workaround end */\n // trigger animation begin event\n if (!step && model.begin) {\n model.begin.call(_this, model);\n }\n step = step + 1;\n var avg = model.timeStamp / step;\n if (model.timeStamp < duration && model.timeStamp + avg < duration && model.element.getAttribute('e-animate')) {\n // apply animation effect to the current element\n model.element.style.animation = model.name + ' ' + model.duration + 'ms ' + model.timingFunction;\n if (model.progress) {\n model.progress.call(_this, model);\n }\n // repeat requestAnimationFrame\n requestAnimationFrame(startAnimation);\n }\n else {\n // clear requestAnimationFrame\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n model.element.removeAttribute('e-animate');\n model.element.style.animation = '';\n if (model.end) {\n model.end.call(_this, model);\n }\n }\n }\n else {\n //startTime = performance.now();\n // set initial requestAnimationFrame\n timerId = requestAnimationFrame(startAnimation);\n model.element.setAttribute('e-animation-id', timerId.toString());\n }\n }\n catch (e) {\n cancelAnimationFrame(timerId);\n model.element.removeAttribute('e-animation-id');\n if (model.fail) {\n model.fail.call(_this, e);\n }\n }\n };\n startAnimation();\n };\n /**\n * Returns Animation Model\n *\n * @param {AnimationModel} options ?\n * @returns {AnimationModel} ?\n */\n Animation.prototype.getModel = function (options) {\n return {\n name: options.name || this.name,\n delay: options.delay || this.delay,\n duration: (options.duration !== undefined ? options.duration : this.duration),\n begin: options.begin || this.begin,\n end: options.end || this.end,\n fail: options.fail || this.fail,\n progress: options.progress || this.progress,\n timingFunction: this.easing[options.timingFunction] ? this.easing[options.timingFunction] :\n (options.timingFunction || this.easing[this.timingFunction])\n };\n };\n /**\n * @private\n * @param {AnimationModel} newProp ?\n * @param {AnimationModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Animation.prototype.onPropertyChanged = function (newProp, oldProp) {\n // no code needed\n };\n /**\n * Returns module name as animation\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.getModuleName = function () {\n return 'animation';\n };\n /**\n *\n * @private\n * @returns {void} ?\n */\n Animation.prototype.destroy = function () {\n //Override base destroy;\n };\n var Animation_1;\n __decorate([\n Property('FadeIn')\n ], Animation.prototype, \"name\", void 0);\n __decorate([\n Property(400)\n ], Animation.prototype, \"duration\", void 0);\n __decorate([\n Property('ease')\n ], Animation.prototype, \"timingFunction\", void 0);\n __decorate([\n Property(0)\n ], Animation.prototype, \"delay\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"progress\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"begin\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"end\", void 0);\n __decorate([\n Event()\n ], Animation.prototype, \"fail\", void 0);\n Animation = Animation_1 = __decorate([\n NotifyPropertyChanges\n ], Animation);\n return Animation;\n}(Base));\nexport { Animation };\n/**\n * Ripple provides material theme's wave effect when an element is clicked\n * ```html\n *
\n * \n * ```\n *\n * @private\n * @param {HTMLElement} element - Target element\n * @param {RippleOptions} rippleOptions - Ripple options .\n * @param {Function} done .\n * @returns {void} .\n */\nexport function rippleEffect(element, rippleOptions, done) {\n var rippleModel = getRippleModel(rippleOptions);\n if (rippleModel.rippleFlag === false || (rippleModel.rippleFlag === undefined && !isRippleEnabled)) {\n return (function () {\n // do nothing.\n });\n }\n element.setAttribute('data-ripple', 'true');\n EventHandler.add(element, 'mousedown', rippleHandler, { parent: element, rippleOptions: rippleModel });\n EventHandler.add(element, 'mouseup', rippleUpHandler, { parent: element, rippleOptions: rippleModel, done: done });\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n if (Browser.isPointer) {\n EventHandler.add(element, 'transitionend', rippleLeaveHandler, { parent: element, rippleOptions: rippleModel });\n }\n return (function () {\n element.removeAttribute('data-ripple');\n EventHandler.remove(element, 'mousedown', rippleHandler);\n EventHandler.remove(element, 'mouseup', rippleUpHandler);\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n EventHandler.remove(element, 'transitionend', rippleLeaveHandler);\n });\n}\n/**\n * Handler for ripple model\n *\n * @param {RippleOptions} rippleOptions ?\n * @returns {RippleOptions} ?\n */\nfunction getRippleModel(rippleOptions) {\n var rippleModel = {\n selector: rippleOptions && rippleOptions.selector ? rippleOptions.selector : null,\n ignore: rippleOptions && rippleOptions.ignore ? rippleOptions.ignore : null,\n rippleFlag: rippleOptions && rippleOptions.rippleFlag,\n isCenterRipple: rippleOptions && rippleOptions.isCenterRipple,\n duration: rippleOptions && rippleOptions.duration ? rippleOptions.duration : 350\n };\n return rippleModel;\n}\n/**\n * Handler for ripple event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleHandler(e) {\n var target = (e.target);\n var selector = this.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (this.rippleOptions && closest(target, this.rippleOptions.ignore))) {\n return;\n }\n var offset = element.getBoundingClientRect();\n var offsetX = e.pageX - document.body.scrollLeft;\n var offsetY = e.pageY - ((!document.body.scrollTop && document.documentElement) ?\n document.documentElement.scrollTop : document.body.scrollTop);\n var pageX = Math.max(Math.abs(offsetX - offset.left), Math.abs(offsetX - offset.right));\n var pageY = Math.max(Math.abs(offsetY - offset.top), Math.abs(offsetY - offset.bottom));\n var radius = Math.sqrt(pageX * pageX + pageY * pageY);\n var diameter = radius * 2 + 'px';\n var x = offsetX - offset.left - radius;\n var y = offsetY - offset.top - radius;\n if (this.rippleOptions && this.rippleOptions.isCenterRipple) {\n x = 0;\n y = 0;\n diameter = '100%';\n }\n element.classList.add('e-ripple');\n var duration = this.rippleOptions.duration.toString();\n var styles = 'width: ' + diameter + ';height: ' + diameter + ';left: ' + x + 'px;top: ' + y + 'px;' +\n 'transition-duration: ' + duration + 'ms;';\n var rippleElement = createElement('div', { className: 'e-ripple-element', styles: styles });\n element.appendChild(rippleElement);\n window.getComputedStyle(rippleElement).getPropertyValue('opacity');\n rippleElement.style.transform = 'scale(1)';\n if (element !== this.parent) {\n EventHandler.add(element, 'mouseleave', rippleLeaveHandler, { parent: this.parent, rippleOptions: this.rippleOptions });\n }\n}\n/**\n * Handler for ripple element mouse up event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleUpHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for ripple element mouse move event\n *\n * @param {MouseEvent} e ?\n * @returns {void} ?\n * @private\n */\nfunction rippleLeaveHandler(e) {\n removeRipple(e, this);\n}\n/**\n * Handler for removing ripple element\n *\n * @param {MouseEvent} e ?\n * @param {RippleArgs} eventArgs ?\n * @returns {void} ?\n * @private\n */\nfunction removeRipple(e, eventArgs) {\n var duration = eventArgs.rippleOptions.duration;\n var target = (e.target);\n var selector = eventArgs.rippleOptions.selector;\n var element = selector ? closest(target, selector) : target;\n if (!element || (element && element.className.indexOf('e-ripple') === -1)) {\n return;\n }\n var rippleElements = selectAll('.e-ripple-element', element);\n var rippleElement = rippleElements[rippleElements.length - 1];\n if (rippleElement) {\n rippleElement.style.opacity = '0.5';\n }\n if (eventArgs.parent !== element) {\n EventHandler.remove(element, 'mouseleave', rippleLeaveHandler);\n }\n /* tslint:disable:align */\n setTimeout(function () {\n if (rippleElement && rippleElement.parentNode) {\n rippleElement.parentNode.removeChild(rippleElement);\n }\n if (!element.getElementsByClassName('e-ripple-element').length) {\n element.classList.remove('e-ripple');\n }\n if (eventArgs.done) {\n eventArgs.done(e);\n }\n }, duration);\n}\nexport var isRippleEnabled = false;\n/**\n * Animation Module provides support to enable ripple effect functionality to Essential JS 2 components.\n *\n * @param {boolean} isRipple Specifies the boolean value to enable or disable ripple effect.\n * @returns {boolean} ?\n */\nexport function enableRipple(isRipple) {\n isRippleEnabled = isRipple;\n return isRippleEnabled;\n}\n/**\n * Defines the Modes of Global animation.\n *\n * @private\n */\nexport var animationMode;\n/**\n * This method is used to enable or disable the animation for all components.\n *\n * @param {string|GlobalAnimationMode} value - Specifies the value to enable or disable the animation for all components. When set to 'enable', it enables the animation for all components, regardless of the individual component's animation settings. When set to 'disable', it disables the animation for all components, regardless of the individual component's animation settings.\n * @returns {void}\n */\nexport function setGlobalAnimation(value) {\n animationMode = value;\n}\n/**\n * Defines the global animation modes for all components.\n */\nexport var GlobalAnimationMode;\n(function (GlobalAnimationMode) {\n /**\n * Defines the global animation mode as Default. Animation is enabled or disabled based on the component's animation settings.\n */\n GlobalAnimationMode[\"Default\"] = \"Default\";\n /**\n * Defines the global animation mode as Enable. Enables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Enable\"] = \"Enable\";\n /**\n * Defines the global animation mode as Disable. Disables the animation for all components, regardless of the individual component's animation settings.\n */\n GlobalAnimationMode[\"Disable\"] = \"Disable\";\n})(GlobalAnimationMode || (GlobalAnimationMode = {}));\n","/**\n * Module loading operations\n */\nimport { createInstance, setValue, getValue, deleteObject } from './util';\nvar MODULE_SUFFIX = 'Module';\nvar ModuleLoader = /** @class */ (function () {\n function ModuleLoader(parent) {\n this.loadedModules = [];\n this.parent = parent;\n }\n /**\n * Inject required modules in component library\n *\n * @returns {void} ?\n * @param {ModuleDeclaration[]} requiredModules - Array of modules to be required\n * @param {Function[]} moduleList - Array of modules to be injected from sample side\n */\n ModuleLoader.prototype.inject = function (requiredModules, moduleList) {\n var reqLength = requiredModules.length;\n if (reqLength === 0) {\n this.clean();\n return;\n }\n if (this.loadedModules.length) {\n this.clearUnusedModule(requiredModules);\n }\n for (var i = 0; i < reqLength; i++) {\n var modl = requiredModules[parseInt(i.toString(), 10)];\n for (var _i = 0, moduleList_1 = moduleList; _i < moduleList_1.length; _i++) {\n var module = moduleList_1[_i];\n var modName = modl.member;\n if (module && module.prototype.getModuleName() === modl.member && !this.isModuleLoaded(modName)) {\n var moduleObject = createInstance(module, modl.args);\n var memberName = this.getMemberName(modName);\n if (modl.isProperty) {\n setValue(memberName, module, this.parent);\n }\n else {\n setValue(memberName, moduleObject, this.parent);\n }\n var loadedModule = modl;\n loadedModule.member = memberName;\n this.loadedModules.push(loadedModule);\n }\n }\n }\n };\n /**\n * To remove the created object while destroying the control\n *\n * @returns {void}\n */\n ModuleLoader.prototype.clean = function () {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var modules = _a[_i];\n if (!modules.isProperty) {\n getValue(modules.member, this.parent).destroy();\n }\n }\n this.loadedModules = [];\n };\n /**\n * Removes all unused modules\n *\n * @param {ModuleDeclaration[]} moduleList ?\n * @returns {void} ?\n */\n ModuleLoader.prototype.clearUnusedModule = function (moduleList) {\n var _this = this;\n var usedModules = moduleList.map(function (arg) { return _this.getMemberName(arg.member); });\n var removableModule = this.loadedModules.filter(function (module) {\n return usedModules.indexOf(module.member) === -1;\n });\n for (var _i = 0, removableModule_1 = removableModule; _i < removableModule_1.length; _i++) {\n var mod = removableModule_1[_i];\n if (!mod.isProperty) {\n getValue(mod.member, this.parent).destroy();\n }\n this.loadedModules.splice(this.loadedModules.indexOf(mod), 1);\n deleteObject(this.parent, mod.member);\n }\n };\n /**\n * To get the name of the member.\n *\n * @param {string} name ?\n * @returns {string} ?\n */\n ModuleLoader.prototype.getMemberName = function (name) {\n return name[0].toLowerCase() + name.substring(1) + MODULE_SUFFIX;\n };\n /**\n * Returns boolean based on whether the module specified is loaded or not\n *\n * @param {string} modName ?\n * @returns {boolean} ?\n */\n ModuleLoader.prototype.isModuleLoaded = function (modName) {\n for (var _i = 0, _a = this.loadedModules; _i < _a.length; _i++) {\n var mod = _a[_i];\n if (mod.member === this.getMemberName(modName)) {\n return true;\n }\n }\n return false;\n };\n return ModuleLoader;\n}());\nexport { ModuleLoader };\n","import { createElement } from './dom';\nimport { getValue, containerObject, setValue, isNullOrUndefined } from './util';\nexport var componentList = ['grid', 'pivotview', 'treegrid', 'spreadsheet', 'rangeNavigator', 'DocumentEditor', 'listbox', 'inplaceeditor', 'PdfViewer', 'richtexteditor', 'DashboardLayout', 'chart', 'stockChart', 'circulargauge', 'diagram', 'heatmap', 'lineargauge', 'maps', 'slider', 'smithchart', 'barcode', 'sparkline', 'treemap', 'bulletChart', 'kanban', 'daterangepicker', 'schedule', 'gantt', 'signature', 'query-builder', 'drop-down-tree', 'carousel', 'filemanager', 'uploader', 'accordion', 'tab', 'treeview'];\nvar bypassKey = [115, 121, 110, 99, 102, 117, 115, 105,\n 111, 110, 46, 105, 115, 76, 105, 99, 86, 97, 108,\n 105, 100, 97, 116, 101, 100];\nvar accountURL;\n/**\n * License validation module\n *\n * @private\n */\nvar LicenseValidator = /** @class */ (function () {\n function LicenseValidator(key) {\n this.isValidated = false;\n this.isLicensed = true;\n this.version = '24';\n this.platform = /JavaScript|ASPNET|ASPNETCORE|ASPNETMVC|FileFormats|essentialstudio/i;\n this.errors = {\n noLicense: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n trailExpired: 'This application was built using a trial version of Syncfusion Essential Studio.' +\n ' To remove the license validation message permanently, a valid license key must be included.',\n versionMismatched: 'The included Syncfusion license key is invalid.',\n platformMismatched: 'The included Syncfusion license key is invalid.',\n invalidKey: 'The included Syncfusion license key is invalid.'\n };\n /**\n * To manage licensing operation.\n */\n this.manager = (function () {\n var licKey = null;\n /**\n * Sets the license key.\n *\n * @param {string} key - Specifies the license key.\n * @returns {void}\n */\n function set(key) { licKey = key; }\n /**\n * Gets the license key.\n *\n * @returns {string} -Gets the license key.\n */\n function get() { return licKey; }\n return {\n setKey: set,\n getKey: get\n };\n })();\n /**\n * To manage npx licensing operation.\n */\n this.npxManager = (function () {\n var npxLicKey = 'npxKeyReplace';\n /**\n * Gets the license key.\n *\n * @returns {string} - Gets the license key.\n */\n function get() { return npxLicKey; }\n return {\n getKey: get\n };\n })();\n this.manager.setKey(key);\n }\n /**\n * To validate the provided license key.\n */\n LicenseValidator.prototype.validate = function () {\n var contentKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 108, 105, 99, 101, 110, 115, 101, 67, 111, 110, 116, 101, 110, 116];\n var URLKey = [115, 121, 110, 99, 102, 117, 115, 105, 111, 110, 46,\n 99, 108, 97, 105, 109, 65, 99, 99, 111, 117, 110, 116, 85, 82, 76];\n if (!this.isValidated && (containerObject && !getValue(convertToChar(bypassKey), containerObject) && !getValue('Blazor', containerObject))) {\n var validateMsg = void 0;\n var validateURL = void 0;\n if ((this.manager && this.manager.getKey()) || (this.npxManager && this.npxManager.getKey() !== 'npxKeyReplace')) {\n var result = this.getInfoFromKey();\n if (result && result.length) {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var res = result_1[_i];\n if (!this.platform.test(res.platform) || res.invalidPlatform) {\n validateMsg = this.errors.platformMismatched;\n }\n else if (res.version.indexOf(this.version) === -1) {\n validateMsg = this.errors.versionMismatched;\n validateMsg = validateMsg.replace('##LicenseVersion', res.version);\n validateMsg = validateMsg.replace('##Requireversion', this.version + '.x');\n }\n else if (res.expiryDate) {\n var expDate = new Date(res.expiryDate);\n var currDate = new Date();\n if (expDate !== currDate && expDate < currDate) {\n validateMsg = this.errors.trailExpired;\n }\n else {\n break;\n }\n }\n }\n }\n else {\n validateMsg = this.errors.invalidKey;\n }\n }\n else {\n var licenseContent = getValue(convertToChar(contentKey), containerObject);\n validateURL = getValue(convertToChar(URLKey), containerObject);\n if (licenseContent && licenseContent !== '') {\n validateMsg = licenseContent;\n }\n else {\n validateMsg = this.errors.noLicense;\n }\n }\n if (validateMsg && typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n accountURL = (validateURL && validateURL !== '') ? validateURL : \"https://www.syncfusion.com/account/claim-license-key?pl=SmF2YVNjcmlwdA==&vs=MjQ=&utm_source=es_license_validation_banner&utm_medium=listing&utm_campaign=license-information\";\n var errorDiv = createElement('div', {\n innerHTML: \"\" + validateMsg + ' ' + '
Claim your free account'\n });\n errorDiv.setAttribute('style', \"position: fixed;\\n top: 10px;\\n left: 10px;\\n right: 10px;\\n font-size: 14px;\\n background: #EEF2FF;\\n color: #222222;\\n z-index: 999999999;\\n text-align: left;\\n border: 1px solid #EEEEEE;\\n padding: 10px 11px 10px 50px;\\n border-radius: 8px;\\n font-family: Helvetica Neue, Helvetica, Arial;\");\n document.body.appendChild(errorDiv);\n this.isLicensed = false;\n }\n this.isValidated = true;\n setValue(convertToChar(bypassKey), this.isValidated, containerObject);\n }\n return this.isLicensed;\n };\n LicenseValidator.prototype.getDecryptedData = function (key) {\n try {\n return atob(key);\n }\n catch (error) {\n return '';\n }\n };\n /**\n * Get license information from key.\n *\n * @returns {IValidator} - Get license information from key.\n */\n LicenseValidator.prototype.getInfoFromKey = function () {\n try {\n var licKey = '';\n var pkey = [5439488, 7929856, 5111808, 6488064, 4587520, 7667712, 5439488,\n 6881280, 5177344, 7208960, 4194304, 4456448, 6619136, 7733248, 5242880, 7077888,\n 6356992, 7602176, 4587520, 7274496, 7471104, 7143424];\n var decryptedStr = [];\n var resultArray = [];\n var invalidPlatform = false;\n var isNpxKey = false;\n if (this.manager.getKey()) {\n licKey = this.manager.getKey();\n }\n else {\n isNpxKey = true;\n licKey = this.npxManager.getKey().split('npxKeyReplace')[1];\n }\n var licKeySplit = licKey.split(';');\n for (var _i = 0, licKeySplit_1 = licKeySplit; _i < licKeySplit_1.length; _i++) {\n var lKey = licKeySplit_1[_i];\n var decodeStr = this.getDecryptedData(lKey);\n if (!decodeStr) {\n continue;\n }\n var k = 0;\n var buffr = '';\n if (!isNpxKey) {\n for (var i = 0; i < decodeStr.length; i++, k++) {\n if (k === pkey.length) {\n k = 0;\n }\n var c = decodeStr.charCodeAt(i);\n buffr += String.fromCharCode(c ^ (pkey[parseInt(k.toString(), 10)] >> 16));\n }\n }\n else {\n var charKey = decodeStr[decodeStr.length - 1];\n var decryptedKey = [];\n for (var i = 0; i < decodeStr.length; i++) {\n decryptedKey[parseInt(i.toString(), 10)] = decodeStr[parseInt(i.toString(), 10)].charCodeAt(0) - charKey.charCodeAt(0);\n }\n for (var i = 0; i < decryptedKey.length; i++) {\n buffr += String.fromCharCode(decryptedKey[parseInt(i.toString(), 10)]);\n }\n }\n if (this.platform.test(buffr)) {\n decryptedStr = buffr.split(';');\n invalidPlatform = false;\n // checked the length to verify the key in proper strucutre\n if (decryptedStr.length > 3) {\n resultArray.push({ platform: decryptedStr[0],\n version: decryptedStr[1],\n expiryDate: decryptedStr[2] });\n }\n }\n else if (buffr && buffr.split(';').length > 3) {\n invalidPlatform = true;\n }\n }\n if (invalidPlatform && !resultArray.length) {\n return [{ invalidPlatform: invalidPlatform }];\n }\n else {\n return resultArray.length ? resultArray : null;\n }\n }\n catch (error) {\n return null;\n }\n };\n return LicenseValidator;\n}());\nvar licenseValidator = new LicenseValidator();\n/**\n * Converts the given number to characters.\n *\n * @param {number} cArr - Specifies the license key as number.\n * @returns {string}\n */\nfunction convertToChar(cArr) {\n var ret = '';\n for (var _i = 0, cArr_1 = cArr; _i < cArr_1.length; _i++) {\n var arr = cArr_1[_i];\n ret += String.fromCharCode(arr);\n }\n return ret;\n}\n/**\n * To set license key.\n *\n * @param {string} key - license key\n * @returns {void}\n */\nexport function registerLicense(key) {\n licenseValidator = new LicenseValidator(key);\n}\nexport var validateLicense = function (key) {\n if (key) {\n registerLicense(key);\n }\n return licenseValidator.validate();\n};\nexport var getVersion = function () {\n return licenseValidator.version;\n};\n// Method for create overlay over the sample\nexport var createLicenseOverlay = function () {\n var bannerTemplate = \"\\n
\\n
\\n
\\n \\n
\\n
Claim your FREE account and get a key in less than a minute
\\n
    \\n
  • Access to a 30-day free trial of any of our products.
  • \\n
  • Access to 24x5 support by developers via the support tickets, forum, feature & feedback page and chat.
  • \\n
  • 200+ ebooks on the latest technologies, industry trends, and research topics.\\n
  • \\n
  • Largest collection of over 7,000 flat and wireframe icons for free with Syncfusion Metro Studio.
  • \\n
  • Free and unlimited access to Syncfusion technical blogs and whitepapers.
  • \\n
\\n
Syncfusion is trusted by 29,000+ businesses worldwide
\\n \\n Claim your FREE account\\n
have a Syncfusion account? Sign In
\\n
\\n
\";\n if (typeof document !== 'undefined' && !isNullOrUndefined(document)) {\n var errorBackground = createElement('div', {\n innerHTML: bannerTemplate\n });\n document.body.appendChild(errorBackground);\n }\n};\n","import { getValue, setValue, merge, isBlazor } from './util';\nimport { Base } from './base';\n/**\n * To detect the changes for inner properties.\n *\n * @private\n */\nvar ChildProperty = /** @class */ (function () {\n function ChildProperty(parent, propName, defaultValue, isArray) {\n this.isComplexArraySetter = false;\n this.properties = {};\n this.changedProperties = {};\n this.childChangedProperties = {};\n this.oldProperties = {};\n // eslint-disable-next-line\n this.finalUpdate = function () { };\n this.callChildDataBind = getValue('callChildDataBind', Base);\n this.parentObj = parent;\n this.controlParent = this.parentObj.controlParent || this.parentObj;\n this.propName = propName;\n this.isParentArray = isArray;\n this.setProperties(defaultValue, true);\n }\n /**\n * Updates the property changes\n *\n * @param {boolean} val ?\n * @param {string} propName ?\n * @returns {void} ?\n */\n ChildProperty.prototype.updateChange = function (val, propName) {\n if (val === true) {\n this.parentObj.childChangedProperties[\"\" + propName] = val;\n }\n else {\n delete this.parentObj.childChangedProperties[\"\" + propName];\n }\n if (this.parentObj.updateChange) {\n this.parentObj.updateChange(val, this.parentObj.propName);\n }\n };\n /**\n * Updates time out duration\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.updateTimeOut = function () {\n if (this.parentObj.updateTimeOut) {\n this.parentObj.finalUpdate();\n this.parentObj.updateTimeOut();\n }\n else {\n var changeTime_1 = setTimeout(this.parentObj.dataBind.bind(this.parentObj));\n var clearUpdate = function () {\n clearTimeout(changeTime_1);\n };\n this.finalUpdate = clearUpdate;\n }\n };\n /**\n * Clears changed properties\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.clearChanges = function () {\n this.finalUpdate();\n this.updateChange(false, this.propName);\n this.oldProperties = {};\n this.changedProperties = {};\n };\n /**\n * Set property changes\n *\n * @param {Object} prop ?\n * @param {boolean} muteOnChange ?\n * @returns {void} ?\n */\n ChildProperty.prototype.setProperties = function (prop, muteOnChange) {\n if (muteOnChange === true) {\n merge(this, prop);\n this.updateChange(false, this.propName);\n this.clearChanges();\n }\n else {\n merge(this, prop);\n }\n };\n /**\n * Binds data\n *\n * @returns {void} ?\n */\n ChildProperty.prototype.dataBind = function () {\n this.callChildDataBind(this.childChangedProperties, this);\n if (this.isParentArray) {\n var curIndex = this.parentObj[this.propName].indexOf(this);\n if (Object.keys(this.changedProperties).length) {\n setValue(this.propName + '.' + curIndex, this.changedProperties, this.parentObj.changedProperties);\n setValue(this.propName + '.' + curIndex, this.oldProperties, this.parentObj.oldProperties);\n }\n }\n else {\n this.parentObj.changedProperties[this.propName] = this.changedProperties;\n this.parentObj.oldProperties[this.propName] = this.oldProperties;\n }\n this.clearChanges();\n };\n /**\n * Saves changes to newer values\n *\n * @param {string} key ?\n * @param {Object} newValue ?\n * @param {Object} oldValue ?\n * @param {boolean} restrictServerDataBind ?\n * @returns {void} ?\n */\n ChildProperty.prototype.saveChanges = function (key, newValue, oldValue, restrictServerDataBind) {\n if (this.controlParent.isProtectedOnChange) {\n return;\n }\n if (!restrictServerDataBind) {\n this.serverDataBind(key, newValue, true);\n }\n this.oldProperties[\"\" + key] = oldValue;\n this.changedProperties[\"\" + key] = newValue;\n this.updateChange(true, this.propName);\n this.finalUpdate();\n this.updateTimeOut();\n };\n ChildProperty.prototype.serverDataBind = function (key, value, isSaveChanges, action) {\n if (isBlazor() && !this.parentObj.isComplexArraySetter) {\n var parent_1;\n var newChanges = {};\n var parentKey = isSaveChanges ? this.getParentKey(true) + '.' + key : key;\n /* istanbul ignore else */\n if (parentKey.indexOf('.') !== -1) {\n var complexKeys = parentKey.split('.');\n parent_1 = newChanges;\n for (var i = 0; i < complexKeys.length; i++) {\n var isFinal = i === complexKeys.length - 1;\n parent_1[complexKeys[parseInt(i.toString(), 10)]] = isFinal ? value : {};\n parent_1 = isFinal ? parent_1 : parent_1[complexKeys[parseInt(i.toString(), 10)]];\n }\n }\n else {\n newChanges[\"\" + parentKey] = {};\n parent_1 = newChanges[\"\" + parentKey];\n newChanges[\"\" + parentKey][\"\" + key] = value;\n }\n /* istanbul ignore next */\n if (this.isParentArray) {\n var actionProperty = 'ejsAction';\n parent_1[\"\" + actionProperty] = action ? action : 'none';\n }\n this.controlParent.serverDataBind(newChanges);\n }\n };\n ChildProperty.prototype.getParentKey = function (isSaveChanges) {\n // eslint-disable-next-line\n var index = '';\n var propName = this.propName;\n /* istanbul ignore next */\n if (this.isParentArray) {\n index = this.parentObj[this.propName].indexOf(this);\n var valueLength = this.parentObj[this.propName].length;\n valueLength = isSaveChanges ? valueLength : (valueLength > 0 ? valueLength - 1 : 0);\n index = index !== -1 ? '-' + index : '-' + valueLength;\n propName = propName + index;\n }\n if (this.controlParent !== this.parentObj) {\n propName = this.parentObj.getParentKey() + '.' + this.propName + index;\n }\n return propName;\n };\n return ChildProperty;\n}());\nexport { ChildProperty };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { isUndefined, getValue, isNullOrUndefined, setValue, uniqueID, isBlazor } from './util';\nimport { ModuleLoader } from './module-loader';\nimport { Base } from './base';\nimport { Observer } from './observer';\nimport { ChildProperty } from './child-property';\nimport { Property, NotifyPropertyChanges } from './notify-property-change';\nimport { onIntlChange, rightToLeft, defaultCulture } from './internationalization';\nimport { createElement, addClass, removeClass, select } from './dom';\nimport { validateLicense, createLicenseOverlay, componentList } from './validate-lic';\nvar componentCount = 0;\nvar lastPageID;\nvar lastHistoryLen = 0;\n// Decalre the static variable to count the instance\nvar instancecount = 0;\n// Decalre the static variable to find if control limit exceed or not\nvar isvalid = true;\n// We have added styles to inline type so here declare the static variable to detect if banner is added or not\nvar isBannerAdded = false;\nexport var versionBasedStatePersistence = false;\n/**\n * To enable or disable version based statePersistence functionality for all components globally.\n *\n * @param {boolean} status - Optional argument Specifies the status value to enable or disable versionBasedStatePersistence option.\n * @returns {void}\n */\nexport function enableVersionBasedPersistence(status) {\n versionBasedStatePersistence = status;\n}\n/**\n * Base class for all Essential JavaScript components\n */\nvar Component = /** @class */ (function (_super) {\n __extends(Component, _super);\n /**\n * Initialize the constructor for component base\n *\n * @param {Object} options ?\n * @param {string} selector ?\n */\n function Component(options, selector) {\n var _this = _super.call(this, options, selector) || this;\n _this.randomId = uniqueID();\n /**\n * string template option for Blazor template rendering\n *\n * @private\n */\n _this.isStringTemplate = false;\n _this.needsID = false;\n _this.isReactHybrid = false;\n if (isNullOrUndefined(_this.enableRtl)) {\n _this.setProperties({ 'enableRtl': rightToLeft }, true);\n }\n if (isNullOrUndefined(_this.locale)) {\n _this.setProperties({ 'locale': defaultCulture }, true);\n }\n _this.moduleLoader = new ModuleLoader(_this);\n _this.localObserver = new Observer(_this);\n // tslint:disable-next-line:no-function-constructor-with-string-args\n onIntlChange.on('notifyExternalChange', _this.detectFunction, _this, _this.randomId);\n // Based on the considered control list we have count the instance\n if (typeof window !== \"undefined\" && typeof document !== \"undefined\" && !validateLicense()) {\n if (componentList.indexOf(_this.getModuleName()) !== -1) {\n instancecount = instancecount + 1;\n if (instancecount > 5) {\n isvalid = false;\n }\n }\n }\n if (!isUndefined(selector)) {\n _this.appendTo();\n }\n return _this;\n }\n Component.prototype.requiredModules = function () {\n return [];\n };\n /**\n * Destroys the sub modules while destroying the widget\n *\n * @returns {void} ?\n */\n Component.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n if (this.enablePersistence) {\n this.setPersistData();\n this.detachUnloadEvent();\n }\n this.localObserver.destroy();\n if (this.refreshing) {\n return;\n }\n removeClass([this.element], ['e-control']);\n this.trigger('destroyed', { cancel: false });\n _super.prototype.destroy.call(this);\n this.moduleLoader.clean();\n onIntlChange.off('notifyExternalChange', this.detectFunction, this.randomId);\n };\n /**\n * Applies all the pending property changes and render the component again.\n *\n * @returns {void} ?\n */\n Component.prototype.refresh = function () {\n this.refreshing = true;\n this.moduleLoader.clean();\n this.destroy();\n this.clearChanges();\n this.localObserver = new Observer(this);\n this.preRender();\n this.injectModules();\n this.render();\n this.refreshing = false;\n };\n Component.prototype.accessMount = function () {\n if (this.mount && !this.isReactHybrid) {\n this.mount();\n }\n };\n /**\n * Returns the route element of the component\n *\n * @returns {HTMLElement} ?\n */\n Component.prototype.getRootElement = function () {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n return this.actualElement;\n }\n else {\n return this.element;\n }\n };\n /**\n * Returns the persistence data for component\n *\n * @returns {any} ?\n */\n // eslint-disable-next-line\n Component.prototype.getLocalData = function () {\n var eleId = this.getModuleName() + this.element.id;\n if (versionBasedStatePersistence) {\n return window.localStorage.getItem(eleId + this.ej2StatePersistenceVersion);\n }\n else {\n return window.localStorage.getItem(eleId);\n }\n };\n /**\n * Adding unload event to persist data when enable persistence true\n */\n Component.prototype.attachUnloadEvent = function () {\n this.handleUnload = this.handleUnload.bind(this);\n window.addEventListener('unload', this.handleUnload);\n };\n /**\n * Handling unload event to persist data when enable persistence true\n */\n Component.prototype.handleUnload = function () {\n this.setPersistData();\n };\n /**\n * Removing unload event to persist data when enable persistence true\n */\n Component.prototype.detachUnloadEvent = function () {\n window.removeEventListener('unload', this.handleUnload);\n };\n /**\n * Appends the control within the given HTML element\n *\n * @param {string | HTMLElement} selector - Target element where control needs to be appended\n * @returns {void} ?\n */\n Component.prototype.appendTo = function (selector) {\n if (!isNullOrUndefined(selector) && typeof (selector) === 'string') {\n this.element = select(selector, document);\n }\n else if (!isNullOrUndefined(selector)) {\n this.element = selector;\n }\n if (!isNullOrUndefined(this.element)) {\n var moduleClass = 'e-' + this.getModuleName().toLowerCase();\n addClass([this.element], ['e-control', moduleClass]);\n this.isProtectedOnChange = false;\n if (this.needsID && !this.element.id) {\n this.element.id = this.getUniqueID(this.getModuleName());\n }\n if (this.enablePersistence) {\n this.mergePersistData();\n this.attachUnloadEvent();\n }\n var inst = getValue('ej2_instances', this.element);\n if (!inst || inst.indexOf(this) === -1) {\n _super.prototype.addInstance.call(this);\n }\n this.preRender();\n this.injectModules();\n // Checked weather cases are valid or not. If control leads to more than five counts \n if (!isvalid && !isBannerAdded) {\n createLicenseOverlay();\n isBannerAdded = true;\n }\n this.render();\n if (!this.mount) {\n this.trigger('created');\n }\n else {\n this.accessMount();\n }\n }\n };\n /**\n * It is used to process the post rendering functionalities to a component.\n *\n * @param {Node} wrapperElement ?\n * @returns {void} ?\n */\n Component.prototype.renderComplete = function (wrapperElement) {\n if (isBlazor()) {\n var sfBlazor = 'sfBlazor';\n // eslint-disable-next-line\n window[sfBlazor].renderComplete(this.element, wrapperElement);\n }\n this.isRendered = true;\n };\n /**\n * When invoked, applies the pending property changes immediately to the component.\n *\n * @returns {void} ?\n */\n Component.prototype.dataBind = function () {\n this.injectModules();\n _super.prototype.dataBind.call(this);\n };\n /**\n * Attach one or more event handler to the current component context.\n * It is used for internal handling event internally within the component only.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the handler to run when the event occurs\n * @param {Object} context - optional parameter Specifies the context to be bind in the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.on = function (event, handler, context) {\n if (typeof event === 'string') {\n this.localObserver.on(event, handler, context);\n }\n else {\n for (var _i = 0, event_1 = event; _i < event_1.length; _i++) {\n var arg = event_1[_i];\n this.localObserver.on(arg.event, arg.handler, arg.context);\n }\n }\n };\n /**\n * To remove one or more event handler that has been attached with the on() method.\n *\n * @param {BoundOptions[]| string} event - It is optional type either to Set the collection of event list or the eventName.\n * @param {Function} handler - optional parameter Specifies the function to run when the event occurs\n * @returns {void} ?\n * @private\n */\n Component.prototype.off = function (event, handler) {\n if (typeof event === 'string') {\n this.localObserver.off(event, handler);\n }\n else {\n for (var _i = 0, event_2 = event; _i < event_2.length; _i++) {\n var arg = event_2[_i];\n this.localObserver.off(arg.event, arg.handler);\n }\n }\n };\n /**\n * To notify the handlers in the specified event.\n *\n * @param {string} property - Specifies the event to be notify.\n * @param {Object} argument - Additional parameters to pass while calling the handler.\n * @returns {void} ?\n * @private\n */\n Component.prototype.notify = function (property, argument) {\n if (this.isDestroyed !== true) {\n this.localObserver.notify(property, argument);\n }\n };\n /**\n * Get injected modules\n *\n * @returns {Function} ?\n * @private\n */\n Component.prototype.getInjectedModules = function () {\n return this.injectedModules;\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @param {Function} moduleList ?\n * @returns {void} ?\n */\n Component.Inject = function () {\n var moduleList = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n moduleList[_i] = arguments[_i];\n }\n if (!this.prototype.injectedModules) {\n this.prototype.injectedModules = [];\n }\n for (var i = 0; i < moduleList.length; i++) {\n if (this.prototype.injectedModules.indexOf(moduleList[parseInt(i.toString(), 10)]) === -1) {\n this.prototype.injectedModules.push(moduleList[parseInt(i.toString(), 10)]);\n }\n }\n };\n /**\n * This is a instance method to create an element.\n *\n * @param {string} tagName ?\n * @param {ElementProperties} prop ?\n * @param {boolean} isVDOM ?\n * @returns {any} ?\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.createElement = function (tagName, prop, isVDOM) {\n return createElement(tagName, prop);\n };\n /**\n *\n * @param {Function} handler - handler to be triggered after state Updated.\n * @param {any} argument - Arguments to be passed to caller.\n * @returns {void} .\n * @private\n */\n // eslint-disable-next-line\n Component.prototype.triggerStateChange = function (handler, argument) {\n if (this.isReactHybrid) {\n // eslint-disable-next-line\n this.setState();\n this.currentContext = { calls: handler, args: argument };\n }\n };\n // tslint: enable: no-any\n Component.prototype.injectModules = function () {\n if (this.injectedModules && this.injectedModules.length) {\n this.moduleLoader.inject(this.requiredModules(), this.injectedModules);\n }\n };\n Component.prototype.detectFunction = function (args) {\n var prop = Object.keys(args);\n if (prop.length) {\n this[prop[0]] = args[prop[0]];\n }\n };\n Component.prototype.mergePersistData = function () {\n var data;\n if (versionBasedStatePersistence) {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id + this.ej2StatePersistenceVersion);\n }\n else {\n data = window.localStorage.getItem(this.getModuleName() + this.element.id);\n }\n if (!(isNullOrUndefined(data) || (data === ''))) {\n this.setProperties(JSON.parse(data), true);\n }\n };\n Component.prototype.setPersistData = function () {\n if (!this.isDestroyed) {\n if (versionBasedStatePersistence) {\n window.localStorage.setItem(this.getModuleName() +\n this.element.id + this.ej2StatePersistenceVersion, this.getPersistData());\n }\n else {\n window.localStorage.setItem(this.getModuleName() + this.element.id, this.getPersistData());\n }\n }\n };\n // eslint-disable-next-line\n Component.prototype.renderReactTemplates = function (callback) {\n if (!isNullOrUndefined(callback)) {\n callback();\n }\n };\n // eslint-disable-next-line\n Component.prototype.clearTemplate = function (templateName, index) {\n //No Code\n };\n Component.prototype.getUniqueID = function (definedName) {\n if (this.isHistoryChanged()) {\n componentCount = 0;\n }\n lastPageID = this.pageID(location.href);\n lastHistoryLen = history.length;\n return definedName + '_' + lastPageID + '_' + componentCount++;\n };\n Component.prototype.pageID = function (url) {\n var hash = 0;\n if (url.length === 0) {\n return hash;\n }\n for (var i = 0; i < url.length; i++) {\n var char = url.charCodeAt(i);\n hash = ((hash << 5) - hash) + char;\n hash = hash & hash; // Convert to 32bit integer\n }\n return Math.abs(hash);\n };\n Component.prototype.isHistoryChanged = function () {\n return lastPageID !== this.pageID(location.href) || lastHistoryLen !== history.length;\n };\n Component.prototype.addOnPersist = function (options) {\n var _this = this;\n var persistObj = {};\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var key = options_1[_i];\n var objValue = void 0;\n // eslint-disable-next-line\n objValue = getValue(key, this);\n if (!isUndefined(objValue)) {\n setValue(key, this.getActualProperties(objValue), persistObj);\n }\n }\n return JSON.stringify(persistObj, function (key, value) {\n return _this.getActualProperties(value);\n });\n };\n Component.prototype.getActualProperties = function (obj) {\n if (obj instanceof ChildProperty) {\n return getValue('properties', obj);\n }\n else {\n return obj;\n }\n };\n Component.prototype.ignoreOnPersist = function (options) {\n return JSON.stringify(this.iterateJsonProperties(this.properties, options));\n };\n Component.prototype.iterateJsonProperties = function (obj, ignoreList) {\n var newObj = {};\n var _loop_1 = function (key) {\n if (ignoreList.indexOf(key) === -1) {\n // eslint-disable-next-line\n var value = obj[key];\n if (typeof value === 'object' && !(value instanceof Array)) {\n var newList = ignoreList.filter(function (str) {\n var regExp = RegExp;\n return new regExp(key + '.').test(str);\n }).map(function (str) {\n return str.replace(key + '.', '');\n });\n newObj[\"\" + key] = this_1.iterateJsonProperties(this_1.getActualProperties(value), newList);\n }\n else {\n newObj[\"\" + key] = value;\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(obj); _i < _a.length; _i++) {\n var key = _a[_i];\n _loop_1(key);\n }\n return newObj;\n };\n __decorate([\n Property(false)\n ], Component.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"enableRtl\", void 0);\n __decorate([\n Property()\n ], Component.prototype, \"locale\", void 0);\n Component = __decorate([\n NotifyPropertyChanges\n ], Component);\n return Component;\n}(Base));\nexport { Component };\n//Function handling for page navigation detection\n/* istanbul ignore next */\n(function () {\n if (typeof window !== 'undefined') {\n window.addEventListener('popstate', \n /* istanbul ignore next */\n function () {\n componentCount = 0;\n });\n }\n})();\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible } from './dom';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { ChildProperty } from './child-property';\nimport { select, closest, setStyleAttribute, addClass, createElement } from './dom';\nimport { extend, isUndefined, isNullOrUndefined, compareElementParent, isBlazor } from './util';\nvar defaultPosition = { left: 0, top: 0, bottom: 0, right: 0 };\nvar positionProp = ['offsetLeft', 'offsetTop'];\nvar axisMapper = ['x', 'y'];\nvar axisValueMapper = ['left', 'top'];\nvar isDraggedObject = { isDragged: false };\n/**\n * Specifies the position coordinates\n */\nvar Position = /** @class */ (function (_super) {\n __extends(Position, _super);\n function Position() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(0)\n ], Position.prototype, \"left\", void 0);\n __decorate([\n Property(0)\n ], Position.prototype, \"top\", void 0);\n return Position;\n}(ChildProperty));\nexport { Position };\n/**\n * Draggable Module provides support to enable draggable functionality in Dom Elements.\n * ```html\n *
Draggable
\n * \n * ```\n */\nvar Draggable = /** @class */ (function (_super) {\n __extends(Draggable, _super);\n function Draggable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.dragLimit = Draggable_1.getDefaultPosition();\n _this.borderWidth = Draggable_1.getDefaultPosition();\n _this.padding = Draggable_1.getDefaultPosition();\n _this.diffX = 0;\n _this.prevLeft = 0;\n _this.prevTop = 0;\n _this.dragProcessStarted = false;\n _this.eleTop = 0;\n /* eslint-disable @typescript-eslint/no-explicit-any */\n _this.tapHoldTimer = 0;\n _this.externalInitialize = false;\n _this.diffY = 0;\n _this.parentScrollX = 0;\n _this.parentScrollY = 0;\n _this.droppables = {};\n _this.bind();\n return _this;\n }\n Draggable_1 = Draggable;\n Draggable.prototype.bind = function () {\n this.toggleEvents();\n if (Browser.isIE) {\n addClass([this.element], 'e-block-touch');\n }\n this.droppables[this.scope] = {};\n };\n Draggable.getDefaultPosition = function () {\n return extend({}, defaultPosition);\n };\n Draggable.prototype.toggleEvents = function (isUnWire) {\n var ele;\n if (!isUndefined(this.handle)) {\n ele = select(this.handle, this.element);\n }\n var handler = (this.enableTapHold && Browser.isDevice && Browser.isTouch) ? this.mobileInitialize : this.initialize;\n if (isUnWire) {\n EventHandler.remove(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler);\n }\n else {\n EventHandler.add(ele || this.element, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, handler, this);\n }\n };\n /* istanbul ignore next */\n Draggable.prototype.mobileInitialize = function (evt) {\n var _this = this;\n var target = evt.currentTarget;\n this.tapHoldTimer = setTimeout(function () {\n _this.externalInitialize = true;\n _this.removeTapholdTimer();\n _this.initialize(evt, target);\n }, this.tapHoldThreshold);\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer, this);\n };\n /* istanbul ignore next */\n Draggable.prototype.removeTapholdTimer = function () {\n clearTimeout(this.tapHoldTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.removeTapholdTimer);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.removeTapholdTimer);\n };\n /* istanbul ignore next */\n Draggable.prototype.getScrollableParent = function (element, axis) {\n var scroll = { 'vertical': 'scrollHeight', 'horizontal': 'scrollWidth' };\n var client = { 'vertical': 'clientHeight', 'horizontal': 'clientWidth' };\n if (isNullOrUndefined(element)) {\n return null;\n }\n if (element[scroll[\"\" + axis]] > element[client[\"\" + axis]]) {\n if (axis === 'vertical' ? element.scrollTop > 0 : element.scrollLeft > 0) {\n if (axis === 'vertical') {\n this.parentScrollY = this.parentScrollY +\n (this.parentScrollY === 0 ? element.scrollTop : element.scrollTop - this.parentScrollY);\n this.tempScrollHeight = element.scrollHeight;\n }\n else {\n this.parentScrollX = this.parentScrollX +\n (this.parentScrollX === 0 ? element.scrollLeft : element.scrollLeft - this.parentScrollX);\n this.tempScrollWidth = element.scrollWidth;\n }\n if (!isNullOrUndefined(element)) {\n return this.getScrollableParent(element.parentNode, axis);\n }\n else {\n return element;\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n }\n else {\n return this.getScrollableParent(element.parentNode, axis);\n }\n };\n Draggable.prototype.getScrollableValues = function () {\n this.parentScrollX = 0;\n this.parentScrollY = 0;\n var isModalDialog = this.element.classList.contains('e-dialog') && this.element.classList.contains('e-dlg-modal');\n var verticalScrollParent = this.getScrollableParent(this.element.parentNode, 'vertical');\n var horizontalScrollParent = this.getScrollableParent(this.element.parentNode, 'horizontal');\n };\n Draggable.prototype.initialize = function (evt, curTarget) {\n this.currentStateTarget = evt.target;\n if (this.isDragStarted()) {\n return;\n }\n else {\n this.isDragStarted(true);\n this.externalInitialize = false;\n }\n this.target = (evt.currentTarget || curTarget);\n this.dragProcessStarted = false;\n if (this.abort) {\n /* tslint:disable no-any */\n var abortSelectors = this.abort;\n if (typeof abortSelectors === 'string') {\n abortSelectors = [abortSelectors];\n }\n for (var i = 0; i < abortSelectors.length; i++) {\n if (!isNullOrUndefined(closest(evt.target, abortSelectors[parseInt(i.toString(), 10)]))) {\n /* istanbul ignore next */\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n return;\n }\n }\n }\n if (this.preventDefault && !isUndefined(evt.changedTouches) && evt.type !== 'touchstart') {\n evt.preventDefault();\n }\n this.element.setAttribute('aria-grabbed', 'true');\n var intCoord = this.getCoordinates(evt);\n this.initialPosition = { x: intCoord.pageX, y: intCoord.pageY };\n if (!this.clone) {\n var pos = this.element.getBoundingClientRect();\n this.getScrollableValues();\n if (evt.clientX === evt.pageX) {\n this.parentScrollX = 0;\n }\n if (evt.clientY === evt.pageY) {\n this.parentScrollY = 0;\n }\n this.relativeXPosition = intCoord.pageX - (pos.left + this.parentScrollX);\n this.relativeYPosition = intCoord.pageY - (pos.top + this.parentScrollY);\n }\n if (this.externalInitialize) {\n this.intDragStart(evt);\n }\n else {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy, this);\n }\n this.toggleEvents(true);\n if (evt.type !== 'touchstart' && this.isPreventSelect) {\n document.body.classList.add('e-prevent-select');\n }\n this.externalInitialize = false;\n EventHandler.trigger(document.documentElement, Browser.isSafari() ? 'touchstart' : Browser.touchStartEvent, evt);\n };\n Draggable.prototype.intDragStart = function (evt) {\n this.removeTapholdTimer();\n var isChangeTouch = !isUndefined(evt.changedTouches);\n if (isChangeTouch && (evt.changedTouches.length !== 1)) {\n return;\n }\n var intCordinate = this.getCoordinates(evt);\n var pos;\n var styleProp = getComputedStyle(this.element);\n this.margin = {\n left: parseInt(styleProp.marginLeft, 10),\n top: parseInt(styleProp.marginTop, 10),\n right: parseInt(styleProp.marginRight, 10),\n bottom: parseInt(styleProp.marginBottom, 10)\n };\n var element = this.element;\n if (this.clone && this.dragTarget) {\n var intClosest = closest(evt.target, this.dragTarget);\n if (!isNullOrUndefined(intClosest)) {\n element = intClosest;\n }\n }\n /* istanbul ignore next */\n if (this.isReplaceDragEle) {\n element = this.currentStateCheck(evt.target, element);\n }\n this.offset = this.calculateParentPosition(element);\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var x = this.initialPosition.x - intCordinate.pageX;\n var y = this.initialPosition.y - intCordinate.pageY;\n var distance = Math.sqrt((x * x) + (y * y));\n if ((distance >= this.distance || this.externalInitialize)) {\n var ele = this.getHelperElement(evt);\n if (!ele || isNullOrUndefined(ele)) {\n return;\n }\n if (isChangeTouch) {\n evt.preventDefault();\n }\n var dragTargetElement = this.helperElement = ele;\n this.parentClientRect = this.calculateParentPosition(dragTargetElement.offsetParent);\n if (this.dragStart) {\n var curTarget = this.getProperTargetElement(evt);\n var args = {\n event: evt,\n element: element,\n target: curTarget,\n bindEvents: isBlazor() ? this.bindDragEvents.bind(this) : null,\n dragElement: dragTargetElement\n };\n this.trigger('dragStart', args);\n }\n if (this.dragArea) {\n this.setDragArea();\n }\n else {\n this.dragLimit = { left: 0, right: 0, bottom: 0, top: 0 };\n this.borderWidth = { top: 0, left: 0 };\n }\n pos = { left: this.position.left - this.parentClientRect.left, top: this.position.top - this.parentClientRect.top };\n if (this.clone && !this.enableTailMode) {\n this.diffX = this.position.left - this.offset.left;\n this.diffY = this.position.top - this.offset.top;\n }\n this.getScrollableValues();\n // when drag element has margin-top\n var styles = getComputedStyle(element);\n var marginTop = parseFloat(styles.marginTop);\n /* istanbul ignore next */\n if (this.clone && marginTop !== 0) {\n pos.top += marginTop;\n }\n this.eleTop = !isNaN(parseFloat(styles.top)) ? parseFloat(styles.top) - this.offset.top : 0;\n /* istanbul ignore next */\n // if (this.eleTop > 0) {\n // pos.top += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n pos.top -= this.parentScrollY;\n pos.left -= this.parentScrollX;\n }\n var posValue = this.getProcessedPositionValue({\n top: (pos.top - this.diffY) + 'px',\n left: (pos.left - this.diffX) + 'px'\n });\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n pos.top += this.dragArea.scrollTop;\n }\n this.dragElePosition = { top: pos.top, left: pos.left };\n setStyleAttribute(dragTargetElement, this.getDragPosition({ position: 'absolute', left: posValue.left, top: posValue.top }));\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n if (!isBlazor()) {\n this.bindDragEvents(dragTargetElement);\n }\n }\n };\n Draggable.prototype.bindDragEvents = function (dragTargetElement) {\n if (isVisible(dragTargetElement)) {\n EventHandler.add(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag, this);\n EventHandler.add(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop, this);\n this.setGlobalDroppables(false, this.element, dragTargetElement);\n }\n else {\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n }\n };\n Draggable.prototype.elementInViewport = function (el) {\n this.top = el.offsetTop;\n this.left = el.offsetLeft;\n this.width = el.offsetWidth;\n this.height = el.offsetHeight;\n while (el.offsetParent) {\n el = el.offsetParent;\n this.top += el.offsetTop;\n this.left += el.offsetLeft;\n }\n return (this.top >= window.pageYOffset &&\n this.left >= window.pageXOffset &&\n (this.top + this.height) <= (window.pageYOffset + window.innerHeight) &&\n (this.left + this.width) <= (window.pageXOffset + window.innerWidth));\n };\n Draggable.prototype.getProcessedPositionValue = function (value) {\n if (this.queryPositionInfo) {\n return this.queryPositionInfo(value);\n }\n return value;\n };\n Draggable.prototype.calculateParentPosition = function (ele) {\n if (isNullOrUndefined(ele)) {\n return { left: 0, top: 0 };\n }\n var rect = ele.getBoundingClientRect();\n var style = getComputedStyle(ele);\n return {\n left: (rect.left + window.pageXOffset) - parseInt(style.marginLeft, 10),\n top: (rect.top + window.pageYOffset) - parseInt(style.marginTop, 10)\n };\n };\n // tslint:disable-next-line:max-func-body-length\n Draggable.prototype.intDrag = function (evt) {\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n if (this.clone && evt.changedTouches && Browser.isDevice && Browser.isTouch) {\n evt.preventDefault();\n }\n var left;\n var top;\n this.position = this.getMousePosition(evt, this.isDragScroll);\n var docHeight = this.getDocumentWidthHeight('Height');\n if (docHeight < this.position.top) {\n this.position.top = docHeight;\n }\n var docWidth = this.getDocumentWidthHeight('Width');\n if (docWidth < this.position.left) {\n this.position.left = docWidth;\n }\n if (this.drag) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('drag', { event: evt, element: this.element, target: curTarget });\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n /* tslint:disable no-any */\n var flag = true;\n if (this.hoverObject) {\n if (this.hoverObject.instance !== eleObj.instance) {\n this.triggerOutFunction(evt, eleObj);\n }\n else {\n flag = false;\n }\n }\n if (flag) {\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intOver(evt, eleObj.target);\n this.hoverObject = eleObj;\n }\n }\n else if (this.hoverObject) {\n this.triggerOutFunction(evt, eleObj);\n }\n var helperElement = this.droppables[this.scope].helper;\n this.parentClientRect = this.calculateParentPosition(this.helperElement.offsetParent);\n var tLeft = this.parentClientRect.left;\n var tTop = this.parentClientRect.top;\n var intCoord = this.getCoordinates(evt);\n var pagex = intCoord.pageX;\n var pagey = intCoord.pageY;\n var dLeft = this.position.left - this.diffX;\n var dTop = this.position.top - this.diffY;\n var styles = getComputedStyle(helperElement);\n if (this.dragArea) {\n if (this.enableAutoScroll) {\n this.setDragArea();\n }\n if (this.pageX !== pagex || this.skipDistanceCheck) {\n var helperWidth = helperElement.offsetWidth + (parseFloat(styles.marginLeft)\n + parseFloat(styles.marginRight));\n if (this.dragLimit.left > dLeft && dLeft > 0) {\n left = this.dragLimit.left;\n }\n else if (this.dragLimit.right + window.pageXOffset < dLeft + helperWidth && dLeft > 0) {\n left = dLeft - (dLeft - this.dragLimit.right) + window.pageXOffset - helperWidth;\n }\n else {\n left = dLeft < 0 ? this.dragLimit.left : dLeft;\n }\n }\n if (this.pageY !== pagey || this.skipDistanceCheck) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n if (this.dragLimit.top > dTop && dTop > 0) {\n top = this.dragLimit.top;\n }\n else if (this.dragLimit.bottom + window.pageYOffset < dTop + helperHeight && dTop > 0) {\n top = dTop - (dTop - this.dragLimit.bottom) + window.pageYOffset - helperHeight;\n }\n else {\n top = dTop < 0 ? this.dragLimit.top : dTop;\n }\n }\n }\n else {\n left = dLeft;\n top = dTop;\n }\n var iTop = tTop + this.borderWidth.top;\n var iLeft = tLeft + this.borderWidth.left;\n if (this.dragProcessStarted) {\n if (isNullOrUndefined(top)) {\n top = this.prevTop;\n }\n if (isNullOrUndefined(left)) {\n left = this.prevLeft;\n }\n }\n var draEleTop;\n var draEleLeft;\n if (this.helperElement.classList.contains('e-treeview')) {\n if (this.dragArea) {\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - this.borderWidth.top);\n draEleLeft = (left - iLeft) < 0 ? this.dragLimit.left : (left - this.borderWidth.left);\n }\n else {\n draEleTop = top - this.borderWidth.top;\n draEleLeft = left - this.borderWidth.left;\n }\n }\n else {\n if (this.dragArea) {\n var isDialogEle = this.helperElement.classList.contains('e-dialog');\n this.dragLimit.top = this.clone ? this.dragLimit.top : 0;\n draEleTop = (top - iTop) < 0 ? this.dragLimit.top : (top - iTop);\n draEleLeft = (left - iLeft) < 0 ? isDialogEle ? (left - (iLeft - this.borderWidth.left)) :\n this.dragElePosition.left : (left - iLeft);\n }\n else {\n draEleTop = top - iTop;\n draEleLeft = left - iLeft;\n }\n }\n var marginTop = parseFloat(getComputedStyle(this.element).marginTop);\n // when drag-element has margin-top\n /* istanbul ignore next */\n if (marginTop > 0) {\n if (this.clone) {\n draEleTop += marginTop;\n if (dTop < 0) {\n if ((marginTop + dTop) >= 0) {\n draEleTop = marginTop + dTop;\n }\n else {\n draEleTop -= marginTop;\n }\n }\n if (this.dragArea) {\n draEleTop = (this.dragLimit.bottom < draEleTop) ? this.dragLimit.bottom : draEleTop;\n }\n }\n if ((top - iTop) < 0) {\n if (dTop + marginTop + (helperElement.offsetHeight - iTop) >= 0) {\n var tempDraEleTop = this.dragLimit.top + dTop - iTop;\n if ((tempDraEleTop + marginTop + iTop) < 0) {\n draEleTop -= marginTop + iTop;\n }\n else {\n draEleTop = tempDraEleTop;\n }\n }\n else {\n draEleTop -= marginTop + iTop;\n }\n }\n }\n if (this.dragArea && this.helperElement.classList.contains('e-treeview')) {\n var helperHeight = helperElement.offsetHeight + (parseFloat(styles.marginTop)\n + parseFloat(styles.marginBottom));\n draEleTop = (draEleTop + helperHeight) > this.dragLimit.bottom ? (this.dragLimit.bottom - helperHeight) : draEleTop;\n }\n /* istanbul ignore next */\n // if(this.eleTop > 0) {\n // draEleTop += this.eleTop;\n // }\n if (this.enableScrollHandler && !this.clone) {\n draEleTop -= this.parentScrollY;\n draEleLeft -= this.parentScrollX;\n }\n if (this.dragArea && typeof this.dragArea !== 'string' && this.dragArea.classList.contains('e-kanban-content') && this.dragArea.style.position === 'relative') {\n draEleTop += this.dragArea.scrollTop;\n }\n var dragValue = this.getProcessedPositionValue({ top: draEleTop + 'px', left: draEleLeft + 'px' });\n setStyleAttribute(helperElement, this.getDragPosition(dragValue));\n if (!this.elementInViewport(helperElement) && this.enableAutoScroll && !this.helperElement.classList.contains('e-treeview')) {\n this.helperElement.scrollIntoView();\n }\n var elements = document.querySelectorAll(':hover');\n if (this.enableAutoScroll && this.helperElement.classList.contains('e-treeview')) {\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n /* tslint:disable no-any */\n var scrollParent = this.getScrollParent(elements, false);\n if (this.elementInViewport(this.helperElement)) {\n this.getScrollPosition(scrollParent, draEleTop);\n }\n else if (!this.elementInViewport(this.helperElement)) {\n elements = [].slice.call(document.querySelectorAll(':hover'));\n if (elements.length === 0) {\n elements = this.getPathElements(evt);\n }\n scrollParent = this.getScrollParent(elements, true);\n this.getScrollPosition(scrollParent, draEleTop);\n }\n }\n this.dragProcessStarted = true;\n this.prevLeft = left;\n this.prevTop = top;\n this.position.left = left;\n this.position.top = top;\n this.pageX = pagex;\n this.pageY = pagey;\n };\n /* tslint:disable no-any */\n Draggable.prototype.getScrollParent = function (node, reverse) {\n /* tslint:disable no-any */\n var nodeEl = reverse ? node.reverse() : node;\n var hasScroll;\n for (var i = nodeEl.length - 1; i >= 0; i--) {\n hasScroll = window.getComputedStyle(nodeEl[parseInt(i.toString(), 10)])['overflow-y'];\n if ((hasScroll === 'auto' || hasScroll === 'scroll')\n && nodeEl[parseInt(i.toString(), 10)].scrollHeight > nodeEl[parseInt(i.toString(), 10)].clientHeight) {\n return nodeEl[parseInt(i.toString(), 10)];\n }\n }\n hasScroll = window.getComputedStyle(document.scrollingElement)['overflow-y'];\n if (hasScroll === 'visible') {\n document.scrollingElement.style.overflow = 'auto';\n return document.scrollingElement;\n }\n };\n Draggable.prototype.getScrollPosition = function (nodeEle, draEleTop) {\n if (nodeEle && nodeEle === document.scrollingElement) {\n if ((nodeEle.clientHeight + document.scrollingElement.scrollTop - this.helperElement.clientHeight) < draEleTop\n && nodeEle.getBoundingClientRect().height + this.parentClientRect.top > draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.scrollTop > draEleTop - this.helperElement.clientHeight) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n else if (nodeEle && nodeEle !== document.scrollingElement) {\n if ((nodeEle.clientHeight + nodeEle.getBoundingClientRect().top - this.helperElement.clientHeight + document.scrollingElement.scrollTop) < draEleTop) {\n nodeEle.scrollTop += this.helperElement.clientHeight;\n }\n else if (nodeEle.getBoundingClientRect().top > (draEleTop - this.helperElement.clientHeight - document.scrollingElement.scrollTop)) {\n nodeEle.scrollTop -= this.helperElement.clientHeight;\n }\n }\n };\n Draggable.prototype.getPathElements = function (evt) {\n var elementTop = evt.clientX > 0 ? evt.clientX : 0;\n var elementLeft = evt.clientY > 0 ? evt.clientY : 0;\n return document.elementsFromPoint(elementTop, elementLeft);\n };\n Draggable.prototype.triggerOutFunction = function (evt, eleObj) {\n this.hoverObject.instance.intOut(evt, eleObj.target);\n this.hoverObject.instance.dragData[this.scope] = null;\n this.hoverObject = null;\n };\n Draggable.prototype.getDragPosition = function (dragValue) {\n var temp = extend({}, dragValue);\n if (this.axis) {\n if (this.axis === 'x') {\n delete temp.top;\n }\n else if (this.axis === 'y') {\n delete temp.left;\n }\n }\n return temp;\n };\n Draggable.prototype.getDocumentWidthHeight = function (str) {\n var docBody = document.body;\n var docEle = document.documentElement;\n var returnValue = Math.max(docBody['scroll' + str], docEle['scroll' + str], docBody['offset' + str], docEle['offset' + str], docEle['client' + str]);\n return returnValue;\n };\n Draggable.prototype.intDragStop = function (evt) {\n this.dragProcessStarted = false;\n if (!isUndefined(evt.changedTouches) && (evt.changedTouches.length !== 1)) {\n return;\n }\n var type = ['touchend', 'pointerup', 'mouseup'];\n if (type.indexOf(evt.type) !== -1) {\n if (this.dragStop) {\n var curTarget = this.getProperTargetElement(evt);\n this.trigger('dragStop', { event: evt, element: this.element, target: curTarget, helper: this.helperElement });\n }\n this.intDestroy(evt);\n }\n else {\n this.element.setAttribute('aria-grabbed', 'false');\n }\n var eleObj = this.checkTargetElement(evt);\n if (eleObj.target && eleObj.instance) {\n eleObj.instance.dragStopCalled = true;\n eleObj.instance.dragData[this.scope] = this.droppables[this.scope];\n eleObj.instance.intDrop(evt, eleObj.target);\n }\n this.setGlobalDroppables(true);\n document.body.classList.remove('e-prevent-select');\n };\n /**\n * @private\n */\n Draggable.prototype.intDestroy = function (evt) {\n this.dragProcessStarted = false;\n this.toggleEvents();\n document.body.classList.remove('e-prevent-select');\n this.element.setAttribute('aria-grabbed', 'false');\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDragStart);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDragStop);\n EventHandler.remove(document, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDestroy);\n EventHandler.remove(document, Browser.isSafari() ? 'touchmove' : Browser.touchMoveEvent, this.intDrag);\n if (this.isDragStarted()) {\n this.isDragStarted(true);\n }\n };\n // triggers when property changed\n Draggable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Draggable.prototype.getModuleName = function () {\n return 'draggable';\n };\n Draggable.prototype.isDragStarted = function (change) {\n if (change) {\n isDraggedObject.isDragged = !isDraggedObject.isDragged;\n }\n return isDraggedObject.isDragged;\n };\n Draggable.prototype.setDragArea = function () {\n var eleWidthBound;\n var eleHeightBound;\n var top = 0;\n var left = 0;\n var ele;\n var type = typeof this.dragArea;\n if (type === 'string') {\n ele = select(this.dragArea);\n }\n else {\n ele = this.dragArea;\n }\n if (ele) {\n var elementArea = ele.getBoundingClientRect();\n eleWidthBound = ele.scrollWidth ? ele.scrollWidth : elementArea.right - elementArea.left;\n eleHeightBound = ele.scrollHeight ? (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) ? ele.clientHeight : ele.scrollHeight : elementArea.bottom - elementArea.top;\n var keys = ['Top', 'Left', 'Bottom', 'Right'];\n var styles = getComputedStyle(ele);\n for (var i = 0; i < keys.length; i++) {\n var key = keys[parseInt(i.toString(), 10)];\n var tborder = styles['border' + key + 'Width'];\n var tpadding = styles['padding' + key];\n var lowerKey = key.toLowerCase();\n this.borderWidth[\"\" + lowerKey] = isNaN(parseFloat(tborder)) ? 0 : parseFloat(tborder);\n this.padding[\"\" + lowerKey] = isNaN(parseFloat(tpadding)) ? 0 : parseFloat(tpadding);\n }\n if (this.dragArea && !isNullOrUndefined(this.helperElement) && this.helperElement.classList.contains('e-treeview')) {\n top = elementArea.top + document.scrollingElement.scrollTop;\n }\n else {\n top = elementArea.top;\n }\n left = elementArea.left;\n this.dragLimit.left = left + this.borderWidth.left + this.padding.left;\n this.dragLimit.top = ele.offsetTop + this.borderWidth.top + this.padding.top;\n this.dragLimit.right = left + eleWidthBound - (this.borderWidth.right + this.padding.right);\n this.dragLimit.bottom = top + eleHeightBound - (this.borderWidth.bottom + this.padding.bottom);\n }\n };\n Draggable.prototype.getProperTargetElement = function (evt) {\n var intCoord = this.getCoordinates(evt);\n var ele;\n var prevStyle = this.helperElement.style.pointerEvents || '';\n var isPointer = evt.type.indexOf('pointer') !== -1 && Browser.info.name === 'safari' && parseInt(Browser.info.version) > 12;\n if (compareElementParent(evt.target, this.helperElement) || evt.type.indexOf('touch') !== -1 || isPointer) {\n this.helperElement.style.pointerEvents = 'none';\n ele = document.elementFromPoint(intCoord.clientX, intCoord.clientY);\n this.helperElement.style.pointerEvents = prevStyle;\n }\n else {\n ele = evt.target;\n }\n return ele;\n };\n /* istanbul ignore next */\n Draggable.prototype.currentStateCheck = function (ele, oldEle) {\n var elem;\n if (!isNullOrUndefined(this.currentStateTarget) && this.currentStateTarget !== ele) {\n elem = this.currentStateTarget;\n }\n else {\n elem = !isNullOrUndefined(oldEle) ? oldEle : ele;\n }\n return elem;\n };\n Draggable.prototype.getMousePosition = function (evt, isdragscroll) {\n /* tslint:disable no-any */\n var dragEle = evt.srcElement !== undefined ? evt.srcElement : evt.target;\n var intCoord = this.getCoordinates(evt);\n var pageX;\n var pageY;\n var isOffsetParent = isNullOrUndefined(dragEle.offsetParent);\n /* istanbul ignore next */\n if (isdragscroll) {\n pageX = this.clone ? intCoord.pageX :\n (intCoord.pageX + (isOffsetParent ? 0 : dragEle.offsetParent.scrollLeft)) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY :\n (intCoord.pageY + (isOffsetParent ? 0 : dragEle.offsetParent.scrollTop)) - this.relativeYPosition;\n }\n else {\n pageX = this.clone ? intCoord.pageX : (intCoord.pageX + window.pageXOffset) - this.relativeXPosition;\n pageY = this.clone ? intCoord.pageY : (intCoord.pageY + window.pageYOffset) - this.relativeYPosition;\n }\n if (document.scrollingElement && (!isdragscroll && !this.clone)) {\n var isVerticalScroll = document.scrollingElement.scrollHeight > 0 && document.scrollingElement.scrollHeight > document.scrollingElement.clientHeight && document.scrollingElement.scrollTop > 0;\n var isHorrizontalScroll = document.scrollingElement.scrollWidth > 0 && document.scrollingElement.scrollWidth > document.scrollingElement.clientWidth && document.scrollingElement.scrollLeft > 0;\n pageX = isHorrizontalScroll ? pageX - document.scrollingElement.scrollLeft : pageX;\n pageY = isVerticalScroll ? pageY - document.scrollingElement.scrollTop : pageY;\n }\n return {\n left: pageX - (this.margin.left + this.cursorAt.left),\n top: pageY - (this.margin.top + this.cursorAt.top)\n };\n };\n Draggable.prototype.getCoordinates = function (evt) {\n if (evt.type.indexOf('touch') > -1) {\n return evt.changedTouches[0];\n }\n return evt;\n };\n Draggable.prototype.getHelperElement = function (evt) {\n var element;\n if (this.clone) {\n if (this.helper) {\n element = this.helper({ sender: evt, element: this.target });\n }\n else {\n element = createElement('div', { className: 'e-drag-helper e-block-touch', innerHTML: 'Draggable' });\n document.body.appendChild(element);\n }\n }\n else {\n element = this.element;\n }\n return element;\n };\n Draggable.prototype.setGlobalDroppables = function (reset, drag, helper) {\n this.droppables[this.scope] = reset ? null : {\n draggable: drag,\n helper: helper,\n draggedElement: this.element\n };\n };\n Draggable.prototype.checkTargetElement = function (evt) {\n var target = this.getProperTargetElement(evt);\n var dropIns = this.getDropInstance(target);\n if (!dropIns && target && !isNullOrUndefined(target.parentNode)) {\n var parent_1 = closest(target.parentNode, '.e-droppable') || target.parentElement;\n if (parent_1) {\n dropIns = this.getDropInstance(parent_1);\n }\n }\n return { target: target, instance: dropIns };\n };\n Draggable.prototype.getDropInstance = function (ele) {\n var name = 'getModuleName';\n var drop;\n var eleInst = ele && ele.ej2_instances;\n if (eleInst) {\n for (var _i = 0, eleInst_1 = eleInst; _i < eleInst_1.length; _i++) {\n var inst = eleInst_1[_i];\n if (inst[\"\" + name]() === 'droppable') {\n drop = inst;\n break;\n }\n }\n }\n return drop;\n };\n Draggable.prototype.destroy = function () {\n this.toggleEvents(true);\n _super.prototype.destroy.call(this);\n };\n var Draggable_1;\n __decorate([\n Complex({}, Position)\n ], Draggable.prototype, \"cursorAt\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"clone\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"dragArea\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isDragScroll\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"isReplaceDragEle\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"isPreventSelect\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Draggable.prototype, \"dragStop\", void 0);\n __decorate([\n Property(1)\n ], Draggable.prototype, \"distance\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"handle\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"abort\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"helper\", void 0);\n __decorate([\n Property('default')\n ], Draggable.prototype, \"scope\", void 0);\n __decorate([\n Property('')\n ], Draggable.prototype, \"dragTarget\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"axis\", void 0);\n __decorate([\n Property()\n ], Draggable.prototype, \"queryPositionInfo\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTailMode\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"skipDistanceCheck\", void 0);\n __decorate([\n Property(true)\n ], Draggable.prototype, \"preventDefault\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableAutoScroll\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableTapHold\", void 0);\n __decorate([\n Property(750)\n ], Draggable.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Property(false)\n ], Draggable.prototype, \"enableScrollHandler\", void 0);\n Draggable = Draggable_1 = __decorate([\n NotifyPropertyChanges\n ], Draggable);\n return Draggable;\n}(Base));\nexport { Draggable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Base } from './base';\nimport { Browser } from './browser';\nimport { isVisible, matches } from './dom';\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { EventHandler } from './event-handler';\nimport { compareElementParent } from './util';\n/**\n * Droppable Module provides support to enable droppable functionality in Dom Elements.\n * ```html\n *
Droppable
\n * \n * ```\n */\nvar Droppable = /** @class */ (function (_super) {\n __extends(Droppable, _super);\n function Droppable(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseOver = false;\n _this.dragData = {};\n _this.dragStopCalled = false;\n _this.bind();\n return _this;\n }\n Droppable.prototype.bind = function () {\n this.wireEvents();\n };\n Droppable.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop, this);\n };\n // triggers when property changed\n // eslint-disable-next-line\n Droppable.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Droppable.prototype.getModuleName = function () {\n return 'droppable';\n };\n Droppable.prototype.intOver = function (event, element) {\n if (!this.mouseOver) {\n var drag = this.dragData[this.scope];\n this.trigger('over', { event: event, target: element, dragData: drag });\n this.mouseOver = true;\n }\n };\n Droppable.prototype.intOut = function (event, element) {\n if (this.mouseOver) {\n this.trigger('out', { evt: event, target: element });\n this.mouseOver = false;\n }\n };\n Droppable.prototype.intDrop = function (evt, element) {\n if (!this.dragStopCalled) {\n return;\n }\n else {\n this.dragStopCalled = false;\n }\n var accept = true;\n var drag = this.dragData[this.scope];\n var isDrag = drag ? (drag.helper && isVisible(drag.helper)) : false;\n var area;\n if (isDrag) {\n area = this.isDropArea(evt, drag.helper, element);\n if (this.accept) {\n accept = matches(drag.helper, this.accept);\n }\n }\n if (isDrag && this.drop && area.canDrop && accept) {\n this.trigger('drop', { event: evt, target: area.target, droppedElement: drag.helper, dragData: drag });\n }\n this.mouseOver = false;\n };\n Droppable.prototype.isDropArea = function (evt, helper, element) {\n var area = { canDrop: true, target: element || evt.target };\n var isTouch = evt.type === 'touchend';\n if (isTouch || area.target === helper) {\n helper.style.display = 'none';\n var coord = isTouch ? (evt.changedTouches[0]) : evt;\n var ele = document.elementFromPoint(coord.clientX, coord.clientY);\n area.canDrop = false;\n area.canDrop = compareElementParent(ele, this.element);\n if (area.canDrop) {\n area.target = ele;\n }\n helper.style.display = '';\n }\n return area;\n };\n Droppable.prototype.destroy = function () {\n EventHandler.remove(this.element, Browser.isSafari() ? 'touchend' : Browser.touchEndEvent, this.intDrop);\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Property()\n ], Droppable.prototype, \"accept\", void 0);\n __decorate([\n Property('default')\n ], Droppable.prototype, \"scope\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"drop\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"over\", void 0);\n __decorate([\n Event()\n ], Droppable.prototype, \"out\", void 0);\n Droppable = __decorate([\n NotifyPropertyChanges\n ], Droppable);\n return Droppable;\n}(Base));\nexport { Droppable };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Base } from './base';\nvar keyCode = {\n 'backspace': 8,\n 'tab': 9,\n 'enter': 13,\n 'shift': 16,\n 'control': 17,\n 'alt': 18,\n 'pause': 19,\n 'capslock': 20,\n 'space': 32,\n 'escape': 27,\n 'pageup': 33,\n 'pagedown': 34,\n 'end': 35,\n 'home': 36,\n 'leftarrow': 37,\n 'uparrow': 38,\n 'rightarrow': 39,\n 'downarrow': 40,\n 'insert': 45,\n 'delete': 46,\n 'f1': 112,\n 'f2': 113,\n 'f3': 114,\n 'f4': 115,\n 'f5': 116,\n 'f6': 117,\n 'f7': 118,\n 'f8': 119,\n 'f9': 120,\n 'f10': 121,\n 'f11': 122,\n 'f12': 123,\n 'semicolon': 186,\n 'plus': 187,\n 'comma': 188,\n 'minus': 189,\n 'dot': 190,\n 'forwardslash': 191,\n 'graveaccent': 192,\n 'openbracket': 219,\n 'backslash': 220,\n 'closebracket': 221,\n 'singlequote': 222\n};\n/**\n * KeyboardEvents class enables you to bind key action desired key combinations for ex., Ctrl+A, Delete, Alt+Space etc.\n * ```html\n *
;\n * \n * ```\n */\nvar KeyboardEvents = /** @class */ (function (_super) {\n __extends(KeyboardEvents, _super);\n /**\n * Initializes the KeyboardEvents\n *\n * @param {HTMLElement} element ?\n * @param {KeyboardEventsModel} options ?\n */\n function KeyboardEvents(element, options) {\n var _this = _super.call(this, options, element) || this;\n /**\n * To handle a key press event returns null\n *\n * @param {KeyboardEventArgs} e ?\n * @returns {void} ?\n */\n _this.keyPressHandler = function (e) {\n var isAltKey = e.altKey;\n var isCtrlKey = e.ctrlKey;\n var isShiftKey = e.shiftKey;\n var curkeyCode = e.which;\n var keys = Object.keys(_this.keyConfigs);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var key = keys_1[_i];\n var configCollection = _this.keyConfigs[\"\" + key].split(',');\n for (var _a = 0, configCollection_1 = configCollection; _a < configCollection_1.length; _a++) {\n var rconfig = configCollection_1[_a];\n var rKeyObj = KeyboardEvents_1.getKeyConfigData(rconfig.trim());\n if (isAltKey === rKeyObj.altKey && isCtrlKey === rKeyObj.ctrlKey &&\n isShiftKey === rKeyObj.shiftKey && curkeyCode === rKeyObj.keyCode) {\n e.action = key;\n if (_this.keyAction) {\n _this.keyAction(e);\n }\n }\n }\n }\n };\n _this.bind();\n return _this;\n }\n KeyboardEvents_1 = KeyboardEvents;\n /**\n * Unwire bound events and destroy the instance.\n *\n * @returns {void} ?\n */\n KeyboardEvents.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n /**\n * Function can be used to specify certain action if a property is changed\n *\n * @param {KeyboardEventsModel} newProp ?\n * @param {KeyboardEventsModel} oldProp ?\n * @returns {void} ?\n * @private\n */\n // eslint-disable-next-line\n KeyboardEvents.prototype.onPropertyChanged = function (newProp, oldProp) {\n // No code are needed\n };\n KeyboardEvents.prototype.bind = function () {\n this.wireEvents();\n };\n /**\n * To get the module name, returns 'keyboard'.\n *\n * @returns {string} ?\n * @private\n */\n KeyboardEvents.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * Wiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.wireEvents = function () {\n this.element.addEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * Unwiring event handlers to events\n *\n * @returns {void} ?\n * @private\n */\n KeyboardEvents.prototype.unwireEvents = function () {\n this.element.removeEventListener(this.eventName, this.keyPressHandler);\n };\n /**\n * To get the key configuration data\n *\n * @param {string} config - configuration data\n * @returns {KeyData} ?\n */\n KeyboardEvents.getKeyConfigData = function (config) {\n if (config in this.configCache) {\n return this.configCache[\"\" + config];\n }\n var keys = config.toLowerCase().split('+');\n var keyData = {\n altKey: (keys.indexOf('alt') !== -1 ? true : false),\n ctrlKey: (keys.indexOf('ctrl') !== -1 ? true : false),\n shiftKey: (keys.indexOf('shift') !== -1 ? true : false),\n keyCode: null\n };\n if (keys[keys.length - 1].length > 1 && !!Number(keys[keys.length - 1])) {\n keyData.keyCode = Number(keys[keys.length - 1]);\n }\n else {\n keyData.keyCode = KeyboardEvents_1.getKeyCode(keys[keys.length - 1]);\n }\n KeyboardEvents_1.configCache[\"\" + config] = keyData;\n return keyData;\n };\n // Return the keycode value as string\n KeyboardEvents.getKeyCode = function (keyVal) {\n return keyCode[\"\" + keyVal] || keyVal.toUpperCase().charCodeAt(0);\n };\n var KeyboardEvents_1;\n KeyboardEvents.configCache = {};\n __decorate([\n Property({})\n ], KeyboardEvents.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property('keyup')\n ], KeyboardEvents.prototype, \"eventName\", void 0);\n __decorate([\n Event()\n ], KeyboardEvents.prototype, \"keyAction\", void 0);\n KeyboardEvents = KeyboardEvents_1 = __decorate([\n NotifyPropertyChanges\n ], KeyboardEvents);\n return KeyboardEvents;\n}(Base));\nexport { KeyboardEvents };\n","import { extend, isNullOrUndefined } from './util';\nimport { defaultCulture } from './internationalization';\n/**\n * L10n modules provides localized text for different culture.\n * ```typescript\n * import {setCulture} from '@syncfusion/ts-base-library';\n * //load global locale object common for all components.\n * L10n.load({\n * 'fr-BE': {\n * 'button': {\n * 'check': 'vérifié'\n * }\n * }\n * });\n * //set globale default locale culture.\n * setCulture('fr-BE');\n * let instance: L10n = new L10n('button', {\n * check: 'checked'\n * });\n * //Get locale text for current property.\n * instance.getConstant('check');\n * //Change locale culture in a component.\n * instance.setLocale('en-US');\n * ```\n */\nvar L10n = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {string} controlName ?\n * @param {Object} localeStrings ?\n * @param {string} locale ?\n */\n function L10n(controlName, localeStrings, locale) {\n this.controlName = controlName;\n this.localeStrings = localeStrings;\n this.setLocale(locale || defaultCulture);\n }\n /**\n * Sets the locale text\n *\n * @param {string} locale ?\n * @returns {void} ?\n */\n L10n.prototype.setLocale = function (locale) {\n var intLocale = this.intGetControlConstant(L10n.locale, locale);\n this.currentLocale = intLocale || this.localeStrings;\n };\n /**\n * Sets the global locale for all components.\n *\n * @param {Object} localeObject - specifies the localeObject to be set as global locale.\n * @returns {void} ?\n */\n L10n.load = function (localeObject) {\n this.locale = extend(this.locale, localeObject, {}, true);\n };\n /**\n * Returns current locale text for the property based on the culture name and control name.\n *\n * @param {string} prop - specifies the property for which localize text to be returned.\n * @returns {string} ?\n */\n L10n.prototype.getConstant = function (prop) {\n // Removed conditional operator because this method does not return correct value when passing 0 as value in localization\n if (!isNullOrUndefined(this.currentLocale[\"\" + prop])) {\n return this.currentLocale[\"\" + prop];\n }\n else {\n return this.localeStrings[\"\" + prop] || '';\n }\n };\n /**\n * Returns the control constant object for current object and the locale specified.\n *\n * @param {Object} curObject ?\n * @param {string} locale ?\n * @returns {Object} ?\n */\n L10n.prototype.intGetControlConstant = function (curObject, locale) {\n if ((curObject)[\"\" + locale]) {\n return (curObject)[\"\" + locale][this.controlName];\n }\n return null;\n };\n L10n.locale = {};\n return L10n;\n}());\nexport { L10n };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { extend } from './util';\nimport { Property, Complex, NotifyPropertyChanges, Event } from './notify-property-change';\nimport { Browser } from './browser';\nimport { Base } from './base';\nimport { ChildProperty } from './child-property';\nimport { EventHandler } from './event-handler';\n/**\n * SwipeSettings is a framework module that provides support to handle swipe event like swipe up, swipe right, etc..,\n */\nvar SwipeSettings = /** @class */ (function (_super) {\n __extends(SwipeSettings, _super);\n function SwipeSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(50)\n ], SwipeSettings.prototype, \"swipeThresholdDistance\", void 0);\n return SwipeSettings;\n}(ChildProperty));\nexport { SwipeSettings };\nvar swipeRegex = /(Up|Down)/;\n/**\n * Touch class provides support to handle the touch event like tap, double tap, tap hold, etc..,\n * ```typescript\n * let node: HTMLElement;\n * let touchObj: Touch = new Touch({\n * element: node,\n * tap: function (e) {\n * // tap handler function code\n * }\n * tapHold: function (e) {\n * // tap hold handler function code\n * }\n * scroll: function (e) {\n * // scroll handler function code\n * }\n * swipe: function (e) {\n * // swipe handler function code\n * }\n * });\n * ```\n */\nvar Touch = /** @class */ (function (_super) {\n __extends(Touch, _super);\n /* End-Properties */\n function Touch(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.touchAction = true;\n _this.tapCount = 0;\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.startEvent = function (evt) {\n if (_this.touchAction === true) {\n var point = _this.updateChangeTouches(evt);\n if (evt.changedTouches !== undefined) {\n _this.touchAction = false;\n }\n _this.isTouchMoved = false;\n _this.movedDirection = '';\n _this.startPoint = _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n _this.startEventData = point;\n _this.hScrollLocked = _this.vScrollLocked = false;\n _this.tStampStart = Date.now();\n _this.timeOutTapHold = setTimeout(function () { _this.tapHoldEvent(evt); }, _this.tapHoldThreshold);\n EventHandler.add(_this.element, Browser.touchMoveEvent, _this.moveEvent, _this);\n EventHandler.add(_this.element, Browser.touchEndEvent, _this.endEvent, _this);\n EventHandler.add(_this.element, Browser.touchCancelEvent, _this.cancelEvent, _this);\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.moveEvent = function (evt) {\n var point = _this.updateChangeTouches(evt);\n _this.movedPoint = point;\n _this.isTouchMoved = !(point.clientX === _this.startPoint.clientX && point.clientY === _this.startPoint.clientY);\n var eScrollArgs = {};\n if (_this.isTouchMoved) {\n clearTimeout(_this.timeOutTapHold);\n _this.calcScrollPoints(evt);\n var scrollArg = {\n startEvents: _this.startEventData,\n originalEvent: evt, startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY, distanceX: _this.distanceX,\n distanceY: _this.distanceY, scrollDirection: _this.scrollDirection,\n velocity: _this.getVelocity(point)\n };\n eScrollArgs = extend(eScrollArgs, {}, scrollArg);\n _this.trigger('scroll', eScrollArgs);\n _this.lastMovedPoint = { clientX: point.clientX, clientY: point.clientY };\n }\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.cancelEvent = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n _this.tapCount = 0;\n _this.swipeFn(evt);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.endEvent = function (evt) {\n _this.swipeFn(evt);\n if (!_this.isTouchMoved) {\n if (typeof _this.tap === 'function') {\n _this.trigger('tap', { originalEvent: evt, tapCount: ++_this.tapCount });\n _this.timeOutTap = setTimeout(function () {\n _this.tapCount = 0;\n }, _this.tapThreshold);\n }\n }\n _this.modeclear();\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n _this.swipeFn = function (evt) {\n clearTimeout(_this.timeOutTapHold);\n clearTimeout(_this.timeOutTap);\n var point = _this.updateChangeTouches(evt);\n var diffX = point.clientX - _this.startPoint.clientX;\n var diffY = point.clientY - _this.startPoint.clientY;\n diffX = Math.floor(diffX < 0 ? -1 * diffX : diffX);\n diffY = Math.floor(diffY < 0 ? -1 * diffY : diffX);\n _this.isTouchMoved = diffX > 1 || diffY > 1;\n var isFirefox = (/Firefox/).test(Browser.userAgent);\n if (isFirefox && point.clientX === 0 && point.clientY === 0 && evt.type === 'mouseup') {\n _this.isTouchMoved = false;\n }\n _this.endPoint = point;\n _this.calcPoints(evt);\n var swipeArgs = {\n originalEvent: evt,\n startEvents: _this.startEventData,\n startX: _this.startPoint.clientX,\n startY: _this.startPoint.clientY,\n distanceX: _this.distanceX, distanceY: _this.distanceY, swipeDirection: _this.movedDirection,\n velocity: _this.getVelocity(point)\n };\n if (_this.isTouchMoved) {\n var eSwipeArgs = void 0;\n var tDistance = _this.swipeSettings.swipeThresholdDistance;\n // eslint-disable-next-line\n eSwipeArgs = extend(eSwipeArgs, _this.defaultArgs, swipeArgs);\n var canTrigger = false;\n var ele = _this.element;\n var scrollBool = _this.isScrollable(ele);\n var moved = swipeRegex.test(_this.movedDirection);\n if ((tDistance < _this.distanceX && !moved) || (tDistance < _this.distanceY && moved)) {\n if (!scrollBool) {\n canTrigger = true;\n }\n else {\n canTrigger = _this.checkSwipe(ele, moved);\n }\n }\n if (canTrigger) {\n _this.trigger('swipe', eSwipeArgs);\n }\n }\n _this.modeclear();\n };\n _this.modeclear = function () {\n _this.modeClear = setTimeout(function () {\n _this.touchAction = true;\n }, (typeof _this.tap !== 'function' ? 0 : 20));\n _this.lastTapTime = new Date().getTime();\n EventHandler.remove(_this.element, Browser.touchMoveEvent, _this.moveEvent);\n EventHandler.remove(_this.element, Browser.touchEndEvent, _this.endEvent);\n EventHandler.remove(_this.element, Browser.touchCancelEvent, _this.cancelEvent);\n };\n _this.bind();\n return _this;\n }\n // triggers when property changed\n /**\n *\n * @private\n * @param {TouchModel} newProp ?\n * @param {TouchModel} oldProp ?\n * @returns {void} ?\n */\n // eslint-disable-next-line\n Touch.prototype.onPropertyChanged = function (newProp, oldProp) {\n //No Code to handle\n };\n Touch.prototype.bind = function () {\n this.wireEvents();\n if (Browser.isIE) {\n this.element.classList.add('e-block-touch');\n }\n };\n /**\n * To destroy the touch instance.\n *\n * @returns {void}\n */\n Touch.prototype.destroy = function () {\n this.unwireEvents();\n _super.prototype.destroy.call(this);\n };\n // Need to changes the event binding once we updated the event handler.\n Touch.prototype.wireEvents = function () {\n EventHandler.add(this.element, Browser.touchStartEvent, this.startEvent, this);\n };\n Touch.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.startEvent);\n };\n /**\n * Returns module name as touch\n *\n * @returns {string} ?\n * @private\n */\n Touch.prototype.getModuleName = function () {\n return 'touch';\n };\n /**\n * Returns if the HTML element is Scrollable.\n *\n * @param {HTMLElement} element - HTML Element to check if Scrollable.\n * @returns {boolean} ?\n */\n Touch.prototype.isScrollable = function (element) {\n var eleStyle = getComputedStyle(element);\n var style = eleStyle.overflow + eleStyle.overflowX + eleStyle.overflowY;\n if ((/(auto|scroll)/).test(style)) {\n return true;\n }\n return false;\n };\n /**\n *\n * @param {MouseEventArgs | TouchEventArgs} evt ?\n * @returns {void} ?\n */\n Touch.prototype.tapHoldEvent = function (evt) {\n this.tapCount = 0;\n this.touchAction = true;\n var eTapArgs;\n EventHandler.remove(this.element, Browser.touchMoveEvent, this.moveEvent);\n EventHandler.remove(this.element, Browser.touchEndEvent, this.endEvent);\n // eslint-disable-next-line\n eTapArgs = { originalEvent: evt };\n this.trigger('tapHold', eTapArgs);\n EventHandler.remove(this.element, Browser.touchCancelEvent, this.cancelEvent);\n };\n Touch.prototype.calcPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.startPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.startPoint.clientY)));\n if (this.distanceX > this.distanceY) {\n this.movedDirection = (point.clientX > this.startPoint.clientX) ? 'Right' : 'Left';\n }\n else {\n this.movedDirection = (point.clientY < this.startPoint.clientY) ? 'Up' : 'Down';\n }\n };\n Touch.prototype.calcScrollPoints = function (evt) {\n var point = this.updateChangeTouches(evt);\n this.defaultArgs = { originalEvent: evt };\n this.distanceX = Math.abs((Math.abs(point.clientX) - Math.abs(this.lastMovedPoint.clientX)));\n this.distanceY = Math.abs((Math.abs(point.clientY) - Math.abs(this.lastMovedPoint.clientY)));\n if ((this.distanceX > this.distanceY || this.hScrollLocked === true) && this.vScrollLocked === false) {\n this.scrollDirection = (point.clientX > this.lastMovedPoint.clientX) ? 'Right' : 'Left';\n this.hScrollLocked = true;\n }\n else {\n this.scrollDirection = (point.clientY < this.lastMovedPoint.clientY) ? 'Up' : 'Down';\n this.vScrollLocked = true;\n }\n };\n Touch.prototype.getVelocity = function (pnt) {\n var newX = pnt.clientX;\n var newY = pnt.clientY;\n var newT = Date.now();\n var xDist = newX - this.startPoint.clientX;\n var yDist = newY - this.startPoint.clientX;\n var interval = newT - this.tStampStart;\n return Math.sqrt(xDist * xDist + yDist * yDist) / interval;\n };\n // eslint-disable-next-line\n Touch.prototype.checkSwipe = function (ele, flag) {\n var keys = ['scroll', 'offset'];\n var temp = flag ? ['Height', 'Top'] : ['Width', 'Left'];\n if ((ele[keys[0] + temp[0]] <= ele[keys[1] + temp[0]])) {\n return true;\n }\n return (ele[keys[0] + temp[1]] === 0) ||\n (ele[keys[1] + temp[0]] + ele[keys[0] + temp[1]] >= ele[keys[0] + temp[0]]);\n };\n Touch.prototype.updateChangeTouches = function (evt) {\n var point = evt.changedTouches && evt.changedTouches.length !== 0 ? evt.changedTouches[0] : evt;\n return point;\n };\n __decorate([\n Event()\n ], Touch.prototype, \"tap\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"tapHold\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"swipe\", void 0);\n __decorate([\n Event()\n ], Touch.prototype, \"scroll\", void 0);\n __decorate([\n Property(350)\n ], Touch.prototype, \"tapThreshold\", void 0);\n __decorate([\n Property(750)\n ], Touch.prototype, \"tapHoldThreshold\", void 0);\n __decorate([\n Complex({}, SwipeSettings)\n ], Touch.prototype, \"swipeSettings\", void 0);\n Touch = __decorate([\n NotifyPropertyChanges\n ], Touch);\n return Touch;\n}(Base));\nexport { Touch };\n","/**\n * Template Engine\n */\nvar LINES = new RegExp('[\\\\n\\\\r\\\\s]+', 'g');\nvar QUOTES = new RegExp(/'|\"/g);\nvar IF_STMT = new RegExp('if ?\\\\(');\nvar ELSEIF_STMT = new RegExp('else if ?\\\\(');\nvar ELSE_STMT = new RegExp('else');\nvar FOR_STMT = new RegExp('for ?\\\\(');\nvar IF_OR_FOR = new RegExp('(/if|/for)');\nvar CALL_FUNCTION = new RegExp('\\\\((.*)\\\\)', '');\nvar NOT_NUMBER = new RegExp('^[0-9]+$', 'g');\nvar WORD = new RegExp('[\\\\w\"\\'.\\\\s+]+', 'g');\nvar DBL_QUOTED_STR = new RegExp('\"(.*?)\"', 'g');\nvar WORDIF = new RegExp('[\\\\w\"\\'@#$.\\\\s-+]+', 'g');\nvar exp = new RegExp('\\\\${([^}]*)}', 'g');\n// let cachedTemplate: Object = {};\nvar ARR_OBJ = /^\\..*/gm;\nvar SINGLE_SLASH = /\\\\/gi;\nvar DOUBLE_SLASH = /\\\\\\\\/gi;\nvar WORDFUNC = new RegExp('[\\\\w\"\\'@#$.\\\\s+]+', 'g');\nvar WINDOWFUNC = /\\window\\./gm;\n/**\n * The function to set regular expression for template expression string.\n *\n * @param {RegExp} value - Value expression.\n * @returns {RegExp} ?\n * @private\n */\nexport function expression(value) {\n if (value) {\n exp = value;\n }\n return exp;\n}\n// /**\n// * To render the template string from the given data.\n// * @param {string} template - String Template.\n// * @param {Object[]|JSON} data - DataSource for the template.\n// * @param {Object} helper? - custom helper object.\n// */\n// export function template(template: string, data: JSON, helper?: Object): string {\n// let hash: string = hashCode(template);\n// let tmpl: Function;\n// if (!cachedTemplate[hash]) {\n// tmpl = cachedTemplate[hash] = compile(template, helper);\n// } else {\n// tmpl = cachedTemplate[hash];\n// }\n// return tmpl(data);\n// }\n/**\n * Compile the template string into template function.\n *\n * @param {string | Function} template - The template string which is going to convert.\n * @param {Object} helper - Helper functions as an object.\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n * @private\n */\nexport function compile(template, helper, ignorePrefix) {\n if (typeof template === 'function') {\n return template;\n }\n else {\n var argName = 'data';\n var evalExpResult = evalExp(template, argName, helper, ignorePrefix);\n // eslint-disable-next-line\n var condtion = \"var valueRegEx = (/value=\\\\'([A-Za-z0-9 _]*)((.)([\\\\w)(!-;?-\\u25A0\\\\s]+)['])/g);\\n var hrefRegex = (/(?:href)([\\\\s='\\\"./]+)([\\\\w-./?=&\\\\\\\\#\\\"]+)((.)([\\\\w)(!-;/?-\\u25A0\\\\s]+)['])/g);\\n if(str.match(valueRegEx)){\\n var check = str.match(valueRegEx);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(valueRegEx)[i].split('value=')[1];\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n str = str.replace(str, str1);\\n }\\n else if (str.match(/(?:href='')/) === null) {\\n if(str.match(hrefRegex)) {\\n var check = str.match(hrefRegex);\\n var str1 = str;\\n for (var i=0; i < check.length; i++) {\\n var check1 = str.match(hrefRegex)[i].split('href=')[1];\\n if (check1) {\\n var change = check1.match(/^'/) !== null ? check1.replace(/^'/, '\\\"') : check1;\\n change =change.match(/.$/)[0] === '\\\\'' ? change.replace(/.$/,'\\\"') : change;\\n str1 = str1.replace(check1, change);\\n }\\n }\\n str = str.replace(str, str1);\\n }\\n }\\n \";\n var fnCode = 'var str=\\\"' + evalExpResult + '\\\";' + condtion + ' return str;';\n var fn = new Function(argName, fnCode);\n return fn.bind(helper);\n }\n}\n/** function used to evaluate the function expression\n *\n * @param {string} str ?\n * @param {string} nameSpace ?\n * @param {Object} helper ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction evalExp(str, nameSpace, helper, ignorePrefix) {\n var varCOunt = 0;\n /**\n * Variable containing Local Keys\n */\n var localKeys = [];\n var isClass = str.match(/class=\"([^\"]+|)\\s{2}/g);\n var singleSpace = '';\n if (isClass) {\n isClass.forEach(function (value) {\n singleSpace = value.replace(/\\s\\s+/g, ' ');\n str = str.replace(value, singleSpace);\n });\n }\n return str.replace(LINES, ' ').replace(DBL_QUOTED_STR, '\\'$1\\'').replace(exp, \n // eslint-disable-next-line\n function (match, cnt, offset, matchStr) {\n var SPECIAL_CHAR = /@|#|\\$/gm;\n var matches = cnt.match(CALL_FUNCTION);\n // matches to detect any function calls\n if (matches) {\n var rlStr = matches[1];\n if (ELSEIF_STMT.test(cnt)) {\n //handling else-if condition\n cnt = '\";} ' + cnt.replace(matches[1], rlStr.replace(WORD, function (str) {\n str = str.trim();\n return addNameSpace(str, !(QUOTES.test(str)) && (localKeys.indexOf(str) === -1), nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (IF_STMT.test(cnt)) {\n //handling if condition\n cnt = '\"; ' + cnt.replace(matches[1], rlStr.replace(WORDIF, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '{ \\n str = str + \"';\n }\n else if (FOR_STMT.test(cnt)) {\n //handling for condition\n var rlStr_1 = matches[1].split(' of ');\n // replace for each into actual JavaScript\n // eslint-disable-next-line\n cnt = '\"; ' + cnt.replace(matches[1], function (mtc) {\n localKeys.push(rlStr_1[0]);\n localKeys.push(rlStr_1[0] + 'Index');\n varCOunt = varCOunt + 1;\n // tslint:disable-next-line\n return 'var i' + varCOunt + '=0; i' + varCOunt + ' < ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix) + '.length; i' + varCOunt + '++';\n }) + '{ \\n ' + rlStr_1[0] + '= ' + addNameSpace(rlStr_1[1], true, nameSpace, localKeys, ignorePrefix)\n + '[i' + varCOunt + ']; \\n var ' + rlStr_1[0] + 'Index=i' + varCOunt + '; \\n str = str + \"';\n }\n else {\n //helper function handling\n var fnStr = cnt.split('(');\n // eslint-disable-next-line\n var fNameSpace = (helper && helper.hasOwnProperty(fnStr[0]) ? 'this.' : 'global');\n fNameSpace = (/\\./.test(fnStr[0]) ? '' : fNameSpace);\n var ftArray = matches[1].split(',');\n if (matches[1].length !== 0 && !(/data/).test(ftArray[0]) && !(/window./).test(ftArray[0])) {\n matches[1] = (fNameSpace === 'global' ? nameSpace + '.' + matches[1] : matches[1]);\n }\n var splRegexp = /@|\\$|#/gm;\n var arrObj = /\\]\\./gm;\n if (WINDOWFUNC.test(cnt) && arrObj.test(cnt) || splRegexp.test(cnt)) {\n var splArrRegexp = /@|\\$|#|\\]\\./gm;\n if (splArrRegexp.test(cnt)) {\n // tslint:disable-next-line\n cnt = '\"+ ' + (fNameSpace === 'global' ? '' : fNameSpace) + cnt.replace(matches[1], rlStr.replace(WORDFUNC, function (strs) {\n return HandleSpecialCharArrObj(strs, nameSpace, localKeys, ignorePrefix);\n })) + '+ \"';\n }\n }\n else {\n cnt = '\" + ' + (fNameSpace === 'global' ? '' : fNameSpace) +\n cnt.replace(rlStr, addNameSpace(matches[1].replace(/,( |)data.|,/gi, ',' + nameSpace + '.').replace(/,( |)data.window/gi, ',window'), (fNameSpace === 'global' ? false : true), nameSpace, localKeys, ignorePrefix)) +\n '+\"';\n }\n }\n }\n else if (ELSE_STMT.test(cnt)) {\n // handling else condition\n cnt = '\"; ' + cnt.replace(ELSE_STMT, '} else { \\n str = str + \"');\n // eslint-disable-next-line\n }\n else if (!!cnt.match(IF_OR_FOR)) {\n // close condition\n cnt = cnt.replace(IF_OR_FOR, '\"; \\n } \\n str = str + \"');\n }\n else if (SPECIAL_CHAR.test(cnt)) {\n // template string with double slash with special character\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n }\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // template string with double slash\n if (cnt.match(SINGLE_SLASH)) {\n cnt = SlashReplace(cnt);\n cnt = '\"+' + NameSpaceForspecialChar(cnt, (localKeys.indexOf(cnt) === -1), nameSpace, localKeys) + '\"]+\"';\n }\n else {\n // evaluate normal expression\n cnt = cnt !== '' ? '\"+' + addNameSpace(cnt.replace(/,/gi, '+' + nameSpace + '.'), (localKeys.indexOf(cnt) === -1), nameSpace, localKeys, ignorePrefix) + '+\"' : '${}';\n }\n }\n return cnt;\n });\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction addNameSpace(str, addNS, nameSpace, ignoreList, ignorePrefix) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1 && !ignorePrefix && str !== \"true\" && str !== \"false\") ? nameSpace + '.' + str : str);\n}\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceArrObj(str, addNS, nameSpace, ignoreList) {\n var arrObjReg = /^\\..*/gm;\n return ((addNS && !(NOT_NUMBER.test(str)) &&\n ignoreList.indexOf(str.split('.')[0]) === -1 && !(arrObjReg.test(str))) ? nameSpace + '.' + str : str);\n}\n// // Create hashCode for template string to storeCached function\n// function hashCode(str: string): string {\n// return str.split('').reduce((a: number, b: string) => { a = ((a << 5) - a) + b.charCodeAt(0); return a & a; }, 0).toString();\n// }\n/**\n *\n * @param {string} str ?\n * @param {boolean} addNS ?\n * @param {string} nameSpace ?\n * @param {string[]} ignoreList ?\n * @returns {string} ?\n */\nfunction NameSpaceForspecialChar(str, addNS, nameSpace, ignoreList) {\n return ((addNS && !(NOT_NUMBER.test(str)) && ignoreList.indexOf(str.split('.')[0]) === -1) ? nameSpace + '[\"' + str : str);\n}\n// eslint-disable-next-line\nfunction SlashReplace(tempStr) {\n var double = '\\\\\\\\';\n if (tempStr.match(DOUBLE_SLASH)) {\n // eslint-disable-next-line\n tempStr = tempStr;\n }\n else {\n tempStr = tempStr.replace(SINGLE_SLASH, double);\n }\n return tempStr;\n}\n/**\n *\n * @param {string} str ?\n * @param {string} nameSpaceNew ?\n * @param {string[]} keys ?\n * @param {boolean} ignorePrefix ?\n * @returns {string} ?\n */\nfunction HandleSpecialCharArrObj(str, nameSpaceNew, keys, ignorePrefix) {\n str = str.trim();\n var windowFunc = /\\window\\./gm;\n if (!windowFunc.test(str)) {\n var quotes = /'|\"/gm;\n var splRegexp = /@|\\$|#/gm;\n if (splRegexp.test(str)) {\n str = NameSpaceForspecialChar(str, (keys.indexOf(str) === -1), nameSpaceNew, keys) + '\"]';\n }\n if (ARR_OBJ.test(str)) {\n return NameSpaceArrObj(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys);\n }\n else {\n return addNameSpace(str, !(quotes.test(str)) && (keys.indexOf(str) === -1), nameSpaceNew, keys, ignorePrefix);\n }\n }\n else {\n return str;\n }\n}\n","/**\n * Template Engine Bridge\n */\nimport { compile as render } from './template';\nimport { createElement } from './dom';\nimport { isNullOrUndefined, isBlazor } from './util';\nvar HAS_ROW = /^[\\n\\r.]+ 0) {\n elements.forEach(function (element) {\n detach(element);\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeJsEvents = function () {\n var elements = this.wrapElement.querySelectorAll('[' + jsEvents.join('],[') + ']');\n if (elements.length > 0) {\n elements.forEach(function (element) {\n jsEvents.forEach(function (attr) {\n if (element.hasAttribute(attr)) {\n element.removeAttribute(attr);\n }\n });\n });\n }\n else {\n return;\n }\n };\n SanitizeHtmlHelper.removeXssAttrs = function () {\n var _this = this;\n // eslint-disable-next-line\n this.removeAttrs.forEach(function (item, index) {\n var elements = _this.wrapElement.querySelectorAll(item.selector);\n if (elements.length > 0) {\n elements.forEach(function (element) {\n element.removeAttribute(item.attribute);\n });\n }\n });\n };\n return SanitizeHtmlHelper;\n}());\nexport { SanitizeHtmlHelper };\n","import { createContext } from 'react';\n\nconst AuthContext = createContext({\n getUser: () => {},\n getToken: () => {},\n updateUser: () => {},\n signup: () => {},\n login: () => {},\n logout: () => {},\n forgotPassword: () => {},\n resetPassword: () => {},\n});\n\nconst LoadingContext = createContext({\n isLoading: false,\n setIsLoading: null,\n});\n\nexport { AuthContext, LoadingContext }","import './Footer.css';\n\nexport default function SearchBar() {\n return (\n
\n © 2023 RibbonMD, Inc. \n \n \n Terms & Conditions{' '}\n \n ·\n \n HIPAA Compliance{' '}\n \n ·\n \n Privacy Policy{' '}\n \n \n
\n );\n}\n","import { useContext } from 'react';\nimport { useNavigate, NavLink } from 'react-router-dom';\nimport { confirmAlert } from 'react-confirm-alert';\nimport 'react-confirm-alert/src/react-confirm-alert.css';\nimport { AuthContext } from '../../utils/Context';\nimport './Menu.css';\n\nexport default function Menu() {\n const navigate = useNavigate();\n const useAuth = () => useContext(AuthContext);\n const auth = useAuth();\n\n const logout = () => {\n auth.logout(() => navigate('/signup', { replace: true }));\n };\n\n const confirmLogout = () => {\n confirmAlert({\n title: 'Logout',\n message: 'Are you sure you want to logout?',\n buttons: [\n {\n label: 'Yes',\n onClick: () => logout(),\n },\n {\n label: 'No',\n onClick: () => {},\n },\n ],\n });\n };\n\n return (\n
\n \n isPending ? 'pending' : isActive ? 'active-menu-item' : ''\n }\n >\n \n Calendar\n \n\n \n isPending ? 'pending' : isActive ? 'active-menu-item' : ''\n }\n >\n \n Patients\n \n\n \n isPending ? 'pending' : isActive ? 'active-menu-item' : ''\n }\n >\n \n Feedback\n \n\n \n isPending ? 'pending' : isActive ? 'active-menu-item' : ''\n }\n >\n \n Settings\n \n\n \n \n Logout\n \n
\n );\n}\n","import { useContext } from 'react';\nimport { Outlet, useNavigate } from 'react-router-dom';\nimport { AuthContext } from '../utils/Context';\nimport Footer from '../components/Footer/Footer';\nimport Menu from '../components/Menu/Menu';\n\nconst TopBar = ({ user }) => {\n const navigate = useNavigate();\n const useAuth = () => useContext(AuthContext);\n const auth = useAuth();\n\n const logout = () => {\n if (window.confirm('Are you sure you want to log out?')) {\n auth.logout(() => navigate('/signup', { replace: true }));\n }\n };\n\n return (\n
\n \n Welcome\n {` ${(user && user.userFirstName) || null}\n ${(user && user.userLastName) || null\n }!`}{' '}\n \n
\n navigate('/patients')}>Patients\n navigate('/feedback')}>Feedback\n Logout\n
\n
\n ribb\n n\n
\n
\n );\n};\n\nexport default function Root() {\n const useAuth = () => useContext(AuthContext);\n const auth = useAuth();\n const user = auth.getUser();\n\n return (\n <>\n
\n <>\n \n
\n \n \n
\n
\n \n
\n \n );\n}","'use strict';\n\nexport default function bind(fn, thisArg) {\n return function wrap() {\n return fn.apply(thisArg, arguments);\n };\n}\n","'use strict';\n\nimport bind from './helpers/bind.js';\n\n// utils is a library of generic helper functions non-specific to axios\n\nconst {toString} = Object.prototype;\nconst {getPrototypeOf} = Object;\n\nconst kindOf = (cache => thing => {\n const str = toString.call(thing);\n return cache[str] || (cache[str] = str.slice(8, -1).toLowerCase());\n})(Object.create(null));\n\nconst kindOfTest = (type) => {\n type = type.toLowerCase();\n return (thing) => kindOf(thing) === type\n}\n\nconst typeOfTest = type => thing => typeof thing === type;\n\n/**\n * Determine if a value is an Array\n *\n * @param {Object} val The value to test\n *\n * @returns {boolean} True if value is an Array, otherwise false\n */\nconst {isArray} = Array;\n\n/**\n * Determine if a value is undefined\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if the value is undefined, otherwise false\n */\nconst isUndefined = typeOfTest('undefined');\n\n/**\n * Determine if a value is a Buffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Buffer, otherwise false\n */\nfunction isBuffer(val) {\n return val !== null && !isUndefined(val) && val.constructor !== null && !isUndefined(val.constructor)\n && isFunction(val.constructor.isBuffer) && val.constructor.isBuffer(val);\n}\n\n/**\n * Determine if a value is an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is an ArrayBuffer, otherwise false\n */\nconst isArrayBuffer = kindOfTest('ArrayBuffer');\n\n\n/**\n * Determine if a value is a view on an ArrayBuffer\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a view on an ArrayBuffer, otherwise false\n */\nfunction isArrayBufferView(val) {\n let result;\n if ((typeof ArrayBuffer !== 'undefined') && (ArrayBuffer.isView)) {\n result = ArrayBuffer.isView(val);\n } else {\n result = (val) && (val.buffer) && (isArrayBuffer(val.buffer));\n }\n return result;\n}\n\n/**\n * Determine if a value is a String\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a String, otherwise false\n */\nconst isString = typeOfTest('string');\n\n/**\n * Determine if a value is a Function\n *\n * @param {*} val The value to test\n * @returns {boolean} True if value is a Function, otherwise false\n */\nconst isFunction = typeOfTest('function');\n\n/**\n * Determine if a value is a Number\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Number, otherwise false\n */\nconst isNumber = typeOfTest('number');\n\n/**\n * Determine if a value is an Object\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an Object, otherwise false\n */\nconst isObject = (thing) => thing !== null && typeof thing === 'object';\n\n/**\n * Determine if a value is a Boolean\n *\n * @param {*} thing The value to test\n * @returns {boolean} True if value is a Boolean, otherwise false\n */\nconst isBoolean = thing => thing === true || thing === false;\n\n/**\n * Determine if a value is a plain Object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a plain Object, otherwise false\n */\nconst isPlainObject = (val) => {\n if (kindOf(val) !== 'object') {\n return false;\n }\n\n const prototype = getPrototypeOf(val);\n return (prototype === null || prototype === Object.prototype || Object.getPrototypeOf(prototype) === null) && !(Symbol.toStringTag in val) && !(Symbol.iterator in val);\n}\n\n/**\n * Determine if a value is a Date\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Date, otherwise false\n */\nconst isDate = kindOfTest('Date');\n\n/**\n * Determine if a value is a File\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFile = kindOfTest('File');\n\n/**\n * Determine if a value is a Blob\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Blob, otherwise false\n */\nconst isBlob = kindOfTest('Blob');\n\n/**\n * Determine if a value is a FileList\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a File, otherwise false\n */\nconst isFileList = kindOfTest('FileList');\n\n/**\n * Determine if a value is a Stream\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a Stream, otherwise false\n */\nconst isStream = (val) => isObject(val) && isFunction(val.pipe);\n\n/**\n * Determine if a value is a FormData\n *\n * @param {*} thing The value to test\n *\n * @returns {boolean} True if value is an FormData, otherwise false\n */\nconst isFormData = (thing) => {\n const pattern = '[object FormData]';\n return thing && (\n (typeof FormData === 'function' && thing instanceof FormData) ||\n toString.call(thing) === pattern ||\n (isFunction(thing.toString) && thing.toString() === pattern)\n );\n}\n\n/**\n * Determine if a value is a URLSearchParams object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a URLSearchParams object, otherwise false\n */\nconst isURLSearchParams = kindOfTest('URLSearchParams');\n\n/**\n * Trim excess whitespace off the beginning and end of a string\n *\n * @param {String} str The String to trim\n *\n * @returns {String} The String freed of excess whitespace\n */\nconst trim = (str) => str.trim ?\n str.trim() : str.replace(/^[\\s\\uFEFF\\xA0]+|[\\s\\uFEFF\\xA0]+$/g, '');\n\n/**\n * Iterate over an Array or an Object invoking a function for each item.\n *\n * If `obj` is an Array callback will be called passing\n * the value, index, and complete array for each item.\n *\n * If 'obj' is an Object callback will be called passing\n * the value, key, and complete object for each property.\n *\n * @param {Object|Array} obj The object to iterate\n * @param {Function} fn The callback to invoke for each item\n *\n * @param {Boolean} [allOwnKeys = false]\n * @returns {any}\n */\nfunction forEach(obj, fn, {allOwnKeys = false} = {}) {\n // Don't bother if no value provided\n if (obj === null || typeof obj === 'undefined') {\n return;\n }\n\n let i;\n let l;\n\n // Force an array if not already something iterable\n if (typeof obj !== 'object') {\n /*eslint no-param-reassign:0*/\n obj = [obj];\n }\n\n if (isArray(obj)) {\n // Iterate over array values\n for (i = 0, l = obj.length; i < l; i++) {\n fn.call(null, obj[i], i, obj);\n }\n } else {\n // Iterate over object keys\n const keys = allOwnKeys ? Object.getOwnPropertyNames(obj) : Object.keys(obj);\n const len = keys.length;\n let key;\n\n for (i = 0; i < len; i++) {\n key = keys[i];\n fn.call(null, obj[key], key, obj);\n }\n }\n}\n\nfunction findKey(obj, key) {\n key = key.toLowerCase();\n const keys = Object.keys(obj);\n let i = keys.length;\n let _key;\n while (i-- > 0) {\n _key = keys[i];\n if (key === _key.toLowerCase()) {\n return _key;\n }\n }\n return null;\n}\n\nconst _global = (() => {\n /*eslint no-undef:0*/\n if (typeof globalThis !== \"undefined\") return globalThis;\n return typeof self !== \"undefined\" ? self : (typeof window !== 'undefined' ? window : global)\n})();\n\nconst isContextDefined = (context) => !isUndefined(context) && context !== _global;\n\n/**\n * Accepts varargs expecting each argument to be an object, then\n * immutably merges the properties of each object and returns result.\n *\n * When multiple objects contain the same key the later object in\n * the arguments list will take precedence.\n *\n * Example:\n *\n * ```js\n * var result = merge({foo: 123}, {foo: 456});\n * console.log(result.foo); // outputs 456\n * ```\n *\n * @param {Object} obj1 Object to merge\n *\n * @returns {Object} Result of all merge properties\n */\nfunction merge(/* obj1, obj2, obj3, ... */) {\n const {caseless} = isContextDefined(this) && this || {};\n const result = {};\n const assignValue = (val, key) => {\n const targetKey = caseless && findKey(result, key) || key;\n if (isPlainObject(result[targetKey]) && isPlainObject(val)) {\n result[targetKey] = merge(result[targetKey], val);\n } else if (isPlainObject(val)) {\n result[targetKey] = merge({}, val);\n } else if (isArray(val)) {\n result[targetKey] = val.slice();\n } else {\n result[targetKey] = val;\n }\n }\n\n for (let i = 0, l = arguments.length; i < l; i++) {\n arguments[i] && forEach(arguments[i], assignValue);\n }\n return result;\n}\n\n/**\n * Extends object a by mutably adding to it the properties of object b.\n *\n * @param {Object} a The object to be extended\n * @param {Object} b The object to copy properties from\n * @param {Object} thisArg The object to bind function to\n *\n * @param {Boolean} [allOwnKeys]\n * @returns {Object} The resulting value of object a\n */\nconst extend = (a, b, thisArg, {allOwnKeys}= {}) => {\n forEach(b, (val, key) => {\n if (thisArg && isFunction(val)) {\n a[key] = bind(val, thisArg);\n } else {\n a[key] = val;\n }\n }, {allOwnKeys});\n return a;\n}\n\n/**\n * Remove byte order marker. This catches EF BB BF (the UTF-8 BOM)\n *\n * @param {string} content with BOM\n *\n * @returns {string} content value without BOM\n */\nconst stripBOM = (content) => {\n if (content.charCodeAt(0) === 0xFEFF) {\n content = content.slice(1);\n }\n return content;\n}\n\n/**\n * Inherit the prototype methods from one constructor into another\n * @param {function} constructor\n * @param {function} superConstructor\n * @param {object} [props]\n * @param {object} [descriptors]\n *\n * @returns {void}\n */\nconst inherits = (constructor, superConstructor, props, descriptors) => {\n constructor.prototype = Object.create(superConstructor.prototype, descriptors);\n constructor.prototype.constructor = constructor;\n Object.defineProperty(constructor, 'super', {\n value: superConstructor.prototype\n });\n props && Object.assign(constructor.prototype, props);\n}\n\n/**\n * Resolve object with deep prototype chain to a flat object\n * @param {Object} sourceObj source object\n * @param {Object} [destObj]\n * @param {Function|Boolean} [filter]\n * @param {Function} [propFilter]\n *\n * @returns {Object}\n */\nconst toFlatObject = (sourceObj, destObj, filter, propFilter) => {\n let props;\n let i;\n let prop;\n const merged = {};\n\n destObj = destObj || {};\n // eslint-disable-next-line no-eq-null,eqeqeq\n if (sourceObj == null) return destObj;\n\n do {\n props = Object.getOwnPropertyNames(sourceObj);\n i = props.length;\n while (i-- > 0) {\n prop = props[i];\n if ((!propFilter || propFilter(prop, sourceObj, destObj)) && !merged[prop]) {\n destObj[prop] = sourceObj[prop];\n merged[prop] = true;\n }\n }\n sourceObj = filter !== false && getPrototypeOf(sourceObj);\n } while (sourceObj && (!filter || filter(sourceObj, destObj)) && sourceObj !== Object.prototype);\n\n return destObj;\n}\n\n/**\n * Determines whether a string ends with the characters of a specified string\n *\n * @param {String} str\n * @param {String} searchString\n * @param {Number} [position= 0]\n *\n * @returns {boolean}\n */\nconst endsWith = (str, searchString, position) => {\n str = String(str);\n if (position === undefined || position > str.length) {\n position = str.length;\n }\n position -= searchString.length;\n const lastIndex = str.indexOf(searchString, position);\n return lastIndex !== -1 && lastIndex === position;\n}\n\n\n/**\n * Returns new array from array like object or null if failed\n *\n * @param {*} [thing]\n *\n * @returns {?Array}\n */\nconst toArray = (thing) => {\n if (!thing) return null;\n if (isArray(thing)) return thing;\n let i = thing.length;\n if (!isNumber(i)) return null;\n const arr = new Array(i);\n while (i-- > 0) {\n arr[i] = thing[i];\n }\n return arr;\n}\n\n/**\n * Checking if the Uint8Array exists and if it does, it returns a function that checks if the\n * thing passed in is an instance of Uint8Array\n *\n * @param {TypedArray}\n *\n * @returns {Array}\n */\n// eslint-disable-next-line func-names\nconst isTypedArray = (TypedArray => {\n // eslint-disable-next-line func-names\n return thing => {\n return TypedArray && thing instanceof TypedArray;\n };\n})(typeof Uint8Array !== 'undefined' && getPrototypeOf(Uint8Array));\n\n/**\n * For each entry in the object, call the function with the key and value.\n *\n * @param {Object} obj - The object to iterate over.\n * @param {Function} fn - The function to call for each entry.\n *\n * @returns {void}\n */\nconst forEachEntry = (obj, fn) => {\n const generator = obj && obj[Symbol.iterator];\n\n const iterator = generator.call(obj);\n\n let result;\n\n while ((result = iterator.next()) && !result.done) {\n const pair = result.value;\n fn.call(obj, pair[0], pair[1]);\n }\n}\n\n/**\n * It takes a regular expression and a string, and returns an array of all the matches\n *\n * @param {string} regExp - The regular expression to match against.\n * @param {string} str - The string to search.\n *\n * @returns {Array}\n */\nconst matchAll = (regExp, str) => {\n let matches;\n const arr = [];\n\n while ((matches = regExp.exec(str)) !== null) {\n arr.push(matches);\n }\n\n return arr;\n}\n\n/* Checking if the kindOfTest function returns true when passed an HTMLFormElement. */\nconst isHTMLForm = kindOfTest('HTMLFormElement');\n\nconst toCamelCase = str => {\n return str.toLowerCase().replace(/[-_\\s]([a-z\\d])(\\w*)/g,\n function replacer(m, p1, p2) {\n return p1.toUpperCase() + p2;\n }\n );\n};\n\n/* Creating a function that will check if an object has a property. */\nconst hasOwnProperty = (({hasOwnProperty}) => (obj, prop) => hasOwnProperty.call(obj, prop))(Object.prototype);\n\n/**\n * Determine if a value is a RegExp object\n *\n * @param {*} val The value to test\n *\n * @returns {boolean} True if value is a RegExp object, otherwise false\n */\nconst isRegExp = kindOfTest('RegExp');\n\nconst reduceDescriptors = (obj, reducer) => {\n const descriptors = Object.getOwnPropertyDescriptors(obj);\n const reducedDescriptors = {};\n\n forEach(descriptors, (descriptor, name) => {\n if (reducer(descriptor, name, obj) !== false) {\n reducedDescriptors[name] = descriptor;\n }\n });\n\n Object.defineProperties(obj, reducedDescriptors);\n}\n\n/**\n * Makes all methods read-only\n * @param {Object} obj\n */\n\nconst freezeMethods = (obj) => {\n reduceDescriptors(obj, (descriptor, name) => {\n // skip restricted props in strict mode\n if (isFunction(obj) && ['arguments', 'caller', 'callee'].indexOf(name) !== -1) {\n return false;\n }\n\n const value = obj[name];\n\n if (!isFunction(value)) return;\n\n descriptor.enumerable = false;\n\n if ('writable' in descriptor) {\n descriptor.writable = false;\n return;\n }\n\n if (!descriptor.set) {\n descriptor.set = () => {\n throw Error('Can not rewrite read-only method \\'' + name + '\\'');\n };\n }\n });\n}\n\nconst toObjectSet = (arrayOrString, delimiter) => {\n const obj = {};\n\n const define = (arr) => {\n arr.forEach(value => {\n obj[value] = true;\n });\n }\n\n isArray(arrayOrString) ? define(arrayOrString) : define(String(arrayOrString).split(delimiter));\n\n return obj;\n}\n\nconst noop = () => {}\n\nconst toFiniteNumber = (value, defaultValue) => {\n value = +value;\n return Number.isFinite(value) ? value : defaultValue;\n}\n\nconst ALPHA = 'abcdefghijklmnopqrstuvwxyz'\n\nconst DIGIT = '0123456789';\n\nconst ALPHABET = {\n DIGIT,\n ALPHA,\n ALPHA_DIGIT: ALPHA + ALPHA.toUpperCase() + DIGIT\n}\n\nconst generateString = (size = 16, alphabet = ALPHABET.ALPHA_DIGIT) => {\n let str = '';\n const {length} = alphabet;\n while (size--) {\n str += alphabet[Math.random() * length|0]\n }\n\n return str;\n}\n\n/**\n * If the thing is a FormData object, return true, otherwise return false.\n *\n * @param {unknown} thing - The thing to check.\n *\n * @returns {boolean}\n */\nfunction isSpecCompliantForm(thing) {\n return !!(thing && isFunction(thing.append) && thing[Symbol.toStringTag] === 'FormData' && thing[Symbol.iterator]);\n}\n\nconst toJSONObject = (obj) => {\n const stack = new Array(10);\n\n const visit = (source, i) => {\n\n if (isObject(source)) {\n if (stack.indexOf(source) >= 0) {\n return;\n }\n\n if(!('toJSON' in source)) {\n stack[i] = source;\n const target = isArray(source) ? [] : {};\n\n forEach(source, (value, key) => {\n const reducedValue = visit(value, i + 1);\n !isUndefined(reducedValue) && (target[key] = reducedValue);\n });\n\n stack[i] = undefined;\n\n return target;\n }\n }\n\n return source;\n }\n\n return visit(obj, 0);\n}\n\nexport default {\n isArray,\n isArrayBuffer,\n isBuffer,\n isFormData,\n isArrayBufferView,\n isString,\n isNumber,\n isBoolean,\n isObject,\n isPlainObject,\n isUndefined,\n isDate,\n isFile,\n isBlob,\n isRegExp,\n isFunction,\n isStream,\n isURLSearchParams,\n isTypedArray,\n isFileList,\n forEach,\n merge,\n extend,\n trim,\n stripBOM,\n inherits,\n toFlatObject,\n kindOf,\n kindOfTest,\n endsWith,\n toArray,\n forEachEntry,\n matchAll,\n isHTMLForm,\n hasOwnProperty,\n hasOwnProp: hasOwnProperty, // an alias to avoid ESLint no-prototype-builtins detection\n reduceDescriptors,\n freezeMethods,\n toObjectSet,\n toCamelCase,\n noop,\n toFiniteNumber,\n findKey,\n global: _global,\n isContextDefined,\n ALPHABET,\n generateString,\n isSpecCompliantForm,\n toJSONObject\n};\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * Create an Error with the specified message, config, error code, request and response.\n *\n * @param {string} message The error message.\n * @param {string} [code] The error code (for example, 'ECONNABORTED').\n * @param {Object} [config] The config.\n * @param {Object} [request] The request.\n * @param {Object} [response] The response.\n *\n * @returns {Error} The created error.\n */\nfunction AxiosError(message, code, config, request, response) {\n Error.call(this);\n\n if (Error.captureStackTrace) {\n Error.captureStackTrace(this, this.constructor);\n } else {\n this.stack = (new Error()).stack;\n }\n\n this.message = message;\n this.name = 'AxiosError';\n code && (this.code = code);\n config && (this.config = config);\n request && (this.request = request);\n response && (this.response = response);\n}\n\nutils.inherits(AxiosError, Error, {\n toJSON: function toJSON() {\n return {\n // Standard\n message: this.message,\n name: this.name,\n // Microsoft\n description: this.description,\n number: this.number,\n // Mozilla\n fileName: this.fileName,\n lineNumber: this.lineNumber,\n columnNumber: this.columnNumber,\n stack: this.stack,\n // Axios\n config: utils.toJSONObject(this.config),\n code: this.code,\n status: this.response && this.response.status ? this.response.status : null\n };\n }\n});\n\nconst prototype = AxiosError.prototype;\nconst descriptors = {};\n\n[\n 'ERR_BAD_OPTION_VALUE',\n 'ERR_BAD_OPTION',\n 'ECONNABORTED',\n 'ETIMEDOUT',\n 'ERR_NETWORK',\n 'ERR_FR_TOO_MANY_REDIRECTS',\n 'ERR_DEPRECATED',\n 'ERR_BAD_RESPONSE',\n 'ERR_BAD_REQUEST',\n 'ERR_CANCELED',\n 'ERR_NOT_SUPPORT',\n 'ERR_INVALID_URL'\n// eslint-disable-next-line func-names\n].forEach(code => {\n descriptors[code] = {value: code};\n});\n\nObject.defineProperties(AxiosError, descriptors);\nObject.defineProperty(prototype, 'isAxiosError', {value: true});\n\n// eslint-disable-next-line func-names\nAxiosError.from = (error, code, config, request, response, customProps) => {\n const axiosError = Object.create(prototype);\n\n utils.toFlatObject(error, axiosError, function filter(obj) {\n return obj !== Error.prototype;\n }, prop => {\n return prop !== 'isAxiosError';\n });\n\n AxiosError.call(axiosError, error.message, code, config, request, response);\n\n axiosError.cause = error;\n\n axiosError.name = error.name;\n\n customProps && Object.assign(axiosError, customProps);\n\n return axiosError;\n};\n\nexport default AxiosError;\n","// eslint-disable-next-line strict\nexport default null;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\n// temporary hotfix to avoid circular references until AxiosURLSearchParams is refactored\nimport PlatformFormData from '../platform/node/classes/FormData.js';\n\n/**\n * Determines if the given thing is a array or js object.\n *\n * @param {string} thing - The object or array to be visited.\n *\n * @returns {boolean}\n */\nfunction isVisitable(thing) {\n return utils.isPlainObject(thing) || utils.isArray(thing);\n}\n\n/**\n * It removes the brackets from the end of a string\n *\n * @param {string} key - The key of the parameter.\n *\n * @returns {string} the key without the brackets.\n */\nfunction removeBrackets(key) {\n return utils.endsWith(key, '[]') ? key.slice(0, -2) : key;\n}\n\n/**\n * It takes a path, a key, and a boolean, and returns a string\n *\n * @param {string} path - The path to the current key.\n * @param {string} key - The key of the current object being iterated over.\n * @param {string} dots - If true, the key will be rendered with dots instead of brackets.\n *\n * @returns {string} The path to the current key.\n */\nfunction renderKey(path, key, dots) {\n if (!path) return key;\n return path.concat(key).map(function each(token, i) {\n // eslint-disable-next-line no-param-reassign\n token = removeBrackets(token);\n return !dots && i ? '[' + token + ']' : token;\n }).join(dots ? '.' : '');\n}\n\n/**\n * If the array is an array and none of its elements are visitable, then it's a flat array.\n *\n * @param {Array} arr - The array to check\n *\n * @returns {boolean}\n */\nfunction isFlatArray(arr) {\n return utils.isArray(arr) && !arr.some(isVisitable);\n}\n\nconst predicates = utils.toFlatObject(utils, {}, null, function filter(prop) {\n return /^is[A-Z]/.test(prop);\n});\n\n/**\n * Convert a data object to FormData\n *\n * @param {Object} obj\n * @param {?Object} [formData]\n * @param {?Object} [options]\n * @param {Function} [options.visitor]\n * @param {Boolean} [options.metaTokens = true]\n * @param {Boolean} [options.dots = false]\n * @param {?Boolean} [options.indexes = false]\n *\n * @returns {Object}\n **/\n\n/**\n * It converts an object into a FormData object\n *\n * @param {Object} obj - The object to convert to form data.\n * @param {string} formData - The FormData object to append to.\n * @param {Object} options\n *\n * @returns\n */\nfunction toFormData(obj, formData, options) {\n if (!utils.isObject(obj)) {\n throw new TypeError('target must be an object');\n }\n\n // eslint-disable-next-line no-param-reassign\n formData = formData || new (PlatformFormData || FormData)();\n\n // eslint-disable-next-line no-param-reassign\n options = utils.toFlatObject(options, {\n metaTokens: true,\n dots: false,\n indexes: false\n }, false, function defined(option, source) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n return !utils.isUndefined(source[option]);\n });\n\n const metaTokens = options.metaTokens;\n // eslint-disable-next-line no-use-before-define\n const visitor = options.visitor || defaultVisitor;\n const dots = options.dots;\n const indexes = options.indexes;\n const _Blob = options.Blob || typeof Blob !== 'undefined' && Blob;\n const useBlob = _Blob && utils.isSpecCompliantForm(formData);\n\n if (!utils.isFunction(visitor)) {\n throw new TypeError('visitor must be a function');\n }\n\n function convertValue(value) {\n if (value === null) return '';\n\n if (utils.isDate(value)) {\n return value.toISOString();\n }\n\n if (!useBlob && utils.isBlob(value)) {\n throw new AxiosError('Blob is not supported. Use a Buffer instead.');\n }\n\n if (utils.isArrayBuffer(value) || utils.isTypedArray(value)) {\n return useBlob && typeof Blob === 'function' ? new Blob([value]) : Buffer.from(value);\n }\n\n return value;\n }\n\n /**\n * Default visitor.\n *\n * @param {*} value\n * @param {String|Number} key\n * @param {Array} path\n * @this {FormData}\n *\n * @returns {boolean} return true to visit the each prop of the value recursively\n */\n function defaultVisitor(value, key, path) {\n let arr = value;\n\n if (value && !path && typeof value === 'object') {\n if (utils.endsWith(key, '{}')) {\n // eslint-disable-next-line no-param-reassign\n key = metaTokens ? key : key.slice(0, -2);\n // eslint-disable-next-line no-param-reassign\n value = JSON.stringify(value);\n } else if (\n (utils.isArray(value) && isFlatArray(value)) ||\n ((utils.isFileList(value) || utils.endsWith(key, '[]')) && (arr = utils.toArray(value))\n )) {\n // eslint-disable-next-line no-param-reassign\n key = removeBrackets(key);\n\n arr.forEach(function each(el, index) {\n !(utils.isUndefined(el) || el === null) && formData.append(\n // eslint-disable-next-line no-nested-ternary\n indexes === true ? renderKey([key], index, dots) : (indexes === null ? key : key + '[]'),\n convertValue(el)\n );\n });\n return false;\n }\n }\n\n if (isVisitable(value)) {\n return true;\n }\n\n formData.append(renderKey(path, key, dots), convertValue(value));\n\n return false;\n }\n\n const stack = [];\n\n const exposedHelpers = Object.assign(predicates, {\n defaultVisitor,\n convertValue,\n isVisitable\n });\n\n function build(value, path) {\n if (utils.isUndefined(value)) return;\n\n if (stack.indexOf(value) !== -1) {\n throw Error('Circular reference detected in ' + path.join('.'));\n }\n\n stack.push(value);\n\n utils.forEach(value, function each(el, key) {\n const result = !(utils.isUndefined(el) || el === null) && visitor.call(\n formData, el, utils.isString(key) ? key.trim() : key, path, exposedHelpers\n );\n\n if (result === true) {\n build(el, path ? path.concat(key) : [key]);\n }\n });\n\n stack.pop();\n }\n\n if (!utils.isObject(obj)) {\n throw new TypeError('data must be an object');\n }\n\n build(obj);\n\n return formData;\n}\n\nexport default toFormData;\n","'use strict';\n\nimport toFormData from './toFormData.js';\n\n/**\n * It encodes a string by replacing all characters that are not in the unreserved set with\n * their percent-encoded equivalents\n *\n * @param {string} str - The string to encode.\n *\n * @returns {string} The encoded string.\n */\nfunction encode(str) {\n const charMap = {\n '!': '%21',\n \"'\": '%27',\n '(': '%28',\n ')': '%29',\n '~': '%7E',\n '%20': '+',\n '%00': '\\x00'\n };\n return encodeURIComponent(str).replace(/[!'()~]|%20|%00/g, function replacer(match) {\n return charMap[match];\n });\n}\n\n/**\n * It takes a params object and converts it to a FormData object\n *\n * @param {Object} params - The parameters to be converted to a FormData object.\n * @param {Object} options - The options object passed to the Axios constructor.\n *\n * @returns {void}\n */\nfunction AxiosURLSearchParams(params, options) {\n this._pairs = [];\n\n params && toFormData(params, this, options);\n}\n\nconst prototype = AxiosURLSearchParams.prototype;\n\nprototype.append = function append(name, value) {\n this._pairs.push([name, value]);\n};\n\nprototype.toString = function toString(encoder) {\n const _encode = encoder ? function(value) {\n return encoder.call(this, value, encode);\n } : encode;\n\n return this._pairs.map(function each(pair) {\n return _encode(pair[0]) + '=' + _encode(pair[1]);\n }, '').join('&');\n};\n\nexport default AxiosURLSearchParams;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosURLSearchParams from '../helpers/AxiosURLSearchParams.js';\n\n/**\n * It replaces all instances of the characters `:`, `$`, `,`, `+`, `[`, and `]` with their\n * URI encoded counterparts\n *\n * @param {string} val The value to be encoded.\n *\n * @returns {string} The encoded value.\n */\nfunction encode(val) {\n return encodeURIComponent(val).\n replace(/%3A/gi, ':').\n replace(/%24/g, '$').\n replace(/%2C/gi, ',').\n replace(/%20/g, '+').\n replace(/%5B/gi, '[').\n replace(/%5D/gi, ']');\n}\n\n/**\n * Build a URL by appending params to the end\n *\n * @param {string} url The base of the url (e.g., http://www.google.com)\n * @param {object} [params] The params to be appended\n * @param {?object} options\n *\n * @returns {string} The formatted url\n */\nexport default function buildURL(url, params, options) {\n /*eslint no-param-reassign:0*/\n if (!params) {\n return url;\n }\n \n const _encode = options && options.encode || encode;\n\n const serializeFn = options && options.serialize;\n\n let serializedParams;\n\n if (serializeFn) {\n serializedParams = serializeFn(params, options);\n } else {\n serializedParams = utils.isURLSearchParams(params) ?\n params.toString() :\n new AxiosURLSearchParams(params, options).toString(_encode);\n }\n\n if (serializedParams) {\n const hashmarkIndex = url.indexOf(\"#\");\n\n if (hashmarkIndex !== -1) {\n url = url.slice(0, hashmarkIndex);\n }\n url += (url.indexOf('?') === -1 ? '?' : '&') + serializedParams;\n }\n\n return url;\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\nclass InterceptorManager {\n constructor() {\n this.handlers = [];\n }\n\n /**\n * Add a new interceptor to the stack\n *\n * @param {Function} fulfilled The function to handle `then` for a `Promise`\n * @param {Function} rejected The function to handle `reject` for a `Promise`\n *\n * @return {Number} An ID used to remove interceptor later\n */\n use(fulfilled, rejected, options) {\n this.handlers.push({\n fulfilled,\n rejected,\n synchronous: options ? options.synchronous : false,\n runWhen: options ? options.runWhen : null\n });\n return this.handlers.length - 1;\n }\n\n /**\n * Remove an interceptor from the stack\n *\n * @param {Number} id The ID that was returned by `use`\n *\n * @returns {Boolean} `true` if the interceptor was removed, `false` otherwise\n */\n eject(id) {\n if (this.handlers[id]) {\n this.handlers[id] = null;\n }\n }\n\n /**\n * Clear all interceptors from the stack\n *\n * @returns {void}\n */\n clear() {\n if (this.handlers) {\n this.handlers = [];\n }\n }\n\n /**\n * Iterate over all the registered interceptors\n *\n * This method is particularly useful for skipping over any\n * interceptors that may have become `null` calling `eject`.\n *\n * @param {Function} fn The function to call for each interceptor\n *\n * @returns {void}\n */\n forEach(fn) {\n utils.forEach(this.handlers, function forEachHandler(h) {\n if (h !== null) {\n fn(h);\n }\n });\n }\n}\n\nexport default InterceptorManager;\n","'use strict';\n\nexport default {\n silentJSONParsing: true,\n forcedJSONParsing: true,\n clarifyTimeoutError: false\n};\n","import URLSearchParams from './classes/URLSearchParams.js'\nimport FormData from './classes/FormData.js'\nimport Blob from './classes/Blob.js'\n\n/**\n * Determine if we're running in a standard browser environment\n *\n * This allows axios to run in a web worker, and react-native.\n * Both environments support XMLHttpRequest, but not fully standard globals.\n *\n * web workers:\n * typeof window -> undefined\n * typeof document -> undefined\n *\n * react-native:\n * navigator.product -> 'ReactNative'\n * nativescript\n * navigator.product -> 'NativeScript' or 'NS'\n *\n * @returns {boolean}\n */\nconst isStandardBrowserEnv = (() => {\n let product;\n if (typeof navigator !== 'undefined' && (\n (product = navigator.product) === 'ReactNative' ||\n product === 'NativeScript' ||\n product === 'NS')\n ) {\n return false;\n }\n\n return typeof window !== 'undefined' && typeof document !== 'undefined';\n})();\n\n/**\n * Determine if we're running in a standard browser webWorker environment\n *\n * Although the `isStandardBrowserEnv` method indicates that\n * `allows axios to run in a web worker`, the WebWorker will still be\n * filtered out due to its judgment standard\n * `typeof window !== 'undefined' && typeof document !== 'undefined'`.\n * This leads to a problem when axios post `FormData` in webWorker\n */\n const isStandardBrowserWebWorkerEnv = (() => {\n return (\n typeof WorkerGlobalScope !== 'undefined' &&\n // eslint-disable-next-line no-undef\n self instanceof WorkerGlobalScope &&\n typeof self.importScripts === 'function'\n );\n})();\n\n\nexport default {\n isBrowser: true,\n classes: {\n URLSearchParams,\n FormData,\n Blob\n },\n isStandardBrowserEnv,\n isStandardBrowserWebWorkerEnv,\n protocols: ['http', 'https', 'file', 'blob', 'url', 'data']\n};\n","'use strict';\n\nimport AxiosURLSearchParams from '../../../helpers/AxiosURLSearchParams.js';\nexport default typeof URLSearchParams !== 'undefined' ? URLSearchParams : AxiosURLSearchParams;\n","'use strict';\n\nexport default typeof FormData !== 'undefined' ? FormData : null;\n","'use strict'\n\nexport default typeof Blob !== 'undefined' ? Blob : null\n","'use strict';\n\nimport utils from '../utils.js';\n\n/**\n * It takes a string like `foo[x][y][z]` and returns an array like `['foo', 'x', 'y', 'z']\n *\n * @param {string} name - The name of the property to get.\n *\n * @returns An array of strings.\n */\nfunction parsePropPath(name) {\n // foo[x][y][z]\n // foo.x.y.z\n // foo-x-y-z\n // foo x y z\n return utils.matchAll(/\\w+|\\[(\\w*)]/g, name).map(match => {\n return match[0] === '[]' ? '' : match[1] || match[0];\n });\n}\n\n/**\n * Convert an array to an object.\n *\n * @param {Array} arr - The array to convert to an object.\n *\n * @returns An object with the same keys and values as the array.\n */\nfunction arrayToObject(arr) {\n const obj = {};\n const keys = Object.keys(arr);\n let i;\n const len = keys.length;\n let key;\n for (i = 0; i < len; i++) {\n key = keys[i];\n obj[key] = arr[key];\n }\n return obj;\n}\n\n/**\n * It takes a FormData object and returns a JavaScript object\n *\n * @param {string} formData The FormData object to convert to JSON.\n *\n * @returns {Object | null} The converted object.\n */\nfunction formDataToJSON(formData) {\n function buildPath(path, value, target, index) {\n let name = path[index++];\n const isNumericKey = Number.isFinite(+name);\n const isLast = index >= path.length;\n name = !name && utils.isArray(target) ? target.length : name;\n\n if (isLast) {\n if (utils.hasOwnProp(target, name)) {\n target[name] = [target[name], value];\n } else {\n target[name] = value;\n }\n\n return !isNumericKey;\n }\n\n if (!target[name] || !utils.isObject(target[name])) {\n target[name] = [];\n }\n\n const result = buildPath(path, value, target[name], index);\n\n if (result && utils.isArray(target[name])) {\n target[name] = arrayToObject(target[name]);\n }\n\n return !isNumericKey;\n }\n\n if (utils.isFormData(formData) && utils.isFunction(formData.entries)) {\n const obj = {};\n\n utils.forEachEntry(formData, (name, value) => {\n buildPath(parsePropPath(name), value, obj, 0);\n });\n\n return obj;\n }\n\n return null;\n}\n\nexport default formDataToJSON;\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosError from '../core/AxiosError.js';\nimport transitionalDefaults from './transitional.js';\nimport toFormData from '../helpers/toFormData.js';\nimport toURLEncodedForm from '../helpers/toURLEncodedForm.js';\nimport platform from '../platform/index.js';\nimport formDataToJSON from '../helpers/formDataToJSON.js';\n\nconst DEFAULT_CONTENT_TYPE = {\n 'Content-Type': undefined\n};\n\n/**\n * It takes a string, tries to parse it, and if it fails, it returns the stringified version\n * of the input\n *\n * @param {any} rawValue - The value to be stringified.\n * @param {Function} parser - A function that parses a string into a JavaScript object.\n * @param {Function} encoder - A function that takes a value and returns a string.\n *\n * @returns {string} A stringified version of the rawValue.\n */\nfunction stringifySafely(rawValue, parser, encoder) {\n if (utils.isString(rawValue)) {\n try {\n (parser || JSON.parse)(rawValue);\n return utils.trim(rawValue);\n } catch (e) {\n if (e.name !== 'SyntaxError') {\n throw e;\n }\n }\n }\n\n return (encoder || JSON.stringify)(rawValue);\n}\n\nconst defaults = {\n\n transitional: transitionalDefaults,\n\n adapter: ['xhr', 'http'],\n\n transformRequest: [function transformRequest(data, headers) {\n const contentType = headers.getContentType() || '';\n const hasJSONContentType = contentType.indexOf('application/json') > -1;\n const isObjectPayload = utils.isObject(data);\n\n if (isObjectPayload && utils.isHTMLForm(data)) {\n data = new FormData(data);\n }\n\n const isFormData = utils.isFormData(data);\n\n if (isFormData) {\n if (!hasJSONContentType) {\n return data;\n }\n return hasJSONContentType ? JSON.stringify(formDataToJSON(data)) : data;\n }\n\n if (utils.isArrayBuffer(data) ||\n utils.isBuffer(data) ||\n utils.isStream(data) ||\n utils.isFile(data) ||\n utils.isBlob(data)\n ) {\n return data;\n }\n if (utils.isArrayBufferView(data)) {\n return data.buffer;\n }\n if (utils.isURLSearchParams(data)) {\n headers.setContentType('application/x-www-form-urlencoded;charset=utf-8', false);\n return data.toString();\n }\n\n let isFileList;\n\n if (isObjectPayload) {\n if (contentType.indexOf('application/x-www-form-urlencoded') > -1) {\n return toURLEncodedForm(data, this.formSerializer).toString();\n }\n\n if ((isFileList = utils.isFileList(data)) || contentType.indexOf('multipart/form-data') > -1) {\n const _FormData = this.env && this.env.FormData;\n\n return toFormData(\n isFileList ? {'files[]': data} : data,\n _FormData && new _FormData(),\n this.formSerializer\n );\n }\n }\n\n if (isObjectPayload || hasJSONContentType ) {\n headers.setContentType('application/json', false);\n return stringifySafely(data);\n }\n\n return data;\n }],\n\n transformResponse: [function transformResponse(data) {\n const transitional = this.transitional || defaults.transitional;\n const forcedJSONParsing = transitional && transitional.forcedJSONParsing;\n const JSONRequested = this.responseType === 'json';\n\n if (data && utils.isString(data) && ((forcedJSONParsing && !this.responseType) || JSONRequested)) {\n const silentJSONParsing = transitional && transitional.silentJSONParsing;\n const strictJSONParsing = !silentJSONParsing && JSONRequested;\n\n try {\n return JSON.parse(data);\n } catch (e) {\n if (strictJSONParsing) {\n if (e.name === 'SyntaxError') {\n throw AxiosError.from(e, AxiosError.ERR_BAD_RESPONSE, this, null, this.response);\n }\n throw e;\n }\n }\n }\n\n return data;\n }],\n\n /**\n * A timeout in milliseconds to abort a request. If set to 0 (default) a\n * timeout is not created.\n */\n timeout: 0,\n\n xsrfCookieName: 'XSRF-TOKEN',\n xsrfHeaderName: 'X-XSRF-TOKEN',\n\n maxContentLength: -1,\n maxBodyLength: -1,\n\n env: {\n FormData: platform.classes.FormData,\n Blob: platform.classes.Blob\n },\n\n validateStatus: function validateStatus(status) {\n return status >= 200 && status < 300;\n },\n\n headers: {\n common: {\n 'Accept': 'application/json, text/plain, */*'\n }\n }\n};\n\nutils.forEach(['delete', 'get', 'head'], function forEachMethodNoData(method) {\n defaults.headers[method] = {};\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n defaults.headers[method] = utils.merge(DEFAULT_CONTENT_TYPE);\n});\n\nexport default defaults;\n","'use strict';\n\nimport utils from '../utils.js';\nimport toFormData from './toFormData.js';\nimport platform from '../platform/index.js';\n\nexport default function toURLEncodedForm(data, options) {\n return toFormData(data, new platform.classes.URLSearchParams(), Object.assign({\n visitor: function(value, key, path, helpers) {\n if (platform.isNode && utils.isBuffer(value)) {\n this.append(key, value.toString('base64'));\n return false;\n }\n\n return helpers.defaultVisitor.apply(this, arguments);\n }\n }, options));\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n// RawAxiosHeaders whose duplicates are ignored by node\n// c.f. https://nodejs.org/api/http.html#http_message_headers\nconst ignoreDuplicateOf = utils.toObjectSet([\n 'age', 'authorization', 'content-length', 'content-type', 'etag',\n 'expires', 'from', 'host', 'if-modified-since', 'if-unmodified-since',\n 'last-modified', 'location', 'max-forwards', 'proxy-authorization',\n 'referer', 'retry-after', 'user-agent'\n]);\n\n/**\n * Parse headers into an object\n *\n * ```\n * Date: Wed, 27 Aug 2014 08:58:49 GMT\n * Content-Type: application/json\n * Connection: keep-alive\n * Transfer-Encoding: chunked\n * ```\n *\n * @param {String} rawHeaders Headers needing to be parsed\n *\n * @returns {Object} Headers parsed into an object\n */\nexport default rawHeaders => {\n const parsed = {};\n let key;\n let val;\n let i;\n\n rawHeaders && rawHeaders.split('\\n').forEach(function parser(line) {\n i = line.indexOf(':');\n key = line.substring(0, i).trim().toLowerCase();\n val = line.substring(i + 1).trim();\n\n if (!key || (parsed[key] && ignoreDuplicateOf[key])) {\n return;\n }\n\n if (key === 'set-cookie') {\n if (parsed[key]) {\n parsed[key].push(val);\n } else {\n parsed[key] = [val];\n }\n } else {\n parsed[key] = parsed[key] ? parsed[key] + ', ' + val : val;\n }\n });\n\n return parsed;\n};\n","'use strict';\n\nimport utils from '../utils.js';\nimport parseHeaders from '../helpers/parseHeaders.js';\n\nconst $internals = Symbol('internals');\n\nfunction normalizeHeader(header) {\n return header && String(header).trim().toLowerCase();\n}\n\nfunction normalizeValue(value) {\n if (value === false || value == null) {\n return value;\n }\n\n return utils.isArray(value) ? value.map(normalizeValue) : String(value);\n}\n\nfunction parseTokens(str) {\n const tokens = Object.create(null);\n const tokensRE = /([^\\s,;=]+)\\s*(?:=\\s*([^,;]+))?/g;\n let match;\n\n while ((match = tokensRE.exec(str))) {\n tokens[match[1]] = match[2];\n }\n\n return tokens;\n}\n\nconst isValidHeaderName = (str) => /^[-_a-zA-Z0-9^`|~,!#$%&'*+.]+$/.test(str.trim());\n\nfunction matchHeaderValue(context, value, header, filter, isHeaderNameFilter) {\n if (utils.isFunction(filter)) {\n return filter.call(this, value, header);\n }\n\n if (isHeaderNameFilter) {\n value = header;\n }\n\n if (!utils.isString(value)) return;\n\n if (utils.isString(filter)) {\n return value.indexOf(filter) !== -1;\n }\n\n if (utils.isRegExp(filter)) {\n return filter.test(value);\n }\n}\n\nfunction formatHeader(header) {\n return header.trim()\n .toLowerCase().replace(/([a-z\\d])(\\w*)/g, (w, char, str) => {\n return char.toUpperCase() + str;\n });\n}\n\nfunction buildAccessors(obj, header) {\n const accessorName = utils.toCamelCase(' ' + header);\n\n ['get', 'set', 'has'].forEach(methodName => {\n Object.defineProperty(obj, methodName + accessorName, {\n value: function(arg1, arg2, arg3) {\n return this[methodName].call(this, header, arg1, arg2, arg3);\n },\n configurable: true\n });\n });\n}\n\nclass AxiosHeaders {\n constructor(headers) {\n headers && this.set(headers);\n }\n\n set(header, valueOrRewrite, rewrite) {\n const self = this;\n\n function setHeader(_value, _header, _rewrite) {\n const lHeader = normalizeHeader(_header);\n\n if (!lHeader) {\n throw new Error('header name must be a non-empty string');\n }\n\n const key = utils.findKey(self, lHeader);\n\n if(!key || self[key] === undefined || _rewrite === true || (_rewrite === undefined && self[key] !== false)) {\n self[key || _header] = normalizeValue(_value);\n }\n }\n\n const setHeaders = (headers, _rewrite) =>\n utils.forEach(headers, (_value, _header) => setHeader(_value, _header, _rewrite));\n\n if (utils.isPlainObject(header) || header instanceof this.constructor) {\n setHeaders(header, valueOrRewrite)\n } else if(utils.isString(header) && (header = header.trim()) && !isValidHeaderName(header)) {\n setHeaders(parseHeaders(header), valueOrRewrite);\n } else {\n header != null && setHeader(valueOrRewrite, header, rewrite);\n }\n\n return this;\n }\n\n get(header, parser) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n if (key) {\n const value = this[key];\n\n if (!parser) {\n return value;\n }\n\n if (parser === true) {\n return parseTokens(value);\n }\n\n if (utils.isFunction(parser)) {\n return parser.call(this, value, key);\n }\n\n if (utils.isRegExp(parser)) {\n return parser.exec(value);\n }\n\n throw new TypeError('parser must be boolean|regexp|function');\n }\n }\n }\n\n has(header, matcher) {\n header = normalizeHeader(header);\n\n if (header) {\n const key = utils.findKey(this, header);\n\n return !!(key && this[key] !== undefined && (!matcher || matchHeaderValue(this, this[key], key, matcher)));\n }\n\n return false;\n }\n\n delete(header, matcher) {\n const self = this;\n let deleted = false;\n\n function deleteHeader(_header) {\n _header = normalizeHeader(_header);\n\n if (_header) {\n const key = utils.findKey(self, _header);\n\n if (key && (!matcher || matchHeaderValue(self, self[key], key, matcher))) {\n delete self[key];\n\n deleted = true;\n }\n }\n }\n\n if (utils.isArray(header)) {\n header.forEach(deleteHeader);\n } else {\n deleteHeader(header);\n }\n\n return deleted;\n }\n\n clear(matcher) {\n const keys = Object.keys(this);\n let i = keys.length;\n let deleted = false;\n\n while (i--) {\n const key = keys[i];\n if(!matcher || matchHeaderValue(this, this[key], key, matcher, true)) {\n delete this[key];\n deleted = true;\n }\n }\n\n return deleted;\n }\n\n normalize(format) {\n const self = this;\n const headers = {};\n\n utils.forEach(this, (value, header) => {\n const key = utils.findKey(headers, header);\n\n if (key) {\n self[key] = normalizeValue(value);\n delete self[header];\n return;\n }\n\n const normalized = format ? formatHeader(header) : String(header).trim();\n\n if (normalized !== header) {\n delete self[header];\n }\n\n self[normalized] = normalizeValue(value);\n\n headers[normalized] = true;\n });\n\n return this;\n }\n\n concat(...targets) {\n return this.constructor.concat(this, ...targets);\n }\n\n toJSON(asStrings) {\n const obj = Object.create(null);\n\n utils.forEach(this, (value, header) => {\n value != null && value !== false && (obj[header] = asStrings && utils.isArray(value) ? value.join(', ') : value);\n });\n\n return obj;\n }\n\n [Symbol.iterator]() {\n return Object.entries(this.toJSON())[Symbol.iterator]();\n }\n\n toString() {\n return Object.entries(this.toJSON()).map(([header, value]) => header + ': ' + value).join('\\n');\n }\n\n get [Symbol.toStringTag]() {\n return 'AxiosHeaders';\n }\n\n static from(thing) {\n return thing instanceof this ? thing : new this(thing);\n }\n\n static concat(first, ...targets) {\n const computed = new this(first);\n\n targets.forEach((target) => computed.set(target));\n\n return computed;\n }\n\n static accessor(header) {\n const internals = this[$internals] = (this[$internals] = {\n accessors: {}\n });\n\n const accessors = internals.accessors;\n const prototype = this.prototype;\n\n function defineAccessor(_header) {\n const lHeader = normalizeHeader(_header);\n\n if (!accessors[lHeader]) {\n buildAccessors(prototype, _header);\n accessors[lHeader] = true;\n }\n }\n\n utils.isArray(header) ? header.forEach(defineAccessor) : defineAccessor(header);\n\n return this;\n }\n}\n\nAxiosHeaders.accessor(['Content-Type', 'Content-Length', 'Accept', 'Accept-Encoding', 'User-Agent', 'Authorization']);\n\nutils.freezeMethods(AxiosHeaders.prototype);\nutils.freezeMethods(AxiosHeaders);\n\nexport default AxiosHeaders;\n","'use strict';\n\nimport utils from './../utils.js';\nimport defaults from '../defaults/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\n\n/**\n * Transform the data for a request or a response\n *\n * @param {Array|Function} fns A single function or Array of functions\n * @param {?Object} response The response object\n *\n * @returns {*} The resulting transformed data\n */\nexport default function transformData(fns, response) {\n const config = this || defaults;\n const context = response || config;\n const headers = AxiosHeaders.from(context.headers);\n let data = context.data;\n\n utils.forEach(fns, function transform(fn) {\n data = fn.call(config, data, headers.normalize(), response ? response.status : undefined);\n });\n\n headers.normalize();\n\n return data;\n}\n","'use strict';\n\nexport default function isCancel(value) {\n return !!(value && value.__CANCEL__);\n}\n","'use strict';\n\nimport AxiosError from '../core/AxiosError.js';\nimport utils from '../utils.js';\n\n/**\n * A `CanceledError` is an object that is thrown when an operation is canceled.\n *\n * @param {string=} message The message.\n * @param {Object=} config The config.\n * @param {Object=} request The request.\n *\n * @returns {CanceledError} The created error.\n */\nfunction CanceledError(message, config, request) {\n // eslint-disable-next-line no-eq-null,eqeqeq\n AxiosError.call(this, message == null ? 'canceled' : message, AxiosError.ERR_CANCELED, config, request);\n this.name = 'CanceledError';\n}\n\nutils.inherits(CanceledError, AxiosError, {\n __CANCEL__: true\n});\n\nexport default CanceledError;\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs support document.cookie\n (function standardBrowserEnv() {\n return {\n write: function write(name, value, expires, path, domain, secure) {\n const cookie = [];\n cookie.push(name + '=' + encodeURIComponent(value));\n\n if (utils.isNumber(expires)) {\n cookie.push('expires=' + new Date(expires).toGMTString());\n }\n\n if (utils.isString(path)) {\n cookie.push('path=' + path);\n }\n\n if (utils.isString(domain)) {\n cookie.push('domain=' + domain);\n }\n\n if (secure === true) {\n cookie.push('secure');\n }\n\n document.cookie = cookie.join('; ');\n },\n\n read: function read(name) {\n const match = document.cookie.match(new RegExp('(^|;\\\\s*)(' + name + ')=([^;]*)'));\n return (match ? decodeURIComponent(match[3]) : null);\n },\n\n remove: function remove(name) {\n this.write(name, '', Date.now() - 86400000);\n }\n };\n })() :\n\n// Non standard browser env (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return {\n write: function write() {},\n read: function read() { return null; },\n remove: function remove() {}\n };\n })();\n","'use strict';\n\nimport isAbsoluteURL from '../helpers/isAbsoluteURL.js';\nimport combineURLs from '../helpers/combineURLs.js';\n\n/**\n * Creates a new URL by combining the baseURL with the requestedURL,\n * only when the requestedURL is not already an absolute URL.\n * If the requestURL is absolute, this function returns the requestedURL untouched.\n *\n * @param {string} baseURL The base URL\n * @param {string} requestedURL Absolute or relative URL to combine\n *\n * @returns {string} The combined full path\n */\nexport default function buildFullPath(baseURL, requestedURL) {\n if (baseURL && !isAbsoluteURL(requestedURL)) {\n return combineURLs(baseURL, requestedURL);\n }\n return requestedURL;\n}\n","'use strict';\n\n/**\n * Determines whether the specified URL is absolute\n *\n * @param {string} url The URL to test\n *\n * @returns {boolean} True if the specified URL is absolute, otherwise false\n */\nexport default function isAbsoluteURL(url) {\n // A URL is considered absolute if it begins with \"://\" or \"//\" (protocol-relative URL).\n // RFC 3986 defines scheme name as a sequence of characters beginning with a letter and followed\n // by any combination of letters, digits, plus, period, or hyphen.\n return /^([a-z][a-z\\d+\\-.]*:)?\\/\\//i.test(url);\n}\n","'use strict';\n\n/**\n * Creates a new URL by combining the specified URLs\n *\n * @param {string} baseURL The base URL\n * @param {string} relativeURL The relative URL\n *\n * @returns {string} The combined URL\n */\nexport default function combineURLs(baseURL, relativeURL) {\n return relativeURL\n ? baseURL.replace(/\\/+$/, '') + '/' + relativeURL.replace(/^\\/+/, '')\n : baseURL;\n}\n","'use strict';\n\nimport utils from './../utils.js';\nimport platform from '../platform/index.js';\n\nexport default platform.isStandardBrowserEnv ?\n\n// Standard browser envs have full support of the APIs needed to test\n// whether the request URL is of the same origin as current location.\n (function standardBrowserEnv() {\n const msie = /(msie|trident)/i.test(navigator.userAgent);\n const urlParsingNode = document.createElement('a');\n let originURL;\n\n /**\n * Parse a URL to discover it's components\n *\n * @param {String} url The URL to be parsed\n * @returns {Object}\n */\n function resolveURL(url) {\n let href = url;\n\n if (msie) {\n // IE needs attribute set twice to normalize properties\n urlParsingNode.setAttribute('href', href);\n href = urlParsingNode.href;\n }\n\n urlParsingNode.setAttribute('href', href);\n\n // urlParsingNode provides the UrlUtils interface - http://url.spec.whatwg.org/#urlutils\n return {\n href: urlParsingNode.href,\n protocol: urlParsingNode.protocol ? urlParsingNode.protocol.replace(/:$/, '') : '',\n host: urlParsingNode.host,\n search: urlParsingNode.search ? urlParsingNode.search.replace(/^\\?/, '') : '',\n hash: urlParsingNode.hash ? urlParsingNode.hash.replace(/^#/, '') : '',\n hostname: urlParsingNode.hostname,\n port: urlParsingNode.port,\n pathname: (urlParsingNode.pathname.charAt(0) === '/') ?\n urlParsingNode.pathname :\n '/' + urlParsingNode.pathname\n };\n }\n\n originURL = resolveURL(window.location.href);\n\n /**\n * Determine if a URL shares the same origin as the current location\n *\n * @param {String} requestURL The URL to test\n * @returns {boolean} True if URL shares the same origin, otherwise false\n */\n return function isURLSameOrigin(requestURL) {\n const parsed = (utils.isString(requestURL)) ? resolveURL(requestURL) : requestURL;\n return (parsed.protocol === originURL.protocol &&\n parsed.host === originURL.host);\n };\n })() :\n\n // Non standard browser envs (web workers, react-native) lack needed support.\n (function nonStandardBrowserEnv() {\n return function isURLSameOrigin() {\n return true;\n };\n })();\n","'use strict';\n\n/**\n * Calculate data maxRate\n * @param {Number} [samplesCount= 10]\n * @param {Number} [min= 1000]\n * @returns {Function}\n */\nfunction speedometer(samplesCount, min) {\n samplesCount = samplesCount || 10;\n const bytes = new Array(samplesCount);\n const timestamps = new Array(samplesCount);\n let head = 0;\n let tail = 0;\n let firstSampleTS;\n\n min = min !== undefined ? min : 1000;\n\n return function push(chunkLength) {\n const now = Date.now();\n\n const startedAt = timestamps[tail];\n\n if (!firstSampleTS) {\n firstSampleTS = now;\n }\n\n bytes[head] = chunkLength;\n timestamps[head] = now;\n\n let i = tail;\n let bytesCount = 0;\n\n while (i !== head) {\n bytesCount += bytes[i++];\n i = i % samplesCount;\n }\n\n head = (head + 1) % samplesCount;\n\n if (head === tail) {\n tail = (tail + 1) % samplesCount;\n }\n\n if (now - firstSampleTS < min) {\n return;\n }\n\n const passed = startedAt && now - startedAt;\n\n return passed ? Math.round(bytesCount * 1000 / passed) : undefined;\n };\n}\n\nexport default speedometer;\n","'use strict';\n\nimport utils from './../utils.js';\nimport settle from './../core/settle.js';\nimport cookies from './../helpers/cookies.js';\nimport buildURL from './../helpers/buildURL.js';\nimport buildFullPath from '../core/buildFullPath.js';\nimport isURLSameOrigin from './../helpers/isURLSameOrigin.js';\nimport transitionalDefaults from '../defaults/transitional.js';\nimport AxiosError from '../core/AxiosError.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport parseProtocol from '../helpers/parseProtocol.js';\nimport platform from '../platform/index.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport speedometer from '../helpers/speedometer.js';\n\nfunction progressEventReducer(listener, isDownloadStream) {\n let bytesNotified = 0;\n const _speedometer = speedometer(50, 250);\n\n return e => {\n const loaded = e.loaded;\n const total = e.lengthComputable ? e.total : undefined;\n const progressBytes = loaded - bytesNotified;\n const rate = _speedometer(progressBytes);\n const inRange = loaded <= total;\n\n bytesNotified = loaded;\n\n const data = {\n loaded,\n total,\n progress: total ? (loaded / total) : undefined,\n bytes: progressBytes,\n rate: rate ? rate : undefined,\n estimated: rate && total && inRange ? (total - loaded) / rate : undefined,\n event: e\n };\n\n data[isDownloadStream ? 'download' : 'upload'] = true;\n\n listener(data);\n };\n}\n\nconst isXHRAdapterSupported = typeof XMLHttpRequest !== 'undefined';\n\nexport default isXHRAdapterSupported && function (config) {\n return new Promise(function dispatchXhrRequest(resolve, reject) {\n let requestData = config.data;\n const requestHeaders = AxiosHeaders.from(config.headers).normalize();\n const responseType = config.responseType;\n let onCanceled;\n function done() {\n if (config.cancelToken) {\n config.cancelToken.unsubscribe(onCanceled);\n }\n\n if (config.signal) {\n config.signal.removeEventListener('abort', onCanceled);\n }\n }\n\n if (utils.isFormData(requestData) && (platform.isStandardBrowserEnv || platform.isStandardBrowserWebWorkerEnv)) {\n requestHeaders.setContentType(false); // Let the browser set it\n }\n\n let request = new XMLHttpRequest();\n\n // HTTP basic authentication\n if (config.auth) {\n const username = config.auth.username || '';\n const password = config.auth.password ? unescape(encodeURIComponent(config.auth.password)) : '';\n requestHeaders.set('Authorization', 'Basic ' + btoa(username + ':' + password));\n }\n\n const fullPath = buildFullPath(config.baseURL, config.url);\n\n request.open(config.method.toUpperCase(), buildURL(fullPath, config.params, config.paramsSerializer), true);\n\n // Set the request timeout in MS\n request.timeout = config.timeout;\n\n function onloadend() {\n if (!request) {\n return;\n }\n // Prepare the response\n const responseHeaders = AxiosHeaders.from(\n 'getAllResponseHeaders' in request && request.getAllResponseHeaders()\n );\n const responseData = !responseType || responseType === 'text' || responseType === 'json' ?\n request.responseText : request.response;\n const response = {\n data: responseData,\n status: request.status,\n statusText: request.statusText,\n headers: responseHeaders,\n config,\n request\n };\n\n settle(function _resolve(value) {\n resolve(value);\n done();\n }, function _reject(err) {\n reject(err);\n done();\n }, response);\n\n // Clean up request\n request = null;\n }\n\n if ('onloadend' in request) {\n // Use onloadend if available\n request.onloadend = onloadend;\n } else {\n // Listen for ready state to emulate onloadend\n request.onreadystatechange = function handleLoad() {\n if (!request || request.readyState !== 4) {\n return;\n }\n\n // The request errored out and we didn't get a response, this will be\n // handled by onerror instead\n // With one exception: request that using file: protocol, most browsers\n // will return status as 0 even though it's a successful request\n if (request.status === 0 && !(request.responseURL && request.responseURL.indexOf('file:') === 0)) {\n return;\n }\n // readystate handler is calling before onerror or ontimeout handlers,\n // so we should call onloadend on the next 'tick'\n setTimeout(onloadend);\n };\n }\n\n // Handle browser request cancellation (as opposed to a manual cancellation)\n request.onabort = function handleAbort() {\n if (!request) {\n return;\n }\n\n reject(new AxiosError('Request aborted', AxiosError.ECONNABORTED, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle low level network errors\n request.onerror = function handleError() {\n // Real errors are hidden from us by the browser\n // onerror should only fire if it's a network error\n reject(new AxiosError('Network Error', AxiosError.ERR_NETWORK, config, request));\n\n // Clean up request\n request = null;\n };\n\n // Handle timeout\n request.ontimeout = function handleTimeout() {\n let timeoutErrorMessage = config.timeout ? 'timeout of ' + config.timeout + 'ms exceeded' : 'timeout exceeded';\n const transitional = config.transitional || transitionalDefaults;\n if (config.timeoutErrorMessage) {\n timeoutErrorMessage = config.timeoutErrorMessage;\n }\n reject(new AxiosError(\n timeoutErrorMessage,\n transitional.clarifyTimeoutError ? AxiosError.ETIMEDOUT : AxiosError.ECONNABORTED,\n config,\n request));\n\n // Clean up request\n request = null;\n };\n\n // Add xsrf header\n // This is only done if running in a standard browser environment.\n // Specifically not if we're in a web worker, or react-native.\n if (platform.isStandardBrowserEnv) {\n // Add xsrf header\n const xsrfValue = (config.withCredentials || isURLSameOrigin(fullPath))\n && config.xsrfCookieName && cookies.read(config.xsrfCookieName);\n\n if (xsrfValue) {\n requestHeaders.set(config.xsrfHeaderName, xsrfValue);\n }\n }\n\n // Remove Content-Type if data is undefined\n requestData === undefined && requestHeaders.setContentType(null);\n\n // Add headers to the request\n if ('setRequestHeader' in request) {\n utils.forEach(requestHeaders.toJSON(), function setRequestHeader(val, key) {\n request.setRequestHeader(key, val);\n });\n }\n\n // Add withCredentials to request if needed\n if (!utils.isUndefined(config.withCredentials)) {\n request.withCredentials = !!config.withCredentials;\n }\n\n // Add responseType to request if needed\n if (responseType && responseType !== 'json') {\n request.responseType = config.responseType;\n }\n\n // Handle progress if needed\n if (typeof config.onDownloadProgress === 'function') {\n request.addEventListener('progress', progressEventReducer(config.onDownloadProgress, true));\n }\n\n // Not all browsers support upload events\n if (typeof config.onUploadProgress === 'function' && request.upload) {\n request.upload.addEventListener('progress', progressEventReducer(config.onUploadProgress));\n }\n\n if (config.cancelToken || config.signal) {\n // Handle cancellation\n // eslint-disable-next-line func-names\n onCanceled = cancel => {\n if (!request) {\n return;\n }\n reject(!cancel || cancel.type ? new CanceledError(null, config, request) : cancel);\n request.abort();\n request = null;\n };\n\n config.cancelToken && config.cancelToken.subscribe(onCanceled);\n if (config.signal) {\n config.signal.aborted ? onCanceled() : config.signal.addEventListener('abort', onCanceled);\n }\n }\n\n const protocol = parseProtocol(fullPath);\n\n if (protocol && platform.protocols.indexOf(protocol) === -1) {\n reject(new AxiosError('Unsupported protocol ' + protocol + ':', AxiosError.ERR_BAD_REQUEST, config));\n return;\n }\n\n\n // Send the request\n request.send(requestData || null);\n });\n}\n","'use strict';\n\nimport AxiosError from './AxiosError.js';\n\n/**\n * Resolve or reject a Promise based on response status.\n *\n * @param {Function} resolve A function that resolves the promise.\n * @param {Function} reject A function that rejects the promise.\n * @param {object} response The response.\n *\n * @returns {object} The response.\n */\nexport default function settle(resolve, reject, response) {\n const validateStatus = response.config.validateStatus;\n if (!response.status || !validateStatus || validateStatus(response.status)) {\n resolve(response);\n } else {\n reject(new AxiosError(\n 'Request failed with status code ' + response.status,\n [AxiosError.ERR_BAD_REQUEST, AxiosError.ERR_BAD_RESPONSE][Math.floor(response.status / 100) - 4],\n response.config,\n response.request,\n response\n ));\n }\n}\n","'use strict';\n\nexport default function parseProtocol(url) {\n const match = /^([-+\\w]{1,25})(:?\\/\\/|:)/.exec(url);\n return match && match[1] || '';\n}\n","import utils from '../utils.js';\nimport httpAdapter from './http.js';\nimport xhrAdapter from './xhr.js';\nimport AxiosError from \"../core/AxiosError.js\";\n\nconst knownAdapters = {\n http: httpAdapter,\n xhr: xhrAdapter\n}\n\nutils.forEach(knownAdapters, (fn, value) => {\n if(fn) {\n try {\n Object.defineProperty(fn, 'name', {value});\n } catch (e) {\n // eslint-disable-next-line no-empty\n }\n Object.defineProperty(fn, 'adapterName', {value});\n }\n});\n\nexport default {\n getAdapter: (adapters) => {\n adapters = utils.isArray(adapters) ? adapters : [adapters];\n\n const {length} = adapters;\n let nameOrAdapter;\n let adapter;\n\n for (let i = 0; i < length; i++) {\n nameOrAdapter = adapters[i];\n if((adapter = utils.isString(nameOrAdapter) ? knownAdapters[nameOrAdapter.toLowerCase()] : nameOrAdapter)) {\n break;\n }\n }\n\n if (!adapter) {\n if (adapter === false) {\n throw new AxiosError(\n `Adapter ${nameOrAdapter} is not supported by the environment`,\n 'ERR_NOT_SUPPORT'\n );\n }\n\n throw new Error(\n utils.hasOwnProp(knownAdapters, nameOrAdapter) ?\n `Adapter '${nameOrAdapter}' is not available in the build` :\n `Unknown adapter '${nameOrAdapter}'`\n );\n }\n\n if (!utils.isFunction(adapter)) {\n throw new TypeError('adapter is not a function');\n }\n\n return adapter;\n },\n adapters: knownAdapters\n}\n","'use strict';\n\nimport transformData from './transformData.js';\nimport isCancel from '../cancel/isCancel.js';\nimport defaults from '../defaults/index.js';\nimport CanceledError from '../cancel/CanceledError.js';\nimport AxiosHeaders from '../core/AxiosHeaders.js';\nimport adapters from \"../adapters/adapters.js\";\n\n/**\n * Throws a `CanceledError` if cancellation has been requested.\n *\n * @param {Object} config The config that is to be used for the request\n *\n * @returns {void}\n */\nfunction throwIfCancellationRequested(config) {\n if (config.cancelToken) {\n config.cancelToken.throwIfRequested();\n }\n\n if (config.signal && config.signal.aborted) {\n throw new CanceledError(null, config);\n }\n}\n\n/**\n * Dispatch a request to the server using the configured adapter.\n *\n * @param {object} config The config that is to be used for the request\n *\n * @returns {Promise} The Promise to be fulfilled\n */\nexport default function dispatchRequest(config) {\n throwIfCancellationRequested(config);\n\n config.headers = AxiosHeaders.from(config.headers);\n\n // Transform request data\n config.data = transformData.call(\n config,\n config.transformRequest\n );\n\n if (['post', 'put', 'patch'].indexOf(config.method) !== -1) {\n config.headers.setContentType('application/x-www-form-urlencoded', false);\n }\n\n const adapter = adapters.getAdapter(config.adapter || defaults.adapter);\n\n return adapter(config).then(function onAdapterResolution(response) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n response.data = transformData.call(\n config,\n config.transformResponse,\n response\n );\n\n response.headers = AxiosHeaders.from(response.headers);\n\n return response;\n }, function onAdapterRejection(reason) {\n if (!isCancel(reason)) {\n throwIfCancellationRequested(config);\n\n // Transform response data\n if (reason && reason.response) {\n reason.response.data = transformData.call(\n config,\n config.transformResponse,\n reason.response\n );\n reason.response.headers = AxiosHeaders.from(reason.response.headers);\n }\n }\n\n return Promise.reject(reason);\n });\n}\n","'use strict';\n\nimport utils from '../utils.js';\nimport AxiosHeaders from \"./AxiosHeaders.js\";\n\nconst headersToObject = (thing) => thing instanceof AxiosHeaders ? thing.toJSON() : thing;\n\n/**\n * Config-specific merge-function which creates a new config-object\n * by merging two configuration objects together.\n *\n * @param {Object} config1\n * @param {Object} config2\n *\n * @returns {Object} New object resulting from merging config2 to config1\n */\nexport default function mergeConfig(config1, config2) {\n // eslint-disable-next-line no-param-reassign\n config2 = config2 || {};\n const config = {};\n\n function getMergedValue(target, source, caseless) {\n if (utils.isPlainObject(target) && utils.isPlainObject(source)) {\n return utils.merge.call({caseless}, target, source);\n } else if (utils.isPlainObject(source)) {\n return utils.merge({}, source);\n } else if (utils.isArray(source)) {\n return source.slice();\n }\n return source;\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDeepProperties(a, b, caseless) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(a, b, caseless);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a, caseless);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function valueFromConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function defaultToConfig2(a, b) {\n if (!utils.isUndefined(b)) {\n return getMergedValue(undefined, b);\n } else if (!utils.isUndefined(a)) {\n return getMergedValue(undefined, a);\n }\n }\n\n // eslint-disable-next-line consistent-return\n function mergeDirectKeys(a, b, prop) {\n if (prop in config2) {\n return getMergedValue(a, b);\n } else if (prop in config1) {\n return getMergedValue(undefined, a);\n }\n }\n\n const mergeMap = {\n url: valueFromConfig2,\n method: valueFromConfig2,\n data: valueFromConfig2,\n baseURL: defaultToConfig2,\n transformRequest: defaultToConfig2,\n transformResponse: defaultToConfig2,\n paramsSerializer: defaultToConfig2,\n timeout: defaultToConfig2,\n timeoutMessage: defaultToConfig2,\n withCredentials: defaultToConfig2,\n adapter: defaultToConfig2,\n responseType: defaultToConfig2,\n xsrfCookieName: defaultToConfig2,\n xsrfHeaderName: defaultToConfig2,\n onUploadProgress: defaultToConfig2,\n onDownloadProgress: defaultToConfig2,\n decompress: defaultToConfig2,\n maxContentLength: defaultToConfig2,\n maxBodyLength: defaultToConfig2,\n beforeRedirect: defaultToConfig2,\n transport: defaultToConfig2,\n httpAgent: defaultToConfig2,\n httpsAgent: defaultToConfig2,\n cancelToken: defaultToConfig2,\n socketPath: defaultToConfig2,\n responseEncoding: defaultToConfig2,\n validateStatus: mergeDirectKeys,\n headers: (a, b) => mergeDeepProperties(headersToObject(a), headersToObject(b), true)\n };\n\n utils.forEach(Object.keys(config1).concat(Object.keys(config2)), function computeConfigValue(prop) {\n const merge = mergeMap[prop] || mergeDeepProperties;\n const configValue = merge(config1[prop], config2[prop], prop);\n (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);\n });\n\n return config;\n}\n","export const VERSION = \"1.3.5\";","'use strict';\n\nimport {VERSION} from '../env/data.js';\nimport AxiosError from '../core/AxiosError.js';\n\nconst validators = {};\n\n// eslint-disable-next-line func-names\n['object', 'boolean', 'number', 'function', 'string', 'symbol'].forEach((type, i) => {\n validators[type] = function validator(thing) {\n return typeof thing === type || 'a' + (i < 1 ? 'n ' : ' ') + type;\n };\n});\n\nconst deprecatedWarnings = {};\n\n/**\n * Transitional option validator\n *\n * @param {function|boolean?} validator - set to false if the transitional option has been removed\n * @param {string?} version - deprecated version / removed since version\n * @param {string?} message - some message with additional info\n *\n * @returns {function}\n */\nvalidators.transitional = function transitional(validator, version, message) {\n function formatMessage(opt, desc) {\n return '[Axios v' + VERSION + '] Transitional option \\'' + opt + '\\'' + desc + (message ? '. ' + message : '');\n }\n\n // eslint-disable-next-line func-names\n return (value, opt, opts) => {\n if (validator === false) {\n throw new AxiosError(\n formatMessage(opt, ' has been removed' + (version ? ' in ' + version : '')),\n AxiosError.ERR_DEPRECATED\n );\n }\n\n if (version && !deprecatedWarnings[opt]) {\n deprecatedWarnings[opt] = true;\n // eslint-disable-next-line no-console\n console.warn(\n formatMessage(\n opt,\n ' has been deprecated since v' + version + ' and will be removed in the near future'\n )\n );\n }\n\n return validator ? validator(value, opt, opts) : true;\n };\n};\n\n/**\n * Assert object's properties type\n *\n * @param {object} options\n * @param {object} schema\n * @param {boolean?} allowUnknown\n *\n * @returns {object}\n */\n\nfunction assertOptions(options, schema, allowUnknown) {\n if (typeof options !== 'object') {\n throw new AxiosError('options must be an object', AxiosError.ERR_BAD_OPTION_VALUE);\n }\n const keys = Object.keys(options);\n let i = keys.length;\n while (i-- > 0) {\n const opt = keys[i];\n const validator = schema[opt];\n if (validator) {\n const value = options[opt];\n const result = value === undefined || validator(value, opt, options);\n if (result !== true) {\n throw new AxiosError('option ' + opt + ' must be ' + result, AxiosError.ERR_BAD_OPTION_VALUE);\n }\n continue;\n }\n if (allowUnknown !== true) {\n throw new AxiosError('Unknown option ' + opt, AxiosError.ERR_BAD_OPTION);\n }\n }\n}\n\nexport default {\n assertOptions,\n validators\n};\n","'use strict';\n\nimport utils from './../utils.js';\nimport buildURL from '../helpers/buildURL.js';\nimport InterceptorManager from './InterceptorManager.js';\nimport dispatchRequest from './dispatchRequest.js';\nimport mergeConfig from './mergeConfig.js';\nimport buildFullPath from './buildFullPath.js';\nimport validator from '../helpers/validator.js';\nimport AxiosHeaders from './AxiosHeaders.js';\n\nconst validators = validator.validators;\n\n/**\n * Create a new instance of Axios\n *\n * @param {Object} instanceConfig The default config for the instance\n *\n * @return {Axios} A new instance of Axios\n */\nclass Axios {\n constructor(instanceConfig) {\n this.defaults = instanceConfig;\n this.interceptors = {\n request: new InterceptorManager(),\n response: new InterceptorManager()\n };\n }\n\n /**\n * Dispatch a request\n *\n * @param {String|Object} configOrUrl The config specific for this request (merged with this.defaults)\n * @param {?Object} config\n *\n * @returns {Promise} The Promise to be fulfilled\n */\n request(configOrUrl, config) {\n /*eslint no-param-reassign:0*/\n // Allow for axios('example/url'[, config]) a la fetch API\n if (typeof configOrUrl === 'string') {\n config = config || {};\n config.url = configOrUrl;\n } else {\n config = configOrUrl || {};\n }\n\n config = mergeConfig(this.defaults, config);\n\n const {transitional, paramsSerializer, headers} = config;\n\n if (transitional !== undefined) {\n validator.assertOptions(transitional, {\n silentJSONParsing: validators.transitional(validators.boolean),\n forcedJSONParsing: validators.transitional(validators.boolean),\n clarifyTimeoutError: validators.transitional(validators.boolean)\n }, false);\n }\n\n if (paramsSerializer != null) {\n if (utils.isFunction(paramsSerializer)) {\n config.paramsSerializer = {\n serialize: paramsSerializer\n }\n } else {\n validator.assertOptions(paramsSerializer, {\n encode: validators.function,\n serialize: validators.function\n }, true);\n }\n }\n\n // Set config.method\n config.method = (config.method || this.defaults.method || 'get').toLowerCase();\n\n let contextHeaders;\n\n // Flatten headers\n contextHeaders = headers && utils.merge(\n headers.common,\n headers[config.method]\n );\n\n contextHeaders && utils.forEach(\n ['delete', 'get', 'head', 'post', 'put', 'patch', 'common'],\n (method) => {\n delete headers[method];\n }\n );\n\n config.headers = AxiosHeaders.concat(contextHeaders, headers);\n\n // filter out skipped interceptors\n const requestInterceptorChain = [];\n let synchronousRequestInterceptors = true;\n this.interceptors.request.forEach(function unshiftRequestInterceptors(interceptor) {\n if (typeof interceptor.runWhen === 'function' && interceptor.runWhen(config) === false) {\n return;\n }\n\n synchronousRequestInterceptors = synchronousRequestInterceptors && interceptor.synchronous;\n\n requestInterceptorChain.unshift(interceptor.fulfilled, interceptor.rejected);\n });\n\n const responseInterceptorChain = [];\n this.interceptors.response.forEach(function pushResponseInterceptors(interceptor) {\n responseInterceptorChain.push(interceptor.fulfilled, interceptor.rejected);\n });\n\n let promise;\n let i = 0;\n let len;\n\n if (!synchronousRequestInterceptors) {\n const chain = [dispatchRequest.bind(this), undefined];\n chain.unshift.apply(chain, requestInterceptorChain);\n chain.push.apply(chain, responseInterceptorChain);\n len = chain.length;\n\n promise = Promise.resolve(config);\n\n while (i < len) {\n promise = promise.then(chain[i++], chain[i++]);\n }\n\n return promise;\n }\n\n len = requestInterceptorChain.length;\n\n let newConfig = config;\n\n i = 0;\n\n while (i < len) {\n const onFulfilled = requestInterceptorChain[i++];\n const onRejected = requestInterceptorChain[i++];\n try {\n newConfig = onFulfilled(newConfig);\n } catch (error) {\n onRejected.call(this, error);\n break;\n }\n }\n\n try {\n promise = dispatchRequest.call(this, newConfig);\n } catch (error) {\n return Promise.reject(error);\n }\n\n i = 0;\n len = responseInterceptorChain.length;\n\n while (i < len) {\n promise = promise.then(responseInterceptorChain[i++], responseInterceptorChain[i++]);\n }\n\n return promise;\n }\n\n getUri(config) {\n config = mergeConfig(this.defaults, config);\n const fullPath = buildFullPath(config.baseURL, config.url);\n return buildURL(fullPath, config.params, config.paramsSerializer);\n }\n}\n\n// Provide aliases for supported request methods\nutils.forEach(['delete', 'get', 'head', 'options'], function forEachMethodNoData(method) {\n /*eslint func-names:0*/\n Axios.prototype[method] = function(url, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n url,\n data: (config || {}).data\n }));\n };\n});\n\nutils.forEach(['post', 'put', 'patch'], function forEachMethodWithData(method) {\n /*eslint func-names:0*/\n\n function generateHTTPMethod(isForm) {\n return function httpMethod(url, data, config) {\n return this.request(mergeConfig(config || {}, {\n method,\n headers: isForm ? {\n 'Content-Type': 'multipart/form-data'\n } : {},\n url,\n data\n }));\n };\n }\n\n Axios.prototype[method] = generateHTTPMethod();\n\n Axios.prototype[method + 'Form'] = generateHTTPMethod(true);\n});\n\nexport default Axios;\n","'use strict';\n\nimport CanceledError from './CanceledError.js';\n\n/**\n * A `CancelToken` is an object that can be used to request cancellation of an operation.\n *\n * @param {Function} executor The executor function.\n *\n * @returns {CancelToken}\n */\nclass CancelToken {\n constructor(executor) {\n if (typeof executor !== 'function') {\n throw new TypeError('executor must be a function.');\n }\n\n let resolvePromise;\n\n this.promise = new Promise(function promiseExecutor(resolve) {\n resolvePromise = resolve;\n });\n\n const token = this;\n\n // eslint-disable-next-line func-names\n this.promise.then(cancel => {\n if (!token._listeners) return;\n\n let i = token._listeners.length;\n\n while (i-- > 0) {\n token._listeners[i](cancel);\n }\n token._listeners = null;\n });\n\n // eslint-disable-next-line func-names\n this.promise.then = onfulfilled => {\n let _resolve;\n // eslint-disable-next-line func-names\n const promise = new Promise(resolve => {\n token.subscribe(resolve);\n _resolve = resolve;\n }).then(onfulfilled);\n\n promise.cancel = function reject() {\n token.unsubscribe(_resolve);\n };\n\n return promise;\n };\n\n executor(function cancel(message, config, request) {\n if (token.reason) {\n // Cancellation has already been requested\n return;\n }\n\n token.reason = new CanceledError(message, config, request);\n resolvePromise(token.reason);\n });\n }\n\n /**\n * Throws a `CanceledError` if cancellation has been requested.\n */\n throwIfRequested() {\n if (this.reason) {\n throw this.reason;\n }\n }\n\n /**\n * Subscribe to the cancel signal\n */\n\n subscribe(listener) {\n if (this.reason) {\n listener(this.reason);\n return;\n }\n\n if (this._listeners) {\n this._listeners.push(listener);\n } else {\n this._listeners = [listener];\n }\n }\n\n /**\n * Unsubscribe from the cancel signal\n */\n\n unsubscribe(listener) {\n if (!this._listeners) {\n return;\n }\n const index = this._listeners.indexOf(listener);\n if (index !== -1) {\n this._listeners.splice(index, 1);\n }\n }\n\n /**\n * Returns an object that contains a new `CancelToken` and a function that, when called,\n * cancels the `CancelToken`.\n */\n static source() {\n let cancel;\n const token = new CancelToken(function executor(c) {\n cancel = c;\n });\n return {\n token,\n cancel\n };\n }\n}\n\nexport default CancelToken;\n","const HttpStatusCode = {\n Continue: 100,\n SwitchingProtocols: 101,\n Processing: 102,\n EarlyHints: 103,\n Ok: 200,\n Created: 201,\n Accepted: 202,\n NonAuthoritativeInformation: 203,\n NoContent: 204,\n ResetContent: 205,\n PartialContent: 206,\n MultiStatus: 207,\n AlreadyReported: 208,\n ImUsed: 226,\n MultipleChoices: 300,\n MovedPermanently: 301,\n Found: 302,\n SeeOther: 303,\n NotModified: 304,\n UseProxy: 305,\n Unused: 306,\n TemporaryRedirect: 307,\n PermanentRedirect: 308,\n BadRequest: 400,\n Unauthorized: 401,\n PaymentRequired: 402,\n Forbidden: 403,\n NotFound: 404,\n MethodNotAllowed: 405,\n NotAcceptable: 406,\n ProxyAuthenticationRequired: 407,\n RequestTimeout: 408,\n Conflict: 409,\n Gone: 410,\n LengthRequired: 411,\n PreconditionFailed: 412,\n PayloadTooLarge: 413,\n UriTooLong: 414,\n UnsupportedMediaType: 415,\n RangeNotSatisfiable: 416,\n ExpectationFailed: 417,\n ImATeapot: 418,\n MisdirectedRequest: 421,\n UnprocessableEntity: 422,\n Locked: 423,\n FailedDependency: 424,\n TooEarly: 425,\n UpgradeRequired: 426,\n PreconditionRequired: 428,\n TooManyRequests: 429,\n RequestHeaderFieldsTooLarge: 431,\n UnavailableForLegalReasons: 451,\n InternalServerError: 500,\n NotImplemented: 501,\n BadGateway: 502,\n ServiceUnavailable: 503,\n GatewayTimeout: 504,\n HttpVersionNotSupported: 505,\n VariantAlsoNegotiates: 506,\n InsufficientStorage: 507,\n LoopDetected: 508,\n NotExtended: 510,\n NetworkAuthenticationRequired: 511,\n};\n\nObject.entries(HttpStatusCode).forEach(([key, value]) => {\n HttpStatusCode[value] = key;\n});\n\nexport default HttpStatusCode;\n","'use strict';\n\nimport utils from './utils.js';\nimport bind from './helpers/bind.js';\nimport Axios from './core/Axios.js';\nimport mergeConfig from './core/mergeConfig.js';\nimport defaults from './defaults/index.js';\nimport formDataToJSON from './helpers/formDataToJSON.js';\nimport CanceledError from './cancel/CanceledError.js';\nimport CancelToken from './cancel/CancelToken.js';\nimport isCancel from './cancel/isCancel.js';\nimport {VERSION} from './env/data.js';\nimport toFormData from './helpers/toFormData.js';\nimport AxiosError from './core/AxiosError.js';\nimport spread from './helpers/spread.js';\nimport isAxiosError from './helpers/isAxiosError.js';\nimport AxiosHeaders from \"./core/AxiosHeaders.js\";\nimport HttpStatusCode from './helpers/HttpStatusCode.js';\n\n/**\n * Create an instance of Axios\n *\n * @param {Object} defaultConfig The default config for the instance\n *\n * @returns {Axios} A new instance of Axios\n */\nfunction createInstance(defaultConfig) {\n const context = new Axios(defaultConfig);\n const instance = bind(Axios.prototype.request, context);\n\n // Copy axios.prototype to instance\n utils.extend(instance, Axios.prototype, context, {allOwnKeys: true});\n\n // Copy context to instance\n utils.extend(instance, context, null, {allOwnKeys: true});\n\n // Factory for creating new instances\n instance.create = function create(instanceConfig) {\n return createInstance(mergeConfig(defaultConfig, instanceConfig));\n };\n\n return instance;\n}\n\n// Create the default instance to be exported\nconst axios = createInstance(defaults);\n\n// Expose Axios class to allow class inheritance\naxios.Axios = Axios;\n\n// Expose Cancel & CancelToken\naxios.CanceledError = CanceledError;\naxios.CancelToken = CancelToken;\naxios.isCancel = isCancel;\naxios.VERSION = VERSION;\naxios.toFormData = toFormData;\n\n// Expose AxiosError class\naxios.AxiosError = AxiosError;\n\n// alias for CanceledError for backward compatibility\naxios.Cancel = axios.CanceledError;\n\n// Expose all/spread\naxios.all = function all(promises) {\n return Promise.all(promises);\n};\n\naxios.spread = spread;\n\n// Expose isAxiosError\naxios.isAxiosError = isAxiosError;\n\n// Expose mergeConfig\naxios.mergeConfig = mergeConfig;\n\naxios.AxiosHeaders = AxiosHeaders;\n\naxios.formToJSON = thing => formDataToJSON(utils.isHTMLForm(thing) ? new FormData(thing) : thing);\n\naxios.HttpStatusCode = HttpStatusCode;\n\naxios.default = axios;\n\n// this module should only have a default export\nexport default axios\n","'use strict';\n\n/**\n * Syntactic sugar for invoking a function and expanding an array for arguments.\n *\n * Common use case would be to use `Function.prototype.apply`.\n *\n * ```js\n * function f(x, y, z) {}\n * var args = [1, 2, 3];\n * f.apply(null, args);\n * ```\n *\n * With `spread` this example can be re-written.\n *\n * ```js\n * spread(function(x, y, z) {})([1, 2, 3]);\n * ```\n *\n * @param {Function} callback\n *\n * @returns {Function}\n */\nexport default function spread(callback) {\n return function wrap(arr) {\n return callback.apply(null, arr);\n };\n}\n","'use strict';\n\nimport utils from './../utils.js';\n\n/**\n * Determines whether the payload is an error thrown by Axios\n *\n * @param {*} payload The value to test\n *\n * @returns {boolean} True if the payload is an error thrown by Axios, otherwise false\n */\nexport default function isAxiosError(payload) {\n return utils.isObject(payload) && (payload.isAxiosError === true);\n}\n","import axios from 'axios';\n// import mixpanel from 'mixpanel-browser';\n\nconst getAuthToken = () => `Bearer ${sessionStorage.getItem('token')}`;\n// const subscriptionKey = process.env.REACT_APP_MIXPANEL_KEY;\n\n// mixpanel.init(subscriptionKey, { debug: true });\n\n// mixpanel.identify(getAuthToken());\n\n// mixpanel.track('Signed Up', {\n// 'Signup Type': 'Referral'\n// })\n\n\n// on 401s redirect to login page\nconst handleAuthError = (error, callback) => {\n if (error.message.length >= 3 && error.message.slice(-3) === '401') {\n window.alert('Unauthorized');\n callback();\n }\n}\n\nconst baseURL = process.env.REACT_APP_IS_PROD === 'true'\n ? 'https://ribbon-api-prod.azurewebsites.net/api/'\n : 'https://ribbon-api-dev.azurewebsites.net/api/';\n\n\n// set base url and headers\nconst API = axios.create({\n baseURL,\n headers: {\n 'Content-Type': 'application/json',\n },\n});\n\n// intercept requests and add authorization header\nAPI.interceptors.request.use(\n (config) => {\n config.headers.Authorization = getAuthToken();\n return config;\n },\n (error) => {\n return Promise.reject(error);\n }\n);\n\nconst getPatients = () =>\n API.get('patients')\n .then((res) => res.data)\n .catch((err) => {\n throw new Error(err);\n }\n );\n\nconst addPatient = (patient) =>\n API.post('patients', patient)\n .then((res) => res.data)\n .catch((err) => {\n throw new Error(err);\n }\n );\n\nconst addNote = (note) =>\n API.post('Visit', note)\n .then((res) => res.data)\n .catch((err) => {\n throw new Error(err);\n });\n\n\nconst updateNote = (visit) =>\n API.post('Visit/update', visit)\n .then((res) => res.data)\n .catch((err) => {\n throw new Error(err);\n }\n );\n\nconst updateSoapNote = (visit) =>\n API.post('Visit/updatesoap', visit)\n .then((res) => res.data)\n .catch((err) => {\n throw new Error(err);\n }\n );\n\nconst endAppt = (conversation) =>\n API.post('Visit/end', conversation)\n .then((res) => res.data)\n .catch((err) => {\n throw new Error(err);\n });\n\nconst getPatientRibbon = (id) =>\n API.get(`Visit/ribbon/${id}`)\n .then((res) => {\n return res.data\n })\n .catch((err) => {\n throw new Error(err);\n }\n );\n\n\nconst getNoteDetails = (id) =>\n API.get(`Visit/notes/${id}`)\n .then((res) => res.data)\n .catch((err) => {\n throw new Error(err);\n }\n );\n\n\nconst sendFeedback = (feedback) =>\n API.post('feedback', feedback)\n .then((res) => res.data)\n .catch((err) => {\n throw new Error(err);\n }\n );\n\nconst getAppointments = () =>\n API.get('Appointment')\n .then((res) => res.data)\n .catch((err) => {\n throw new Error(err);\n }\n );\n\nconst addAppointment = (appointment) =>\n API.post('Appointment/add', appointment)\n .then((res) => res.data)\n .catch((err) => {\n throw new Error(err);\n }\n );\n\nconst editAppointment = (appointment) =>\n API.post('Appointment/edit', appointment)\n .then((res) => res.data)\n .catch((err) => {\n throw new Error(err);\n });\n\nconst deleteAppointment = (appointment) =>\n API.post('Appointment/delete', appointment)\n .then((res) => res.data)\n .catch((err) => {\n throw new Error(err);\n });\n\nconst getProviders = () =>\n API.get('appointment/providers')\n .then((res) => res.data)\n .catch((err) => {\n throw new Error(err);\n }\n );\n\nexport {\n getPatients,\n addPatient,\n handleAuthError,\n addNote,\n getPatientRibbon,\n getNoteDetails,\n sendFeedback,\n updateNote,\n updateSoapNote,\n endAppt,\n getAppointments,\n addAppointment,\n editAppointment,\n deleteAppointment,\n getProviders,\n};\n","import { toast } from 'react-toastify';\n\nconst notifySuccess = (message) =>\n toast.success(message, {\n position: 'top-right',\n autoClose: 5000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n theme: 'colored',\n });\n\nconst notifyError = (message) =>\n toast.error(message, {\n position: 'top-right',\n autoClose: 5000,\n hideProgressBar: false,\n closeOnClick: true,\n pauseOnHover: true,\n draggable: true,\n progress: undefined,\n theme: 'colored',\n });\n\nexport { notifySuccess, notifyError };","import { useState } from 'react';\nimport { addPatient } from '../../utils/API'\nimport { notifyError, notifySuccess } from '../../utils/Toast';\nimport './NewPatient.css';\n\nconst intialPatientState = {\n patientFname: '',\n patientLname: '',\n patientAge: 0,\n patientGender: '',\n patientAllergies: '',\n}\n\nexport default function NewPatient({hideNewPatient, updatePatientList}) {\n const [patientData, setPatientData] = useState(intialPatientState);\n\n const handleAddNewPatient = async (event) => {\n event.preventDefault();\n try {\n await addPatient(patientData);\n notifySuccess('Patient added successfully!');\n updatePatientList();\n } catch (error) {\n notifyError('Error adding new patient');\n throw new Error(error);\n }\n hideNewPatient(false);\n }\n\n const updatePatientData = (key, value) => {\n setPatientData({\n ...patientData,\n [key]: value,\n });\n };\n\n return (\n
\n
\n

Add New Patient

\n {/*
{JSON.stringify(patientData, null, 2) || null}
*/}\n {/*

\n This Trial version of Ribbon is for testing purposes only. Please use fictional\n or test data to ensure patient privacy and confidentiality.\n

*/}\n
\n \n
\n \n updatePatientData('patientFname', e.target.value)}\n />\n \n updatePatientData('patientAge', e.target.value)}\n />\n \n \n updatePatientData('patientAllergies', e.target.value)\n }\n />\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n
\n\n
\n \n updatePatientData('patientLname', e.target.value)}\n />\n \n updatePatientData('patientGender', e.target.value)}\n />\n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n
\n \n
\n \n \n Save Patient\n \n
\n
\n
\n
\n
\n );\n}\n","/**\n * Returns the [year, month, day, hour, minute, seconds] tokens of the provided\n * `date` as it will be rendered in the `timeZone`.\n */\nexport default function tzTokenizeDate(date, timeZone) {\n var dtf = getDateTimeFormat(timeZone)\n return dtf.formatToParts ? partsOffset(dtf, date) : hackyOffset(dtf, date)\n}\n\nvar typeToPos = {\n year: 0,\n month: 1,\n day: 2,\n hour: 3,\n minute: 4,\n second: 5,\n}\n\nfunction partsOffset(dtf, date) {\n try {\n var formatted = dtf.formatToParts(date)\n var filled = []\n for (var i = 0; i < formatted.length; i++) {\n var pos = typeToPos[formatted[i].type]\n\n if (pos >= 0) {\n filled[pos] = parseInt(formatted[i].value, 10)\n }\n }\n return filled\n } catch (error) {\n if (error instanceof RangeError) {\n return [NaN]\n }\n throw error\n }\n}\n\nfunction hackyOffset(dtf, date) {\n var formatted = dtf.format(date).replace(/\\u200E/g, '')\n var parsed = /(\\d+)\\/(\\d+)\\/(\\d+),? (\\d+):(\\d+):(\\d+)/.exec(formatted)\n // var [, fMonth, fDay, fYear, fHour, fMinute, fSecond] = parsed\n // return [fYear, fMonth, fDay, fHour, fMinute, fSecond]\n return [parsed[3], parsed[1], parsed[2], parsed[4], parsed[5], parsed[6]]\n}\n\n// Get a cached Intl.DateTimeFormat instance for the IANA `timeZone`. This can be used\n// to get deterministic local date/time output according to the `en-US` locale which\n// can be used to extract local time parts as necessary.\nvar dtfCache = {}\nfunction getDateTimeFormat(timeZone) {\n if (!dtfCache[timeZone]) {\n // New browsers use `hourCycle`, IE and Chrome <73 does not support it and uses `hour12`\n var testDateFormatted = new Intl.DateTimeFormat('en-US', {\n hour12: false,\n timeZone: 'America/New_York',\n year: 'numeric',\n month: 'numeric',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n }).format(new Date('2014-06-25T04:00:00.123Z'))\n var hourCycleSupported =\n testDateFormatted === '06/25/2014, 00:00:00' ||\n testDateFormatted === '‎06‎/‎25‎/‎2014‎ ‎00‎:‎00‎:‎00'\n\n dtfCache[timeZone] = hourCycleSupported\n ? new Intl.DateTimeFormat('en-US', {\n hour12: false,\n timeZone: timeZone,\n year: 'numeric',\n month: 'numeric',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n })\n : new Intl.DateTimeFormat('en-US', {\n hourCycle: 'h23',\n timeZone: timeZone,\n year: 'numeric',\n month: 'numeric',\n day: '2-digit',\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n })\n }\n return dtfCache[timeZone]\n}\n","/**\n * Use instead of `new Date(Date.UTC(...))` to support years below 100 which doesn't work\n * otherwise due to the nature of the\n * [`Date` constructor](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Date#interpretation_of_two-digit_years.\n *\n * For `Date.UTC(...)`, use `newDateUTC(...).getTime()`.\n */\nexport default function newDateUTC(fullYear, month, day, hour, minute, second, millisecond) {\n var utcDate = new Date(0)\n utcDate.setUTCFullYear(fullYear, month, day)\n utcDate.setUTCHours(hour, minute, second, millisecond)\n return utcDate\n}\n","import tzTokenizeDate from '../tzTokenizeDate/index.js'\nimport newDateUTC from '../newDateUTC/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\n\nvar patterns = {\n timezone: /([Z+-].*)$/,\n timezoneZ: /^(Z)$/,\n timezoneHH: /^([+-]\\d{2})$/,\n timezoneHHMM: /^([+-]\\d{2}):?(\\d{2})$/,\n}\n\n// Parse various time zone offset formats to an offset in milliseconds\nexport default function tzParseTimezone(timezoneString, date, isUtcDate) {\n var token\n var absoluteOffset\n\n // Empty string\n if (!timezoneString) {\n return 0\n }\n\n // Z\n token = patterns.timezoneZ.exec(timezoneString)\n if (token) {\n return 0\n }\n\n var hours\n\n // ±hh\n token = patterns.timezoneHH.exec(timezoneString)\n if (token) {\n hours = parseInt(token[1], 10)\n\n if (!validateTimezone(hours)) {\n return NaN\n }\n\n return -(hours * MILLISECONDS_IN_HOUR)\n }\n\n // ±hh:mm or ±hhmm\n token = patterns.timezoneHHMM.exec(timezoneString)\n if (token) {\n hours = parseInt(token[1], 10)\n var minutes = parseInt(token[2], 10)\n\n if (!validateTimezone(hours, minutes)) {\n return NaN\n }\n\n absoluteOffset = Math.abs(hours) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\n return hours > 0 ? -absoluteOffset : absoluteOffset\n }\n\n // IANA time zone\n if (isValidTimezoneIANAString(timezoneString)) {\n date = new Date(date || Date.now())\n var utcDate = isUtcDate ? date : toUtcDate(date)\n\n var offset = calcOffset(utcDate, timezoneString)\n\n var fixedOffset = isUtcDate ? offset : fixOffset(date, offset, timezoneString)\n\n return -fixedOffset\n }\n\n return NaN\n}\n\nfunction toUtcDate(date) {\n return newDateUTC(\n date.getFullYear(),\n date.getMonth(),\n date.getDate(),\n date.getHours(),\n date.getMinutes(),\n date.getSeconds(),\n date.getMilliseconds()\n )\n}\n\nfunction calcOffset(date, timezoneString) {\n var tokens = tzTokenizeDate(date, timezoneString)\n\n // ms dropped because it's not provided by tzTokenizeDate\n var asUTC = newDateUTC(\n tokens[0],\n tokens[1] - 1,\n tokens[2],\n tokens[3] % 24,\n tokens[4],\n tokens[5],\n 0\n ).getTime()\n\n var asTS = date.getTime()\n var over = asTS % 1000\n asTS -= over >= 0 ? over : 1000 + over\n return asUTC - asTS\n}\n\nfunction fixOffset(date, offset, timezoneString) {\n var localTS = date.getTime()\n\n // Our UTC time is just a guess because our offset is just a guess\n var utcGuess = localTS - offset\n\n // Test whether the zone matches the offset for this ts\n var o2 = calcOffset(new Date(utcGuess), timezoneString)\n\n // If so, offset didn't change, and we're done\n if (offset === o2) {\n return offset\n }\n\n // If not, change the ts by the difference in the offset\n utcGuess -= o2 - offset\n\n // If that gives us the local time we want, we're done\n var o3 = calcOffset(new Date(utcGuess), timezoneString)\n if (o2 === o3) {\n return o2\n }\n\n // If it's different, we're in a hole time. The offset has changed, but we don't adjust the time\n return Math.max(o2, o3)\n}\n\nfunction validateTimezone(hours, minutes) {\n return -23 <= hours && hours <= 23 && (minutes == null || (0 <= minutes && minutes <= 59))\n}\n\nvar validIANATimezoneCache = {}\nfunction isValidTimezoneIANAString(timeZoneString) {\n if (validIANATimezoneCache[timeZoneString]) return true\n try {\n new Intl.DateTimeFormat(undefined, { timeZone: timeZoneString })\n validIANATimezoneCache[timeZoneString] = true\n return true\n } catch (error) {\n return false\n }\n}\n","import toInteger from 'date-fns/_lib/toInteger/index.js'\nimport getTimezoneOffsetInMilliseconds from 'date-fns/_lib/getTimezoneOffsetInMilliseconds/index.js'\nimport tzParseTimezone from '../_lib/tzParseTimezone/index.js'\nimport tzPattern from '../_lib/tzPattern/index.js'\n\nvar MILLISECONDS_IN_HOUR = 3600000\nvar MILLISECONDS_IN_MINUTE = 60000\nvar DEFAULT_ADDITIONAL_DIGITS = 2\n\nvar patterns = {\n dateTimePattern: /^([0-9W+-]+)(T| )(.*)/,\n datePattern: /^([0-9W+-]+)(.*)/,\n plainTime: /:/,\n\n // year tokens\n YY: /^(\\d{2})$/,\n YYY: [\n /^([+-]\\d{2})$/, // 0 additional digits\n /^([+-]\\d{3})$/, // 1 additional digit\n /^([+-]\\d{4})$/, // 2 additional digits\n ],\n YYYY: /^(\\d{4})/,\n YYYYY: [\n /^([+-]\\d{4})/, // 0 additional digits\n /^([+-]\\d{5})/, // 1 additional digit\n /^([+-]\\d{6})/, // 2 additional digits\n ],\n\n // date tokens\n MM: /^-(\\d{2})$/,\n DDD: /^-?(\\d{3})$/,\n MMDD: /^-?(\\d{2})-?(\\d{2})$/,\n Www: /^-?W(\\d{2})$/,\n WwwD: /^-?W(\\d{2})-?(\\d{1})$/,\n\n HH: /^(\\d{2}([.,]\\d*)?)$/,\n HHMM: /^(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n HHMMSS: /^(\\d{2}):?(\\d{2}):?(\\d{2}([.,]\\d*)?)$/,\n\n // time zone tokens (to identify the presence of a tz)\n timeZone: tzPattern,\n}\n\n/**\n * @name toDate\n * @category Common Helpers\n * @summary Convert the given argument to an instance of Date.\n *\n * @description\n * Convert the given argument to an instance of Date.\n *\n * If the argument is an instance of Date, the function returns its clone.\n *\n * If the argument is a number, it is treated as a timestamp.\n *\n * If an argument is a string, the function tries to parse it.\n * Function accepts complete ISO 8601 formats as well as partial implementations.\n * ISO 8601: http://en.wikipedia.org/wiki/ISO_8601\n * If the function cannot parse the string or the values are invalid, it returns Invalid Date.\n *\n * If the argument is none of the above, the function returns Invalid Date.\n *\n * **Note**: *all* Date arguments passed to any *date-fns* function is processed by `toDate`.\n * All *date-fns* functions will throw `RangeError` if `options.additionalDigits` is not 0, 1, 2 or undefined.\n *\n * @param {Date|String|Number} argument - the value to convert\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - the additional number of digits in the extended year format\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @returns {Date} the parsed date in the local time zone\n * @throws {TypeError} 1 argument required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // Convert string '2014-02-11T11:30:30' to date:\n * var result = toDate('2014-02-11T11:30:30')\n * //=> Tue Feb 11 2014 11:30:30\n *\n * @example\n * // Convert string '+02014101' to date,\n * // if the additional number of digits in the extended year format is 1:\n * var result = toDate('+02014101', {additionalDigits: 1})\n * //=> Fri Apr 11 2014 00:00:00\n */\nexport default function toDate(argument, dirtyOptions) {\n if (arguments.length < 1) {\n throw new TypeError('1 argument required, but only ' + arguments.length + ' present')\n }\n\n if (argument === null) {\n return new Date(NaN)\n }\n\n var options = dirtyOptions || {}\n\n var additionalDigits =\n options.additionalDigits == null\n ? DEFAULT_ADDITIONAL_DIGITS\n : toInteger(options.additionalDigits)\n if (additionalDigits !== 2 && additionalDigits !== 1 && additionalDigits !== 0) {\n throw new RangeError('additionalDigits must be 0, 1 or 2')\n }\n\n // Clone the date\n if (\n argument instanceof Date ||\n (typeof argument === 'object' && Object.prototype.toString.call(argument) === '[object Date]')\n ) {\n // Prevent the date to lose the milliseconds when passed to new Date() in IE10\n return new Date(argument.getTime())\n } else if (\n typeof argument === 'number' ||\n Object.prototype.toString.call(argument) === '[object Number]'\n ) {\n return new Date(argument)\n } else if (\n !(\n typeof argument === 'string' || Object.prototype.toString.call(argument) === '[object String]'\n )\n ) {\n return new Date(NaN)\n }\n\n var dateStrings = splitDateString(argument)\n\n var parseYearResult = parseYear(dateStrings.date, additionalDigits)\n var year = parseYearResult.year\n var restDateString = parseYearResult.restDateString\n\n var date = parseDate(restDateString, year)\n\n if (isNaN(date)) {\n return new Date(NaN)\n }\n\n if (date) {\n var timestamp = date.getTime()\n var time = 0\n var offset\n\n if (dateStrings.time) {\n time = parseTime(dateStrings.time)\n\n if (isNaN(time)) {\n return new Date(NaN)\n }\n }\n\n if (dateStrings.timeZone || options.timeZone) {\n offset = tzParseTimezone(dateStrings.timeZone || options.timeZone, new Date(timestamp + time))\n if (isNaN(offset)) {\n return new Date(NaN)\n }\n } else {\n // get offset accurate to hour in time zones that change offset\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time))\n offset = getTimezoneOffsetInMilliseconds(new Date(timestamp + time + offset))\n }\n\n return new Date(timestamp + time + offset)\n } else {\n return new Date(NaN)\n }\n}\n\nfunction splitDateString(dateString) {\n var dateStrings = {}\n var parts = patterns.dateTimePattern.exec(dateString)\n var timeString\n\n if (!parts) {\n parts = patterns.datePattern.exec(dateString)\n if (parts) {\n dateStrings.date = parts[1]\n timeString = parts[2]\n } else {\n dateStrings.date = null\n timeString = dateString\n }\n } else {\n dateStrings.date = parts[1]\n timeString = parts[3]\n }\n\n if (timeString) {\n var token = patterns.timeZone.exec(timeString)\n if (token) {\n dateStrings.time = timeString.replace(token[1], '')\n dateStrings.timeZone = token[1].trim()\n } else {\n dateStrings.time = timeString\n }\n }\n\n return dateStrings\n}\n\nfunction parseYear(dateString, additionalDigits) {\n var patternYYY = patterns.YYY[additionalDigits]\n var patternYYYYY = patterns.YYYYY[additionalDigits]\n\n var token\n\n // YYYY or ±YYYYY\n token = patterns.YYYY.exec(dateString) || patternYYYYY.exec(dateString)\n if (token) {\n var yearString = token[1]\n return {\n year: parseInt(yearString, 10),\n restDateString: dateString.slice(yearString.length),\n }\n }\n\n // YY or ±YYY\n token = patterns.YY.exec(dateString) || patternYYY.exec(dateString)\n if (token) {\n var centuryString = token[1]\n return {\n year: parseInt(centuryString, 10) * 100,\n restDateString: dateString.slice(centuryString.length),\n }\n }\n\n // Invalid ISO-formatted year\n return {\n year: null,\n }\n}\n\nfunction parseDate(dateString, year) {\n // Invalid ISO-formatted year\n if (year === null) {\n return null\n }\n\n var token\n var date\n var month\n var week\n\n // YYYY\n if (dateString.length === 0) {\n date = new Date(0)\n date.setUTCFullYear(year)\n return date\n }\n\n // YYYY-MM\n token = patterns.MM.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n\n if (!validateDate(year, month)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month)\n return date\n }\n\n // YYYY-DDD or YYYYDDD\n token = patterns.DDD.exec(dateString)\n if (token) {\n date = new Date(0)\n var dayOfYear = parseInt(token[1], 10)\n\n if (!validateDayOfYearDate(year, dayOfYear)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, 0, dayOfYear)\n return date\n }\n\n // yyyy-MM-dd or YYYYMMDD\n token = patterns.MMDD.exec(dateString)\n if (token) {\n date = new Date(0)\n month = parseInt(token[1], 10) - 1\n var day = parseInt(token[2], 10)\n\n if (!validateDate(year, month, day)) {\n return new Date(NaN)\n }\n\n date.setUTCFullYear(year, month, day)\n return date\n }\n\n // YYYY-Www or YYYYWww\n token = patterns.Www.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n\n if (!validateWeekDate(year, week)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week)\n }\n\n // YYYY-Www-D or YYYYWwwD\n token = patterns.WwwD.exec(dateString)\n if (token) {\n week = parseInt(token[1], 10) - 1\n var dayOfWeek = parseInt(token[2], 10) - 1\n\n if (!validateWeekDate(year, week, dayOfWeek)) {\n return new Date(NaN)\n }\n\n return dayOfISOWeekYear(year, week, dayOfWeek)\n }\n\n // Invalid ISO-formatted date\n return null\n}\n\nfunction parseTime(timeString) {\n var token\n var hours\n var minutes\n\n // hh\n token = patterns.HH.exec(timeString)\n if (token) {\n hours = parseFloat(token[1].replace(',', '.'))\n\n if (!validateTime(hours)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR\n }\n\n // hh:mm or hhmm\n token = patterns.HHMM.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseFloat(token[2].replace(',', '.'))\n\n if (!validateTime(hours, minutes)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE\n }\n\n // hh:mm:ss or hhmmss\n token = patterns.HHMMSS.exec(timeString)\n if (token) {\n hours = parseInt(token[1], 10)\n minutes = parseInt(token[2], 10)\n var seconds = parseFloat(token[3].replace(',', '.'))\n\n if (!validateTime(hours, minutes, seconds)) {\n return NaN\n }\n\n return (hours % 24) * MILLISECONDS_IN_HOUR + minutes * MILLISECONDS_IN_MINUTE + seconds * 1000\n }\n\n // Invalid ISO-formatted time\n return null\n}\n\nfunction dayOfISOWeekYear(isoWeekYear, week, day) {\n week = week || 0\n day = day || 0\n var date = new Date(0)\n date.setUTCFullYear(isoWeekYear, 0, 4)\n var fourthOfJanuaryDay = date.getUTCDay() || 7\n var diff = week * 7 + day + 1 - fourthOfJanuaryDay\n date.setUTCDate(date.getUTCDate() + diff)\n return date\n}\n\n// Validation functions\n\nvar DAYS_IN_MONTH = [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\nvar DAYS_IN_MONTH_LEAP_YEAR = [31, 29, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31]\n\nfunction isLeapYearIndex(year) {\n return year % 400 === 0 || (year % 4 === 0 && year % 100 !== 0)\n}\n\nfunction validateDate(year, month, date) {\n if (month < 0 || month > 11) {\n return false\n }\n\n if (date != null) {\n if (date < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear && date > DAYS_IN_MONTH_LEAP_YEAR[month]) {\n return false\n }\n if (!isLeapYear && date > DAYS_IN_MONTH[month]) {\n return false\n }\n }\n\n return true\n}\n\nfunction validateDayOfYearDate(year, dayOfYear) {\n if (dayOfYear < 1) {\n return false\n }\n\n var isLeapYear = isLeapYearIndex(year)\n if (isLeapYear && dayOfYear > 366) {\n return false\n }\n if (!isLeapYear && dayOfYear > 365) {\n return false\n }\n\n return true\n}\n\nfunction validateWeekDate(year, week, day) {\n if (week < 0 || week > 52) {\n return false\n }\n\n if (day != null && (day < 0 || day > 6)) {\n return false\n }\n\n return true\n}\n\nfunction validateTime(hours, minutes, seconds) {\n if (hours != null && (hours < 0 || hours >= 25)) {\n return false\n }\n\n if (minutes != null && (minutes < 0 || minutes >= 60)) {\n return false\n }\n\n if (seconds != null && (seconds < 0 || seconds >= 60)) {\n return false\n }\n\n return true\n}\n","/** Regex to identify the presence of a time zone specifier in a date string */\nvar tzPattern = /(Z|[+-]\\d{2}(?::?\\d{2})?| UTC| [a-zA-Z]+\\/[a-zA-Z_]+(?:\\/[a-zA-Z_]+)?)$/\n\nexport default tzPattern\n","/**\n * Returns the formatted time zone name of the provided `timeZone` or the current\n * system time zone if omitted, accounting for DST according to the UTC value of\n * the date.\n */\nexport default function tzIntlTimeZoneName(length, date, options) {\n var dtf = getDTF(length, options.timeZone, options.locale)\n return dtf.formatToParts ? partsTimeZone(dtf, date) : hackyTimeZone(dtf, date)\n}\n\nfunction partsTimeZone(dtf, date) {\n var formatted = dtf.formatToParts(date)\n\n for (var i = formatted.length - 1; i >= 0; --i) {\n if (formatted[i].type === 'timeZoneName') {\n return formatted[i].value\n }\n }\n}\n\nfunction hackyTimeZone(dtf, date) {\n var formatted = dtf.format(date).replace(/\\u200E/g, '')\n var tzNameMatch = / [\\w-+ ]+$/.exec(formatted)\n return tzNameMatch ? tzNameMatch[0].substr(1) : ''\n}\n\n// If a locale has been provided `en-US` is used as a fallback in case it is an\n// invalid locale, otherwise the locale is left undefined to use the system locale.\nfunction getDTF(length, timeZone, locale) {\n if (locale && !locale.code) {\n throw new Error(\n \"date-fns-tz error: Please set a language code on the locale object imported from date-fns, e.g. `locale.code = 'en-US'`\"\n )\n }\n return new Intl.DateTimeFormat(locale ? [locale.code, 'en-US'] : undefined, {\n timeZone: timeZone,\n timeZoneName: length,\n })\n}\n","import tzIntlTimeZoneName from '../../_lib/tzIntlTimeZoneName/index.js'\nimport tzParseTimezone from '../../_lib/tzParseTimezone/index.js'\n\nvar MILLISECONDS_IN_MINUTE = 60 * 1000\n\nvar formatters = {\n // Timezone (ISO-8601. If offset is 0, output is always `'Z'`)\n X: function (date, token, localize, options) {\n var timezoneOffset = getTimeZoneOffset(options.timeZone, options._originalDate || date)\n\n if (timezoneOffset === 0) {\n return 'Z'\n }\n\n switch (token) {\n // Hours and optional minutes\n case 'X':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XX`\n case 'XXXX':\n case 'XX': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `XXX`\n case 'XXXXX':\n case 'XXX': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (ISO-8601. If offset is 0, output is `'+00:00'` or equivalent)\n x: function (date, token, localize, options) {\n var timezoneOffset = getTimeZoneOffset(options.timeZone, options._originalDate || date)\n\n switch (token) {\n // Hours and optional minutes\n case 'x':\n return formatTimezoneWithOptionalMinutes(timezoneOffset)\n\n // Hours, minutes and optional seconds without `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xx`\n case 'xxxx':\n case 'xx': // Hours and minutes without `:` delimeter\n return formatTimezone(timezoneOffset)\n\n // Hours, minutes and optional seconds with `:` delimeter\n // Note: neither ISO-8601 nor JavaScript supports seconds in timezone offsets\n // so this token always has the same output as `xxx`\n case 'xxxxx':\n case 'xxx': // Hours and minutes with `:` delimeter\n default:\n return formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (GMT)\n O: function (date, token, localize, options) {\n var timezoneOffset = getTimeZoneOffset(options.timeZone, options._originalDate || date)\n\n switch (token) {\n // Short\n case 'O':\n case 'OO':\n case 'OOO':\n return 'GMT' + formatTimezoneShort(timezoneOffset, ':')\n // Long\n case 'OOOO':\n default:\n return 'GMT' + formatTimezone(timezoneOffset, ':')\n }\n },\n\n // Timezone (specific non-location)\n z: function (date, token, localize, options) {\n var originalDate = options._originalDate || date\n\n switch (token) {\n // Short\n case 'z':\n case 'zz':\n case 'zzz':\n return tzIntlTimeZoneName('short', originalDate, options)\n // Long\n case 'zzzz':\n default:\n return tzIntlTimeZoneName('long', originalDate, options)\n }\n },\n}\n\nfunction getTimeZoneOffset(timeZone, originalDate) {\n var timeZoneOffset = timeZone\n ? tzParseTimezone(timeZone, originalDate, true) / MILLISECONDS_IN_MINUTE\n : originalDate.getTimezoneOffset()\n if (Number.isNaN(timeZoneOffset)) {\n throw new RangeError('Invalid time zone specified: ' + timeZone)\n }\n return timeZoneOffset\n}\n\nfunction addLeadingZeros(number, targetLength) {\n var sign = number < 0 ? '-' : ''\n var output = Math.abs(number).toString()\n while (output.length < targetLength) {\n output = '0' + output\n }\n return sign + output\n}\n\nfunction formatTimezone(offset, dirtyDelimeter) {\n var delimeter = dirtyDelimeter || ''\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = addLeadingZeros(Math.floor(absOffset / 60), 2)\n var minutes = addLeadingZeros(Math.floor(absOffset % 60), 2)\n return sign + hours + delimeter + minutes\n}\n\nfunction formatTimezoneWithOptionalMinutes(offset, dirtyDelimeter) {\n if (offset % 60 === 0) {\n var sign = offset > 0 ? '-' : '+'\n return sign + addLeadingZeros(Math.abs(offset) / 60, 2)\n }\n return formatTimezone(offset, dirtyDelimeter)\n}\n\nfunction formatTimezoneShort(offset, dirtyDelimeter) {\n var sign = offset > 0 ? '-' : '+'\n var absOffset = Math.abs(offset)\n var hours = Math.floor(absOffset / 60)\n var minutes = absOffset % 60\n if (minutes === 0) {\n return sign + String(hours)\n }\n var delimeter = dirtyDelimeter || ''\n return sign + String(hours) + delimeter + addLeadingZeros(minutes, 2)\n}\n\nexport default formatters\n","import dateFnsFormat from 'date-fns/format/index.js'\nimport formatters from './formatters/index.js'\nimport toDate from '../toDate/index.js'\n\nvar tzFormattingTokensRegExp = /([xXOz]+)|''|'(''|[^'])+('|$)/g\n\n/**\n * @name format\n * @category Common Helpers\n * @summary Format the date.\n *\n * @description\n * Return the formatted date string in the given format. The result may vary by locale.\n *\n * > ⚠️ Please note that the `format` tokens differ from Moment.js and other libraries.\n * > See: https://git.io/fxCyr\n *\n * The characters wrapped between two single quotes characters (') are escaped.\n * Two single quotes in a row, whether inside or outside a quoted sequence, represent a 'real' single quote.\n * (see the last example)\n *\n * Format of the string is based on Unicode Technical Standard #35:\n * https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table\n * with a few additions (see note 7 below the table).\n *\n * Accepted patterns:\n * | Unit | Pattern | Result examples | Notes |\n * |---------------------------------|---------|-----------------------------------|-------|\n * | Era | G..GGG | AD, BC | |\n * | | GGGG | Anno Domini, Before Christ | 2 |\n * | | GGGGG | A, B | |\n * | Calendar year | y | 44, 1, 1900, 2017 | 5 |\n * | | yo | 44th, 1st, 0th, 17th | 5,7 |\n * | | yy | 44, 01, 00, 17 | 5 |\n * | | yyy | 044, 001, 1900, 2017 | 5 |\n * | | yyyy | 0044, 0001, 1900, 2017 | 5 |\n * | | yyyyy | ... | 3,5 |\n * | Local week-numbering year | Y | 44, 1, 1900, 2017 | 5 |\n * | | Yo | 44th, 1st, 1900th, 2017th | 5,7 |\n * | | YY | 44, 01, 00, 17 | 5,8 |\n * | | YYY | 044, 001, 1900, 2017 | 5 |\n * | | YYYY | 0044, 0001, 1900, 2017 | 5,8 |\n * | | YYYYY | ... | 3,5 |\n * | ISO week-numbering year | R | -43, 0, 1, 1900, 2017 | 5,7 |\n * | | RR | -43, 00, 01, 1900, 2017 | 5,7 |\n * | | RRR | -043, 000, 001, 1900, 2017 | 5,7 |\n * | | RRRR | -0043, 0000, 0001, 1900, 2017 | 5,7 |\n * | | RRRRR | ... | 3,5,7 |\n * | Extended year | u | -43, 0, 1, 1900, 2017 | 5 |\n * | | uu | -43, 01, 1900, 2017 | 5 |\n * | | uuu | -043, 001, 1900, 2017 | 5 |\n * | | uuuu | -0043, 0001, 1900, 2017 | 5 |\n * | | uuuuu | ... | 3,5 |\n * | Quarter (formatting) | Q | 1, 2, 3, 4 | |\n * | | Qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | QQ | 01, 02, 03, 04 | |\n * | | QQQ | Q1, Q2, Q3, Q4 | |\n * | | QQQQ | 1st quarter, 2nd quarter, ... | 2 |\n * | | QQQQQ | 1, 2, 3, 4 | 4 |\n * | Quarter (stand-alone) | q | 1, 2, 3, 4 | |\n * | | qo | 1st, 2nd, 3rd, 4th | 7 |\n * | | qq | 01, 02, 03, 04 | |\n * | | qqq | Q1, Q2, Q3, Q4 | |\n * | | qqqq | 1st quarter, 2nd quarter, ... | 2 |\n * | | qqqqq | 1, 2, 3, 4 | 4 |\n * | Month (formatting) | M | 1, 2, ..., 12 | |\n * | | Mo | 1st, 2nd, ..., 12th | 7 |\n * | | MM | 01, 02, ..., 12 | |\n * | | MMM | Jan, Feb, ..., Dec | |\n * | | MMMM | January, February, ..., December | 2 |\n * | | MMMMM | J, F, ..., D | |\n * | Month (stand-alone) | L | 1, 2, ..., 12 | |\n * | | Lo | 1st, 2nd, ..., 12th | 7 |\n * | | LL | 01, 02, ..., 12 | |\n * | | LLL | Jan, Feb, ..., Dec | |\n * | | LLLL | January, February, ..., December | 2 |\n * | | LLLLL | J, F, ..., D | |\n * | Local week of year | w | 1, 2, ..., 53 | |\n * | | wo | 1st, 2nd, ..., 53th | 7 |\n * | | ww | 01, 02, ..., 53 | |\n * | ISO week of year | I | 1, 2, ..., 53 | 7 |\n * | | Io | 1st, 2nd, ..., 53th | 7 |\n * | | II | 01, 02, ..., 53 | 7 |\n * | Day of month | d | 1, 2, ..., 31 | |\n * | | do | 1st, 2nd, ..., 31st | 7 |\n * | | dd | 01, 02, ..., 31 | |\n * | Day of year | D | 1, 2, ..., 365, 366 | 8 |\n * | | Do | 1st, 2nd, ..., 365th, 366th | 7 |\n * | | DD | 01, 02, ..., 365, 366 | 8 |\n * | | DDD | 001, 002, ..., 365, 366 | |\n * | | DDDD | ... | 3 |\n * | Day of week (formatting) | E..EEE | Mon, Tue, Wed, ..., Su | |\n * | | EEEE | Monday, Tuesday, ..., Sunday | 2 |\n * | | EEEEE | M, T, W, T, F, S, S | |\n * | | EEEEEE | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | ISO day of week (formatting) | i | 1, 2, 3, ..., 7 | 7 |\n * | | io | 1st, 2nd, ..., 7th | 7 |\n * | | ii | 01, 02, ..., 07 | 7 |\n * | | iii | Mon, Tue, Wed, ..., Su | 7 |\n * | | iiii | Monday, Tuesday, ..., Sunday | 2,7 |\n * | | iiiii | M, T, W, T, F, S, S | 7 |\n * | | iiiiii | Mo, Tu, We, Th, Fr, Su, Sa | 7 |\n * | Local day of week (formatting) | e | 2, 3, 4, ..., 1 | |\n * | | eo | 2nd, 3rd, ..., 1st | 7 |\n * | | ee | 02, 03, ..., 01 | |\n * | | eee | Mon, Tue, Wed, ..., Su | |\n * | | eeee | Monday, Tuesday, ..., Sunday | 2 |\n * | | eeeee | M, T, W, T, F, S, S | |\n * | | eeeeee | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | Local day of week (stand-alone) | c | 2, 3, 4, ..., 1 | |\n * | | co | 2nd, 3rd, ..., 1st | 7 |\n * | | cc | 02, 03, ..., 01 | |\n * | | ccc | Mon, Tue, Wed, ..., Su | |\n * | | cccc | Monday, Tuesday, ..., Sunday | 2 |\n * | | ccccc | M, T, W, T, F, S, S | |\n * | | cccccc | Mo, Tu, We, Th, Fr, Su, Sa | |\n * | AM, PM | a..aaa | AM, PM | |\n * | | aaaa | a.m., p.m. | 2 |\n * | | aaaaa | a, p | |\n * | AM, PM, noon, midnight | b..bbb | AM, PM, noon, midnight | |\n * | | bbbb | a.m., p.m., noon, midnight | 2 |\n * | | bbbbb | a, p, n, mi | |\n * | Flexible day period | B..BBB | at night, in the morning, ... | |\n * | | BBBB | at night, in the morning, ... | 2 |\n * | | BBBBB | at night, in the morning, ... | |\n * | Hour [1-12] | h | 1, 2, ..., 11, 12 | |\n * | | ho | 1st, 2nd, ..., 11th, 12th | 7 |\n * | | hh | 01, 02, ..., 11, 12 | |\n * | Hour [0-23] | H | 0, 1, 2, ..., 23 | |\n * | | Ho | 0th, 1st, 2nd, ..., 23rd | 7 |\n * | | HH | 00, 01, 02, ..., 23 | |\n * | Hour [0-11] | K | 1, 2, ..., 11, 0 | |\n * | | Ko | 1st, 2nd, ..., 11th, 0th | 7 |\n * | | KK | 1, 2, ..., 11, 0 | |\n * | Hour [1-24] | k | 24, 1, 2, ..., 23 | |\n * | | ko | 24th, 1st, 2nd, ..., 23rd | 7 |\n * | | kk | 24, 01, 02, ..., 23 | |\n * | Minute | m | 0, 1, ..., 59 | |\n * | | mo | 0th, 1st, ..., 59th | 7 |\n * | | mm | 00, 01, ..., 59 | |\n * | Second | s | 0, 1, ..., 59 | |\n * | | so | 0th, 1st, ..., 59th | 7 |\n * | | ss | 00, 01, ..., 59 | |\n * | Fraction of second | S | 0, 1, ..., 9 | |\n * | | SS | 00, 01, ..., 99 | |\n * | | SSS | 000, 0001, ..., 999 | |\n * | | SSSS | ... | 3 |\n * | Timezone (ISO-8601 w/ Z) | X | -08, +0530, Z | |\n * | | XX | -0800, +0530, Z | |\n * | | XXX | -08:00, +05:30, Z | |\n * | | XXXX | -0800, +0530, Z, +123456 | 2 |\n * | | XXXXX | -08:00, +05:30, Z, +12:34:56 | |\n * | Timezone (ISO-8601 w/o Z) | x | -08, +0530, +00 | |\n * | | xx | -0800, +0530, +0000 | |\n * | | xxx | -08:00, +05:30, +00:00 | 2 |\n * | | xxxx | -0800, +0530, +0000, +123456 | |\n * | | xxxxx | -08:00, +05:30, +00:00, +12:34:56 | |\n * | Timezone (GMT) | O...OOO | GMT-8, GMT+5:30, GMT+0 | |\n * | | OOOO | GMT-08:00, GMT+05:30, GMT+00:00 | 2 |\n * | Timezone (specific non-locat.) | z...zzz | PDT, EST, CEST | 6 |\n * | | zzzz | Pacific Daylight Time | 2,6 |\n * | Seconds timestamp | t | 512969520 | 7 |\n * | | tt | ... | 3,7 |\n * | Milliseconds timestamp | T | 512969520900 | 7 |\n * | | TT | ... | 3,7 |\n * | Long localized date | P | 05/29/1453 | 7 |\n * | | PP | May 29, 1453 | 7 |\n * | | PPP | May 29th, 1453 | 7 |\n * | | PPPP | Sunday, May 29th, 1453 | 2,7 |\n * | Long localized time | p | 12:00 AM | 7 |\n * | | pp | 12:00:00 AM | 7 |\n * | | ppp | 12:00:00 AM GMT+2 | 7 |\n * | | pppp | 12:00:00 AM GMT+02:00 | 2,7 |\n * | Combination of date and time | Pp | 05/29/1453, 12:00 AM | 7 |\n * | | PPpp | May 29, 1453, 12:00:00 AM | 7 |\n * | | PPPppp | May 29th, 1453 at ... | 7 |\n * | | PPPPpppp| Sunday, May 29th, 1453 at ... | 2,7 |\n * Notes:\n * 1. \"Formatting\" units (e.g. formatting quarter) in the default en-US locale\n * are the same as \"stand-alone\" units, but are different in some languages.\n * \"Formatting\" units are declined according to the rules of the language\n * in the context of a date. \"Stand-alone\" units are always nominative singular:\n *\n * `format(new Date(2017, 10, 6), 'do LLLL', {locale: cs}) //=> '6. listopad'`\n *\n * `format(new Date(2017, 10, 6), 'do MMMM', {locale: cs}) //=> '6. listopadu'`\n *\n * 2. Any sequence of the identical letters is a pattern, unless it is escaped by\n * the single quote characters (see below).\n * If the sequence is longer than listed in table (e.g. `EEEEEEEEEEE`)\n * the output will be the same as default pattern for this unit, usually\n * the longest one (in case of ISO weekdays, `EEEE`). Default patterns for units\n * are marked with \"2\" in the last column of the table.\n *\n * `format(new Date(2017, 10, 6), 'MMM') //=> 'Nov'`\n *\n * `format(new Date(2017, 10, 6), 'MMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMM') //=> 'N'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMM') //=> 'November'`\n *\n * `format(new Date(2017, 10, 6), 'MMMMMMM') //=> 'November'`\n *\n * 3. Some patterns could be unlimited length (such as `yyyyyyyy`).\n * The output will be padded with zeros to match the length of the pattern.\n *\n * `format(new Date(2017, 10, 6), 'yyyyyyyy') //=> '00002017'`\n *\n * 4. `QQQQQ` and `qqqqq` could be not strictly numerical in some locales.\n * These tokens represent the shortest form of the quarter.\n *\n * 5. The main difference between `y` and `u` patterns are B.C. years:\n *\n * | Year | `y` | `u` |\n * |------|-----|-----|\n * | AC 1 | 1 | 1 |\n * | BC 1 | 1 | 0 |\n * | BC 2 | 2 | -1 |\n *\n * Also `yy` always returns the last two digits of a year,\n * while `uu` pads single digit years to 2 characters and returns other years unchanged:\n *\n * | Year | `yy` | `uu` |\n * |------|------|------|\n * | 1 | 01 | 01 |\n * | 14 | 14 | 14 |\n * | 376 | 76 | 376 |\n * | 1453 | 53 | 1453 |\n *\n * The same difference is true for local and ISO week-numbering years (`Y` and `R`),\n * except local week-numbering years are dependent on `options.weekStartsOn`\n * and `options.firstWeekContainsDate` (compare [getISOWeekYear]{@link https://date-fns.org/docs/getISOWeekYear}\n * and [getWeekYear]{@link https://date-fns.org/docs/getWeekYear}).\n *\n * 6. Specific non-location timezones are created using the Intl browser API. The output is determined by the\n * preferred standard of the current locale (en-US by default) which may not always give the expected result.\n * For this reason it is recommended to supply a `locale` in the format options when formatting a time zone name.\n *\n * 7. These patterns are not in the Unicode Technical Standard #35:\n * - `i`: ISO day of week\n * - `I`: ISO week of year\n * - `R`: ISO week-numbering year\n * - `t`: seconds timestamp\n * - `T`: milliseconds timestamp\n * - `o`: ordinal number modifier\n * - `P`: long localized date\n * - `p`: long localized time\n *\n * 8. These tokens are often confused with others. See: https://git.io/fxCyr\n *\n *\n * ### v2.0.0 breaking changes:\n *\n * - [Changes that are common for the whole\n * library](https://github.com/date-fns/date-fns/blob/master/docs/upgradeGuide.md#Common-Changes).\n *\n * - The second argument is now required for the sake of explicitness.\n *\n * ```javascript\n * // Before v2.0.0\n * format(new Date(2016, 0, 1))\n *\n * // v2.0.0 onward\n * format(new Date(2016, 0, 1), \"yyyy-MM-dd'T'HH:mm:ss.SSSxxx\")\n * ```\n *\n * - New format string API for `format` function\n * which is based on [Unicode Technical Standard\n * #35](https://www.unicode.org/reports/tr35/tr35-dates.html#Date_Field_Symbol_Table). See [this\n * post](https://blog.date-fns.org/post/unicode-tokens-in-date-fns-v2-sreatyki91jg) for more details.\n *\n * - Characters are now escaped using single quote symbols (`'`) instead of square brackets.\n *\n * @param {Date|Number} date - the original date\n * @param {String} format - the string of tokens\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link\n * https://date-fns.org/docs/toDate}\n * @param {0|1|2|3|4|5|6} [options.weekStartsOn=0] - the index of the first day of the week (0 - Sunday)\n * @param {Number} [options.firstWeekContainsDate=1] - the day of January, which is\n * @param {Locale} [options.locale=defaultLocale] - the locale object. See\n * [Locale]{@link https://date-fns.org/docs/Locale}\n * @param {Boolean} [options.awareOfUnicodeTokens=false] - if true, allows usage of Unicode tokens causes confusion:\n * - Some of the day of year tokens (`D`, `DD`) that are confused with the day of month tokens (`d`, `dd`).\n * - Some of the local week-numbering year tokens (`YY`, `YYYY`) that are confused with the calendar year tokens\n * (`yy`, `yyyy`). See: https://git.io/fxCyr\n * @param {String} [options.timeZone=''] - used to specify the IANA time zone offset of a date String.\n * @returns {String} the formatted date string\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n * @throws {RangeError} `options.locale` must contain `localize` property\n * @throws {RangeError} `options.locale` must contain `formatLong` property\n * @throws {RangeError} `options.weekStartsOn` must be between 0 and 6\n * @throws {RangeError} `options.firstWeekContainsDate` must be between 1 and 7\n * @throws {RangeError} `options.awareOfUnicodeTokens` must be set to `true` to use `XX` token; see:\n * https://git.io/fxCyr\n *\n * @example\n * // Represent 11 February 2014 in middle-endian format:\n * var result = format(new Date(2014, 1, 11), 'MM/dd/yyyy')\n * //=> '02/11/2014'\n *\n * @example\n * // Represent 2 July 2014 in Esperanto:\n * import { eoLocale } from 'date-fns/locale/eo'\n * var result = format(new Date(2014, 6, 2), \"do 'de' MMMM yyyy\", {\n * locale: eoLocale\n * })\n * //=> '2-a de julio 2014'\n *\n * @example\n * // Escape string by single quote characters:\n * var result = format(new Date(2014, 6, 2, 15), \"h 'o''clock'\")\n * //=> \"3 o'clock\"\n */\nexport default function format(dirtyDate, dirtyFormatStr, dirtyOptions) {\n var formatStr = String(dirtyFormatStr)\n var options = dirtyOptions || {}\n\n var matches = formatStr.match(tzFormattingTokensRegExp)\n if (matches) {\n var date = toDate(dirtyDate, options)\n // Work through each match and replace the tz token in the format string with the quoted\n // formatted time zone so the remaining tokens can be filled in by date-fns#format.\n formatStr = matches.reduce(function (result, token) {\n if (token[0] === \"'\") {\n return result // This is a quoted portion, matched only to ensure we don't match inside it\n }\n var pos = result.indexOf(token)\n var precededByQuotedSection = result[pos - 1] === \"'\"\n var replaced = result.replace(\n token,\n \"'\" + formatters[token[0]](date, token, null, options) + \"'\"\n )\n // If the replacement results in two adjoining quoted strings, the back to back quotes\n // are removed, so it doesn't look like an escaped quote.\n return precededByQuotedSection\n ? replaced.substring(0, pos - 1) + replaced.substring(pos + 1)\n : replaced\n }, formatStr)\n }\n\n return dateFnsFormat(dirtyDate, formatStr, options)\n}\n","import { useState, useEffect } from 'react';\nimport { endAppt } from '../../utils/API';\nimport { notifyError, notifySuccess } from '../../utils/Toast';\n\nimport createSpeechServicesPonyfill from 'web-speech-cognitive-services';\nimport SpeechRecognition, { useSpeechRecognition } from 'react-speech-recognition';\nimport { confirmAlert } from 'react-confirm-alert';\nimport 'react-confirm-alert/src/react-confirm-alert.css';\n\n// eslint-disable-next-line no-unused-vars\nimport * as sdk from 'microsoft-cognitiveservices-speech-sdk';\n\nimport './SpeechToText.css';\nimport wave from './audio-wave.gif';\n// import { disable } from 'mixpanel-browser';\n\nconst subscriptionKey = process.env.REACT_APP_AZURE_SPEECH_KEY;\nconst serviceRegion = 'eastus';\n\nconst { SpeechRecognition: AzureSpeechRecognition } =\n createSpeechServicesPonyfill({\n credentials: {\n region: serviceRegion,\n subscriptionKey: subscriptionKey,\n },\n });\nSpeechRecognition.applyPolyfill(AzureSpeechRecognition);\n\nconst SpeechToText = ({ patient, callback, /* editNoteData, getDetailsCallback */ }) => {\n let {\n transcript,\n listening,\n resetTranscript,\n // browserSupportsSpeechRecognition,\n } = useSpeechRecognition();\n\n const [text, setText] = useState('');\n\n // set speech transcript to be textarea value\n useEffect(() => {\n setText(transcript);\n }, [transcript]);\n\n // clear inputs and stop listening when patient changes\n useEffect(() => {\n setText('');\n resetTranscript();\n SpeechRecognition.abortListening();\n }, [patient, resetTranscript]);\n\n const startListening = () => {\n SpeechRecognition.startListening({\n continuous: true,\n language: 'en-US',\n });\n }\n\n const stopListening = () => {\n setText(transcript)\n SpeechRecognition.abortListening();\n }\n\n const saveNote = async () => {\n stopListening();\n\n const payload = {\n patientId: patient.patientId,\n triageBpm: '1',\n triageTemp: '1',\n triageDiastolic: '1',\n triageSystolic: '1',\n visitNote: text,\n };\n\n try {\n const soapNote = await endAppt(payload);\n notifySuccess('Patient note saved!');\n const callbackPayload = Object.assign(payload, {visitId: soapNote.visitId});\n if (callback) callback(callbackPayload);\n setText('');\n resetTranscript();\n } catch (error) {\n notifyError('Error saving patient note');\n throw new Error(error);\n }\n }\n\n const confirmEndAppt = () => {\n confirmAlert({\n title: 'Confirm End Patient Visit',\n message: 'Are you sure you want to end this patient visit?',\n buttons: [\n {\n label: 'Yes',\n onClick: () => saveNote(),\n },\n {\n label: 'No',\n onClick: () => {},\n },\n ],\n });\n };\n\n const renderRecordingButtons = (isListening) => {\n return (\n
\n {!isListening ? (\n \n ) : (\n <>\n \"audio\n \n \n )}\n {!isListening ? (\n Click to Start Patient Visit\n ) : (\n Click to End Patient Visit\n )}\n
\n );\n };\n\n const renderNotesPanel = () => {\n return (\n
\n <>\n
\n {renderRecordingButtons(listening)}\n
\n \n
\n );\n };\n\n return (\n <>\n
\n {renderNotesPanel()}\n \n );\n}\n\nexport default SpeechToText;\n","import './Timeline.css';\n\nconst Timeline = ({\n animate = true,\n children,\n className = '',\n lineColor = '#000',\n}) => (\n
\n \n {children}\n
\n \n);\n\nexport default Timeline;\n","import React, { useState } from 'react';\nimport VisibilitySensor from 'react-visibility-sensor';\nimport './TimelineItem.css';\n\nconst TimelineItem = ({\n id = '',\n children = '',\n dateText = '',\n dateStyle = null,\n dateComponent = null,\n dateInnerStyle = null,\n bodyContainerStyle = null,\n style = null,\n className = '',\n visibilitySensorProps = { partialVisibility: true, offset: { bottom: 50 } },\n}) => {\n const [visible, setVisible] = useState(false);\n\n const onVisibilitySensorChange = (isVisible) => {\n if (isVisible) {\n setVisible(true);\n }\n };\n\n return (\n \n \n <>\n
\n
\n {dateComponent !== null ? (\n dateComponent\n ) : (\n \n \n {dateText}\n \n \n )}\n
\n
\n
\n \n {children}\n
\n \n \n \n \n );\n};\n\nexport default TimelineItem;\n","import './Loader.css'\n\nexport default function Loader({small}) {\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
\n
\n
\n
\n
\n
\n
\n\n );\n}\n","const emailRegex = /^(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@((\\[[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}])|(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,}))$/;\nconst urlRegex = /(https?:\\/\\/[^\\s]+)/g;\n\nexport {\n emailRegex,\n urlRegex,\n}","import { useState, useEffect, useRef, Fragment } from 'react';\nimport { utcToZonedTime, format } from 'date-fns-tz';\nimport SpeechToText from '../SpeechToText/SpeechToText';\nimport Timeline from '../Timeline/Timeline';\nimport TimelineItem from '../Timeline/TimelineItem';\nimport Loader from '../Loader/Loader';\nimport { urlRegex } from '../../utils/regex';\nimport { notifyError, notifySuccess } from '../../utils/Toast';\nimport { getNoteDetails, updateSoapNote } from '../../utils/API';\nimport './PatientDetails.css';\n\nexport default function PatientDetails({ patient, history, getUpdatedPatientHistory }) {\n const [notesDetails, setNotesDetails] = useState({});\n const [editNoteData, setEditNoteData] = useState(null);\n const [ribbonItems, setRibbonItems] = useState([]);\n const [showReferences, setShowReferences] = useState(false);\n const [showDischargeSummary, setShowDischargeSummary] = useState(false);\n const [showDischargeInstructions, setShowDischargeInstructions] = useState(false);\n const [showCodes, setShowCodes] = useState(false);\n const [showSuperbill, setShowSuperbill] = useState(false);\n const [showEditModal, setShowEditModal] = useState(false);\n\n const timelineRef = useRef(null);\n\n const visitSummaryIsLoading = (summary) => {\n return summary === 'RibbonMD AI is generating summary... beep beep boop !';\n };\n\n useEffect(() => {\n if (history[0] && history[0].visitSummary && visitSummaryIsLoading(history[0].visitSummary)) {\n const fetchData = async () => {\n const newHistory = await getUpdatedPatientHistory(patient.patientId);\n return newHistory;\n };\n\n setTimeout(() => {\n const newHistory = fetchData();\n if (\n newHistory &&\n Array.isArray(newHistory) &&\n !visitSummaryIsLoading(newHistory[0].visitSummary)\n ) {\n setRibbonItems(newHistory);\n }\n }, 60000);\n }\n setShowCodes(false);\n setShowSuperbill(false);\n setShowReferences(false);\n setShowDischargeSummary(false);\n setShowDischargeInstructions(false);\n setNotesDetails({});\n setRibbonItems(history);\n }, [history, getUpdatedPatientHistory, patient]);\n\n const getVisitDetails = async (id) => {\n try {\n const visitDetails = await getNoteDetails(id);\n setNotesDetails({\n id,\n soap: visitDetails.visitSoapNote,\n subjective: visitDetails.visitSubjective,\n objective: visitDetails.visitObjective,\n assessment: visitDetails.visitAssessment,\n plan: visitDetails.visitPlan,\n superbill: visitDetails.visitSuperbill,\n codes: visitDetails.visitIcdCodes,\n reference: visitDetails.visitReference,\n dischargeSummary: visitDetails.visitDischargeSummary,\n dischargeInstructions: visitDetails.visitDischargeInstructions,\n });\n } catch (error) {\n throw new Error(error);\n }\n };\n\n const editCallback = id => {\n getVisitDetails(id);\n setEditNoteData(null);\n };\n\n const copyToClipboard = async (item) => {\n let text = notesDetails.soap;\n if (item) text = item;\n if ('clipboard' in navigator) {\n return await navigator.clipboard.writeText(text);\n } else {\n return document.execCommand('copy', true, text);\n }\n };\n\n const addItemToRibbon = (newNote) => {\n let date = new Date();\n date.setHours(date.getHours() + 4);\n const newRibbonItem = {\n visitDate: date,\n visitId: newNote.visitId || date, // date is used as a placeholder for new notes\n triageBpm: newNote.triageBpm,\n triageDiastolic: newNote.triageDiastolic,\n triageSystolic: newNote.triageSystolic,\n triageTemp: newNote.triageTemp,\n visitSummary: 'RibbonMD AI is generating summary... beep beep boop !',\n subjective: newNote.visitSubjective,\n objective: newNote.visitObjective,\n assessment: newNote.visitAssessment,\n soap: newNote.visitSoapNote,\n plan: newNote.visitPlan,\n };\n setNotesDetails({\n id: newNote.visitId || date,\n subjective: newNote.visitSubjective,\n objective: newNote.visitObjective,\n assessment: newNote.visitAssessment,\n plan: newNote.visitPlan,\n soap: newNote.visitSoapNote,\n });\n setRibbonItems([\n newRibbonItem,\n ...ribbonItems\n ]);\n\n setTimeout(() => {\n const newHistory = getUpdatedPatientHistory(patient.patientId);\n setRibbonItems(newHistory);\n }, 3000);\n };\n\n const editNote = async (note) => {\n let fullNoteData = note;\n try {\n const visitDetails = await getNoteDetails(note.visitId);\n fullNoteData = Object.assign(fullNoteData, visitDetails);\n setEditNoteData(fullNoteData);\n timelineRef.current.scrollTo({ top: 0, behavior: 'smooth' });\n } catch (error) {\n throw new Error(error);\n }\n setShowEditModal(true);\n };\n\n const editModal = () => {\n return (\n
\n
\n
\n \n \n setEditNoteData({\n ...editNoteData,\n visitSoapNote: e.target.value,\n })\n }\n >\n
\n {\n e.preventDefault();\n saveEditNote();\n }}\n className=\"cta\"\n >\n Save\n \n {\n e.preventDefault();\n setShowEditModal(false);\n }}\n className=\"cta-red\"\n >\n Cancel\n \n
\n \n
\n
\n );\n }\n\n const saveEditNote = async () => {\n const updateNotePayload = {\n visitSoapNote: editNoteData.visitSoapNote,\n visitId: editNoteData.visitId,\n };\n try {\n await updateSoapNote(updateNotePayload);\n notifySuccess('Patient note updated!');\n } catch (error) {\n notifyError('Error updating patient note');\n throw new Error(error);\n } finally {\n const newHistory = await getUpdatedPatientHistory(\n patient.patientId\n );\n setRibbonItems(newHistory);\n setNotesDetails({});\n // getVisitDetails(updateNotePayload.visitId);\n setEditNoteData(null);\n setShowEditModal(false);\n }\n };\n\n const renderList = (list, listName) => {\n if (!list) return null;\n try {\n const parsedList = JSON.parse(list);\n if (Array.isArray(parsedList) && parsedList.length) {\n return (\n \n
\n {listName && {listName} }\n {parsedList.map((item, index) => (\n \n {item}\n {index < parsedList.length - 1 && ', '}\n \n ))}\n
\n );\n }\n } catch (error) {\n return list;\n }\n };\n\n const linkify = (text) => {\n if (!text) return null;\n // Split and render text and links\n return text.split(urlRegex).map((part, index) => {\n if (part.match(urlRegex)) {\n // Extract the URL\n const url = part.match(urlRegex)[0];\n // Render the link\n return (\n \n {url}\n \n );\n } else {\n // Render the regular text\n return part;\n }\n });\n }\n\nconst renderBoldHeadings = (text) => {\n if (!text) return null;\n // Split the text by new lines\n const parts = text.split('\\n').map((line, index) => {\n // Check if the line is a heading (separated by multiple new lines and doesn't begin with a dash)\n if (line.trim() !== '' && !line.trim().startsWith('-')) {\n return {line};\n } else {\n return line;\n }\n });\n\n // Combine the parts back, ensuring to keep the line breaks\n return parts.map((part, index) => (\n \n {/*
*/}\n {part}\n
\n
\n ));\n}\n\n const renderReference = (string) => {\n if (string) {\n return (\n \n
\n {linkify(string)}\n
\n
\n );\n }\n };\n\n const toggleReferences = (e, bool, hookName) => {\n e.stopPropagation();\n if (bool) {\n hookName(true);\n } else {\n hookName(false);\n }\n };\n\n const renderSoapNote = (soapNote) => {\n const noteSegments = soapNote.split('\\n\\n');\n noteSegments.shift();\n const splitNote = noteSegments.flatMap((segment) => {\n return segment.split(\n /(Subjective:|Objective:|Assessment:|Plan:|S:|O:|A:|P:)/\n );\n });\n\n const renderedSoapNote = splitNote.map((item, index) => {\n if (\n item === 'Subjective:' ||\n item === 'Objective:' ||\n item === 'Assessment:' ||\n item === 'Plan:' ||\n item === 'S:' ||\n item === 'O:' ||\n item === 'A:' ||\n item === 'P:'\n ) {\n return

{item}

;\n } else if (item === '') {\n return null;\n } else {\n return (\n
\n {item}\n
\n
\n );\n }\n });\n return renderedSoapNote;\n };\n\n const generateRibbonItems = (patientHistory) => {\n return patientHistory.map((item, index) => {\n const localTimezone = Intl.DateTimeFormat().resolvedOptions().timeZone;\n const appointmentDateTimeUTC = new Date(item.visitDate + ' UTC');\n const appointmentDateTimeLocal = utcToZonedTime(\n appointmentDateTimeUTC,\n localTimezone\n );\n const appointmentDateTimeFormatted = format(\n appointmentDateTimeLocal,\n 'MM/dd/yyyy @ h:mm a'\n );\n return (\n \n {\n getVisitDetails(item.visitId);\n }}\n >\n {visitSummaryIsLoading(item.visitSummary) ? null : (\n editNote(item)}>\n \n   EDIT NOTE\n \n )}\n\n
\n {visitSummaryIsLoading(item.visitSummary) ? (\n

Loading...

\n ) : (\n

Summary:

\n )}\n {visitSummaryIsLoading(item.visitSummary) ? (\n \n ) : (\n renderList(item.visitSummary)\n )}\n {notesDetails.id !== item.visitId ? (\n <>\n
\n \n ) : null}\n
\n {notesDetails.id === item.visitId ? (\n
\n
\n
\n\n
\n {notesDetails.soap && (\n copyToClipboard()}>\n \n   COPY SOAP NOTE\n \n )}\n {notesDetails.soap && renderSoapNote(notesDetails.soap)}\n\n \n toggleReferences(e, !showCodes, setShowCodes)\n }\n >\n BILLING CODES\n \n {showCodes && (\n copyToClipboard(notesDetails.codes)}\n >\n \n   COPY BILLING CODES\n \n )}\n {/* {showCodes && renderReference(notesDetails.codes)} */}\n {showCodes && (
)}\n {showCodes && renderBoldHeadings(notesDetails.codes)}\n {!showCodes &&
}\n\n \n toggleReferences(e, !showSuperbill, setShowSuperbill)\n }\n >\n SUPER BILL\n \n {showSuperbill && (\n copyToClipboard(notesDetails.superbill)}\n >\n \n   COPY SUPER BILL\n \n )}\n {showSuperbill && (
)}\n {showSuperbill && renderBoldHeadings(notesDetails.superbill)}\n {!showSuperbill &&
}\n\n \n toggleReferences(e, !showReferences, setShowReferences)\n }\n >\n AI REFERENCE NOTES\n \n {showReferences && (\n copyToClipboard(notesDetails.reference)}\n >\n \n   COPY AI REFERENCE NOTES\n \n )}\n {showReferences && renderReference(notesDetails.reference)}\n {!showReferences &&
}\n\n \n toggleReferences(\n e,\n !showDischargeSummary,\n setShowDischargeSummary\n )\n }\n >\n DISCHARGE SUMMARY\n \n {showDischargeSummary && (\n \n copyToClipboard(notesDetails.dischargeSummary)\n }\n >\n \n   COPY DISCHARGE SUMMARY\n \n )}\n {showDischargeSummary && (
)}\n {showDischargeSummary &&\n renderBoldHeadings(notesDetails.dischargeSummary)}\n {!showDischargeSummary &&
}\n\n \n toggleReferences(\n e,\n !showDischargeInstructions,\n setShowDischargeInstructions\n )\n }\n >\n DISCHARGE INSTRUCTIONS\n \n {showDischargeInstructions && (\n \n copyToClipboard(notesDetails.dischargeInstructions)\n }\n >\n \n   COPY DISCHARGE INSTRUCTIONS\n \n )}\n {showDischargeInstructions && (
)}\n {showDischargeInstructions &&\n renderBoldHeadings(notesDetails.dischargeInstructions)}\n
\n
\n ) : null}\n \n Note Saved by {item.visitDoctor} on {appointmentDateTimeFormatted}\n \n \n \n );\n });\n };\n\n const renderPatientInfo = () => {\n // hack b/c api is sending only first 2 characters for w/e reason.\n const displayGender = (gender) => {\n const genderLowerCase = gender.toLowerCase();\n if (genderLowerCase === 'ma' || genderLowerCase === 'm') {\n return 'Male';\n } else if (genderLowerCase === 'fe' || genderLowerCase === 'f') {\n return 'Female';\n } else {\n return gender;\n }\n };\n\n const displayAllergies = (patientAllergies) => {\n const allergies = patientAllergies.toUpperCase();\n if (allergies === 'N/A') {\n return 'NONE';\n } else if (allergies === '[]') {\n return 'NONE';\n } else {\n return allergies;\n }\n };\n\n return (\n
\n {/* */}\n

{`${patient.patientFname} ${patient.patientLname}`}

\n Age: {patient.patientAge || '35'} - \n Sex: {displayGender(patient.patientGender)} \n
\n \n ALLERGIES: {displayAllergies(patient.patientAllergies)}\n \n
\n );\n };\n\n return !patient || !ribbonItems ? null : (\n
\n {renderPatientInfo()}\n
\n {showEditModal ? editModal() : (\n \n )}\n {!ribbonItems.length ? (\n

No Patient History

\n ) : (\n \n {generateRibbonItems(ribbonItems)}\n \n )}\n
\n
\n );\n}\n","import tzParseTimezone from '../_lib/tzParseTimezone/index.js'\nimport toDate from '../toDate/index.js'\n\n/**\n * @name utcToZonedTime\n * @category Time Zone Helpers\n * @summary Get a date/time representing local time in a given time zone from the UTC date\n *\n * @description\n * Returns a date instance with values representing the local time in the time zone\n * specified of the UTC time from the date provided. In other words, when the new date\n * is formatted it will show the equivalent hours in the target time zone regardless\n * of the current system time zone.\n *\n * @param {Date|String|Number} date - the date with the relevant UTC time\n * @param {String} timeZone - the time zone to get local time for, can be an offset or IANA time zone\n * @param {OptionsWithTZ} [options] - the object with options. See [Options]{@link https://date-fns.org/docs/Options}\n * @param {0|1|2} [options.additionalDigits=2] - passed to `toDate`. See [toDate]{@link https://date-fns.org/docs/toDate}\n * @returns {Date} the new date with the equivalent time in the time zone\n * @throws {TypeError} 2 arguments required\n * @throws {RangeError} `options.additionalDigits` must be 0, 1 or 2\n *\n * @example\n * // In June 10am UTC is 6am in New York (-04:00)\n * const result = utcToZonedTime('2014-06-25T10:00:00.000Z', 'America/New_York')\n * //=> Jun 25 2014 06:00:00\n */\nexport default function utcToZonedTime(dirtyDate, timeZone, options) {\n var date = toDate(dirtyDate, options)\n\n var offsetMilliseconds = tzParseTimezone(timeZone, date, true)\n\n var d = new Date(date.getTime() - offsetMilliseconds)\n\n var resultDate = new Date(0)\n\n resultDate.setFullYear(d.getUTCFullYear(), d.getUTCMonth(), d.getUTCDate())\n\n resultDate.setHours(d.getUTCHours(), d.getUTCMinutes(), d.getUTCSeconds(), d.getUTCMilliseconds())\n\n return resultDate\n}\n","import { useState } from 'react';\nimport { useLoaderData, useRevalidator } from 'react-router-dom';\nimport NewPatient from '../components/Patient/NewPatient';\nimport PatientDetails from '../components/Patient/PatientDetails';\nimport { getPatientRibbon } from '../utils/API';\n\nexport default function Patient() {\n const [selectedPatient, setSelectedPatient] = useState(null);\n const [patientHistory, setPatientHistory] = useState([]);\n const [showNewPatient, setShowNewPatient] = useState(false);\n const [filteredPatients, setFilteredPatients] = useState([]);\n const { patients } = useLoaderData();\n const revalidator = useRevalidator();\n\n const getPatientHistory = async (id) => {\n setPatientHistory([]);\n try {\n const patientRibbon = await getPatientRibbon(id);\n setPatientHistory(patientRibbon);\n } catch (error) {\n throw new Error(error);\n }\n };\n\n const handleSelectPatient = async (id) => {\n const patient = patients.find((patient) => patient.patientId === id);\n setSelectedPatient(patient);\n getPatientHistory(id);\n setShowNewPatient(false);\n };\n\n const filterPatients = (searchTerm) => {\n const filteredPatients = patients.filter((patient) => {\n const fullName = `${patient.patientFname} ${patient.patientLname}`;\n return fullName.toLowerCase().includes(searchTerm.toLowerCase());\n });\n setFilteredPatients(filteredPatients);\n };\n\n const renderPatients = () => {\n const list = filteredPatients.length\n ? filteredPatients\n : patients || [];\n\n return list.map((patient, index) => (\n handleSelectPatient(patient.patientId)}\n key={index}\n className={\n selectedPatient &&\n selectedPatient.patientId === patient.patientId\n ? 'active'\n : null\n }\n >\n {patient.patientFname} {patient.patientLname}\n \n ));\n\n };\n\n return (\n
\n
\n

Patients

\n \n
\n\n {showNewPatient ? (\n
\n setShowNewPatient(false)} updatePatientList={() => revalidator.revalidate()} />\n
\n ) : (\n
\n {!selectedPatient || !patientHistory ? (\n
\n

\n Please Select a Patient from the Left.\n

\n
\n ) : (\n \n )}\n
\n )}\n
\n );\n}\n","import _objectSpread from '@babel/runtime/helpers/esm/objectSpread2';\nimport _slicedToArray from '@babel/runtime/helpers/esm/slicedToArray';\nimport _objectWithoutProperties from '@babel/runtime/helpers/esm/objectWithoutProperties';\nimport { useState, useCallback } from 'react';\n\nvar _excluded = [\"defaultInputValue\", \"defaultMenuIsOpen\", \"defaultValue\", \"inputValue\", \"menuIsOpen\", \"onChange\", \"onInputChange\", \"onMenuClose\", \"onMenuOpen\", \"value\"];\nfunction useStateManager(_ref) {\n var _ref$defaultInputValu = _ref.defaultInputValue,\n defaultInputValue = _ref$defaultInputValu === void 0 ? '' : _ref$defaultInputValu,\n _ref$defaultMenuIsOpe = _ref.defaultMenuIsOpen,\n defaultMenuIsOpen = _ref$defaultMenuIsOpe === void 0 ? false : _ref$defaultMenuIsOpe,\n _ref$defaultValue = _ref.defaultValue,\n defaultValue = _ref$defaultValue === void 0 ? null : _ref$defaultValue,\n propsInputValue = _ref.inputValue,\n propsMenuIsOpen = _ref.menuIsOpen,\n propsOnChange = _ref.onChange,\n propsOnInputChange = _ref.onInputChange,\n propsOnMenuClose = _ref.onMenuClose,\n propsOnMenuOpen = _ref.onMenuOpen,\n propsValue = _ref.value,\n restSelectProps = _objectWithoutProperties(_ref, _excluded);\n var _useState = useState(propsInputValue !== undefined ? propsInputValue : defaultInputValue),\n _useState2 = _slicedToArray(_useState, 2),\n stateInputValue = _useState2[0],\n setStateInputValue = _useState2[1];\n var _useState3 = useState(propsMenuIsOpen !== undefined ? propsMenuIsOpen : defaultMenuIsOpen),\n _useState4 = _slicedToArray(_useState3, 2),\n stateMenuIsOpen = _useState4[0],\n setStateMenuIsOpen = _useState4[1];\n var _useState5 = useState(propsValue !== undefined ? propsValue : defaultValue),\n _useState6 = _slicedToArray(_useState5, 2),\n stateValue = _useState6[0],\n setStateValue = _useState6[1];\n var onChange = useCallback(function (value, actionMeta) {\n if (typeof propsOnChange === 'function') {\n propsOnChange(value, actionMeta);\n }\n setStateValue(value);\n }, [propsOnChange]);\n var onInputChange = useCallback(function (value, actionMeta) {\n var newValue;\n if (typeof propsOnInputChange === 'function') {\n newValue = propsOnInputChange(value, actionMeta);\n }\n setStateInputValue(newValue !== undefined ? newValue : value);\n }, [propsOnInputChange]);\n var onMenuOpen = useCallback(function () {\n if (typeof propsOnMenuOpen === 'function') {\n propsOnMenuOpen();\n }\n setStateMenuIsOpen(true);\n }, [propsOnMenuOpen]);\n var onMenuClose = useCallback(function () {\n if (typeof propsOnMenuClose === 'function') {\n propsOnMenuClose();\n }\n setStateMenuIsOpen(false);\n }, [propsOnMenuClose]);\n var inputValue = propsInputValue !== undefined ? propsInputValue : stateInputValue;\n var menuIsOpen = propsMenuIsOpen !== undefined ? propsMenuIsOpen : stateMenuIsOpen;\n var value = propsValue !== undefined ? propsValue : stateValue;\n return _objectSpread(_objectSpread({}, restSelectProps), {}, {\n inputValue: inputValue,\n menuIsOpen: menuIsOpen,\n onChange: onChange,\n onInputChange: onInputChange,\n onMenuClose: onMenuClose,\n onMenuOpen: onMenuOpen,\n value: value\n });\n}\n\nexport { useStateManager as u };\n","export default function _extends() {\n _extends = Object.assign ? Object.assign.bind() : function (target) {\n for (var i = 1; i < arguments.length; i++) {\n var source = arguments[i];\n for (var key in source) {\n if (Object.prototype.hasOwnProperty.call(source, key)) {\n target[key] = source[key];\n }\n }\n }\n return target;\n };\n return _extends.apply(this, arguments);\n}","/*\n\nBased off glamor's StyleSheet, thanks Sunil ❤️\n\nhigh performance StyleSheet for css-in-js systems\n\n- uses multiple style tags behind the scenes for millions of rules\n- uses `insertRule` for appending in production for *much* faster performance\n\n// usage\n\nimport { StyleSheet } from '@emotion/sheet'\n\nlet styleSheet = new StyleSheet({ key: '', container: document.head })\n\nstyleSheet.insert('#box { border: 1px solid red; }')\n- appends a css rule into the stylesheet\n\nstyleSheet.flush()\n- empties the stylesheet of all its contents\n\n*/\n// $FlowFixMe\nfunction sheetForTag(tag) {\n if (tag.sheet) {\n // $FlowFixMe\n return tag.sheet;\n } // this weirdness brought to you by firefox\n\n /* istanbul ignore next */\n\n\n for (var i = 0; i < document.styleSheets.length; i++) {\n if (document.styleSheets[i].ownerNode === tag) {\n // $FlowFixMe\n return document.styleSheets[i];\n }\n }\n}\n\nfunction createStyleElement(options) {\n var tag = document.createElement('style');\n tag.setAttribute('data-emotion', options.key);\n\n if (options.nonce !== undefined) {\n tag.setAttribute('nonce', options.nonce);\n }\n\n tag.appendChild(document.createTextNode(''));\n tag.setAttribute('data-s', '');\n return tag;\n}\n\nvar StyleSheet = /*#__PURE__*/function () {\n // Using Node instead of HTMLElement since container may be a ShadowRoot\n function StyleSheet(options) {\n var _this = this;\n\n this._insertTag = function (tag) {\n var before;\n\n if (_this.tags.length === 0) {\n if (_this.insertionPoint) {\n before = _this.insertionPoint.nextSibling;\n } else if (_this.prepend) {\n before = _this.container.firstChild;\n } else {\n before = _this.before;\n }\n } else {\n before = _this.tags[_this.tags.length - 1].nextSibling;\n }\n\n _this.container.insertBefore(tag, before);\n\n _this.tags.push(tag);\n };\n\n this.isSpeedy = options.speedy === undefined ? process.env.NODE_ENV === 'production' : options.speedy;\n this.tags = [];\n this.ctr = 0;\n this.nonce = options.nonce; // key is the value of the data-emotion attribute, it's used to identify different sheets\n\n this.key = options.key;\n this.container = options.container;\n this.prepend = options.prepend;\n this.insertionPoint = options.insertionPoint;\n this.before = null;\n }\n\n var _proto = StyleSheet.prototype;\n\n _proto.hydrate = function hydrate(nodes) {\n nodes.forEach(this._insertTag);\n };\n\n _proto.insert = function insert(rule) {\n // the max length is how many rules we have per style tag, it's 65000 in speedy mode\n // it's 1 in dev because we insert source maps that map a single rule to a location\n // and you can only have one source map per style tag\n if (this.ctr % (this.isSpeedy ? 65000 : 1) === 0) {\n this._insertTag(createStyleElement(this));\n }\n\n var tag = this.tags[this.tags.length - 1];\n\n if (process.env.NODE_ENV !== 'production') {\n var isImportRule = rule.charCodeAt(0) === 64 && rule.charCodeAt(1) === 105;\n\n if (isImportRule && this._alreadyInsertedOrderInsensitiveRule) {\n // this would only cause problem in speedy mode\n // but we don't want enabling speedy to affect the observable behavior\n // so we report this error at all times\n console.error(\"You're attempting to insert the following rule:\\n\" + rule + '\\n\\n`@import` rules must be before all other types of rules in a stylesheet but other rules have already been inserted. Please ensure that `@import` rules are before all other rules.');\n }\n this._alreadyInsertedOrderInsensitiveRule = this._alreadyInsertedOrderInsensitiveRule || !isImportRule;\n }\n\n if (this.isSpeedy) {\n var sheet = sheetForTag(tag);\n\n try {\n // this is the ultrafast version, works across browsers\n // the big drawback is that the css won't be editable in devtools\n sheet.insertRule(rule, sheet.cssRules.length);\n } catch (e) {\n if (process.env.NODE_ENV !== 'production' && !/:(-moz-placeholder|-moz-focus-inner|-moz-focusring|-ms-input-placeholder|-moz-read-write|-moz-read-only|-ms-clear|-ms-expand|-ms-reveal){/.test(rule)) {\n console.error(\"There was a problem inserting the following rule: \\\"\" + rule + \"\\\"\", e);\n }\n }\n } else {\n tag.appendChild(document.createTextNode(rule));\n }\n\n this.ctr++;\n };\n\n _proto.flush = function flush() {\n // $FlowFixMe\n this.tags.forEach(function (tag) {\n return tag.parentNode && tag.parentNode.removeChild(tag);\n });\n this.tags = [];\n this.ctr = 0;\n\n if (process.env.NODE_ENV !== 'production') {\n this._alreadyInsertedOrderInsensitiveRule = false;\n }\n };\n\n return StyleSheet;\n}();\n\nexport { StyleSheet };\n","/**\n * @param {number}\n * @return {number}\n */\nexport var abs = Math.abs\n\n/**\n * @param {number}\n * @return {string}\n */\nexport var from = String.fromCharCode\n\n/**\n * @param {object}\n * @return {object}\n */\nexport var assign = Object.assign\n\n/**\n * @param {string} value\n * @param {number} length\n * @return {number}\n */\nexport function hash (value, length) {\n\treturn charat(value, 0) ^ 45 ? (((((((length << 2) ^ charat(value, 0)) << 2) ^ charat(value, 1)) << 2) ^ charat(value, 2)) << 2) ^ charat(value, 3) : 0\n}\n\n/**\n * @param {string} value\n * @return {string}\n */\nexport function trim (value) {\n\treturn value.trim()\n}\n\n/**\n * @param {string} value\n * @param {RegExp} pattern\n * @return {string?}\n */\nexport function match (value, pattern) {\n\treturn (value = pattern.exec(value)) ? value[0] : value\n}\n\n/**\n * @param {string} value\n * @param {(string|RegExp)} pattern\n * @param {string} replacement\n * @return {string}\n */\nexport function replace (value, pattern, replacement) {\n\treturn value.replace(pattern, replacement)\n}\n\n/**\n * @param {string} value\n * @param {string} search\n * @return {number}\n */\nexport function indexof (value, search) {\n\treturn value.indexOf(search)\n}\n\n/**\n * @param {string} value\n * @param {number} index\n * @return {number}\n */\nexport function charat (value, index) {\n\treturn value.charCodeAt(index) | 0\n}\n\n/**\n * @param {string} value\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function substr (value, begin, end) {\n\treturn value.slice(begin, end)\n}\n\n/**\n * @param {string} value\n * @return {number}\n */\nexport function strlen (value) {\n\treturn value.length\n}\n\n/**\n * @param {any[]} value\n * @return {number}\n */\nexport function sizeof (value) {\n\treturn value.length\n}\n\n/**\n * @param {any} value\n * @param {any[]} array\n * @return {any}\n */\nexport function append (value, array) {\n\treturn array.push(value), value\n}\n\n/**\n * @param {string[]} array\n * @param {function} callback\n * @return {string}\n */\nexport function combine (array, callback) {\n\treturn array.map(callback).join('')\n}\n","import {from, trim, charat, strlen, substr, append, assign} from './Utility.js'\n\nexport var line = 1\nexport var column = 1\nexport var length = 0\nexport var position = 0\nexport var character = 0\nexport var characters = ''\n\n/**\n * @param {string} value\n * @param {object | null} root\n * @param {object | null} parent\n * @param {string} type\n * @param {string[] | string} props\n * @param {object[] | string} children\n * @param {number} length\n */\nexport function node (value, root, parent, type, props, children, length) {\n\treturn {value: value, root: root, parent: parent, type: type, props: props, children: children, line: line, column: column, length: length, return: ''}\n}\n\n/**\n * @param {object} root\n * @param {object} props\n * @return {object}\n */\nexport function copy (root, props) {\n\treturn assign(node('', null, null, '', null, null, 0), root, {length: -root.length}, props)\n}\n\n/**\n * @return {number}\n */\nexport function char () {\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function prev () {\n\tcharacter = position > 0 ? charat(characters, --position) : 0\n\n\tif (column--, character === 10)\n\t\tcolumn = 1, line--\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function next () {\n\tcharacter = position < length ? charat(characters, position++) : 0\n\n\tif (column++, character === 10)\n\t\tcolumn = 1, line++\n\n\treturn character\n}\n\n/**\n * @return {number}\n */\nexport function peek () {\n\treturn charat(characters, position)\n}\n\n/**\n * @return {number}\n */\nexport function caret () {\n\treturn position\n}\n\n/**\n * @param {number} begin\n * @param {number} end\n * @return {string}\n */\nexport function slice (begin, end) {\n\treturn substr(characters, begin, end)\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function token (type) {\n\tswitch (type) {\n\t\t// \\0 \\t \\n \\r \\s whitespace token\n\t\tcase 0: case 9: case 10: case 13: case 32:\n\t\t\treturn 5\n\t\t// ! + , / > @ ~ isolate token\n\t\tcase 33: case 43: case 44: case 47: case 62: case 64: case 126:\n\t\t// ; { } breakpoint token\n\t\tcase 59: case 123: case 125:\n\t\t\treturn 4\n\t\t// : accompanied token\n\t\tcase 58:\n\t\t\treturn 3\n\t\t// \" ' ( [ opening delimit token\n\t\tcase 34: case 39: case 40: case 91:\n\t\t\treturn 2\n\t\t// ) ] closing delimit token\n\t\tcase 41: case 93:\n\t\t\treturn 1\n\t}\n\n\treturn 0\n}\n\n/**\n * @param {string} value\n * @return {any[]}\n */\nexport function alloc (value) {\n\treturn line = column = 1, length = strlen(characters = value), position = 0, []\n}\n\n/**\n * @param {any} value\n * @return {any}\n */\nexport function dealloc (value) {\n\treturn characters = '', value\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function delimit (type) {\n\treturn trim(slice(position - 1, delimiter(type === 91 ? type + 2 : type === 40 ? type + 1 : type)))\n}\n\n/**\n * @param {string} value\n * @return {string[]}\n */\nexport function tokenize (value) {\n\treturn dealloc(tokenizer(alloc(value)))\n}\n\n/**\n * @param {number} type\n * @return {string}\n */\nexport function whitespace (type) {\n\twhile (character = peek())\n\t\tif (character < 33)\n\t\t\tnext()\n\t\telse\n\t\t\tbreak\n\n\treturn token(type) > 2 || token(character) > 3 ? '' : ' '\n}\n\n/**\n * @param {string[]} children\n * @return {string[]}\n */\nexport function tokenizer (children) {\n\twhile (next())\n\t\tswitch (token(character)) {\n\t\t\tcase 0: append(identifier(position - 1), children)\n\t\t\t\tbreak\n\t\t\tcase 2: append(delimit(character), children)\n\t\t\t\tbreak\n\t\t\tdefault: append(from(character), children)\n\t\t}\n\n\treturn children\n}\n\n/**\n * @param {number} index\n * @param {number} count\n * @return {string}\n */\nexport function escaping (index, count) {\n\twhile (--count && next())\n\t\t// not 0-9 A-F a-f\n\t\tif (character < 48 || character > 102 || (character > 57 && character < 65) || (character > 70 && character < 97))\n\t\t\tbreak\n\n\treturn slice(index, caret() + (count < 6 && peek() == 32 && next() == 32))\n}\n\n/**\n * @param {number} type\n * @return {number}\n */\nexport function delimiter (type) {\n\twhile (next())\n\t\tswitch (character) {\n\t\t\t// ] ) \" '\n\t\t\tcase type:\n\t\t\t\treturn position\n\t\t\t// \" '\n\t\t\tcase 34: case 39:\n\t\t\t\tif (type !== 34 && type !== 39)\n\t\t\t\t\tdelimiter(character)\n\t\t\t\tbreak\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (type === 41)\n\t\t\t\t\tdelimiter(type)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tnext()\n\t\t\t\tbreak\n\t\t}\n\n\treturn position\n}\n\n/**\n * @param {number} type\n * @param {number} index\n * @return {number}\n */\nexport function commenter (type, index) {\n\twhile (next())\n\t\t// //\n\t\tif (type + character === 47 + 10)\n\t\t\tbreak\n\t\t// /*\n\t\telse if (type + character === 42 + 42 && peek() === 47)\n\t\t\tbreak\n\n\treturn '/*' + slice(index, position - 1) + '*' + from(type === 47 ? type : next())\n}\n\n/**\n * @param {number} index\n * @return {string}\n */\nexport function identifier (index) {\n\twhile (!token(peek()))\n\t\tnext()\n\n\treturn slice(index, position)\n}\n","export var MS = '-ms-'\nexport var MOZ = '-moz-'\nexport var WEBKIT = '-webkit-'\n\nexport var COMMENT = 'comm'\nexport var RULESET = 'rule'\nexport var DECLARATION = 'decl'\n\nexport var PAGE = '@page'\nexport var MEDIA = '@media'\nexport var IMPORT = '@import'\nexport var CHARSET = '@charset'\nexport var VIEWPORT = '@viewport'\nexport var SUPPORTS = '@supports'\nexport var DOCUMENT = '@document'\nexport var NAMESPACE = '@namespace'\nexport var KEYFRAMES = '@keyframes'\nexport var FONT_FACE = '@font-face'\nexport var COUNTER_STYLE = '@counter-style'\nexport var FONT_FEATURE_VALUES = '@font-feature-values'\nexport var LAYER = '@layer'\n","import {IMPORT, LAYER, COMMENT, RULESET, DECLARATION, KEYFRAMES} from './Enum.js'\nimport {strlen, sizeof} from './Utility.js'\n\n/**\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function serialize (children, callback) {\n\tvar output = ''\n\tvar length = sizeof(children)\n\n\tfor (var i = 0; i < length; i++)\n\t\toutput += callback(children[i], i, children, callback) || ''\n\n\treturn output\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n * @return {string}\n */\nexport function stringify (element, index, children, callback) {\n\tswitch (element.type) {\n\t\tcase LAYER: if (element.children.length) break\n\t\tcase IMPORT: case DECLARATION: return element.return = element.return || element.value\n\t\tcase COMMENT: return ''\n\t\tcase KEYFRAMES: return element.return = element.value + '{' + serialize(element.children, callback) + '}'\n\t\tcase RULESET: element.value = element.props.join(',')\n\t}\n\n\treturn strlen(children = serialize(element.children, callback)) ? element.return = element.value + '{' + children + '}' : ''\n}\n","import {COMMENT, RULESET, DECLARATION} from './Enum.js'\nimport {abs, charat, trim, from, sizeof, strlen, substr, append, replace, indexof} from './Utility.js'\nimport {node, char, prev, next, peek, caret, alloc, dealloc, delimit, whitespace, escaping, identifier, commenter} from './Tokenizer.js'\n\n/**\n * @param {string} value\n * @return {object[]}\n */\nexport function compile (value) {\n\treturn dealloc(parse('', null, null, null, [''], value = alloc(value), 0, [0], value))\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {string[]} rule\n * @param {string[]} rules\n * @param {string[]} rulesets\n * @param {number[]} pseudo\n * @param {number[]} points\n * @param {string[]} declarations\n * @return {object}\n */\nexport function parse (value, root, parent, rule, rules, rulesets, pseudo, points, declarations) {\n\tvar index = 0\n\tvar offset = 0\n\tvar length = pseudo\n\tvar atrule = 0\n\tvar property = 0\n\tvar previous = 0\n\tvar variable = 1\n\tvar scanning = 1\n\tvar ampersand = 1\n\tvar character = 0\n\tvar type = ''\n\tvar props = rules\n\tvar children = rulesets\n\tvar reference = rule\n\tvar characters = type\n\n\twhile (scanning)\n\t\tswitch (previous = character, character = next()) {\n\t\t\t// (\n\t\t\tcase 40:\n\t\t\t\tif (previous != 108 && charat(characters, length - 1) == 58) {\n\t\t\t\t\tif (indexof(characters += replace(delimit(character), '&', '&\\f'), '&\\f') != -1)\n\t\t\t\t\t\tampersand = -1\n\t\t\t\t\tbreak\n\t\t\t\t}\n\t\t\t// \" ' [\n\t\t\tcase 34: case 39: case 91:\n\t\t\t\tcharacters += delimit(character)\n\t\t\t\tbreak\n\t\t\t// \\t \\n \\r \\s\n\t\t\tcase 9: case 10: case 13: case 32:\n\t\t\t\tcharacters += whitespace(previous)\n\t\t\t\tbreak\n\t\t\t// \\\n\t\t\tcase 92:\n\t\t\t\tcharacters += escaping(caret() - 1, 7)\n\t\t\t\tcontinue\n\t\t\t// /\n\t\t\tcase 47:\n\t\t\t\tswitch (peek()) {\n\t\t\t\t\tcase 42: case 47:\n\t\t\t\t\t\tappend(comment(commenter(next(), caret()), root, parent), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tcharacters += '/'\n\t\t\t\t}\n\t\t\t\tbreak\n\t\t\t// {\n\t\t\tcase 123 * variable:\n\t\t\t\tpoints[index++] = strlen(characters) * ampersand\n\t\t\t// } ; \\0\n\t\t\tcase 125 * variable: case 59: case 0:\n\t\t\t\tswitch (character) {\n\t\t\t\t\t// \\0 }\n\t\t\t\t\tcase 0: case 125: scanning = 0\n\t\t\t\t\t// ;\n\t\t\t\t\tcase 59 + offset: if (ampersand == -1) characters = replace(characters, /\\f/g, '')\n\t\t\t\t\t\tif (property > 0 && (strlen(characters) - length))\n\t\t\t\t\t\t\tappend(property > 32 ? declaration(characters + ';', rule, parent, length - 1) : declaration(replace(characters, ' ', '') + ';', rule, parent, length - 2), declarations)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @ ;\n\t\t\t\t\tcase 59: characters += ';'\n\t\t\t\t\t// { rule/at-rule\n\t\t\t\t\tdefault:\n\t\t\t\t\t\tappend(reference = ruleset(characters, root, parent, index, offset, rules, points, type, props = [], children = [], length), rulesets)\n\n\t\t\t\t\t\tif (character === 123)\n\t\t\t\t\t\t\tif (offset === 0)\n\t\t\t\t\t\t\t\tparse(characters, root, reference, reference, props, rulesets, length, points, children)\n\t\t\t\t\t\t\telse\n\t\t\t\t\t\t\t\tswitch (atrule === 99 && charat(characters, 3) === 110 ? 100 : atrule) {\n\t\t\t\t\t\t\t\t\t// d l m s\n\t\t\t\t\t\t\t\t\tcase 100: case 108: case 109: case 115:\n\t\t\t\t\t\t\t\t\t\tparse(value, reference, reference, rule && append(ruleset(value, reference, reference, 0, 0, rules, points, type, rules, props = [], length), children), rules, children, length, points, rule ? props : children)\n\t\t\t\t\t\t\t\t\t\tbreak\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\tparse(characters, reference, reference, reference, [''], children, 0, points, children)\n\t\t\t\t\t\t\t\t}\n\t\t\t\t}\n\n\t\t\t\tindex = offset = property = 0, variable = ampersand = 1, type = characters = '', length = pseudo\n\t\t\t\tbreak\n\t\t\t// :\n\t\t\tcase 58:\n\t\t\t\tlength = 1 + strlen(characters), property = previous\n\t\t\tdefault:\n\t\t\t\tif (variable < 1)\n\t\t\t\t\tif (character == 123)\n\t\t\t\t\t\t--variable\n\t\t\t\t\telse if (character == 125 && variable++ == 0 && prev() == 125)\n\t\t\t\t\t\tcontinue\n\n\t\t\t\tswitch (characters += from(character), character * variable) {\n\t\t\t\t\t// &\n\t\t\t\t\tcase 38:\n\t\t\t\t\t\tampersand = offset > 0 ? 1 : (characters += '\\f', -1)\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// ,\n\t\t\t\t\tcase 44:\n\t\t\t\t\t\tpoints[index++] = (strlen(characters) - 1) * ampersand, ampersand = 1\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// @\n\t\t\t\t\tcase 64:\n\t\t\t\t\t\t// -\n\t\t\t\t\t\tif (peek() === 45)\n\t\t\t\t\t\t\tcharacters += delimit(next())\n\n\t\t\t\t\t\tatrule = peek(), offset = length = strlen(type = characters += identifier(caret())), character++\n\t\t\t\t\t\tbreak\n\t\t\t\t\t// -\n\t\t\t\t\tcase 45:\n\t\t\t\t\t\tif (previous === 45 && strlen(characters) == 2)\n\t\t\t\t\t\t\tvariable = 0\n\t\t\t\t}\n\t\t}\n\n\treturn rulesets\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} index\n * @param {number} offset\n * @param {string[]} rules\n * @param {number[]} points\n * @param {string} type\n * @param {string[]} props\n * @param {string[]} children\n * @param {number} length\n * @return {object}\n */\nexport function ruleset (value, root, parent, index, offset, rules, points, type, props, children, length) {\n\tvar post = offset - 1\n\tvar rule = offset === 0 ? rules : ['']\n\tvar size = sizeof(rule)\n\n\tfor (var i = 0, j = 0, k = 0; i < index; ++i)\n\t\tfor (var x = 0, y = substr(value, post + 1, post = abs(j = points[i])), z = value; x < size; ++x)\n\t\t\tif (z = trim(j > 0 ? rule[x] + ' ' + y : replace(y, /&\\f/g, rule[x])))\n\t\t\t\tprops[k++] = z\n\n\treturn node(value, root, parent, offset === 0 ? RULESET : type, props, children, length)\n}\n\n/**\n * @param {number} value\n * @param {object} root\n * @param {object?} parent\n * @return {object}\n */\nexport function comment (value, root, parent) {\n\treturn node(value, root, parent, COMMENT, from(char()), substr(value, 2, -2), 0)\n}\n\n/**\n * @param {string} value\n * @param {object} root\n * @param {object?} parent\n * @param {number} length\n * @return {object}\n */\nexport function declaration (value, root, parent, length) {\n\treturn node(value, root, parent, DECLARATION, substr(value, 0, length), substr(value, length + 1, -1), length)\n}\n","import { StyleSheet } from '@emotion/sheet';\nimport { dealloc, alloc, next, token, from, peek, delimit, slice, position, RULESET, combine, match, serialize, copy, replace, WEBKIT, MOZ, MS, KEYFRAMES, DECLARATION, hash, charat, strlen, indexof, stringify, COMMENT, rulesheet, middleware, compile } from 'stylis';\nimport '@emotion/weak-memoize';\nimport '@emotion/memoize';\n\nvar identifierWithPointTracking = function identifierWithPointTracking(begin, points, index) {\n var previous = 0;\n var character = 0;\n\n while (true) {\n previous = character;\n character = peek(); // &\\f\n\n if (previous === 38 && character === 12) {\n points[index] = 1;\n }\n\n if (token(character)) {\n break;\n }\n\n next();\n }\n\n return slice(begin, position);\n};\n\nvar toRules = function toRules(parsed, points) {\n // pretend we've started with a comma\n var index = -1;\n var character = 44;\n\n do {\n switch (token(character)) {\n case 0:\n // &\\f\n if (character === 38 && peek() === 12) {\n // this is not 100% correct, we don't account for literal sequences here - like for example quoted strings\n // stylis inserts \\f after & to know when & where it should replace this sequence with the context selector\n // and when it should just concatenate the outer and inner selectors\n // it's very unlikely for this sequence to actually appear in a different context, so we just leverage this fact here\n points[index] = 1;\n }\n\n parsed[index] += identifierWithPointTracking(position - 1, points, index);\n break;\n\n case 2:\n parsed[index] += delimit(character);\n break;\n\n case 4:\n // comma\n if (character === 44) {\n // colon\n parsed[++index] = peek() === 58 ? '&\\f' : '';\n points[index] = parsed[index].length;\n break;\n }\n\n // fallthrough\n\n default:\n parsed[index] += from(character);\n }\n } while (character = next());\n\n return parsed;\n};\n\nvar getRules = function getRules(value, points) {\n return dealloc(toRules(alloc(value), points));\n}; // WeakSet would be more appropriate, but only WeakMap is supported in IE11\n\n\nvar fixedElements = /* #__PURE__ */new WeakMap();\nvar compat = function compat(element) {\n if (element.type !== 'rule' || !element.parent || // positive .length indicates that this rule contains pseudo\n // negative .length indicates that this rule has been already prefixed\n element.length < 1) {\n return;\n }\n\n var value = element.value,\n parent = element.parent;\n var isImplicitRule = element.column === parent.column && element.line === parent.line;\n\n while (parent.type !== 'rule') {\n parent = parent.parent;\n if (!parent) return;\n } // short-circuit for the simplest case\n\n\n if (element.props.length === 1 && value.charCodeAt(0) !== 58\n /* colon */\n && !fixedElements.get(parent)) {\n return;\n } // if this is an implicitly inserted rule (the one eagerly inserted at the each new nested level)\n // then the props has already been manipulated beforehand as they that array is shared between it and its \"rule parent\"\n\n\n if (isImplicitRule) {\n return;\n }\n\n fixedElements.set(element, true);\n var points = [];\n var rules = getRules(value, points);\n var parentRules = parent.props;\n\n for (var i = 0, k = 0; i < rules.length; i++) {\n for (var j = 0; j < parentRules.length; j++, k++) {\n element.props[k] = points[i] ? rules[i].replace(/&\\f/g, parentRules[j]) : parentRules[j] + \" \" + rules[i];\n }\n }\n};\nvar removeLabel = function removeLabel(element) {\n if (element.type === 'decl') {\n var value = element.value;\n\n if ( // charcode for l\n value.charCodeAt(0) === 108 && // charcode for b\n value.charCodeAt(2) === 98) {\n // this ignores label\n element[\"return\"] = '';\n element.value = '';\n }\n }\n};\nvar ignoreFlag = 'emotion-disable-server-rendering-unsafe-selector-warning-please-do-not-use-this-the-warning-exists-for-a-reason';\n\nvar isIgnoringComment = function isIgnoringComment(element) {\n return element.type === 'comm' && element.children.indexOf(ignoreFlag) > -1;\n};\n\nvar createUnsafeSelectorsAlarm = function createUnsafeSelectorsAlarm(cache) {\n return function (element, index, children) {\n if (element.type !== 'rule' || cache.compat) return;\n var unsafePseudoClasses = element.value.match(/(:first|:nth|:nth-last)-child/g);\n\n if (unsafePseudoClasses) {\n var isNested = !!element.parent; // in nested rules comments become children of the \"auto-inserted\" rule and that's always the `element.parent`\n //\n // considering this input:\n // .a {\n // .b /* comm */ {}\n // color: hotpink;\n // }\n // we get output corresponding to this:\n // .a {\n // & {\n // /* comm */\n // color: hotpink;\n // }\n // .b {}\n // }\n\n var commentContainer = isNested ? element.parent.children : // global rule at the root level\n children;\n\n for (var i = commentContainer.length - 1; i >= 0; i--) {\n var node = commentContainer[i];\n\n if (node.line < element.line) {\n break;\n } // it is quite weird but comments are *usually* put at `column: element.column - 1`\n // so we seek *from the end* for the node that is earlier than the rule's `element` and check that\n // this will also match inputs like this:\n // .a {\n // /* comm */\n // .b {}\n // }\n //\n // but that is fine\n //\n // it would be the easiest to change the placement of the comment to be the first child of the rule:\n // .a {\n // .b { /* comm */ }\n // }\n // with such inputs we wouldn't have to search for the comment at all\n // TODO: consider changing this comment placement in the next major version\n\n\n if (node.column < element.column) {\n if (isIgnoringComment(node)) {\n return;\n }\n\n break;\n }\n }\n\n unsafePseudoClasses.forEach(function (unsafePseudoClass) {\n console.error(\"The pseudo class \\\"\" + unsafePseudoClass + \"\\\" is potentially unsafe when doing server-side rendering. Try changing it to \\\"\" + unsafePseudoClass.split('-child')[0] + \"-of-type\\\".\");\n });\n }\n };\n};\n\nvar isImportRule = function isImportRule(element) {\n return element.type.charCodeAt(1) === 105 && element.type.charCodeAt(0) === 64;\n};\n\nvar isPrependedWithRegularRules = function isPrependedWithRegularRules(index, children) {\n for (var i = index - 1; i >= 0; i--) {\n if (!isImportRule(children[i])) {\n return true;\n }\n }\n\n return false;\n}; // use this to remove incorrect elements from further processing\n// so they don't get handed to the `sheet` (or anything else)\n// as that could potentially lead to additional logs which in turn could be overhelming to the user\n\n\nvar nullifyElement = function nullifyElement(element) {\n element.type = '';\n element.value = '';\n element[\"return\"] = '';\n element.children = '';\n element.props = '';\n};\n\nvar incorrectImportAlarm = function incorrectImportAlarm(element, index, children) {\n if (!isImportRule(element)) {\n return;\n }\n\n if (element.parent) {\n console.error(\"`@import` rules can't be nested inside other rules. Please move it to the top level and put it before regular rules. Keep in mind that they can only be used within global styles.\");\n nullifyElement(element);\n } else if (isPrependedWithRegularRules(index, children)) {\n console.error(\"`@import` rules can't be after other rules. Please put your `@import` rules before your other rules.\");\n nullifyElement(element);\n }\n};\n\n/* eslint-disable no-fallthrough */\n\nfunction prefix(value, length) {\n switch (hash(value, length)) {\n // color-adjust\n case 5103:\n return WEBKIT + 'print-' + value + value;\n // animation, animation-(delay|direction|duration|fill-mode|iteration-count|name|play-state|timing-function)\n\n case 5737:\n case 4201:\n case 3177:\n case 3433:\n case 1641:\n case 4457:\n case 2921: // text-decoration, filter, clip-path, backface-visibility, column, box-decoration-break\n\n case 5572:\n case 6356:\n case 5844:\n case 3191:\n case 6645:\n case 3005: // mask, mask-image, mask-(mode|clip|size), mask-(repeat|origin), mask-position, mask-composite,\n\n case 6391:\n case 5879:\n case 5623:\n case 6135:\n case 4599:\n case 4855: // background-clip, columns, column-(count|fill|gap|rule|rule-color|rule-style|rule-width|span|width)\n\n case 4215:\n case 6389:\n case 5109:\n case 5365:\n case 5621:\n case 3829:\n return WEBKIT + value + value;\n // appearance, user-select, transform, hyphens, text-size-adjust\n\n case 5349:\n case 4246:\n case 4810:\n case 6968:\n case 2756:\n return WEBKIT + value + MOZ + value + MS + value + value;\n // flex, flex-direction\n\n case 6828:\n case 4268:\n return WEBKIT + value + MS + value + value;\n // order\n\n case 6165:\n return WEBKIT + value + MS + 'flex-' + value + value;\n // align-items\n\n case 5187:\n return WEBKIT + value + replace(value, /(\\w+).+(:[^]+)/, WEBKIT + 'box-$1$2' + MS + 'flex-$1$2') + value;\n // align-self\n\n case 5443:\n return WEBKIT + value + MS + 'flex-item-' + replace(value, /flex-|-self/, '') + value;\n // align-content\n\n case 4675:\n return WEBKIT + value + MS + 'flex-line-pack' + replace(value, /align-content|flex-|-self/, '') + value;\n // flex-shrink\n\n case 5548:\n return WEBKIT + value + MS + replace(value, 'shrink', 'negative') + value;\n // flex-basis\n\n case 5292:\n return WEBKIT + value + MS + replace(value, 'basis', 'preferred-size') + value;\n // flex-grow\n\n case 6060:\n return WEBKIT + 'box-' + replace(value, '-grow', '') + WEBKIT + value + MS + replace(value, 'grow', 'positive') + value;\n // transition\n\n case 4554:\n return WEBKIT + replace(value, /([^-])(transform)/g, '$1' + WEBKIT + '$2') + value;\n // cursor\n\n case 6187:\n return replace(replace(replace(value, /(zoom-|grab)/, WEBKIT + '$1'), /(image-set)/, WEBKIT + '$1'), value, '') + value;\n // background, background-image\n\n case 5495:\n case 3959:\n return replace(value, /(image-set\\([^]*)/, WEBKIT + '$1' + '$`$1');\n // justify-content\n\n case 4968:\n return replace(replace(value, /(.+:)(flex-)?(.*)/, WEBKIT + 'box-pack:$3' + MS + 'flex-pack:$3'), /s.+-b[^;]+/, 'justify') + WEBKIT + value + value;\n // (margin|padding)-inline-(start|end)\n\n case 4095:\n case 3583:\n case 4068:\n case 2532:\n return replace(value, /(.+)-inline(.+)/, WEBKIT + '$1$2') + value;\n // (min|max)?(width|height|inline-size|block-size)\n\n case 8116:\n case 7059:\n case 5753:\n case 5535:\n case 5445:\n case 5701:\n case 4933:\n case 4677:\n case 5533:\n case 5789:\n case 5021:\n case 4765:\n // stretch, max-content, min-content, fill-available\n if (strlen(value) - 1 - length > 6) switch (charat(value, length + 1)) {\n // (m)ax-content, (m)in-content\n case 109:\n // -\n if (charat(value, length + 4) !== 45) break;\n // (f)ill-available, (f)it-content\n\n case 102:\n return replace(value, /(.+:)(.+)-([^]+)/, '$1' + WEBKIT + '$2-$3' + '$1' + MOZ + (charat(value, length + 3) == 108 ? '$3' : '$2-$3')) + value;\n // (s)tretch\n\n case 115:\n return ~indexof(value, 'stretch') ? prefix(replace(value, 'stretch', 'fill-available'), length) + value : value;\n }\n break;\n // position: sticky\n\n case 4949:\n // (s)ticky?\n if (charat(value, length + 1) !== 115) break;\n // display: (flex|inline-flex)\n\n case 6444:\n switch (charat(value, strlen(value) - 3 - (~indexof(value, '!important') && 10))) {\n // stic(k)y\n case 107:\n return replace(value, ':', ':' + WEBKIT) + value;\n // (inline-)?fl(e)x\n\n case 101:\n return replace(value, /(.+:)([^;!]+)(;|!.+)?/, '$1' + WEBKIT + (charat(value, 14) === 45 ? 'inline-' : '') + 'box$3' + '$1' + WEBKIT + '$2$3' + '$1' + MS + '$2box$3') + value;\n }\n\n break;\n // writing-mode\n\n case 5936:\n switch (charat(value, length + 11)) {\n // vertical-l(r)\n case 114:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb') + value;\n // vertical-r(l)\n\n case 108:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'tb-rl') + value;\n // horizontal(-)tb\n\n case 45:\n return WEBKIT + value + MS + replace(value, /[svh]\\w+-[tblr]{2}/, 'lr') + value;\n }\n\n return WEBKIT + value + MS + value + value;\n }\n\n return value;\n}\n\nvar prefixer = function prefixer(element, index, children, callback) {\n if (element.length > -1) if (!element[\"return\"]) switch (element.type) {\n case DECLARATION:\n element[\"return\"] = prefix(element.value, element.length);\n break;\n\n case KEYFRAMES:\n return serialize([copy(element, {\n value: replace(element.value, '@', '@' + WEBKIT)\n })], callback);\n\n case RULESET:\n if (element.length) return combine(element.props, function (value) {\n switch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n // :read-(only|write)\n case ':read-only':\n case ':read-write':\n return serialize([copy(element, {\n props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]\n })], callback);\n // :placeholder\n\n case '::placeholder':\n return serialize([copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]\n }), copy(element, {\n props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]\n })], callback);\n }\n\n return '';\n });\n }\n};\n\nvar defaultStylisPlugins = [prefixer];\n\nvar createCache = function createCache(options) {\n var key = options.key;\n\n if (process.env.NODE_ENV !== 'production' && !key) {\n throw new Error(\"You have to configure `key` for your cache. Please make sure it's unique (and not equal to 'css') as it's used for linking styles to your cache.\\n\" + \"If multiple caches share the same key they might \\\"fight\\\" for each other's style elements.\");\n }\n\n if (key === 'css') {\n var ssrStyles = document.querySelectorAll(\"style[data-emotion]:not([data-s])\"); // get SSRed styles out of the way of React's hydration\n // document.head is a safe place to move them to(though note document.head is not necessarily the last place they will be)\n // note this very very intentionally targets all style elements regardless of the key to ensure\n // that creating a cache works inside of render of a React component\n\n Array.prototype.forEach.call(ssrStyles, function (node) {\n // we want to only move elements which have a space in the data-emotion attribute value\n // because that indicates that it is an Emotion 11 server-side rendered style elements\n // while we will already ignore Emotion 11 client-side inserted styles because of the :not([data-s]) part in the selector\n // Emotion 10 client-side inserted styles did not have data-s (but importantly did not have a space in their data-emotion attributes)\n // so checking for the space ensures that loading Emotion 11 after Emotion 10 has inserted some styles\n // will not result in the Emotion 10 styles being destroyed\n var dataEmotionAttribute = node.getAttribute('data-emotion');\n\n if (dataEmotionAttribute.indexOf(' ') === -1) {\n return;\n }\n document.head.appendChild(node);\n node.setAttribute('data-s', '');\n });\n }\n\n var stylisPlugins = options.stylisPlugins || defaultStylisPlugins;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe\n if (/[^a-z-]/.test(key)) {\n throw new Error(\"Emotion key must only contain lower case alphabetical characters and - but \\\"\" + key + \"\\\" was passed\");\n }\n }\n\n var inserted = {};\n var container;\n var nodesToHydrate = [];\n\n {\n container = options.container || document.head;\n Array.prototype.forEach.call( // this means we will ignore elements which don't have a space in them which\n // means that the style elements we're looking at are only Emotion 11 server-rendered style elements\n document.querySelectorAll(\"style[data-emotion^=\\\"\" + key + \" \\\"]\"), function (node) {\n var attrib = node.getAttribute(\"data-emotion\").split(' '); // $FlowFixMe\n\n for (var i = 1; i < attrib.length; i++) {\n inserted[attrib[i]] = true;\n }\n\n nodesToHydrate.push(node);\n });\n }\n\n var _insert;\n\n var omnipresentPlugins = [compat, removeLabel];\n\n if (process.env.NODE_ENV !== 'production') {\n omnipresentPlugins.push(createUnsafeSelectorsAlarm({\n get compat() {\n return cache.compat;\n }\n\n }), incorrectImportAlarm);\n }\n\n {\n var currentSheet;\n var finalizingPlugins = [stringify, process.env.NODE_ENV !== 'production' ? function (element) {\n if (!element.root) {\n if (element[\"return\"]) {\n currentSheet.insert(element[\"return\"]);\n } else if (element.value && element.type !== COMMENT) {\n // insert empty rule in non-production environments\n // so @emotion/jest can grab `key` from the (JS)DOM for caches without any rules inserted yet\n currentSheet.insert(element.value + \"{}\");\n }\n }\n } : rulesheet(function (rule) {\n currentSheet.insert(rule);\n })];\n var serializer = middleware(omnipresentPlugins.concat(stylisPlugins, finalizingPlugins));\n\n var stylis = function stylis(styles) {\n return serialize(compile(styles), serializer);\n };\n\n _insert = function insert(selector, serialized, sheet, shouldCache) {\n currentSheet = sheet;\n\n if (process.env.NODE_ENV !== 'production' && serialized.map !== undefined) {\n currentSheet = {\n insert: function insert(rule) {\n sheet.insert(rule + serialized.map);\n }\n };\n }\n\n stylis(selector ? selector + \"{\" + serialized.styles + \"}\" : serialized.styles);\n\n if (shouldCache) {\n cache.inserted[serialized.name] = true;\n }\n };\n }\n\n var cache = {\n key: key,\n sheet: new StyleSheet({\n key: key,\n container: container,\n nonce: options.nonce,\n speedy: options.speedy,\n prepend: options.prepend,\n insertionPoint: options.insertionPoint\n }),\n nonce: options.nonce,\n inserted: inserted,\n registered: {},\n insert: _insert\n };\n cache.sheet.hydrate(nodesToHydrate);\n return cache;\n};\n\nexport { createCache as default };\n","import {MS, MOZ, WEBKIT, RULESET, KEYFRAMES, DECLARATION} from './Enum.js'\nimport {match, charat, substr, strlen, sizeof, replace, combine} from './Utility.js'\nimport {copy, tokenize} from './Tokenizer.js'\nimport {serialize} from './Serializer.js'\nimport {prefix} from './Prefixer.js'\n\n/**\n * @param {function[]} collection\n * @return {function}\n */\nexport function middleware (collection) {\n\tvar length = sizeof(collection)\n\n\treturn function (element, index, children, callback) {\n\t\tvar output = ''\n\n\t\tfor (var i = 0; i < length; i++)\n\t\t\toutput += collection[i](element, index, children, callback) || ''\n\n\t\treturn output\n\t}\n}\n\n/**\n * @param {function} callback\n * @return {function}\n */\nexport function rulesheet (callback) {\n\treturn function (element) {\n\t\tif (!element.root)\n\t\t\tif (element = element.return)\n\t\t\t\tcallback(element)\n\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n * @param {function} callback\n */\nexport function prefixer (element, index, children, callback) {\n\tif (element.length > -1)\n\t\tif (!element.return)\n\t\t\tswitch (element.type) {\n\t\t\t\tcase DECLARATION: element.return = prefix(element.value, element.length, children)\n\t\t\t\t\treturn\n\t\t\t\tcase KEYFRAMES:\n\t\t\t\t\treturn serialize([copy(element, {value: replace(element.value, '@', '@' + WEBKIT)})], callback)\n\t\t\t\tcase RULESET:\n\t\t\t\t\tif (element.length)\n\t\t\t\t\t\treturn combine(element.props, function (value) {\n\t\t\t\t\t\t\tswitch (match(value, /(::plac\\w+|:read-\\w+)/)) {\n\t\t\t\t\t\t\t\t// :read-(only|write)\n\t\t\t\t\t\t\t\tcase ':read-only': case ':read-write':\n\t\t\t\t\t\t\t\t\treturn serialize([copy(element, {props: [replace(value, /:(read-\\w+)/, ':' + MOZ + '$1')]})], callback)\n\t\t\t\t\t\t\t\t// :placeholder\n\t\t\t\t\t\t\t\tcase '::placeholder':\n\t\t\t\t\t\t\t\t\treturn serialize([\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + WEBKIT + 'input-$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, ':' + MOZ + '$1')]}),\n\t\t\t\t\t\t\t\t\t\tcopy(element, {props: [replace(value, /:(plac\\w+)/, MS + 'input-$1')]})\n\t\t\t\t\t\t\t\t\t], callback)\n\t\t\t\t\t\t\t}\n\n\t\t\t\t\t\t\treturn ''\n\t\t\t\t\t\t})\n\t\t\t}\n}\n\n/**\n * @param {object} element\n * @param {number} index\n * @param {object[]} children\n */\nexport function namespace (element) {\n\tswitch (element.type) {\n\t\tcase RULESET:\n\t\t\telement.props = element.props.map(function (value) {\n\t\t\t\treturn combine(tokenize(value), function (value, index, children) {\n\t\t\t\t\tswitch (charat(value, 0)) {\n\t\t\t\t\t\t// \\f\n\t\t\t\t\t\tcase 12:\n\t\t\t\t\t\t\treturn substr(value, 1, strlen(value))\n\t\t\t\t\t\t// \\0 ( + > ~\n\t\t\t\t\t\tcase 0: case 40: case 43: case 62: case 126:\n\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t// :\n\t\t\t\t\t\tcase 58:\n\t\t\t\t\t\t\tif (children[++index] === 'global')\n\t\t\t\t\t\t\t\tchildren[index] = '', children[++index] = '\\f' + substr(children[index], index = 1, -1)\n\t\t\t\t\t\t// \\s\n\t\t\t\t\t\tcase 32:\n\t\t\t\t\t\t\treturn index === 1 ? '' : value\n\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\tswitch (index) {\n\t\t\t\t\t\t\t\tcase 0: element = value\n\t\t\t\t\t\t\t\t\treturn sizeof(children) > 1 ? '' : value\n\t\t\t\t\t\t\t\tcase index = sizeof(children) - 1: case 2:\n\t\t\t\t\t\t\t\t\treturn index === 2 ? value + element + element : value + element\n\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\treturn value\n\t\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t})\n\t\t\t})\n\t}\n}\n","var isBrowser = \"object\" !== 'undefined';\nfunction getRegisteredStyles(registered, registeredStyles, classNames) {\n var rawClassName = '';\n classNames.split(' ').forEach(function (className) {\n if (registered[className] !== undefined) {\n registeredStyles.push(registered[className] + \";\");\n } else {\n rawClassName += className + \" \";\n }\n });\n return rawClassName;\n}\nvar registerStyles = function registerStyles(cache, serialized, isStringTag) {\n var className = cache.key + \"-\" + serialized.name;\n\n if ( // we only need to add the styles to the registered cache if the\n // class name could be used further down\n // the tree but if it's a string tag, we know it won't\n // so we don't have to add it to registered cache.\n // this improves memory usage since we can avoid storing the whole style string\n (isStringTag === false || // we need to always store it if we're in compat mode and\n // in node since emotion-server relies on whether a style is in\n // the registered cache to know whether a style is global or not\n // also, note that this check will be dead code eliminated in the browser\n isBrowser === false ) && cache.registered[className] === undefined) {\n cache.registered[className] = serialized.styles;\n }\n};\nvar insertStyles = function insertStyles(cache, serialized, isStringTag) {\n registerStyles(cache, serialized, isStringTag);\n var className = cache.key + \"-\" + serialized.name;\n\n if (cache.inserted[serialized.name] === undefined) {\n var current = serialized;\n\n do {\n cache.insert(serialized === current ? \".\" + className : '', current, cache.sheet, true);\n\n current = current.next;\n } while (current !== undefined);\n }\n};\n\nexport { getRegisteredStyles, insertStyles, registerStyles };\n","var unitlessKeys = {\n animationIterationCount: 1,\n aspectRatio: 1,\n borderImageOutset: 1,\n borderImageSlice: 1,\n borderImageWidth: 1,\n boxFlex: 1,\n boxFlexGroup: 1,\n boxOrdinalGroup: 1,\n columnCount: 1,\n columns: 1,\n flex: 1,\n flexGrow: 1,\n flexPositive: 1,\n flexShrink: 1,\n flexNegative: 1,\n flexOrder: 1,\n gridRow: 1,\n gridRowEnd: 1,\n gridRowSpan: 1,\n gridRowStart: 1,\n gridColumn: 1,\n gridColumnEnd: 1,\n gridColumnSpan: 1,\n gridColumnStart: 1,\n msGridRow: 1,\n msGridRowSpan: 1,\n msGridColumn: 1,\n msGridColumnSpan: 1,\n fontWeight: 1,\n lineHeight: 1,\n opacity: 1,\n order: 1,\n orphans: 1,\n tabSize: 1,\n widows: 1,\n zIndex: 1,\n zoom: 1,\n WebkitLineClamp: 1,\n // SVG-related properties\n fillOpacity: 1,\n floodOpacity: 1,\n stopOpacity: 1,\n strokeDasharray: 1,\n strokeDashoffset: 1,\n strokeMiterlimit: 1,\n strokeOpacity: 1,\n strokeWidth: 1\n};\n\nexport { unitlessKeys as default };\n","function memoize(fn) {\n var cache = Object.create(null);\n return function (arg) {\n if (cache[arg] === undefined) cache[arg] = fn(arg);\n return cache[arg];\n };\n}\n\nexport { memoize as default };\n","import hashString from '@emotion/hash';\nimport unitless from '@emotion/unitless';\nimport memoize from '@emotion/memoize';\n\nvar ILLEGAL_ESCAPE_SEQUENCE_ERROR = \"You have illegal escape sequence in your template literal, most likely inside content's property value.\\nBecause you write your CSS inside a JavaScript string you actually have to do double escaping, so for example \\\"content: '\\\\00d7';\\\" should become \\\"content: '\\\\\\\\00d7';\\\".\\nYou can read more about this here:\\nhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals#ES2018_revision_of_illegal_escape_sequences\";\nvar UNDEFINED_AS_OBJECT_KEY_ERROR = \"You have passed in falsy value as style object's key (can happen when in example you pass unexported component as computed key).\";\nvar hyphenateRegex = /[A-Z]|^ms/g;\nvar animationRegex = /_EMO_([^_]+?)_([^]*?)_EMO_/g;\n\nvar isCustomProperty = function isCustomProperty(property) {\n return property.charCodeAt(1) === 45;\n};\n\nvar isProcessableValue = function isProcessableValue(value) {\n return value != null && typeof value !== 'boolean';\n};\n\nvar processStyleName = /* #__PURE__ */memoize(function (styleName) {\n return isCustomProperty(styleName) ? styleName : styleName.replace(hyphenateRegex, '-$&').toLowerCase();\n});\n\nvar processStyleValue = function processStyleValue(key, value) {\n switch (key) {\n case 'animation':\n case 'animationName':\n {\n if (typeof value === 'string') {\n return value.replace(animationRegex, function (match, p1, p2) {\n cursor = {\n name: p1,\n styles: p2,\n next: cursor\n };\n return p1;\n });\n }\n }\n }\n\n if (unitless[key] !== 1 && !isCustomProperty(key) && typeof value === 'number' && value !== 0) {\n return value + 'px';\n }\n\n return value;\n};\n\nif (process.env.NODE_ENV !== 'production') {\n var contentValuePattern = /(var|attr|counters?|url|element|(((repeating-)?(linear|radial))|conic)-gradient)\\(|(no-)?(open|close)-quote/;\n var contentValues = ['normal', 'none', 'initial', 'inherit', 'unset'];\n var oldProcessStyleValue = processStyleValue;\n var msPattern = /^-ms-/;\n var hyphenPattern = /-(.)/g;\n var hyphenatedCache = {};\n\n processStyleValue = function processStyleValue(key, value) {\n if (key === 'content') {\n if (typeof value !== 'string' || contentValues.indexOf(value) === -1 && !contentValuePattern.test(value) && (value.charAt(0) !== value.charAt(value.length - 1) || value.charAt(0) !== '\"' && value.charAt(0) !== \"'\")) {\n throw new Error(\"You seem to be using a value for 'content' without quotes, try replacing it with `content: '\\\"\" + value + \"\\\"'`\");\n }\n }\n\n var processed = oldProcessStyleValue(key, value);\n\n if (processed !== '' && !isCustomProperty(key) && key.indexOf('-') !== -1 && hyphenatedCache[key] === undefined) {\n hyphenatedCache[key] = true;\n console.error(\"Using kebab-case for css properties in objects is not supported. Did you mean \" + key.replace(msPattern, 'ms-').replace(hyphenPattern, function (str, _char) {\n return _char.toUpperCase();\n }) + \"?\");\n }\n\n return processed;\n };\n}\n\nvar noComponentSelectorMessage = 'Component selectors can only be used in conjunction with ' + '@emotion/babel-plugin, the swc Emotion plugin, or another Emotion-aware ' + 'compiler transform.';\n\nfunction handleInterpolation(mergedProps, registered, interpolation) {\n if (interpolation == null) {\n return '';\n }\n\n if (interpolation.__emotion_styles !== undefined) {\n if (process.env.NODE_ENV !== 'production' && interpolation.toString() === 'NO_COMPONENT_SELECTOR') {\n throw new Error(noComponentSelectorMessage);\n }\n\n return interpolation;\n }\n\n switch (typeof interpolation) {\n case 'boolean':\n {\n return '';\n }\n\n case 'object':\n {\n if (interpolation.anim === 1) {\n cursor = {\n name: interpolation.name,\n styles: interpolation.styles,\n next: cursor\n };\n return interpolation.name;\n }\n\n if (interpolation.styles !== undefined) {\n var next = interpolation.next;\n\n if (next !== undefined) {\n // not the most efficient thing ever but this is a pretty rare case\n // and there will be very few iterations of this generally\n while (next !== undefined) {\n cursor = {\n name: next.name,\n styles: next.styles,\n next: cursor\n };\n next = next.next;\n }\n }\n\n var styles = interpolation.styles + \";\";\n\n if (process.env.NODE_ENV !== 'production' && interpolation.map !== undefined) {\n styles += interpolation.map;\n }\n\n return styles;\n }\n\n return createStringFromObject(mergedProps, registered, interpolation);\n }\n\n case 'function':\n {\n if (mergedProps !== undefined) {\n var previousCursor = cursor;\n var result = interpolation(mergedProps);\n cursor = previousCursor;\n return handleInterpolation(mergedProps, registered, result);\n } else if (process.env.NODE_ENV !== 'production') {\n console.error('Functions that are interpolated in css calls will be stringified.\\n' + 'If you want to have a css call based on props, create a function that returns a css call like this\\n' + 'let dynamicStyle = (props) => css`color: ${props.color}`\\n' + 'It can be called directly with props or interpolated in a styled call like this\\n' + \"let SomeComponent = styled('div')`${dynamicStyle}`\");\n }\n\n break;\n }\n\n case 'string':\n if (process.env.NODE_ENV !== 'production') {\n var matched = [];\n var replaced = interpolation.replace(animationRegex, function (match, p1, p2) {\n var fakeVarName = \"animation\" + matched.length;\n matched.push(\"const \" + fakeVarName + \" = keyframes`\" + p2.replace(/^@keyframes animation-\\w+/, '') + \"`\");\n return \"${\" + fakeVarName + \"}\";\n });\n\n if (matched.length) {\n console.error('`keyframes` output got interpolated into plain string, please wrap it with `css`.\\n\\n' + 'Instead of doing this:\\n\\n' + [].concat(matched, [\"`\" + replaced + \"`\"]).join('\\n') + '\\n\\nYou should wrap it with `css` like this:\\n\\n' + (\"css`\" + replaced + \"`\"));\n }\n }\n\n break;\n } // finalize string values (regular strings and functions interpolated into css calls)\n\n\n if (registered == null) {\n return interpolation;\n }\n\n var cached = registered[interpolation];\n return cached !== undefined ? cached : interpolation;\n}\n\nfunction createStringFromObject(mergedProps, registered, obj) {\n var string = '';\n\n if (Array.isArray(obj)) {\n for (var i = 0; i < obj.length; i++) {\n string += handleInterpolation(mergedProps, registered, obj[i]) + \";\";\n }\n } else {\n for (var _key in obj) {\n var value = obj[_key];\n\n if (typeof value !== 'object') {\n if (registered != null && registered[value] !== undefined) {\n string += _key + \"{\" + registered[value] + \"}\";\n } else if (isProcessableValue(value)) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value) + \";\";\n }\n } else {\n if (_key === 'NO_COMPONENT_SELECTOR' && process.env.NODE_ENV !== 'production') {\n throw new Error(noComponentSelectorMessage);\n }\n\n if (Array.isArray(value) && typeof value[0] === 'string' && (registered == null || registered[value[0]] === undefined)) {\n for (var _i = 0; _i < value.length; _i++) {\n if (isProcessableValue(value[_i])) {\n string += processStyleName(_key) + \":\" + processStyleValue(_key, value[_i]) + \";\";\n }\n }\n } else {\n var interpolated = handleInterpolation(mergedProps, registered, value);\n\n switch (_key) {\n case 'animation':\n case 'animationName':\n {\n string += processStyleName(_key) + \":\" + interpolated + \";\";\n break;\n }\n\n default:\n {\n if (process.env.NODE_ENV !== 'production' && _key === 'undefined') {\n console.error(UNDEFINED_AS_OBJECT_KEY_ERROR);\n }\n\n string += _key + \"{\" + interpolated + \"}\";\n }\n }\n }\n }\n }\n }\n\n return string;\n}\n\nvar labelPattern = /label:\\s*([^\\s;\\n{]+)\\s*(;|$)/g;\nvar sourceMapPattern;\n\nif (process.env.NODE_ENV !== 'production') {\n sourceMapPattern = /\\/\\*#\\ssourceMappingURL=data:application\\/json;\\S+\\s+\\*\\//g;\n} // this is the cursor for keyframes\n// keyframes are stored on the SerializedStyles object as a linked list\n\n\nvar cursor;\nvar serializeStyles = function serializeStyles(args, registered, mergedProps) {\n if (args.length === 1 && typeof args[0] === 'object' && args[0] !== null && args[0].styles !== undefined) {\n return args[0];\n }\n\n var stringMode = true;\n var styles = '';\n cursor = undefined;\n var strings = args[0];\n\n if (strings == null || strings.raw === undefined) {\n stringMode = false;\n styles += handleInterpolation(mergedProps, registered, strings);\n } else {\n if (process.env.NODE_ENV !== 'production' && strings[0] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[0];\n } // we start at 1 since we've already handled the first arg\n\n\n for (var i = 1; i < args.length; i++) {\n styles += handleInterpolation(mergedProps, registered, args[i]);\n\n if (stringMode) {\n if (process.env.NODE_ENV !== 'production' && strings[i] === undefined) {\n console.error(ILLEGAL_ESCAPE_SEQUENCE_ERROR);\n }\n\n styles += strings[i];\n }\n }\n\n var sourceMap;\n\n if (process.env.NODE_ENV !== 'production') {\n styles = styles.replace(sourceMapPattern, function (match) {\n sourceMap = match;\n return '';\n });\n } // using a global regex with .exec is stateful so lastIndex has to be reset each time\n\n\n labelPattern.lastIndex = 0;\n var identifierName = '';\n var match; // https://esbench.com/bench/5b809c2cf2949800a0f61fb5\n\n while ((match = labelPattern.exec(styles)) !== null) {\n identifierName += '-' + // $FlowFixMe we know it's not null\n match[1];\n }\n\n var name = hashString(styles) + identifierName;\n\n if (process.env.NODE_ENV !== 'production') {\n // $FlowFixMe SerializedStyles type doesn't have toString property (and we don't want to add it)\n return {\n name: name,\n styles: styles,\n map: sourceMap,\n next: cursor,\n toString: function toString() {\n return \"You have tried to stringify object returned from `css` function. It isn't supposed to be used directly (e.g. as value of the `className` prop), but rather handed to emotion so it can handle it (e.g. as value of `css` prop).\";\n }\n };\n }\n\n return {\n name: name,\n styles: styles,\n next: cursor\n };\n};\n\nexport { serializeStyles };\n","/* eslint-disable */\n// Inspired by https://github.com/garycourt/murmurhash-js\n// Ported from https://github.com/aappleby/smhasher/blob/61a0530f28277f2e850bfc39600ce61d02b518de/src/MurmurHash2.cpp#L37-L86\nfunction murmur2(str) {\n // 'm' and 'r' are mixing constants generated offline.\n // They're not really 'magic', they just happen to work well.\n // const m = 0x5bd1e995;\n // const r = 24;\n // Initialize the hash\n var h = 0; // Mix 4 bytes at a time into the hash\n\n var k,\n i = 0,\n len = str.length;\n\n for (; len >= 4; ++i, len -= 4) {\n k = str.charCodeAt(i) & 0xff | (str.charCodeAt(++i) & 0xff) << 8 | (str.charCodeAt(++i) & 0xff) << 16 | (str.charCodeAt(++i) & 0xff) << 24;\n k =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16);\n k ^=\n /* k >>> r: */\n k >>> 24;\n h =\n /* Math.imul(k, m): */\n (k & 0xffff) * 0x5bd1e995 + ((k >>> 16) * 0xe995 << 16) ^\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Handle the last few bytes of the input array\n\n\n switch (len) {\n case 3:\n h ^= (str.charCodeAt(i + 2) & 0xff) << 16;\n\n case 2:\n h ^= (str.charCodeAt(i + 1) & 0xff) << 8;\n\n case 1:\n h ^= str.charCodeAt(i) & 0xff;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n } // Do a few final mixes of the hash to ensure the last few\n // bytes are well-incorporated.\n\n\n h ^= h >>> 13;\n h =\n /* Math.imul(h, m): */\n (h & 0xffff) * 0x5bd1e995 + ((h >>> 16) * 0xe995 << 16);\n return ((h ^ h >>> 15) >>> 0).toString(36);\n}\n\nexport { murmur2 as default };\n","import * as React from 'react';\n\nvar syncFallback = function syncFallback(create) {\n return create();\n};\n\nvar useInsertionEffect = React['useInsertion' + 'Effect'] ? React['useInsertion' + 'Effect'] : false;\nvar useInsertionEffectAlwaysWithSyncFallback = useInsertionEffect || syncFallback;\nvar useInsertionEffectWithLayoutFallback = useInsertionEffect || React.useLayoutEffect;\n\nexport { useInsertionEffectAlwaysWithSyncFallback, useInsertionEffectWithLayoutFallback };\n","import * as React from 'react';\nimport { useContext, forwardRef } from 'react';\nimport createCache from '@emotion/cache';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport weakMemoize from '@emotion/weak-memoize';\nimport hoistNonReactStatics from '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport { getRegisteredStyles, registerStyles, insertStyles } from '@emotion/utils';\nimport { serializeStyles } from '@emotion/serialize';\nimport { useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\n\nvar isBrowser = \"object\" !== 'undefined';\nvar hasOwnProperty = {}.hasOwnProperty;\n\nvar EmotionCacheContext = /* #__PURE__ */React.createContext( // we're doing this to avoid preconstruct's dead code elimination in this one case\n// because this module is primarily intended for the browser and node\n// but it's also required in react native and similar environments sometimes\n// and we could have a special build just for that\n// but this is much easier and the native packages\n// might use a different theme context in the future anyway\ntypeof HTMLElement !== 'undefined' ? /* #__PURE__ */createCache({\n key: 'css'\n}) : null);\n\nif (process.env.NODE_ENV !== 'production') {\n EmotionCacheContext.displayName = 'EmotionCacheContext';\n}\n\nvar CacheProvider = EmotionCacheContext.Provider;\nvar __unsafe_useEmotionCache = function useEmotionCache() {\n return useContext(EmotionCacheContext);\n};\n\nvar withEmotionCache = function withEmotionCache(func) {\n // $FlowFixMe\n return /*#__PURE__*/forwardRef(function (props, ref) {\n // the cache will never be null in the browser\n var cache = useContext(EmotionCacheContext);\n return func(props, cache, ref);\n });\n};\n\nif (!isBrowser) {\n withEmotionCache = function withEmotionCache(func) {\n return function (props) {\n var cache = useContext(EmotionCacheContext);\n\n if (cache === null) {\n // yes, we're potentially creating this on every render\n // it doesn't actually matter though since it's only on the server\n // so there will only every be a single render\n // that could change in the future because of suspense and etc. but for now,\n // this works and i don't want to optimise for a future thing that we aren't sure about\n cache = createCache({\n key: 'css'\n });\n return /*#__PURE__*/React.createElement(EmotionCacheContext.Provider, {\n value: cache\n }, func(props, cache));\n } else {\n return func(props, cache);\n }\n };\n };\n}\n\nvar ThemeContext = /* #__PURE__ */React.createContext({});\n\nif (process.env.NODE_ENV !== 'production') {\n ThemeContext.displayName = 'EmotionThemeContext';\n}\n\nvar useTheme = function useTheme() {\n return React.useContext(ThemeContext);\n};\n\nvar getTheme = function getTheme(outerTheme, theme) {\n if (typeof theme === 'function') {\n var mergedTheme = theme(outerTheme);\n\n if (process.env.NODE_ENV !== 'production' && (mergedTheme == null || typeof mergedTheme !== 'object' || Array.isArray(mergedTheme))) {\n throw new Error('[ThemeProvider] Please return an object from your theme function, i.e. theme={() => ({})}!');\n }\n\n return mergedTheme;\n }\n\n if (process.env.NODE_ENV !== 'production' && (theme == null || typeof theme !== 'object' || Array.isArray(theme))) {\n throw new Error('[ThemeProvider] Please make your theme prop a plain object');\n }\n\n return _extends({}, outerTheme, theme);\n};\n\nvar createCacheWithTheme = /* #__PURE__ */weakMemoize(function (outerTheme) {\n return weakMemoize(function (theme) {\n return getTheme(outerTheme, theme);\n });\n});\nvar ThemeProvider = function ThemeProvider(props) {\n var theme = React.useContext(ThemeContext);\n\n if (props.theme !== theme) {\n theme = createCacheWithTheme(theme)(props.theme);\n }\n\n return /*#__PURE__*/React.createElement(ThemeContext.Provider, {\n value: theme\n }, props.children);\n};\nfunction withTheme(Component) {\n var componentName = Component.displayName || Component.name || 'Component';\n\n var render = function render(props, ref) {\n var theme = React.useContext(ThemeContext);\n return /*#__PURE__*/React.createElement(Component, _extends({\n theme: theme,\n ref: ref\n }, props));\n }; // $FlowFixMe\n\n\n var WithTheme = /*#__PURE__*/React.forwardRef(render);\n WithTheme.displayName = \"WithTheme(\" + componentName + \")\";\n return hoistNonReactStatics(WithTheme, Component);\n}\n\nvar getLastPart = function getLastPart(functionName) {\n // The match may be something like 'Object.createEmotionProps' or\n // 'Loader.prototype.render'\n var parts = functionName.split('.');\n return parts[parts.length - 1];\n};\n\nvar getFunctionNameFromStackTraceLine = function getFunctionNameFromStackTraceLine(line) {\n // V8\n var match = /^\\s+at\\s+([A-Za-z0-9$.]+)\\s/.exec(line);\n if (match) return getLastPart(match[1]); // Safari / Firefox\n\n match = /^([A-Za-z0-9$.]+)@/.exec(line);\n if (match) return getLastPart(match[1]);\n return undefined;\n};\n\nvar internalReactFunctionNames = /* #__PURE__ */new Set(['renderWithHooks', 'processChild', 'finishClassComponent', 'renderToString']); // These identifiers come from error stacks, so they have to be valid JS\n// identifiers, thus we only need to replace what is a valid character for JS,\n// but not for CSS.\n\nvar sanitizeIdentifier = function sanitizeIdentifier(identifier) {\n return identifier.replace(/\\$/g, '-');\n};\n\nvar getLabelFromStackTrace = function getLabelFromStackTrace(stackTrace) {\n if (!stackTrace) return undefined;\n var lines = stackTrace.split('\\n');\n\n for (var i = 0; i < lines.length; i++) {\n var functionName = getFunctionNameFromStackTraceLine(lines[i]); // The first line of V8 stack traces is just \"Error\"\n\n if (!functionName) continue; // If we reach one of these, we have gone too far and should quit\n\n if (internalReactFunctionNames.has(functionName)) break; // The component name is the first function in the stack that starts with an\n // uppercase letter\n\n if (/^[A-Z]/.test(functionName)) return sanitizeIdentifier(functionName);\n }\n\n return undefined;\n};\n\nvar typePropName = '__EMOTION_TYPE_PLEASE_DO_NOT_USE__';\nvar labelPropName = '__EMOTION_LABEL_PLEASE_DO_NOT_USE__';\nvar createEmotionProps = function createEmotionProps(type, props) {\n if (process.env.NODE_ENV !== 'production' && typeof props.css === 'string' && // check if there is a css declaration\n props.css.indexOf(':') !== -1) {\n throw new Error(\"Strings are not allowed as css prop values, please wrap it in a css template literal from '@emotion/react' like this: css`\" + props.css + \"`\");\n }\n\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key)) {\n newProps[key] = props[key];\n }\n }\n\n newProps[typePropName] = type; // For performance, only call getLabelFromStackTrace in development and when\n // the label hasn't already been computed\n\n if (process.env.NODE_ENV !== 'production' && !!props.css && (typeof props.css !== 'object' || typeof props.css.name !== 'string' || props.css.name.indexOf('-') === -1)) {\n var label = getLabelFromStackTrace(new Error().stack);\n if (label) newProps[labelPropName] = label;\n }\n\n return newProps;\n};\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serialized = _ref.serialized,\n isStringTag = _ref.isStringTag;\n registerStyles(cache, serialized, isStringTag);\n useInsertionEffectAlwaysWithSyncFallback(function () {\n return insertStyles(cache, serialized, isStringTag);\n });\n\n return null;\n};\n\nvar Emotion = /* #__PURE__ */withEmotionCache(function (props, cache, ref) {\n var cssProp = props.css; // so that using `css` from `emotion` and passing the result to the css prop works\n // not passing the registered cache to serializeStyles because it would\n // make certain babel optimisations not possible\n\n if (typeof cssProp === 'string' && cache.registered[cssProp] !== undefined) {\n cssProp = cache.registered[cssProp];\n }\n\n var WrappedComponent = props[typePropName];\n var registeredStyles = [cssProp];\n var className = '';\n\n if (typeof props.className === 'string') {\n className = getRegisteredStyles(cache.registered, registeredStyles, props.className);\n } else if (props.className != null) {\n className = props.className + \" \";\n }\n\n var serialized = serializeStyles(registeredStyles, undefined, React.useContext(ThemeContext));\n\n if (process.env.NODE_ENV !== 'production' && serialized.name.indexOf('-') === -1) {\n var labelFromStack = props[labelPropName];\n\n if (labelFromStack) {\n serialized = serializeStyles([serialized, 'label:' + labelFromStack + ';']);\n }\n }\n\n className += cache.key + \"-\" + serialized.name;\n var newProps = {};\n\n for (var key in props) {\n if (hasOwnProperty.call(props, key) && key !== 'css' && key !== typePropName && (process.env.NODE_ENV === 'production' || key !== labelPropName)) {\n newProps[key] = props[key];\n }\n }\n\n newProps.ref = ref;\n newProps.className = className;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serialized: serialized,\n isStringTag: typeof WrappedComponent === 'string'\n }), /*#__PURE__*/React.createElement(WrappedComponent, newProps));\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Emotion.displayName = 'EmotionCssPropInternal';\n}\n\nvar Emotion$1 = Emotion;\n\nexport { CacheProvider as C, Emotion$1 as E, ThemeContext as T, __unsafe_useEmotionCache as _, ThemeProvider as a, withTheme as b, createEmotionProps as c, hasOwnProperty as h, isBrowser as i, useTheme as u, withEmotionCache as w };\n","import { h as hasOwnProperty, E as Emotion, c as createEmotionProps, w as withEmotionCache, T as ThemeContext, i as isBrowser$1 } from './emotion-element-c39617d8.browser.esm.js';\nexport { C as CacheProvider, T as ThemeContext, a as ThemeProvider, _ as __unsafe_useEmotionCache, u as useTheme, w as withEmotionCache, b as withTheme } from './emotion-element-c39617d8.browser.esm.js';\nimport * as React from 'react';\nimport { insertStyles, registerStyles, getRegisteredStyles } from '@emotion/utils';\nimport { useInsertionEffectWithLayoutFallback, useInsertionEffectAlwaysWithSyncFallback } from '@emotion/use-insertion-effect-with-fallbacks';\nimport { serializeStyles } from '@emotion/serialize';\nimport '@emotion/cache';\nimport '@babel/runtime/helpers/extends';\nimport '@emotion/weak-memoize';\nimport '../_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js';\nimport 'hoist-non-react-statics';\n\nvar pkg = {\n\tname: \"@emotion/react\",\n\tversion: \"11.11.0\",\n\tmain: \"dist/emotion-react.cjs.js\",\n\tmodule: \"dist/emotion-react.esm.js\",\n\tbrowser: {\n\t\t\"./dist/emotion-react.esm.js\": \"./dist/emotion-react.browser.esm.js\"\n\t},\n\texports: {\n\t\t\".\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./dist/emotion-react.worker.esm.js\",\n\t\t\t\tbrowser: \"./dist/emotion-react.browser.esm.js\",\n\t\t\t\t\"default\": \"./dist/emotion-react.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./dist/emotion-react.cjs.mjs\",\n\t\t\t\"default\": \"./dist/emotion-react.cjs.js\"\n\t\t},\n\t\t\"./jsx-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-runtime/dist/emotion-react-jsx-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-runtime/dist/emotion-react-jsx-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-runtime/dist/emotion-react-jsx-runtime.cjs.js\"\n\t\t},\n\t\t\"./_isolated-hnrs\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.worker.esm.js\",\n\t\t\t\tbrowser: \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.browser.esm.js\",\n\t\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.mjs\",\n\t\t\t\"default\": \"./_isolated-hnrs/dist/emotion-react-_isolated-hnrs.cjs.js\"\n\t\t},\n\t\t\"./jsx-dev-runtime\": {\n\t\t\tmodule: {\n\t\t\t\tworker: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.worker.esm.js\",\n\t\t\t\tbrowser: \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.browser.esm.js\",\n\t\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.esm.js\"\n\t\t\t},\n\t\t\t\"import\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.mjs\",\n\t\t\t\"default\": \"./jsx-dev-runtime/dist/emotion-react-jsx-dev-runtime.cjs.js\"\n\t\t},\n\t\t\"./package.json\": \"./package.json\",\n\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\"./macro\": {\n\t\t\ttypes: {\n\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t},\n\t\t\t\"default\": \"./macro.js\"\n\t\t}\n\t},\n\ttypes: \"types/index.d.ts\",\n\tfiles: [\n\t\t\"src\",\n\t\t\"dist\",\n\t\t\"jsx-runtime\",\n\t\t\"jsx-dev-runtime\",\n\t\t\"_isolated-hnrs\",\n\t\t\"types/*.d.ts\",\n\t\t\"macro.*\"\n\t],\n\tsideEffects: false,\n\tauthor: \"Emotion Contributors\",\n\tlicense: \"MIT\",\n\tscripts: {\n\t\t\"test:typescript\": \"dtslint types\"\n\t},\n\tdependencies: {\n\t\t\"@babel/runtime\": \"^7.18.3\",\n\t\t\"@emotion/babel-plugin\": \"^11.11.0\",\n\t\t\"@emotion/cache\": \"^11.11.0\",\n\t\t\"@emotion/serialize\": \"^1.1.2\",\n\t\t\"@emotion/use-insertion-effect-with-fallbacks\": \"^1.0.1\",\n\t\t\"@emotion/utils\": \"^1.2.1\",\n\t\t\"@emotion/weak-memoize\": \"^0.3.1\",\n\t\t\"hoist-non-react-statics\": \"^3.3.1\"\n\t},\n\tpeerDependencies: {\n\t\treact: \">=16.8.0\"\n\t},\n\tpeerDependenciesMeta: {\n\t\t\"@types/react\": {\n\t\t\toptional: true\n\t\t}\n\t},\n\tdevDependencies: {\n\t\t\"@definitelytyped/dtslint\": \"0.0.112\",\n\t\t\"@emotion/css\": \"11.11.0\",\n\t\t\"@emotion/css-prettifier\": \"1.1.3\",\n\t\t\"@emotion/server\": \"11.11.0\",\n\t\t\"@emotion/styled\": \"11.11.0\",\n\t\t\"html-tag-names\": \"^1.1.2\",\n\t\treact: \"16.14.0\",\n\t\t\"svg-tag-names\": \"^1.1.1\",\n\t\ttypescript: \"^4.5.5\"\n\t},\n\trepository: \"https://github.com/emotion-js/emotion/tree/main/packages/react\",\n\tpublishConfig: {\n\t\taccess: \"public\"\n\t},\n\t\"umd:main\": \"dist/emotion-react.umd.min.js\",\n\tpreconstruct: {\n\t\tentrypoints: [\n\t\t\t\"./index.js\",\n\t\t\t\"./jsx-runtime.js\",\n\t\t\t\"./jsx-dev-runtime.js\",\n\t\t\t\"./_isolated-hnrs.js\"\n\t\t],\n\t\tumdName: \"emotionReact\",\n\t\texports: {\n\t\t\tenvConditions: [\n\t\t\t\t\"browser\",\n\t\t\t\t\"worker\"\n\t\t\t],\n\t\t\textra: {\n\t\t\t\t\"./types/css-prop\": \"./types/css-prop.d.ts\",\n\t\t\t\t\"./macro\": {\n\t\t\t\t\ttypes: {\n\t\t\t\t\t\t\"import\": \"./macro.d.mts\",\n\t\t\t\t\t\t\"default\": \"./macro.d.ts\"\n\t\t\t\t\t},\n\t\t\t\t\t\"default\": \"./macro.js\"\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n};\n\nvar jsx = function jsx(type, props) {\n var args = arguments;\n\n if (props == null || !hasOwnProperty.call(props, 'css')) {\n // $FlowFixMe\n return React.createElement.apply(undefined, args);\n }\n\n var argsLength = args.length;\n var createElementArgArray = new Array(argsLength);\n createElementArgArray[0] = Emotion;\n createElementArgArray[1] = createEmotionProps(type, props);\n\n for (var i = 2; i < argsLength; i++) {\n createElementArgArray[i] = args[i];\n } // $FlowFixMe\n\n\n return React.createElement.apply(null, createElementArgArray);\n};\n\nvar warnedAboutCssPropForGlobal = false; // maintain place over rerenders.\n// initial render from browser, insertBefore context.sheet.tags[0] or if a style hasn't been inserted there yet, appendChild\n// initial client-side render from SSR, use place of hydrating tag\n\nvar Global = /* #__PURE__ */withEmotionCache(function (props, cache) {\n if (process.env.NODE_ENV !== 'production' && !warnedAboutCssPropForGlobal && ( // check for className as well since the user is\n // probably using the custom createElement which\n // means it will be turned into a className prop\n // $FlowFixMe I don't really want to add it to the type since it shouldn't be used\n props.className || props.css)) {\n console.error(\"It looks like you're using the css prop on Global, did you mean to use the styles prop instead?\");\n warnedAboutCssPropForGlobal = true;\n }\n\n var styles = props.styles;\n var serialized = serializeStyles([styles], undefined, React.useContext(ThemeContext));\n\n if (!isBrowser$1) {\n var _ref;\n\n var serializedNames = serialized.name;\n var serializedStyles = serialized.styles;\n var next = serialized.next;\n\n while (next !== undefined) {\n serializedNames += ' ' + next.name;\n serializedStyles += next.styles;\n next = next.next;\n }\n\n var shouldCache = cache.compat === true;\n var rules = cache.insert(\"\", {\n name: serializedNames,\n styles: serializedStyles\n }, cache.sheet, shouldCache);\n\n if (shouldCache) {\n return null;\n }\n\n return /*#__PURE__*/React.createElement(\"style\", (_ref = {}, _ref[\"data-emotion\"] = cache.key + \"-global \" + serializedNames, _ref.dangerouslySetInnerHTML = {\n __html: rules\n }, _ref.nonce = cache.sheet.nonce, _ref));\n } // yes, i know these hooks are used conditionally\n // but it is based on a constant that will never change at runtime\n // it's effectively like having two implementations and switching them out\n // so it's not actually breaking anything\n\n\n var sheetRef = React.useRef();\n useInsertionEffectWithLayoutFallback(function () {\n var key = cache.key + \"-global\"; // use case of https://github.com/emotion-js/emotion/issues/2675\n\n var sheet = new cache.sheet.constructor({\n key: key,\n nonce: cache.sheet.nonce,\n container: cache.sheet.container,\n speedy: cache.sheet.isSpeedy\n });\n var rehydrating = false; // $FlowFixMe\n\n var node = document.querySelector(\"style[data-emotion=\\\"\" + key + \" \" + serialized.name + \"\\\"]\");\n\n if (cache.sheet.tags.length) {\n sheet.before = cache.sheet.tags[0];\n }\n\n if (node !== null) {\n rehydrating = true; // clear the hash so this node won't be recognizable as rehydratable by other s\n\n node.setAttribute('data-emotion', key);\n sheet.hydrate([node]);\n }\n\n sheetRef.current = [sheet, rehydrating];\n return function () {\n sheet.flush();\n };\n }, [cache]);\n useInsertionEffectWithLayoutFallback(function () {\n var sheetRefCurrent = sheetRef.current;\n var sheet = sheetRefCurrent[0],\n rehydrating = sheetRefCurrent[1];\n\n if (rehydrating) {\n sheetRefCurrent[1] = false;\n return;\n }\n\n if (serialized.next !== undefined) {\n // insert keyframes\n insertStyles(cache, serialized.next, true);\n }\n\n if (sheet.tags.length) {\n // if this doesn't exist then it will be null so the style element will be appended\n var element = sheet.tags[sheet.tags.length - 1].nextElementSibling;\n sheet.before = element;\n sheet.flush();\n }\n\n cache.insert(\"\", serialized, sheet, false);\n }, [cache, serialized.name]);\n return null;\n});\n\nif (process.env.NODE_ENV !== 'production') {\n Global.displayName = 'EmotionGlobal';\n}\n\nfunction css() {\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n return serializeStyles(args);\n}\n\nvar keyframes = function keyframes() {\n var insertable = css.apply(void 0, arguments);\n var name = \"animation-\" + insertable.name; // $FlowFixMe\n\n return {\n name: name,\n styles: \"@keyframes \" + name + \"{\" + insertable.styles + \"}\",\n anim: 1,\n toString: function toString() {\n return \"_EMO_\" + this.name + \"_\" + this.styles + \"_EMO_\";\n }\n };\n};\n\nvar classnames = function classnames(args) {\n var len = args.length;\n var i = 0;\n var cls = '';\n\n for (; i < len; i++) {\n var arg = args[i];\n if (arg == null) continue;\n var toAdd = void 0;\n\n switch (typeof arg) {\n case 'boolean':\n break;\n\n case 'object':\n {\n if (Array.isArray(arg)) {\n toAdd = classnames(arg);\n } else {\n if (process.env.NODE_ENV !== 'production' && arg.styles !== undefined && arg.name !== undefined) {\n console.error('You have passed styles created with `css` from `@emotion/react` package to the `cx`.\\n' + '`cx` is meant to compose class names (strings) so you should convert those styles to a class name by passing them to the `css` received from component.');\n }\n\n toAdd = '';\n\n for (var k in arg) {\n if (arg[k] && k) {\n toAdd && (toAdd += ' ');\n toAdd += k;\n }\n }\n }\n\n break;\n }\n\n default:\n {\n toAdd = arg;\n }\n }\n\n if (toAdd) {\n cls && (cls += ' ');\n cls += toAdd;\n }\n }\n\n return cls;\n};\n\nfunction merge(registered, css, className) {\n var registeredStyles = [];\n var rawClassName = getRegisteredStyles(registered, registeredStyles, className);\n\n if (registeredStyles.length < 2) {\n return className;\n }\n\n return rawClassName + css(registeredStyles);\n}\n\nvar Insertion = function Insertion(_ref) {\n var cache = _ref.cache,\n serializedArr = _ref.serializedArr;\n useInsertionEffectAlwaysWithSyncFallback(function () {\n\n for (var i = 0; i < serializedArr.length; i++) {\n insertStyles(cache, serializedArr[i], false);\n }\n });\n\n return null;\n};\n\nvar ClassNames = /* #__PURE__ */withEmotionCache(function (props, cache) {\n var hasRendered = false;\n var serializedArr = [];\n\n var css = function css() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('css can only be used during render');\n }\n\n for (var _len = arguments.length, args = new Array(_len), _key = 0; _key < _len; _key++) {\n args[_key] = arguments[_key];\n }\n\n var serialized = serializeStyles(args, cache.registered);\n serializedArr.push(serialized); // registration has to happen here as the result of this might get consumed by `cx`\n\n registerStyles(cache, serialized, false);\n return cache.key + \"-\" + serialized.name;\n };\n\n var cx = function cx() {\n if (hasRendered && process.env.NODE_ENV !== 'production') {\n throw new Error('cx can only be used during render');\n }\n\n for (var _len2 = arguments.length, args = new Array(_len2), _key2 = 0; _key2 < _len2; _key2++) {\n args[_key2] = arguments[_key2];\n }\n\n return merge(cache.registered, css, classnames(args));\n };\n\n var content = {\n css: css,\n cx: cx,\n theme: React.useContext(ThemeContext)\n };\n var ele = props.children(content);\n hasRendered = true;\n return /*#__PURE__*/React.createElement(React.Fragment, null, /*#__PURE__*/React.createElement(Insertion, {\n cache: cache,\n serializedArr: serializedArr\n }), ele);\n});\n\nif (process.env.NODE_ENV !== 'production') {\n ClassNames.displayName = 'EmotionClassNames';\n}\n\nif (process.env.NODE_ENV !== 'production') {\n var isBrowser = \"object\" !== 'undefined'; // #1727, #2905 for some reason Jest and Vitest evaluate modules twice if some consuming module gets mocked\n\n var isTestEnv = typeof jest !== 'undefined' || typeof vi !== 'undefined';\n\n if (isBrowser && !isTestEnv) {\n // globalThis has wide browser support - https://caniuse.com/?search=globalThis, Node.js 12 and later\n var globalContext = // $FlowIgnore\n typeof globalThis !== 'undefined' ? globalThis // eslint-disable-line no-undef\n : isBrowser ? window : global;\n var globalKey = \"__EMOTION_REACT_\" + pkg.version.split('.')[0] + \"__\";\n\n if (globalContext[globalKey]) {\n console.warn('You are loading @emotion/react when it is already loaded. Running ' + 'multiple instances may cause problems. This can happen if multiple ' + 'versions are used, or if multiple builds of the same version are ' + 'used.');\n }\n\n globalContext[globalKey] = true;\n }\n}\n\nexport { ClassNames, Global, jsx as createElement, css, jsx, keyframes };\n","function t(t){return t.split(\"-\")[1]}function e(t){return\"y\"===t?\"height\":\"width\"}function n(t){return t.split(\"-\")[0]}function o(t){return[\"top\",\"bottom\"].includes(n(t))?\"x\":\"y\"}function i(i,r,a){let{reference:l,floating:s}=i;const c=l.x+l.width/2-s.width/2,f=l.y+l.height/2-s.height/2,m=o(r),u=e(m),g=l[u]/2-s[u]/2,d=\"x\"===m;let p;switch(n(r)){case\"top\":p={x:c,y:l.y-s.height};break;case\"bottom\":p={x:c,y:l.y+l.height};break;case\"right\":p={x:l.x+l.width,y:f};break;case\"left\":p={x:l.x-s.width,y:f};break;default:p={x:l.x,y:l.y}}switch(t(r)){case\"start\":p[m]-=g*(a&&d?-1:1);break;case\"end\":p[m]+=g*(a&&d?-1:1)}return p}const r=async(t,e,n)=>{const{placement:o=\"bottom\",strategy:r=\"absolute\",middleware:a=[],platform:l}=n,s=a.filter(Boolean),c=await(null==l.isRTL?void 0:l.isRTL(e));let f=await l.getElementRects({reference:t,floating:e,strategy:r}),{x:m,y:u}=i(f,o,c),g=o,d={},p=0;for(let n=0;n({name:\"arrow\",options:n,async fn(i){const{element:r,padding:l=0}=n||{},{x:s,y:c,placement:f,rects:u,platform:g,elements:d}=i;if(null==r)return{};const p=a(l),h={x:s,y:c},y=o(f),x=e(y),w=await g.getDimensions(r),v=\"y\"===y,b=v?\"top\":\"left\",A=v?\"bottom\":\"right\",R=v?\"clientHeight\":\"clientWidth\",P=u.reference[x]+u.reference[y]-h[y]-u.floating[x],E=h[y]-u.reference[y],T=await(null==g.getOffsetParent?void 0:g.getOffsetParent(r));let D=T?T[R]:0;D&&await(null==g.isElement?void 0:g.isElement(T))||(D=d.floating[R]||u.floating[x]);const L=P/2-E/2,k=p[b],O=D-w[x]-p[A],B=D/2-w[x]/2+L,C=m(k,B,O),H=null!=t(f)&&B!=C&&u.reference[x]/2-(Bt.concat(e,e+\"-start\",e+\"-end\")),[]),p={left:\"right\",right:\"left\",bottom:\"top\",top:\"bottom\"};function h(t){return t.replace(/left|right|bottom|top/g,(t=>p[t]))}function y(n,i,r){void 0===r&&(r=!1);const a=t(n),l=o(n),s=e(l);let c=\"x\"===l?a===(r?\"end\":\"start\")?\"right\":\"left\":\"start\"===a?\"bottom\":\"top\";return i.reference[s]>i.floating[s]&&(c=h(c)),{main:c,cross:h(c)}}const x={start:\"end\",end:\"start\"};function w(t){return t.replace(/start|end/g,(t=>x[t]))}const v=function(e){return void 0===e&&(e={}),{name:\"autoPlacement\",options:e,async fn(o){var i,r,a;const{rects:l,middlewareData:c,placement:f,platform:m,elements:u}=o,{crossAxis:g=!1,alignment:p,allowedPlacements:h=d,autoAlignment:x=!0,...v}=e,b=void 0!==p||h===d?function(e,o,i){return(e?[...i.filter((n=>t(n)===e)),...i.filter((n=>t(n)!==e))]:i.filter((t=>n(t)===t))).filter((n=>!e||t(n)===e||!!o&&w(n)!==n))}(p||null,x,h):h,A=await s(o,v),R=(null==(i=c.autoPlacement)?void 0:i.index)||0,P=b[R];if(null==P)return{};const{main:E,cross:T}=y(P,l,await(null==m.isRTL?void 0:m.isRTL(u.floating)));if(f!==P)return{reset:{placement:b[0]}};const D=[A[n(P)],A[E],A[T]],L=[...(null==(r=c.autoPlacement)?void 0:r.overflows)||[],{placement:P,overflows:D}],k=b[R+1];if(k)return{data:{index:R+1,overflows:L},reset:{placement:k}};const O=L.map((e=>{const n=t(e.placement);return[e.placement,n&&g?e.overflows.slice(0,2).reduce(((t,e)=>t+e),0):e.overflows[0],e.overflows]})).sort(((t,e)=>t[1]-e[1])),B=(null==(a=O.filter((e=>e[2].slice(0,t(e[0])?2:3).every((t=>t<=0))))[0])?void 0:a[0])||O[0][0];return B!==f?{data:{index:R+1,overflows:L},reset:{placement:B}}:{}}}};const b=function(e){return void 0===e&&(e={}),{name:\"flip\",options:e,async fn(o){var i;const{placement:r,middlewareData:a,rects:l,initialPlacement:c,platform:f,elements:m}=o,{mainAxis:u=!0,crossAxis:g=!0,fallbackPlacements:d,fallbackStrategy:p=\"bestFit\",fallbackAxisSideDirection:x=\"none\",flipAlignment:v=!0,...b}=e,A=n(r),R=n(c)===c,P=await(null==f.isRTL?void 0:f.isRTL(m.floating)),E=d||(R||!v?[h(c)]:function(t){const e=h(t);return[w(t),e,w(e)]}(c));d||\"none\"===x||E.push(...function(e,o,i,r){const a=t(e);let l=function(t,e,n){const o=[\"left\",\"right\"],i=[\"right\",\"left\"],r=[\"top\",\"bottom\"],a=[\"bottom\",\"top\"];switch(t){case\"top\":case\"bottom\":return n?e?i:o:e?o:i;case\"left\":case\"right\":return e?r:a;default:return[]}}(n(e),\"start\"===i,r);return a&&(l=l.map((t=>t+\"-\"+a)),o&&(l=l.concat(l.map(w)))),l}(c,v,x,P));const T=[c,...E],D=await s(o,b),L=[];let k=(null==(i=a.flip)?void 0:i.overflows)||[];if(u&&L.push(D[A]),g){const{main:t,cross:e}=y(r,l,P);L.push(D[t],D[e])}if(k=[...k,{placement:r,overflows:L}],!L.every((t=>t<=0))){var O,B;const t=((null==(O=a.flip)?void 0:O.index)||0)+1,e=T[t];if(e)return{data:{index:t,overflows:k},reset:{placement:e}};let n=null==(B=k.filter((t=>t.overflows[0]<=0)).sort(((t,e)=>t.overflows[1]-e.overflows[1]))[0])?void 0:B.placement;if(!n)switch(p){case\"bestFit\":{var C;const t=null==(C=k.map((t=>[t.placement,t.overflows.filter((t=>t>0)).reduce(((t,e)=>t+e),0)])).sort(((t,e)=>t[1]-e[1]))[0])?void 0:C[0];t&&(n=t);break}case\"initialPlacement\":n=c}if(r!==n)return{reset:{placement:n}}}return{}}}};function A(t,e){return{top:t.top-e.height,right:t.right-e.width,bottom:t.bottom-e.height,left:t.left-e.width}}function R(t){return g.some((e=>t[e]>=0))}const P=function(t){return void 0===t&&(t={}),{name:\"hide\",options:t,async fn(e){const{strategy:n=\"referenceHidden\",...o}=t,{rects:i}=e;switch(n){case\"referenceHidden\":{const t=A(await s(e,{...o,elementContext:\"reference\"}),i.reference);return{data:{referenceHiddenOffsets:t,referenceHidden:R(t)}}}case\"escaped\":{const t=A(await s(e,{...o,altBoundary:!0}),i.floating);return{data:{escapedOffsets:t,escaped:R(t)}}}default:return{}}}}};function E(t){const e=c(...t.map((t=>t.left))),n=c(...t.map((t=>t.top)));return{x:e,y:n,width:f(...t.map((t=>t.right)))-e,height:f(...t.map((t=>t.bottom)))-n}}const T=function(t){return void 0===t&&(t={}),{name:\"inline\",options:t,async fn(e){const{placement:i,elements:r,rects:s,platform:m,strategy:u}=e,{padding:g=2,x:d,y:p}=t,h=Array.from(await(null==m.getClientRects?void 0:m.getClientRects(r.reference))||[]),y=function(t){const e=t.slice().sort(((t,e)=>t.y-e.y)),n=[];let o=null;for(let t=0;to.height/2?n.push([i]):n[n.length-1].push(i),o=i}return n.map((t=>l(E(t))))}(h),x=l(E(h)),w=a(g);const v=await m.getElementRects({reference:{getBoundingClientRect:function(){if(2===y.length&&y[0].left>y[1].right&&null!=d&&null!=p)return y.find((t=>d>t.left-w.left&&dt.top-w.top&&p=2){if(\"x\"===o(i)){const t=y[0],e=y[y.length-1],o=\"top\"===n(i),r=t.top,a=e.bottom,l=o?t.left:e.left,s=o?t.right:e.right;return{top:r,bottom:a,left:l,right:s,width:s-l,height:a-r,x:l,y:r}}const t=\"left\"===n(i),e=f(...y.map((t=>t.right))),r=c(...y.map((t=>t.left))),a=y.filter((n=>t?n.left===r:n.right===e)),l=a[0].top,s=a[a.length-1].bottom;return{top:l,bottom:s,left:r,right:e,width:e-r,height:s-l,x:r,y:l}}return x}},floating:r.floating,strategy:u});return s.reference.x!==v.reference.x||s.reference.y!==v.reference.y||s.reference.width!==v.reference.width||s.reference.height!==v.reference.height?{reset:{rects:v}}:{}}}};const D=function(e){return void 0===e&&(e=0),{name:\"offset\",options:e,async fn(i){const{x:r,y:a}=i,l=await async function(e,i){const{placement:r,platform:a,elements:l}=e,s=await(null==a.isRTL?void 0:a.isRTL(l.floating)),c=n(r),f=t(r),m=\"x\"===o(r),u=[\"left\",\"top\"].includes(c)?-1:1,g=s&&m?-1:1,d=\"function\"==typeof i?i(e):i;let{mainAxis:p,crossAxis:h,alignmentAxis:y}=\"number\"==typeof d?{mainAxis:d,crossAxis:0,alignmentAxis:null}:{mainAxis:0,crossAxis:0,alignmentAxis:null,...d};return f&&\"number\"==typeof y&&(h=\"end\"===f?-1*y:y),m?{x:h*g,y:p*u}:{x:p*u,y:h*g}}(i,e);return{x:r+l.x,y:a+l.y,data:l}}}};function L(t){return\"x\"===t?\"y\":\"x\"}const k=function(t){return void 0===t&&(t={}),{name:\"shift\",options:t,async fn(e){const{x:i,y:r,placement:a}=e,{mainAxis:l=!0,crossAxis:c=!1,limiter:f={fn:t=>{let{x:e,y:n}=t;return{x:e,y:n}}},...u}=t,g={x:i,y:r},d=await s(e,u),p=o(n(a)),h=L(p);let y=g[p],x=g[h];if(l){const t=\"y\"===p?\"bottom\":\"right\";y=m(y+d[\"y\"===p?\"top\":\"left\"],y,y-d[t])}if(c){const t=\"y\"===h?\"bottom\":\"right\";x=m(x+d[\"y\"===h?\"top\":\"left\"],x,x-d[t])}const w=f.fn({...e,[p]:y,[h]:x});return{...w,data:{x:w.x-i,y:w.y-r}}}}},O=function(t){return void 0===t&&(t={}),{options:t,fn(e){const{x:i,y:r,placement:a,rects:l,middlewareData:s}=e,{offset:c=0,mainAxis:f=!0,crossAxis:m=!0}=t,u={x:i,y:r},g=o(a),d=L(g);let p=u[g],h=u[d];const y=\"function\"==typeof c?c(e):c,x=\"number\"==typeof y?{mainAxis:y,crossAxis:0}:{mainAxis:0,crossAxis:0,...y};if(f){const t=\"y\"===g?\"height\":\"width\",e=l.reference[g]-l.floating[t]+x.mainAxis,n=l.reference[g]+l.reference[t]-x.mainAxis;pn&&(p=n)}if(m){var w,v;const t=\"y\"===g?\"width\":\"height\",e=[\"top\",\"left\"].includes(n(a)),o=l.reference[d]-l.floating[t]+(e&&(null==(w=s.offset)?void 0:w[d])||0)+(e?0:x.crossAxis),i=l.reference[d]+l.reference[t]+(e?0:(null==(v=s.offset)?void 0:v[d])||0)-(e?x.crossAxis:0);hi&&(h=i)}return{[g]:p,[d]:h}}}},B=function(e){return void 0===e&&(e={}),{name:\"size\",options:e,async fn(i){const{placement:r,rects:a,platform:l,elements:m}=i,{apply:u=(()=>{}),...g}=e,d=await s(i,g),p=n(r),h=t(r),y=\"x\"===o(r),{width:x,height:w}=a.floating;let v,b;\"top\"===p||\"bottom\"===p?(v=p,b=h===(await(null==l.isRTL?void 0:l.isRTL(m.floating))?\"start\":\"end\")?\"left\":\"right\"):(b=p,v=\"end\"===h?\"top\":\"bottom\");const A=w-d[v],R=x-d[b],P=!i.middlewareData.shift;let E=A,T=R;if(y){const t=x-d.left-d.right;T=h||P?c(R,t):t}else{const t=w-d.top-d.bottom;E=h||P?c(A,t):t}if(P&&!h){const t=f(d.left,0),e=f(d.right,0),n=f(d.top,0),o=f(d.bottom,0);y?T=x-2*(0!==t||0!==e?t+e:f(d.left,d.right)):E=w-2*(0!==n||0!==o?n+o:f(d.top,d.bottom))}await u({...i,availableWidth:T,availableHeight:E});const D=await l.getDimensions(m.floating);return x!==D.width||w!==D.height?{reset:{rects:!0}}:{}}}};export{u as arrow,v as autoPlacement,r as computePosition,s as detectOverflow,b as flip,P as hide,T as inline,O as limitShift,D as offset,l as rectToClientRect,k as shift,B as size};\n","import{rectToClientRect as t,computePosition as e}from\"@floating-ui/core\";export{arrow,autoPlacement,detectOverflow,flip,hide,inline,limitShift,offset,shift,size}from\"@floating-ui/core\";function n(t){var e;return(null==(e=t.ownerDocument)?void 0:e.defaultView)||window}function o(t){return n(t).getComputedStyle(t)}function i(t){return t instanceof n(t).Node}function r(t){return i(t)?(t.nodeName||\"\").toLowerCase():\"\"}function l(t){return t instanceof n(t).HTMLElement}function c(t){return t instanceof n(t).Element}function s(t){if(\"undefined\"==typeof ShadowRoot)return!1;return t instanceof n(t).ShadowRoot||t instanceof ShadowRoot}function f(t){const{overflow:e,overflowX:n,overflowY:i,display:r}=o(t);return/auto|scroll|overlay|hidden|clip/.test(e+i+n)&&![\"inline\",\"contents\"].includes(r)}function u(t){return[\"table\",\"td\",\"th\"].includes(r(t))}function a(t){const e=d(),n=o(t);return\"none\"!==n.transform||\"none\"!==n.perspective||!e&&!!n.backdropFilter&&\"none\"!==n.backdropFilter||!e&&!!n.filter&&\"none\"!==n.filter||[\"transform\",\"perspective\",\"filter\"].some((t=>(n.willChange||\"\").includes(t)))||[\"paint\",\"layout\",\"strict\",\"content\"].some((t=>(n.contain||\"\").includes(t)))}function d(){return!(\"undefined\"==typeof CSS||!CSS.supports)&&CSS.supports(\"-webkit-backdrop-filter\",\"none\")}function h(t){return[\"html\",\"body\",\"#document\"].includes(r(t))}const p=Math.min,m=Math.max,g=Math.round;function y(t){const e=o(t);let n=parseFloat(e.width)||0,i=parseFloat(e.height)||0;const r=l(t),c=r?t.offsetWidth:n,s=r?t.offsetHeight:i,f=g(n)!==c||g(i)!==s;return f&&(n=c,i=s),{width:n,height:i,fallback:f}}function x(t){return c(t)?t:t.contextElement}const w={x:1,y:1};function v(t){const e=x(t);if(!l(e))return w;const n=e.getBoundingClientRect(),{width:o,height:i,fallback:r}=y(e);let c=(r?g(n.width):n.width)/o,s=(r?g(n.height):n.height)/i;return c&&Number.isFinite(c)||(c=1),s&&Number.isFinite(s)||(s=1),{x:c,y:s}}const b={x:0,y:0};function L(t,e,o){var i,r;if(void 0===e&&(e=!0),!d())return b;const l=t?n(t):window;return!o||e&&o!==l?b:{x:(null==(i=l.visualViewport)?void 0:i.offsetLeft)||0,y:(null==(r=l.visualViewport)?void 0:r.offsetTop)||0}}function E(e,o,i,r){void 0===o&&(o=!1),void 0===i&&(i=!1);const l=e.getBoundingClientRect(),s=x(e);let f=w;o&&(r?c(r)&&(f=v(r)):f=v(e));const u=L(s,i,r);let a=(l.left+u.x)/f.x,d=(l.top+u.y)/f.y,h=l.width/f.x,p=l.height/f.y;if(s){const t=n(s),e=r&&c(r)?n(r):r;let o=t.frameElement;for(;o&&r&&e!==t;){const t=v(o),e=o.getBoundingClientRect(),i=getComputedStyle(o);e.x+=(o.clientLeft+parseFloat(i.paddingLeft))*t.x,e.y+=(o.clientTop+parseFloat(i.paddingTop))*t.y,a*=t.x,d*=t.y,h*=t.x,p*=t.y,a+=e.x,d+=e.y,o=n(o).frameElement}}return t({width:h,height:p,x:a,y:d})}function R(t){return((i(t)?t.ownerDocument:t.document)||window.document).documentElement}function T(t){return c(t)?{scrollLeft:t.scrollLeft,scrollTop:t.scrollTop}:{scrollLeft:t.pageXOffset,scrollTop:t.pageYOffset}}function S(t){return E(R(t)).left+T(t).scrollLeft}function C(t){if(\"html\"===r(t))return t;const e=t.assignedSlot||t.parentNode||s(t)&&t.host||R(t);return s(e)?e.host:e}function F(t){const e=C(t);return h(e)?e.ownerDocument.body:l(e)&&f(e)?e:F(e)}function W(t,e){var o;void 0===e&&(e=[]);const i=F(t),r=i===(null==(o=t.ownerDocument)?void 0:o.body),l=n(i);return r?e.concat(l,l.visualViewport||[],f(i)?i:[]):e.concat(i,W(i))}function D(e,i,r){let s;if(\"viewport\"===i)s=function(t,e){const o=n(t),i=R(t),r=o.visualViewport;let l=i.clientWidth,c=i.clientHeight,s=0,f=0;if(r){l=r.width,c=r.height;const t=d();(!t||t&&\"fixed\"===e)&&(s=r.offsetLeft,f=r.offsetTop)}return{width:l,height:c,x:s,y:f}}(e,r);else if(\"document\"===i)s=function(t){const e=R(t),n=T(t),i=t.ownerDocument.body,r=m(e.scrollWidth,e.clientWidth,i.scrollWidth,i.clientWidth),l=m(e.scrollHeight,e.clientHeight,i.scrollHeight,i.clientHeight);let c=-n.scrollLeft+S(t);const s=-n.scrollTop;return\"rtl\"===o(i).direction&&(c+=m(e.clientWidth,i.clientWidth)-r),{width:r,height:l,x:c,y:s}}(R(e));else if(c(i))s=function(t,e){const n=E(t,!0,\"fixed\"===e),o=n.top+t.clientTop,i=n.left+t.clientLeft,r=l(t)?v(t):{x:1,y:1};return{width:t.clientWidth*r.x,height:t.clientHeight*r.y,x:i*r.x,y:o*r.y}}(i,r);else{const t=L(e);s={...i,x:i.x-t.x,y:i.y-t.y}}return t(s)}function H(t,e){const n=C(t);return!(n===e||!c(n)||h(n))&&(\"fixed\"===o(n).position||H(n,e))}function O(t,e){return l(t)&&\"fixed\"!==o(t).position?e?e(t):t.offsetParent:null}function P(t,e){const i=n(t);if(!l(t))return i;let c=O(t,e);for(;c&&u(c)&&\"static\"===o(c).position;)c=O(c,e);return c&&(\"html\"===r(c)||\"body\"===r(c)&&\"static\"===o(c).position&&!a(c))?i:c||function(t){let e=C(t);for(;l(e)&&!h(e);){if(a(e))return e;e=C(e)}return null}(t)||i}function V(t,e,n){const o=l(e),i=R(e),c=\"fixed\"===n,s=E(t,!0,c,e);let u={scrollLeft:0,scrollTop:0};const a={x:0,y:0};if(o||!o&&!c)if((\"body\"!==r(e)||f(i))&&(u=T(e)),l(e)){const t=E(e,!0,c,e);a.x=t.x+e.clientLeft,a.y=t.y+e.clientTop}else i&&(a.x=S(i));return{x:s.left+u.scrollLeft-a.x,y:s.top+u.scrollTop-a.y,width:s.width,height:s.height}}const k={getClippingRect:function(t){let{element:e,boundary:n,rootBoundary:i,strategy:l}=t;const s=\"clippingAncestors\"===n?function(t,e){const n=e.get(t);if(n)return n;let i=W(t).filter((t=>c(t)&&\"body\"!==r(t))),l=null;const s=\"fixed\"===o(t).position;let u=s?C(t):t;for(;c(u)&&!h(u);){const e=o(u),n=a(u);n||\"fixed\"!==e.position||(l=null),(s?!n&&!l:!n&&\"static\"===e.position&&l&&[\"absolute\",\"fixed\"].includes(l.position)||f(u)&&!n&&H(t,u))?i=i.filter((t=>t!==u)):l=e,u=C(u)}return e.set(t,i),i}(e,this._c):[].concat(n),u=[...s,i],d=u[0],g=u.reduce(((t,n)=>{const o=D(e,n,l);return t.top=m(o.top,t.top),t.right=p(o.right,t.right),t.bottom=p(o.bottom,t.bottom),t.left=m(o.left,t.left),t}),D(e,d,l));return{width:g.right-g.left,height:g.bottom-g.top,x:g.left,y:g.top}},convertOffsetParentRelativeRectToViewportRelativeRect:function(t){let{rect:e,offsetParent:n,strategy:o}=t;const i=l(n),c=R(n);if(n===c)return e;let s={scrollLeft:0,scrollTop:0},u={x:1,y:1};const a={x:0,y:0};if((i||!i&&\"fixed\"!==o)&&((\"body\"!==r(n)||f(c))&&(s=T(n)),l(n))){const t=E(n);u=v(n),a.x=t.x+n.clientLeft,a.y=t.y+n.clientTop}return{width:e.width*u.x,height:e.height*u.y,x:e.x*u.x-s.scrollLeft*u.x+a.x,y:e.y*u.y-s.scrollTop*u.y+a.y}},isElement:c,getDimensions:function(t){return y(t)},getOffsetParent:P,getDocumentElement:R,getScale:v,async getElementRects(t){let{reference:e,floating:n,strategy:o}=t;const i=this.getOffsetParent||P,r=this.getDimensions;return{reference:V(e,await i(n),o),floating:{x:0,y:0,...await r(n)}}},getClientRects:t=>Array.from(t.getClientRects()),isRTL:t=>\"rtl\"===o(t).direction};function z(t,e,n,o){void 0===o&&(o={});const{ancestorScroll:i=!0,ancestorResize:r=!0,elementResize:l=!0,animationFrame:s=!1}=o,f=i||r?[...c(t)?W(t):t.contextElement?W(t.contextElement):[],...W(e)]:[];f.forEach((t=>{const e=!c(t)&&t.toString().includes(\"V\");!i||s&&!e||t.addEventListener(\"scroll\",n,{passive:!0}),r&&t.addEventListener(\"resize\",n)}));let u,a=null;l&&(a=new ResizeObserver((()=>{n()})),c(t)&&!s&&a.observe(t),c(t)||!t.contextElement||s||a.observe(t.contextElement),a.observe(e));let d=s?E(t):null;return s&&function e(){const o=E(t);!d||o.x===d.x&&o.y===d.y&&o.width===d.width&&o.height===d.height||n();d=o,u=requestAnimationFrame(e)}(),n(),()=>{var t;f.forEach((t=>{i&&t.removeEventListener(\"scroll\",n),r&&t.removeEventListener(\"resize\",n)})),null==(t=a)||t.disconnect(),a=null,s&&cancelAnimationFrame(u)}}const M=(t,n,o)=>{const i=new Map,r={platform:k,...o},l={...r.platform,_c:i};return e(t,n,{...r,platform:l})};export{z as autoUpdate,M as computePosition,W as getOverflowAncestors,k as platform};\n","import { useLayoutEffect } from 'react';\n\nvar index = useLayoutEffect ;\n\nexport default index;\n","export default function _taggedTemplateLiteral(strings, raw) {\n if (!raw) {\n raw = strings.slice(0);\n }\n return Object.freeze(Object.defineProperties(strings, {\n raw: {\n value: Object.freeze(raw)\n }\n }));\n}","import { u as useStateManager } from './useStateManager-7e1e8489.esm.js';\nexport { u as useStateManager } from './useStateManager-7e1e8489.esm.js';\nimport _extends from '@babel/runtime/helpers/esm/extends';\nimport * as React from 'react';\nimport { forwardRef, useMemo } from 'react';\nimport { S as Select } from './Select-ce3716e1.esm.js';\nexport { c as createFilter, d as defaultTheme, m as mergeStyles } from './Select-ce3716e1.esm.js';\nimport { CacheProvider } from '@emotion/react';\nimport createCache from '@emotion/cache';\nexport { c as components } from './index-6ea50319.esm.js';\nimport '@babel/runtime/helpers/objectSpread2';\nimport '@babel/runtime/helpers/slicedToArray';\nimport '@babel/runtime/helpers/objectWithoutProperties';\nimport '@babel/runtime/helpers/classCallCheck';\nimport '@babel/runtime/helpers/createClass';\nimport '@babel/runtime/helpers/inherits';\nimport '@babel/runtime/helpers/createSuper';\nimport '@babel/runtime/helpers/toConsumableArray';\nimport 'memoize-one';\nimport '@babel/runtime/helpers/typeof';\nimport '@babel/runtime/helpers/taggedTemplateLiteral';\nimport '@babel/runtime/helpers/defineProperty';\nimport 'react-dom';\nimport '@floating-ui/dom';\nimport 'use-isomorphic-layout-effect';\n\nvar StateManagedSelect = /*#__PURE__*/forwardRef(function (props, ref) {\n var baseSelectProps = useStateManager(props);\n return /*#__PURE__*/React.createElement(Select, _extends({\n ref: ref\n }, baseSelectProps));\n});\nvar StateManagedSelect$1 = StateManagedSelect;\n\nvar NonceProvider = (function (_ref) {\n var nonce = _ref.nonce,\n children = _ref.children,\n cacheKey = _ref.cacheKey;\n var emotionCache = useMemo(function () {\n return createCache({\n key: cacheKey,\n nonce: nonce\n });\n }, [cacheKey, nonce]);\n return /*#__PURE__*/React.createElement(CacheProvider, {\n value: emotionCache\n }, children);\n});\n\nexport { NonceProvider, StateManagedSelect$1 as default };\n","import { useContext } from 'react';\nimport { LoadingContext } from './Context';\n\nconst useLoading = () => {\n const context = useContext(LoadingContext);\n if (context === undefined) {\n throw new Error('useLoading must be used within a LoadingProvider');\n }\n return context;\n};\n\nexport {\n useLoading\n}","import { useContext, useState } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport Select from 'react-select';\nimport { AuthContext } from '../utils/Context';\nimport { useLoading } from '../utils/Hooks';\nimport { emailRegex } from '../utils/regex';\nimport Loader from '../components/Loader/Loader';\nimport Footer from '../components/Footer/Footer';\n\nexport default function Signup() {\n const [firstName, setFirstName] = useState('');\n const [lastName, setLastName] = useState('');\n const [phone, setPhone] = useState(''); // TODO: add phone number validation\n const [email, setEmail] = useState('');\n const [userType, setUserType] = useState(null);\n const [emailIsValid, setEmailIsValid] = useState(false);\n const [passwordIsValid, setPasswordIsValid] = useState(false);\n const [password, setPassword] = useState('');\n const [errorMessage, setErrorMessage] = useState('');\n const [isSignup, setIsSignup] = useState(false);\n const { isLoading, setIsLoading } = useLoading();\n const navigate = useNavigate();\n const useAuth = () => useContext(AuthContext);\n const auth = useAuth();\n\nconst userTypeOptions = [\n { value: 1, label: 'Physical Therapy' },\n { value: 2, label: 'Occupational Therapy' },\n { value: 3, label: 'Family Medicine' },\n { value: 4, label: 'Pediatrics' },\n { value: 5, label: 'Geriatrics' },\n];\n\n\n const updateEmail = email => {\n setEmail(email);\n if (emailRegex.test(email)) {\n setEmailIsValid(true);\n setErrorMessage('');\n } else {\n if (!passwordIsValid) {\n setErrorMessage('Please enter a valid email and password.');\n }\n setErrorMessage('Please enter a valid email.');\n setEmailIsValid(false);\n }\n };\n\n const updatePassword = password => {\n setPassword(password);\n if (password.length < 8 && isSignup) {\n setErrorMessage('Password must be at least 8 characters.');\n setPasswordIsValid(false);\n } else {\n setErrorMessage('');\n setPasswordIsValid(true);\n }\n };\n\n const handleLogIn = e => {\n e.preventDefault();\n setIsLoading(true);\n auth.login(email, password)\n .then(() => {\n setIsLoading(false);\n setEmail('');\n setPassword('');\n navigate('/calendar', { replace: true });\n })\n .catch(error => {\n setIsLoading(false);\n setEmail('');\n setPassword('');\n if (error.response && error.response.status === 401) {\n setErrorMessage('Invalid credentials, please try again.');\n } else {\n setErrorMessage('Error logging in, please try again.');\n }\n });\n };\n\n const handleSignUp = e => {\n e.preventDefault();\n setIsLoading(true);\n const usertype_id = userType.value;\n auth.signup({ firstName, lastName, phone, email, password, usertype_id})\n .then(() => {\n setIsLoading(false);\n setFirstName('');\n setLastName('');\n setPhone('');\n setEmail('');\n setUserType(null);\n navigate('/hello');\n })\n .catch(error => {\n setIsLoading(false);\n setFirstName('');\n setLastName('');\n setPhone('');\n setEmail('');\n setPassword('');\n setUserType(null);\n if (error.response && error.response.status === 409) {\n setErrorMessage('This email is associated with an account already. Please log in instead.');\n } else {\n setErrorMessage('Error signing up, please try again.');\n }\n });\n };\n\n const handleSelect = (e) => {\n setUserType(e);\n }\n\n return (\n <>\n {isLoading ? (\n \n ) : (\n
\n
\n ribb\n \n n\n
\n

Prioritize Patients, Not Paperwork.

\n

\n Our technology converts your patient vist into detailed SOAP notes\n in realtime. We streamline your notetaking workflow to also improve\n billing, compliance, and discharge processes.
\n
\n With Ribbon, you can focus more on what truly matters—providing\n quality care and spending meaningful time with your patients.\n

\n

\n \n Contact Sales for a Free 7 Day Full-Access Trial now!\n \n

\n

\n Ribbon is not currently available on smartphones, please use a\n tablet or a computer.\n

\n\n {isSignup ? (\n <>\n
\n
\n setFirstName(e.target.value)}\n value={firstName}\n />\n setLastName(e.target.value)}\n value={lastName}\n />\n
\n
\n updateEmail(e.target.value)}\n value={email}\n pattern=\".+@globex\\.com\"\n required\n autoComplete=\"username\"\n />\n updatePassword(e.target.value)}\n value={password}\n autoComplete=\"current-password\"\n />\n \n
\n
\n
\n \n Sign Up\n \n
\n
\n
\n \n Already have an account?  \n setIsSignup(false)}>\n Log In\n \n \n \n ) : (\n <>\n
\n updateEmail(e.target.value)}\n value={email}\n autoComplete=\"username\"\n />\n updatePassword(e.target.value)}\n value={password}\n autoComplete=\"current-password\"\n />\n \n Log In\n \n \n
\n \n Don't have an account?  \n \n Contact Sales\n \n
\n \n Forgot Your Password?  \n navigate('/reset')}>\n Reset It Here\n \n \n
\n \n )}\n {errorMessage &&
{errorMessage}
}\n
\n
\n {!isSignup &&
}\n
\n )}\n \n );\n}\n","import { useContext, useState } from 'react';\nimport { AuthContext } from '../utils/Context';\n\nexport default function Hello() {\n const [isHover, setIsHover] = useState(false);\n const useAuth = () => useContext(AuthContext);\n const auth = useAuth();\n const user = auth.getUser();\n\n return (\n
\n
\n {isHover && (\n

Hello {user.userFirstName} {user.userLastName}!

\n )}\n {\n !isHover && (\n \n )\n }\n setIsHover(true)}\n onMouseLeave={() => setIsHover(false)}\n >\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n {isHover && (\n

\n Let's have a great day and help some patients!\n

\n )}\n
\n \n );\n}\n","import { useState } from 'react';\nimport { sendFeedback } from '../utils/API';\nimport { notifyError, notifySuccess } from '../utils/Toast';\n\nexport default function Feedback() {\n const [feedback, setFeedback] = useState('');\n\n const handleSubmit = async () => {\n try {\n await sendFeedback({feedback});\n setFeedback('');\n notifySuccess('Thank you for the feedback!');\n } catch (error) {\n notifyError('Error sending feedback');\n throw new Error(error);\n }\n };\n\n return (\n
\n
\n
\n
\n

Feedback

\n setFeedback(e.target.value)}\n >\n \n Send Feedback\n \n
\n
\n
\n
\n );\n}\n","import { useContext, useEffect } from 'react';\nimport { useSearchParams, useNavigate } from 'react-router-dom';\nimport { AuthContext } from '../utils/Context';\n\n\nexport default function Billing() {\n const navigate = useNavigate();\n const useAuth = () => useContext(AuthContext);\n const auth = useAuth();\n const user = auth.getUser();\n\n const [searchParams] = useSearchParams();\n const sessionId = searchParams.get('session_id');\n const billingLevel = searchParams.get('billing_level');\n const amount = searchParams.get('amount');\n\n useEffect(() => {\n if (!sessionId) return;\n const newStatus = billingLevel === 'Monthly' ? 1 : 2;\n const newUser = { ...user, practice: { ...user.practice, practicePlanId: newStatus }, payment: 1 };\n auth.updateUser(newUser);\n }, [sessionId, auth, user, billingLevel]);\n\n return (\n
\n {sessionId ? (\n
\n
\n

Welcome to Ribbon!

\n
\n
\n

\n Your subscription is confirmed. You will be billed {'$'}\n {amount} {billingLevel === 'Monthly' ? 'monthly' : 'annually'}.\n

\n

\n Please note: RibbonMD, Inc.{' '}\n will appear on your credit card statement for your subscription.\n

\n

\n Thank you for choosing Ribbon for your healthcare documentation\n needs. We're excited to have you on board and look forward to\n supporting your practice with our AI-driven solutions.\n

\n

\n Ready to get started?\n
\n Your journey towards streamlined and efficient healthcare\n documentation begins now. Click the button below to dive into the\n Ribbon platform and explore all the features waiting for you.\n

\n \n
\n
\n
\n
\n
\n
\n ) : (\n
\n
\n

Ribbon Subscription Plan

\n

\n Unleash the Full Potential of AI in Healthcare Documentation\n

\n

\n Ribbon brings the power of AI to your practice, simplifying and\n enhancing medical documentation like never before. Our\n comprehensive subscription plan is designed to cater to all your\n documentation needs, regardless of your practice's size.\n Experience the future of healthcare documentation today.\n

\n
\n {/* test mode */}\n {/* */}\n {/* prod mode */}\n \n
\n
\n

\n Questions/Need Help?\n
\n If you have any questions or need help getting started, our sales\n team is here for you.\n
\n We also provide bulk user discounts. If you have a large practice and\n would like to learn more about our pricing options, please {''}\n \n Contact Us\n \n

\n
\n
\n )}\n
\n );\n}\n","import { useContext } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { AuthContext } from '../utils/Context';\n\nexport default function Settings() {\n const navigate = useNavigate();\n const useAuth = () => useContext(AuthContext);\n const auth = useAuth();\n\n const changePassword = () => {\n auth.logout(() => navigate('/reset', { replace: true }));\n };\n\n return (\n
\n
\n
\n
\n

Settings

\n
\n
\n \n
\n
\n \n \n \n
\n
\n \n You can update your billing information or cancel your account\n using the button above.\n \n
\n
\n
\n
\n );\n}\n","import { useContext, useState } from 'react';\nimport { useNavigate, useSearchParams } from 'react-router-dom';\nimport { AuthContext } from '../utils/Context';\nimport { emailRegex } from '../utils/regex';\nimport { useLoading } from '../utils/Hooks';\nimport Loader from '../components/Loader/Loader';\nimport Footer from '../components/Footer/Footer';\n\nexport default function Reset() {\n const [email, setEmail] = useState('');\n const [emailIsValid, setEmailIsValid] = useState(false);\n const [password, setPassword] = useState('');\n const [passwordIsValid, setPasswordIsValid] = useState(false);\n const [password2, setPassword2] = useState('');\n const [passwordIsValid2, setPasswordIsValid2] = useState(false);\n const [errorMessage, setErrorMessage] = useState('');\n const { isLoading, setIsLoading } = useLoading();\n const [searchParams] = useSearchParams();\n\n const token = searchParams.get('token');\n\n const navigate = useNavigate();\n const useAuth = () => useContext(AuthContext);\n const auth = useAuth();\n\n const updateEmail = (email) => {\n setEmail(email);\n if (emailRegex.test(email)) {\n setEmailIsValid(true);\n setErrorMessage('');\n } else {\n setErrorMessage('Please enter a valid email.');\n setEmailIsValid(false);\n }\n };\n\n const updatePassword = (password) => {\n setPassword(password);\n if (password.length < 8) {\n setErrorMessage('New password must be at least 8 characters.');\n setPasswordIsValid(false);\n } else {\n setErrorMessage('');\n setPasswordIsValid(true);\n }\n };\n\n\n const updatePassword2 = (password2) => {\n setPassword2(password2);\n if (password2.length < 8) {\n setErrorMessage('New password must be at least 8 characters.');\n setPasswordIsValid2(false);\n } else if (password !== password2) {\n setErrorMessage('Passwords must match.');\n setPasswordIsValid2(false);\n } else {\n setErrorMessage('');\n setPasswordIsValid2(true);\n }\n };\n\n\n const handleReset = async () => {\n if (!token) {\n setErrorMessage('Password reset token is missing. Please try resetting your password again.');\n return;\n }\n\n // return;\n setIsLoading(true);\n try {\n const res = await auth.resetPassword(password, token);\n setIsLoading(false);\n if (res.data === 'expired') {\n setErrorMessage('Password reset token has expired. Please try resetting your password again. You will be redirected to re enter your email in 10 seconds.');\n setTimeout(() => {\n setErrorMessage('');\n navigate('/reset', { replace: true });\n }, 10000);\n return;\n }\n setErrorMessage(\n 'Password reset successfully. You will be redirected to the log in page in 10 seconds.'\n );\n setTimeout(() => {\n setErrorMessage('');\n navigate('/signup', { replace: true });\n }, 10000);\n } catch (error) {\n setIsLoading(false);\n setErrorMessage(error.message);\n }\n }\n\n const handleForgotPassword = async () => {\n setIsLoading(true);\n try {\n await auth.forgotPassword(email);\n setIsLoading(false);\n setErrorMessage(\n `If a user for ${email} exists, you will receive a password reset email.`\n );\n } catch (error) {\n setIsLoading(false);\n setErrorMessage(error.message);\n }\n }\n\n const renderEmailForm = () => {\n return (\n <>\n
\n updateEmail(e.target.value)}\n pattern=\".+@globex\\.com\"\n required\n autoComplete=\"email\"\n />\n \n handleForgotPassword()}\n >\n Send Reset Password Email\n \n
\n {errorMessage}\n
\n \n );\n };\n\n const renderNewPasswordForm = () => {\n return (\n <>\n
\n updatePassword(e.target.value)}\n pattern=\".+@globex\\.com\"\n required\n />\n updatePassword2(e.target.value)}\n pattern=\".+@globex\\.com\"\n required\n />\n \n handleReset()}\n >\n Reset Password\n \n
\n {errorMessage}\n
\n \n );\n };\n\n return (\n <>\n {isLoading ? (\n \n ) : (\n
\n
\n ribb\n \n n\n
\n

Reset Password

\n {\n token\n ? renderNewPasswordForm()\n : renderEmailForm()\n }\n
\n
\n
\n
\n
\n
\n )}\n \n );\n}\n","/**\n * CSS Constants\n */\n/** @private */\nexport var ROOT = 'e-schedule';\n/** @private */\nexport var RTL = 'e-rtl';\n/** @private */\nexport var DEVICE_CLASS = 'e-device';\n/** @private */\nexport var MULTI_DRAG = 'e-multi-drag';\n/** @private */\nexport var ICON = 'e-icons';\n/** @private */\nexport var ENABLE_CLASS = 'e-enable';\n/** @private */\nexport var DISABLE_CLASS = 'e-disable';\n/** @private */\nexport var TABLE_CONTAINER_CLASS = 'e-table-container';\n/** @private */\nexport var SCHEDULE_TABLE_CLASS = 'e-schedule-table';\n/** @private */\nexport var ALLDAY_CELLS_CLASS = 'e-all-day-cells';\n/** @private */\nexport var HEADER_POPUP_CLASS = 'e-header-popup';\n/** @private */\nexport var HEADER_CALENDAR_CLASS = 'e-header-calendar';\n/** @private */\nexport var ALLDAY_ROW_CLASS = 'e-all-day-row';\n/** @private */\nexport var CONTENT_TABLE_CLASS = 'e-content-table';\n/** @private */\nexport var WORK_CELLS_CLASS = 'e-work-cells';\n/** @private */\nexport var WORK_HOURS_CLASS = 'e-work-hours';\n/** @private */\nexport var POPUP_OPEN = 'e-popup-open';\n/** @private */\nexport var POPUP_CLOSE = 'e-popup-close';\n/** @private */\nexport var DATE_HEADER_WRAP_CLASS = 'e-date-header-wrap';\n/** @private */\nexport var DATE_HEADER_CONTAINER_CLASS = 'e-date-header-container';\n/** @private */\nexport var HEADER_CELLS_CLASS = 'e-header-cells';\n/** @private */\nexport var HEADER_WEEK_CELLS_CLASS = 'e-header-week-cell';\n/** @private */\nexport var HEADER_MONTH_CELLS_CLASS = 'e-header-month-cell';\n/** @private */\nexport var HEADER_YEAR_CELLS_CLASS = 'e-header-year-cell';\n/** @private */\nexport var WORKDAY_CLASS = 'e-work-days';\n/** @private */\nexport var OTHERMONTH_CLASS = 'e-other-month';\n/** @private */\nexport var CURRENT_DAY_CLASS = 'e-current-day';\n/** @private */\nexport var CURRENTDATE_CLASS = 'e-current-date';\n/** @private */\nexport var CURRENT_PANEL_CLASS = 'e-current-panel';\n/** @private */\nexport var PREVIOUS_PANEL_CLASS = 'e-previous-panel';\n/** @private */\nexport var NEXT_PANEL_CLASS = 'e-next-panel';\n/** @private */\nexport var PREVIOUS_DATE_CLASS = 'e-prev';\n/** @private */\nexport var NEXT_DATE_CLASS = 'e-next';\n/** @private */\nexport var TRANSLATE_CLASS = 'e-translate';\n/** @private */\nexport var LEFT_INDENT_CLASS = 'e-left-indent';\n/** @private */\nexport var LEFT_INDENT_WRAP_CLASS = 'e-left-indent-wrap';\n/** @private */\nexport var EVENT_TABLE_CLASS = 'e-event-table';\n/** @private */\nexport var RESOURCE_LEFT_TD_CLASS = 'e-resource-left-td';\n/** @private */\nexport var RESOURCE_GROUP_CELLS_CLASS = 'e-resource-group-cells';\n/** @private */\nexport var RESOURCE_TEXT_CLASS = 'e-resource-text';\n/** @private */\nexport var RESOURCE_COLUMN_WRAP_CLASS = 'e-resource-column-wrap';\n/** @private */\nexport var RESOURCE_COLUMN_TABLE_CLASS = 'e-resource-column-table';\n/** @private */\nexport var RESOURCE_CHILD_CLASS = 'e-child-node';\n/** @private */\nexport var RESOURCE_PARENT_CLASS = 'e-parent-node';\n/** @private */\nexport var RESOURCE_EXPAND_CLASS = 'e-resource-expand';\n/** @private */\nexport var RESOURCE_COLLAPSE_CLASS = 'e-resource-collapse';\n/** @private */\nexport var RESOURCE_TREE_ICON_CLASS = 'e-resource-tree-icon';\n/** @private */\nexport var RESOURCE_CELLS_CLASS = 'e-resource-cells';\n/** @private */\nexport var TIME_CELLS_WRAP_CLASS = 'e-time-cells-wrap';\n/** @private */\nexport var TIME_CELLS_CLASS = 'e-time-cells';\n/** @private */\nexport var TIME_SLOT_CLASS = 'e-time-slots';\n/** @private */\nexport var ALTERNATE_CELLS_CLASS = 'e-alternate-cells';\n/** @private */\nexport var CURRENT_TIME_CLASS = 'e-current-time';\n/** @private */\nexport var CURRENT_TIMELINE_CLASS = 'e-current-timeline';\n/** @private */\nexport var PREVIOUS_TIMELINE_CLASS = 'e-previous-timeline';\n/** @private */\nexport var HIDE_CHILDS_CLASS = 'e-hide-childs';\n/** @private */\nexport var SCROLL_CONTAINER_CLASS = 'e-scroll-container';\n/** @private */\nexport var WRAPPER_CLASS = 'e-wrapper';\n/** @private */\nexport var TIMELINE_WRAPPER_CLASS = 'e-timeline-wrapper';\n/** @private */\nexport var APPOINTMENT_WRAPPER_CLASS = 'e-appointment-wrapper';\n/** @private */\nexport var DAY_WRAPPER_CLASS = 'e-day-wrapper';\n/** @private */\nexport var TOOLBAR_CONTAINER = 'e-schedule-toolbar-container';\n/** @private */\nexport var RESOURCE_TOOLBAR_CONTAINER = 'e-schedule-resource-toolbar-container';\n/** @private */\nexport var HEADER_TOOLBAR = 'e-schedule-toolbar';\n/** @private */\nexport var RESOURCE_HEADER_TOOLBAR = 'e-schedule-resource-toolbar';\n/** @private */\nexport var SELECTED_CELL_CLASS = 'e-selected-cell';\n/** @private */\nexport var WEEK_NUMBER_WRAPPER_CLASS = 'e-week-number-wrapper';\n/** @private */\nexport var WEEK_NUMBER_CLASS = 'e-week-number';\n/** @private */\nexport var APPOINTMENT_WRAP_CLASS = 'e-appointment-wrap';\n/** @private */\nexport var WRAPPER_CONTAINER_CLASS = 'e-wrapper-container';\n/** @private */\nexport var APPOINTMENT_CONTAINER_CLASS = 'e-appointment-container';\n/** @private */\nexport var APPOINTMENT_CLASS = 'e-appointment';\n/** @private */\nexport var BLOCK_APPOINTMENT_CLASS = 'e-block-appointment';\n/** @private */\nexport var BLOCK_INDICATOR_CLASS = 'e-block-indicator';\n/** @private */\nexport var APPOINTMENT_BORDER = 'e-appointment-border';\n/** @private */\nexport var APPOINTMENT_DETAILS = 'e-appointment-details';\n/** @private */\nexport var SUBJECT_WRAP = 'e-subject-wrap';\n/** @private */\nexport var RESOURCE_NAME = 'e-resource-name';\n/** @private */\nexport var APPOINTMENT_TIME = 'e-time';\n/** @private */\nexport var TABLE_WRAP_CLASS = 'e-table-wrap';\n/** @private */\nexport var OUTER_TABLE_CLASS = 'e-outer-table';\n/** @private */\nexport var CONTENT_WRAP_CLASS = 'e-content-wrap';\n/** @private */\nexport var VIRTUAL_TRACK_CLASS = 'e-virtual-track';\n/** @private */\nexport var AGENDA_CELLS_CLASS = 'e-agenda-cells';\n/** @private */\nexport var AGENDA_CURRENT_DAY_CLASS = 'e-current-day';\n/** @private */\nexport var AGENDA_SELECTED_CELL = 'e-active-appointment-agenda';\n/** @private */\nexport var MONTH_HEADER_CLASS = 'e-month-header';\n/** @private */\nexport var AGENDA_HEADER_CLASS = 'e-day-date-header';\n/** @private */\nexport var AGENDA_RESOURCE_CLASS = 'e-resource-column';\n/** @private */\nexport var AGENDA_DATE_CLASS = 'e-date-column';\n/** @private */\nexport var NAVIGATE_CLASS = 'e-navigate';\n/** @private */\nexport var DATE_HEADER_CLASS = 'e-date-header';\n/** @private */\nexport var AGENDA_DAY_BORDER_CLASS = 'e-day-border';\n/** @private */\nexport var DATE_BORDER_CLASS = 'e-date-border';\n/** @private */\nexport var AGENDA_DAY_PADDING_CLASS = 'e-day-padding';\n/** @private */\nexport var DATE_TIME_CLASS = 'e-date-time';\n/** @private */\nexport var DATE_TIME_WRAPPER_CLASS = 'e-date-time-wrapper';\n/** @private */\nexport var AGENDA_EMPTY_EVENT_CLASS = 'e-empty-event';\n/** @private */\nexport var AGENDA_NO_EVENT_CLASS = 'e-no-event';\n/** @private */\nexport var APPOINTMENT_INDICATOR_CLASS = 'e-appointment-indicator';\n/** @private */\nexport var EVENT_INDICATOR_CLASS = 'e-indicator';\n/** @private */\nexport var EVENT_ICON_UP_CLASS = 'e-up-icon';\n/** @private */\nexport var EVENT_ICON_DOWN_CLASS = 'e-down-icon';\n/** @private */\nexport var EVENT_ICON_LEFT_CLASS = 'e-left-icon';\n/** @private */\nexport var EVENT_ICON_RIGHT_CLASS = 'e-right-icon';\n/** @private */\nexport var EVENT_ACTION_CLASS = 'e-event-action';\n/** @private */\nexport var NEW_EVENT_CLASS = 'e-new-event';\n/** @private */\nexport var CLONE_ELEMENT_CLASS = 'e-schedule-event-clone';\n/** @private */\nexport var MONTH_CLONE_ELEMENT_CLASS = 'e-month-event';\n/** @private */\nexport var CLONE_TIME_INDICATOR_CLASS = 'e-clone-time-indicator';\n/** @private */\nexport var DRAG_CLONE_CLASS = 'e-drag-clone';\n/** @private */\nexport var EVENT_RESIZE_CLASS = 'e-event-resize';\n/** @private */\nexport var RESIZE_CLONE_CLASS = 'e-resize-clone';\n/** @private */\nexport var LEFT_RESIZE_HANDLER = 'e-left-handler';\n/** @private */\nexport var RIGHT_RESIZE_HANDLER = 'e-right-handler';\n/** @private */\nexport var TOP_RESIZE_HANDLER = 'e-top-handler';\n/** @private */\nexport var BOTTOM_RESIZE_HANDLER = 'e-bottom-handler';\n/** @private */\nexport var EVENT_RECURRENCE_ICON_CLASS = 'e-recurrence-icon';\n/** @private */\nexport var EVENT_RECURRENCE_EDIT_ICON_CLASS = 'e-recurrence-edit-icon';\n/** @private */\nexport var HEADER_ROW_CLASS = 'e-header-row';\n/** @private */\nexport var ALLDAY_APPOINTMENT_WRAPPER_CLASS = 'e-all-day-appointment-wrapper';\n/** @private */\nexport var ALLDAY_APPOINTMENT_CLASS = 'e-all-day-appointment';\n/** @private */\nexport var EVENT_COUNT_CLASS = 'e-appointment-hide';\n/** @private */\nexport var ROW_COUNT_WRAPPER_CLASS = 'e-row-count-wrapper';\n/** @private */\nexport var ALLDAY_APPOINTMENT_SECTION_CLASS = 'e-all-day-appointment-section';\n/** @private */\nexport var APPOINTMENT_ROW_EXPAND_CLASS = 'e-appointment-expand';\n/** @private */\nexport var APPOINTMENT_ROW_COLLAPSE_CLASS = 'e-appointment-collapse';\n/** @private */\nexport var MORE_INDICATOR_CLASS = 'e-more-indicator';\n/** @private */\nexport var CELL_POPUP_CLASS = 'e-cell-popup';\n/** @private */\nexport var EVENT_POPUP_CLASS = 'e-event-popup';\n/** @private */\nexport var MULTIPLE_EVENT_POPUP_CLASS = 'e-multiple-event-popup';\n/** @private */\nexport var POPUP_HEADER_CLASS = 'e-popup-header';\n/** @private */\nexport var POPUP_HEADER_ICON_WRAPPER = 'e-header-icon-wrapper';\n/** @private */\nexport var POPUP_CONTENT_CLASS = 'e-popup-content';\n/** @private */\nexport var POPUP_FOOTER_CLASS = 'e-popup-footer';\n/** @private */\nexport var DATE_TIME_DETAILS_CLASS = 'e-date-time-details';\n/** @private */\nexport var RECURRENCE_SUMMARY_CLASS = 'e-recurrence-summary';\n/** @private */\nexport var QUICK_POPUP_EVENT_DETAILS_CLASS = 'e-event-details';\n/** @private */\nexport var EVENT_CREATE_CLASS = 'e-event-create';\n/** @private */\nexport var EDIT_EVENT_CLASS = 'e-event-edit';\n/** @private */\nexport var DELETE_EVENT_CLASS = 'e-event-delete';\n/** @private */\nexport var TEXT_ELLIPSIS = 'e-text-ellipsis';\n/** @private */\nexport var MORE_POPUP_WRAPPER_CLASS = 'e-more-popup-wrapper';\n/** @private */\nexport var MORE_EVENT_POPUP_CLASS = 'e-more-event-popup';\n/** @private */\nexport var MORE_EVENT_HEADER_CLASS = 'e-more-event-header';\n/** @private */\nexport var MORE_EVENT_DATE_HEADER_CLASS = 'e-more-event-date-header';\n/** @private */\nexport var MORE_EVENT_HEADER_DAY_CLASS = 'e-header-day';\n/** @private */\nexport var MORE_EVENT_HEADER_DATE_CLASS = 'e-header-date';\n/** @private */\nexport var MORE_EVENT_CLOSE_CLASS = 'e-more-event-close';\n/** @private */\nexport var MORE_EVENT_CONTENT_CLASS = 'e-more-event-content';\n/** @private */\nexport var MORE_EVENT_WRAPPER_CLASS = 'e-more-appointment-wrapper';\n/** @private */\nexport var QUICK_DIALOG_CLASS = 'e-quick-dialog';\n/** @private */\nexport var QUICK_DIALOG_OCCURRENCE_CLASS = 'e-quick-dialog-occurrence-event';\n/** @private */\nexport var QUICK_DIALOG_SERIES_CLASS = 'e-quick-dialog-series-event';\n/** @private */\nexport var QUICK_DIALOG_FOLLOWING_EVENTS_CLASS = 'e-quick-dialog-following-events';\n/** @private */\nexport var FOLLOWING_EVENTS_DIALOG = 'e-following-events-dialog';\n/** @private */\nexport var QUICK_DIALOG_DELETE_CLASS = 'e-quick-dialog-delete';\n/** @private */\nexport var QUICK_DIALOG_CANCEL_CLASS = 'e-quick-dialog-cancel';\n/** @private */\nexport var QUICK_DIALOG_ALERT_OK = 'e-quick-alertok';\n/** @private */\nexport var QUICK_DIALOG_ALERT_CANCEL = 'e-quick-alertcancel';\n/** @private */\nexport var QUICK_DIALOG_ALERT_FOLLOWING = 'e-quick-alertfollowing';\n/** @private */\nexport var QUICK_DIALOG_ALERT_BTN_CLASS = 'e-quick-dialog-alert-btn';\n/** @private */\nexport var EVENT_WINDOW_DIALOG_CLASS = 'e-schedule-dialog';\n/** @private */\nexport var FORM_CONTAINER_CLASS = 'e-form-container';\n/** @private */\nexport var FORM_CLASS = 'e-schedule-form';\n/** @private */\nexport var EVENT_WINDOW_ALLDAY_TZ_DIV_CLASS = 'e-all-day-time-zone-row';\n/** @private */\nexport var EVENT_WINDOW_ALL_DAY_CLASS = 'e-all-day';\n/** @private */\nexport var TIME_ZONE_CLASS = 'e-time-zone';\n/** @private */\nexport var TIME_ZONE_ICON_CLASS = 'e-time-zone-icon';\n/** @private */\nexport var TIME_ZONE_DETAILS_CLASS = 'e-time-zone-details';\n/** @private */\nexport var EVENT_WINDOW_REPEAT_DIV_CLASS = 'e-repeat-parent-row';\n/** @private */\nexport var EVENT_WINDOW_REPEAT_CLASS = 'e-repeat';\n/** @private */\nexport var EVENT_WINDOW_TITLE_LOCATION_DIV_CLASS = 'e-title-location-row';\n/** @private */\nexport var SUBJECT_CLASS = 'e-subject';\n/** @private */\nexport var LOCATION_CLASS = 'e-location';\n/** @private */\nexport var LOCATION_ICON_CLASS = 'e-location-icon';\n/** @private */\nexport var LOCATION_DETAILS_CLASS = 'e-location-details';\n/** @private */\nexport var EVENT_WINDOW_START_END_DIV_CLASS = 'e-start-end-row';\n/** @private */\nexport var EVENT_WINDOW_START_CLASS = 'e-start';\n/** @private */\nexport var EVENT_WINDOW_END_CLASS = 'e-end';\n/** @private */\nexport var EVENT_WINDOW_RESOURCES_DIV_CLASS = 'e-resources-row';\n/** @private */\nexport var DESCRIPTION_CLASS = 'e-description';\n/** @private */\nexport var DESCRIPTION_ICON_CLASS = 'e-description-icon';\n/** @private */\nexport var DESCRIPTION_DETAILS_CLASS = 'e-description-details';\n/** @private */\nexport var EVENT_WINDOW_TIME_ZONE_DIV_CLASS = 'e-time-zone-row';\n/** @private */\nexport var EVENT_WINDOW_START_TZ_CLASS = 'e-start-time-zone';\n/** @private */\nexport var EVENT_WINDOW_END_TZ_CLASS = 'e-end-time-zone';\n/** @private */\nexport var EVENT_WINDOW_BACK_ICON_CLASS = 'e-back-icon';\n/** @private */\nexport var EVENT_WINDOW_SAVE_ICON_CLASS = 'e-save-icon';\n/** @private */\nexport var EVENT_WINDOW_CANCEL_BUTTON_CLASS = 'e-event-cancel';\n/** @private */\nexport var EVENT_WINDOW_SAVE_BUTTON_CLASS = 'e-event-save';\n/** @private */\nexport var EVENT_WINDOW_DIALOG_PARENT_CLASS = 'e-dialog-parent';\n/** @private */\nexport var EVENT_WINDOW_TITLE_TEXT_CLASS = 'e-title-text';\n/** @private */\nexport var EVENT_WINDOW_ICON_DISABLE_CLASS = 'e-icon-disable';\n/** @private */\nexport var EDIT_CLASS = 'e-edit';\n/** @private */\nexport var EDIT_ICON_CLASS = 'e-edit-icon';\n/** @private */\nexport var DELETE_CLASS = 'e-delete';\n/** @private */\nexport var DELETE_ICON_CLASS = 'e-delete-icon';\n/** @private */\nexport var CLOSE_CLASS = 'e-close';\n/** @private */\nexport var CLOSE_ICON_CLASS = 'e-close-icon';\n/** @private */\nexport var ERROR_VALIDATION_CLASS = 'e-schedule-error';\n/** @private */\nexport var EVENT_TOOLTIP_ROOT_CLASS = 'e-schedule-event-tooltip';\n/** @private */\nexport var ALLDAY_ROW_ANIMATE_CLASS = 'e-animate';\n/** @private */\nexport var TIMESCALE_DISABLE = 'e-timescale-disable';\n/** @private */\nexport var DISABLE_DATE = 'e-disable-date';\n/** @private */\nexport var HIDDEN_CLASS = 'e-hidden';\n/** @private */\nexport var DISABLE_DATES = 'e-disable-dates';\n/** @private */\nexport var POPUP_WRAPPER_CLASS = 'e-quick-popup-wrapper';\n/** @private */\nexport var POPUP_TABLE_CLASS = 'e-popup-table';\n/** @private */\nexport var RESOURCE_MENU = 'e-resource-menu';\n/** @private */\nexport var RESOURCE_MENU_ICON = 'e-icon-menu';\n/** @private */\nexport var RESOURCE_LEVEL_TITLE = 'e-resource-level-title';\n/** @private */\nexport var RESOURCE_TREE = 'e-resource-tree';\n/** @private */\nexport var RESOURCE_TREE_POPUP_OVERLAY = 'e-resource-tree-popup-overlay';\n/** @private */\nexport var RESOURCE_TREE_POPUP = 'e-resource-tree-popup';\n/** @private */\nexport var RESOURCE_CLASS = 'e-resource';\n/** @private */\nexport var RESOURCE_ICON_CLASS = 'e-resource-icon';\n/** @private */\nexport var RESOURCE_DETAILS_CLASS = 'e-resource-details';\n/** @private */\nexport var DATE_TIME_ICON_CLASS = 'e-date-time-icon';\n/** @private */\nexport var VIRTUAL_SCROLL_CLASS = 'e-virtual-scroll';\n/** @private */\nexport var ICON_DISABLE_CLASS = 'e-icon-disable';\n/** @private */\nexport var AUTO_HEIGHT = 'e-auto-height';\n/** @private */\nexport var IGNORE_WHITESPACE = 'e-ignore-whitespace';\n/** @private */\nexport var EVENT_TEMPLATE = 'e-template';\n/** @private */\nexport var READ_ONLY = 'e-read-only';\n/** @private */\nexport var MONTH_HEADER_WRAPPER = 'e-month-header-wrapper';\n/** @private */\nexport var INLINE_SUBJECT_CLASS = 'e-inline-subject';\n/** @private */\nexport var INLINE_APPOINTMENT_CLASS = 'e-inline-appointment';\n/** @hidden */\nexport var SCROLL_HIDDEN = 'e-scroll-hidden';\n/** @private */\nexport var ALLDAY_APPOINTMENT_SCROLL = 'e-all-day-scroll';\n/** @private */\nexport var ALLDAY_APPOINTMENT_AUTO = 'e-all-day-auto';\n","/**\n * Constants\n */\n/** @private */\nexport var cellClick = 'cellClick';\n/** @private */\nexport var cellDoubleClick = 'cellDoubleClick';\n/** @private */\nexport var moreEventsClick = 'moreEventsClick';\n/** @private */\nexport var select = 'select';\n/** @private */\nexport var hover = 'hover';\n/** @private */\nexport var actionBegin = 'actionBegin';\n/** @private */\nexport var actionComplete = 'actionComplete';\n/** @private */\nexport var actionFailure = 'actionFailure';\n/** @private */\nexport var navigating = 'navigating';\n/** @private */\nexport var renderCell = 'renderCell';\n/** @private */\nexport var eventClick = 'eventClick';\n/** @private */\nexport var eventDoubleClick = 'eventDoubleClick';\n/** @private */\nexport var eventRendered = 'eventRendered';\n/** @private */\nexport var dataBinding = 'dataBinding';\n/** @private */\nexport var dataBound = 'dataBound';\n/** @private */\nexport var popupOpen = 'popupOpen';\n/** @private */\nexport var popupClose = 'popupClose';\n/** @private */\nexport var dragStart = 'dragStart';\n/** @private */\nexport var drag = 'drag';\n/** @private */\nexport var dragStop = 'dragStop';\n/** @private */\nexport var resizeStart = 'resizeStart';\n/** @private */\nexport var resizing = 'resizing';\n/** @private */\nexport var resizeStop = 'resizeStop';\n/** @private */\nexport var inlineClick = 'inlineClick';\n/** @private */\nexport var cellSelect = 'cellSelect';\n/** @private */\nexport var virtualScrollStart = 'virtualScrollStart';\n/** @private */\nexport var virtualScrollStop = 'virtualScrollStop';\n/**\n * Specifies schedule internal events\n */\n/** @private */\nexport var initialLoad = 'initial-load';\n/** @private */\nexport var initialEnd = 'initial-end';\n/** @private */\nexport var print = 'print';\n/** @private */\nexport var dataReady = 'data-ready';\n/** @private */\nexport var eventsLoaded = 'events-loaded';\n/** @private */\nexport var contentReady = 'content-ready';\n/** @private */\nexport var scroll = 'scroll';\n/** @private */\nexport var virtualScroll = 'virtual-scroll';\n/** @private */\nexport var scrollUiUpdate = 'scroll-ui-update';\n/** @private */\nexport var uiUpdate = 'ui-update';\n/** @private */\nexport var documentClick = 'document-click';\n/** @private */\nexport var cellMouseDown = 'cell-mouse-down';\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createElement, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Schedule common utilities\n */\nexport var WEEK_LENGTH = 7;\nexport var DEFAULT_WEEKS = 6;\nexport var MS_PER_DAY = 86400000;\nexport var MS_PER_MINUTE = 60000;\n/**\n * Method to get height from element\n *\n * @param {Element} container Accepts the DOM element\n * @param {string} elementClass Accepts the element class\n * @returns {number} Returns the height of the element\n */\nexport function getElementHeightFromClass(container, elementClass) {\n var height = 0;\n var el = createElement('div', { className: elementClass }).cloneNode();\n el.style.visibility = 'hidden';\n el.style.position = 'absolute';\n container.appendChild(el);\n height = el.getBoundingClientRect().height;\n remove(el);\n return height;\n}\n/**\n * Method to get width from element\n *\n * @param {Element} container Accepts the DOM element\n * @param {string} elementClass Accepts the element class\n * @returns {number} Returns the width of the element\n */\nexport function getElementWidthFromClass(container, elementClass) {\n var width = 0;\n var el = createElement('div', { className: elementClass }).cloneNode();\n el.style.visibility = 'hidden';\n el.style.position = 'absolute';\n container.appendChild(el);\n width = el.getBoundingClientRect().width;\n remove(el);\n return width;\n}\n/**\n * Method to get translateY value\n *\n * @param {HTMLElement | Element} element Accepts the DOM element\n * @returns {number} Returns the translateY value of given element\n */\nexport function getTranslateY(element) {\n var style = getComputedStyle(element);\n return window.WebKitCSSMatrix ?\n new WebKitCSSMatrix(style.webkitTransform).m42 : 0;\n}\n/**\n * Method to get translateX value\n *\n * @param {HTMLElement | Element} element Accepts the DOM element\n * @returns {number} Returns the translateX value of given element\n */\nexport function getTranslateX(element) {\n var style = getComputedStyle(element);\n return window.WebKitCSSMatrix ?\n new WebKitCSSMatrix(style.webkitTransform).m41 : 0;\n}\n/**\n * Method to get week first date\n *\n * @param {Date} date Accepts the date object\n * @param {number} firstDayOfWeek Accepts the first day of week number\n * @returns {Date} Returns the date object\n */\nexport function getWeekFirstDate(date, firstDayOfWeek) {\n var date1 = new Date(date.getTime());\n firstDayOfWeek = (firstDayOfWeek - date1.getDay() + 7 * (-1)) % 7;\n return new Date(date1.setDate(date1.getDate() + firstDayOfWeek));\n}\n/**\n * Method to get week last date\n *\n * @param {Date} date Accepts the date object\n * @param {number} firstDayOfWeek Accepts the first day of week number\n * @returns {Date} Returns the date object\n */\nexport function getWeekLastDate(date, firstDayOfWeek) {\n var weekFirst = getWeekFirstDate(date, firstDayOfWeek);\n var weekLast = new Date(weekFirst.getFullYear(), weekFirst.getMonth(), weekFirst.getDate() + 6);\n return new Date(weekLast.getTime());\n}\n/**\n * Method to get first date of month\n *\n * @param {Date} date Accepts the date object\n * @returns {Date} Returns the date object\n */\nexport function firstDateOfMonth(date) {\n return new Date(date.getFullYear(), date.getMonth(), 1);\n}\n/**\n * Method to get last date of month\n *\n * @param {Date} date Accepts the date object\n * @returns {Date} Returns the date object\n */\nexport function lastDateOfMonth(date) {\n return new Date(date.getFullYear(), date.getMonth() + 1, 0);\n}\n/**\n * Method to get week number\n *\n * @param {Date} date Accepts the date object\n * @returns {number} Returns the week number\n */\nexport function getWeekNumber(date) {\n var date1 = new Date(date.getFullYear(), 0, 1).valueOf();\n var currentDate = new Date(date.getFullYear(), date.getMonth(), date.getDate()).valueOf();\n var dayOfYear = ((currentDate - date1 + MS_PER_DAY) / MS_PER_DAY);\n return Math.ceil(dayOfYear / 7);\n}\n/**\n * Method to get week middle date\n *\n * @param {Date} weekFirst Accepts the week first date object\n * @param {Date} weekLast Accepts the week last date object\n * @returns {Date} Returns the date object\n */\nexport function getWeekMiddleDate(weekFirst, weekLast) {\n return new Date(weekLast.valueOf() - ((weekLast.valueOf() - weekFirst.valueOf()) / 2));\n}\n/**\n * Method to set time to date object\n *\n * @param {Date} date Accepts the date object\n * @param {number} time Accepts the milliseconds\n * @returns {Date} Returns the date object\n */\nexport function setTime(date, time) {\n var tzOffsetBefore = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffsetBefore;\n date.setTime(d.getTime() + tzOffsetDiff * MS_PER_MINUTE);\n return date;\n}\n/**\n * Method the reset hours in date object\n *\n * @param {Date} date Accepts the date object\n * @returns {Date} Returns the date object\n */\nexport function resetTime(date) {\n return new Date(date.getFullYear(), date.getMonth(), date.getDate());\n}\n/**\n * Method to get milliseconds from date object\n *\n * @param {Date} date Accepts the date object\n * @returns {number} Returns the milliseconds from date object\n */\nexport function getDateInMs(date) {\n var localOffset = new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0).getTimezoneOffset();\n var dateOffset = date.getTimezoneOffset();\n var timezoneOffset = dateOffset - localOffset;\n return ((date.getTime() - new Date(date.getFullYear(), date.getMonth(), date.getDate(), 0, 0, 0).getTime())\n - (timezoneOffset * 60 * 1000));\n}\n/**\n * Method to get date count between two dates\n *\n * @param {Date} startDate Accepts the date object\n * @param {Date} endDate Accepts the date object\n * @returns {number} Returns the date count\n */\nexport function getDateCount(startDate, endDate) {\n return Math.ceil((endDate.getTime() - startDate.getTime()) / MS_PER_DAY);\n}\n/**\n * Method to add no of days in date object\n *\n * @param {Date} date Accepts the date object\n * @param {number} noOfDays Accepts the number of days count\n * @returns {Date} Returns the date object\n */\nexport function addDays(date, noOfDays) {\n date = new Date('' + date);\n return new Date(date.setDate(date.getDate() + noOfDays));\n}\n/**\n * Method to add no of months in date object\n *\n * @param {Date} date Accepts the date object\n * @param {number} noOfMonths Accepts the number of month count\n * @returns {Date} Returns the date object\n */\nexport function addMonths(date, noOfMonths) {\n date = new Date('' + date);\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + noOfMonths);\n date.setDate(Math.min(day, getMaxDays(date)));\n return date;\n}\n/**\n * Method to add no of years in date object\n *\n * @param {Date} date Accepts the date object\n * @param {number} noOfYears Accepts the number of month count\n * @returns {Date} Returns the date object\n */\nexport function addYears(date, noOfYears) {\n date = new Date('' + date);\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + noOfYears);\n date.setDate(Math.min(day, getMaxDays(date)));\n return date;\n}\n/**\n * Method to get start and end hours\n *\n * @param {Date} date Accepts the date object\n * @param {Date} startHour Accepts the start hour date object\n * @param {Date} endHour Accepts the end hour date object\n * @returns {Object} Returns the start and end hour date objects\n */\nexport function getStartEndHours(date, startHour, endHour) {\n var date1 = new Date(date.getTime());\n date1.setHours(startHour.getHours());\n date1.setMinutes(startHour.getMinutes());\n date1.setSeconds(startHour.getSeconds());\n var date2 = new Date(date.getTime());\n if (endHour.getHours() === 0) {\n date2 = addDays(date2, 1);\n }\n else {\n date2.setHours(endHour.getHours());\n date2.setMinutes(endHour.getMinutes());\n date2.setSeconds(endHour.getSeconds());\n }\n return { startHour: date1, endHour: date2 };\n}\n/**\n * Method to get month last date\n *\n * @param {Date} date Accepts the date object\n * @returns {number} Returns the month last date\n */\nexport function getMaxDays(date) {\n return lastDateOfMonth(date).getDate();\n}\n/**\n * Method to get days count between two dates\n *\n * @param {Date} startDate Accepts the date object\n * @param {Date} endDate Accepts the date object\n * @returns {number} Returns the days count\n */\nexport function getDaysCount(startDate, endDate) {\n var strTime = resetTime(new Date(startDate));\n var endTime = resetTime(new Date(endDate));\n return Math.round((endTime.getTime() - strTime.getTime()) / MS_PER_DAY);\n}\n/**\n * Method to get date object from date string\n *\n * @param {string} date Accepts the date string\n * @returns {Date} Returns the date object\n */\nexport function getDateFromString(date) {\n return date.indexOf('Date') !== -1 ? new Date(parseInt(date.match(/\\d+/g).toString(), 10)) :\n date.indexOf('T') !== -1 ? new Date(date) : new Date(date.replace(/-/g, '/'));\n}\n/** @private */\nvar scrollWidth = null;\n/** @private */\nvar pixelRatio = null;\n/**\n * Method to get scrollbar width\n *\n * @returns {number} Returns the scrollbar width\n * @private\n */\nexport function getScrollBarWidth() {\n if (scrollWidth !== null) {\n return scrollWidth;\n }\n if (pixelRatio === null) {\n pixelRatio = window.devicePixelRatio || window.screen.availWidth / document.documentElement.clientWidth;\n }\n var divNode = createElement('div');\n var value = 0;\n divNode.style.cssText = 'width:100px;height: 100px;overflow: scroll;position: absolute;top: -9999px;';\n document.body.appendChild(divNode);\n var ratio = (devicePixelRatio) ? (devicePixelRatio.toFixed(2) === '1.10' || devicePixelRatio <= 1) ?\n Math.ceil(devicePixelRatio % 1) : Math.floor(devicePixelRatio % 1) : 0;\n value = (divNode.offsetWidth - divNode.clientWidth - ratio) | 0;\n document.body.removeChild(divNode);\n return scrollWidth = value;\n}\n/**\n * Method to reset scrollbar width\n *\n * @private\n * @returns {void}\n */\nexport function resetScrollbarWidth() {\n var zoomPixelRatio = window.devicePixelRatio || window.screen.availWidth / document.documentElement.clientWidth;\n if (pixelRatio && pixelRatio !== zoomPixelRatio) {\n scrollWidth = null;\n pixelRatio = zoomPixelRatio;\n }\n}\n/**\n * Method to find the index from data collection\n *\n * @param {Object} data Accepts the data as object\n * @param {string} field Accepts the field name\n * @param {string} value Accepts the value name\n * @param {Object} event Accepts the data as object\n * @param {Object[]} resourceCollection Accepts the data collections\n * @returns {number} Returns the index number\n */\n// eslint-disable-next-line max-len\nexport function findIndexInData(data, field, value, event, resourceCollection) {\n for (var i = 0, length_1 = data.length; i < length_1; i++) {\n if (data[parseInt(i.toString(), 10)][\"\" + field] === value) {\n if (event) {\n var field_1 = resourceCollection.slice(-2)[0].field;\n var res = (event[\"\" + field_1] instanceof Array ? event[\"\" + field_1] : [event[\"\" + field_1]]);\n var resData = res.join(',');\n if (resData.includes(data[parseInt(i.toString(), 10)][resourceCollection.slice(-1)[0].groupIDField])) {\n return i;\n }\n }\n else {\n return i;\n }\n }\n }\n return -1;\n}\n/**\n * Method to get element outer height\n *\n * @param {HTMLElement} element Accepts the DOM element\n * @returns {number} Returns the outer height of the given element\n */\nexport function getOuterHeight(element) {\n var style = getComputedStyle(element);\n return element.offsetHeight + (parseInt(style.marginTop, 10) || 0) + (parseInt(style.marginBottom, 10) || 0);\n}\n/**\n * Method to remove child elements\n *\n * @param {HTMLElement | Element} element Accepts the DOM element\n * @returns {void}\n */\nexport function removeChildren(element) {\n var elementChildren = [].slice.call(element.children);\n for (var _i = 0, elementChildren_1 = elementChildren; _i < elementChildren_1.length; _i++) {\n var elementChild = elementChildren_1[_i];\n element.removeChild(elementChild);\n }\n}\n/**\n * Method to check DST is present or not in date object\n *\n * @param {Date} date Accepts the date object\n * @returns {boolean} Returns the boolean value for either DST is present or not\n */\nexport function isDaylightSavingTime(date) {\n var jan = new Date(date.getFullYear(), 0, 1);\n var jul = new Date(date.getFullYear(), 6, 1);\n return date.getTimezoneOffset() < Math.max(jan.getTimezoneOffset(), jul.getTimezoneOffset());\n}\n/**\n * Method to get UTC time value from date\n *\n * @param {Date} date Accepts the date\n * @returns {number} Returns the UTC time value\n */\nexport function getUniversalTime(date) {\n var year = date.getFullYear();\n var month = date.getMonth();\n var day = date.getDate();\n var hours = date.getHours();\n var minutes = date.getMinutes();\n var seconds = date.getSeconds();\n var milliseconds = date.getMilliseconds();\n return Date.UTC(year, month, day, hours, minutes, seconds, milliseconds);\n}\n/**\n * Method to check the device\n *\n * @returns {boolean} Returns the boolean value for either device is present or not.\n */\nexport function isMobile() {\n return window.navigator.userAgent.toLowerCase().indexOf('mobi') > -1;\n}\n/**\n * Method to check the IPad device\n *\n * @returns {boolean} Returns the boolean value for either IPad device is present or not.\n */\nexport function isIPadDevice() {\n return window.navigator.userAgent.toLowerCase().indexOf('ipad') > -1;\n}\n/**\n * Method to capitalize the first word in string\n *\n * @param {string} inputString Accepts the string value\n * @param {string} type Accepts the string type\n * @returns {string} Returns the output string\n */\nexport function capitalizeFirstWord(inputString, type) {\n if (type === 'multiple') {\n inputString = inputString.split(' ').map(function (e) { return e.charAt(0).toLocaleUpperCase() + e.substring(1); }).join(' ');\n }\n else if (type === 'single') {\n if (inputString[0] >= '0' && inputString[0] <= '9') {\n var array = inputString.match(/[a-zA-Z]/);\n inputString = isNullOrUndefined(array) ? inputString :\n inputString.slice(0, array.index) + inputString[array.index].toLocaleUpperCase() + inputString.slice(array.index + 1);\n }\n inputString = inputString[0].toLocaleUpperCase() + inputString.slice(1);\n }\n return inputString;\n}\n","import { createElement, append, prepend, isNullOrUndefined, getValue, getDefaultDateObject, cldrData, addClass, setStyleAttribute, formatUnit, EventHandler, remove } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constant';\nimport * as event from '../base/constant';\nimport * as util from '../base/util';\n/**\n * view base\n */\nvar ViewBase = /** @class */ (function () {\n /**\n * Constructor\n *\n * @param {Schedule} parent Accepts the schedule instance\n */\n function ViewBase(parent) {\n this.previousNextAction = 'next';\n this.parent = parent;\n }\n ViewBase.prototype.isTimelineView = function () {\n return this.parent.currentView.indexOf('Timeline') !== -1;\n };\n ViewBase.prototype.getContentRows = function () {\n return [];\n };\n ViewBase.prototype.refreshHeader = function () {\n // Method to refresh the date header\n };\n ViewBase.prototype.refreshResourceHeader = function () {\n remove(this.element.querySelector('tbody').lastElementChild.firstElementChild);\n var resTd = createElement('td');\n resTd.appendChild(this.parent.resourceBase.createResourceColumn());\n prepend([resTd], this.element.querySelector('tbody').lastElementChild);\n this.parent.notify(event.contentReady, {});\n };\n ViewBase.prototype.getDayName = function (date) {\n return this.parent.getDayNames('abbreviated')[date.getDay()];\n };\n ViewBase.prototype.getDate = function (date) {\n return this.parent.globalize.formatDate(date, { format: 'd', calendar: this.parent.getCalendarMode() });\n };\n ViewBase.prototype.getTime = function (date) {\n if (this.parent.isAdaptive) {\n if (this.parent.activeViewOptions.timeFormat === 'HH:mm' || this.parent.activeViewOptions.timeFormat === 'HH.mm') {\n return this.parent.globalize.formatDate(date, { format: 'H', calendar: this.parent.getCalendarMode() });\n }\n return this.parent.globalize.formatDate(date, { skeleton: 'h', calendar: this.parent.getCalendarMode() });\n }\n return this.parent.getTimeString(date);\n };\n ViewBase.prototype.getTimelineDate = function (date) {\n var text = this.parent.globalize.formatDate(date, { skeleton: 'MMMd', calendar: this.parent.getCalendarMode() }) + ', ' +\n this.parent.getDayNames('wide')[date.getDay()];\n return util.capitalizeFirstWord(text, 'multiple');\n };\n ViewBase.prototype.createEventTable = function (trCount) {\n var eventTable = createElement('div', { className: cls.EVENT_TABLE_CLASS });\n append(this.getEventRows(trCount), eventTable);\n return eventTable;\n };\n ViewBase.prototype.getEventRows = function (trCount) {\n var eventRows = [];\n var eventContainer;\n for (var row = 0; row < trCount; row++) {\n eventContainer = createElement('div', { className: cls.APPOINTMENT_CONTAINER_CLASS });\n if (this.parent.resourceBase && !this.parent.uiStateValues.isGroupAdaptive && this.parent.resourceBase.renderedResources) {\n eventContainer.setAttribute('data-group-index', this.parent.resourceBase.renderedResources[parseInt(row.toString(), 10)].groupIndex.toString());\n }\n eventRows.push(eventContainer);\n }\n return eventRows;\n };\n ViewBase.prototype.collapseRows = function (wrap) {\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n this.parent.resourceBase.hideResourceRows(wrap.querySelector('tbody'));\n this.parent.resourceBase.hideResourceRows(wrap.querySelector('.' + cls.EVENT_TABLE_CLASS));\n }\n };\n ViewBase.prototype.createTableLayout = function (className) {\n var clsName = className || '';\n var table = createElement('table', { className: cls.SCHEDULE_TABLE_CLASS + ' ' + clsName });\n var tbody = createElement('tbody');\n table.appendChild(tbody);\n return table;\n };\n ViewBase.prototype.setAriaAttributes = function (table) {\n table.setAttribute('role', 'grid');\n table.setAttribute('aria-label', this.getLabelText(this.parent.currentView));\n };\n ViewBase.prototype.createColGroup = function (table, lastRow) {\n var length = lastRow.length;\n if (lastRow[0] && lastRow[0].colSpan) {\n length = lastRow.map(function (value) { return value.colSpan; }).reduce(function (prev, next) { return prev + next; });\n }\n var colGroupEle = createElement('colgroup');\n for (var i = 0; i < length; i++) {\n colGroupEle.appendChild(createElement('col'));\n }\n prepend([colGroupEle], table);\n };\n ViewBase.prototype.getScrollXIndent = function (content) {\n return content.offsetHeight - content.clientHeight > 0 ? util.getScrollBarWidth() : 0;\n };\n ViewBase.prototype.scrollTopPanel = function (target) {\n this.getDatesHeaderElement().firstElementChild.scrollLeft = target.scrollLeft;\n };\n ViewBase.prototype.scrollHeaderLabels = function (target) {\n var headerTable = this.element.querySelector('.e-date-header-wrap table');\n var colWidth = headerTable.offsetWidth / headerTable.querySelectorAll('colgroup col').length;\n var applyLeft = function (headerCells, isRtl) {\n var currentCell;\n var tdLeft = 0;\n var colSpan = 0;\n var hiddenLeft = isRtl ? -(target.scrollLeft) : target.scrollLeft;\n for (var _i = 0, headerCells_2 = headerCells; _i < headerCells_2.length; _i++) {\n var cell = headerCells_2[_i];\n colSpan += parseInt(cell.getAttribute('colSpan'), 10);\n if (colSpan > Math.floor(hiddenLeft / colWidth)) {\n currentCell = cell;\n break;\n }\n tdLeft += cell.offsetWidth;\n }\n if (!isNullOrUndefined(currentCell)) {\n currentCell.children[0].style[isRtl ? 'right' : 'left'] = (hiddenLeft - tdLeft) + 'px';\n }\n };\n var classNames = ['.e-header-year-cell', '.e-header-month-cell', '.e-header-week-cell', '.e-header-cells'];\n for (var _i = 0, classNames_1 = classNames; _i < classNames_1.length; _i++) {\n var className = classNames_1[_i];\n var headerCells = [].slice.call(this.element.querySelectorAll(className));\n if (headerCells.length > 0) {\n for (var _a = 0, headerCells_1 = headerCells; _a < headerCells_1.length; _a++) {\n var element = headerCells_1[_a];\n element.children[0].style[this.parent.enableRtl ? 'right' : 'left'] = '';\n }\n applyLeft(headerCells, this.parent.enableRtl);\n }\n }\n };\n ViewBase.prototype.addAttributes = function (td, element) {\n if (td.template) {\n append(td.template, element);\n }\n if (td.colSpan) {\n element.setAttribute('colspan', td.colSpan.toString());\n }\n if (td.className) {\n addClass([element], td.className);\n }\n };\n ViewBase.prototype.getHeaderBarHeight = function () {\n var headerBarHeight = 2;\n if (this.parent.headerModule) {\n headerBarHeight += util.getOuterHeight(this.parent.headerModule.getHeaderElement());\n }\n if (this.parent.uiStateValues.isGroupAdaptive) {\n var resHeader = this.parent.element.querySelector('.' + cls.RESOURCE_HEADER_TOOLBAR);\n if (resHeader) {\n headerBarHeight += resHeader.offsetHeight;\n }\n }\n return headerBarHeight;\n };\n ViewBase.prototype.renderPanel = function (type) {\n if (type === cls.PREVIOUS_PANEL_CLASS) {\n prepend([this.element], this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS));\n }\n else {\n this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS).appendChild(this.element);\n }\n };\n ViewBase.prototype.setPanel = function (panel) {\n this.element = panel;\n };\n ViewBase.prototype.getPanel = function () {\n return this.element;\n };\n ViewBase.prototype.getDatesHeaderElement = function () {\n return this.element.querySelector('.' + cls.DATE_HEADER_CONTAINER_CLASS);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ViewBase.prototype.getDateSlots = function (renderDates, workDays) {\n return []; // Here getDateSlots only need in vertical and month views\n };\n ViewBase.prototype.generateColumnLevels = function () {\n return []; // Here generateColumnLevels only need in vertical and month views\n };\n ViewBase.prototype.getColumnLevels = function () {\n return this.colLevels;\n };\n ViewBase.prototype.highlightCurrentTime = function () {\n // Here showTimeIndicator functionalities\n };\n ViewBase.prototype.getStartDate = function () {\n return this.renderDates[0];\n };\n ViewBase.prototype.getEndDate = function () {\n return this.renderDates[this.renderDates.length - 1];\n };\n ViewBase.prototype.startDate = function () {\n return this.renderDates[0];\n };\n ViewBase.prototype.endDate = function () {\n return util.addDays(this.renderDates[this.renderDates.length - 1], 1);\n };\n ViewBase.prototype.getStartHour = function () {\n var startHour = this.parent.getStartEndTime(this.parent.activeViewOptions.startHour);\n if (isNullOrUndefined(startHour)) {\n startHour = new Date(2000, 0, 0, 0);\n }\n return startHour;\n };\n ViewBase.prototype.getEndHour = function () {\n var endHour = this.parent.getStartEndTime(this.parent.activeViewOptions.endHour);\n if (isNullOrUndefined(endHour)) {\n endHour = new Date(2000, 0, 0, 0);\n }\n return endHour;\n };\n ViewBase.prototype.isCurrentDate = function (date) {\n return date.setHours(0, 0, 0, 0) === new Date(this.parent.currentTimezoneDate).setHours(0, 0, 0, 0);\n };\n ViewBase.prototype.isCurrentMonth = function (date) {\n if (this.parent.activeViewOptions.displayDate || this.parent.activeViewOptions.numberOfWeeks > 0) {\n return this.parent.activeView.getStartDate().getTime() <= this.parent.getCurrentTime().getTime() &&\n this.parent.activeView.getEndDate().getTime() >= this.parent.getCurrentTime().getTime();\n }\n return date.getFullYear() ===\n this.parent.getCurrentTime().getFullYear() && date.getMonth() === this.parent.getCurrentTime().getMonth();\n };\n ViewBase.prototype.isWorkDay = function (date, workDays) {\n if (workDays === void 0) { workDays = this.parent.activeViewOptions.workDays; }\n if (workDays.indexOf(date.getDay()) >= 0) {\n return true;\n }\n return false;\n };\n ViewBase.prototype.isWorkHour = function (date, startHour, endHour, workDays) {\n if (isNullOrUndefined(startHour) || isNullOrUndefined(endHour)) {\n return false;\n }\n startHour.setMilliseconds(0);\n endHour.setMilliseconds(0);\n return !(util.getDateInMs(date) < util.getDateInMs(startHour) || util.getDateInMs(date) >= util.getDateInMs(endHour) ||\n !this.isWorkDay(date, workDays));\n };\n ViewBase.prototype.getRenderDates = function (workDays) {\n var renderDates = [];\n // Due to same code for vertical and time line, week & work week views, if condition has used\n if (this.parent.currentView === 'Week' || this.parent.currentView === 'TimelineWeek') {\n var selectedDate = util.resetTime(this.parent.selectedDate);\n var start = util.getWeekFirstDate(selectedDate, this.parent.activeViewOptions.firstDayOfWeek);\n for (var i = 0, length_1 = util.WEEK_LENGTH * this.parent.activeViewOptions.interval; i < length_1; i++) {\n if (this.parent.activeViewOptions.showWeekend) {\n renderDates.push(start);\n }\n else {\n if (this.isWorkDay(start, workDays)) {\n renderDates.push(start);\n }\n }\n start = util.addDays(start, 1);\n }\n }\n else if (this.parent.currentView === 'WorkWeek' || this.parent.currentView === 'TimelineWorkWeek') {\n var start = util.getWeekFirstDate(util.resetTime(this.parent.selectedDate), this.parent.activeViewOptions.firstDayOfWeek);\n for (var i = 0, length_2 = util.WEEK_LENGTH * this.parent.activeViewOptions.interval; i < length_2; i++) {\n if (this.isWorkDay(start, workDays)) {\n renderDates.push(start);\n }\n start = util.addDays(start, 1);\n }\n }\n else {\n var dayCount = this.parent.currentView === 'Agenda' ? this.parent.agendaDaysCount :\n this.parent.activeViewOptions.interval;\n var start = util.resetTime(this.parent.selectedDate);\n do {\n if (this.parent.activeViewOptions.showWeekend) {\n renderDates.push(start);\n }\n else {\n if (this.isWorkDay(start, workDays)) {\n renderDates.push(start);\n }\n }\n start = util.addDays(start, 1);\n } while (dayCount !== renderDates.length);\n }\n if (!workDays) {\n this.renderDates = renderDates;\n }\n if (this.parent.headerModule) {\n this.parent.headerModule.previousNextIconHandler();\n }\n return renderDates;\n };\n ViewBase.prototype.getNextPreviousDate = function (type) {\n this.previousNextAction = type;\n if (this.parent.currentView === 'Day' || this.parent.currentView === 'TimelineDay') {\n if (this.parent.activeViewOptions.showWeekend) {\n var daysCount = this.parent.activeViewOptions.interval;\n return util.addDays(this.parent.selectedDate, type === 'next' ? daysCount : -daysCount);\n }\n else {\n var date = void 0;\n if (type === 'next') {\n date = util.addDays(this.renderDates.slice(-1)[0], 1);\n while (!this.isWorkDay(date)) {\n date = util.addDays(date, 1);\n }\n }\n else {\n date = util.addDays(this.renderDates[0], -1);\n var count = 0;\n do {\n if (this.isWorkDay(date)) {\n count += 1;\n }\n if (this.parent.activeViewOptions.interval !== count) {\n date = util.addDays(date, -1);\n }\n } while (this.parent.activeViewOptions.interval !== count);\n }\n return date;\n }\n }\n var weekLength = type === 'next' ? util.WEEK_LENGTH : -util.WEEK_LENGTH;\n return util.addDays(this.parent.selectedDate, weekLength * this.parent.activeViewOptions.interval);\n };\n ViewBase.prototype.getLabelText = function (view) {\n var viewStr = view.charAt(0).toLowerCase() + view.substring(1);\n return this.parent.localeObj.getConstant(viewStr) + ' of ' + util.capitalizeFirstWord(this.parent.globalize.formatDate(this.parent.selectedDate, { skeleton: 'long', calendar: this.parent.getCalendarMode() }), 'single');\n };\n ViewBase.prototype.getDateRangeText = function () {\n if (this.parent.isAdaptive) {\n var formatDate = (this.parent.activeViewOptions.dateFormat) ? this.parent.activeViewOptions.dateFormat : 'MMMM y';\n return util.capitalizeFirstWord(this.parent.globalize.formatDate(this.parent.selectedDate, { format: formatDate, calendar: this.parent.getCalendarMode() }), 'single');\n }\n return this.formatDateRange(this.renderDates[0], this.renderDates[this.renderDates.length - 1]);\n };\n ViewBase.prototype.formatDateRange = function (startDate, endDate) {\n var globalize = this.parent.globalize;\n var mode = this.parent.getCalendarMode();\n if (startDate === endDate) {\n endDate = null;\n }\n if (!isNullOrUndefined(this.parent.activeViewOptions.dateFormat)) {\n var text = '';\n if (!endDate) {\n text = globalize.formatDate(startDate, { format: this.parent.activeViewOptions.dateFormat, calendar: mode });\n return util.capitalizeFirstWord(text, 'multiple');\n }\n text = (globalize.formatDate(startDate, { format: this.parent.activeViewOptions.dateFormat, calendar: mode }) +\n ' - ' + globalize.formatDate(endDate, { format: this.parent.activeViewOptions.dateFormat, calendar: mode }));\n return util.capitalizeFirstWord(text, 'multiple');\n }\n var formattedStr;\n var longDateFormat;\n if (this.parent.locale === 'en' || this.parent.locale === 'en-US') {\n longDateFormat = getValue('dateFormats.long', getDefaultDateObject(mode));\n }\n else {\n longDateFormat = getValue('main.' + '' + this.parent.locale + '.dates.calendars.' + mode + '.dateFormats.long', cldrData);\n }\n if (!endDate) {\n return util.capitalizeFirstWord(globalize.formatDate(startDate, { format: longDateFormat, calendar: mode }), 'single');\n }\n var dateFormat = longDateFormat.trim().toLocaleLowerCase();\n if (dateFormat.substr(0, 1) === 'd') {\n if (startDate.getFullYear() === endDate.getFullYear()) {\n if (startDate.getMonth() === endDate.getMonth()) {\n formattedStr = globalize.formatDate(startDate, { format: 'dd', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'dd MMMM yyyy', calendar: mode });\n }\n else {\n formattedStr = globalize.formatDate(startDate, { format: 'dd MMM', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'dd MMM yyyy', calendar: mode });\n }\n }\n else {\n formattedStr = globalize.formatDate(startDate, { format: 'dd MMM yyyy', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'dd MMM yyyy', calendar: mode });\n }\n }\n else if (dateFormat.substr(0, 1) === 'm') {\n if (startDate.getFullYear() === endDate.getFullYear()) {\n if (startDate.getMonth() === endDate.getMonth()) {\n formattedStr = globalize.formatDate(startDate, { format: 'MMMM dd', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'dd, yyyy', calendar: mode });\n }\n else {\n formattedStr = globalize.formatDate(startDate, { format: 'MMM dd', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'MMM dd, yyyy', calendar: mode });\n }\n }\n else {\n formattedStr = globalize.\n formatDate(startDate, { format: 'MMM dd, yyyy', calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: 'MMM dd, yyyy', calendar: mode });\n }\n }\n else {\n formattedStr = globalize.formatDate(startDate, { format: longDateFormat, calendar: mode }) + ' - ' +\n globalize.formatDate(endDate, { format: longDateFormat, calendar: mode });\n }\n return util.capitalizeFirstWord(formattedStr, 'multiple');\n };\n ViewBase.prototype.getMobileDateElement = function (date, className) {\n var wrap = createElement('div', {\n className: className,\n innerHTML: '
' + this.parent.globalize.formatDate(date, { format: 'd', calendar: this.parent.getCalendarMode() }) + '
' + '
' +\n util.capitalizeFirstWord(this.parent.globalize.formatDate(date, { format: 'E', calendar: this.parent.getCalendarMode() }), 'single') + '
'\n });\n return wrap;\n };\n ViewBase.prototype.setResourceHeaderContent = function (tdElement, tdData, className) {\n if (className === void 0) { className = cls.TEXT_ELLIPSIS; }\n if (this.parent.activeViewOptions.resourceHeaderTemplate) {\n var data = { resource: tdData.resource, resourceData: tdData.resourceData };\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.resourceHeaderTemplateName;\n var templateId = scheduleId + viewName + 'resourceHeaderTemplate';\n var quickTemplate = [].slice.call(this.parent.getResourceHeaderTemplate()(data, this.parent, 'resourceHeaderTemplate', templateId, false));\n append(quickTemplate, tdElement);\n }\n else {\n var resourceText = createElement('div', { className: className });\n this.parent.sanitize(tdData.resourceData[tdData.resource.textField], resourceText);\n tdElement.appendChild(resourceText);\n }\n };\n ViewBase.prototype.renderResourceMobileLayout = function () {\n if (this.parent.resourceBase.lastResourceLevel && this.parent.resourceBase.lastResourceLevel.length <= 0) {\n return;\n }\n this.parent.resourceBase.renderResourceHeader();\n this.parent.resourceBase.renderResourceTree();\n };\n ViewBase.prototype.addAutoHeightClass = function (element) {\n if (!this.parent.uiStateValues.isGroupAdaptive && this.parent.rowAutoHeight && this.isTimelineView()\n && this.parent.activeViewOptions.group.resources.length > 0) {\n addClass([element], cls.AUTO_HEIGHT);\n }\n };\n ViewBase.prototype.getColElements = function () {\n return [].slice.call(this.element.querySelectorAll('.' + cls.CONTENT_WRAP_CLASS + ' col, .' + cls.DATE_HEADER_WRAP_CLASS + ' col'));\n };\n ViewBase.prototype.setColWidth = function (content) {\n if (this.isTimelineView()) {\n var colElements = this.getColElements();\n var contentBody = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS + ' tbody');\n var colWidth_1 = (contentBody.getBoundingClientRect().width / (colElements.length / 2));\n if (content.offsetHeight !== content.clientHeight) {\n var resourceColumn = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);\n if (!isNullOrUndefined(resourceColumn)) {\n setStyleAttribute(resourceColumn, { 'height': formatUnit(content.clientHeight) });\n }\n }\n var cssClass = \".\" + cls.HEADER_CELLS_CLASS + \",.\" + cls.TIME_SLOT_CLASS + \",.\" + cls.HEADER_WEEK_CELLS_CLASS + \",.\" + cls.HEADER_MONTH_CELLS_CLASS + \",.\" + cls.HEADER_YEAR_CELLS_CLASS;\n var headerCellElements = [].slice.call(this.element.querySelectorAll(cssClass));\n headerCellElements.forEach(function (ele) {\n var colSpan = isNullOrUndefined(ele.getAttribute('colspan')) ? '1' : ele.getAttribute('colspan');\n var headerCellColSpan = parseInt(colSpan, 10);\n setStyleAttribute(ele, { 'width': formatUnit(colWidth_1 * headerCellColSpan) });\n });\n }\n };\n ViewBase.prototype.resetColWidth = function () {\n var colElements = this.getColElements();\n for (var _i = 0, colElements_1 = colElements; _i < colElements_1.length; _i++) {\n var col = colElements_1[_i];\n col.style.width = '';\n }\n };\n ViewBase.prototype.getContentAreaElement = function () {\n return this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n };\n ViewBase.prototype.wireExpandCollapseIconEvents = function () {\n if (this.parent.resourceBase && this.parent.resourceBase.resourceCollection.length > 1) {\n var treeIcons = [].slice.call(this.element.querySelectorAll('.' + cls.RESOURCE_TREE_ICON_CLASS));\n for (var _i = 0, treeIcons_1 = treeIcons; _i < treeIcons_1.length; _i++) {\n var icon = treeIcons_1[_i];\n EventHandler.clearEvents(icon);\n EventHandler.add(icon, 'click', this.parent.resourceBase.onTreeIconClick, this.parent.resourceBase);\n }\n }\n };\n ViewBase.prototype.scrollToDate = function (scrollDate) {\n if (['Month', 'TimelineMonth'].indexOf(this.parent.currentView) === -1 || isNullOrUndefined(scrollDate)) {\n return;\n }\n var scrollWrap = this.getContentAreaElement();\n var tdDate = new Date(util.resetTime(new Date(+scrollDate)).getTime()).getTime();\n var dateElement = scrollWrap.querySelector(\".\" + cls.WORK_CELLS_CLASS + \"[data-date=\\\"\" + tdDate + \"\\\"]\");\n if (this.parent.currentView === 'Month' && dateElement) {\n if (scrollWrap.scrollWidth > scrollWrap.clientWidth) {\n if (!this.parent.enableRtl) {\n scrollWrap.scrollLeft = dateElement.offsetLeft;\n }\n else {\n scrollWrap.scrollLeft = -(this.parent.getContentTable().offsetWidth - dateElement.offsetLeft - dateElement.offsetWidth);\n }\n }\n scrollWrap.scrollTop = dateElement.offsetTop;\n }\n if (this.parent.currentView === 'TimelineMonth' && dateElement) {\n if (!this.parent.enableRtl) {\n scrollWrap.scrollLeft = dateElement.offsetLeft;\n }\n else {\n scrollWrap.scrollLeft = -(this.parent.getContentTable().offsetWidth - dateElement.offsetLeft - dateElement.offsetWidth);\n }\n }\n };\n ViewBase.prototype.setPersistence = function () {\n if (this.parent.enablePersistence) {\n var contentWrap = this.element.querySelector('.e-content-wrap');\n if (!isNullOrUndefined(contentWrap)) {\n this.parent.scrollLeft = contentWrap.scrollLeft;\n this.parent.scrollTop = contentWrap.scrollTop;\n }\n }\n };\n ViewBase.prototype.retainScrollPosition = function () {\n if (this.parent.enablePersistence) {\n var conWrap = this.parent.element.querySelector('.e-content-wrap');\n if (!isNullOrUndefined(conWrap) && !isNullOrUndefined(this.parent.scrollLeft) && !isNullOrUndefined(this.parent.scrollTop)) {\n conWrap.scrollTop = this.parent.scrollTop;\n conWrap.scrollLeft = this.parent.scrollLeft;\n }\n }\n };\n ViewBase.prototype.getViewStartDate = function () {\n var startDate = this.renderDates[0];\n if (this.parent.activeViewOptions.group.resources.length > 0 && this.parent.resourceBase.lastResourceLevel.length > 0) {\n startDate = this.parent.resourceBase.getResourceRenderDates()[0];\n }\n return startDate;\n };\n ViewBase.prototype.getViewEndDate = function () {\n var endDate = util.addDays(this.renderDates[this.renderDates.length - 1], 1);\n if (this.parent.activeViewOptions.group.resources.length > 0 && this.parent.resourceBase.lastResourceLevel.length > 0) {\n endDate = util.addDays(this.parent.resourceBase.getResourceRenderDates().slice(-1)[0], 1);\n }\n return endDate;\n };\n ViewBase.prototype.getAdjustedDate = function (startTime) {\n if (!this.parent.activeViewOptions.timeScale.enable || this.parent.currentView === 'Month' ||\n (this.parent.currentView === 'TimelineYear' && this.parent.activeViewOptions.group.resources.length === 0)) {\n return new Date(startTime.setHours(0, 0, 0, 0));\n }\n else if (this.parent.currentView === 'TimelineYear' && this.parent.activeViewOptions.group.resources.length > 0) {\n startTime.setHours(0, 0, 0, 0);\n return new Date(startTime.setDate(1));\n }\n return null;\n };\n ViewBase.prototype.resetColLevels = function () {\n this.parent.resourceBase.expandedResources = [];\n var renderedCount = this.parent.virtualScrollModule.getRenderedCount();\n var lastLevel = this.parent.activeViewOptions.group.byDate ? this.colLevels[0] :\n this.parent.resourceBase.renderedResources;\n var index = 0;\n for (var i = 0; i < lastLevel.length; i++) {\n if (index >= renderedCount) {\n break;\n }\n index += lastLevel[parseInt(i.toString(), 10)].colSpan;\n this.parent.resourceBase.expandedResources.push(lastLevel[parseInt(i.toString(), 10)]);\n }\n if (this.parent.activeViewOptions.group.byDate) {\n this.colLevels[0] = this.parent.resourceBase.expandedResources;\n this.parent.virtualScrollModule.setRenderedDates(this.parent.resourceBase.expandedResources);\n }\n else {\n this.colLevels[this.colLevels.length - 2] = this.parent.resourceBase.expandedResources;\n this.parent.resourceBase.renderedResources = this.parent.resourceBase.expandedResources;\n }\n if (this.parent.currentView !== 'Month') {\n this.colLevels[this.colLevels.length - 1] = this.colLevels[this.colLevels.length - 1].slice(0, index);\n this.parent.resourceBase.expandedResources = this.colLevels[this.colLevels.length - 1];\n }\n };\n ViewBase.prototype.destroy = function () {\n if (this.element && this.element.parentNode) {\n remove(this.element);\n }\n this.element = null;\n this.renderDates = null;\n this.colLevels = null;\n };\n return ViewBase;\n}());\nexport { ViewBase };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { DataUtil } from './util';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * Query class is used to build query which is used by the DataManager to communicate with datasource.\n */\nvar Query = /** @class */ (function () {\n /**\n * Constructor for Query class.\n *\n * @param {string|string[]} from?\n * @param from\n * @hidden\n */\n function Query(from) {\n /** @hidden */\n this.subQuery = null;\n /** @hidden */\n this.isChild = false;\n /** @hidden */\n this.distincts = [];\n this.queries = [];\n this.key = '';\n this.fKey = '';\n if (typeof from === 'string') {\n this.fromTable = from;\n }\n else if (from && from instanceof Array) {\n this.lookups = from;\n }\n this.expands = [];\n this.sortedColumns = [];\n this.groupedColumns = [];\n this.subQuery = null;\n this.isChild = false;\n this.params = [];\n this.lazyLoad = [];\n return this;\n }\n /**\n * Sets the primary key.\n *\n * @param {string} field - Defines the column field.\n */\n Query.prototype.setKey = function (field) {\n this.key = field;\n return this;\n };\n /**\n * Sets default DataManager to execute query.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.using = function (dataManager) {\n this.dataManager = dataManager;\n return this;\n };\n /**\n * Executes query with the given DataManager.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n * @param {Function} done - Defines the success callback.\n * @param {Function} fail - Defines the failure callback.\n * @param {Function} always - Defines the callback which will be invoked on either success or failure.\n *\n *
\n     * let dataManager: DataManager = new DataManager([{ ID: '10' }, { ID: '2' }, { ID: '1' }, { ID: '20' }]);\n     * let query: Query = new Query();\n     * query.sortBy('ID', (x: string, y: string): number => { return parseInt(x, 10) - parseInt(y, 10) });\n     * let promise: Promise< Object > = query.execute(dataManager);\n     * promise.then((e: { result: Object }) => { });\n     * 
\n */\n Query.prototype.execute = function (dataManager, done, fail, always) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeQuery(this, done, fail, always);\n }\n return DataUtil.throwError('Query - execute() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Executes query with the local datasource.\n *\n * @param {DataManager} dataManager - Defines the DataManager.\n */\n Query.prototype.executeLocal = function (dataManager) {\n dataManager = dataManager || this.dataManager;\n if (dataManager) {\n return dataManager.executeLocal(this);\n }\n return DataUtil.throwError('Query - executeLocal() : dataManager needs to be is set using \"using\" function or should be passed as argument');\n };\n /**\n * Creates deep copy of the Query object.\n */\n Query.prototype.clone = function () {\n var cloned = new Query();\n cloned.queries = this.queries.slice(0);\n cloned.key = this.key;\n cloned.isChild = this.isChild;\n cloned.dataManager = this.dataManager;\n cloned.fromTable = this.fromTable;\n cloned.params = this.params.slice(0);\n cloned.expands = this.expands.slice(0);\n cloned.sortedColumns = this.sortedColumns.slice(0);\n cloned.groupedColumns = this.groupedColumns.slice(0);\n cloned.subQuerySelector = this.subQuerySelector;\n cloned.subQuery = this.subQuery;\n cloned.fKey = this.fKey;\n cloned.isCountRequired = this.isCountRequired;\n cloned.distincts = this.distincts.slice(0);\n cloned.lazyLoad = this.lazyLoad.slice(0);\n return cloned;\n };\n /**\n * Specifies the name of table to retrieve data in query execution.\n *\n * @param {string} tableName - Defines the table name.\n */\n Query.prototype.from = function (tableName) {\n this.fromTable = tableName;\n return this;\n };\n /**\n * Adds additional parameter which will be sent along with the request which will be generated while DataManager execute.\n *\n * @param {string} key - Defines the key of additional parameter.\n * @param {Function|string} value - Defines the value for the key.\n */\n Query.prototype.addParams = function (key, value) {\n if (typeof value === 'function') {\n this.params.push({ key: key, fn: value });\n }\n else {\n this.params.push({ key: key, value: value });\n }\n return this;\n };\n /**\n * @param fields\n * @hidden\n */\n Query.prototype.distinct = function (fields) {\n if (typeof fields === 'string') {\n this.distincts = [].slice.call([fields], 0);\n }\n else {\n this.distincts = fields.slice(0);\n }\n return this;\n };\n /**\n * Expands the related table.\n *\n * @param {string|Object[]} tables\n */\n Query.prototype.expand = function (tables) {\n if (typeof tables === 'string') {\n this.expands = [].slice.call([tables], 0);\n }\n else {\n this.expands = tables.slice(0);\n }\n return this;\n };\n /**\n * Filter data with given filter criteria.\n *\n * @param {string|Predicate} fieldName - Defines the column field or Predicate.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string|number|boolean} value - Defines the values to match with data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n * @param matchCase\n */\n Query.prototype.where = function (fieldName, operator, value, ignoreCase, ignoreAccent, matchCase) {\n operator = operator ? (operator).toLowerCase() : null;\n var predicate = null;\n if (typeof fieldName === 'string') {\n predicate = new Predicate(fieldName, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n else if (fieldName instanceof Predicate) {\n predicate = fieldName;\n }\n this.queries.push({\n fn: 'onWhere',\n e: predicate\n });\n return this;\n };\n /**\n * Search data with given search criteria.\n *\n * @param {string|number|boolean} searchKey - Defines the search key.\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n * @param {string} operator - Defines the operator how to search data.\n * @param {boolean} ignoreCase - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreAccent\n */\n Query.prototype.search = function (searchKey, fieldNames, operator, ignoreCase, ignoreAccent) {\n if (typeof fieldNames === 'string') {\n fieldNames = [fieldNames];\n }\n if (!operator || operator === 'none') {\n operator = 'contains';\n }\n var comparer = DataUtil.fnOperators[operator];\n this.queries.push({\n fn: 'onSearch',\n e: {\n fieldNames: fieldNames,\n operator: operator,\n searchKey: searchKey,\n ignoreCase: ignoreCase,\n ignoreAccent: ignoreAccent,\n comparer: comparer\n }\n });\n return this;\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n */\n Query.prototype.sortBy = function (fieldName, comparer, isFromGroup) {\n return this.sortByForeignKey(fieldName, comparer, isFromGroup);\n };\n /**\n * Sort the data with given sort criteria.\n * By default, sort direction is ascending.\n *\n * @param {string|string[]} fieldName - Defines the single or collection of column fields.\n * @param {string|Function} comparer - Defines the sort direction or custom sort comparer function.\n * @param isFromGroup\n * @param {string} direction - Defines the sort direction .\n */\n Query.prototype.sortByForeignKey = function (fieldName, comparer, isFromGroup, direction) {\n var order = !isNullOrUndefined(direction) ? direction : 'ascending';\n var sorts;\n var temp;\n if (typeof fieldName === 'string' && DataUtil.endsWith(fieldName.toLowerCase(), ' desc')) {\n fieldName = fieldName.replace(/ desc$/i, '');\n comparer = 'descending';\n }\n if (!comparer || typeof comparer === 'string') {\n order = comparer ? comparer.toLowerCase() : 'ascending';\n comparer = DataUtil.fnSort(comparer);\n }\n if (isFromGroup) {\n sorts = Query.filterQueries(this.queries, 'onSortBy');\n for (var i = 0; i < sorts.length; i++) {\n temp = sorts[i].e.fieldName;\n if (typeof temp === 'string') {\n if (temp === fieldName) {\n return this;\n }\n }\n else if (temp instanceof Array) {\n for (var j = 0; j < temp.length; j++) {\n if (temp[j] === fieldName || fieldName.toLowerCase() === temp[j] + ' desc') {\n return this;\n }\n }\n }\n }\n }\n this.queries.push({\n fn: 'onSortBy',\n e: {\n fieldName: fieldName,\n comparer: comparer,\n direction: order\n }\n });\n return this;\n };\n /**\n * Sorts data in descending order.\n *\n * @param {string} fieldName - Defines the column field.\n */\n Query.prototype.sortByDesc = function (fieldName) {\n return this.sortBy(fieldName, 'descending');\n };\n /**\n * Groups data with the given field name.\n *\n * @param {string} fieldName - Defines the column field.\n * @param fn\n * @param format\n */\n Query.prototype.group = function (fieldName, fn, format) {\n this.sortBy(fieldName, null, true);\n this.queries.push({\n fn: 'onGroup',\n e: {\n fieldName: fieldName,\n comparer: fn ? fn : null,\n format: format ? format : null\n }\n });\n return this;\n };\n /**\n * Gets data based on the given page index and size.\n *\n * @param {number} pageIndex - Defines the current page index.\n * @param {number} pageSize - Defines the no of records per page.\n */\n Query.prototype.page = function (pageIndex, pageSize) {\n this.queries.push({\n fn: 'onPage',\n e: {\n pageIndex: pageIndex,\n pageSize: pageSize\n }\n });\n return this;\n };\n /**\n * Gets data based on the given start and end index.\n *\n * @param {number} start - Defines the start index of the datasource.\n * @param {number} end - Defines the end index of the datasource.\n */\n Query.prototype.range = function (start, end) {\n this.queries.push({\n fn: 'onRange',\n e: {\n start: start,\n end: end\n }\n });\n return this;\n };\n /**\n * Gets data from the top of the data source based on given number of records count.\n *\n * @param {number} nos - Defines the no of records to retrieve from datasource.\n */\n Query.prototype.take = function (nos) {\n this.queries.push({\n fn: 'onTake',\n e: {\n nos: nos\n }\n });\n return this;\n };\n /**\n * Skips data with given number of records count from the top of the data source.\n *\n * @param {number} nos - Defines the no of records skip in the datasource.\n */\n Query.prototype.skip = function (nos) {\n this.queries.push({\n fn: 'onSkip',\n e: { nos: nos }\n });\n return this;\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {string|string[]} fieldNames - Defines the collection of column fields.\n */\n Query.prototype.select = function (fieldNames) {\n if (typeof fieldNames === 'string') {\n fieldNames = [].slice.call([fieldNames], 0);\n }\n this.queries.push({\n fn: 'onSelect',\n e: { fieldNames: fieldNames }\n });\n return this;\n };\n /**\n * Gets the records in hierarchical relationship from two tables. It requires the foreign key to relate two tables.\n *\n * @param {Query} query - Defines the query to relate two tables.\n * @param {Function} selectorFn - Defines the custom function to select records.\n */\n Query.prototype.hierarchy = function (query, selectorFn) {\n this.subQuerySelector = selectorFn;\n this.subQuery = query;\n return this;\n };\n /**\n * Sets the foreign key which is used to get data from the related table.\n *\n * @param {string} key - Defines the foreign key.\n */\n Query.prototype.foreignKey = function (key) {\n this.fKey = key;\n return this;\n };\n /**\n * It is used to get total number of records in the DataManager execution result.\n */\n Query.prototype.requiresCount = function () {\n this.isCountRequired = true;\n return this;\n };\n //type - sum, avg, min, max\n /**\n * Aggregate the data with given type and field name.\n *\n * @param {string} type - Defines the aggregate type.\n * @param {string} field - Defines the column field to aggregate.\n */\n Query.prototype.aggregate = function (type, field) {\n this.queries.push({\n fn: 'onAggregates',\n e: { field: field, type: type }\n });\n return this;\n };\n /**\n * Pass array of filterColumn query for performing filter operation.\n *\n * @param {QueryOptions[]} queries\n * @param {string} name\n * @hidden\n */\n Query.filterQueries = function (queries, name) {\n return queries.filter(function (q) {\n return q.fn === name;\n });\n };\n /**\n * To get the list of queries which is already filtered in current data source.\n *\n * @param {Object[]} queries\n * @param {string[]} singles\n * @hidden\n */\n Query.filterQueryLists = function (queries, singles) {\n var filtered = queries.filter(function (q) {\n return singles.indexOf(q.fn) !== -1;\n });\n var res = {};\n for (var i = 0; i < filtered.length; i++) {\n if (!res[filtered[i].fn]) {\n res[filtered[i].fn] = filtered[i].e;\n }\n }\n return res;\n };\n return Query;\n}());\nexport { Query };\n/**\n * Predicate class is used to generate complex filter criteria.\n * This will be used by DataManager to perform multiple filtering operation.\n */\nvar Predicate = /** @class */ (function () {\n /**\n * Constructor for Predicate class.\n *\n * @param {string|Predicate} field\n * @param {string} operator\n * @param {string|number|boolean|Predicate|Predicate[]} value\n * @param {boolean=false} ignoreCase\n * @param ignoreAccent\n * @param {boolean} matchCase\n * @hidden\n */\n function Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase) {\n if (ignoreCase === void 0) { ignoreCase = false; }\n /** @hidden */\n this.ignoreAccent = false;\n /** @hidden */\n this.isComplex = false;\n if (typeof field === 'string') {\n this.field = field;\n this.operator = operator.toLowerCase();\n this.value = value;\n this.matchCase = matchCase;\n this.ignoreCase = ignoreCase;\n this.ignoreAccent = ignoreAccent;\n this.isComplex = false;\n this.comparer = DataUtil.fnOperators.processOperator(this.operator);\n }\n else if (field instanceof Predicate && value instanceof Predicate || value instanceof Array) {\n this.isComplex = true;\n this.condition = operator.toLowerCase();\n this.predicates = [field];\n this.matchCase = field.matchCase;\n this.ignoreCase = field.ignoreCase;\n this.ignoreAccent = field.ignoreAccent;\n if (value instanceof Array) {\n [].push.apply(this.predicates, value);\n }\n else {\n this.predicates.push(value);\n }\n }\n return this;\n }\n /**\n * Adds n-number of new predicates on existing predicate with “and” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.and = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and');\n };\n /**\n * Adds new predicate on existing predicate with “and” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.and = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'and', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “or” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.or = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or');\n };\n /**\n * Adds new predicate on existing predicate with “or” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.or = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'or', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.ornot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'or not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.ornot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'ornot', ignoreCase, ignoreAccent);\n };\n /**\n * Adds n-number of new predicates on existing predicate with “and not” condition.\n *\n * @param {Object[]} args - Defines the collection of predicates.\n */\n Predicate.andnot = function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n return Predicate.combinePredicates([].slice.call(args, 0), 'and not');\n };\n /**\n * Adds new predicate on existing predicate with “and not” condition.\n *\n * @param {string} field - Defines the column field.\n * @param {string} operator - Defines the operator how to filter data.\n * @param {string} value - Defines the values to match with data.\n * @param {boolean} ignoreCase? - If ignore case set to false, then filter data with exact match or else\n * filter data with case insensitive.\n * @param ignoreCase\n * @param ignoreAccent\n */\n Predicate.prototype.andnot = function (field, operator, value, ignoreCase, ignoreAccent) {\n return Predicate.combine(this, field, operator, value, 'andnot', ignoreCase, ignoreAccent);\n };\n /**\n * Converts plain JavaScript object to Predicate object.\n *\n * @param {Predicate[]|Predicate} json - Defines single or collection of Predicate.\n */\n Predicate.fromJson = function (json) {\n if (json instanceof Array) {\n var res = [];\n for (var i = 0, len = json.length; i < len; i++) {\n res.push(this.fromJSONData(json[i]));\n }\n return res;\n }\n var pred = json;\n return this.fromJSONData(pred);\n };\n /**\n * Validate the record based on the predicates.\n *\n * @param {Object} record - Defines the datasource record.\n */\n Predicate.prototype.validate = function (record) {\n var predicate = this.predicates ? this.predicates : [];\n var ret;\n var isAnd;\n if (!this.isComplex && this.comparer) {\n if (this.condition && this.condition.indexOf('not') !== -1) {\n this.condition = this.condition.split('not')[0] === '' ? undefined : this.condition.split('not')[0];\n return !this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n else {\n return this.comparer.call(this, DataUtil.getObject(this.field, record), this.value, this.ignoreCase, this.ignoreAccent);\n }\n }\n if (this.condition && this.condition.indexOf('not') !== -1) {\n isAnd = this.condition.indexOf('and') !== -1;\n }\n else {\n isAnd = this.condition === 'and';\n }\n for (var i = 0; i < predicate.length; i++) {\n if (i > 0 && this.condition && this.condition.indexOf('not') !== -1) {\n predicate[i].condition = predicate[i].condition ? predicate[i].condition + 'not' : 'not';\n }\n ret = predicate[i].validate(record);\n if (isAnd) {\n if (!ret) {\n return false;\n }\n }\n else {\n if (ret) {\n return true;\n }\n }\n }\n return isAnd;\n };\n /**\n * Converts predicates to plain JavaScript.\n * This method is uses Json stringify when serializing Predicate object.\n */\n Predicate.prototype.toJson = function () {\n var predicates;\n var p;\n if (this.isComplex) {\n predicates = [];\n p = this.predicates;\n for (var i = 0; i < p.length; i++) {\n predicates.push(p[i].toJson());\n }\n }\n return {\n isComplex: this.isComplex,\n field: this.field,\n operator: this.operator,\n value: this.value,\n ignoreCase: this.ignoreCase,\n ignoreAccent: this.ignoreAccent,\n condition: this.condition,\n predicates: predicates,\n matchCase: this.matchCase\n };\n };\n Predicate.combinePredicates = function (predicates, operator) {\n if (predicates.length === 1) {\n if (!(predicates[0] instanceof Array)) {\n return predicates[0];\n }\n predicates = predicates[0];\n }\n return new Predicate(predicates[0], operator, predicates.slice(1));\n };\n Predicate.combine = function (pred, field, operator, value, condition, ignoreCase, ignoreAccent) {\n if (field instanceof Predicate) {\n return Predicate[condition](pred, field);\n }\n if (typeof field === 'string') {\n return Predicate[condition](pred, new Predicate(field, operator, value, ignoreCase, ignoreAccent));\n }\n return DataUtil.throwError('Predicate - ' + condition + ' : invalid arguments');\n };\n Predicate.fromJSONData = function (json) {\n var preds = json.predicates || [];\n var len = preds.length;\n var predicates = [];\n var result;\n for (var i = 0; i < len; i++) {\n predicates.push(this.fromJSONData(preds[i]));\n }\n if (!json.isComplex) {\n result = new Predicate(json.field, json.operator, json.value, json.ignoreCase, json.ignoreAccent);\n }\n else {\n result = new Predicate(predicates[0], json.condition, predicates.slice(1));\n }\n return result;\n };\n return Predicate;\n}());\nexport { Predicate };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataManager } from './manager';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Data manager common utility methods.\n *\n * @hidden\n */\nvar DataUtil = /** @class */ (function () {\n function DataUtil() {\n }\n /**\n * Returns the value by invoking the provided parameter function.\n * If the paramater is not of type function then it will be returned as it is.\n *\n * @param {Function|string|string[]|number} value\n * @param {Object} inst?\n * @param inst\n * @hidden\n */\n DataUtil.getValue = function (value, inst) {\n if (typeof value === 'function') {\n return value.call(inst || {});\n }\n return value;\n };\n /**\n * Returns true if the input string ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.endsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) === substr;\n };\n /**\n * Returns true if the input string not ends with given string.\n *\n * @param {string} input\n * @param {string} substr\n */\n DataUtil.notEndsWith = function (input, substr) {\n return input.slice && input.slice(-substr.length) !== substr;\n };\n /**\n * Returns true if the input string starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.startsWith = function (input, start) {\n return input.slice(0, start.length) === start;\n };\n /**\n * Returns true if the input string not starts with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param start\n */\n DataUtil.notStartsWith = function (input, start) {\n return input.slice(0, start.length) !== start;\n };\n /**\n * Returns true if the input string pattern(wildcard) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.wildCard = function (input, pattern) {\n var asteriskSplit;\n var optionalSplit;\n // special character allowed search\n if (pattern.indexOf('[') !== -1) {\n pattern = pattern.split('[').join('[[]');\n }\n if (pattern.indexOf('(') !== -1) {\n pattern = pattern.split('(').join('[(]');\n }\n if (pattern.indexOf(')') !== -1) {\n pattern = pattern.split(')').join('[)]');\n }\n if (pattern.indexOf('\\\\') !== -1) {\n pattern = pattern.split('\\\\').join('[\\\\\\\\]');\n }\n if (pattern.indexOf('*') !== -1) {\n if (pattern.charAt(0) !== '*') {\n pattern = '^' + pattern;\n }\n if (pattern.charAt(pattern.length - 1) !== '*') {\n pattern = pattern + '$';\n }\n asteriskSplit = pattern.split('*');\n for (var i = 0; i < asteriskSplit.length; i++) {\n if (asteriskSplit[i].indexOf('.') === -1) {\n asteriskSplit[i] = asteriskSplit[i] + '.*';\n }\n else {\n asteriskSplit[i] = asteriskSplit[i] + '*';\n }\n }\n pattern = asteriskSplit.join('');\n }\n if (pattern.indexOf('%3f') !== -1 || pattern.indexOf('?') !== -1) {\n optionalSplit = pattern.indexOf('%3f') !== -1 ? pattern.split('%3f') : pattern.split('?');\n pattern = optionalSplit.join('.');\n }\n // eslint-disable-next-line security/detect-non-literal-regexp\n var regexPattern = new RegExp(pattern, 'g');\n return regexPattern.test(input);\n };\n /**\n * Returns true if the input string pattern(like) matches with given string.\n *\n * @param {string} str\n * @param {string} startstr\n * @param input\n * @param pattern\n */\n DataUtil.like = function (input, pattern) {\n if (pattern.indexOf('%') !== -1) {\n if (pattern.charAt(0) === '%' && pattern.lastIndexOf('%') < 2) {\n pattern = pattern.substring(1, pattern.length);\n return DataUtil.startsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.charAt(pattern.length - 1) === '%' && pattern.indexOf('%') > pattern.length - 3) {\n pattern = pattern.substring(0, pattern.length - 1);\n return DataUtil.endsWith(DataUtil.toLowerCase(input), DataUtil.toLowerCase(pattern));\n }\n else if (pattern.lastIndexOf('%') !== pattern.indexOf('%') && pattern.lastIndexOf('%') > pattern.indexOf('%') + 1) {\n pattern = pattern.substring(pattern.indexOf('%') + 1, pattern.lastIndexOf('%'));\n return input.indexOf(pattern) !== -1;\n }\n else {\n return input.indexOf(pattern) !== -1;\n }\n }\n else {\n return false;\n }\n };\n /**\n * To return the sorting function based on the string.\n *\n * @param {string} order\n * @hidden\n */\n DataUtil.fnSort = function (order) {\n order = order ? DataUtil.toLowerCase(order) : 'ascending';\n if (order === 'ascending') {\n return this.fnAscending;\n }\n return this.fnDescending;\n };\n /**\n * Comparer function which is used to sort the data in ascending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnAscending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return -1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y);\n }\n if (x === null || x === undefined) {\n return 1;\n }\n return x - y;\n };\n /**\n * Comparer function which is used to sort the data in descending order.\n *\n * @param {string|number} x\n * @param {string|number} y\n * @returns number\n */\n DataUtil.fnDescending = function (x, y) {\n if (isNullOrUndefined(x) && isNullOrUndefined(y)) {\n return -1;\n }\n if (y === null || y === undefined) {\n return 1;\n }\n if (typeof x === 'string') {\n return x.localeCompare(y) * -1;\n }\n if (x === null || x === undefined) {\n return -1;\n }\n return y - x;\n };\n DataUtil.extractFields = function (obj, fields) {\n var newObj = {};\n for (var i = 0; i < fields.length; i++) {\n newObj = this.setValue(fields[i], this.getObject(fields[i], obj), newObj);\n }\n return newObj;\n };\n /**\n * Select objects by given fields from jsonArray.\n *\n * @param {Object[]} jsonArray\n * @param {string[]} fields\n */\n DataUtil.select = function (jsonArray, fields) {\n var newData = [];\n for (var i = 0; i < jsonArray.length; i++) {\n newData.push(this.extractFields(jsonArray[i], fields));\n }\n return newData;\n };\n /**\n * Group the input data based on the field name.\n * It also performs aggregation of the grouped records based on the aggregates paramater.\n *\n * @param {Object[]} jsonArray\n * @param {string} field?\n * @param {Object[]} agg?\n * @param {number} level?\n * @param {Object[]} groupDs?\n * @param field\n * @param aggregates\n * @param level\n * @param groupDs\n * @param format\n * @param isLazyLoad\n */\n DataUtil.group = function (jsonArray, field, aggregates, level, groupDs, format, isLazyLoad) {\n level = level || 1;\n var jsonData = jsonArray;\n var guid = 'GroupGuid';\n if (jsonData.GroupGuid === consts[guid]) {\n var _loop_1 = function (j) {\n if (!isNullOrUndefined(groupDs)) {\n var indx = -1;\n var temp = groupDs.filter(function (e) { return e.key === jsonData[j].key; });\n indx = groupDs.indexOf(temp[0]);\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, groupDs[indx].items, format, isLazyLoad);\n jsonData[j].count = groupDs[indx].count;\n }\n else {\n jsonData[j].items = this_1.group(jsonData[j].items, field, aggregates, jsonData.level + 1, null, format, isLazyLoad);\n jsonData[j].count = jsonData[j].items.length;\n }\n };\n var this_1 = this;\n for (var j = 0; j < jsonData.length; j++) {\n _loop_1(j);\n }\n jsonData.childLevels += 1;\n return jsonData;\n }\n var grouped = {};\n var groupedArray = [];\n groupedArray.GroupGuid = consts[guid];\n groupedArray.level = level;\n groupedArray.childLevels = 0;\n groupedArray.records = jsonData;\n var _loop_2 = function (i) {\n var val = this_2.getVal(jsonData, i, field);\n if (!isNullOrUndefined(format)) {\n val = format(val, field);\n }\n if (!grouped[val]) {\n grouped[val] = {\n key: val,\n count: 0,\n items: [],\n aggregates: {},\n field: field\n };\n groupedArray.push(grouped[val]);\n if (!isNullOrUndefined(groupDs)) {\n var tempObj = groupDs.filter(function (e) { return e.key === grouped[val].key; });\n grouped[val].count = tempObj[0].count;\n }\n }\n grouped[val].count = !isNullOrUndefined(groupDs) ? grouped[val].count : grouped[val].count += 1;\n if (!isLazyLoad || (isLazyLoad && aggregates.length)) {\n grouped[val].items.push(jsonData[i]);\n }\n };\n var this_2 = this;\n for (var i = 0; i < jsonData.length; i++) {\n _loop_2(i);\n }\n if (aggregates && aggregates.length) {\n var _loop_3 = function (i) {\n var res = {};\n var fn = void 0;\n var aggs = aggregates;\n for (var j = 0; j < aggregates.length; j++) {\n fn = DataUtil.aggregates[aggregates[j].type];\n if (!isNullOrUndefined(groupDs)) {\n var temp = groupDs.filter(function (e) { return e.key === groupedArray[i].key; });\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(temp[0].items, aggs[j].field);\n }\n }\n else {\n if (fn) {\n res[aggs[j].field + ' - ' + aggs[j].type] = fn(groupedArray[i].items, aggs[j].field);\n }\n }\n }\n groupedArray[i].aggregates = res;\n };\n for (var i = 0; i < groupedArray.length; i++) {\n _loop_3(i);\n }\n }\n if (isLazyLoad && groupedArray.length && aggregates.length) {\n for (var i = 0; i < groupedArray.length; i++) {\n groupedArray[i].items = [];\n }\n }\n return jsonData.length && groupedArray || jsonData;\n };\n /**\n * It is used to categorize the multiple items based on a specific field in jsonArray.\n * The hierarchical queries are commonly required when you use foreign key binding.\n *\n * @param {string} fKey\n * @param {string} from\n * @param {Object[]} source\n * @param {Group} lookup?\n * @param {string} pKey?\n * @param lookup\n * @param pKey\n * @hidden\n */\n DataUtil.buildHierarchy = function (fKey, from, source, lookup, pKey) {\n var i;\n var grp = {};\n var temp;\n if (lookup.result) {\n lookup = lookup.result;\n }\n if (lookup.GroupGuid) {\n this.throwError('DataManager: Do not have support Grouping in hierarchy');\n }\n for (i = 0; i < lookup.length; i++) {\n var fKeyData = this.getObject(fKey, lookup[i]);\n temp = grp[fKeyData] || (grp[fKeyData] = []);\n temp.push(lookup[i]);\n }\n for (i = 0; i < source.length; i++) {\n var fKeyData = this.getObject(pKey || fKey, source[i]);\n source[i][from] = grp[fKeyData];\n }\n };\n /**\n * The method used to get the field names which started with specified characters.\n *\n * @param {Object} obj\n * @param {string[]} fields?\n * @param {string} prefix?\n * @param fields\n * @param prefix\n * @hidden\n */\n DataUtil.getFieldList = function (obj, fields, prefix) {\n if (prefix === undefined) {\n prefix = '';\n }\n if (fields === undefined || fields === null) {\n return this.getFieldList(obj, [], prefix);\n }\n var copyObj = obj;\n var keys = Object.keys(obj);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (typeof copyObj[prop] === 'object' && !(copyObj[prop] instanceof Array)) {\n this.getFieldList(copyObj[prop], fields, prefix + prop + '.');\n }\n else {\n fields.push(prefix + prop);\n }\n }\n return fields;\n };\n /**\n * Gets the value of the property in the given object.\n * The complex object can be accessed by providing the field names concatenated with dot(.).\n *\n * @param {string} nameSpace - The name of the property to be accessed.\n * @param {Object} from - Defines the source object.\n */\n DataUtil.getObject = function (nameSpace, from) {\n if (!nameSpace) {\n return from;\n }\n if (!from) {\n return undefined;\n }\n if (nameSpace.indexOf('.') === -1) {\n var lowerCaseNameSpace = nameSpace.charAt(0).toLowerCase() + nameSpace.slice(1);\n var upperCaseNameSpace = nameSpace.charAt(0).toUpperCase() + nameSpace.slice(1);\n if (!isNullOrUndefined(from[nameSpace])) {\n return from[nameSpace];\n }\n else {\n if (!isNullOrUndefined(from[lowerCaseNameSpace])) {\n return from[lowerCaseNameSpace];\n }\n else if (!isNullOrUndefined(from[upperCaseNameSpace])) {\n return from[upperCaseNameSpace];\n }\n else {\n return null;\n }\n }\n }\n var value = from;\n var splits = nameSpace.split('.');\n for (var i = 0; i < splits.length; i++) {\n if (value == null) {\n break;\n }\n value = value[splits[i]];\n if (value === undefined) {\n var casing = splits[i].charAt(0).toUpperCase() + splits[i].slice(1);\n value = from[casing] || from[casing.charAt(0).toLowerCase() + casing.slice(1)] || null;\n }\n from = value;\n }\n return value;\n };\n /**\n * To set value for the nameSpace in desired object.\n *\n * @param {string} nameSpace - String value to the get the inner object.\n * @param {Object} value - Value that you need to set.\n * @param {Object} obj - Object to get the inner object value.\n * @return { [key: string]: Object; } | Object\n * @hidden\n */\n DataUtil.setValue = function (nameSpace, value, obj) {\n var keys = nameSpace.toString().split('.');\n var start = obj || {};\n var fromObj = start;\n var i;\n var length = keys.length;\n var key;\n for (i = 0; i < length; i++) {\n key = keys[i];\n if (i + 1 === length) {\n fromObj[key] = value === undefined ? undefined : value;\n }\n else if (isNullOrUndefined(fromObj[key])) {\n fromObj[key] = {};\n }\n fromObj = fromObj[key];\n }\n return start;\n };\n /**\n * Sort the given data based on the field and comparer.\n *\n * @param {Object[]} ds - Defines the input data.\n * @param {string} field - Defines the field to be sorted.\n * @param {Function} comparer - Defines the comparer function used to sort the records.\n */\n DataUtil.sort = function (ds, field, comparer) {\n if (ds.length <= 1) {\n return ds;\n }\n var middle = parseInt((ds.length / 2).toString(), 10);\n var left = ds.slice(0, middle);\n var right = ds.slice(middle);\n left = this.sort(left, field, comparer);\n right = this.sort(right, field, comparer);\n return this.merge(left, right, field, comparer);\n };\n DataUtil.ignoreDiacritics = function (value) {\n if (typeof value !== 'string') {\n return value;\n }\n var result = value.split('');\n var newValue = result.map(function (temp) { return temp in DataUtil.diacritics ? DataUtil.diacritics[temp] : temp; });\n return newValue.join('');\n };\n DataUtil.merge = function (left, right, fieldName, comparer) {\n var result = [];\n var current;\n while (left.length > 0 || right.length > 0) {\n if (left.length > 0 && right.length > 0) {\n if (comparer) {\n current = comparer(this.getVal(left, 0, fieldName), this.getVal(right, 0, fieldName), left[0], right[0]) <= 0 ? left : right;\n }\n else {\n current = left[0][fieldName] < left[0][fieldName] ? left : right;\n }\n }\n else {\n current = left.length > 0 ? left : right;\n }\n result.push(current.shift());\n }\n return result;\n };\n DataUtil.getVal = function (array, index, field) {\n return field ? this.getObject(field, array[index]) : array[index];\n };\n DataUtil.toLowerCase = function (val) {\n return val ? typeof val === 'string' ? val.toLowerCase() : val.toString() : (val === 0 || val === false) ? val.toString() : '';\n };\n /**\n * To perform the filter operation with specified adaptor and returns the result.\n *\n * @param {Object} adaptor\n * @param {string} fnName\n * @param {Object} param1?\n * @param {Object} param2?\n * @param param1\n * @param param2\n * @hidden\n */\n DataUtil.callAdaptorFunction = function (adaptor, fnName, param1, param2) {\n if (fnName in adaptor) {\n var res = adaptor[fnName](param1, param2);\n if (!isNullOrUndefined(res)) {\n param1 = res;\n }\n }\n return param1;\n };\n DataUtil.getAddParams = function (adp, dm, query) {\n var req = {};\n DataUtil.callAdaptorFunction(adp, 'addParams', {\n dm: dm,\n query: query,\n params: query.params,\n reqParams: req\n });\n return req;\n };\n /**\n * Checks wheather the given input is a plain object or not.\n *\n * @param {Object|Object[]} obj\n */\n DataUtil.isPlainObject = function (obj) {\n return (!!obj) && (obj.constructor === Object);\n };\n /**\n * Returns true when the browser cross origin request.\n */\n DataUtil.isCors = function () {\n var xhr = null;\n var request = 'XMLHttpRequest';\n try {\n xhr = new window[request]();\n }\n catch (e) {\n // No exception handling\n }\n return !!xhr && ('withCredentials' in xhr);\n };\n /**\n * Generate random GUID value which will be prefixed with the given value.\n *\n * @param {string} prefix\n */\n DataUtil.getGuid = function (prefix) {\n var hexs = '0123456789abcdef';\n var rand;\n return (prefix || '') + '00000000-0000-4000-0000-000000000000'.replace(/0/g, function (val, i) {\n if ('crypto' in window && 'getRandomValues' in crypto) {\n var arr = new Uint8Array(1);\n window.crypto.getRandomValues(arr);\n rand = arr[0] % 16 | 0;\n }\n else {\n rand = Math.random() * 16 | 0;\n }\n return hexs[i === 19 ? rand & 0x3 | 0x8 : rand];\n });\n };\n /**\n * Checks wheather the given value is null or not.\n *\n * @param {string|Object} val\n * @returns boolean\n */\n DataUtil.isNull = function (val) {\n return val === undefined || val === null;\n };\n /**\n * To get the required items from collection of objects.\n *\n * @param {Object[]} array\n * @param {string} field\n * @param {Function} comparer\n * @returns Object\n * @hidden\n */\n DataUtil.getItemFromComparer = function (array, field, comparer) {\n var keyVal;\n var current;\n var key;\n var i = 0;\n var castRequired = typeof DataUtil.getVal(array, 0, field) === 'string';\n if (array.length) {\n while (isNullOrUndefined(keyVal) && i < array.length) {\n keyVal = DataUtil.getVal(array, i, field);\n key = array[i++];\n }\n }\n for (; i < array.length; i++) {\n current = DataUtil.getVal(array, i, field);\n if (isNullOrUndefined(current)) {\n continue;\n }\n if (castRequired) {\n keyVal = +keyVal;\n current = +current;\n }\n if (comparer(keyVal, current) > 0) {\n keyVal = current;\n key = array[i];\n }\n }\n return key;\n };\n /**\n * To get distinct values of Array or Array of Objects.\n *\n * @param {Object[]} json\n * @param {string} field\n * @param fieldName\n * @param {boolean} requiresCompleteRecord\n * @returns Object[]\n * * distinct array of objects is return when requiresCompleteRecord set as true.\n * @hidden\n */\n DataUtil.distinct = function (json, fieldName, requiresCompleteRecord) {\n requiresCompleteRecord = isNullOrUndefined(requiresCompleteRecord) ? false : requiresCompleteRecord;\n var result = [];\n var val;\n var tmp = {};\n json.forEach(function (data, index) {\n val = typeof (json[index]) === 'object' ? DataUtil.getVal(json, index, fieldName) : json[index];\n if (!(val in tmp)) {\n result.push(!requiresCompleteRecord ? val : json[index]);\n tmp[val] = 1;\n }\n });\n return result;\n };\n /**\n * Process the given records based on the datamanager string.\n *\n * @param {string} datamanager\n * @param dm\n * @param {Object[]} records\n */\n DataUtil.processData = function (dm, records) {\n var query = this.prepareQuery(dm);\n var sampledata = new DataManager(records);\n if (dm.requiresCounts) {\n query.requiresCount();\n }\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n var result = sampledata.executeLocal(query);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n var returnValue = {\n result: dm.requiresCounts ? result.result : result,\n count: result.count,\n aggregates: JSON.stringify(result.aggregates)\n };\n return dm.requiresCounts ? returnValue : result;\n };\n DataUtil.prepareQuery = function (dm) {\n var _this = this;\n var query = new Query();\n if (dm.select) {\n query.select(dm.select);\n }\n if (dm.where) {\n var where = DataUtil.parse.parseJson(dm.where);\n where.filter(function (pred) {\n if (isNullOrUndefined(pred.condition)) {\n query.where(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent);\n }\n else {\n var predicateList = [];\n if (pred.field) {\n predicateList.push(new Predicate(pred.field, pred.operator, pred.value, pred.ignoreCase, pred.ignoreAccent));\n }\n else {\n predicateList = predicateList.concat(_this.getPredicate(pred.predicates));\n }\n if (pred.condition === 'or') {\n query.where(Predicate.or(predicateList));\n }\n else if (pred.condition === 'and') {\n query.where(Predicate.and(predicateList));\n }\n }\n });\n }\n if (dm.search) {\n var search = DataUtil.parse.parseJson(dm.search);\n // tslint:disable-next-line:no-string-literal\n search.filter(function (e) { return query.search(e.key, e.fields, e['operator'], \n // tslint:disable-next-line:no-string-literal\n e['ignoreCase'], e['ignoreAccent']); });\n }\n if (dm.aggregates) {\n dm.aggregates.filter(function (e) { return query.aggregate(e.type, e.field); });\n }\n if (dm.sorted) {\n dm.sorted.filter(function (e) { return query.sortBy(e.name, e.direction); });\n }\n if (dm.skip) {\n query.skip(dm.skip);\n }\n if (dm.take) {\n query.take(dm.take);\n }\n if (dm.group) {\n dm.group.filter(function (grp) { return query.group(grp); });\n }\n return query;\n };\n DataUtil.getPredicate = function (pred) {\n var mainPred = [];\n for (var i = 0; i < pred.length; i++) {\n var e = pred[i];\n if (e.field) {\n mainPred.push(new Predicate(e.field, e.operator, e.value, e.ignoreCase, e.ignoreAccent));\n }\n else {\n var childPred = [];\n // tslint:disable-next-line:typedef\n var cpre = this.getPredicate(e.predicates);\n for (var _i = 0, _a = Object.keys(cpre); _i < _a.length; _i++) {\n var prop = _a[_i];\n childPred.push(cpre[prop]);\n }\n mainPred.push(e.condition === 'or' ? Predicate.or(childPred) : Predicate.and(childPred));\n }\n }\n return mainPred;\n };\n /**\n * Specifies the value which will be used to adjust the date value to server timezone.\n *\n * @default null\n */\n DataUtil.serverTimezoneOffset = null;\n /**\n * Species whether are not to be parsed with serverTimezoneOffset value.\n *\n * @hidden\n */\n DataUtil.timeZoneHandling = true;\n /**\n * Throw error with the given string as message.\n *\n * @param {string} er\n * @param error\n */\n DataUtil.throwError = function (error) {\n try {\n throw new Error(error);\n }\n catch (e) {\n // eslint-disable-next-line no-throw-literal\n throw e.message + '\\n' + e.stack;\n }\n };\n DataUtil.aggregates = {\n /**\n * Calculate sum of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n sum: function (ds, field) {\n var result = 0;\n var val;\n var castRequired = typeof DataUtil.getVal(ds, 0, field) !== 'number';\n for (var i = 0; i < ds.length; i++) {\n val = DataUtil.getVal(ds, i, field);\n if (!isNaN(val) && val !== null) {\n if (castRequired) {\n val = +val;\n }\n result += val;\n }\n }\n return result;\n },\n /**\n * Calculate average value of the given field in the data.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n average: function (ds, field) {\n return DataUtil.aggregates.sum(ds, field) / ds.length;\n },\n /**\n * Returns the min value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string|Function} field\n */\n min: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnAscending));\n },\n /**\n * Returns the max value of the data based on the field.\n *\n * @param {Object[]} ds\n * @param {string} field\n * @returns number\n */\n max: function (ds, field) {\n var comparer;\n if (typeof field === 'function') {\n comparer = field;\n field = null;\n }\n return DataUtil.getObject(field, DataUtil.getItemFromComparer(ds, field, comparer || DataUtil.fnDescending));\n },\n /**\n * Returns the total number of true value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n truecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', true, true)).length;\n },\n /**\n * Returns the total number of false value present in the data based on the given boolean field name.\n *\n * @param {Object[]} ds\n * @param {string} field\n */\n falsecount: function (ds, field) {\n return new DataManager(ds).executeLocal(new Query().where(field, 'equal', false, true)).length;\n },\n /**\n * Returns the length of the given data.\n *\n * @param {Object[]} ds\n * @param {string} field?\n * @param field\n * @returns number\n */\n count: function (ds, field) {\n return ds.length;\n }\n };\n /**\n * Specifies the Object with filter operators.\n */\n DataUtil.operatorSymbols = {\n '<': 'lessthan',\n '>': 'greaterthan',\n '<=': 'lessthanorequal',\n '>=': 'greaterthanorequal',\n '==': 'equal',\n '!=': 'notequal',\n '*=': 'contains',\n '$=': 'endswith',\n '^=': 'startswith'\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * * It will be used for date/number type filter query.\n */\n DataUtil.odBiOperator = {\n '<': ' lt ',\n '>': ' gt ',\n '<=': ' le ',\n '>=': ' ge ',\n '==': ' eq ',\n '!=': ' ne ',\n 'lessthan': ' lt ',\n 'lessthanorequal': ' le ',\n 'greaterthan': ' gt ',\n 'greaterthanorequal': ' ge ',\n 'equal': ' eq ',\n 'notequal': ' ne '\n };\n /**\n * Specifies the Object with filter operators which will be used for OData filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odUniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'substringof',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'substringof',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not substringof',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n /**\n * Specifies the Object with filter operators which will be used for ODataV4 filter query generation.\n * It will be used for string type filter query.\n */\n DataUtil.odv4UniOperator = {\n '$=': 'endswith',\n '^=': 'startswith',\n '*=': 'contains',\n 'endswith': 'endswith',\n 'startswith': 'startswith',\n 'contains': 'contains',\n 'doesnotendwith': 'not endswith',\n 'doesnotstartwith': 'not startswith',\n 'doesnotcontain': 'not contains',\n 'wildcard': 'wildcard',\n 'like': 'like'\n };\n DataUtil.diacritics = {\n '\\u24B6': 'A',\n '\\uFF21': 'A',\n '\\u00C0': 'A',\n '\\u00C1': 'A',\n '\\u00C2': 'A',\n '\\u1EA6': 'A',\n '\\u1EA4': 'A',\n '\\u1EAA': 'A',\n '\\u1EA8': 'A',\n '\\u00C3': 'A',\n '\\u0100': 'A',\n '\\u0102': 'A',\n '\\u1EB0': 'A',\n '\\u1EAE': 'A',\n '\\u1EB4': 'A',\n '\\u1EB2': 'A',\n '\\u0226': 'A',\n '\\u01E0': 'A',\n '\\u00C4': 'A',\n '\\u01DE': 'A',\n '\\u1EA2': 'A',\n '\\u00C5': 'A',\n '\\u01FA': 'A',\n '\\u01CD': 'A',\n '\\u0200': 'A',\n '\\u0202': 'A',\n '\\u1EA0': 'A',\n '\\u1EAC': 'A',\n '\\u1EB6': 'A',\n '\\u1E00': 'A',\n '\\u0104': 'A',\n '\\u023A': 'A',\n '\\u2C6F': 'A',\n '\\uA732': 'AA',\n '\\u00C6': 'AE',\n '\\u01FC': 'AE',\n '\\u01E2': 'AE',\n '\\uA734': 'AO',\n '\\uA736': 'AU',\n '\\uA738': 'AV',\n '\\uA73A': 'AV',\n '\\uA73C': 'AY',\n '\\u24B7': 'B',\n '\\uFF22': 'B',\n '\\u1E02': 'B',\n '\\u1E04': 'B',\n '\\u1E06': 'B',\n '\\u0243': 'B',\n '\\u0182': 'B',\n '\\u0181': 'B',\n '\\u24B8': 'C',\n '\\uFF23': 'C',\n '\\u0106': 'C',\n '\\u0108': 'C',\n '\\u010A': 'C',\n '\\u010C': 'C',\n '\\u00C7': 'C',\n '\\u1E08': 'C',\n '\\u0187': 'C',\n '\\u023B': 'C',\n '\\uA73E': 'C',\n '\\u24B9': 'D',\n '\\uFF24': 'D',\n '\\u1E0A': 'D',\n '\\u010E': 'D',\n '\\u1E0C': 'D',\n '\\u1E10': 'D',\n '\\u1E12': 'D',\n '\\u1E0E': 'D',\n '\\u0110': 'D',\n '\\u018B': 'D',\n '\\u018A': 'D',\n '\\u0189': 'D',\n '\\uA779': 'D',\n '\\u01F1': 'DZ',\n '\\u01C4': 'DZ',\n '\\u01F2': 'Dz',\n '\\u01C5': 'Dz',\n '\\u24BA': 'E',\n '\\uFF25': 'E',\n '\\u00C8': 'E',\n '\\u00C9': 'E',\n '\\u00CA': 'E',\n '\\u1EC0': 'E',\n '\\u1EBE': 'E',\n '\\u1EC4': 'E',\n '\\u1EC2': 'E',\n '\\u1EBC': 'E',\n '\\u0112': 'E',\n '\\u1E14': 'E',\n '\\u1E16': 'E',\n '\\u0114': 'E',\n '\\u0116': 'E',\n '\\u00CB': 'E',\n '\\u1EBA': 'E',\n '\\u011A': 'E',\n '\\u0204': 'E',\n '\\u0206': 'E',\n '\\u1EB8': 'E',\n '\\u1EC6': 'E',\n '\\u0228': 'E',\n '\\u1E1C': 'E',\n '\\u0118': 'E',\n '\\u1E18': 'E',\n '\\u1E1A': 'E',\n '\\u0190': 'E',\n '\\u018E': 'E',\n '\\u24BB': 'F',\n '\\uFF26': 'F',\n '\\u1E1E': 'F',\n '\\u0191': 'F',\n '\\uA77B': 'F',\n '\\u24BC': 'G',\n '\\uFF27': 'G',\n '\\u01F4': 'G',\n '\\u011C': 'G',\n '\\u1E20': 'G',\n '\\u011E': 'G',\n '\\u0120': 'G',\n '\\u01E6': 'G',\n '\\u0122': 'G',\n '\\u01E4': 'G',\n '\\u0193': 'G',\n '\\uA7A0': 'G',\n '\\uA77D': 'G',\n '\\uA77E': 'G',\n '\\u24BD': 'H',\n '\\uFF28': 'H',\n '\\u0124': 'H',\n '\\u1E22': 'H',\n '\\u1E26': 'H',\n '\\u021E': 'H',\n '\\u1E24': 'H',\n '\\u1E28': 'H',\n '\\u1E2A': 'H',\n '\\u0126': 'H',\n '\\u2C67': 'H',\n '\\u2C75': 'H',\n '\\uA78D': 'H',\n '\\u24BE': 'I',\n '\\uFF29': 'I',\n '\\u00CC': 'I',\n '\\u00CD': 'I',\n '\\u00CE': 'I',\n '\\u0128': 'I',\n '\\u012A': 'I',\n '\\u012C': 'I',\n '\\u0130': 'I',\n '\\u00CF': 'I',\n '\\u1E2E': 'I',\n '\\u1EC8': 'I',\n '\\u01CF': 'I',\n '\\u0208': 'I',\n '\\u020A': 'I',\n '\\u1ECA': 'I',\n '\\u012E': 'I',\n '\\u1E2C': 'I',\n '\\u0197': 'I',\n '\\u24BF': 'J',\n '\\uFF2A': 'J',\n '\\u0134': 'J',\n '\\u0248': 'J',\n '\\u24C0': 'K',\n '\\uFF2B': 'K',\n '\\u1E30': 'K',\n '\\u01E8': 'K',\n '\\u1E32': 'K',\n '\\u0136': 'K',\n '\\u1E34': 'K',\n '\\u0198': 'K',\n '\\u2C69': 'K',\n '\\uA740': 'K',\n '\\uA742': 'K',\n '\\uA744': 'K',\n '\\uA7A2': 'K',\n '\\u24C1': 'L',\n '\\uFF2C': 'L',\n '\\u013F': 'L',\n '\\u0139': 'L',\n '\\u013D': 'L',\n '\\u1E36': 'L',\n '\\u1E38': 'L',\n '\\u013B': 'L',\n '\\u1E3C': 'L',\n '\\u1E3A': 'L',\n '\\u0141': 'L',\n '\\u023D': 'L',\n '\\u2C62': 'L',\n '\\u2C60': 'L',\n '\\uA748': 'L',\n '\\uA746': 'L',\n '\\uA780': 'L',\n '\\u01C7': 'LJ',\n '\\u01C8': 'Lj',\n '\\u24C2': 'M',\n '\\uFF2D': 'M',\n '\\u1E3E': 'M',\n '\\u1E40': 'M',\n '\\u1E42': 'M',\n '\\u2C6E': 'M',\n '\\u019C': 'M',\n '\\u24C3': 'N',\n '\\uFF2E': 'N',\n '\\u01F8': 'N',\n '\\u0143': 'N',\n '\\u00D1': 'N',\n '\\u1E44': 'N',\n '\\u0147': 'N',\n '\\u1E46': 'N',\n '\\u0145': 'N',\n '\\u1E4A': 'N',\n '\\u1E48': 'N',\n '\\u0220': 'N',\n '\\u019D': 'N',\n '\\uA790': 'N',\n '\\uA7A4': 'N',\n '\\u01CA': 'NJ',\n '\\u01CB': 'Nj',\n '\\u24C4': 'O',\n '\\uFF2F': 'O',\n '\\u00D2': 'O',\n '\\u00D3': 'O',\n '\\u00D4': 'O',\n '\\u1ED2': 'O',\n '\\u1ED0': 'O',\n '\\u1ED6': 'O',\n '\\u1ED4': 'O',\n '\\u00D5': 'O',\n '\\u1E4C': 'O',\n '\\u022C': 'O',\n '\\u1E4E': 'O',\n '\\u014C': 'O',\n '\\u1E50': 'O',\n '\\u1E52': 'O',\n '\\u014E': 'O',\n '\\u022E': 'O',\n '\\u0230': 'O',\n '\\u00D6': 'O',\n '\\u022A': 'O',\n '\\u1ECE': 'O',\n '\\u0150': 'O',\n '\\u01D1': 'O',\n '\\u020C': 'O',\n '\\u020E': 'O',\n '\\u01A0': 'O',\n '\\u1EDC': 'O',\n '\\u1EDA': 'O',\n '\\u1EE0': 'O',\n '\\u1EDE': 'O',\n '\\u1EE2': 'O',\n '\\u1ECC': 'O',\n '\\u1ED8': 'O',\n '\\u01EA': 'O',\n '\\u01EC': 'O',\n '\\u00D8': 'O',\n '\\u01FE': 'O',\n '\\u0186': 'O',\n '\\u019F': 'O',\n '\\uA74A': 'O',\n '\\uA74C': 'O',\n '\\u01A2': 'OI',\n '\\uA74E': 'OO',\n '\\u0222': 'OU',\n '\\u24C5': 'P',\n '\\uFF30': 'P',\n '\\u1E54': 'P',\n '\\u1E56': 'P',\n '\\u01A4': 'P',\n '\\u2C63': 'P',\n '\\uA750': 'P',\n '\\uA752': 'P',\n '\\uA754': 'P',\n '\\u24C6': 'Q',\n '\\uFF31': 'Q',\n '\\uA756': 'Q',\n '\\uA758': 'Q',\n '\\u024A': 'Q',\n '\\u24C7': 'R',\n '\\uFF32': 'R',\n '\\u0154': 'R',\n '\\u1E58': 'R',\n '\\u0158': 'R',\n '\\u0210': 'R',\n '\\u0212': 'R',\n '\\u1E5A': 'R',\n '\\u1E5C': 'R',\n '\\u0156': 'R',\n '\\u1E5E': 'R',\n '\\u024C': 'R',\n '\\u2C64': 'R',\n '\\uA75A': 'R',\n '\\uA7A6': 'R',\n '\\uA782': 'R',\n '\\u24C8': 'S',\n '\\uFF33': 'S',\n '\\u1E9E': 'S',\n '\\u015A': 'S',\n '\\u1E64': 'S',\n '\\u015C': 'S',\n '\\u1E60': 'S',\n '\\u0160': 'S',\n '\\u1E66': 'S',\n '\\u1E62': 'S',\n '\\u1E68': 'S',\n '\\u0218': 'S',\n '\\u015E': 'S',\n '\\u2C7E': 'S',\n '\\uA7A8': 'S',\n '\\uA784': 'S',\n '\\u24C9': 'T',\n '\\uFF34': 'T',\n '\\u1E6A': 'T',\n '\\u0164': 'T',\n '\\u1E6C': 'T',\n '\\u021A': 'T',\n '\\u0162': 'T',\n '\\u1E70': 'T',\n '\\u1E6E': 'T',\n '\\u0166': 'T',\n '\\u01AC': 'T',\n '\\u01AE': 'T',\n '\\u023E': 'T',\n '\\uA786': 'T',\n '\\uA728': 'TZ',\n '\\u24CA': 'U',\n '\\uFF35': 'U',\n '\\u00D9': 'U',\n '\\u00DA': 'U',\n '\\u00DB': 'U',\n '\\u0168': 'U',\n '\\u1E78': 'U',\n '\\u016A': 'U',\n '\\u1E7A': 'U',\n '\\u016C': 'U',\n '\\u00DC': 'U',\n '\\u01DB': 'U',\n '\\u01D7': 'U',\n '\\u01D5': 'U',\n '\\u01D9': 'U',\n '\\u1EE6': 'U',\n '\\u016E': 'U',\n '\\u0170': 'U',\n '\\u01D3': 'U',\n '\\u0214': 'U',\n '\\u0216': 'U',\n '\\u01AF': 'U',\n '\\u1EEA': 'U',\n '\\u1EE8': 'U',\n '\\u1EEE': 'U',\n '\\u1EEC': 'U',\n '\\u1EF0': 'U',\n '\\u1EE4': 'U',\n '\\u1E72': 'U',\n '\\u0172': 'U',\n '\\u1E76': 'U',\n '\\u1E74': 'U',\n '\\u0244': 'U',\n '\\u24CB': 'V',\n '\\uFF36': 'V',\n '\\u1E7C': 'V',\n '\\u1E7E': 'V',\n '\\u01B2': 'V',\n '\\uA75E': 'V',\n '\\u0245': 'V',\n '\\uA760': 'VY',\n '\\u24CC': 'W',\n '\\uFF37': 'W',\n '\\u1E80': 'W',\n '\\u1E82': 'W',\n '\\u0174': 'W',\n '\\u1E86': 'W',\n '\\u1E84': 'W',\n '\\u1E88': 'W',\n '\\u2C72': 'W',\n '\\u24CD': 'X',\n '\\uFF38': 'X',\n '\\u1E8A': 'X',\n '\\u1E8C': 'X',\n '\\u24CE': 'Y',\n '\\uFF39': 'Y',\n '\\u1EF2': 'Y',\n '\\u00DD': 'Y',\n '\\u0176': 'Y',\n '\\u1EF8': 'Y',\n '\\u0232': 'Y',\n '\\u1E8E': 'Y',\n '\\u0178': 'Y',\n '\\u1EF6': 'Y',\n '\\u1EF4': 'Y',\n '\\u01B3': 'Y',\n '\\u024E': 'Y',\n '\\u1EFE': 'Y',\n '\\u24CF': 'Z',\n '\\uFF3A': 'Z',\n '\\u0179': 'Z',\n '\\u1E90': 'Z',\n '\\u017B': 'Z',\n '\\u017D': 'Z',\n '\\u1E92': 'Z',\n '\\u1E94': 'Z',\n '\\u01B5': 'Z',\n '\\u0224': 'Z',\n '\\u2C7F': 'Z',\n '\\u2C6B': 'Z',\n '\\uA762': 'Z',\n '\\u24D0': 'a',\n '\\uFF41': 'a',\n '\\u1E9A': 'a',\n '\\u00E0': 'a',\n '\\u00E1': 'a',\n '\\u00E2': 'a',\n '\\u1EA7': 'a',\n '\\u1EA5': 'a',\n '\\u1EAB': 'a',\n '\\u1EA9': 'a',\n '\\u00E3': 'a',\n '\\u0101': 'a',\n '\\u0103': 'a',\n '\\u1EB1': 'a',\n '\\u1EAF': 'a',\n '\\u1EB5': 'a',\n '\\u1EB3': 'a',\n '\\u0227': 'a',\n '\\u01E1': 'a',\n '\\u00E4': 'a',\n '\\u01DF': 'a',\n '\\u1EA3': 'a',\n '\\u00E5': 'a',\n '\\u01FB': 'a',\n '\\u01CE': 'a',\n '\\u0201': 'a',\n '\\u0203': 'a',\n '\\u1EA1': 'a',\n '\\u1EAD': 'a',\n '\\u1EB7': 'a',\n '\\u1E01': 'a',\n '\\u0105': 'a',\n '\\u2C65': 'a',\n '\\u0250': 'a',\n '\\uA733': 'aa',\n '\\u00E6': 'ae',\n '\\u01FD': 'ae',\n '\\u01E3': 'ae',\n '\\uA735': 'ao',\n '\\uA737': 'au',\n '\\uA739': 'av',\n '\\uA73B': 'av',\n '\\uA73D': 'ay',\n '\\u24D1': 'b',\n '\\uFF42': 'b',\n '\\u1E03': 'b',\n '\\u1E05': 'b',\n '\\u1E07': 'b',\n '\\u0180': 'b',\n '\\u0183': 'b',\n '\\u0253': 'b',\n '\\u24D2': 'c',\n '\\uFF43': 'c',\n '\\u0107': 'c',\n '\\u0109': 'c',\n '\\u010B': 'c',\n '\\u010D': 'c',\n '\\u00E7': 'c',\n '\\u1E09': 'c',\n '\\u0188': 'c',\n '\\u023C': 'c',\n '\\uA73F': 'c',\n '\\u2184': 'c',\n '\\u24D3': 'd',\n '\\uFF44': 'd',\n '\\u1E0B': 'd',\n '\\u010F': 'd',\n '\\u1E0D': 'd',\n '\\u1E11': 'd',\n '\\u1E13': 'd',\n '\\u1E0F': 'd',\n '\\u0111': 'd',\n '\\u018C': 'd',\n '\\u0256': 'd',\n '\\u0257': 'd',\n '\\uA77A': 'd',\n '\\u01F3': 'dz',\n '\\u01C6': 'dz',\n '\\u24D4': 'e',\n '\\uFF45': 'e',\n '\\u00E8': 'e',\n '\\u00E9': 'e',\n '\\u00EA': 'e',\n '\\u1EC1': 'e',\n '\\u1EBF': 'e',\n '\\u1EC5': 'e',\n '\\u1EC3': 'e',\n '\\u1EBD': 'e',\n '\\u0113': 'e',\n '\\u1E15': 'e',\n '\\u1E17': 'e',\n '\\u0115': 'e',\n '\\u0117': 'e',\n '\\u00EB': 'e',\n '\\u1EBB': 'e',\n '\\u011B': 'e',\n '\\u0205': 'e',\n '\\u0207': 'e',\n '\\u1EB9': 'e',\n '\\u1EC7': 'e',\n '\\u0229': 'e',\n '\\u1E1D': 'e',\n '\\u0119': 'e',\n '\\u1E19': 'e',\n '\\u1E1B': 'e',\n '\\u0247': 'e',\n '\\u025B': 'e',\n '\\u01DD': 'e',\n '\\u24D5': 'f',\n '\\uFF46': 'f',\n '\\u1E1F': 'f',\n '\\u0192': 'f',\n '\\uA77C': 'f',\n '\\u24D6': 'g',\n '\\uFF47': 'g',\n '\\u01F5': 'g',\n '\\u011D': 'g',\n '\\u1E21': 'g',\n '\\u011F': 'g',\n '\\u0121': 'g',\n '\\u01E7': 'g',\n '\\u0123': 'g',\n '\\u01E5': 'g',\n '\\u0260': 'g',\n '\\uA7A1': 'g',\n '\\u1D79': 'g',\n '\\uA77F': 'g',\n '\\u24D7': 'h',\n '\\uFF48': 'h',\n '\\u0125': 'h',\n '\\u1E23': 'h',\n '\\u1E27': 'h',\n '\\u021F': 'h',\n '\\u1E25': 'h',\n '\\u1E29': 'h',\n '\\u1E2B': 'h',\n '\\u1E96': 'h',\n '\\u0127': 'h',\n '\\u2C68': 'h',\n '\\u2C76': 'h',\n '\\u0265': 'h',\n '\\u0195': 'hv',\n '\\u24D8': 'i',\n '\\uFF49': 'i',\n '\\u00EC': 'i',\n '\\u00ED': 'i',\n '\\u00EE': 'i',\n '\\u0129': 'i',\n '\\u012B': 'i',\n '\\u012D': 'i',\n '\\u00EF': 'i',\n '\\u1E2F': 'i',\n '\\u1EC9': 'i',\n '\\u01D0': 'i',\n '\\u0209': 'i',\n '\\u020B': 'i',\n '\\u1ECB': 'i',\n '\\u012F': 'i',\n '\\u1E2D': 'i',\n '\\u0268': 'i',\n '\\u0131': 'i',\n '\\u24D9': 'j',\n '\\uFF4A': 'j',\n '\\u0135': 'j',\n '\\u01F0': 'j',\n '\\u0249': 'j',\n '\\u24DA': 'k',\n '\\uFF4B': 'k',\n '\\u1E31': 'k',\n '\\u01E9': 'k',\n '\\u1E33': 'k',\n '\\u0137': 'k',\n '\\u1E35': 'k',\n '\\u0199': 'k',\n '\\u2C6A': 'k',\n '\\uA741': 'k',\n '\\uA743': 'k',\n '\\uA745': 'k',\n '\\uA7A3': 'k',\n '\\u24DB': 'l',\n '\\uFF4C': 'l',\n '\\u0140': 'l',\n '\\u013A': 'l',\n '\\u013E': 'l',\n '\\u1E37': 'l',\n '\\u1E39': 'l',\n '\\u013C': 'l',\n '\\u1E3D': 'l',\n '\\u1E3B': 'l',\n '\\u017F': 'l',\n '\\u0142': 'l',\n '\\u019A': 'l',\n '\\u026B': 'l',\n '\\u2C61': 'l',\n '\\uA749': 'l',\n '\\uA781': 'l',\n '\\uA747': 'l',\n '\\u01C9': 'lj',\n '\\u24DC': 'm',\n '\\uFF4D': 'm',\n '\\u1E3F': 'm',\n '\\u1E41': 'm',\n '\\u1E43': 'm',\n '\\u0271': 'm',\n '\\u026F': 'm',\n '\\u24DD': 'n',\n '\\uFF4E': 'n',\n '\\u01F9': 'n',\n '\\u0144': 'n',\n '\\u00F1': 'n',\n '\\u1E45': 'n',\n '\\u0148': 'n',\n '\\u1E47': 'n',\n '\\u0146': 'n',\n '\\u1E4B': 'n',\n '\\u1E49': 'n',\n '\\u019E': 'n',\n '\\u0272': 'n',\n '\\u0149': 'n',\n '\\uA791': 'n',\n '\\uA7A5': 'n',\n '\\u01CC': 'nj',\n '\\u24DE': 'o',\n '\\uFF4F': 'o',\n '\\u00F2': 'o',\n '\\u00F3': 'o',\n '\\u00F4': 'o',\n '\\u1ED3': 'o',\n '\\u1ED1': 'o',\n '\\u1ED7': 'o',\n '\\u1ED5': 'o',\n '\\u00F5': 'o',\n '\\u1E4D': 'o',\n '\\u022D': 'o',\n '\\u1E4F': 'o',\n '\\u014D': 'o',\n '\\u1E51': 'o',\n '\\u1E53': 'o',\n '\\u014F': 'o',\n '\\u022F': 'o',\n '\\u0231': 'o',\n '\\u00F6': 'o',\n '\\u022B': 'o',\n '\\u1ECF': 'o',\n '\\u0151': 'o',\n '\\u01D2': 'o',\n '\\u020D': 'o',\n '\\u020F': 'o',\n '\\u01A1': 'o',\n '\\u1EDD': 'o',\n '\\u1EDB': 'o',\n '\\u1EE1': 'o',\n '\\u1EDF': 'o',\n '\\u1EE3': 'o',\n '\\u1ECD': 'o',\n '\\u1ED9': 'o',\n '\\u01EB': 'o',\n '\\u01ED': 'o',\n '\\u00F8': 'o',\n '\\u01FF': 'o',\n '\\u0254': 'o',\n '\\uA74B': 'o',\n '\\uA74D': 'o',\n '\\u0275': 'o',\n '\\u01A3': 'oi',\n '\\u0223': 'ou',\n '\\uA74F': 'oo',\n '\\u24DF': 'p',\n '\\uFF50': 'p',\n '\\u1E55': 'p',\n '\\u1E57': 'p',\n '\\u01A5': 'p',\n '\\u1D7D': 'p',\n '\\uA751': 'p',\n '\\uA753': 'p',\n '\\uA755': 'p',\n '\\u24E0': 'q',\n '\\uFF51': 'q',\n '\\u024B': 'q',\n '\\uA757': 'q',\n '\\uA759': 'q',\n '\\u24E1': 'r',\n '\\uFF52': 'r',\n '\\u0155': 'r',\n '\\u1E59': 'r',\n '\\u0159': 'r',\n '\\u0211': 'r',\n '\\u0213': 'r',\n '\\u1E5B': 'r',\n '\\u1E5D': 'r',\n '\\u0157': 'r',\n '\\u1E5F': 'r',\n '\\u024D': 'r',\n '\\u027D': 'r',\n '\\uA75B': 'r',\n '\\uA7A7': 'r',\n '\\uA783': 'r',\n '\\u24E2': 's',\n '\\uFF53': 's',\n '\\u00DF': 's',\n '\\u015B': 's',\n '\\u1E65': 's',\n '\\u015D': 's',\n '\\u1E61': 's',\n '\\u0161': 's',\n '\\u1E67': 's',\n '\\u1E63': 's',\n '\\u1E69': 's',\n '\\u0219': 's',\n '\\u015F': 's',\n '\\u023F': 's',\n '\\uA7A9': 's',\n '\\uA785': 's',\n '\\u1E9B': 's',\n '\\u24E3': 't',\n '\\uFF54': 't',\n '\\u1E6B': 't',\n '\\u1E97': 't',\n '\\u0165': 't',\n '\\u1E6D': 't',\n '\\u021B': 't',\n '\\u0163': 't',\n '\\u1E71': 't',\n '\\u1E6F': 't',\n '\\u0167': 't',\n '\\u01AD': 't',\n '\\u0288': 't',\n '\\u2C66': 't',\n '\\uA787': 't',\n '\\uA729': 'tz',\n '\\u24E4': 'u',\n '\\uFF55': 'u',\n '\\u00F9': 'u',\n '\\u00FA': 'u',\n '\\u00FB': 'u',\n '\\u0169': 'u',\n '\\u1E79': 'u',\n '\\u016B': 'u',\n '\\u1E7B': 'u',\n '\\u016D': 'u',\n '\\u00FC': 'u',\n '\\u01DC': 'u',\n '\\u01D8': 'u',\n '\\u01D6': 'u',\n '\\u01DA': 'u',\n '\\u1EE7': 'u',\n '\\u016F': 'u',\n '\\u0171': 'u',\n '\\u01D4': 'u',\n '\\u0215': 'u',\n '\\u0217': 'u',\n '\\u01B0': 'u',\n '\\u1EEB': 'u',\n '\\u1EE9': 'u',\n '\\u1EEF': 'u',\n '\\u1EED': 'u',\n '\\u1EF1': 'u',\n '\\u1EE5': 'u',\n '\\u1E73': 'u',\n '\\u0173': 'u',\n '\\u1E77': 'u',\n '\\u1E75': 'u',\n '\\u0289': 'u',\n '\\u24E5': 'v',\n '\\uFF56': 'v',\n '\\u1E7D': 'v',\n '\\u1E7F': 'v',\n '\\u028B': 'v',\n '\\uA75F': 'v',\n '\\u028C': 'v',\n '\\uA761': 'vy',\n '\\u24E6': 'w',\n '\\uFF57': 'w',\n '\\u1E81': 'w',\n '\\u1E83': 'w',\n '\\u0175': 'w',\n '\\u1E87': 'w',\n '\\u1E85': 'w',\n '\\u1E98': 'w',\n '\\u1E89': 'w',\n '\\u2C73': 'w',\n '\\u24E7': 'x',\n '\\uFF58': 'x',\n '\\u1E8B': 'x',\n '\\u1E8D': 'x',\n '\\u24E8': 'y',\n '\\uFF59': 'y',\n '\\u1EF3': 'y',\n '\\u00FD': 'y',\n '\\u0177': 'y',\n '\\u1EF9': 'y',\n '\\u0233': 'y',\n '\\u1E8F': 'y',\n '\\u00FF': 'y',\n '\\u1EF7': 'y',\n '\\u1E99': 'y',\n '\\u1EF5': 'y',\n '\\u01B4': 'y',\n '\\u024F': 'y',\n '\\u1EFF': 'y',\n '\\u24E9': 'z',\n '\\uFF5A': 'z',\n '\\u017A': 'z',\n '\\u1E91': 'z',\n '\\u017C': 'z',\n '\\u017E': 'z',\n '\\u1E93': 'z',\n '\\u1E95': 'z',\n '\\u01B6': 'z',\n '\\u0225': 'z',\n '\\u0240': 'z',\n '\\u2C6C': 'z',\n '\\uA763': 'z',\n '\\u0386': '\\u0391',\n '\\u0388': '\\u0395',\n '\\u0389': '\\u0397',\n '\\u038A': '\\u0399',\n '\\u03AA': '\\u0399',\n '\\u038C': '\\u039F',\n '\\u038E': '\\u03A5',\n '\\u03AB': '\\u03A5',\n '\\u038F': '\\u03A9',\n '\\u03AC': '\\u03B1',\n '\\u03AD': '\\u03B5',\n '\\u03AE': '\\u03B7',\n '\\u03AF': '\\u03B9',\n '\\u03CA': '\\u03B9',\n '\\u0390': '\\u03B9',\n '\\u03CC': '\\u03BF',\n '\\u03CD': '\\u03C5',\n '\\u03CB': '\\u03C5',\n '\\u03B0': '\\u03C5',\n '\\u03C9': '\\u03C9',\n '\\u03C2': '\\u03C3'\n };\n DataUtil.fnOperators = {\n /**\n * Returns true when the actual input is equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param {boolean} ignoreAccent?\n * @param ignoreCase\n * @param ignoreAccent\n */\n equal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) === DataUtil.toLowerCase(expected);\n }\n return actual === expected;\n },\n /**\n * Returns true when the actual input is not equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n notequal: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n return !DataUtil.fnOperators.equal(actual, expected, ignoreCase);\n },\n /**\n * Returns true when the actual input is less than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) < DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual < expected;\n },\n /**\n * Returns true when the actual input is greater than to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthan: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) > DataUtil.toLowerCase(expected);\n }\n return actual > expected;\n },\n /**\n * Returns true when the actual input is less than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n lessthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) <= DataUtil.toLowerCase(expected);\n }\n if (isNullOrUndefined(actual)) {\n actual = undefined;\n }\n return actual <= expected;\n },\n /**\n * Returns true when the actual input is greater than or equal to the given input.\n *\n * @param {string|number|boolean} actual\n * @param {string|number|boolean} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n */\n greaterthanorequal: function (actual, expected, ignoreCase) {\n if (ignoreCase) {\n return DataUtil.toLowerCase(actual) >= DataUtil.toLowerCase(expected);\n }\n return actual >= expected;\n },\n /**\n * Returns true when the actual input contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n contains: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) !== -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) !== -1;\n },\n /**\n * Returns true when the actual input not contains the given string.\n *\n * @param {string|number} actual\n * @param {string|number} expected\n * @param {boolean} ignoreCase?\n */\n doesnotcontain: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n DataUtil.toLowerCase(actual).indexOf(DataUtil.toLowerCase(expected)) === -1;\n }\n return !isNullOrUndefined(actual) && !isNullOrUndefined(expected) &&\n actual.toString().indexOf(expected) === -1;\n },\n /**\n * Returns true when the given input value is not null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotnull: function (actual) {\n return actual !== null && actual !== undefined;\n },\n /**\n * Returns true when the given input value is null.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnull: function (actual) {\n return actual === null || actual === undefined;\n },\n /**\n * Returns true when the actual input starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n startswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.startsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.startsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not starts with the given string\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotstartwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notStartsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notStartsWith(actual, expected);\n },\n /**\n * Returns true when the actual input like with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n like: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.like(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.like(actual, expected);\n },\n /**\n * Returns true when the given input value is empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isempty: function (actual) {\n return actual === undefined || actual === '';\n },\n /**\n * Returns true when the given input value is not empty.\n *\n * @param {string|number} actual\n * @returns boolean\n */\n isnotempty: function (actual) {\n return actual !== undefined && actual !== '';\n },\n /**\n * Returns true when the actual input pattern(wildcard) matches with the given string.\n *\n * @param {string|Date} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n wildcard: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return (actual || typeof actual === 'boolean') && expected && typeof actual !== 'object' &&\n DataUtil.wildCard(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return (actual || typeof actual === 'boolean') && expected && DataUtil.wildCard(actual, expected);\n },\n /**\n * Returns true when the actual input ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n * @param ignoreCase\n * @param ignoreAccent\n */\n endswith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.endsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.endsWith(actual, expected);\n },\n /**\n * Returns true when the actual input not ends with the given string.\n *\n * @param {string} actual\n * @param {string} expected\n * @param {boolean} ignoreCase?\n */\n doesnotendwith: function (actual, expected, ignoreCase, ignoreAccent) {\n if (ignoreAccent) {\n actual = DataUtil.ignoreDiacritics(actual);\n expected = DataUtil.ignoreDiacritics(expected);\n }\n if (ignoreCase) {\n return actual && expected && DataUtil.notEndsWith(DataUtil.toLowerCase(actual), DataUtil.toLowerCase(expected));\n }\n return actual && expected && DataUtil.notEndsWith(actual, expected);\n },\n /**\n * It will return the filter operator based on the filter symbol.\n *\n * @param {string} operator\n * @hidden\n */\n processSymbols: function (operator) {\n var fnName = DataUtil.operatorSymbols[operator];\n if (fnName) {\n var fn = DataUtil.fnOperators[fnName];\n return fn;\n }\n return DataUtil.throwError('Query - Process Operator : Invalid operator');\n },\n /**\n * It will return the valid filter operator based on the specified operators.\n *\n * @param {string} operator\n * @hidden\n */\n processOperator: function (operator) {\n var fn = DataUtil.fnOperators[operator];\n if (fn) {\n return fn;\n }\n return DataUtil.fnOperators.processSymbols(operator);\n }\n };\n /**\n * To perform the parse operation on JSON data, like convert to string from JSON or convert to JSON from string.\n */\n DataUtil.parse = {\n /**\n * Parse the given string to the plain JavaScript object.\n *\n * @param {string|Object|Object[]} jsonText\n */\n parseJson: function (jsonText) {\n if (typeof jsonText === 'string' && (/^[\\s]*\\[|^[\\s]*\\{(.)+:/g.test(jsonText) || jsonText.indexOf('\"') === -1)) {\n jsonText = JSON.parse(jsonText, DataUtil.parse.jsonReviver);\n }\n else if (jsonText instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(jsonText);\n }\n else if (typeof jsonText === 'object' && jsonText !== null) {\n DataUtil.parse.iterateAndReviveJson(jsonText);\n }\n return jsonText;\n },\n /**\n * It will perform on array of values.\n *\n * @param {string[]|Object[]} array\n * @hidden\n */\n iterateAndReviveArray: function (array) {\n for (var i = 0; i < array.length; i++) {\n if (typeof array[i] === 'object' && array[i] !== null) {\n DataUtil.parse.iterateAndReviveJson(array[i]);\n // eslint-disable-next-line no-useless-escape\n }\n else if (typeof array[i] === 'string' && (!/^[\\s]*\\[|^[\\s]*\\{(.)+:|\\\"/g.test(array[i]) ||\n array[i].toString().indexOf('\"') === -1)) {\n array[i] = DataUtil.parse.jsonReviver('', array[i]);\n }\n else {\n array[i] = DataUtil.parse.parseJson(array[i]);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {JSON} json\n * @hidden\n */\n iterateAndReviveJson: function (json) {\n var value;\n var keys = Object.keys(json);\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var prop = keys_2[_i];\n if (DataUtil.startsWith(prop, '__')) {\n continue;\n }\n value = json[prop];\n if (typeof value === 'object') {\n if (value instanceof Array) {\n DataUtil.parse.iterateAndReviveArray(value);\n }\n else if (value) {\n DataUtil.parse.iterateAndReviveJson(value);\n }\n }\n else {\n json[prop] = DataUtil.parse.jsonReviver(json[prop], value);\n }\n }\n },\n /**\n * It will perform on JSON values\n *\n * @param {string} field\n * @param {string|Date} value\n * @hidden\n */\n jsonReviver: function (field, value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n var offSet = DataUtil.timeZoneHandling ? DataUtil.serverTimezoneOffset : null;\n if (ms) {\n return DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), offSet, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var isUTC = value.indexOf('Z') > -1 || value.indexOf('z') > -1;\n var arr = value.split(/[^0-9.]/);\n if (isUTC) {\n if (arr[5].indexOf('.') > -1) {\n var secondsMs = arr[5].split('.');\n arr[5] = secondsMs[0];\n arr[6] = new Date(value).getUTCMilliseconds().toString();\n }\n else {\n arr[6] = '00';\n }\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10), parseInt(arr[6], 10)), DataUtil.serverTimezoneOffset, false);\n }\n else {\n var utcFormat = new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5] ? arr[5] : '00', 10));\n var hrs = parseInt(arr[6], 10);\n var mins = parseInt(arr[7], 10);\n if (isNaN(hrs) && isNaN(mins)) {\n return utcFormat;\n }\n if (value.indexOf('+') > -1) {\n utcFormat.setHours(utcFormat.getHours() - hrs, utcFormat.getMinutes() - mins);\n }\n else {\n utcFormat.setHours(utcFormat.getHours() + hrs, utcFormat.getMinutes() + mins);\n }\n value = DataUtil.dateParse\n .toTimeZone(utcFormat, DataUtil.serverTimezoneOffset, false);\n }\n if (DataUtil.serverTimezoneOffset == null) {\n value = DataUtil.dateParse.addSelfOffset(value);\n }\n }\n else if (/^\\d{4}-\\d{2}-\\d{2}$/.test(value)) {\n var arr = value.split(/[^0-9.]/);\n return new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10));\n }\n }\n return value;\n },\n /**\n * Check wheather the given value is JSON or not.\n *\n * @param {Object[]} jsonData\n */\n isJson: function (jsonData) {\n if (typeof jsonData[0] === 'string') {\n return jsonData;\n }\n return DataUtil.parse.parseJson(jsonData);\n },\n /**\n * Checks wheather the given value is GUID or not.\n *\n * @param {string} value\n */\n isGuid: function (value) {\n // eslint-disable-next-line security/detect-unsafe-regex\n var regex = /[A-Fa-f0-9]{8}(?:-[A-Fa-f0-9]{4}){3}-[A-Fa-f0-9]{12}/i;\n var match = regex.exec(value);\n return match != null;\n },\n /**\n * The method used to replace the value based on the type.\n *\n * @param {Object} value\n * @param {boolean} stringify\n * @hidden\n */\n replacer: function (value, stringify) {\n if (DataUtil.isPlainObject(value)) {\n return DataUtil.parse.jsonReplacer(value, stringify);\n }\n if (value instanceof Array) {\n return DataUtil.parse.arrayReplacer(value);\n }\n if (value instanceof Date) {\n return DataUtil.parse.jsonReplacer({ val: value }, stringify).val;\n }\n return value;\n },\n /**\n * It will replace the JSON value.\n *\n * @param {string} key\n * @param {Object} val\n * @param stringify\n * @hidden\n */\n jsonReplacer: function (val, stringify) {\n var value;\n var keys = Object.keys(val);\n for (var _i = 0, keys_3 = keys; _i < keys_3.length; _i++) {\n var prop = keys_3[_i];\n value = val[prop];\n if (!(value instanceof Date)) {\n continue;\n }\n var d = value;\n if (DataUtil.serverTimezoneOffset == null) {\n val[prop] = DataUtil.dateParse.toTimeZone(d, null).toJSON();\n }\n else {\n d = new Date(+d + DataUtil.serverTimezoneOffset * 3600000);\n val[prop] = DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(d), null).toJSON();\n }\n }\n return val;\n },\n /**\n * It will replace the Array of value.\n *\n * @param {string} key\n * @param {Object[]} val\n * @hidden\n */\n arrayReplacer: function (val) {\n for (var i = 0; i < val.length; i++) {\n if (DataUtil.isPlainObject(val[i])) {\n val[i] = DataUtil.parse.jsonReplacer(val[i]);\n }\n else if (val[i] instanceof Date) {\n val[i] = DataUtil.parse.jsonReplacer({ date: val[i] }).date;\n }\n }\n return val;\n },\n /**\n * It will replace the Date object with respective to UTC format value.\n *\n * @param {string} key\n * @param {any} value\n * @hidden\n */\n /* eslint-disable @typescript-eslint/no-explicit-any */\n /* tslint:disable-next-line:no-any */\n jsonDateReplacer: function (key, value) {\n /* eslint-enable @typescript-eslint/no-explicit-any */\n if (key === 'value' && value) {\n if (typeof value === 'string') {\n // eslint-disable-next-line security/detect-unsafe-regex\n var ms = /^\\/Date\\(([+-]?[0-9]+)([+-][0-9]{4})?\\)\\/$/.exec(value);\n if (ms) {\n value = DataUtil.dateParse.toTimeZone(new Date(parseInt(ms[1], 10)), null, true);\n // eslint-disable-next-line no-useless-escape, security/detect-unsafe-regex\n }\n else if (/^(\\d{4}\\-\\d\\d\\-\\d\\d([tT][\\d:\\.]*){1})([zZ]|([+\\-])(\\d\\d):?(\\d\\d))?$/.test(value)) {\n var arr = value.split(/[^0-9]/);\n value = DataUtil.dateParse\n .toTimeZone(new Date(parseInt(arr[0], 10), parseInt(arr[1], 10) - 1, parseInt(arr[2], 10), parseInt(arr[3], 10), parseInt(arr[4], 10), parseInt(arr[5], 10)), null, true);\n }\n }\n if (value instanceof Date) {\n value = DataUtil.dateParse.addSelfOffset(value);\n if (DataUtil.serverTimezoneOffset === null) {\n return DataUtil.dateParse.toTimeZone(DataUtil.dateParse.addSelfOffset(value), null).toJSON();\n }\n else {\n value = DataUtil.dateParse.toTimeZone(value, ((value.getTimezoneOffset() / 60)\n - DataUtil.serverTimezoneOffset), false);\n return value.toJSON();\n }\n }\n }\n return value;\n }\n };\n /**\n * @hidden\n */\n DataUtil.dateParse = {\n addSelfOffset: function (input) {\n return new Date(+input - (input.getTimezoneOffset() * 60000));\n },\n toUTC: function (input) {\n return new Date(+input + (input.getTimezoneOffset() * 60000));\n },\n toTimeZone: function (input, offset, utc) {\n if (offset === null) {\n return input;\n }\n var unix = utc ? DataUtil.dateParse.toUTC(input) : input;\n return new Date(+unix - (offset * 3600000));\n },\n toLocalTime: function (input) {\n var datefn = input;\n var timeZone = -datefn.getTimezoneOffset();\n var differenceString = timeZone >= 0 ? '+' : '-';\n var localtimefn = function (num) {\n var norm = Math.floor(Math.abs(num));\n return (norm < 10 ? '0' : '') + norm;\n };\n var val = datefn.getFullYear() + '-' + localtimefn(datefn.getMonth() + 1) + '-' + localtimefn(datefn.getDate()) +\n 'T' + localtimefn(datefn.getHours()) +\n ':' + localtimefn(datefn.getMinutes()) +\n ':' + localtimefn(datefn.getSeconds()) +\n differenceString + localtimefn(timeZone / 60) +\n ':' + localtimefn(timeZone % 60);\n return val;\n }\n };\n return DataUtil;\n}());\nexport { DataUtil };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nimport { merge, extend, isNullOrUndefined, setValue, getValue } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Query, Predicate } from './query';\nvar consts = { GroupGuid: '{271bbba0-1ee7}' };\n/**\n * Adaptors are specific data source type aware interfaces that are used by DataManager to communicate with DataSource.\n * This is the base adaptor class that other adaptors can extend.\n *\n * @hidden\n */\nvar Adaptor = /** @class */ (function () {\n /**\n * Constructor for Adaptor class\n *\n * @param {DataOptions} ds?\n * @param ds\n * @hidden\n * @returns aggregates\n */\n function Adaptor(ds) {\n // common options for all the adaptors\n this.options = {\n from: 'table',\n requestType: 'json',\n sortBy: 'sorted',\n select: 'select',\n skip: 'skip',\n group: 'group',\n take: 'take',\n search: 'search',\n count: 'requiresCounts',\n where: 'where',\n aggregates: 'aggregates',\n expand: 'expand'\n };\n /**\n * Specifies the type of adaptor.\n *\n * @default Adaptor\n */\n this.type = Adaptor;\n this.dataSource = ds;\n this.pvt = {};\n }\n /**\n * Returns the data from the query processing.\n *\n * @param {Object} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param ds\n * @param query\n * @param xhr\n * @returns Object\n */\n Adaptor.prototype.processResponse = function (data, ds, query, xhr) {\n return data;\n };\n return Adaptor;\n}());\nexport { Adaptor };\n/**\n * JsonAdaptor is used to process JSON data. It contains methods to process the given JSON data based on the queries.\n *\n * @hidden\n */\nvar JsonAdaptor = /** @class */ (function (_super) {\n __extends(JsonAdaptor, _super);\n function JsonAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dataManager\n * @param {Query} query\n * @returns Object\n */\n JsonAdaptor.prototype.processQuery = function (dataManager, query) {\n var result = dataManager.dataSource.json.slice(0);\n var count = result.length;\n var countFlg = true;\n var ret;\n var key;\n var lazyLoad = {};\n var keyCount = 0;\n var group = [];\n var page;\n for (var i = 0; i < query.lazyLoad.length; i++) {\n keyCount++;\n lazyLoad[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n var agg = {};\n for (var i = 0; i < query.queries.length; i++) {\n key = query.queries[i];\n if ((key.fn === 'onPage' || key.fn === 'onGroup') && query.lazyLoad.length) {\n if (key.fn === 'onGroup') {\n group.push(key.e);\n }\n if (key.fn === 'onPage') {\n page = key.e;\n }\n continue;\n }\n ret = this[key.fn].call(this, result, key.e, query);\n if (key.fn === 'onAggregates') {\n agg[key.e.field + ' - ' + key.e.type] = ret;\n }\n else {\n result = ret !== undefined ? ret : result;\n }\n if (key.fn === 'onPage' || key.fn === 'onSkip' || key.fn === 'onTake' || key.fn === 'onRange') {\n countFlg = false;\n }\n if (countFlg) {\n count = result.length;\n }\n }\n if (keyCount) {\n var args = {\n query: query, lazyLoad: lazyLoad, result: result, group: group, page: page\n };\n var lazyLoadData = this.lazyLoadGroup(args);\n result = lazyLoadData.result;\n count = lazyLoadData.count;\n }\n if (query.isCountRequired) {\n result = {\n result: result,\n count: count,\n aggregates: agg\n };\n }\n return result;\n };\n /**\n * Perform lazy load grouping in JSON array based on the given query and lazy load details.\n *\n * @param {LazyLoadGroupArgs} args\n */\n JsonAdaptor.prototype.lazyLoadGroup = function (args) {\n var count = 0;\n var agg = this.getAggregate(args.query);\n var result = args.result;\n if (!isNullOrUndefined(args.lazyLoad.onDemandGroupInfo)) {\n var req = args.lazyLoad.onDemandGroupInfo;\n for (var i = req.where.length - 1; i >= 0; i--) {\n result = this.onWhere(result, req.where[i]);\n }\n if (args.group.length !== req.level) {\n var field = args.group[req.level].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n }\n count = result.length;\n var data = result;\n result = result.slice(req.skip);\n result = result.slice(0, req.take);\n if (args.group.length !== req.level) {\n this.formGroupResult(result, data);\n }\n }\n else {\n var field = args.group[0].fieldName;\n result = DataUtil.group(result, field, agg, null, null, args.group[0].comparer, true);\n count = result.length;\n var data = result;\n if (args.page) {\n result = this.onPage(result, args.page, args.query);\n }\n this.formGroupResult(result, data);\n }\n return { result: result, count: count };\n };\n JsonAdaptor.prototype.formGroupResult = function (result, data) {\n if (result.length && data.length) {\n var uid = 'GroupGuid';\n var childLevel = 'childLevels';\n var level = 'level';\n var records = 'records';\n result[uid] = data[uid];\n result[childLevel] = data[childLevel];\n result[level] = data[level];\n result[records] = data[records];\n }\n return result;\n };\n /**\n * Separate the aggregate query from the given queries\n *\n * @param {Query} query\n */\n JsonAdaptor.prototype.getAggregate = function (query) {\n var aggQuery = Query.filterQueries(query.queries, 'onAggregates');\n var agg = [];\n if (aggQuery.length) {\n var tmp = void 0;\n for (var i = 0; i < aggQuery.length; i++) {\n tmp = aggQuery[i].e;\n agg.push({ type: tmp.type, field: DataUtil.getValue(tmp.field, query) });\n }\n }\n return agg;\n };\n /**\n * Performs batch update in the JSON array which add, remove and update records.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n JsonAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var i;\n var deletedRecordsLen = changes.deletedRecords.length;\n for (i = 0; i < changes.addedRecords.length; i++) {\n this.insert(dm, changes.addedRecords[i]);\n }\n for (i = 0; i < changes.changedRecords.length; i++) {\n this.update(dm, e.key, changes.changedRecords[i]);\n }\n for (i = 0; i < deletedRecordsLen; i++) {\n this.remove(dm, e.key, changes.deletedRecords[i]);\n }\n return changes;\n };\n /**\n * Performs filter operation with the given data and where query.\n *\n * @param {Object[]} ds\n * @param {{validate:Function}} e\n * @param e.validate\n */\n JsonAdaptor.prototype.onWhere = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.filter(function (obj) {\n if (e) {\n return e.validate(obj);\n }\n });\n };\n /**\n * Returns aggregate function based on the aggregate type.\n *\n * @param {Object[]} ds\n * @param e\n * @param {string} } type\n * @param e.field\n * @param e.type\n */\n JsonAdaptor.prototype.onAggregates = function (ds, e) {\n var fn = DataUtil.aggregates[e.type];\n if (!ds || !fn || ds.length === 0) {\n return null;\n }\n return fn(ds, e.field);\n };\n /**\n * Performs search operation based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n */\n JsonAdaptor.prototype.onSearch = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n if (e.fieldNames.length === 0) {\n DataUtil.getFieldList(ds[0], e.fieldNames);\n }\n return ds.filter(function (obj) {\n for (var j = 0; j < e.fieldNames.length; j++) {\n if (e.comparer.call(obj, DataUtil.getObject(e.fieldNames[j], obj), e.searchKey, e.ignoreCase, e.ignoreAccent)) {\n return true;\n }\n }\n return false;\n });\n };\n /**\n * Sort the data with given direction and field.\n *\n * @param {Object[]} ds\n * @param e\n * @param {Object} b\n * @param e.comparer\n * @param e.fieldName\n * @param query\n */\n JsonAdaptor.prototype.onSortBy = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var fnCompare;\n var field = DataUtil.getValue(e.fieldName, query);\n if (!field) {\n return ds.sort(e.comparer);\n }\n if (field instanceof Array) {\n field = field.slice(0);\n for (var i = field.length - 1; i >= 0; i--) {\n if (!field[i]) {\n continue;\n }\n fnCompare = e.comparer;\n if (DataUtil.endsWith(field[i], ' desc')) {\n fnCompare = DataUtil.fnSort('descending');\n field[i] = field[i].replace(' desc', '');\n }\n ds = DataUtil.sort(ds, field[i], fnCompare);\n }\n return ds;\n }\n return DataUtil.sort(ds, field, e.comparer);\n };\n /**\n * Group the data based on the given query.\n *\n * @param {Object[]} ds\n * @param {QueryOptions} e\n * @param {Query} query\n */\n JsonAdaptor.prototype.onGroup = function (ds, e, query) {\n if (!ds || !ds.length) {\n return ds;\n }\n var agg = this.getAggregate(query);\n return DataUtil.group(ds, DataUtil.getValue(e.fieldName, query), agg, null, null, e.comparer);\n };\n /**\n * Retrieves records based on the given page index and size.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } pageIndex\n * @param e.pageSize\n * @param {Query} query\n * @param e.pageIndex\n */\n JsonAdaptor.prototype.onPage = function (ds, e, query) {\n var size = DataUtil.getValue(e.pageSize, query);\n var start = (DataUtil.getValue(e.pageIndex, query) - 1) * size;\n var end = start + size;\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(start, end);\n };\n /**\n * Retrieves records based on the given start and end index from query.\n *\n * @param {Object[]} ds\n * @param e\n * @param {number} } end\n * @param e.start\n * @param e.end\n */\n JsonAdaptor.prototype.onRange = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.start), DataUtil.getValue(e.end));\n };\n /**\n * Picks the given count of records from the top of the datasource.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onTake = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(0, DataUtil.getValue(e.nos));\n };\n /**\n * Skips the given count of records from the data source.\n *\n * @param {Object[]} ds\n * @param {{nos:number}} e\n * @param e.nos\n */\n JsonAdaptor.prototype.onSkip = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return ds.slice(DataUtil.getValue(e.nos));\n };\n /**\n * Selects specified columns from the data source.\n *\n * @param {Object[]} ds\n * @param {{fieldNames:string}} e\n * @param e.fieldNames\n */\n JsonAdaptor.prototype.onSelect = function (ds, e) {\n if (!ds || !ds.length) {\n return ds;\n }\n return DataUtil.select(ds, DataUtil.getValue(e.fieldNames));\n };\n /**\n * Inserts new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param tableName\n * @param query\n * @param {number} position\n */\n JsonAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n if (isNullOrUndefined(position)) {\n return dm.dataSource.json.push(data);\n }\n else {\n return dm.dataSource.json.splice(position, 0, data);\n }\n };\n /**\n * Remove the data from the dataSource based on the key field value.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n if (typeof value === 'object' && !(value instanceof Date)) {\n value = DataUtil.getObject(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (DataUtil.getObject(keyField, ds[i]) === value) {\n break;\n }\n }\n return i !== ds.length ? ds.splice(i, 1) : null;\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @returns null\n */\n JsonAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n var ds = dm.dataSource.json;\n var i;\n var key;\n if (!isNullOrUndefined(keyField)) {\n key = getValue(keyField, value);\n }\n for (i = 0; i < ds.length; i++) {\n if (!isNullOrUndefined(keyField) && (getValue(keyField, ds[i])) === key) {\n break;\n }\n }\n return i < ds.length ? merge(ds[i], value) : null;\n };\n return JsonAdaptor;\n}(Adaptor));\nexport { JsonAdaptor };\n/**\n * URL Adaptor of DataManager can be used when you are required to use remote service to retrieve data.\n * It interacts with server-side for all DataManager Queries and CRUD operations.\n *\n * @hidden\n */\nvar UrlAdaptor = /** @class */ (function (_super) {\n __extends(UrlAdaptor, _super);\n function UrlAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Process the query to generate request body.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns p\n */\n // tslint:disable-next-line:max-func-body-length\n UrlAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var params = query.params;\n var url = dm.dataSource.url;\n var temp;\n var skip;\n var take = null;\n var options = this.options;\n var request = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n // calc Paging & Range\n if ('onPage' in singles) {\n temp = singles.onPage;\n skip = DataUtil.getValue(temp.pageIndex, query);\n take = DataUtil.getValue(temp.pageSize, query);\n skip = (skip - 1) * take;\n }\n else if ('onRange' in singles) {\n temp = singles.onRange;\n skip = temp.start;\n take = temp.end - temp.start;\n }\n // Sorting\n for (var i = 0; i < queries.sorts.length; i++) {\n temp = DataUtil.getValue(queries.sorts[i].e.fieldName, query);\n request.sorts.push(DataUtil.callAdaptorFunction(this, 'onEachSort', { name: temp, direction: queries.sorts[i].e.direction }, query));\n }\n // hierarchy\n if (hierarchyFilters) {\n temp = this.getFiltersFrom(hierarchyFilters, query);\n if (temp) {\n request.filters.push(DataUtil.callAdaptorFunction(this, 'onEachWhere', temp.toJson(), query));\n }\n }\n // Filters\n for (var i = 0; i < queries.filters.length; i++) {\n var res = DataUtil.callAdaptorFunction(this, 'onEachWhere', queries.filters[i].e.toJson(), query);\n if ((this.getModuleName &&\n this.getModuleName() === 'ODataV4Adaptor') &&\n !isNullOrUndefined(queries.filters[i].e.key) && queries.filters.length > 1) {\n res = '(' + res + ')';\n }\n request.filters.push(res);\n var keys_3 = typeof request.filters[i] === 'object' ? Object.keys(request.filters[i]) : [];\n for (var _i = 0, keys_1 = keys_3; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n if (DataUtil.isNull((request)[prop])) {\n delete request[prop];\n }\n }\n }\n // Searches\n for (var i = 0; i < queries.searches.length; i++) {\n temp = queries.searches[i].e;\n request.searches.push(DataUtil.callAdaptorFunction(this, 'onEachSearch', {\n fields: temp.fieldNames,\n operator: temp.operator,\n key: temp.searchKey,\n ignoreCase: temp.ignoreCase\n }, query));\n }\n // Grouping\n for (var i = 0; i < queries.groups.length; i++) {\n request.groups.push(DataUtil.getValue(queries.groups[i].e.fieldName, query));\n }\n // aggregates\n for (var i = 0; i < queries.aggregates.length; i++) {\n temp = queries.aggregates[i].e;\n request.aggregates.push({ type: temp.type, field: DataUtil.getValue(temp.field, query) });\n }\n var req = {};\n this.getRequestQuery(options, query, singles, request, req);\n // Params\n DataUtil.callAdaptorFunction(this, 'addParams', { dm: dm, query: query, params: params, reqParams: req });\n if (query.lazyLoad.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n req[query.lazyLoad[i].key] = query.lazyLoad[i].value;\n }\n }\n // cleanup\n var keys = Object.keys(req);\n for (var _a = 0, keys_2 = keys; _a < keys_2.length; _a++) {\n var prop = keys_2[_a];\n if (DataUtil.isNull(req[prop]) || req[prop] === '' || req[prop].length === 0) {\n delete req[prop];\n }\n }\n if (!(options.skip in req && options.take in req) && take !== null) {\n req[options.skip] = DataUtil.callAdaptorFunction(this, 'onSkip', skip, query);\n req[options.take] = DataUtil.callAdaptorFunction(this, 'onTake', take, query);\n }\n var p = this.pvt;\n this.pvt = {};\n if (this.options.requestType === 'json') {\n return {\n data: JSON.stringify(req, DataUtil.parse.jsonDateReplacer),\n url: url,\n pvtData: p,\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n }\n temp = this.convertToQueryString(req, query, dm);\n temp = (dm.dataSource.url.indexOf('?') !== -1 ? '&' : '/') + temp;\n return {\n type: 'GET', url: temp.length ? url.replace(/\\/*$/, temp) : url, pvtData: p\n };\n };\n UrlAdaptor.prototype.getRequestQuery = function (options, query, singles, request, request1) {\n var param = 'param';\n var req = request1;\n req[options.from] = query.fromTable;\n if (options.apply && query.distincts.length) {\n req[options.apply] = 'onDistinct' in this ? DataUtil.callAdaptorFunction(this, 'onDistinct', query.distincts) : '';\n }\n if (!query.distincts.length && options.expand) {\n req[options.expand] = 'onExpand' in this && 'onSelect' in singles ?\n DataUtil.callAdaptorFunction(this, 'onExpand', { selects: DataUtil.getValue(singles.onSelect.fieldNames, query), expands: query.expands }, query) : query.expands;\n }\n req[options.select] = 'onSelect' in singles && !query.distincts.length ?\n DataUtil.callAdaptorFunction(this, 'onSelect', DataUtil.getValue(singles.onSelect.fieldNames, query), query) : '';\n req[options.count] = query.isCountRequired ? DataUtil.callAdaptorFunction(this, 'onCount', query.isCountRequired, query) : '';\n req[options.search] = request.searches.length ? DataUtil.callAdaptorFunction(this, 'onSearch', request.searches, query) : '';\n req[options.skip] = 'onSkip' in singles ?\n DataUtil.callAdaptorFunction(this, 'onSkip', DataUtil.getValue(singles.onSkip.nos, query), query) : '';\n req[options.take] = 'onTake' in singles ?\n DataUtil.callAdaptorFunction(this, 'onTake', DataUtil.getValue(singles.onTake.nos, query), query) : '';\n req[options.where] = request.filters.length || request.searches.length ?\n DataUtil.callAdaptorFunction(this, 'onWhere', request.filters, query) : '';\n req[options.sortBy] = request.sorts.length ? DataUtil.callAdaptorFunction(this, 'onSortBy', request.sorts, query) : '';\n req[options.group] = request.groups.length ? DataUtil.callAdaptorFunction(this, 'onGroup', request.groups, query) : '';\n req[options.aggregates] = request.aggregates.length ?\n DataUtil.callAdaptorFunction(this, 'onAggregates', request.aggregates, query) : '';\n req[param] = [];\n };\n /**\n * Convert the object from processQuery to string which can be added query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n */\n UrlAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n return '';\n // this needs to be overridden\n };\n /**\n * Return the data from the data manager processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Object} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n UrlAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (xhr && xhr.headers.get('Content-Type') &&\n xhr.headers.get('Content-Type').indexOf('application/json') !== -1) {\n var handleTimeZone = DataUtil.timeZoneHandling;\n if (ds && !ds.timeZoneHandling) {\n DataUtil.timeZoneHandling = false;\n }\n data = DataUtil.parse.parseJson(data);\n DataUtil.timeZoneHandling = handleTimeZone;\n }\n var requests = request;\n var pvt = requests.pvtData || {};\n var groupDs = data ? data.groupDs : [];\n if (xhr && xhr.headers.get('Content-Type') &&\n xhr.headers.get('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n var d = JSON.parse(requests.data);\n if (d && d.action === 'batch' && data && data.addedRecords) {\n changes.addedRecords = data.addedRecords;\n return changes;\n }\n if (data && data.d) {\n data = data.d;\n }\n var args = {};\n if (data && 'count' in data) {\n args.count = data.count;\n }\n args.result = data && data.result ? data.result : data;\n var isExpand = false;\n if (Array.isArray(data.result) && data.result.length) {\n var key = 'key';\n var val = 'value';\n var level = 'level';\n if (!isNullOrUndefined(data.result[0][key])) {\n args.result = this.formRemoteGroupedData(args.result, 1, pvt.groups.length - 1);\n }\n if (query && query.lazyLoad.length && pvt.groups.length) {\n for (var i = 0; i < query.lazyLoad.length; i++) {\n if (query.lazyLoad[i][key] === 'onDemandGroupInfo') {\n var value = query.lazyLoad[i][val][level];\n if (pvt.groups.length === value) {\n isExpand = true;\n }\n }\n }\n }\n }\n if (!isExpand) {\n this.getAggregateResult(pvt, data, args, groupDs, query);\n }\n return DataUtil.isNull(args.count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n UrlAdaptor.prototype.formRemoteGroupedData = function (data, level, childLevel) {\n for (var i = 0; i < data.length; i++) {\n if (data[i].items.length && Object.keys(data[i].items[0]).indexOf('key') > -1) {\n this.formRemoteGroupedData(data[i].items, level + 1, childLevel - 1);\n }\n }\n var uid = 'GroupGuid';\n var childLvl = 'childLevels';\n var lvl = 'level';\n var records = 'records';\n data[uid] = consts[uid];\n data[lvl] = level;\n data[childLvl] = childLevel;\n data[records] = data[0].items.length ? this.getGroupedRecords(data, !isNullOrUndefined(data[0].items[records])) : [];\n return data;\n };\n UrlAdaptor.prototype.getGroupedRecords = function (data, hasRecords) {\n var childGroupedRecords = [];\n var records = 'records';\n for (var i = 0; i < data.length; i++) {\n if (!hasRecords) {\n for (var j = 0; j < data[i].items.length; j++) {\n childGroupedRecords.push(data[i].items[j]);\n }\n }\n else {\n childGroupedRecords = childGroupedRecords.concat(data[i].items[records]);\n }\n }\n return childGroupedRecords;\n };\n /**\n * Add the group query to the adaptor`s option.\n *\n * @param {Object[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return e;\n };\n /**\n * Add the aggregate query to the adaptor`s option.\n *\n * @param {Aggregates[]} e\n * @returns void\n */\n UrlAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param query\n * @param original\n */\n UrlAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var url;\n var key;\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.removeUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e[url],\n key: e[key]\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @returns void\n */\n UrlAdaptor.prototype.beforeSend = function (dm, request) {\n // need to extend this method\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.insert = function (dm, data, tableName, query) {\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number|string} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.remove = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: value,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n * @param query\n */\n UrlAdaptor.prototype.update = function (dm, keyField, value, tableName, query) {\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: value,\n action: 'update',\n keyColumn: keyField,\n key: DataUtil.getObject(keyField, value),\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n /**\n * To generate the predicate based on the filtered query.\n *\n * @param {Object[]|string[]|number[]} data\n * @param {Query} query\n * @hidden\n */\n UrlAdaptor.prototype.getFiltersFrom = function (data, query) {\n var key = query.fKey;\n var value;\n var prop = key;\n var pKey = query.key;\n var predicats = [];\n if (typeof data[0] !== 'object') {\n prop = null;\n }\n for (var i = 0; i < data.length; i++) {\n if (typeof data[0] === 'object') {\n value = DataUtil.getObject(pKey || prop, data[i]);\n }\n else {\n value = data[i];\n }\n predicats.push(new Predicate(key, 'equal', value));\n }\n return Predicate.or(predicats);\n };\n UrlAdaptor.prototype.getAggregateResult = function (pvt, data, args, groupDs, query) {\n var pData = data;\n if (data && data.result) {\n pData = data.result;\n }\n if (pvt && pvt.aggregates && pvt.aggregates.length) {\n var agg = pvt.aggregates;\n var fn = void 0;\n var aggregateData = pData;\n var res = {};\n if (data.aggregate) {\n aggregateData = data.aggregate;\n }\n for (var i = 0; i < agg.length; i++) {\n fn = DataUtil.aggregates[agg[i].type];\n if (fn) {\n res[agg[i].field + ' - ' + agg[i].type] = fn(aggregateData, agg[i].field);\n }\n }\n args.aggregates = res;\n }\n var key = 'key';\n var isServerGrouping = Array.isArray(data.result) && data.result.length && !isNullOrUndefined(data.result[0][key]);\n if (pvt && pvt.groups && pvt.groups.length && !isServerGrouping) {\n var groups = pvt.groups;\n for (var i = 0; i < groups.length; i++) {\n var level = null;\n if (!isNullOrUndefined(groupDs)) {\n groupDs = DataUtil.group(groupDs, groups[i]);\n }\n var groupQuery = Query.filterQueries(query.queries, 'onGroup')[i].e;\n pData = DataUtil.group(pData, groups[i], pvt.aggregates, level, groupDs, groupQuery.comparer);\n }\n args.result = pData;\n }\n return args;\n };\n UrlAdaptor.prototype.getQueryRequest = function (query) {\n var req = { sorts: [], groups: [], filters: [], searches: [], aggregates: [] };\n req.sorts = Query.filterQueries(query.queries, 'onSortBy');\n req.groups = Query.filterQueries(query.queries, 'onGroup');\n req.filters = Query.filterQueries(query.queries, 'onWhere');\n req.searches = Query.filterQueries(query.queries, 'onSearch');\n req.aggregates = Query.filterQueries(query.queries, 'onAggregates');\n return req;\n };\n UrlAdaptor.prototype.addParams = function (options) {\n var req = options.reqParams;\n if (options.params.length) {\n req.params = {};\n }\n for (var _i = 0, _a = options.params; _i < _a.length; _i++) {\n var tmp = _a[_i];\n if (req[tmp.key]) {\n throw new Error('Query() - addParams: Custom Param is conflicting other request arguments');\n }\n req[tmp.key] = tmp.value;\n if (tmp.fn) {\n req[tmp.key] = tmp.fn.call(options.query, tmp.key, options.query, options.dm);\n }\n req.params[tmp.key] = req[tmp.key];\n }\n };\n return UrlAdaptor;\n}(Adaptor));\nexport { UrlAdaptor };\n/**\n * OData Adaptor that is extended from URL Adaptor, is used for consuming data through OData Service.\n *\n * @hidden\n */\nvar ODataAdaptor = /** @class */ (function (_super) {\n __extends(ODataAdaptor, _super);\n function ODataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json;odata=light;q=1,application/json;odata=verbose;q=0.5',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$inlinecount',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PUT'\n });\n extend(_this.options, props || {});\n return _this;\n }\n ODataAdaptor.prototype.getModuleName = function () {\n return 'ODataAdaptor';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var operator;\n var guid;\n var val = predicate.value;\n var type = typeof val;\n var field = predicate.field ? ODataAdaptor.getField(predicate.field) : null;\n if (val instanceof Date) {\n val = 'datetime\\'' + DataUtil.parse.replacer(val) + '\\'';\n }\n if (type === 'string') {\n val = val.replace(/'/g, '\\'\\'');\n if (predicate.ignoreCase) {\n val = val.toLowerCase();\n }\n if (predicate.operator !== 'like') {\n val = encodeURIComponent(val);\n }\n if (predicate.operator !== 'wildcard' && predicate.operator !== 'like') {\n val = '\\'' + val + '\\'';\n }\n if (requiresCast) {\n field = 'cast(' + field + ', \\'Edm.String\\')';\n }\n if (DataUtil.parse.isGuid(val)) {\n guid = 'guid';\n }\n if (predicate.ignoreCase) {\n if (!guid) {\n field = 'tolower(' + field + ')';\n }\n val = val.toLowerCase();\n }\n }\n if (predicate.operator === 'isempty' || predicate.operator === 'isnull' || predicate.operator === 'isnotempty' ||\n predicate.operator === 'isnotnull') {\n operator = predicate.operator.indexOf('isnot') !== -1 ? DataUtil.odBiOperator['notequal'] : DataUtil.odBiOperator['equal'];\n val = predicate.operator === 'isnull' || predicate.operator === 'isnotnull' ? null : '\\'\\'';\n }\n else {\n operator = DataUtil.odBiOperator[predicate.operator];\n }\n if (operator) {\n returnValue += field;\n returnValue += operator;\n if (guid) {\n returnValue += guid;\n }\n return returnValue + val;\n }\n if (!isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor') {\n operator = DataUtil.odv4UniOperator[predicate.operator];\n }\n else {\n operator = DataUtil.odUniOperator[predicate.operator];\n }\n if (operator === 'like') {\n val = val;\n if (val.indexOf('%') !== -1) {\n if (val.charAt(0) === '%' && val.lastIndexOf('%') < 2) {\n val = val.substring(1, val.length);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n }\n else if (val.charAt(val.length - 1) === '%' && val.indexOf('%') > val.length - 3) {\n val = val.substring(0, val.length - 1);\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n }\n else if (val.lastIndexOf('%') !== val.indexOf('%') && val.lastIndexOf('%') > val.indexOf('%') + 1) {\n val = val.substring(val.indexOf('%') + 1, val.lastIndexOf('%'));\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n }\n }\n val = encodeURIComponent(val);\n val = '\\'' + val + '\\'';\n }\n else if (operator === 'wildcard') {\n val = val;\n if (val.indexOf('*') !== -1) {\n var splittedStringValue = val.split('*');\n var splittedValue = void 0;\n var count = 0;\n if (val.indexOf('*') !== 0 && splittedStringValue[0].indexOf('%3f') === -1 &&\n splittedStringValue[0].indexOf('?') === -1) {\n splittedValue = splittedStringValue[0];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['startswith'] : DataUtil.odUniOperator['startswith'];\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (val.lastIndexOf('*') !== val.length - 1 && splittedStringValue[splittedStringValue.length - 1].indexOf('%3f') === -1 &&\n splittedStringValue[splittedStringValue.length - 1].indexOf('?') === -1) {\n splittedValue = splittedStringValue[splittedStringValue.length - 1];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['endswith'] : DataUtil.odUniOperator['endswith'];\n if (count > 0) {\n returnValue += ' and ';\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n if (splittedStringValue.length > 2) {\n for (var i = 1; i < splittedStringValue.length - 1; i++) {\n if (splittedStringValue[i].indexOf('%3f') === -1 && splittedStringValue[i].indexOf('?') === -1) {\n splittedValue = splittedStringValue[i];\n splittedValue = '\\'' + splittedValue + '\\'';\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (count > 0) {\n returnValue += ' and ';\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = splittedValue;\n splittedValue = field;\n field = temp;\n }\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += splittedValue + ')';\n count++;\n }\n }\n }\n if (count === 0) {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n else {\n operator = 'wildcard';\n }\n }\n else {\n operator = !isNullOrUndefined(this.getModuleName) && this.getModuleName() === 'ODataV4Adaptor' ?\n DataUtil.odv4UniOperator['contains'] : DataUtil.odUniOperator['contains'];\n if (val.indexOf('?') !== -1 || val.indexOf('%3f') !== -1) {\n val = val.indexOf('?') !== -1 ? val.split('?').join('') : val.split('%3f').join('');\n }\n val = '\\'' + val + '\\'';\n }\n }\n if (operator === 'substringof' || operator === 'not substringof') {\n var temp = val;\n val = field;\n field = temp;\n }\n if (operator !== 'wildcard') {\n returnValue += operator + '(';\n returnValue += field + ',';\n if (guid) {\n returnValue += guid;\n }\n returnValue += val + ')';\n }\n return returnValue;\n };\n ODataAdaptor.prototype.addParams = function (options) {\n _super.prototype.addParams.call(this, options);\n delete options.reqParams.params;\n };\n /**\n * Generate request string based on the multiple filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onComplexPredicate = function (predicate, query, requiresCast) {\n var res = [];\n for (var i = 0; i < predicate.predicates.length; i++) {\n res.push('(' + this.onEachWhere(predicate.predicates[i], query, requiresCast) + ')');\n }\n return res.join(' ' + predicate.condition + ' ');\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {Predicate} filter\n * @param {boolean} requiresCast?\n * @param query\n * @param requiresCast\n */\n ODataAdaptor.prototype.onEachWhere = function (filter, query, requiresCast) {\n return filter.isComplex ? this.onComplexPredicate(filter, query, requiresCast) : this.onPredicate(filter, query, requiresCast);\n };\n /**\n * Generate query string based on the multiple filter criteria from query.\n *\n * @param {string[]} filters\n */\n ODataAdaptor.prototype.onWhere = function (filters) {\n if (this.pvt.search) {\n filters.push(this.onEachWhere(this.pvt.search, null, true));\n }\n return filters.join(' and ');\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataAdaptor.prototype.onEachSearch = function (e) {\n if (e.fields && e.fields.length === 0) {\n DataUtil.throwError('Query() - Search : oData search requires list of field names to search');\n }\n var filter = this.pvt.search || [];\n for (var i = 0; i < e.fields.length; i++) {\n filter.push(new Predicate(e.fields[i], e.operator, e.key, e.ignoreCase));\n }\n this.pvt.search = filter;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataAdaptor.prototype.onSearch = function (e) {\n this.pvt.search = Predicate.or(this.pvt.search);\n return '';\n };\n /**\n * Generate query string based on multiple sort criteria from query.\n *\n * @param {QueryOptions} e\n */\n ODataAdaptor.prototype.onEachSort = function (e) {\n var res = [];\n if (e.name instanceof Array) {\n for (var i = 0; i < e.name.length; i++) {\n res.push(ODataAdaptor.getField(e.name[i]) + (e.direction === 'descending' ? ' desc' : ''));\n }\n }\n else {\n res.push(ODataAdaptor.getField(e.name) + (e.direction === 'descending' ? ' desc' : ''));\n }\n return res.join(',');\n };\n /**\n * Returns sort query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSortBy = function (e) {\n return e.reverse().join(',');\n };\n /**\n * Adds the group query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onGroup = function (e) {\n this.pvt.groups = e;\n return [];\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataAdaptor.prototype.onSelect = function (e) {\n for (var i = 0; i < e.length; i++) {\n e[i] = ODataAdaptor.getField(e[i]);\n }\n return e.join(',');\n };\n /**\n * Add the aggregate query to the adaptor option.\n *\n * @param {Object[]} e\n * @returns string\n */\n ODataAdaptor.prototype.onAggregates = function (e) {\n this.pvt.aggregates = e;\n return '';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataAdaptor.prototype.onCount = function (e) {\n return e === true ? 'allpages' : '';\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings?\n * @param settings\n */\n ODataAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (DataUtil.endsWith(settings.url, this.options.batch) && settings.type.toLowerCase() === 'post') {\n request.headers.set('Accept', this.options.multipartAccept);\n request.headers.set('DataServiceVersion', '2.0');\n //request.overrideMimeType('text/plain; charset=x-user-defined');\n }\n else {\n request.headers.set('Accept', this.options.accept);\n }\n request.headers.set('DataServiceVersion', '2.0');\n request.headers.set('MaxDataServiceVersion', '2.0');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaCheck = 'odata.metadata';\n if ((request && request.type === 'GET') && !this.rootUrl && data[metaCheck]) {\n var dataUrls = data[metaCheck].split('/$metadata#');\n this.rootUrl = dataUrls[0];\n this.resourceTableName = dataUrls[1];\n }\n var pvtData = 'pvtData';\n if (!isNullOrUndefined(data.d)) {\n var dataCopy = ((query && query.isCountRequired) ? data.d.results : data.d);\n var metaData = '__metadata';\n if (!isNullOrUndefined(dataCopy)) {\n for (var i = 0; i < dataCopy.length; i++) {\n if (!isNullOrUndefined(dataCopy[i][metaData])) {\n delete dataCopy[i][metaData];\n }\n }\n }\n }\n var pvt = request && request[pvtData];\n var emptyAndBatch = this.processBatchResponse(data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var versionCheck = xhr && request.fetchRequest.headers.get('DataServiceVersion');\n var count = null;\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n var oDataCount = '__count';\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n if (data.d) {\n data = data.d;\n }\n if (data[oDataCount] || data['odata.count']) {\n count = data[oDataCount] || data['odata.count'];\n }\n }\n if (version === 3 && data.value) {\n data = data.value;\n }\n if (data.d) {\n data = data.d;\n }\n if (version < 3 && data.results) {\n data = data.results;\n }\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n /**\n * Converts the request object to query string.\n *\n * @param {Object} req\n * @param request\n * @param {Query} query\n * @param {DataManager} dm\n * @returns tableName\n */\n ODataAdaptor.prototype.convertToQueryString = function (request, query, dm) {\n var res = [];\n var table = 'table';\n var tableName = request[table] || '';\n var format = '$format';\n delete request[table];\n if (dm.dataSource.requiresFormat) {\n request[format] = 'json';\n }\n var keys = Object.keys(request);\n for (var _i = 0, keys_4 = keys; _i < keys_4.length; _i++) {\n var prop = keys_4[_i];\n res.push(prop + '=' + request[prop]);\n }\n res = res.join('&');\n if (dm.dataSource.url && dm.dataSource.url.indexOf('?') !== -1 && !tableName) {\n return res;\n }\n return res.length ? tableName + '?' + res : tableName || '';\n };\n ODataAdaptor.prototype.localTimeReplacer = function (key, convertObj) {\n for (var _i = 0, _a = !isNullOrUndefined(convertObj) ? Object.keys(convertObj) : []; _i < _a.length; _i++) {\n var prop = _a[_i];\n if ((convertObj[prop] instanceof Date)) {\n convertObj[prop] = DataUtil.dateParse.toLocalTime(convertObj[prop]);\n }\n }\n return convertObj;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n url: (dm.dataSource.insertUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : ''),\n data: JSON.stringify(data, this.options.localTime ? this.localTimeReplacer : null)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n ODataAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n var url;\n if (typeof value === 'string' && !DataUtil.parse.isGuid(value)) {\n url = \"('\" + value + \"')\";\n }\n else {\n url = \"(\" + value + \")\";\n }\n return {\n type: 'DELETE',\n url: (dm.dataSource.removeUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url\n };\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n * @param query\n * @param original\n * @returns this\n */\n ODataAdaptor.prototype.update = function (dm, keyField, value, tableName, query, original) {\n if (this.options.updateType === 'PATCH' && !isNullOrUndefined(original)) {\n value = this.compareAndRemove(value, original, keyField);\n }\n var url;\n if (typeof value[keyField] === 'string' && !DataUtil.parse.isGuid(value[keyField])) {\n url = \"('\" + value[keyField] + \"')\";\n }\n else {\n url = \"(\" + value[keyField] + \")\";\n }\n return {\n type: this.options.updateType,\n url: (dm.dataSource.updateUrl || dm.dataSource.url).replace(/\\/*$/, tableName ? '/' + tableName : '') + url,\n data: JSON.stringify(value, this.options.localTime ? this.localTimeReplacer : null),\n accept: this.options.accept\n };\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n * @returns {Object}\n */\n ODataAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = this.rootUrl ? this.rootUrl + '/' + this.options.batch :\n dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var args = {\n url: e.url,\n key: e.key,\n cid: 1,\n cSet: DataUtil.getGuid(this.options.changeSet)\n };\n var req = '--' + initialGuid + '\\n';\n req += 'Content-Type: multipart/mixed; boundary=' + args.cSet.replace('--', '') + '\\n';\n this.pvt.changeSet = 0;\n req += this.generateInsertRequest(changes.addedRecords, args, dm);\n req += this.generateUpdateRequest(changes.changedRecords, args, dm, original ? original.changedRecords : []);\n req += this.generateDeleteRequest(changes.deletedRecords, args, dm);\n req += args.cSet + '--\\n';\n req += '--' + initialGuid + '--';\n return {\n type: 'POST',\n url: url,\n dataType: 'json',\n contentType: 'multipart/mixed; charset=UTF-8;boundary=' + initialGuid,\n data: req\n };\n };\n /**\n * Generate the string content from the removed records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @returns this\n */\n ODataAdaptor.prototype.generateDeleteRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '(' + url + ')';\n }\n else if (url instanceof Date) {\n var dateTime = data[i][key];\n return '(' + dateTime.toJSON() + ')';\n }\n else {\n return \"('\" + url + \"')\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req + '\\n';\n };\n /**\n * Generate the string content from the inserted records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n */\n ODataAdaptor.prototype.generateInsertRequest = function (arr, e, dm) {\n if (!arr) {\n return '';\n }\n var req = '';\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n /**\n * Generate the string content from the updated records.\n * The result will be send during batch update.\n *\n * @param {Object[]} arr\n * @param {RemoteArgs} e\n * @param dm\n * @param org\n */\n ODataAdaptor.prototype.generateUpdateRequest = function (arr, e, dm, org) {\n var _this = this;\n if (!arr) {\n return '';\n }\n var req = '';\n arr.forEach(function (change) { return change = _this.compareAndRemove(change, org.filter(function (o) { return DataUtil.getObject(e.key, o) === DataUtil.getObject(e.key, change); })[0], e.key); });\n var stat = {\n 'method': this.options.updateType + ' ',\n 'url': function (data, i, key) {\n if (typeof data[i][key] === 'number' || DataUtil.parse.isGuid(data[i][key])) {\n return '(' + data[i][key] + ')';\n }\n else if (data[i][key] instanceof Date) {\n var date = data[i][key];\n return '(' + date.toJSON() + ')';\n }\n else {\n return \"('\" + data[i][key] + \"')\";\n }\n },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req = this.generateBodyContent(arr, e, stat, dm);\n return req;\n };\n ODataAdaptor.getField = function (prop) {\n return prop.replace(/\\./g, '/');\n };\n ODataAdaptor.prototype.generateBodyContent = function (arr, e, stat, dm) {\n var req = '';\n for (var i = 0; i < arr.length; i++) {\n req += '\\n' + e.cSet + '\\n';\n req += this.options.changeSetContent + '\\n\\n';\n req += stat.method;\n if (stat.method === 'POST ') {\n req += (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'PUT ' || stat.method === 'PATCH ') {\n req += (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n else if (stat.method === 'DELETE ') {\n req += (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url) + stat.url(arr, i, e.key) + ' HTTP/1.1\\n';\n }\n req += 'Accept: ' + this.options.accept + '\\n';\n req += 'Content-Id: ' + this.pvt.changeSet++ + '\\n';\n req += this.options.batchChangeSetContentType + '\\n';\n if (!isNullOrUndefined(arr[i]['@odata.etag'])) {\n req += 'If-Match: ' + arr[i]['@odata.etag'] + '\\n\\n';\n delete arr[i]['@odata.etag'];\n }\n else {\n req += '\\n';\n }\n req += stat.data(arr, i);\n }\n return req;\n };\n ODataAdaptor.prototype.processBatchResponse = function (data, query, xhr, request, changes) {\n if (xhr && xhr.headers.get('Content-Type') && xhr.headers.get('Content-Type').indexOf('xml') !== -1) {\n return (query.isCountRequired ? { result: [], count: 0 } : []);\n }\n if (request && this.options.batch && DataUtil.endsWith(request.url, this.options.batch) && request.type.toLowerCase() === 'post') {\n var guid = xhr.headers.get('Content-Type');\n var cIdx = void 0;\n var jsonObj = void 0;\n var d = data + '';\n guid = guid.substring(guid.indexOf('=batchresponse') + 1);\n d = d.split(guid);\n if (d.length < 2) {\n return {};\n }\n d = d[1];\n var exVal = /(?:\\bContent-Type.+boundary=)(changesetresponse.+)/i.exec(d);\n if (exVal) {\n d.replace(exVal[0], '');\n }\n var changeGuid = exVal ? exVal[1] : '';\n d = d.split(changeGuid);\n for (var i = d.length; i > -1; i--) {\n if (!/\\bContent-ID:/i.test(d[i]) || !/\\bHTTP.+201/.test(d[i])) {\n continue;\n }\n cIdx = parseInt(/\\bContent-ID: (\\d+)/i.exec(d[i])[1], 10);\n if (changes.addedRecords[cIdx]) {\n jsonObj = DataUtil.parse.parseJson(/^\\{.+\\}/m.exec(d[i])[0]);\n extend({}, changes.addedRecords[cIdx], this.processResponse(jsonObj));\n }\n }\n return changes;\n }\n return null;\n };\n ODataAdaptor.prototype.compareAndRemove = function (data, original, key) {\n var _this = this;\n if (isNullOrUndefined(original)) {\n return data;\n }\n Object.keys(data).forEach(function (prop) {\n if (prop !== key && prop !== '@odata.etag') {\n if (DataUtil.isPlainObject(data[prop])) {\n _this.compareAndRemove(data[prop], original[prop]);\n var final = Object.keys(data[prop]).filter(function (data) { return data !== '@odata.etag'; });\n if (final.length === 0) {\n delete data[prop];\n }\n }\n else if (data[prop] === original[prop]) {\n delete data[prop];\n }\n else if (data[prop] && original[prop] && data[prop].valueOf() === original[prop].valueOf()) {\n delete data[prop];\n }\n }\n });\n return data;\n };\n return ODataAdaptor;\n}(UrlAdaptor));\nexport { ODataAdaptor };\n/**\n * The OData v4 is an improved version of OData protocols.\n * The DataManager uses the ODataV4Adaptor to consume OData v4 services.\n *\n * @hidden\n */\nvar ODataV4Adaptor = /** @class */ (function (_super) {\n __extends(ODataV4Adaptor, _super);\n function ODataV4Adaptor(props) {\n var _this = _super.call(this, props) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n requestType: 'get',\n accept: 'application/json, text/javascript, */*; q=0.01',\n multipartAccept: 'multipart/mixed',\n sortBy: '$orderby',\n select: '$select',\n skip: '$skip',\n take: '$top',\n count: '$count',\n search: '$search',\n where: '$filter',\n expand: '$expand',\n batch: '$batch',\n changeSet: '--changeset_',\n batchPre: 'batch_',\n contentId: 'Content-Id: ',\n batchContent: 'Content-Type: multipart/mixed; boundary=',\n changeSetContent: 'Content-Type: application/http\\nContent-Transfer-Encoding: binary ',\n batchChangeSetContentType: 'Content-Type: application/json; charset=utf-8 ',\n updateType: 'PATCH',\n localTime: false,\n apply: '$apply'\n });\n extend(_this.options, props || {});\n return _this;\n }\n /**\n * @hidden\n */\n ODataV4Adaptor.prototype.getModuleName = function () {\n return 'ODataV4Adaptor';\n };\n /**\n * Returns the query string which requests total count from the data source.\n *\n * @param {boolean} e\n * @returns string\n */\n ODataV4Adaptor.prototype.onCount = function (e) {\n return e === true ? 'true' : '';\n };\n /**\n * Generate request string based on the filter criteria from query.\n *\n * @param {Predicate} pred\n * @param {boolean} requiresCast?\n * @param predicate\n * @param query\n * @param requiresCast\n */\n ODataV4Adaptor.prototype.onPredicate = function (predicate, query, requiresCast) {\n var returnValue = '';\n var val = predicate.value;\n var isDate = val instanceof Date;\n if (query instanceof Query) {\n var queries = this.getQueryRequest(query);\n for (var i = 0; i < queries.filters.length; i++) {\n if (queries.filters[i].e.key === predicate.value) {\n requiresCast = true;\n }\n }\n }\n returnValue = _super.prototype.onPredicate.call(this, predicate, query, requiresCast);\n if (isDate) {\n returnValue = returnValue.replace(/datetime'(.*)'$/, '$1');\n }\n if (DataUtil.parse.isGuid(val)) {\n returnValue = returnValue.replace('guid', '').replace(/'/g, '');\n }\n return returnValue;\n };\n /**\n * Generate query string based on the multiple search criteria from query.\n *\n * @param e\n * @param {string} operator\n * @param {string} key\n * @param {boolean} } ignoreCase\n * @param e.fields\n * @param e.operator\n * @param e.key\n * @param e.ignoreCase\n */\n ODataV4Adaptor.prototype.onEachSearch = function (e) {\n var search = this.pvt.searches || [];\n search.push(e.key);\n this.pvt.searches = search;\n };\n /**\n * Generate query string based on the search criteria from query.\n *\n * @param {Object} e\n */\n ODataV4Adaptor.prototype.onSearch = function (e) {\n return this.pvt.searches.join(' OR ');\n };\n /**\n * Returns the expand query string.\n *\n * @param {string} e\n * @param e.selects\n * @param e.expands\n */\n ODataV4Adaptor.prototype.onExpand = function (e) {\n var _this = this;\n var selected = {};\n var expanded = {};\n var expands = e.expands.slice();\n var exArr = [];\n var selects = e.selects.filter(function (item) { return item.indexOf('.') > -1; });\n selects.forEach(function (select) {\n var splits = select.split('.');\n if (!(splits[0] in selected)) {\n selected[splits[0]] = [];\n }\n if (splits.length === 2) {\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1) {\n if (selected[splits[0]][0].indexOf('$expand') !== -1 && selected[splits[0]][0].indexOf(';$select=') === -1) {\n selected[splits[0]][0] = selected[splits[0]][0] + ';' + '$select=' + splits[1];\n }\n else {\n selected[splits[0]][0] = selected[splits[0]][0] + ',' + splits[1];\n }\n }\n else {\n selected[splits[0]].push('$select=' + splits[1]);\n }\n }\n else {\n var sel = '$select=' + splits[splits.length - 1];\n var exp = '';\n var close_1 = '';\n for (var i = 1; i < splits.length - 1; i++) {\n exp = exp + '$expand=' + splits[i] + '(';\n close_1 = close_1 + ')';\n }\n var combineVal = exp + sel + close_1;\n if (selected[splits[0]].length && Object.keys(selected).indexOf(splits[0]) !== -1 &&\n _this.expandQueryIndex(selected[splits[0]], true)) {\n var idx = _this.expandQueryIndex(selected[splits[0]]);\n selected[splits[0]][idx] = selected[splits[0]][idx] + combineVal.replace('$expand=', ',');\n }\n else {\n selected[splits[0]].push(combineVal);\n }\n }\n });\n //Auto expand from select query\n Object.keys(selected).forEach(function (expand) {\n if ((expands.indexOf(expand) === -1)) {\n expands.push(expand);\n }\n });\n expands.forEach(function (expand) {\n expanded[expand] = expand in selected ? expand + \"(\" + selected[expand].join(';') + \")\" : expand;\n });\n Object.keys(expanded).forEach(function (ex) { return exArr.push(expanded[ex]); });\n return exArr.join(',');\n };\n ODataV4Adaptor.prototype.expandQueryIndex = function (query, isExpand) {\n for (var i = 0; i < query.length; i++) {\n if (query[i].indexOf('$expand') !== -1) {\n return isExpand ? true : i;\n }\n }\n return isExpand ? false : 0;\n };\n /**\n * Returns the groupby query string.\n *\n * @param {string} e\n * @param distinctFields\n */\n ODataV4Adaptor.prototype.onDistinct = function (distinctFields) {\n var fields = distinctFields.map(function (field) { return ODataAdaptor.getField(field); }).join(',');\n return \"groupby((\" + fields + \"))\";\n };\n /**\n * Returns the select query string.\n *\n * @param {string[]} e\n */\n ODataV4Adaptor.prototype.onSelect = function (e) {\n return _super.prototype.onSelect.call(this, e.filter(function (item) { return item.indexOf('.') === -1; }));\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings\n * @returns void\n */\n ODataV4Adaptor.prototype.beforeSend = function (dm, request, settings) {\n if (settings.type === 'POST' || settings.type === 'PUT' || settings.type === 'PATCH') {\n request.headers.set('Prefer', 'return=representation');\n }\n request.headers.set('Accept', this.options.accept);\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n ODataV4Adaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var metaName = '@odata.context';\n var metaV4Name = '@context';\n if ((request && request.type === 'GET') && !this.rootUrl && (data[metaName] || data[metaV4Name])) {\n var dataUrl = data[metaName] ? data[metaName].split('/$metadata#') : data[metaV4Name].split('/$metadata#');\n this.rootUrl = dataUrl[0];\n this.resourceTableName = dataUrl[1];\n }\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var emptyAndBatch = _super.prototype.processBatchResponse.call(this, data, query, xhr, request, changes);\n if (emptyAndBatch) {\n return emptyAndBatch;\n }\n var count = null;\n var dataCount = '@odata.count';\n var dataV4Count = '@count';\n if (query && query.isCountRequired) {\n if (dataCount in data) {\n count = data[dataCount];\n }\n else if (dataV4Count in data) {\n count = data[dataV4Count];\n }\n }\n data = !isNullOrUndefined(data.value) ? data.value : data;\n var args = {};\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: count, aggregates: args.aggregates };\n };\n return ODataV4Adaptor;\n}(ODataAdaptor));\nexport { ODataV4Adaptor };\n/**\n * The Web API is a programmatic interface to define the request and response messages system that is mostly exposed in JSON or XML.\n * The DataManager uses the WebApiAdaptor to consume Web API.\n * Since this adaptor is targeted to interact with Web API created using OData endpoint, it is extended from ODataAdaptor\n *\n * @hidden\n */\nvar WebApiAdaptor = /** @class */ (function (_super) {\n __extends(WebApiAdaptor, _super);\n function WebApiAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n WebApiAdaptor.prototype.getModuleName = function () {\n return 'WebApiAdaptor';\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.insert = function (dm, data, tableName) {\n return {\n type: 'POST',\n url: dm.dataSource.url,\n data: JSON.stringify(data)\n };\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {number} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n return {\n type: 'DELETE',\n url: dm.dataSource.url + '/' + value,\n data: JSON.stringify(value)\n };\n };\n /**\n * Prepare and return request body which is used to update record.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n WebApiAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n return {\n type: 'PUT',\n url: dm.dataSource.url,\n data: JSON.stringify(value)\n };\n };\n WebApiAdaptor.prototype.batchRequest = function (dm, changes, e) {\n var _this = this;\n var initialGuid = e.guid = DataUtil.getGuid(this.options.batchPre);\n var url = dm.dataSource.url.replace(/\\/*$/, '/' + this.options.batch);\n e.url = this.resourceTableName ? this.resourceTableName : e.url;\n var req = [];\n var _loop_1 = function (i, x) {\n changes.addedRecords.forEach(function (j, d) {\n var stat = {\n 'method': 'POST ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('POST ' + '/api/' + (dm.dataSource.insertUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.addedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //insertion\n for (var i = 0, x = changes.addedRecords.length; i < x; i++) {\n _loop_1(i, x);\n }\n var _loop_2 = function (i, x) {\n changes.changedRecords.forEach(function (j, d) {\n var stat = {\n 'method': _this.options.updateType + ' ',\n 'url': function (data, i, key) { return ''; },\n 'data': function (data, i) { return JSON.stringify(data[i]) + '\\n\\n'; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('PUT ' + '/api/' + (dm.dataSource.updateUrl || dm.dataSource.crudUrl || e.url)\n + stat.url(changes.changedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //updation\n for (var i = 0, x = changes.changedRecords.length; i < x; i++) {\n _loop_2(i, x);\n }\n var _loop_3 = function (i, x) {\n changes.deletedRecords.forEach(function (j, d) {\n var state = {\n 'mtd': 'DELETE ',\n 'url': function (data, i, key) {\n var url = DataUtil.getObject(key, data[i]);\n if (typeof url === 'number' || DataUtil.parse.isGuid(url)) {\n return '/' + url;\n }\n else if (url instanceof Date) {\n var datTime = data[i][key];\n return '/' + datTime.toJSON();\n }\n else {\n return \"/'\" + url + \"'\";\n }\n },\n 'data': function (data, i) { return ''; }\n };\n req.push('--' + initialGuid);\n req.push('Content-Type: application/http; msgtype=request', '');\n req.push('DELETE ' + '/api/' + (dm.dataSource.removeUrl || dm.dataSource.crudUrl || e.url)\n + state.url(changes.deletedRecords, i, e.key) + ' HTTP/1.1');\n req.push('Content-Type: ' + 'application/json; charset=utf-8');\n req.push('Host: ' + location.host);\n req.push('', j ? JSON.stringify(j) : '');\n });\n };\n //deletion\n for (var i = 0, x = changes.deletedRecords.length; i < x; i++) {\n _loop_3(i, x);\n }\n req.push('--' + initialGuid + '--', '');\n return {\n type: 'POST',\n url: url,\n contentType: 'multipart/mixed; boundary=' + initialGuid,\n data: req.join('\\r\\n')\n };\n };\n /**\n * Method will trigger before send the request to server side.\n * Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings\n * @returns void\n */\n WebApiAdaptor.prototype.beforeSend = function (dm, request, settings) {\n request.headers.set('Accept', 'application/json, text/javascript, */*; q=0.01');\n };\n /**\n * Returns the data from the query processing.\n *\n * @param {DataResult} data\n * @param {DataOptions} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n * @returns aggregateResult\n */\n WebApiAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n var pvtData = 'pvtData';\n var pvt = request && request[pvtData];\n var count = null;\n var args = {};\n if (request && request.type.toLowerCase() !== 'post') {\n var versionCheck = xhr && request.fetchRequest.headers.get('DataServiceVersion');\n var version = (versionCheck && parseInt(versionCheck, 10)) || 2;\n if (query && query.isCountRequired) {\n if (!DataUtil.isNull(data.Count)) {\n count = data.Count;\n }\n }\n if (version < 3 && data.Items) {\n data = data.Items;\n }\n args.count = count;\n args.result = data;\n this.getAggregateResult(pvt, data, args, null, query);\n }\n args.result = args.result || data;\n return DataUtil.isNull(count) ? args.result : { result: args.result, count: args.count, aggregates: args.aggregates };\n };\n return WebApiAdaptor;\n}(ODataAdaptor));\nexport { WebApiAdaptor };\n/**\n * WebMethodAdaptor can be used by DataManager to interact with web method.\n *\n * @hidden\n */\nvar WebMethodAdaptor = /** @class */ (function (_super) {\n __extends(WebMethodAdaptor, _super);\n function WebMethodAdaptor() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n /**\n * Prepare the request body based on the query.\n * The query information can be accessed at the WebMethod using variable named `value`.\n *\n * @param {DataManager} dm\n * @param {Query} query\n * @param {Object[]} hierarchyFilters?\n * @param hierarchyFilters\n * @returns application\n */\n WebMethodAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var obj = new UrlAdaptor().processQuery(dm, query, hierarchyFilters);\n var getData = 'data';\n var data = DataUtil.parse.parseJson(obj[getData]);\n var result = {};\n var value = 'value';\n if (data.param) {\n for (var i = 0; i < data.param.length; i++) {\n var param = data.param[i];\n var key = Object.keys(param)[0];\n result[key] = param[key];\n }\n }\n result[value] = data;\n var pvtData = 'pvtData';\n var url = 'url';\n return {\n data: JSON.stringify(result),\n url: obj[url],\n pvtData: obj[pvtData],\n type: 'POST',\n contentType: 'application/json; charset=utf-8'\n };\n };\n return WebMethodAdaptor;\n}(UrlAdaptor));\nexport { WebMethodAdaptor };\n/**\n * RemoteSaveAdaptor, extended from JsonAdaptor and it is used for binding local data and performs all DataManager queries in client-side.\n * It interacts with server-side only for CRUD operations.\n *\n * @hidden\n */\nvar RemoteSaveAdaptor = /** @class */ (function (_super) {\n __extends(RemoteSaveAdaptor, _super);\n /**\n * @hidden\n */\n function RemoteSaveAdaptor() {\n var _this = _super.call(this) || this;\n setValue('beforeSend', UrlAdaptor.prototype.beforeSend, _this);\n return _this;\n }\n RemoteSaveAdaptor.prototype.insert = function (dm, data, tableName, query, position) {\n this.pvt.position = position;\n this.updateType = 'add';\n return {\n url: dm.dataSource.insertUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: data,\n table: tableName,\n action: 'insert'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.remove = function (dm, keyField, val, tableName, query) {\n _super.prototype.remove.call(this, dm, keyField, val);\n return {\n type: 'POST',\n url: dm.dataSource.removeUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n key: val,\n keyColumn: keyField,\n table: tableName,\n action: 'remove'\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.update = function (dm, keyField, val, tableName, query) {\n this.updateType = 'update';\n this.updateKey = keyField;\n return {\n type: 'POST',\n url: dm.dataSource.updateUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n data: JSON.stringify(extend({}, {\n value: val,\n action: 'update',\n keyColumn: keyField,\n key: val[keyField],\n table: tableName\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes, e) {\n var i;\n var newData = request ? JSON.parse(request.data) : data;\n data = newData.action === 'batch' ? DataUtil.parse.parseJson(data) : data;\n if (this.updateType === 'add') {\n _super.prototype.insert.call(this, ds, data, null, null, this.pvt.position);\n }\n if (this.updateType === 'update') {\n _super.prototype.update.call(this, ds, this.updateKey, data);\n }\n this.updateType = undefined;\n if (data.added) {\n for (i = 0; i < data.added.length; i++) {\n _super.prototype.insert.call(this, ds, data.added[i]);\n }\n }\n if (data.changed) {\n for (i = 0; i < data.changed.length; i++) {\n _super.prototype.update.call(this, ds, e.key, data.changed[i]);\n }\n }\n if (data.deleted) {\n for (i = 0; i < data.deleted.length; i++) {\n _super.prototype.remove.call(this, ds, e.key, data.deleted[i]);\n }\n }\n return data;\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * Also perform the changes in the locally cached data to sync with the remote data.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n * @param query\n * @param original\n */\n RemoteSaveAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n return {\n type: 'POST',\n url: dm.dataSource.batchUrl || dm.dataSource.crudUrl || dm.dataSource.url,\n contentType: 'application/json; charset=utf-8',\n dataType: 'json',\n data: JSON.stringify(extend({}, {\n changed: changes.changedRecords,\n added: changes.addedRecords,\n deleted: changes.deletedRecords,\n action: 'batch',\n table: e.url,\n key: e.key\n }, DataUtil.getAddParams(this, dm, query)))\n };\n };\n RemoteSaveAdaptor.prototype.addParams = function (options) {\n var urlParams = new UrlAdaptor();\n urlParams.addParams(options);\n };\n return RemoteSaveAdaptor;\n}(JsonAdaptor));\nexport { RemoteSaveAdaptor };\n/**\n * Fetch Adaptor that is extended from URL Adaptor, is used for handle data operations with user defined functions.\n *\n * @hidden\n */\nvar CustomDataAdaptor = /** @class */ (function (_super) {\n __extends(CustomDataAdaptor, _super);\n function CustomDataAdaptor(props) {\n var _this = _super.call(this) || this;\n // options replaced the default adaptor options\n _this.options = extend({}, _this.options, {\n getData: new Function(),\n addRecord: new Function(),\n updateRecord: new Function(),\n deleteRecord: new Function(),\n batchUpdate: new Function()\n });\n extend(_this.options, props || {});\n return _this;\n }\n CustomDataAdaptor.prototype.getModuleName = function () {\n return 'CustomDataAdaptor';\n };\n return CustomDataAdaptor;\n}(UrlAdaptor));\nexport { CustomDataAdaptor };\n/**\n * The GraphqlAdaptor that is extended from URL Adaptor, is used for retrieving data from the Graphql server.\n * It interacts with the Graphql server with all the DataManager Queries and performs CRUD operations.\n *\n * @hidden\n */\nvar GraphQLAdaptor = /** @class */ (function (_super) {\n __extends(GraphQLAdaptor, _super);\n function GraphQLAdaptor(options) {\n var _this = _super.call(this) || this;\n _this.opt = options;\n _this.schema = _this.opt.response;\n _this.query = _this.opt.query;\n /* eslint-disable @typescript-eslint/no-empty-function */\n // tslint:disable-next-line:no-empty\n _this.getVariables = _this.opt.getVariables ? _this.opt.getVariables : function () { };\n /* eslint-enable @typescript-eslint/no-empty-function */\n _this.getQuery = function () { return _this.query; };\n return _this;\n }\n GraphQLAdaptor.prototype.getModuleName = function () {\n return 'GraphQLAdaptor';\n };\n /**\n * Process the JSON data based on the provided queries.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param datamanager\n * @param query\n */\n GraphQLAdaptor.prototype.processQuery = function (datamanager, query) {\n var urlQuery = _super.prototype.processQuery.apply(this, arguments);\n var dm = JSON.parse(urlQuery.data);\n // constructing GraphQL parameters\n var keys = ['skip', 'take', 'sorted', 'table', 'select', 'where',\n 'search', 'requiresCounts', 'aggregates', 'params'];\n var temp = {};\n var str = 'searchwhereparams';\n keys.filter(function (e) {\n temp[e] = str.indexOf(e) > -1 ? JSON.stringify(dm[e]) : dm[e];\n });\n var vars = this.getVariables() || {};\n // tslint:disable-next-line:no-string-literal\n vars['datamanager'] = temp;\n var data = JSON.stringify({\n query: this.getQuery(),\n variables: vars\n });\n urlQuery.data = data;\n return urlQuery;\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Object} request?\n * @param resData\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @returns DataResult\n */\n GraphQLAdaptor.prototype.processResponse = function (resData, ds, query, xhr, request) {\n var res = resData;\n var count;\n var aggregates;\n var result = getValue(this.schema.result, res.data);\n if (this.schema.count) {\n count = getValue(this.schema.count, res.data);\n }\n if (this.schema.aggregates) {\n aggregates = getValue(this.schema.aggregates, res.data);\n aggregates = !isNullOrUndefined(aggregates) ? DataUtil.parse.parseJson(aggregates) : aggregates;\n }\n var pvt = request.pvtData || {};\n var args = { result: result, aggregates: aggregates };\n var data = args;\n if (pvt && pvt.groups && pvt.groups.length) {\n this.getAggregateResult(pvt, data, args, null, query);\n }\n return !isNullOrUndefined(count) ? { result: args.result, count: count, aggregates: aggregates } : args.result;\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n */\n GraphQLAdaptor.prototype.insert = function () {\n var inserted = _super.prototype.insert.apply(this, arguments);\n return this.generateCrudData(inserted, 'insert');\n };\n /**\n * Prepare and returns request body which is used to update a new record in the table.\n */\n GraphQLAdaptor.prototype.update = function () {\n var inserted = _super.prototype.update.apply(this, arguments);\n return this.generateCrudData(inserted, 'update');\n };\n /**\n * Prepare and returns request body which is used to remove a new record in the table.\n */\n GraphQLAdaptor.prototype.remove = function () {\n var inserted = _super.prototype.remove.apply(this, arguments);\n return this.generateCrudData(inserted, 'remove');\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {Object} e\n * @param e.key\n * @param {Query} query\n * @param {Object} original\n */\n GraphQLAdaptor.prototype.batchRequest = function (dm, changes, e, query, original) {\n var batch = _super.prototype.batchRequest.apply(this, arguments);\n // tslint:disable-next-line:typedef\n var bData = JSON.parse(batch.data);\n bData.key = e.key;\n batch.data = JSON.stringify(bData);\n return this.generateCrudData(batch, 'batch');\n };\n GraphQLAdaptor.prototype.generateCrudData = function (crudData, action) {\n var parsed = JSON.parse(crudData.data);\n crudData.data = JSON.stringify({\n query: this.opt.getMutation(action),\n variables: parsed\n });\n return crudData;\n };\n return GraphQLAdaptor;\n}(UrlAdaptor));\nexport { GraphQLAdaptor };\n/**\n * Cache Adaptor is used to cache the data of the visited pages. It prevents new requests for the previously visited pages.\n * You can configure cache page size and duration of caching by using cachingPageSize and timeTillExpiration properties of the DataManager\n *\n * @hidden\n */\nvar CacheAdaptor = /** @class */ (function (_super) {\n __extends(CacheAdaptor, _super);\n /**\n * Constructor for CacheAdaptor class.\n *\n * @param {CacheAdaptor} adaptor?\n * @param {number} timeStamp?\n * @param {number} pageSize?\n * @param adaptor\n * @param timeStamp\n * @param pageSize\n * @hidden\n */\n function CacheAdaptor(adaptor, timeStamp, pageSize) {\n var _this = _super.call(this) || this;\n _this.isCrudAction = false;\n _this.isInsertAction = false;\n if (!isNullOrUndefined(adaptor)) {\n _this.cacheAdaptor = adaptor;\n }\n _this.pageSize = pageSize;\n _this.guidId = DataUtil.getGuid('cacheAdaptor');\n var obj = { keys: [], results: [] };\n window.localStorage.setItem(_this.guidId, JSON.stringify(obj));\n var guid = _this.guidId;\n if (!isNullOrUndefined(timeStamp)) {\n setInterval(function () {\n var data = DataUtil.parse.parseJson(window.localStorage.getItem(guid));\n var forDel = [];\n for (var i = 0; i < data.results.length; i++) {\n var currentTime = +new Date();\n var requestTime = +new Date(data.results[i].timeStamp);\n data.results[i].timeStamp = currentTime - requestTime;\n if (currentTime - requestTime > timeStamp) {\n forDel.push(i);\n }\n }\n for (var i = 0; i < forDel.length; i++) {\n data.results.splice(forDel[i], 1);\n data.keys.splice(forDel[i], 1);\n }\n window.localStorage.removeItem(guid);\n window.localStorage.setItem(guid, JSON.stringify(data));\n }, timeStamp);\n }\n return _this;\n }\n /**\n * It will generate the key based on the URL when we send a request to server.\n *\n * @param {string} url\n * @param {Query} query?\n * @param query\n * @hidden\n */\n CacheAdaptor.prototype.generateKey = function (url, query) {\n var queries = this.getQueryRequest(query);\n var singles = Query.filterQueryLists(query.queries, ['onSelect', 'onPage', 'onSkip', 'onTake', 'onRange']);\n var key = url;\n var page = 'onPage';\n if (page in singles) {\n key += singles[page].pageIndex;\n }\n queries.sorts.forEach(function (obj) {\n key += obj.e.direction + obj.e.fieldName;\n });\n queries.groups.forEach(function (obj) {\n key += obj.e.fieldName;\n });\n queries.searches.forEach(function (obj) {\n key += obj.e.searchKey;\n });\n for (var filter = 0; filter < queries.filters.length; filter++) {\n var currentFilter = queries.filters[filter];\n if (currentFilter.e.isComplex) {\n var newQuery = query.clone();\n newQuery.queries = [];\n for (var i = 0; i < currentFilter.e.predicates.length; i++) {\n newQuery.queries.push({ fn: 'onWhere', e: currentFilter.e.predicates[i], filter: query.queries.filter });\n }\n key += currentFilter.e.condition + this.generateKey(url, newQuery);\n }\n else {\n key += currentFilter.e.field + currentFilter.e.operator + currentFilter.e.value;\n }\n }\n return key;\n };\n /**\n * Process the query to generate request body.\n * If the data is already cached, it will return the cached data.\n *\n * @param {DataManager} dm\n * @param {Query} query?\n * @param {Object[]} hierarchyFilters?\n * @param query\n * @param hierarchyFilters\n */\n CacheAdaptor.prototype.processQuery = function (dm, query, hierarchyFilters) {\n var key = this.generateKey(dm.dataSource.url, query);\n var cachedItems = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var data = cachedItems ? cachedItems.results[cachedItems.keys.indexOf(key)] : null;\n if (data != null && !this.isCrudAction && !this.isInsertAction) {\n return data;\n }\n this.isCrudAction = null;\n this.isInsertAction = null;\n /* eslint-disable prefer-spread */\n return this.cacheAdaptor.processQuery.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n };\n /**\n * Returns the data from the query processing.\n * It will also cache the data for later usage.\n *\n * @param {DataResult} data\n * @param {DataManager} ds?\n * @param {Query} query?\n * @param {Request} xhr?\n * @param {Fetch} request?\n * @param {CrudOptions} changes?\n * @param ds\n * @param query\n * @param xhr\n * @param request\n * @param changes\n */\n CacheAdaptor.prototype.processResponse = function (data, ds, query, xhr, request, changes) {\n if (this.isInsertAction || (request && this.cacheAdaptor.options.batch &&\n DataUtil.endsWith(request.url, this.cacheAdaptor.options.batch) && request.type.toLowerCase() === 'post')) {\n return this.cacheAdaptor.processResponse(data, ds, query, xhr, request, changes);\n }\n /* eslint-disable prefer-spread */\n data = this.cacheAdaptor.processResponse.apply(this.cacheAdaptor, [].slice.call(arguments, 0));\n /* eslint-enable prefer-spread */\n var key = query ? this.generateKey(ds.dataSource.url, query) : ds.dataSource.url;\n var obj = {};\n obj = DataUtil.parse.parseJson(window.localStorage.getItem(this.guidId));\n var index = obj.keys.indexOf(key);\n if (index !== -1) {\n obj.results.splice(index, 1);\n obj.keys.splice(index, 1);\n }\n obj.results[obj.keys.push(key) - 1] = { keys: key, result: data.result, timeStamp: new Date(), count: data.count };\n while (obj.results.length > this.pageSize) {\n obj.results.splice(0, 1);\n obj.keys.splice(0, 1);\n }\n window.localStorage.setItem(this.guidId, JSON.stringify(obj));\n return data;\n };\n /**\n * Method will trigger before send the request to server side. Used to set the custom header or modify the request options.\n *\n * @param {DataManager} dm\n * @param {Request} request\n * @param {Fetch} settings?\n * @param settings\n */\n CacheAdaptor.prototype.beforeSend = function (dm, request, settings) {\n if (!isNullOrUndefined(this.cacheAdaptor.options.batch) && DataUtil.endsWith(settings.url, this.cacheAdaptor.options.batch)\n && settings.type.toLowerCase() === 'post') {\n request.headers.set('Accept', this.cacheAdaptor.options.multipartAccept);\n }\n if (!dm.dataSource.crossDomain) {\n request.headers.set('Accept', this.cacheAdaptor.options.accept);\n }\n };\n /**\n * Updates existing record and saves the changes to the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName\n */\n CacheAdaptor.prototype.update = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.update(dm, keyField, value, tableName);\n };\n /**\n * Prepare and returns request body which is used to insert a new record in the table.\n *\n * @param {DataManager} dm\n * @param {Object} data\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.insert = function (dm, data, tableName) {\n this.isInsertAction = true;\n return this.cacheAdaptor.insert(dm, data, tableName);\n };\n /**\n * Prepare and return request body which is used to remove record from the table.\n *\n * @param {DataManager} dm\n * @param {string} keyField\n * @param {Object} value\n * @param {string} tableName?\n * @param tableName\n */\n CacheAdaptor.prototype.remove = function (dm, keyField, value, tableName) {\n this.isCrudAction = true;\n return this.cacheAdaptor.remove(dm, keyField, value, tableName);\n };\n /**\n * Prepare the request body based on the newly added, removed and updated records.\n * The result is used by the batch request.\n *\n * @param {DataManager} dm\n * @param {CrudOptions} changes\n * @param {RemoteArgs} e\n */\n CacheAdaptor.prototype.batchRequest = function (dm, changes, e) {\n return this.cacheAdaptor.batchRequest(dm, changes, e);\n };\n return CacheAdaptor;\n}(UrlAdaptor));\nexport { CacheAdaptor };\n","/* eslint-disable valid-jsdoc */\n/* eslint-disable security/detect-object-injection */\nimport { Fetch } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { DataUtil } from './util';\nimport { Predicate, Query } from './query';\nimport { ODataAdaptor, JsonAdaptor, CacheAdaptor, RemoteSaveAdaptor, CustomDataAdaptor } from './adaptors';\n/**\n * DataManager is used to manage and manipulate relational data.\n */\nvar DataManager = /** @class */ (function () {\n /**\n * Constructor for DataManager class\n *\n * @param {DataOptions|JSON[]} dataSource?\n * @param {Query} query?\n * @param {AdaptorOptions|string} adaptor?\n * @param dataSource\n * @param query\n * @param adaptor\n * @hidden\n */\n function DataManager(dataSource, query, adaptor) {\n var _this = this;\n /** @hidden */\n this.dateParse = true;\n /** @hidden */\n this.timeZoneHandling = true;\n this.persistQuery = {};\n this.isInitialLoad = false;\n this.requests = [];\n this.isInitialLoad = true;\n if (!dataSource && !this.dataSource) {\n dataSource = [];\n }\n adaptor = adaptor || dataSource.adaptor;\n if (dataSource && dataSource.timeZoneHandling === false) {\n this.timeZoneHandling = dataSource.timeZoneHandling;\n }\n var data;\n if (dataSource instanceof Array) {\n data = {\n json: dataSource,\n offline: true\n };\n }\n else if (typeof dataSource === 'object') {\n if (!dataSource.json) {\n dataSource.json = [];\n }\n if (!dataSource.enablePersistence) {\n dataSource.enablePersistence = false;\n }\n if (!dataSource.id) {\n dataSource.id = '';\n }\n if (!dataSource.ignoreOnPersist) {\n dataSource.ignoreOnPersist = [];\n }\n data = {\n url: dataSource.url,\n insertUrl: dataSource.insertUrl,\n removeUrl: dataSource.removeUrl,\n updateUrl: dataSource.updateUrl,\n crudUrl: dataSource.crudUrl,\n batchUrl: dataSource.batchUrl,\n json: dataSource.json,\n headers: dataSource.headers,\n accept: dataSource.accept,\n data: dataSource.data,\n timeTillExpiration: dataSource.timeTillExpiration,\n cachingPageSize: dataSource.cachingPageSize,\n enableCaching: dataSource.enableCaching,\n requestType: dataSource.requestType,\n key: dataSource.key,\n crossDomain: dataSource.crossDomain,\n jsonp: dataSource.jsonp,\n dataType: dataSource.dataType,\n offline: dataSource.offline !== undefined ? dataSource.offline\n : dataSource.adaptor instanceof RemoteSaveAdaptor || dataSource.adaptor instanceof CustomDataAdaptor ?\n false : dataSource.url ? false : true,\n requiresFormat: dataSource.requiresFormat,\n enablePersistence: dataSource.enablePersistence,\n id: dataSource.id,\n ignoreOnPersist: dataSource.ignoreOnPersist\n };\n }\n else {\n DataUtil.throwError('DataManager: Invalid arguments');\n }\n if (data.requiresFormat === undefined && !DataUtil.isCors()) {\n data.requiresFormat = isNullOrUndefined(data.crossDomain) ? true : data.crossDomain;\n }\n if (data.dataType === undefined) {\n data.dataType = 'json';\n }\n this.dataSource = data;\n this.defaultQuery = query;\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n window.addEventListener('unload', this.setPersistData.bind(this));\n }\n if (data.url && data.offline && !data.json.length) {\n this.isDataAvailable = false;\n this.adaptor = adaptor || new ODataAdaptor();\n this.dataSource.offline = false;\n this.ready = this.executeQuery(query || new Query());\n this.ready.then(function (e) {\n _this.dataSource.offline = true;\n _this.isDataAvailable = true;\n data.json = e.result;\n _this.adaptor = new JsonAdaptor();\n });\n }\n else {\n this.adaptor = data.offline ? new JsonAdaptor() : new ODataAdaptor();\n }\n if (!data.jsonp && this.adaptor instanceof ODataAdaptor) {\n data.jsonp = 'callback';\n }\n this.adaptor = adaptor || this.adaptor;\n if (data.enableCaching) {\n this.adaptor = new CacheAdaptor(this.adaptor, data.timeTillExpiration, data.cachingPageSize);\n }\n return this;\n }\n /**\n * Get the queries maintained in the persisted state.\n * @param {string} id - The identifier of the persisted query to retrieve.\n * @returns {object} The persisted data object.\n */\n DataManager.prototype.getPersistedData = function (id) {\n var persistedData = localStorage.getItem(id || this.dataSource.id);\n return JSON.parse(persistedData);\n };\n /**\n * Set the queries to be maintained in the persisted state.\n * @param {Event} e - The event parameter that triggers the setPersistData method.\n * @param {string} id - The identifier of the persisted query to set.\n * @param {object} persistData - The data to be persisted.\n * @returns {void} .\n */\n DataManager.prototype.setPersistData = function (e, id, persistData) {\n localStorage.setItem(id || this.dataSource.id, JSON.stringify(persistData || this.persistQuery));\n };\n DataManager.prototype.setPersistQuery = function (query) {\n var _this = this;\n var persistedQuery = this.getPersistedData();\n if (this.isInitialLoad && persistedQuery && Object.keys(persistedQuery).length) {\n this.persistQuery = persistedQuery;\n this.persistQuery.queries = this.persistQuery.queries.filter(function (query) {\n if (_this.dataSource.ignoreOnPersist && _this.dataSource.ignoreOnPersist.length) {\n if (query.fn && _this.dataSource.ignoreOnPersist.some(function (keyword) { return query.fn === keyword; })) {\n return false; // Exclude the matching query\n }\n }\n if (query.fn === 'onWhere') {\n var e = query.e;\n if (e && e.isComplex && e.predicates instanceof Array) {\n var allPredicates = e.predicates.map(function (predicateObj) {\n if (predicateObj.predicates && predicateObj.predicates instanceof Array) {\n // Process nested predicate array\n var nestedPredicates = predicateObj.predicates.map(function (nestedPredicate) {\n var field = nestedPredicate.field, operator = nestedPredicate.operator, value = nestedPredicate.value, ignoreCase = nestedPredicate.ignoreCase, ignoreAccent = nestedPredicate.ignoreAccent, matchCase = nestedPredicate.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n });\n return predicateObj.condition === 'and' ? Predicate.and(nestedPredicates) : Predicate.or(nestedPredicates);\n }\n else {\n // Process individual predicate\n var field = predicateObj.field, operator = predicateObj.operator, value = predicateObj.value, ignoreCase = predicateObj.ignoreCase, ignoreAccent = predicateObj.ignoreAccent, matchCase = predicateObj.matchCase;\n return new Predicate(field, operator, value, ignoreCase, ignoreAccent, matchCase);\n }\n });\n query.e = new Predicate(allPredicates[0], e.condition, allPredicates.slice(1));\n }\n }\n return true; // Keep all other queries\n });\n var newQuery = extend(new Query(), this.persistQuery);\n this.isInitialLoad = false;\n return (newQuery);\n }\n else {\n this.persistQuery = query;\n this.isInitialLoad = false;\n return query;\n }\n };\n /**\n * Overrides DataManager's default query with given query.\n *\n * @param {Query} query - Defines the new default query.\n */\n DataManager.prototype.setDefaultQuery = function (query) {\n this.defaultQuery = query;\n return this;\n };\n /**\n * Executes the given query with local data source.\n *\n * @param {Query} query - Defines the query to retrieve data.\n */\n DataManager.prototype.executeLocal = function (query) {\n if (!this.defaultQuery && !(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeLocal() : A query is required to execute');\n }\n if (!this.dataSource.json) {\n DataUtil.throwError('DataManager - executeLocal() : Json data is required to execute');\n }\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n query = query || this.defaultQuery;\n var result = this.adaptor.processQuery(this, query);\n if (query.subQuery) {\n var from = query.subQuery.fromTable;\n var lookup = query.subQuery.lookups;\n var res = query.isCountRequired ? result.result :\n result;\n if (lookup && lookup instanceof Array) {\n DataUtil.buildHierarchy(query.subQuery.fKey, from, res, lookup, query.subQuery.key);\n }\n for (var j = 0; j < res.length; j++) {\n if (res[j][from] instanceof Array) {\n res[j] = extend({}, {}, res[j]);\n res[j][from] = this.adaptor.processResponse(query.subQuery.using(new DataManager(res[j][from].slice(0))).executeLocal(), this, query);\n }\n }\n }\n return this.adaptor.processResponse(result, this, query);\n };\n /**\n * Executes the given query with either local or remote data source.\n * It will be executed as asynchronously and returns Promise object which will be resolved or rejected after action completed.\n *\n * @param {Query|Function} query - Defines the query to retrieve data.\n * @param {Function} done - Defines the callback function and triggers when the Promise is resolved.\n * @param {Function} fail - Defines the callback function and triggers when the Promise is rejected.\n * @param {Function} always - Defines the callback function and triggers when the Promise is resolved or rejected.\n */\n DataManager.prototype.executeQuery = function (query, done, fail, always) {\n var _this = this;\n var makeRequest = 'makeRequest';\n if (this.dataSource.enablePersistence && this.dataSource.id) {\n query = this.setPersistQuery(query);\n }\n if (typeof query === 'function') {\n always = fail;\n fail = done;\n done = query;\n query = null;\n }\n if (!query) {\n query = this.defaultQuery;\n }\n if (!(query instanceof Query)) {\n DataUtil.throwError('DataManager - executeQuery() : A query is required to execute');\n }\n var deffered = new Deferred();\n var args = { query: query };\n if (!this.dataSource.offline && (this.dataSource.url !== undefined && this.dataSource.url !== '')\n || (!isNullOrUndefined(this.adaptor[makeRequest])) || this.isCustomDataAdaptor(this.adaptor)) {\n var result = this.adaptor.processQuery(this, query);\n if (!isNullOrUndefined(this.adaptor[makeRequest])) {\n this.adaptor[makeRequest](result, deffered, args, query);\n }\n else if (!isNullOrUndefined(result.url) || this.isCustomDataAdaptor(this.adaptor)) {\n this.requests = [];\n this.makeRequest(result, deffered, args, query);\n }\n else {\n args = DataManager.getDeferedArgs(query, result, args);\n deffered.resolve(args);\n }\n }\n else {\n DataManager.nextTick(function () {\n var res = _this.executeLocal(query);\n args = DataManager.getDeferedArgs(query, res, args);\n deffered.resolve(args);\n });\n }\n if (done || fail) {\n deffered.promise.then(done, fail);\n }\n if (always) {\n deffered.promise.then(always, always);\n }\n return deffered.promise;\n };\n DataManager.getDeferedArgs = function (query, result, args) {\n if (query.isCountRequired) {\n args.result = result.result;\n args.count = result.count;\n args.aggregates = result.aggregates;\n }\n else {\n args.result = result;\n }\n return args;\n };\n DataManager.nextTick = function (fn) {\n /* eslint-disable @typescript-eslint/no-explicit-any */\n // tslint:disable-next-line:no-any\n (window.setImmediate || window.setTimeout)(fn, 0);\n /* eslint-enable @typescript-eslint/no-explicit-any */\n };\n DataManager.prototype.extendRequest = function (url, fnSuccess, fnFail) {\n return extend({}, {\n type: 'GET',\n dataType: this.dataSource.dataType,\n crossDomain: this.dataSource.crossDomain,\n jsonp: this.dataSource.jsonp,\n cache: true,\n processData: false,\n onSuccess: fnSuccess,\n onFailure: fnFail\n }, url);\n };\n // tslint:disable-next-line:max-func-body-length\n DataManager.prototype.makeRequest = function (url, deffered, args, query) {\n var _this = this;\n var isSelector = !!query.subQuerySelector;\n var fnFail = function (e) {\n args.error = e;\n deffered.reject(args);\n };\n var process = function (data, count, xhr, request, actual, aggregates, virtualSelectRecords) {\n args.xhr = xhr;\n args.count = count ? parseInt(count.toString(), 10) : 0;\n args.result = data;\n args.request = request;\n args.aggregates = aggregates;\n args.actual = actual;\n args.virtualSelectRecords = virtualSelectRecords;\n deffered.resolve(args);\n };\n var fnQueryChild = function (data, selector) {\n var subDeffer = new Deferred();\n var childArgs = { parent: args };\n query.subQuery.isChild = true;\n var subUrl = _this.adaptor.processQuery(_this, query.subQuery, data ? _this.adaptor.processResponse(data) : selector);\n var childReq = _this.makeRequest(subUrl, subDeffer, childArgs, query.subQuery);\n if (!isSelector) {\n subDeffer.then(function (subData) {\n if (data) {\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, data, subData, query.subQuery.key);\n process(data, subData.count, subData.xhr);\n }\n }, fnFail);\n }\n return childReq;\n };\n var fnSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n return fnFail(data['errors'], request);\n }\n }\n if (_this.isCustomDataAdaptor(_this.adaptor)) {\n request = extend({}, _this.fetchReqOption, request);\n }\n if (request.contentType.indexOf('xml') === -1 && _this.dateParse) {\n data = DataUtil.parse.parseJson(data);\n }\n var result = _this.adaptor.processResponse(data, _this, query, request.fetchRequest, request);\n var count = 0;\n var aggregates = null;\n var virtualSelectRecords = 'virtualSelectRecords';\n var virtualRecords = data[virtualSelectRecords];\n if (query.isCountRequired) {\n count = result.count;\n aggregates = result.aggregates;\n result = result.result;\n }\n if (!query.subQuery) {\n process(result, count, request.fetchRequest, request.type, data, aggregates, virtualRecords);\n return;\n }\n if (!isSelector) {\n fnQueryChild(result, request);\n }\n };\n var req = this.extendRequest(url, fnSuccess, fnFail);\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var fetch_1 = new Fetch(req);\n fetch_1.beforeSend = function () {\n _this.beforeSend(fetch_1.fetchRequest, fetch_1);\n };\n req = fetch_1.send();\n req.catch(function (e) { return true; }); // to handle failure remote requests.\n this.requests.push(fetch_1);\n }\n else {\n this.fetchReqOption = req;\n var request = req;\n this.adaptor.options.getData({\n data: request.data,\n onSuccess: request.onSuccess, onFailure: request.onFailure\n });\n }\n if (isSelector) {\n var promise = void 0;\n var res = query.subQuerySelector.call(this, { query: query.subQuery, parent: query });\n if (res && res.length) {\n promise = Promise.all([req, fnQueryChild(null, res)]);\n promise.then(function () {\n var args = [];\n for (var _i = 0; _i < arguments.length; _i++) {\n args[_i] = arguments[_i];\n }\n var result = args[0];\n var pResult = _this.adaptor.processResponse(result[0], _this, query, _this.requests[0].fetchRequest, _this.requests[0]);\n var count = 0;\n if (query.isCountRequired) {\n count = pResult.count;\n pResult = pResult.result;\n }\n var cResult = _this.adaptor.processResponse(result[1], _this, query.subQuery, _this.requests[1].fetchRequest, _this.requests[1]);\n count = 0;\n if (query.subQuery.isCountRequired) {\n count = cResult.count;\n cResult = cResult.result;\n }\n DataUtil.buildHierarchy(query.subQuery.fKey, query.subQuery.fromTable, pResult, cResult, query.subQuery.key);\n isSelector = false;\n process(pResult, count, _this.requests[0].fetchRequest);\n });\n }\n else {\n isSelector = false;\n }\n }\n return req;\n };\n DataManager.prototype.beforeSend = function (request, settings) {\n this.adaptor.beforeSend(this, request, settings);\n var headers = this.dataSource.headers;\n var props;\n for (var i = 0; headers && i < headers.length; i++) {\n props = [];\n var keys = Object.keys(headers[i]);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var prop = keys_1[_i];\n props.push(prop);\n request.headers.set(prop, headers[i][prop]);\n }\n }\n };\n /**\n * Save bulk changes to the given table name.\n * User can add a new record, edit an existing record, and delete a record at the same time.\n * If the datasource from remote, then updated in a single post.\n *\n * @param {Object} changes - Defines the CrudOptions.\n * @param {string} key - Defines the column field.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.saveChanges = function (changes, key, tableName, query, original) {\n var _this = this;\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var args = {\n url: tableName,\n key: key || this.dataSource.key\n };\n var req = this.adaptor.batchRequest(this, changes, args, query || new Query(), original);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](req);\n }\n else if (!this.isCustomDataAdaptor(this.adaptor)) {\n var deff_1 = new Deferred();\n var fetch_2 = new Fetch(req);\n fetch_2.beforeSend = function () {\n _this.beforeSend(fetch_2.fetchRequest, fetch_2);\n };\n fetch_2.onSuccess = function (data, request) {\n if (_this.isGraphQLAdaptor(_this.adaptor)) {\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n fetch_2.onFailure(JSON.stringify(data['errors']));\n }\n }\n deff_1.resolve(_this.adaptor.processResponse(data, _this, null, request.fetchRequest, request, changes, args));\n };\n fetch_2.onFailure = function (e) {\n deff_1.reject([{ error: e }]);\n };\n fetch_2.send().catch(function (e) { return true; }); // to handle the failure requests.\n return deff_1.promise;\n }\n else {\n return this.dofetchRequest(req, this.adaptor.options.batchUpdate);\n }\n };\n /**\n * Inserts new record in the given table.\n *\n * @param {Object} data - Defines the data to insert.\n * @param {string|Query} tableName - Defines the table name.\n * @param {Query} query - Sets default query for the DataManager.\n * @param position\n */\n DataManager.prototype.insert = function (data, tableName, query, position) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var req = this.adaptor.insert(this, data, tableName, query, position);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return req;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](req);\n }\n else {\n return this.dofetchRequest(req, this.adaptor.options.addRecord);\n }\n };\n /**\n * Removes data from the table with the given key.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n */\n DataManager.prototype.remove = function (keyField, value, tableName, query) {\n if (typeof value === 'object') {\n value = DataUtil.getObject(keyField, value);\n }\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.remove(this, keyField, value, tableName, query);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](res);\n }\n else {\n var remove = this.adaptor.options.deleteRecord;\n return this.dofetchRequest(res, remove);\n }\n };\n /**\n * Updates existing record in the given table.\n *\n * @param {string} keyField - Defines the column field.\n * @param {Object} value - Defines the value to find the data in the specified column.\n * @param {string|Query} tableName - Defines the table name\n * @param {Query} query - Sets default query for the DataManager.\n * @param original\n */\n DataManager.prototype.update = function (keyField, value, tableName, query, original) {\n if (tableName instanceof Query) {\n query = tableName;\n tableName = null;\n }\n var res = this.adaptor.update(this, keyField, value, tableName, query, original);\n var dofetchRequest = 'dofetchRequest';\n if (this.dataSource.offline) {\n return res;\n }\n if (!isNullOrUndefined(this.adaptor[dofetchRequest])) {\n return this.adaptor[dofetchRequest](res);\n }\n else {\n var update = this.adaptor.options.updateRecord;\n return this.dofetchRequest(res, update);\n }\n };\n DataManager.prototype.isCustomDataAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'CustomDataAdaptor';\n };\n DataManager.prototype.isGraphQLAdaptor = function (dataSource) {\n return this.adaptor.getModuleName &&\n this.adaptor.getModuleName() === 'GraphQLAdaptor';\n };\n DataManager.prototype.successFunc = function (record, request) {\n if (this.isGraphQLAdaptor(this.adaptor)) {\n var data = JSON.parse(record);\n // tslint:disable-next-line:no-string-literal\n if (!isNullOrUndefined(data['errors'])) {\n // tslint:disable-next-line:no-string-literal\n this.failureFunc(JSON.stringify(data['errors']));\n }\n }\n if (this.isCustomDataAdaptor(this.adaptor)) {\n request = extend({}, this.fetchReqOption, request);\n }\n try {\n DataUtil.parse.parseJson(record);\n }\n catch (e) {\n record = [];\n }\n record = this.adaptor.processResponse(DataUtil.parse.parseJson(record), this, null, request.fetchRequest, request);\n this.fetchDeffered.resolve(record);\n };\n DataManager.prototype.failureFunc = function (e) {\n this.fetchDeffered.reject([{ error: e }]);\n };\n DataManager.prototype.dofetchRequest = function (res, fetchFunc) {\n var _this = this;\n res = extend({}, {\n type: 'POST',\n contentType: 'application/json; charset=utf-8',\n processData: false\n }, res);\n this.fetchDeffered = new Deferred();\n if (!this.isCustomDataAdaptor(this.adaptor)) {\n var fetch_3 = new Fetch(res);\n fetch_3.beforeSend = function () {\n _this.beforeSend(fetch_3.fetchRequest, fetch_3);\n };\n fetch_3.onSuccess = this.successFunc.bind(this);\n fetch_3.onFailure = this.failureFunc.bind(this);\n fetch_3.send().catch(function (e) { return true; }); // to handle the failure requests.\n }\n else {\n this.fetchReqOption = res;\n fetchFunc.call(this, {\n data: res.data, onSuccess: this.successFunc.bind(this),\n onFailure: this.failureFunc.bind(this)\n });\n }\n return this.fetchDeffered.promise;\n };\n DataManager.prototype.clearPersistence = function () {\n window.removeEventListener('unload', this.setPersistData.bind(this));\n this.dataSource.enablePersistence = false;\n this.persistQuery = {};\n window.localStorage.setItem(this.dataSource.id, '[]');\n };\n return DataManager;\n}());\nexport { DataManager };\n/**\n * Deferred is used to handle asynchronous operation.\n */\nvar Deferred = /** @class */ (function () {\n function Deferred() {\n var _this = this;\n /**\n * Promise is an object that represents a value that may not be available yet, but will be resolved at some point in the future.\n */\n this.promise = new Promise(function (resolve, reject) {\n _this.resolve = resolve;\n _this.reject = reject;\n });\n /**\n * Defines the callback function triggers when the Deferred object is resolved.\n */\n this.then = this.promise.then.bind(this.promise);\n /**\n * Defines the callback function triggers when the Deferred object is rejected.\n */\n this.catch = this.promise.catch.bind(this.promise);\n }\n return Deferred;\n}());\nexport { Deferred };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { HijriParser, isNullOrUndefined } from '@syncfusion/ej2-base';\n/** @private */\nvar Gregorian = /** @class */ (function () {\n function Gregorian() {\n }\n Gregorian.prototype.firstDateOfMonth = function (date) {\n return new Date(date.getFullYear(), date.getMonth());\n };\n Gregorian.prototype.lastDateOfMonth = function (dt) {\n return new Date(dt.getFullYear(), dt.getMonth() + 1, 0);\n };\n Gregorian.prototype.isMonthStart = function (date) {\n return (date.getDate() === 1);\n };\n Gregorian.prototype.getLeapYearDaysCount = function () {\n return 366;\n };\n Gregorian.prototype.getYearDaysCount = function (date, interval) {\n return ((date.getFullYear() + interval) % 4 === 0) ? 366 : 365;\n };\n Gregorian.prototype.getDate = function (date) {\n return date.getDate();\n };\n Gregorian.prototype.getMonth = function (date) {\n return (date.getMonth() + 1);\n };\n Gregorian.prototype.getFullYear = function (date) {\n return date.getFullYear();\n };\n Gregorian.prototype.getYearLastDate = function (date, interval) {\n return new Date(date.getFullYear() + interval, 0, 0);\n };\n Gregorian.prototype.getMonthDaysCount = function (date) {\n return this.lastDateOfMonth(date).getDate();\n };\n Gregorian.prototype.getMonthStartDate = function (date) {\n return new Date(date.getFullYear(), date.getMonth(), 1, date.getHours(), date.getMinutes());\n };\n Gregorian.prototype.getMonthEndDate = function (date) {\n date.setDate(1);\n return new Date(date.setMonth(date.getMonth() + 1));\n };\n Gregorian.prototype.getExpectedDays = function (date, days) {\n return days;\n };\n Gregorian.prototype.setDate = function (dateObj, date) {\n dateObj.setDate(date);\n };\n Gregorian.prototype.setValidDate = function (date, interval, startDate, monthValue, beginDate) {\n if (!isNullOrUndefined(beginDate)) {\n date.setMonth((beginDate ? monthValue : date.getMonth()) + interval);\n }\n else {\n date.setMonth(date.getMonth() + interval, startDate);\n }\n };\n Gregorian.prototype.setMonth = function (date, interval, startDate) {\n date.setDate(1);\n date.setFullYear(date.getFullYear());\n date.setMonth(interval - 1);\n var maxDay = new Date(date.getFullYear(), date.getMonth() + 1, 0).getDate();\n date.setDate(Math.min(startDate, maxDay));\n };\n Gregorian.prototype.addYears = function (date, interval) {\n date.setFullYear(date.getFullYear() + interval);\n };\n Gregorian.prototype.isSameMonth = function (date1, date2) {\n return (date1.getMonth() === date2.getMonth());\n };\n Gregorian.prototype.checkMonth = function (date, months) {\n return (months.indexOf(date.getMonth() + 1) === -1);\n };\n Gregorian.prototype.compareMonth = function (date1, date2) {\n return (date1.getMonth() > date2.getMonth());\n };\n Gregorian.prototype.isSameYear = function (date1, date2) {\n return (date1.getFullYear() === date2.getFullYear());\n };\n Gregorian.prototype.isLastMonth = function (date) {\n return (date.getMonth() === 11);\n };\n Gregorian.prototype.isLeapYear = function (year, interval) {\n return ((year + interval) % 4 === 0);\n };\n return Gregorian;\n}());\nexport { Gregorian };\n/** @private */\nvar Islamic = /** @class */ (function () {\n function Islamic() {\n }\n Islamic.prototype.firstDateOfMonth = function (date) {\n var hDate = this.getHijriDate(date);\n var gDate = HijriParser.toGregorian(hDate.year, hDate.month, 1);\n return gDate;\n };\n Islamic.prototype.lastDateOfMonth = function (date) {\n var hDate = this.getHijriDate(date);\n var daysInMonth = this.getDaysInMonth(hDate.month, hDate.year);\n var gDate = HijriParser.toGregorian(hDate.year, hDate.month, daysInMonth);\n var finalGDate = new Date(gDate.getTime());\n finalGDate = new Date(finalGDate.setDate(finalGDate.getDate() + 1));\n var finalHDate = this.getHijriDate(finalGDate);\n if (hDate.month === finalHDate.month) {\n return finalGDate;\n }\n finalHDate = this.getHijriDate(gDate);\n if (hDate.month === finalHDate.month) {\n return gDate;\n }\n return new Date(gDate.setDate(gDate.getDate() - 1));\n };\n Islamic.prototype.isMonthStart = function (date) {\n var hijriDate = this.getHijriDate(date);\n return (hijriDate.date === 1);\n };\n Islamic.prototype.getLeapYearDaysCount = function () {\n return 355;\n };\n Islamic.prototype.getYearDaysCount = function (date, interval) {\n var hDate = this.getHijriDate(date);\n return this.isLeapYear(hDate.year, interval) ? 355 : 354;\n };\n Islamic.prototype.getDate = function (date) {\n var hijriDate = this.getHijriDate(date);\n return hijriDate.date;\n };\n Islamic.prototype.getMonth = function (date) {\n var hDate = this.getHijriDate(date);\n return hDate.month;\n };\n Islamic.prototype.getFullYear = function (date) {\n var hDate = this.getHijriDate(date);\n return hDate.year;\n };\n Islamic.prototype.getYearLastDate = function (date, interval) {\n var hDate = this.getHijriDate(date);\n var gDate = HijriParser.toGregorian(hDate.year + interval, 1, 0);\n return gDate;\n };\n Islamic.prototype.getMonthDaysCount = function (date) {\n var maxDate = this.lastDateOfMonth(date);\n var hijriDate = this.getHijriDate(maxDate);\n return hijriDate.date;\n };\n Islamic.prototype.getMonthStartDate = function (date) {\n var firstDate = this.firstDateOfMonth(date);\n return new Date(firstDate.getFullYear(), firstDate.getMonth(), firstDate.getDate(), date.getHours(), date.getMinutes());\n };\n Islamic.prototype.getMonthEndDate = function (date) {\n var lastDate = this.lastDateOfMonth(date);\n lastDate.setDate(lastDate.getDate() + 1);\n return new Date(lastDate.setMonth(lastDate.getMonth()));\n };\n Islamic.prototype.getExpectedDays = function (date, days) {\n var hDate = this.getHijriDate(date);\n var day = [];\n for (var i = 0; i < days.length; i++) {\n var gDate = HijriParser.toGregorian(hDate.year, hDate.month, days[parseInt(i.toString(), 10)]);\n day.push(gDate.getDate());\n }\n return day;\n };\n Islamic.prototype.setDate = function (dateObj, date) {\n var hDate = this.getHijriDate(dateObj);\n var gDate = HijriParser.toGregorian(hDate.year, hDate.month, date);\n this.updateDateObj(dateObj, gDate);\n };\n Islamic.prototype.setValidDate = function (date, interval, startDate, monthValue, beginDate) {\n var firstDate = (!isNullOrUndefined(beginDate)) ? this.firstDateOfMonth(beginDate) : date;\n var hDate = this.getHijriDate(firstDate);\n var gDate = HijriParser.toGregorian(hDate.year, hDate.month + interval, startDate);\n this.updateDateObj(date, gDate);\n };\n Islamic.prototype.setMonth = function (date, interval, startDate) {\n var hDate = this.getHijriDate(date);\n var gDate = HijriParser.toGregorian(hDate.year, interval, startDate);\n this.updateDateObj(date, gDate);\n };\n Islamic.prototype.addYears = function (date, interval, monthValue) {\n var hDate = this.getHijriDate(date);\n var gDate = HijriParser.toGregorian(hDate.year + interval, monthValue, 1);\n this.updateDateObj(date, gDate);\n };\n Islamic.prototype.isSameMonth = function (date1, date2) {\n var currentHijri = this.getHijriDate(date1);\n var tempHijri = this.getHijriDate(date2);\n return (currentHijri.month === tempHijri.month);\n };\n Islamic.prototype.checkMonth = function (date, months) {\n var hDate = this.getHijriDate(date);\n return (months.indexOf(hDate.month) === -1);\n };\n Islamic.prototype.compareMonth = function (date1, date2) {\n var hDate = this.getHijriDate(date1);\n var hDate1 = this.getHijriDate(date2);\n return (hDate.month > hDate1.month);\n };\n Islamic.prototype.isSameYear = function (date1, date2) {\n var hDate = this.getHijriDate(date1);\n var hDate1 = this.getHijriDate(date2);\n return (hDate.year === hDate1.year);\n };\n Islamic.prototype.isLastMonth = function (date) {\n var hDate = this.getHijriDate(date);\n return (hDate.month === 12);\n };\n Islamic.prototype.updateDateObj = function (date, gDate) {\n date.setFullYear(gDate.getFullYear(), gDate.getMonth(), gDate.getDate());\n };\n Islamic.prototype.isLeapYear = function (year, interval) {\n return (14 + 11 * (year + interval)) % 30 < 11;\n };\n Islamic.prototype.getDaysInMonth = function (month, year) {\n var length = 0;\n length = 29 + ((month + 1) % 2);\n if (month === 11 && this.isLeapYear(year, 0)) {\n length++;\n }\n return length;\n };\n Islamic.prototype.getHijriDate = function (date) {\n return HijriParser.getHijriDate(date);\n };\n return Islamic;\n}());\nexport { Islamic };\n","/**\n * Time zone\n */\nvar Timezone = /** @class */ (function () {\n function Timezone() {\n this.timezoneData = [];\n this.timezoneData = this.getTimezoneData();\n }\n Timezone.prototype.offset = function (date, timezone) {\n var localOffset = date.getTimezoneOffset();\n try {\n var convertedDate = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n if (!isNaN(convertedDate.getTime())) {\n return ((date.getTime() - convertedDate.getTime()) / 60000) + localOffset;\n }\n return 0;\n }\n catch (error) {\n return 0;\n }\n };\n Timezone.prototype.convert = function (date, fromOffset, toOffset) {\n if (typeof fromOffset === 'string') {\n fromOffset = this.offset(date, fromOffset);\n }\n if (typeof toOffset === 'string') {\n toOffset = this.offset(date, toOffset);\n }\n var fromLocalOffset = date.getTimezoneOffset();\n date = new Date(date.getTime() + (fromOffset - toOffset) * 60000);\n var toLocalOffset = date.getTimezoneOffset();\n return new Date(date.getTime() + (toLocalOffset - fromLocalOffset) * 60000);\n };\n Timezone.prototype.add = function (date, timezone) {\n return this.convert(date, date.getTimezoneOffset(), timezone);\n };\n Timezone.prototype.remove = function (date, timezone) {\n return this.convert(date, timezone, date.getTimezoneOffset());\n };\n Timezone.prototype.removeLocalOffset = function (date) {\n return new Date(date.getTime() - (date.getTimezoneOffset() * 60000));\n };\n Timezone.prototype.getLocalTimezoneName = function () {\n return window.Intl ? Intl.DateTimeFormat().resolvedOptions().timeZone || 'UTC' : 'UTC';\n };\n Timezone.prototype.getTimezoneData = function () {\n return timezoneData;\n };\n return Timezone;\n}());\nexport { Timezone };\nexport var timezoneData = [\n { Value: 'Pacific/Niue', Text: '(UTC-11:00) Niue' },\n { Value: 'Pacific/Pago_Pago', Text: '(UTC-11:00) Pago Pago' },\n { Value: 'Pacific/Honolulu', Text: '(UTC-10:00) Hawaii Time' },\n { Value: 'Pacific/Rarotonga', Text: '(UTC-10:00) Rarotonga' },\n { Value: 'Pacific/Tahiti', Text: '(UTC-10:00) Tahiti' },\n { Value: 'Pacific/Marquesas', Text: '(UTC-09:30) Marquesas' },\n { Value: 'America/Anchorage', Text: '(UTC-09:00) Alaska Time' },\n { Value: 'Pacific/Gambier', Text: '(UTC-09:00) Gambier' },\n { Value: 'America/Los_Angeles', Text: '(UTC-08:00) Pacific Time' },\n { Value: 'America/Tijuana', Text: '(UTC-08:00) Pacific Time - Tijuana' },\n { Value: 'America/Vancouver', Text: '(UTC-08:00) Pacific Time - Vancouver' },\n { Value: 'America/Whitehorse', Text: '(UTC-08:00) Pacific Time - Whitehorse' },\n { Value: 'Pacific/Pitcairn', Text: '(UTC-08:00) Pitcairn' },\n { Value: 'America/Denver', Text: '(UTC-07:00) Mountain Time' },\n { Value: 'America/Phoenix', Text: '(UTC-07:00) Mountain Time - Arizona' },\n { Value: 'America/Mazatlan', Text: '(UTC-07:00) Mountain Time - Chihuahua, Mazatlan' },\n { Value: 'America/Dawson_Creek', Text: '(UTC-07:00) Mountain Time - Dawson Creek' },\n { Value: 'America/Edmonton', Text: '(UTC-07:00) Mountain Time - Edmonton' },\n { Value: 'America/Hermosillo', Text: '(UTC-07:00) Mountain Time - Hermosillo' },\n { Value: 'America/Yellowknife', Text: '(UTC-07:00) Mountain Time - Yellowknife' },\n { Value: 'America/Belize', Text: '(UTC-06:00) Belize' },\n { Value: 'America/Chicago', Text: '(UTC-06:00) Central Time' },\n { Value: 'America/Mexico_City', Text: '(UTC-06:00) Central Time - Mexico City' },\n { Value: 'America/Regina', Text: '(UTC-06:00) Central Time - Regina' },\n { Value: 'America/Tegucigalpa', Text: '(UTC-06:00) Central Time - Tegucigalpa' },\n { Value: 'America/Winnipeg', Text: '(UTC-06:00) Central Time - Winnipeg' },\n { Value: 'America/Costa_Rica', Text: '(UTC-06:00) Costa Rica' },\n { Value: 'America/El_Salvador', Text: '(UTC-06:00) El Salvador' },\n { Value: 'Pacific/Galapagos', Text: '(UTC-06:00) Galapagos' },\n { Value: 'America/Guatemala', Text: '(UTC-06:00) Guatemala' },\n { Value: 'America/Managua', Text: '(UTC-06:00) Managua' },\n { Value: 'America/Cancun', Text: '(UTC-05:00) America Cancun' },\n { Value: 'America/Bogota', Text: '(UTC-05:00) Bogota' },\n { Value: 'Pacific/Easter', Text: '(UTC-05:00) Easter Island' },\n { Value: 'America/New_York', Text: '(UTC-05:00) Eastern Time' },\n { Value: 'America/Iqaluit', Text: '(UTC-05:00) Eastern Time - Iqaluit' },\n { Value: 'America/Toronto', Text: '(UTC-05:00) Eastern Time - Toronto' },\n { Value: 'America/Guayaquil', Text: '(UTC-05:00) Guayaquil' },\n { Value: 'America/Havana', Text: '(UTC-05:00) Havana' },\n { Value: 'America/Jamaica', Text: '(UTC-05:00) Jamaica' },\n { Value: 'America/Lima', Text: '(UTC-05:00) Lima' },\n { Value: 'America/Nassau', Text: '(UTC-05:00) Nassau' },\n { Value: 'America/Panama', Text: '(UTC-05:00) Panama' },\n { Value: 'America/Port-au-Prince', Text: '(UTC-05:00) Port-au-Prince' },\n { Value: 'America/Rio_Branco', Text: '(UTC-05:00) Rio Branco' },\n { Value: 'America/Halifax', Text: '(UTC-04:00) Atlantic Time - Halifax' },\n { Value: 'America/Barbados', Text: '(UTC-04:00) Barbados' },\n { Value: 'Atlantic/Bermuda', Text: '(UTC-04:00) Bermuda' },\n { Value: 'America/Boa_Vista', Text: '(UTC-04:00) Boa Vista' },\n { Value: 'America/Caracas', Text: '(UTC-04:00) Caracas' },\n { Value: 'America/Curacao', Text: '(UTC-04:00) Curacao' },\n { Value: 'America/Grand_Turk', Text: '(UTC-04:00) Grand Turk' },\n { Value: 'America/Guyana', Text: '(UTC-04:00) Guyana' },\n { Value: 'America/La_Paz', Text: '(UTC-04:00) La Paz' },\n { Value: 'America/Manaus', Text: '(UTC-04:00) Manaus' },\n { Value: 'America/Martinique', Text: '(UTC-04:00) Martinique' },\n { Value: 'America/Port_of_Spain', Text: '(UTC-04:00) Port of Spain' },\n { Value: 'America/Porto_Velho', Text: '(UTC-04:00) Porto Velho' },\n { Value: 'America/Puerto_Rico', Text: '(UTC-04:00) Puerto Rico' },\n { Value: 'America/Santo_Domingo', Text: '(UTC-04:00) Santo Domingo' },\n { Value: 'America/Thule', Text: '(UTC-04:00) Thule' },\n { Value: 'America/St_Johns', Text: '(UTC-03:30) Newfoundland Time - St. Johns' },\n { Value: 'America/Araguaina', Text: '(UTC-03:00) Araguaina' },\n { Value: 'America/Asuncion', Text: '(UTC-03:00) Asuncion' },\n { Value: 'America/Belem', Text: '(UTC-03:00) Belem' },\n { Value: 'America/Argentina/Buenos_Aires', Text: '(UTC-03:00) Buenos Aires' },\n { Value: 'America/Campo_Grande', Text: '(UTC-03:00) Campo Grande' },\n { Value: 'America/Cayenne', Text: '(UTC-03:00) Cayenne' },\n { Value: 'America/Cuiaba', Text: '(UTC-03:00) Cuiaba' },\n { Value: 'America/Fortaleza', Text: '(UTC-03:00) Fortaleza' },\n { Value: 'America/Godthab', Text: '(UTC-03:00) Godthab' },\n { Value: 'America/Maceio', Text: '(UTC-03:00) Maceio' },\n { Value: 'America/Miquelon', Text: '(UTC-03:00) Miquelon' },\n { Value: 'America/Montevideo', Text: '(UTC-03:00) Montevideo' },\n { Value: 'Antarctica/Palmer', Text: '(UTC-03:00) Palmer' },\n { Value: 'America/Paramaribo', Text: '(UTC-03:00) Paramaribo' },\n { Value: 'America/Punta_Arenas', Text: '(UTC-03:00) Punta Arenas' },\n { Value: 'America/Recife', Text: '(UTC-03:00) Recife' },\n { Value: 'Antarctica/Rothera', Text: '(UTC-03:00) Rothera' },\n { Value: 'America/Bahia', Text: '(UTC-03:00) Salvador' },\n { Value: 'America/Santiago', Text: '(UTC-03:00) Santiago' },\n { Value: 'Atlantic/Stanley', Text: '(UTC-03:00) Stanley' },\n { Value: 'America/Noronha', Text: '(UTC-02:00) Noronha' },\n { Value: 'America/Sao_Paulo', Text: '(UTC-02:00) Sao Paulo' },\n { Value: 'Atlantic/South_Georgia', Text: '(UTC-02:00) South Georgia' },\n { Value: 'Atlantic/Azores', Text: '(UTC-01:00) Azores' },\n { Value: 'Atlantic/Cape_Verde', Text: '(UTC-01:00) Cape Verde' },\n { Value: 'America/Scoresbysund', Text: '(UTC-01:00) Scoresbysund' },\n { Value: 'Africa/Abidjan', Text: '(UTC+00:00) Abidjan' },\n { Value: 'Africa/Accra', Text: '(UTC+00:00) Accra' },\n { Value: 'Africa/Bissau', Text: '(UTC+00:00) Bissau' },\n { Value: 'Atlantic/Canary', Text: '(UTC+00:00) Canary Islands' },\n { Value: 'Africa/Casablanca', Text: '(UTC+00:00) Casablanca' },\n { Value: 'America/Danmarkshavn', Text: '(UTC+00:00) Danmarkshavn' },\n { Value: 'Europe/Dublin', Text: '(UTC+00:00) Dublin' },\n { Value: 'Africa/El_Aaiun', Text: '(UTC+00:00) El Aaiun' },\n { Value: 'Atlantic/Faroe', Text: '(UTC+00:00) Faeroe' },\n { Value: 'Etc/UTC', Text: '(UTC+00:00) UTC (no daylight saving)' },\n { Value: 'Europe/Lisbon', Text: '(UTC+00:00) Lisbon' },\n { Value: 'Europe/London', Text: '(UTC+00:00) London' },\n { Value: 'Africa/Monrovia', Text: '(UTC+00:00) Monrovia' },\n { Value: 'Atlantic/Reykjavik', Text: '(UTC+00:00) Reykjavik' },\n { Value: 'UTC', Text: 'UTC' },\n { Value: 'Africa/Algiers', Text: '(UTC+01:00) Algiers' },\n { Value: 'Europe/Amsterdam', Text: '(UTC+01:00) Amsterdam' },\n { Value: 'Europe/Andorra', Text: '(UTC+01:00) Andorra' },\n { Value: 'Europe/Berlin', Text: '(UTC+01:00) Berlin' },\n { Value: 'Europe/Brussels', Text: '(UTC+01:00) Brussels' },\n { Value: 'Europe/Budapest', Text: '(UTC+01:00) Budapest' },\n { Value: 'Europe/Belgrade', Text: '(UTC+01:00) Central European Time - Belgrade' },\n { Value: 'Europe/Prague', Text: '(UTC+01:00) Central European Time - Prague' },\n { Value: 'Africa/Ceuta', Text: '(UTC+01:00) Ceuta' },\n { Value: 'Europe/Copenhagen', Text: '(UTC+01:00) Copenhagen' },\n { Value: 'Europe/Gibraltar', Text: '(UTC+01:00) Gibraltar' },\n { Value: 'Africa/Lagos', Text: '(UTC+01:00) Lagos' },\n { Value: 'Europe/Luxembourg', Text: '(UTC+01:00) Luxembourg' },\n { Value: 'Europe/Madrid', Text: '(UTC+01:00) Madrid' },\n { Value: 'Europe/Malta', Text: '(UTC+01:00) Malta' },\n { Value: 'Europe/Monaco', Text: '(UTC+01:00) Monaco' },\n { Value: 'Africa/Ndjamena', Text: '(UTC+01:00) Ndjamena' },\n { Value: 'Europe/Oslo', Text: '(UTC+01:00) Oslo' },\n { Value: 'Europe/Paris', Text: '(UTC+01:00) Paris' },\n { Value: 'Europe/Rome', Text: '(UTC+01:00) Rome' },\n { Value: 'Europe/Stockholm', Text: '(UTC+01:00) Stockholm' },\n { Value: 'Europe/Tirane', Text: '(UTC+01:00) Tirane' },\n { Value: 'Africa/Tunis', Text: '(UTC+01:00) Tunis' },\n { Value: 'Europe/Vienna', Text: '(UTC+01:00) Vienna' },\n { Value: 'Europe/Warsaw', Text: '(UTC+01:00) Warsaw' },\n { Value: 'Europe/Zurich', Text: '(UTC+01:00) Zurich' },\n { Value: 'Asia/Amman', Text: '(UTC+02:00) Amman' },\n { Value: 'Europe/Athens', Text: '(UTC+02:00) Athens' },\n { Value: 'Asia/Beirut', Text: '(UTC+02:00) Beirut' },\n { Value: 'Europe/Bucharest', Text: '(UTC+02:00) Bucharest' },\n { Value: 'Africa/Cairo', Text: '(UTC+02:00) Cairo' },\n { Value: 'Europe/Chisinau', Text: '(UTC+02:00) Chisinau' },\n { Value: 'Asia/Damascus', Text: '(UTC+02:00) Damascus' },\n { Value: 'Asia/Gaza', Text: '(UTC+02:00) Gaza' },\n { Value: 'Europe/Helsinki', Text: '(UTC+02:00) Helsinki' },\n { Value: 'Asia/Jerusalem', Text: '(UTC+02:00) Jerusalem' },\n { Value: 'Africa/Johannesburg', Text: '(UTC+02:00) Johannesburg' },\n { Value: 'Africa/Khartoum', Text: '(UTC+02:00) Khartoum' },\n { Value: 'Europe/Kiev', Text: '(UTC+02:00) Kiev' },\n { Value: 'Africa/Maputo', Text: '(UTC+02:00) Maputo' },\n { Value: 'Europe/Kaliningrad', Text: '(UTC+02:00) Moscow-01 - Kaliningrad' },\n { Value: 'Asia/Nicosia', Text: '(UTC+02:00) Nicosia' },\n { Value: 'Europe/Riga', Text: '(UTC+02:00) Riga' },\n { Value: 'Europe/Sofia', Text: '(UTC+02:00) Sofia' },\n { Value: 'Europe/Tallinn', Text: '(UTC+02:00) Tallinn' },\n { Value: 'Africa/Tripoli', Text: '(UTC+02:00) Tripoli' },\n { Value: 'Europe/Vilnius', Text: '(UTC+02:00) Vilnius' },\n { Value: 'Africa/Windhoek', Text: '(UTC+02:00) Windhoek' },\n { Value: 'Asia/Baghdad', Text: '(UTC+03:00) Baghdad' },\n { Value: 'Europe/Istanbul', Text: '(UTC+03:00) Istanbul' },\n { Value: 'Europe/Minsk', Text: '(UTC+03:00) Minsk' },\n { Value: 'Europe/Moscow', Text: '(UTC+03:00) Moscow+00 - Moscow' },\n { Value: 'Africa/Nairobi', Text: '(UTC+03:00) Nairobi' },\n { Value: 'Asia/Qatar', Text: '(UTC+03:00) Qatar' },\n { Value: 'Asia/Riyadh', Text: '(UTC+03:00) Riyadh' },\n { Value: 'Antarctica/Syowa', Text: '(UTC+03:00) Syowa' },\n { Value: 'Asia/Tehran', Text: '(UTC+03:30) Tehran' },\n { Value: 'Asia/Baku', Text: '(UTC+04:00) Baku' },\n { Value: 'Asia/Dubai', Text: '(UTC+04:00) Dubai' },\n { Value: 'Indian/Mahe', Text: '(UTC+04:00) Mahe' },\n { Value: 'Indian/Mauritius', Text: '(UTC+04:00) Mauritius' },\n { Value: 'Europe/Samara', Text: '(UTC+04:00) Moscow+01 - Samara' },\n { Value: 'Indian/Reunion', Text: '(UTC+04:00) Reunion' },\n { Value: 'Asia/Tbilisi', Text: '(UTC+04:00) Tbilisi' },\n { Value: 'Asia/Yerevan', Text: '(UTC+04:00) Yerevan' },\n { Value: 'Asia/Kabul', Text: '(UTC+04:30) Kabul' },\n { Value: 'Asia/Aqtau', Text: '(UTC+05:00) Aqtau' },\n { Value: 'Asia/Aqtobe', Text: '(UTC+05:00) Aqtobe' },\n { Value: 'Asia/Ashgabat', Text: '(UTC+05:00) Ashgabat' },\n { Value: 'Asia/Dushanbe', Text: '(UTC+05:00) Dushanbe' },\n { Value: 'Asia/Karachi', Text: '(UTC+05:00) Karachi' },\n { Value: 'Indian/Kerguelen', Text: '(UTC+05:00) Kerguelen' },\n { Value: 'Indian/Maldives', Text: '(UTC+05:00) Maldives' },\n { Value: 'Antarctica/Mawson', Text: '(UTC+05:00) Mawson' },\n { Value: 'Asia/Yekaterinburg', Text: '(UTC+05:00) Moscow+02 - Yekaterinburg' },\n { Value: 'Asia/Tashkent', Text: '(UTC+05:00) Tashkent' },\n { Value: 'Asia/Colombo', Text: '(UTC+05:30) Colombo' },\n { Value: 'Asia/Kolkata', Text: '(UTC+05:30) India Standard Time' },\n { Value: 'Asia/Katmandu', Text: '(UTC+05:45) Katmandu' },\n { Value: 'Asia/Almaty', Text: '(UTC+06:00) Almaty' },\n { Value: 'Asia/Bishkek', Text: '(UTC+06:00) Bishkek' },\n { Value: 'Indian/Chagos', Text: '(UTC+06:00) Chagos' },\n { Value: 'Asia/Dhaka', Text: '(UTC+06:00) Dhaka' },\n { Value: 'Asia/Omsk', Text: '(UTC+06:00) Moscow+03 - Omsk' },\n { Value: 'Asia/Thimphu', Text: '(UTC+06:00) Thimphu' },\n { Value: 'Antarctica/Vostok', Text: '(UTC+06:00) Vostok' },\n { Value: 'Indian/Cocos', Text: '(UTC+06:30) Cocos' },\n { Value: 'Asia/Yangon', Text: '(UTC+06:30) Rangoon' },\n { Value: 'Asia/Bangkok', Text: '(UTC+07:00) Bangkok' },\n { Value: 'Indian/Christmas', Text: '(UTC+07:00) Christmas' },\n { Value: 'Antarctica/Davis', Text: '(UTC+07:00) Davis' },\n { Value: 'Asia/Saigon', Text: '(UTC+07:00) Hanoi' },\n { Value: 'Asia/Hovd', Text: '(UTC+07:00) Hovd' },\n { Value: 'Asia/Jakarta', Text: '(UTC+07:00) Jakarta' },\n { Value: 'Asia/Krasnoyarsk', Text: '(UTC+07:00) Moscow+04 - Krasnoyarsk' },\n { Value: 'Asia/Brunei', Text: '(UTC+08:00) Brunei' },\n { Value: 'Asia/Shanghai', Text: '(UTC+08:00) China Time - Beijing' },\n { Value: 'Asia/Choibalsan', Text: '(UTC+08:00) Choibalsan' },\n { Value: 'Asia/Hong_Kong', Text: '(UTC+08:00) Hong Kong' },\n { Value: 'Asia/Kuala_Lumpur', Text: '(UTC+08:00) Kuala Lumpur' },\n { Value: 'Asia/Macau', Text: '(UTC+08:00) Macau' },\n { Value: 'Asia/Makassar', Text: '(UTC+08:00) Makassar' },\n { Value: 'Asia/Manila', Text: '(UTC+08:00) Manila' },\n { Value: 'Asia/Irkutsk', Text: '(UTC+08:00) Moscow+05 - Irkutsk' },\n { Value: 'Asia/Singapore', Text: '(UTC+08:00) Singapore' },\n { Value: 'Asia/Taipei', Text: '(UTC+08:00) Taipei' },\n { Value: 'Asia/Ulaanbaatar', Text: '(UTC+08:00) Ulaanbaatar' },\n { Value: 'Australia/Perth', Text: '(UTC+08:00) Western Time - Perth' },\n { Value: 'Asia/Pyongyang', Text: '(UTC+08:30) Pyongyang' },\n { Value: 'Asia/Dili', Text: '(UTC+09:00) Dili' },\n { Value: 'Asia/Jayapura', Text: '(UTC+09:00) Jayapura' },\n { Value: 'Asia/Yakutsk', Text: '(UTC+09:00) Moscow+06 - Yakutsk' },\n { Value: 'Pacific/Palau', Text: '(UTC+09:00) Palau' },\n { Value: 'Asia/Seoul', Text: '(UTC+09:00) Seoul' },\n { Value: 'Asia/Tokyo', Text: '(UTC+09:00) Tokyo' },\n { Value: 'Australia/Darwin', Text: '(UTC+09:30) Central Time - Darwin' },\n { Value: 'Antarctica/DumontDUrville', Text: '(UTC+10:00) Dumont D\"Urville' },\n { Value: 'Australia/Brisbane', Text: '(UTC+10:00) Eastern Time - Brisbane' },\n { Value: 'Pacific/Guam', Text: '(UTC+10:00) Guam' },\n { Value: 'Asia/Vladivostok', Text: '(UTC+10:00) Moscow+07 - Vladivostok' },\n { Value: 'Pacific/Port_Moresby', Text: '(UTC+10:00) Port Moresby' },\n { Value: 'Pacific / Chuuk', Text: '(UTC+10:00) Truk' },\n { Value: 'Australia/Adelaide', Text: '(UTC+10:30) Central Time - Adelaide' },\n { Value: 'Antarctica/Casey', Text: '(UTC+11:00) Casey' },\n { Value: 'Australia/Hobart', Text: '(UTC+11:00) Eastern Time - Hobart' },\n { Value: 'Australia/Sydney', Text: '(UTC+11:00) Eastern Time - Melbourne, Sydney' },\n { Value: 'Pacific/Efate', Text: '(UTC+11:00) Efate' },\n { Value: 'Pacific/Guadalcanal', Text: '(UTC+11:00) Guadalcanal' },\n { Value: 'Pacific/Kosrae', Text: '(UTC+11:00) Kosrae' },\n { Value: 'Asia/Magadan', Text: '(UTC+11:00) Moscow+08 - Magadan' },\n { Value: 'Pacific / Norfolk', Text: '(UTC+11:00) Norfolk' },\n { Value: 'Pacific/Noumea', Text: '(UTC+11:00) Noumea' },\n { Value: 'Pacific/Pohnpei', Text: '(UTC+11:00) Ponape' },\n { Value: 'Pacific/Funafuti', Text: '(UTC+12:00) Funafuti' },\n { Value: 'Pacific/Kwajalein', Text: '(UTC+12:00) Kwajalein' },\n { Value: 'Pacific/Majuro', Text: '(UTC+12:00) Majuro' },\n { Value: 'Asia/Kamchatka', Text: '(UTC+12:00) Moscow+09 - Petropavlovsk - Kamchatskiy' },\n { Value: 'Pacific / Nauru', Text: '(UTC+12:00) Nauru' },\n { Value: 'Pacific/Tarawa', Text: '(UTC+12:00) Tarawa' },\n { Value: 'Pacific/Wake', Text: '(UTC+12:00) Wake' },\n { Value: 'Pacific/Wallis', Text: '(UTC+12:00) Wallis' },\n { Value: 'Pacific/Auckland', Text: '(UTC+13:00) Auckland' },\n { Value: 'Pacific/Enderbury', Text: '(UTC+13:00) Enderbury' },\n { Value: 'Pacific/Fakaofo', Text: '(UTC+13:00) Fakaofo' },\n { Value: 'Pacific/Fiji', Text: '(UTC+13:00) Fiji' },\n { Value: 'Pacific/Tongatapu', Text: '(UTC+13:00) Tongatapu' },\n { Value: 'Pacific/Apia', Text: '(UTC+14:00) Apia' },\n { Value: 'Pacific/Kiritimati', Text: '(UTC+14:00) Kiritimati' }\n];\n","/* eslint-disable max-len */\nimport { isNullOrUndefined, getDefaultDateObject, getValue, cldrData } from '@syncfusion/ej2-base';\nimport { MS_PER_DAY, addDays, resetTime, capitalizeFirstWord } from '../schedule/base/util';\nimport { Islamic, Gregorian } from '../common/calendar-util';\nimport { Timezone } from '../schedule/timezone/timezone';\n/**\n * Date Generator from Recurrence Rule\n */\n/**\n * Generate Summary from Recurrence Rule\n *\n * @param {string} rule Accepts the Recurrence rule\n * @param {L10n} localeObject Accepts the locale object\n * @param {string} locale Accepts the locale name\n * @param {CalendarType} calendarType Accepts the calendar type\n * @returns {string} Returns the summary string from given recurrence rule\n */\nexport function generateSummary(rule, localeObject, locale, calendarType) {\n if (calendarType === void 0) { calendarType = 'Gregorian'; }\n var ruleObject = extractObjectFromRule(rule);\n var summary = localeObject.getConstant(EVERY) + ' ';\n var cldrObj;\n var cldrObj1;\n var calendarMode = calendarType.toLowerCase();\n if (locale === 'en' || locale === 'en-US') {\n var nameSpace1 = 'months.stand-alone.abbreviated';\n var nameSpace = 'days.stand-alone.abbreviated';\n cldrObj1 = (getValue(nameSpace1, getDefaultDateObject(calendarMode)));\n cldrObj = (getValue(nameSpace, getDefaultDateObject(calendarMode)));\n }\n else {\n var nameSpace1 = 'main.' + locale + '.dates.calendars.' + calendarMode + '.months.stand-alone.abbreviated';\n var nameSpace = 'main.' + locale + '.dates.calendars.' + calendarMode + '.days.stand-alone.abbreviated';\n cldrObj1 =\n (getValue(nameSpace1, cldrData));\n cldrObj =\n (getValue(nameSpace, cldrData));\n }\n if (ruleObject.interval > 1) {\n summary += ruleObject.interval + ' ';\n }\n switch (ruleObject.freq) {\n case 'DAILY':\n summary += localeObject.getConstant(DAYS);\n break;\n case 'WEEKLY':\n summary += localeObject.getConstant(WEEKS) + ' ' + localeObject.getConstant(ON) + ' ';\n ruleObject.day.forEach(function (day, index) {\n summary += capitalizeFirstWord(getValue(DAYINDEXOBJECT[\"\" + day], cldrObj), 'single');\n summary += (((ruleObject.day.length - 1) === index) ? '' : ', ');\n });\n break;\n case 'MONTHLY':\n summary += localeObject.getConstant(MONTHS) + ' ' + localeObject.getConstant(ON) + ' ';\n summary += getMonthSummary(ruleObject, cldrObj, localeObject);\n break;\n case 'YEARLY':\n summary += localeObject.getConstant(YEARS) + ' ' + localeObject.getConstant(ON) + ' ';\n summary += capitalizeFirstWord(getValue((ruleObject.month[0]).toString(), cldrObj1), 'single') + ' ';\n summary += getMonthSummary(ruleObject, cldrObj, localeObject);\n break;\n }\n if (ruleObject.count) {\n summary += ', ' + (ruleObject.count) + ' ' + localeObject.getConstant(TIMES);\n }\n else if (ruleObject.until) {\n var tempDate = ruleObject.until;\n summary += ', ' + localeObject.getConstant(UNTIL)\n + ' ' + tempDate.getDate()\n + ' ' + capitalizeFirstWord(getValue((tempDate.getMonth() + 1).toString(), cldrObj1), 'single')\n + ' ' + tempDate.getFullYear();\n }\n return summary;\n}\n/**\n * Generates Month summary\n *\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @param {string[]} cldrObj Accepts the collections of month name from calendar\n * @param {L10n} localeObj Accepts the locale object\n * @returns {string} Returns the month summary string from given recurrence rule object\n * @private\n */\nfunction getMonthSummary(ruleObject, cldrObj, localeObj) {\n var summary = '';\n if (ruleObject.monthDay.length) {\n summary += ruleObject.monthDay[0];\n }\n else if (ruleObject.day) {\n var pos = ruleObject.setPosition - 1;\n summary += localeObj.getConstant(WEEKPOS[pos > -1 ? pos : (WEEKPOS.length - 1)])\n + ' ' + capitalizeFirstWord(getValue(DAYINDEXOBJECT[ruleObject.day[0]], cldrObj), 'single');\n }\n return summary;\n}\n/**\n * Generates the date collections from the given recurrence rule\n *\n * @param {Date} startDate Accepts the rule start date\n * @param {string} rule Accepts the recurrence rule\n * @param {string} excludeDate Accepts the exception dates in string format\n * @param {number} startDayOfWeek Accepts the start day index of week\n * @param {number} maximumCount Accepts the maximum number count to generate date collections\n * @param {Date} viewDate Accepts the current date instead of start date\n * @param {CalendarType} calendarMode Accepts the calendar type\n * @param {string} newTimezone Accepts the timezone name\n * @returns {number[]} Returns the collection of dates\n */\nexport function generate(startDate, rule, excludeDate, startDayOfWeek, maximumCount, viewDate, calendarMode, newTimezone) {\n if (maximumCount === void 0) { maximumCount = MAXOCCURRENCE; }\n if (viewDate === void 0) { viewDate = null; }\n if (calendarMode === void 0) { calendarMode = 'Gregorian'; }\n if (newTimezone === void 0) { newTimezone = null; }\n var ruleObject = extractObjectFromRule(rule);\n var cacheDate;\n calendarUtil = getCalendarUtil(calendarMode);\n var data = [];\n var modifiedDate = new Date(startDate.getTime());\n tempExcludeDate = [];\n var tempDate = isNullOrUndefined(excludeDate) ? [] : excludeDate.split(',');\n var tz = new Timezone();\n tempDate.forEach(function (content) {\n var parsedDate = getDateFromRecurrenceDateString(content);\n if (newTimezone) {\n parsedDate = tz.add(new Date(parsedDate.getTime()), newTimezone);\n }\n tempExcludeDate.push(new Date(parsedDate.getTime()).setHours(0, 0, 0, 0));\n });\n ruleObject.recExceptionCount = !isNullOrUndefined(ruleObject.count) ? tempExcludeDate.length : 0;\n if (viewDate && viewDate > startDate && !ruleObject.count) {\n tempViewDate = new Date(new Date(viewDate.getTime()).setHours(0, 0, 0));\n }\n else {\n tempViewDate = null;\n }\n if (!ruleObject.until && tempViewDate) {\n cacheDate = new Date(tempViewDate.getTime());\n cacheDate.setDate(tempViewDate.getDate() + maximumCount * (ruleObject.interval));\n ruleObject.until = cacheDate;\n }\n if (ruleObject.until && startDate > ruleObject.until) {\n return data;\n }\n maxOccurrence = maximumCount;\n setFirstDayOfWeek(DAYINDEX[parseInt(startDayOfWeek.toString(), 10)]);\n if (ruleObject.until) {\n var end = resetTime(ruleObject.until);\n ruleObject.until = new Date(end.getFullYear(), end.getMonth(), end.getDate(), 23, 59, 59);\n }\n switch (ruleObject.freq) {\n case 'DAILY':\n dailyType(modifiedDate, ruleObject.until, data, ruleObject);\n break;\n case 'WEEKLY':\n weeklyType(modifiedDate, ruleObject.until, data, ruleObject);\n break;\n case 'MONTHLY':\n monthlyType(modifiedDate, ruleObject.until, data, ruleObject);\n break;\n case 'YEARLY':\n yearlyType(modifiedDate, ruleObject.until, data, ruleObject);\n }\n return data;\n}\n/**\n * Generate date object from given date string\n *\n * @param {string} recDateString Accepts the exception date as string\n * @returns {Date} Returns the date from exception date string\n */\nexport function getDateFromRecurrenceDateString(recDateString) {\n return new Date(recDateString.substr(0, 4) +\n '-' + recDateString.substr(4, 2) +\n '-' + recDateString.substr(6, 5) +\n ':' + recDateString.substr(11, 2) +\n ':' + recDateString.substr(13));\n}\n/**\n * Internal method to handle exclude date\n *\n * @param {number[]} data Accepts the exception date collections\n * @param {number} date Accepts the new exclude date\n * @returns {void}\n * @private\n */\nfunction excludeDateHandler(data, date) {\n var zeroIndex = new Date(date).setHours(0, 0, 0, 0);\n if (tempExcludeDate.indexOf(zeroIndex) === -1 && (!tempViewDate || zeroIndex >= tempViewDate.getTime())) {\n data.push(date);\n }\n}\n/**\n * Internal method for get date count\n *\n * @param {Date} startDate Accepts the date\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {number} Returns the number of date count\n * @private\n */\nfunction getDateCount(startDate, ruleObject) {\n var count = maxOccurrence;\n if (ruleObject.count) {\n count = ruleObject.count;\n }\n else if (ruleObject.until) {\n if (ruleObject.freq === 'DAILY' || ruleObject.freq === 'WEEKLY') {\n count = Math.floor((ruleObject.until.getTime() - startDate.getTime()) / MS_PER_DAY) + 1;\n }\n else if (ruleObject.freq === 'MONTHLY' || ruleObject.freq === 'YEARLY') {\n count = Math.floor(((ruleObject.until.getMonth() + 12 * ruleObject.until.getFullYear()) -\n (startDate.getMonth() + 12 * startDate.getFullYear())) / ruleObject.interval) +\n (ruleObject.day.length > 1 ? (Math.floor((ruleObject.until.getTime() - startDate.getTime()) / MS_PER_DAY) + 1) : 1);\n if (ruleObject.freq === 'YEARLY') {\n count = ruleObject.month.length > 1 ? (count * ruleObject.month.length) : count;\n }\n }\n }\n return count;\n}\n/**\n * Internal method for daily type recurrence rule\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction dailyType(startDate, endDate, data, ruleObject) {\n var tempDate = new Date(startDate.getTime());\n var interval = ruleObject.interval;\n var expectedCount = getDateCount(startDate, ruleObject);\n var state;\n var expectedDays = ruleObject.day;\n while (compareDates(tempDate, endDate)) {\n state = true;\n state = validateRules(tempDate, ruleObject);\n if (state && (expectedDays.indexOf(DAYINDEX[tempDate.getDay()]) > -1 || expectedDays.length === 0)) {\n excludeDateHandler(data, tempDate.getTime());\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n break;\n }\n }\n tempDate.setDate(tempDate.getDate() + interval);\n if (tempDate.getHours() !== startDate.getHours()) {\n tempDate.setHours(startDate.getHours());\n }\n }\n}\n/**\n * Internal method for weekly type recurrence rule\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction weeklyType(startDate, endDate, data, ruleObject) {\n var tempDate = new Date(startDate.getTime());\n if (!ruleObject.day.length) {\n ruleObject.day.push(DAYINDEX[startDate.getDay()]);\n }\n var interval = ruleObject.interval;\n var expectedDays = ruleObject.day;\n var expectedCount = getDateCount(startDate, ruleObject);\n var weekState = true;\n var wkstIndex;\n var weekCollection = [];\n if (expectedDays.length > 1) {\n if (isNullOrUndefined(ruleObject.wkst) || ruleObject.wkst === '') {\n ruleObject.wkst = dayIndex[0];\n }\n wkstIndex = DAYINDEX.indexOf(ruleObject.wkst);\n while (compareDates(tempDate, endDate)) {\n var startDateDiff = DAYINDEX.indexOf(DAYINDEX[tempDate.getDay()]) - wkstIndex;\n startDateDiff = startDateDiff === -1 ? 6 : startDateDiff;\n var weekstartDate = addDays(tempDate, -startDateDiff);\n var weekendDate = addDays(weekstartDate, 6);\n var compareTempDate = new Date(tempDate.getTime());\n weekendDate = resetTime(weekendDate);\n compareTempDate = resetTime(compareTempDate);\n while (weekendDate >= compareTempDate) {\n if (expectedDays.indexOf(DAYINDEX[tempDate.getDay()]) > -1) {\n weekCollection.push([tempDate.getTime()]);\n }\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n break;\n }\n tempDate.setDate(tempDate.getDate() + 1);\n if (tempDate.getHours() !== startDate.getHours()) {\n tempDate.setHours(startDate.getHours());\n }\n compareTempDate = new Date(tempDate.getTime());\n compareTempDate = resetTime(compareTempDate);\n }\n tempDate.setDate(tempDate.getDate() - 1);\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n break;\n }\n tempDate.setDate((tempDate.getDate()) + 1 + ((interval - 1) * 7));\n insertDataCollection(weekCollection, weekState, startDate, endDate, data, ruleObject);\n weekCollection = [];\n }\n }\n else {\n tempDate = getStartDateForWeek(startDate, ruleObject.day);\n while (compareDates(tempDate, endDate)) {\n weekState = validateRules(tempDate, ruleObject);\n if (weekState && (expectedDays.indexOf(DAYINDEX[tempDate.getDay()]) > -1)) {\n excludeDateHandler(data, tempDate.getTime());\n }\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n break;\n }\n tempDate.setDate(tempDate.getDate() + (interval * 7));\n }\n insertDataCollection(weekCollection, weekState, startDate, endDate, data, ruleObject);\n weekCollection = [];\n }\n}\n/**\n * Internal method for monthly type recurrence rule\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction monthlyType(startDate, endDate, data, ruleObject) {\n // Set monthday value if BYDAY, BYMONTH and Month day property is not set based on start date\n if (!ruleObject.month.length && !ruleObject.day.length && !ruleObject.monthDay.length) {\n ruleObject.monthDay.push(startDate.getDate());\n if (ruleObject.freq === 'YEARLY') {\n ruleObject.month.push(startDate.getMonth() + 1);\n }\n }\n else if (ruleObject.month.length > 0 && !ruleObject.day.length && !ruleObject.monthDay.length) {\n ruleObject.monthDay.push(startDate.getDate());\n }\n var ruleType = validateMonthlyRuleType(ruleObject);\n switch (ruleType) {\n case 'day':\n switch (ruleObject.freq) {\n case 'MONTHLY':\n monthlyDayTypeProcessforMonthFreq(startDate, endDate, data, ruleObject);\n break;\n case 'YEARLY':\n monthlyDayTypeProcess(startDate, endDate, data, ruleObject);\n break;\n }\n break;\n case 'both':\n case 'date':\n switch (ruleObject.freq) {\n case 'MONTHLY':\n monthlyDateTypeProcessforMonthFreq(startDate, endDate, data, ruleObject);\n break;\n case 'YEARLY':\n monthlyDateTypeProcess(startDate, endDate, data, ruleObject);\n break;\n }\n break;\n }\n}\n/**\n * Internal method for yearly type recurrence rule\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction yearlyType(startDate, endDate, data, ruleObject) {\n var typeValue = checkYearlyType(ruleObject);\n switch (typeValue) {\n case 'MONTH':\n monthlyType(startDate, endDate, data, ruleObject);\n break;\n case 'WEEKNO':\n processWeekNo(startDate, endDate, data, ruleObject);\n break;\n case 'YEARDAY':\n processYearDay(startDate, endDate, data, ruleObject);\n break;\n }\n}\n/**\n * Internal method for process week no\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction processWeekNo(startDate, endDate, data, ruleObject) {\n var stDate = calendarUtil.getYearLastDate(startDate, 0);\n var tempDate;\n var expectedCount = getDateCount(startDate, ruleObject);\n var state;\n var startDay;\n var firstWeekSpan;\n var weekNos = ruleObject.weekNo;\n var weekNo;\n var maxDate;\n var minDate;\n var weekCollection = [];\n var expectedDays = ruleObject.day;\n while (compareDates(stDate, endDate)) {\n startDay = dayIndex.indexOf(DAYINDEX[stDate.getDay()]);\n firstWeekSpan = (6 - startDay) + 1;\n for (var index = 0; index < weekNos.length; index++) {\n weekNo = weekNos[parseInt(index.toString(), 10)];\n weekNo = (weekNo > 0) ? weekNo : 53 + weekNo + 1;\n maxDate = (weekNo === 1) ? firstWeekSpan : firstWeekSpan + ((weekNo - 1) * 7);\n minDate = (weekNo === 1) ? firstWeekSpan - 7 : firstWeekSpan + ((weekNo - 2) * 7);\n while (minDate < maxDate) {\n tempDate = new Date(stDate.getTime() + (MS_PER_DAY * minDate));\n if (expectedDays.length === 0 || expectedDays.indexOf(DAYINDEX[tempDate.getDay()]) > -1) {\n if (isNullOrUndefined(ruleObject.setPosition)) {\n insertDateCollection(state, startDate, endDate, data, ruleObject, tempDate.getTime());\n }\n else {\n weekCollection.push([tempDate.getTime()]);\n }\n }\n minDate++;\n }\n }\n if (!isNullOrUndefined(ruleObject.setPosition)) {\n insertDatasIntoExistingCollection(weekCollection, state, startDate, endDate, data, ruleObject);\n }\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n return;\n }\n stDate = calendarUtil.getYearLastDate(tempDate, ruleObject.interval);\n weekCollection = [];\n }\n}\n/**\n * Internal method for process year day\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction processYearDay(startDate, endDate, data, ruleObject) {\n var stDate = calendarUtil.getYearLastDate(startDate, 0);\n var tempDate;\n var expectedCount = getDateCount(startDate, ruleObject);\n var state;\n var dateCollection = [];\n var date;\n var expectedDays = ruleObject.day;\n while (compareDates(stDate, endDate)) {\n for (var index = 0; index < ruleObject.yearDay.length; index++) {\n date = ruleObject.yearDay[parseInt(index.toString(), 10)];\n tempDate = new Date(stDate.getTime());\n if ((date === calendarUtil.getLeapYearDaysCount() || date === -calendarUtil.getLeapYearDaysCount()) &&\n (!calendarUtil.isLeapYear(calendarUtil.getFullYear(tempDate), 1))) {\n tempDate.setDate(tempDate.getDate() + 1);\n continue;\n }\n tempDate.setDate(tempDate.getDate() + ((date < 0) ?\n calendarUtil.getYearDaysCount(tempDate, 1) + 1 + date : date));\n if (expectedDays.length === 0 || expectedDays.indexOf(DAYINDEX[tempDate.getDay()]) > -1) {\n if (ruleObject.setPosition == null) {\n insertDateCollection(state, startDate, endDate, data, ruleObject, tempDate.getTime());\n }\n else {\n dateCollection.push([tempDate.getTime()]);\n }\n }\n }\n if (!isNullOrUndefined(ruleObject.setPosition)) {\n insertDatasIntoExistingCollection(dateCollection, state, startDate, endDate, data, ruleObject);\n }\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n return;\n }\n stDate = calendarUtil.getYearLastDate(tempDate, ruleObject.interval);\n dateCollection = [];\n }\n}\n/**\n * Internal method to check yearly type\n *\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {YearRuleType} Returns the Yearly rule type object\n * @private\n */\nfunction checkYearlyType(ruleObject) {\n if (ruleObject.yearDay.length) {\n return 'YEARDAY';\n }\n else if (ruleObject.weekNo.length) {\n return 'WEEKNO';\n }\n return 'MONTH';\n}\n/**\n * Internal method to initialize recurrence rule variables\n *\n * @param {Date} startDate Accepts the start date\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {RuleData} Return the rule data object\n * @private\n */\nfunction initializeRecRuleVariables(startDate, ruleObject) {\n var ruleData = {\n monthCollection: [],\n index: 0,\n tempDate: new Date(startDate.getTime()),\n mainDate: new Date(startDate.getTime()),\n expectedCount: getDateCount(startDate, ruleObject),\n monthInit: 0,\n dateCollection: []\n };\n if (ruleObject.month.length) {\n calendarUtil.setMonth(ruleData.tempDate, ruleObject.month[0], ruleData.tempDate.getDate());\n }\n return ruleData;\n}\n/**\n * Internal method for process monthly date type recurrence rule\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction monthlyDateTypeProcess(startDate, endDate, data, ruleObject) {\n if (ruleObject.month.length) {\n monthlyDateTypeProcessforMonthFreq(startDate, endDate, data, ruleObject);\n return;\n }\n var ruleData = initializeRecRuleVariables(startDate, ruleObject);\n var currentMonthDate;\n ruleData.tempDate = ruleData.mainDate = calendarUtil.getMonthStartDate(ruleData.tempDate);\n while (compareDates(ruleData.tempDate, endDate)) {\n currentMonthDate = new Date(ruleData.tempDate.getTime());\n while (calendarUtil.isSameYear(currentMonthDate, ruleData.tempDate) &&\n (ruleData.expectedCount && (data.length + ruleObject.recExceptionCount) <= ruleData.expectedCount)) {\n if (ruleObject.month.length === 0 || (ruleObject.month.length > 0\n && !calendarUtil.checkMonth(ruleData.tempDate, ruleObject.month))) {\n processDateCollectionForByMonthDay(ruleObject, ruleData, endDate, false);\n ruleData.beginDate = new Date(ruleData.tempDate.getTime());\n ruleData.monthInit = setNextValidDate(ruleData.tempDate, ruleObject, ruleData.monthInit, ruleData.beginDate);\n }\n else {\n calendarUtil.setValidDate(ruleData.tempDate, 1, 1);\n ruleData.tempDate = getStartDateForWeek(ruleData.tempDate, ruleObject.day);\n break;\n }\n }\n ruleData.tempDate.setFullYear(currentMonthDate.getFullYear(), currentMonthDate.getMonth(), currentMonthDate.getDate());\n insertDataCollection(ruleData.dateCollection, ruleData.state, startDate, endDate, data, ruleObject);\n if (calendarUtil.isLastMonth(ruleData.tempDate)) {\n calendarUtil.setValidDate(ruleData.tempDate, 1, 1);\n ruleData.tempDate = getStartDateForWeek(ruleData.tempDate, ruleObject.day);\n }\n if (ruleData.expectedCount && (data.length + ruleObject.recExceptionCount) >= ruleData.expectedCount) {\n return;\n }\n ruleData.tempDate.setFullYear(ruleData.tempDate.getFullYear() + ruleObject.interval - 1);\n ruleData.tempDate = getStartDateForWeek(ruleData.tempDate, ruleObject.day);\n ruleData.monthInit = setNextValidDate(ruleData.tempDate, ruleObject, ruleData.monthInit, ruleData.beginDate);\n ruleData.dateCollection = [];\n }\n}\n/**\n * Internal method for process monthly date type with month frequency from recurrence rule\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction monthlyDateTypeProcessforMonthFreq(startDate, endDate, data, ruleObject) {\n var ruleData = initializeRecRuleVariables(startDate, ruleObject);\n ruleData.tempDate = ruleData.mainDate = calendarUtil.getMonthStartDate(ruleData.tempDate);\n if (((ruleObject.freq === 'MONTHLY' && ruleObject.interval === 12) || (ruleObject.freq === 'YEARLY')) &&\n calendarUtil.getMonthDaysCount(startDate) < ruleObject.monthDay[0]) {\n return;\n }\n while (compareDates(ruleData.tempDate, endDate)) {\n ruleData.beginDate = new Date(ruleData.tempDate.getTime());\n processDateCollectionForByMonthDay(ruleObject, ruleData, endDate, true, startDate, data);\n if (!isNullOrUndefined(ruleObject.setPosition)) {\n insertDatasIntoExistingCollection(ruleData.dateCollection, ruleData.state, startDate, endDate, data, ruleObject);\n }\n if (ruleData.expectedCount && (data.length + ruleObject.recExceptionCount) >= ruleData.expectedCount) {\n return;\n }\n ruleData.monthInit = setNextValidDate(ruleData.tempDate, ruleObject, ruleData.monthInit, ruleData.beginDate);\n ruleData.dateCollection = [];\n }\n}\n/**\n * To process date collection for Monthly & Yearly based on BYMONTH Day property\n *\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @param {RuleData} recRuleVariables Accepts the rule data\n * @param {Date} endDate Accepts the end date\n * @param {boolean} isByMonth Accepts the boolean to validate either month or not\n * @param {Date} startDate Accepts the start date\n * @param {number[]} data Accepts the collection of dates\n * @returns {void}\n * @private\n */\nfunction processDateCollectionForByMonthDay(ruleObject, recRuleVariables, endDate, isByMonth, startDate, data) {\n for (var index = 0; index < ruleObject.monthDay.length; index++) {\n recRuleVariables.date = ruleObject.monthDay[parseInt(index.toString(), 10)];\n recRuleVariables.tempDate = calendarUtil.getMonthStartDate(recRuleVariables.tempDate);\n var maxDate = calendarUtil.getMonthDaysCount(recRuleVariables.tempDate);\n recRuleVariables.date = recRuleVariables.date > 0 ? recRuleVariables.date : (maxDate + recRuleVariables.date + 1);\n if (validateProperDate(recRuleVariables.tempDate, recRuleVariables.date, recRuleVariables.mainDate)\n && (recRuleVariables.date > 0)) {\n calendarUtil.setDate(recRuleVariables.tempDate, recRuleVariables.date);\n if (endDate && recRuleVariables.tempDate > endDate) {\n return;\n }\n if (ruleObject.day.length === 0 || ruleObject.day.indexOf(DAYINDEX[recRuleVariables.tempDate.getDay()]) > -1) {\n if (isByMonth && isNullOrUndefined(ruleObject.setPosition) && (recRuleVariables.expectedCount\n && (data.length + ruleObject.recExceptionCount) < recRuleVariables.expectedCount)) {\n insertDateCollection(recRuleVariables.state, startDate, endDate, data, ruleObject, recRuleVariables.tempDate.getTime());\n }\n else {\n recRuleVariables.dateCollection.push([recRuleVariables.tempDate.getTime()]);\n }\n }\n }\n }\n}\n/**\n * Internal method to set next valid date\n *\n * @param {Date} tempDate Accepts the date\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @param {number} monthInit Accepts the initial month\n * @param {Date} beginDate Accepts the initial date\n * @param {number} interval Accepts the interval duration\n * @returns {number} Returnx the next valid date\n * @private\n */\nfunction setNextValidDate(tempDate, ruleObject, monthInit, beginDate, interval) {\n if (beginDate === void 0) { beginDate = null; }\n var monthData = beginDate ? beginDate.getMonth() : 0;\n var startDate = calendarUtil.getMonthStartDate(tempDate);\n interval = isNullOrUndefined(interval) ? ruleObject.interval : interval;\n tempDate.setFullYear(startDate.getFullYear());\n tempDate.setMonth(startDate.getMonth());\n tempDate.setDate(startDate.getDate());\n if (ruleObject.month.length) {\n monthInit++;\n monthInit = monthInit % ruleObject.month.length;\n calendarUtil.setMonth(tempDate, ruleObject.month[parseInt(monthInit.toString(), 10)], 1);\n if (monthInit === 0) {\n calendarUtil.addYears(tempDate, interval, ruleObject.month[0]);\n }\n }\n else {\n if (beginDate && (beginDate.getFullYear() < tempDate.getFullYear())) {\n monthData = tempDate.getMonth() - 1;\n }\n calendarUtil.setValidDate(tempDate, interval, 1, monthData, beginDate);\n }\n return monthInit;\n}\n/**\n * To get month collection when BYDAY property having more than one value in list.\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction getMonthCollection(startDate, endDate, data, ruleObject) {\n var expectedDays = ruleObject.day;\n var tempDate = new Date(startDate.getTime());\n tempDate = calendarUtil.getMonthStartDate(tempDate);\n var monthCollection = [];\n var dateCollection = [];\n var dates = [];\n var index;\n var state;\n var expectedCount = getDateCount(startDate, ruleObject);\n var monthInit = 0;\n var beginDate;\n if (ruleObject.month.length) {\n calendarUtil.setMonth(tempDate, ruleObject.month[0], 1);\n }\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n while (compareDates(tempDate, endDate)\n && (expectedCount && (data.length + ruleObject.recExceptionCount) < expectedCount)) {\n var currentMonthDate = new Date(tempDate.getTime());\n var isHavingNumber = expectedDays.map(function (item) { return HASNUMBER.test(item); });\n if (isHavingNumber.indexOf(true) > -1) {\n for (var j = 0; j <= expectedDays.length - 1; j++) {\n var expectedDaysArray = expectedDays[parseInt(j.toString(), 10)].match(SPLITNUMBERANDSTRING);\n var position = parseInt(expectedDaysArray[0], 10);\n tempDate = new Date(tempDate.getTime());\n tempDate = calendarUtil.getMonthStartDate(tempDate);\n tempDate = getStartDateForWeek(tempDate, expectedDays);\n currentMonthDate.setFullYear(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate());\n while (calendarUtil.isSameYear(currentMonthDate, tempDate) && calendarUtil.isSameMonth(currentMonthDate, tempDate)) {\n if (expectedDaysArray[expectedDaysArray.length - 1] === DAYINDEX[currentMonthDate.getDay()]) {\n monthCollection.push([currentMonthDate.getTime()]);\n }\n currentMonthDate.setDate(currentMonthDate.getDate() + (1));\n }\n currentMonthDate.setDate(currentMonthDate.getDate() - (1));\n if (expectedDaysArray[0].indexOf('-') > -1) {\n index = monthCollection.length - (-1 * position);\n }\n else {\n index = position - 1;\n }\n index = isNaN(index) ? 0 : index;\n if (monthCollection.length > 0) {\n if (isNullOrUndefined(ruleObject.setPosition)) {\n insertDatasIntoExistingCollection(monthCollection, state, startDate, endDate, data, ruleObject, index);\n }\n else {\n dateCollection = [(filterDateCollectionByIndex(monthCollection, index, dates))];\n }\n }\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n return;\n }\n monthCollection = [];\n }\n if (!isNullOrUndefined(ruleObject.setPosition)) {\n insertDateCollectionBasedonBySetPos(dateCollection, state, startDate, endDate, data, ruleObject);\n dates = [];\n }\n monthInit = setNextValidDate(tempDate, ruleObject, monthInit, beginDate);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n monthCollection = [];\n }\n else {\n var weekCollection = [];\n var dayCycleData = processWeekDays(expectedDays);\n currentMonthDate.setFullYear(tempDate.getFullYear(), tempDate.getMonth(), tempDate.getDate());\n var initialDate = new Date(tempDate.getTime());\n beginDate = new Date(tempDate.getTime());\n while (calendarUtil.isSameMonth(initialDate, tempDate)) {\n weekCollection.push(tempDate.getTime());\n if (expectedDays.indexOf(DAYINDEX[tempDate.getDay()]) > -1) {\n monthCollection.push(weekCollection);\n weekCollection = [];\n }\n tempDate.setDate(tempDate.getDate()\n + dayCycleData[DAYINDEX[tempDate.getDay()]]);\n }\n index = ((ruleObject.setPosition < 1) ? (monthCollection.length + ruleObject.setPosition) : ruleObject.setPosition - 1);\n if (isNullOrUndefined(ruleObject.setPosition)) {\n index = 0;\n var datas = [];\n for (var week = 0; week < monthCollection.length; week++) {\n for (var row = 0; row < monthCollection[parseInt(week.toString(), 10)].length; row++) {\n datas.push(monthCollection[parseInt(week.toString(), 10)][parseInt(row.toString(), 10)]);\n }\n }\n monthCollection = [datas];\n }\n if (monthCollection.length > 0) {\n insertDatasIntoExistingCollection(monthCollection, state, startDate, endDate, data, ruleObject, index);\n }\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n return;\n }\n monthInit = setNextValidDate(tempDate, ruleObject, monthInit, beginDate);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n monthCollection = [];\n }\n }\n}\n/**\n * To process monday day type for FREQ=MONTHLY\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction monthlyDayTypeProcessforMonthFreq(startDate, endDate, data, ruleObject) {\n var expectedDays = ruleObject.day;\n // When BYDAY property having more than 1 value.\n if (expectedDays.length > 1) {\n getMonthCollection(startDate, endDate, data, ruleObject);\n return;\n }\n var tempDate = new Date(startDate.getTime());\n var expectedCount = getDateCount(startDate, ruleObject);\n var monthCollection = [];\n var beginDate;\n var monthInit = 0;\n tempDate = calendarUtil.getMonthStartDate(tempDate);\n if (ruleObject.month.length) {\n calendarUtil.setMonth(tempDate, ruleObject.month[0], 1);\n }\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n while (compareDates(tempDate, endDate) && (expectedCount && (data.length + ruleObject.recExceptionCount) < expectedCount)) {\n beginDate = new Date(tempDate.getTime());\n var currentMonthDate = new Date(tempDate.getTime());\n while (calendarUtil.isSameMonth(tempDate, currentMonthDate)) {\n monthCollection.push([currentMonthDate.getTime()]);\n currentMonthDate.setDate(currentMonthDate.getDate() + (7));\n }\n // To filter date collection based on BYDAY Index, then BYSETPOS and to insert datas into existing collection\n insertDateCollectionBasedonIndex(monthCollection, startDate, endDate, data, ruleObject);\n monthInit = setNextValidDate(tempDate, ruleObject, monthInit, beginDate);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n monthCollection = [];\n }\n}\n/**\n * To process monday day type for FREQ=YEARLY\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction monthlyDayTypeProcess(startDate, endDate, data, ruleObject) {\n var expectedDays = ruleObject.day;\n var isHavingNumber = expectedDays.map(function (item) { return HASNUMBER.test(item); });\n // If BYDAY property having more than 1 value in list\n if (expectedDays.length > 1 && isHavingNumber.indexOf(true) > -1) {\n processDateCollectionforByDayWithInteger(startDate, endDate, data, ruleObject);\n return;\n }\n else if (ruleObject.month.length && expectedDays.length === 1 && isHavingNumber.indexOf(true) > -1) {\n monthlyDayTypeProcessforMonthFreq(startDate, endDate, data, ruleObject);\n return;\n }\n var tempDate = new Date(startDate.getTime());\n var currentMonthDate;\n var expectedCount = getDateCount(startDate, ruleObject);\n var interval = ruleObject.interval;\n var monthCollection = [];\n if (ruleObject.month.length) {\n calendarUtil.setMonth(tempDate, ruleObject.month[0], tempDate.getDate());\n }\n // Set the date as start date of the yeear if yearly freq having ByDay property alone\n if (isNullOrUndefined(ruleObject.setPosition) && ruleObject.month.length === 0 && ruleObject.weekNo.length === 0) {\n tempDate.setFullYear(startDate.getFullYear(), 0, 1);\n }\n tempDate = calendarUtil.getMonthStartDate(tempDate);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n while (compareDates(tempDate, endDate)) {\n currentMonthDate = new Date(tempDate.getTime());\n while (calendarUtil.isSameYear(currentMonthDate, tempDate) &&\n (expectedCount && (data.length + ruleObject.recExceptionCount) <= expectedCount)) {\n currentMonthDate = new Date(tempDate.getTime());\n while (calendarUtil.isSameYear(currentMonthDate, tempDate)) {\n if (ruleObject.month.length === 0 || (ruleObject.month.length > 0\n && !calendarUtil.checkMonth(tempDate, ruleObject.month))) {\n if (expectedDays.length > 1) {\n if (calendarUtil.compareMonth(currentMonthDate, tempDate)) {\n calendarUtil.setValidDate(tempDate, 1, 1);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n break;\n }\n if (expectedDays.indexOf(DAYINDEX[currentMonthDate.getDay()]) > -1) {\n monthCollection.push([currentMonthDate.getTime()]);\n }\n currentMonthDate.setDate(currentMonthDate.getDate() + (1));\n }\n else {\n // If BYDAY property having 1 value in list\n if (currentMonthDate.getFullYear() > tempDate.getFullYear()) {\n calendarUtil.setValidDate(tempDate, 1, 1);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n break;\n }\n var newstr = getDayString(expectedDays[0]);\n if (DAYINDEX[currentMonthDate.getDay()] === newstr\n && new Date(currentMonthDate.getFullYear(), currentMonthDate.getMonth(), 0)\n > new Date(startDate.getFullYear())) {\n monthCollection.push([currentMonthDate.getTime()]);\n }\n currentMonthDate.setDate(currentMonthDate.getDate() + (7));\n }\n }\n else {\n calendarUtil.setValidDate(tempDate, 1, 1);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n break;\n }\n }\n }\n tempDate.setFullYear(currentMonthDate.getFullYear(), currentMonthDate.getMonth(), currentMonthDate.getDate());\n // To filter date collection based on BYDAY Index, then BYSETPOS and to insert datas into existing collection\n insertDateCollectionBasedonIndex(monthCollection, startDate, endDate, data, ruleObject);\n if (calendarUtil.isLastMonth(tempDate)) {\n calendarUtil.setValidDate(tempDate, 1, 1);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n }\n tempDate.setFullYear(tempDate.getFullYear() + interval - 1);\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n return;\n }\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n monthCollection = [];\n }\n}\n/**\n * To process the recurrence rule when BYDAY property having values with integer\n *\n * @param {Date} startDate Accepts the strat date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of dates\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction processDateCollectionforByDayWithInteger(startDate, endDate, data, ruleObject) {\n var expectedDays = ruleObject.day;\n var expectedCount = getDateCount(startDate, ruleObject);\n var tempDate = new Date(startDate.getTime());\n var interval = ruleObject.interval;\n var monthCollection = [];\n var dateCollection = [];\n var index;\n var state;\n var monthInit = 0;\n var currentMonthDate;\n var currentDate;\n var beginDate;\n tempDate = calendarUtil.getMonthStartDate(tempDate);\n var datas = [];\n if (ruleObject.month.length) {\n calendarUtil.setMonth(tempDate, ruleObject.month[0], 1);\n }\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n while (compareDates(tempDate, endDate)) {\n currentMonthDate = new Date(tempDate.getTime());\n for (var i = 0; i <= ruleObject.month.length; i++) {\n for (var j = 0; j <= expectedDays.length - 1; j++) {\n tempDate = calendarUtil.getMonthStartDate(tempDate);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n monthCollection = [];\n while (calendarUtil.isSameYear(currentMonthDate, tempDate) &&\n (expectedCount && (data.length + ruleObject.recExceptionCount) <= expectedCount)) {\n while (calendarUtil.isSameYear(currentMonthDate, tempDate)) {\n currentMonthDate = new Date(tempDate.getTime());\n if (ruleObject.month.length === 0 ||\n (ruleObject.month.length > 0 && ruleObject.month[parseInt(i.toString(), 10)] === calendarUtil.getMonth(currentMonthDate))) {\n var expectedDaysArray = expectedDays[parseInt(j.toString(), 10)].match(SPLITNUMBERANDSTRING);\n var position = parseInt(expectedDaysArray[0], 10);\n currentDate = new Date(tempDate.getTime());\n while (calendarUtil.isSameYear(currentDate, tempDate)\n && calendarUtil.isSameMonth(currentDate, tempDate)) {\n if (expectedDaysArray[expectedDaysArray.length - 1] === DAYINDEX[currentDate.getDay()]) {\n monthCollection.push([currentDate.getTime()]);\n }\n currentDate.setDate(currentDate.getDate() + (1));\n }\n currentDate.setDate(currentDate.getDate() - (1));\n if (expectedDaysArray[0].indexOf('-') > -1) {\n index = monthCollection.length - (-1 * position);\n }\n else {\n index = position - 1;\n }\n index = isNaN(index) ? 0 : index;\n }\n monthInit = setNextValidDate(tempDate, ruleObject, monthInit, beginDate, 1);\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n }\n }\n tempDate = j === 0 && currentDate ? new Date(currentDate.getTime()) : new Date(currentMonthDate.getTime());\n if (monthCollection.length > 0) {\n if (isNullOrUndefined(ruleObject.setPosition)) {\n insertDatasIntoExistingCollection(monthCollection, state, startDate, endDate, data, ruleObject, index);\n }\n else {\n dateCollection = [(filterDateCollectionByIndex(monthCollection, index, datas))];\n }\n }\n if (expectedCount && (data.length + ruleObject.recExceptionCount) >= expectedCount) {\n return;\n }\n }\n }\n if (!isNullOrUndefined(ruleObject.setPosition)) {\n insertDateCollectionBasedonBySetPos(dateCollection, state, startDate, endDate, data, ruleObject);\n datas = [];\n }\n if (calendarUtil.isLastMonth(tempDate)) {\n calendarUtil.setValidDate(tempDate, 1, 1);\n tempDate.setFullYear(tempDate.getFullYear() + interval - 1);\n }\n else {\n tempDate.setFullYear(tempDate.getFullYear() + interval);\n }\n tempDate = getStartDateForWeek(tempDate, ruleObject.day);\n if (ruleObject.month.length) {\n calendarUtil.setMonth(tempDate, ruleObject.month[0], tempDate.getDate());\n }\n }\n}\n/**\n * To get recurrence collection if BYSETPOS is null\n *\n * @param {number[]} monthCollection Accepts the month collection dates\n * @param {string[]} expectedDays Accepts the exception dates\n * @returns {RuleData} Returns the rule data object\n * @private\n */\nfunction getRecurrenceCollection(monthCollection, expectedDays) {\n var index;\n var recurrenceCollectionObject = { monthCollection: [], index: 0 };\n if (expectedDays.length === 1) {\n // To split numeric value from BYDAY property value\n var expectedDaysArrays = expectedDays[0].match(SPLITNUMBERANDSTRING);\n var arrPosition = void 0;\n if (expectedDaysArrays.length > 1) {\n arrPosition = parseInt(expectedDaysArrays[0], 10);\n index = ((arrPosition < 1) ? (monthCollection.length + arrPosition) : arrPosition - 1);\n }\n else {\n index = 0;\n monthCollection = getDateCollectionforBySetPosNull(monthCollection);\n }\n }\n else {\n index = 0;\n monthCollection = getDateCollectionforBySetPosNull(monthCollection);\n }\n recurrenceCollectionObject.monthCollection = monthCollection;\n recurrenceCollectionObject.index = index;\n return recurrenceCollectionObject;\n}\n/**\n * Internal method to process the data collections\n *\n * @param {number[]} dateCollection Accepts the date collections\n * @param {boolean} state Accepts the state\n * @param {Date} startDate Accepts the start date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of numbers\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction insertDataCollection(dateCollection, state, startDate, endDate, data, ruleObject) {\n var index = ((ruleObject.setPosition < 1) ?\n (dateCollection.length + ruleObject.setPosition) : ruleObject.setPosition - 1);\n if (isNullOrUndefined(ruleObject.setPosition)) {\n index = 0;\n dateCollection = getDateCollectionforBySetPosNull(dateCollection);\n }\n if (dateCollection.length > 0) {\n insertDatasIntoExistingCollection(dateCollection, state, startDate, endDate, data, ruleObject, index);\n }\n}\n/**\n * To process month collection if BYSETPOS is null\n *\n * @param {number[]} monthCollection Accepts the month date collections\n * @returns {number[]} Returns the month date collections\n * @private\n */\nfunction getDateCollectionforBySetPosNull(monthCollection) {\n var datas = [];\n for (var week = 0; week < monthCollection.length; week++) {\n for (var row = 0; row < monthCollection[parseInt(week.toString(), 10)].length; row++) {\n datas.push(new Date(monthCollection[parseInt(week.toString(), 10)][parseInt(row.toString(), 10)]).getTime());\n }\n }\n monthCollection = datas.length > 0 ? [datas] : [];\n return monthCollection;\n}\n/**\n * To filter date collection based on BYDAY Index, then BYSETPOS and to insert datas into existing collection\n *\n * @param {number[]} monthCollection Accepts the month date collections\n * @param {Date} startDate Accepts the start date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the date collections\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction insertDateCollectionBasedonIndex(monthCollection, startDate, endDate, data, ruleObject) {\n var expectedDays = ruleObject.day;\n var state;\n var datas = [];\n var dateCollection = [];\n var recurrenceCollections = getRecurrenceCollection(monthCollection, expectedDays);\n monthCollection = recurrenceCollections.monthCollection;\n var index = recurrenceCollections.index;\n if (ruleObject.setPosition != null) {\n dateCollection = [(filterDateCollectionByIndex(monthCollection, index, datas))];\n insertDateCollectionBasedonBySetPos(dateCollection, state, startDate, endDate, data, ruleObject);\n }\n else {\n if (monthCollection.length > 0) {\n insertDatasIntoExistingCollection(monthCollection, state, startDate, endDate, data, ruleObject, index);\n }\n }\n datas = [];\n}\n/**\n * To filter date collection when BYDAY property having values with number\n *\n * @param {number[]} monthCollection Accepts the date collections\n * @param {number} index Accepts the index of date collections\n * @param {number[]} datas Accepts the collection of dates\n * @returns {number[]} Returns the collection of dates\n * @private\n */\nfunction filterDateCollectionByIndex(monthCollection, index, datas) {\n for (var week = 0; week < monthCollection[parseInt(index.toString(), 10)].length; week++) {\n datas.push(monthCollection[parseInt(index.toString(), 10)][parseInt(week.toString(), 10)]);\n }\n return datas;\n}\n/**\n * To insert processed date collection in final array element\n *\n * @param {boolean} state Accepts the state of the recurrence rule\n * @param {Date} startDate Accepts the start date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of date\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @param {number} dayData Accepts the date index\n * @returns {void}\n * @private\n */\nfunction insertDateCollection(state, startDate, endDate, data, ruleObject, dayData) {\n var expectedCount = getDateCount(startDate, ruleObject);\n var chDate = new Date(dayData);\n state = validateRules(chDate, ruleObject);\n if ((chDate >= startDate) && compareDates(chDate, endDate) && state\n && expectedCount && (data.length + ruleObject.recExceptionCount) < expectedCount) {\n excludeDateHandler(data, dayData);\n }\n}\n/**\n * Return the last week number of given month and year.\n *\n * @param {number} year Accepts the Year in number format\n * @param {number} startDayOfWeek Accepts the start date\n * @param {number[]} monthCollection Accepts the collection of dates\n * @param {number} week Accepts the week in number format\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {number} returns week number\n * @private\n */\nfunction weekCount(year, startDayOfWeek, monthCollection, week, ruleObject) {\n var firstDayOfWeek = startDayOfWeek || 0;\n var firstOfMonth = new Date(year, ruleObject.month[0] - 1, 1);\n var lastOfMonth = new Date(year, ruleObject.month[0], 0);\n var numberOfDaysInMonth = lastOfMonth.getDate();\n var firstWeekDay = (firstOfMonth.getDay() - firstDayOfWeek + 7) % 7;\n var used = firstWeekDay + numberOfDaysInMonth;\n var count = Math.ceil(used / 7) - 1;\n var dayData = monthCollection[parseInt(week.toString(), 10)][parseInt(count.toString(), 10)];\n var chDate = new Date(dayData);\n var state = validateRules(chDate, ruleObject);\n return (state) ? count : count - 1;\n}\n/**\n * To process date collection based on Byset position after process the collection based on BYDAY property value index: EX:BYDAY=1SUm-1SU\n *\n * @param {number[]} monthCollection Accepts the collection of dates\n * @param {boolean} state Accepts the state of the recurrence rule\n * @param {Date} startDate Accepts the start date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of date\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {void}\n * @private\n */\nfunction insertDateCollectionBasedonBySetPos(monthCollection, state, startDate, endDate, data, ruleObject) {\n if (monthCollection.length > 0) {\n for (var week = 0; week < monthCollection.length; week++) {\n monthCollection[parseInt(week.toString(), 10)].sort();\n var expectedDays = ruleObject.day;\n var isHavingNumber = expectedDays.map(function (item) { return HASNUMBER.test(item); });\n var weekIndex = (ruleObject.freq === 'YEARLY' && (ruleObject.validRules.indexOf('BYMONTH') > -1) &&\n !(isHavingNumber.indexOf(true) > -1)) ?\n weekCount(new Date(monthCollection[0][0]).getFullYear(), 0, monthCollection, week, ruleObject)\n : (monthCollection[parseInt(week.toString(), 10)].length + ruleObject.setPosition);\n var index = ((ruleObject.setPosition < 1) ? weekIndex : ruleObject.setPosition - 1);\n var dayData = monthCollection[parseInt(week.toString(), 10)][parseInt(index.toString(), 10)];\n insertDateCollection(state, startDate, endDate, data, ruleObject, dayData);\n }\n }\n}\n/**\n * To insert datas into existing collection which is processed from previous loop.\n *\n * @param {number[]} monthCollection Accepts the collection of dates\n * @param {boolean} state Accepts the state of the recurrence rule\n * @param {Date} startDate Accepts the start date\n * @param {Date} endDate Accepts the end date\n * @param {number[]} data Accepts the collection of date\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @param {number} index Accepts the index value\n * @returns {void}\n * @private\n */\nfunction insertDatasIntoExistingCollection(monthCollection, state, startDate, endDate, data, ruleObject, index) {\n if (monthCollection.length > 0) {\n index = !isNullOrUndefined(index) ? index :\n ((ruleObject.setPosition < 1)\n ? (monthCollection.length + ruleObject.setPosition) : ruleObject.setPosition - 1);\n monthCollection[parseInt(index.toString(), 10)].sort();\n for (var week = 0; week < monthCollection[parseInt(index.toString(), 10)].length; week++) {\n var dayData = monthCollection[parseInt(index.toString(), 10)][parseInt(week.toString(), 10)];\n insertDateCollection(state, startDate, endDate, data, ruleObject, dayData);\n }\n }\n}\n/**\n * Internal method to compare dates\n *\n * @param {Date} startDate Accepts the start date\n * @param {Date} endDate Accepts the end date\n * @returns {boolean} Returns the result of checking start and end dates\n * @private\n */\nfunction compareDates(startDate, endDate) {\n return endDate ? (startDate <= endDate) : true;\n}\n/**\n * Internal method to get day string\n *\n * @param {string} expectedDays Accepts the exception date string\n * @returns {string} Returns the valid string\n * @private\n */\nfunction getDayString(expectedDays) {\n // To get BYDAY value without numeric value\n var newstr = expectedDays.replace(REMOVENUMBERINSTRING, '');\n return newstr;\n}\n/**\n * Internal method to check day index\n *\n * @param {number} day Accepts the day index\n * @param {string[]} expectedDays Accepts the exception dates\n * @returns {boolean} Returns the index date\n * @private\n */\nfunction checkDayIndex(day, expectedDays) {\n var sortedExpectedDays = [];\n expectedDays.forEach(function (element) {\n var expectedDaysNumberSplit = element.match(SPLITNUMBERANDSTRING);\n if (expectedDaysNumberSplit.length === 2) {\n sortedExpectedDays.push(expectedDaysNumberSplit[1]);\n }\n else {\n sortedExpectedDays.push(expectedDaysNumberSplit[0]);\n }\n });\n return (sortedExpectedDays.indexOf(DAYINDEX[parseInt(day.toString(), 10)]) === -1);\n}\n/**\n * Internal method to get start date of week\n *\n * @param {Date} startDate Accepts the start date\n * @param {string[]} expectedDays Accepts the exception dates\n * @returns {Date} Return the week start date\n * @private\n */\nfunction getStartDateForWeek(startDate, expectedDays) {\n var tempDate = new Date(startDate.getTime());\n var newstr;\n if (expectedDays.length > 0) {\n var expectedDaysArr = [];\n for (var i = 0; i <= expectedDays.length - 1; i++) {\n newstr = getDayString(expectedDays[parseInt(i.toString(), 10)]);\n expectedDaysArr.push(newstr);\n }\n if (expectedDaysArr.indexOf(DAYINDEX[tempDate.getDay()]) === -1) {\n do {\n tempDate.setDate(tempDate.getDate() + 1);\n } while (expectedDaysArr.indexOf(DAYINDEX[tempDate.getDay()]) === -1);\n }\n }\n return tempDate;\n}\n/**\n * Method to generate recurrence rule object from given rule\n *\n * @param {string} rules Accepts the recurrence rule\n * @returns {RecRule} Returns the recurrence rule object\n */\nexport function extractObjectFromRule(rules) {\n var ruleObject = {\n freq: null,\n interval: 1,\n count: null,\n until: null,\n day: [],\n wkst: null,\n month: [],\n weekNo: [],\n monthDay: [],\n yearDay: [],\n setPosition: null,\n validRules: []\n };\n var rulesList = rules.split(';');\n var splitData = [];\n var temp;\n rulesList.forEach(function (data) {\n splitData = data.split('=');\n switch (splitData[0]) {\n case 'UNTIL':\n temp = splitData[1];\n ruleObject.until = getDateFromRecurrenceDateString(temp);\n break;\n case 'BYDAY':\n ruleObject.day = splitData[1].split(',');\n ruleObject.validRules.push(splitData[0]);\n break;\n case 'BYMONTHDAY':\n ruleObject.monthDay = splitData[1].split(',').map(Number);\n ruleObject.validRules.push(splitData[0]);\n break;\n case 'BYMONTH':\n ruleObject.month = splitData[1].split(',').map(Number);\n ruleObject.validRules.push(splitData[0]);\n break;\n case 'BYYEARDAY':\n ruleObject.yearDay = splitData[1].split(',').map(Number);\n ruleObject.validRules.push(splitData[0]);\n break;\n case 'BYWEEKNO':\n ruleObject.weekNo = splitData[1].split(',').map(Number);\n ruleObject.validRules.push(splitData[0]);\n break;\n case 'INTERVAL':\n ruleObject.interval = parseInt(splitData[1], 10);\n break;\n case 'COUNT':\n ruleObject.count = parseInt(splitData[1], 10);\n break;\n case 'BYSETPOS':\n ruleObject.setPosition = parseInt(splitData[1], 10) > 4 ? -1 : parseInt(splitData[1], 10);\n break;\n case 'FREQ':\n ruleObject.freq = splitData[1];\n break;\n case 'WKST':\n ruleObject.wkst = splitData[1];\n break;\n }\n });\n if ((ruleObject.freq === 'MONTHLY') && (ruleObject.monthDay.length === 0)) {\n var index = ruleObject.validRules.indexOf('BYDAY');\n ruleObject.validRules.splice(index, 1);\n }\n return ruleObject;\n}\n/**\n * Internal method to validate proper date\n *\n * @param {Date} tempDate Accepts the date value\n * @param {number} data Accepts the data value\n * @param {Date} startDate Accepts the start date\n * @returns {boolean} Returns the result of date validate\n * @private\n */\nfunction validateProperDate(tempDate, data, startDate) {\n var maxDate = calendarUtil.getMonthDaysCount(tempDate);\n return (data <= maxDate) && (tempDate >= startDate);\n}\n/**\n * Internal method to process week days\n *\n * @param {string[]} expectedDays Accepts the expection dates\n * @returns {Object} Returns the weekdays object\n * @private\n */\nfunction processWeekDays(expectedDays) {\n var dayCycle = {};\n expectedDays.forEach(function (element, index) {\n if (index === expectedDays.length - 1) {\n var startIndex = dayIndex.indexOf(element);\n var temp = startIndex;\n while (temp % 7 !== dayIndex.indexOf(expectedDays[0])) {\n temp++;\n }\n dayCycle[\"\" + element] = temp - startIndex;\n }\n else {\n dayCycle[\"\" + element] = dayIndex.indexOf(expectedDays[(index + 1)]) - dayIndex.indexOf(element);\n }\n });\n return dayCycle;\n}\n/**\n * Internal method to check date\n *\n * @param {Date} tempDate Accepts the date value\n * @param {number[]} expectedDate Accepts the exception dates\n * @returns {boolean} Returns the boolean value\n * @private\n */\nfunction checkDate(tempDate, expectedDate) {\n var temp = expectedDate.slice(0);\n var data;\n var maxDate = calendarUtil.getMonthDaysCount(tempDate);\n data = temp.shift();\n while (data) {\n if (data < 0) {\n data = data + maxDate + 1;\n }\n if (data === tempDate.getDate()) {\n return false;\n }\n data = temp.shift();\n }\n return true;\n}\n/**\n * Internal method to check the year value\n *\n * @param {Date} tempDate Accepts the date value\n * @param {number[]} expectedyearDay Accepts the exception dates in year\n * @returns {boolean} Returns the boolean value\n * @private\n */\nfunction checkYear(tempDate, expectedyearDay) {\n var temp = expectedyearDay.slice(0);\n var data;\n var yearDay = getYearDay(tempDate);\n data = temp.shift();\n while (data) {\n if (data < 0) {\n data = data + calendarUtil.getYearDaysCount(tempDate, 0) + 1;\n }\n if (data === yearDay) {\n return false;\n }\n data = temp.shift();\n }\n return true;\n}\n/**\n * Internal method to get the year day\n *\n * @param {Date} currentDate Accepts the date value\n * @returns {number} Returns the boolean value\n * @private\n */\nfunction getYearDay(currentDate) {\n if (!startDateCollection[calendarUtil.getFullYear(currentDate)]) {\n startDateCollection[calendarUtil.getFullYear(currentDate)] = calendarUtil.getYearLastDate(currentDate, 0);\n }\n var tempDate = startDateCollection[calendarUtil.getFullYear(currentDate)];\n var diff = currentDate.getTime() - tempDate.getTime();\n return Math.ceil(diff / MS_PER_DAY);\n}\n/**\n * Internal method to validate monthly rule type\n *\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {MonthlyType} Returns the monthly type object\n * @private\n */\nfunction validateMonthlyRuleType(ruleObject) {\n if (ruleObject.monthDay.length && !ruleObject.day.length) {\n return 'date';\n }\n else if (!ruleObject.monthDay.length && ruleObject.day.length) {\n return 'day';\n }\n return 'both';\n}\n/**\n * Internal method to re-order the week days based on first day of week\n *\n * @param {string[]} days Accepts the week days value\n * @returns {void}\n * @private\n */\nfunction rotate(days) {\n var data = days.shift();\n days.push(data);\n}\n/**\n * Internal method to set first day of week\n *\n * @param {string} day Accepts the first day string\n * @returns {void}\n * @private\n */\nfunction setFirstDayOfWeek(day) {\n while (dayIndex[0] !== day) {\n rotate(dayIndex);\n }\n}\n/**\n * Internal method to validate recurrence rule\n *\n * @param {Date} tempDate Accepts the date value\n * @param {RecRule} ruleObject Accepts the recurrence rule object\n * @returns {boolean} Returns the boolean value\n * @private\n */\nfunction validateRules(tempDate, ruleObject) {\n var state = true;\n var expectedDays = ruleObject.day;\n var expectedMonth = ruleObject.month;\n var expectedDate = calendarUtil.getExpectedDays(tempDate, ruleObject.monthDay);\n var expectedyearDay = ruleObject.yearDay;\n ruleObject.validRules.forEach(function (rule) {\n switch (rule) {\n case 'BYDAY':\n if (checkDayIndex(tempDate.getDay(), expectedDays)) {\n state = false;\n }\n break;\n case 'BYMONTH':\n if (calendarUtil.checkMonth(tempDate, expectedMonth)) {\n state = false;\n }\n break;\n case 'BYMONTHDAY':\n if (checkDate(tempDate, expectedDate)) {\n state = false;\n }\n break;\n case 'BYYEARDAY':\n if (checkYear(tempDate, expectedyearDay)) {\n state = false;\n }\n break;\n }\n });\n return state;\n}\n/**\n * Internal method to get calendar util\n *\n * @param {CalendarType} calendarMode Accepts the calendar type object\n * @returns {CalendarUtil} Returns the calendar util object\n * @private\n */\nexport function getCalendarUtil(calendarMode) {\n if (calendarMode === 'Islamic') {\n return new Islamic();\n }\n return new Gregorian();\n}\nvar startDateCollection = {};\nvar tempExcludeDate;\nvar dayIndex = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'];\nvar maxOccurrence;\nvar tempViewDate;\nvar calendarUtil;\nvar DAYINDEX = ['SU', 'MO', 'TU', 'WE', 'TH', 'FR', 'SA'];\nvar MAXOCCURRENCE = 43;\nvar WEEKPOS = ['first', 'second', 'third', 'fourth', 'last'];\nvar TIMES = 'summaryTimes';\nvar ON = 'summaryOn';\nvar EVERY = 'every';\nvar UNTIL = 'summaryUntil';\nvar DAYS = 'summaryDay';\nvar WEEKS = 'summaryWeek';\nvar MONTHS = 'summaryMonth';\nvar YEARS = 'summaryYear';\nvar DAYINDEXOBJECT = {\n SU: 'sun',\n MO: 'mon',\n TU: 'tue',\n WE: 'wed',\n TH: 'thu',\n FR: 'fri',\n SA: 'sat'\n};\n// To check string has number\nvar HASNUMBER = /\\d/;\n// To find the numbers in string\nvar REMOVENUMBERINSTRING = /[^A-Z]+/;\n// To split number and string\nvar SPLITNUMBERANDSTRING = /[a-z]+|[^a-z]+/gi;\n/**\n * Method to generate string from date\n *\n * @param {Date} date Accepts the date value\n * @returns {string} Returns the string value\n */\nexport function getRecurrenceStringFromDate(date) {\n return [date.getUTCFullYear(),\n roundDateValues(date.getUTCMonth() + 1),\n roundDateValues(date.getUTCDate()),\n 'T',\n roundDateValues(date.getUTCHours()),\n roundDateValues(date.getUTCMinutes()),\n roundDateValues(date.getUTCSeconds()),\n 'Z'].join('');\n}\n/**\n * Internal method to round the date values\n *\n * @param {string | number} date Accepts the date value in either string or number format\n * @returns {string} Returns the date value in string format\n * @private\n */\nfunction roundDateValues(date) {\n return ('0' + date).slice(-2);\n}\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable max-len */\nimport { isNullOrUndefined, closest, extend, EventHandler, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { createElement, prepend, append, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { generate, getDateFromRecurrenceDateString } from '../../recurrence-editor/date-generator';\nimport * as util from '../base/util';\nimport * as cls from '../base/css-constant';\nimport * as event from '../base/constant';\n/**\n * EventBase for appointment rendering\n */\nvar EventBase = /** @class */ (function () {\n /**\n * Constructor for EventBase\n *\n * @param {Schedule} parent Accepts the schedule instance\n */\n function EventBase(parent) {\n this.slots = [];\n this.isDoubleTapped = false;\n this.parent = parent;\n }\n EventBase.prototype.processData = function (events, timeZonePropChanged, oldTimezone) {\n var _this = this;\n var start = this.parent.activeView.startDate();\n var end = this.parent.activeView.endDate();\n var fields = this.parent.eventFields;\n var processed = [];\n var temp = 1;\n var generateID = false;\n var resourceCollection = this.parent.resourceBase ? this.parent.resourceBase.resourceCollection : [];\n if (events.length > 0 && isNullOrUndefined(events[0][fields.id])) {\n generateID = true;\n }\n var _loop_1 = function (event_1) {\n if (generateID) {\n event_1[fields.id] = temp++;\n }\n event_1 = this_1.updateEventDateTime(event_1);\n if (timeZonePropChanged) {\n this_1.processTimezoneChange(event_1, oldTimezone);\n }\n else if (!this_1.parent.isPrinting && !this_1.parent.uiStateValues.isPreventTimezone) {\n event_1 = this_1.processTimezone(event_1);\n }\n for (var level = 0; level < resourceCollection.length; level++) {\n if (event_1[resourceCollection[parseInt(level.toString(), 10)].field] === null || event_1[resourceCollection[parseInt(level.toString(), 10)].field] === 0) {\n event_1[resourceCollection[parseInt(level.toString(), 10)].field] = undefined;\n }\n }\n if (!isNullOrUndefined(event_1[fields.recurrenceRule]) && event_1[fields.recurrenceRule] === '') {\n event_1[fields.recurrenceRule] = null;\n }\n if (!isNullOrUndefined(event_1[fields.recurrenceRule]) && isNullOrUndefined(event_1[fields.recurrenceID]) &&\n !(this_1.parent.crudModule && this_1.parent.crudModule.crudObj.isCrudAction)) {\n processed = processed.concat(this_1.generateOccurrence(event_1, null, true));\n }\n else {\n if (this_1.parent.crudModule && this_1.parent.crudModule.crudObj.isCrudAction) {\n if (!isNullOrUndefined(event_1[fields.recurrenceRule]) && isNullOrUndefined(event_1[fields.recurrenceID])) {\n var recurrenceEvent = this_1.generateOccurrence(event_1, null, true);\n var _loop_2 = function (occurrence) {\n var app = this_1.parent.eventsProcessed.filter(function (data) {\n return data[fields.startTime].getTime() - occurrence[fields.startTime].getTime() === 0 &&\n data[fields.id] === occurrence[fields.id];\n });\n occurrence.Guid = (app.length > 0) ? app[0].Guid : this_1.generateGuid();\n processed.push(occurrence);\n };\n for (var _i = 0, recurrenceEvent_1 = recurrenceEvent; _i < recurrenceEvent_1.length; _i++) {\n var occurrence = recurrenceEvent_1[_i];\n _loop_2(occurrence);\n }\n }\n else {\n var app = this_1.parent.eventsProcessed.filter(function (data) {\n return data[_this.parent.eventFields.id] === event_1[_this.parent.eventFields.id];\n });\n event_1.Guid = (app.length > 0) ? app[0].Guid : this_1.generateGuid();\n processed.push(event_1);\n }\n }\n else {\n event_1.Guid = this_1.generateGuid();\n processed.push(event_1);\n }\n }\n };\n var this_1 = this;\n for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {\n var event_1 = events_1[_i];\n _loop_1(event_1);\n }\n this.parent.eventsProcessed = [];\n var eventData = processed.filter(function (data) {\n return !data[_this.parent.eventFields.isBlock];\n });\n this.parent.eventsProcessed = this.filterEvents(start, end, eventData);\n var blockData = processed.filter(function (data) {\n return data[_this.parent.eventFields.isBlock];\n });\n for (var _a = 0, blockData_1 = blockData; _a < blockData_1.length; _a++) {\n var eventObj = blockData_1[_a];\n if (eventObj[fields.isAllDay]) {\n var isDifferentDate = util.resetTime(new Date(eventObj[fields.startTime].getTime())) <\n util.resetTime(new Date(eventObj[fields.endTime].getTime()));\n if (!isDifferentDate) {\n eventObj[fields.startTime] = util.resetTime(eventObj[fields.startTime]);\n eventObj[fields.endTime] = util.addDays(util.resetTime(eventObj[fields.endTime]), 1);\n }\n }\n }\n this.parent.blockProcessed = blockData;\n return eventData;\n };\n EventBase.prototype.updateEventDateTime = function (eventData) {\n if (typeof eventData[this.parent.eventFields.startTime] === 'string') {\n eventData[this.parent.eventFields.startTime] = util.getDateFromString(eventData[this.parent.eventFields.startTime]);\n }\n if (typeof eventData[this.parent.eventFields.endTime] === 'string') {\n eventData[this.parent.eventFields.endTime] = util.getDateFromString(eventData[this.parent.eventFields.endTime]);\n }\n return eventData;\n };\n EventBase.prototype.getProcessedEvents = function (eventCollection) {\n if (eventCollection === void 0) { eventCollection = this.parent.eventsData; }\n var processed = [];\n for (var _i = 0, eventCollection_1 = eventCollection; _i < eventCollection_1.length; _i++) {\n var event_2 = eventCollection_1[_i];\n if (!isNullOrUndefined(event_2[this.parent.eventFields.recurrenceRule]) &&\n isNullOrUndefined(event_2[this.parent.eventFields.recurrenceID])) {\n processed = processed.concat(this.generateOccurrence(event_2));\n }\n else {\n processed.push(event_2);\n }\n }\n return processed;\n };\n EventBase.prototype.timezonePropertyChange = function (oldTimezone) {\n var data = this.parent.eventsData.concat(this.parent.blockData);\n var processed = this.processData(data, true, oldTimezone);\n this.parent.notify(event.dataReady, { processedData: processed });\n };\n EventBase.prototype.timezoneConvert = function (eventData) {\n var fields = this.parent.eventFields;\n eventData[fields.startTimezone] = eventData[fields.startTimezone] || eventData[fields.endTimezone];\n eventData[fields.endTimezone] = eventData[fields.endTimezone] || eventData[fields.startTimezone];\n if (this.parent.timezone) {\n var startTz = eventData[fields.startTimezone];\n var endTz = eventData[fields.endTimezone];\n eventData[fields.startTime] = this.parent.tzModule.convert(eventData[fields.startTime], this.parent.timezone, startTz);\n eventData[fields.endTime] = this.parent.tzModule.convert(eventData[fields.endTime], this.parent.timezone, endTz);\n }\n };\n EventBase.prototype.processTimezoneChange = function (event, oldTimezone) {\n var fields = this.parent.eventFields;\n if (event[fields.isAllDay]) {\n return;\n }\n if (oldTimezone && this.parent.timezone) {\n event[fields.startTime] = this.parent.tzModule.convert(event[fields.startTime], oldTimezone, this.parent.timezone);\n event[fields.endTime] = this.parent.tzModule.convert(event[fields.endTime], oldTimezone, this.parent.timezone);\n }\n else if (!oldTimezone && this.parent.timezone) {\n event[fields.startTime] = this.parent.tzModule.add(event[fields.startTime], this.parent.timezone);\n event[fields.endTime] = this.parent.tzModule.add(event[fields.endTime], this.parent.timezone);\n }\n else if (oldTimezone && !this.parent.timezone) {\n event[fields.startTime] = this.parent.tzModule.remove(event[fields.startTime], oldTimezone);\n event[fields.endTime] = this.parent.tzModule.remove(event[fields.endTime], oldTimezone);\n }\n };\n EventBase.prototype.processTimezone = function (event, isReverse) {\n if (isReverse === void 0) { isReverse = false; }\n var fields = this.parent.eventFields;\n if (event[fields.isAllDay]) {\n return event;\n }\n if (event[fields.startTimezone] || event[fields.endTimezone]) {\n var startTimezone = event[fields.startTimezone] || event[fields.endTimezone];\n var endTimezone = event[fields.endTimezone] || event[fields.startTimezone];\n if (isReverse) {\n if (this.parent.timezone) {\n event[fields.startTime] = this.parent.tzModule.convert(event[fields.startTime], startTimezone, this.parent.timezone);\n event[fields.endTime] = this.parent.tzModule.convert(event[fields.endTime], endTimezone, this.parent.timezone);\n event[fields.startTime] = this.parent.tzModule.remove(event[fields.startTime], this.parent.timezone);\n event[fields.endTime] = this.parent.tzModule.remove(event[fields.endTime], this.parent.timezone);\n }\n else {\n event[fields.startTime] = this.parent.tzModule.remove(event[fields.startTime], startTimezone);\n event[fields.endTime] = this.parent.tzModule.remove(event[fields.endTime], endTimezone);\n }\n }\n else {\n event[fields.startTime] = this.parent.tzModule.add(event[fields.startTime], startTimezone);\n event[fields.endTime] = this.parent.tzModule.add(event[fields.endTime], endTimezone);\n if (this.parent.timezone) {\n event[fields.startTime] = this.parent.tzModule.convert(event[fields.startTime], startTimezone, this.parent.timezone);\n event[fields.endTime] = this.parent.tzModule.convert(event[fields.endTime], endTimezone, this.parent.timezone);\n }\n }\n }\n else if (this.parent.timezone) {\n if (isReverse) {\n event[fields.startTime] = this.parent.tzModule.remove(event[fields.startTime], this.parent.timezone);\n event[fields.endTime] = this.parent.tzModule.remove(event[fields.endTime], this.parent.timezone);\n }\n else {\n event[fields.startTime] = this.parent.tzModule.add(event[fields.startTime], this.parent.timezone);\n event[fields.endTime] = this.parent.tzModule.add(event[fields.endTime], this.parent.timezone);\n }\n }\n return event;\n };\n EventBase.prototype.filterBlockEvents = function (eventObj) {\n var fields = this.parent.eventFields;\n var eStart = eventObj[fields.startTime];\n var eEnd = eventObj[fields.endTime];\n var resourceData;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var data = this.getGroupIndexFromEvent(eventObj);\n resourceData = this.parent.resourceBase.lastResourceLevel[parseInt(data.toString(), 10)];\n }\n var blockEvents = extend([], this.parent.blockProcessed, null, true);\n for (var _i = 0, blockEvents_1 = blockEvents; _i < blockEvents_1.length; _i++) {\n var eventObj_1 = blockEvents_1[_i];\n if (eventObj_1[fields.isAllDay]) {\n var isDifferentTime = eventObj_1[fields.endTime].getTime() >\n util.resetTime(new Date(eventObj_1[fields.endTime].getTime())).getTime();\n if (isDifferentTime) {\n eventObj_1[fields.startTime] = util.resetTime(eventObj_1[fields.startTime]);\n eventObj_1[fields.endTime] = util.addDays(util.resetTime(eventObj_1[fields.endTime]), 1);\n }\n }\n }\n return this.filterEvents(eStart, eEnd, blockEvents, resourceData);\n };\n EventBase.prototype.filterEvents = function (startDate, endDate, appointments, resourceTdData) {\n if (appointments === void 0) { appointments = this.parent.eventsProcessed; }\n var predicate = this.parent.dataModule.getStartEndQuery(startDate, endDate);\n var filter = new DataManager({ json: appointments }).executeLocal(new Query().where(predicate));\n if (resourceTdData) {\n filter = this.filterEventsByResource(resourceTdData, filter);\n }\n return this.sortByTime(filter);\n };\n EventBase.prototype.filterEventsByRange = function (eventCollection, startDate, endDate) {\n var _this = this;\n var filteredEvents = [];\n if (startDate && endDate) {\n filteredEvents = this.filterEvents(startDate, endDate, eventCollection);\n }\n else if (startDate && !endDate) {\n filteredEvents = eventCollection.filter(function (e) { return e[_this.parent.eventFields.startTime] >= startDate; });\n }\n else if (!startDate && endDate) {\n filteredEvents = eventCollection.filter(function (e) { return e[_this.parent.eventFields.endTime] <= endDate; });\n }\n else {\n filteredEvents = eventCollection;\n }\n return this.sortByTime(filteredEvents);\n };\n EventBase.prototype.filterEventsByResource = function (resourceTdData, appointments) {\n if (appointments === void 0) { appointments = this.parent.eventsProcessed; }\n var predicate = {};\n var resourceCollection = this.parent.resourceBase.resourceCollection;\n for (var level = 0; level < resourceCollection.length; level++) {\n predicate[resourceCollection[parseInt(level.toString(), 10)].field] = resourceTdData.groupOrder[parseInt(level.toString(), 10)];\n }\n var keys = Object.keys(predicate);\n var filteredCollection = appointments.filter(function (eventObj) { return keys.every(function (key) {\n if (eventObj[\"\" + key] instanceof Array) {\n return eventObj[\"\" + key].indexOf(predicate[\"\" + key]) > -1;\n }\n else {\n return eventObj[\"\" + key] === predicate[\"\" + key];\n }\n }); });\n return filteredCollection;\n };\n EventBase.prototype.sortByTime = function (appointmentsCollection) {\n if (this.parent.eventSettings.sortComparer && (typeof (this.parent.eventSettings.sortComparer) === 'function' || typeof (this.parent.eventSettings.sortComparer) === 'string')) {\n appointmentsCollection = this.customSorting(appointmentsCollection);\n }\n else {\n var fieldMappings_1 = this.parent.eventFields;\n appointmentsCollection.sort(function (a, b) {\n var d1 = a[fieldMappings_1.startTime];\n var d2 = b[fieldMappings_1.startTime];\n return d1.getTime() - d2.getTime();\n });\n }\n return appointmentsCollection;\n };\n EventBase.prototype.sortByDateTime = function (appointments) {\n if (this.parent.eventSettings.sortComparer && (typeof (this.parent.eventSettings.sortComparer) === 'function' || typeof (this.parent.eventSettings.sortComparer) === 'string')) {\n appointments = this.customSorting(appointments);\n }\n else {\n var fieldMapping_1 = this.parent.eventFields;\n appointments.sort(function (object1, object2) {\n var d3 = object1[fieldMapping_1.startTime];\n var d4 = object2[fieldMapping_1.startTime];\n var d5 = object1[fieldMapping_1.endTime];\n var d6 = object2[fieldMapping_1.endTime];\n var d1 = d5.getTime() - d3.getTime();\n var d2 = d6.getTime() - d4.getTime();\n return (d3.getTime() - d4.getTime() || d2 - d1);\n });\n }\n return appointments;\n };\n EventBase.prototype.customSorting = function (appointments) {\n if (typeof (this.parent.eventSettings.sortComparer) === 'function') {\n return this.parent.eventSettings.sortComparer.call(this.parent, appointments);\n }\n else if (typeof (this.parent.eventSettings.sortComparer) === 'string') {\n var splits = this.parent.eventSettings.sortComparer.split('.');\n var sortFn = void 0;\n if (!isNullOrUndefined(window)) {\n sortFn = window[splits[splits.length - 1]];\n }\n if (sortFn) {\n return sortFn(appointments);\n }\n }\n return appointments;\n };\n EventBase.prototype.getSmallestMissingNumber = function (array) {\n var large = Math.max.apply(Math, array);\n for (var i = 0; i < large; i++) {\n if (array.indexOf(i) === -1) {\n return i;\n }\n }\n return large + 1;\n };\n EventBase.prototype.splitEventByDay = function (event) {\n var eventFields = this.parent.eventFields;\n var data = [];\n var eventStartTime = event[eventFields.startTime];\n var eventEndTime = event[eventFields.endTime];\n var isDifferentDate = util.resetTime(new Date(eventStartTime.getTime())) <\n util.resetTime(new Date(eventEndTime.getTime()));\n if (isDifferentDate) {\n var start = new Date(eventStartTime.getTime());\n var end = util.addDays(util.resetTime(new Date(eventStartTime.getTime())), 1);\n var endDate = (eventEndTime.getHours() === 0 && eventEndTime.getMinutes() === 0) ?\n eventEndTime : util.addDays(eventEndTime, 1);\n var index = 1;\n var eventLength = util.getDaysCount(eventStartTime.getTime(), endDate.getTime());\n while (end <= eventEndTime && start.getTime() !== end.getTime()) {\n var app = extend({}, event);\n app[eventFields.startTime] = start;\n app[eventFields.endTime] = end;\n app.data = { index: index, count: eventLength };\n app.Guid = this.generateGuid();\n app.isSpanned = true;\n data.push(app);\n start = end;\n if ((util.resetTime(new Date(start.getTime())).getTime() === util.resetTime(new Date(eventEndTime.getTime())).getTime())\n && !(end.getTime() === eventEndTime.getTime())) {\n end = new Date(start.getTime());\n end = new Date(end.setHours(eventEndTime.getHours(), eventEndTime.getMinutes(), eventEndTime.getSeconds()));\n }\n else {\n end = util.addDays(util.resetTime(new Date(start.getTime())), 1);\n }\n index++;\n }\n }\n else {\n data.push(event);\n }\n return data;\n };\n EventBase.prototype.splitEvent = function (event, dateRender) {\n var fields = this.parent.eventFields;\n var start = util.resetTime(event[fields.startTime]).getTime();\n var end = util.resetTime(event[fields.endTime]).getTime();\n if (util.getDateInMs(event[fields.endTime]) <= 0) {\n var temp = util.addDays(util.resetTime(event[fields.endTime]), -1).getTime();\n end = start > temp ? start : temp;\n }\n var orgStart = start;\n var orgEnd = end;\n var ranges = [];\n if (start !== end) {\n if (start < dateRender[0].getTime()) {\n start = dateRender[0].getTime();\n }\n if (end > dateRender[dateRender.length - 1].getTime()) {\n end = dateRender[dateRender.length - 1].getTime();\n }\n var cStart = start;\n for (var level = 0; level < this.slots.length; level++) {\n var slot = this.slots[parseInt(level.toString(), 10)];\n if (this.parent.currentView === 'WorkWeek' || this.parent.currentView === 'TimelineWorkWeek'\n || this.parent.activeViewOptions.group.byDate || this.parent.activeViewOptions.showWeekend) {\n var slotDates = [];\n for (var _i = 0, slot_1 = slot; _i < slot_1.length; _i++) {\n var s = slot_1[_i];\n slotDates.push(new Date(s));\n }\n var renderedDates = this.getRenderedDates(slotDates);\n if (!isNullOrUndefined(renderedDates) && renderedDates.length > 0) {\n slot = [];\n for (var _a = 0, renderedDates_1 = renderedDates; _a < renderedDates_1.length; _a++) {\n var date = renderedDates_1[_a];\n slot.push(date.getTime());\n }\n }\n }\n if (typeof (slot) === 'number') {\n var temp = slot;\n slot = [];\n slot.push(temp);\n }\n var firstSlot = slot[0];\n cStart = (cStart <= firstSlot && end >= firstSlot) ? firstSlot : cStart;\n if (cStart > end || firstSlot > end) {\n break;\n }\n if (!this.parent.activeViewOptions.group.byDate && this.parent.activeViewOptions.showWeekend &&\n this.parent.currentView !== 'WorkWeek' && this.parent.currentView !== 'TimelineWorkWeek') {\n var startIndex = slot.indexOf(cStart);\n if (startIndex !== -1) {\n var endIndex = slot.indexOf(end);\n var hasBreak = endIndex !== -1;\n endIndex = hasBreak ? endIndex : slot.length - 1;\n var count = ((endIndex - startIndex) + 1);\n var isLeft = (slot[parseInt(startIndex.toString(), 10)] !== orgStart);\n var isRight = (slot[parseInt(endIndex.toString(), 10)] !== orgEnd);\n ranges.push(this.cloneEventObject(event, slot[parseInt(startIndex.toString(), 10)], slot[parseInt(endIndex.toString(), 10)], count, isLeft, isRight));\n if (hasBreak) {\n break;\n }\n }\n }\n else {\n if (this.dateInRange(cStart, slot[0], slot[slot.length - 1])) {\n var availSlot = [];\n for (var i = 0; i < slot.length; i++) {\n if (this.dateInRange(slot[parseInt(i.toString(), 10)], orgStart, orgEnd)) {\n availSlot.push(slot[parseInt(i.toString(), 10)]);\n }\n }\n if (availSlot.length > 0) {\n if (!this.parent.activeViewOptions.group.byDate) {\n var isLeft = (availSlot[0] !== orgStart);\n var isRight = (availSlot[availSlot.length - 1] !== orgEnd);\n ranges.push(this.cloneEventObject(event, availSlot[0], availSlot[availSlot.length - 1], availSlot.length, isLeft, isRight));\n }\n else {\n for (var _b = 0, availSlot_1 = availSlot; _b < availSlot_1.length; _b++) {\n var slot_2 = availSlot_1[_b];\n ranges.push(this.cloneEventObject(event, slot_2, slot_2, 1, (slot_2 !== orgStart), (slot_2 !== orgEnd)));\n }\n }\n }\n }\n }\n }\n }\n else {\n ranges.push(this.cloneEventObject(event, start, end, 1, false, false));\n }\n return ranges;\n };\n EventBase.prototype.cloneEventObject = function (event, start, end, count, isLeft, isRight) {\n var fields = this.parent.eventFields;\n var e = extend({}, event, null, true);\n var data = { count: count, isLeft: isLeft, isRight: isRight };\n data[fields.startTime] = event[fields.startTime];\n data[fields.endTime] = event[fields.endTime];\n e.data = data;\n e[fields.startTime] = new Date(start);\n e[fields.endTime] = new Date(end);\n return e;\n };\n EventBase.prototype.dateInRange = function (date, start, end) {\n return start <= date && date <= end;\n };\n EventBase.prototype.getSelectedEventElements = function (target) {\n this.removeSelectedAppointmentClass();\n if (this.parent.selectedElements.length <= 0) {\n this.parent.selectedElements.push(target);\n }\n else {\n var isAlreadySelected = this.parent.selectedElements.filter(function (element) {\n return element.getAttribute('data-guid') === target.getAttribute('data-guid');\n });\n if (isAlreadySelected.length <= 0) {\n var elementSelector = 'div[data-guid=\"' + target.getAttribute('data-guid') + '\"]';\n var focusElements = [].slice.call(this.parent.element.querySelectorAll(elementSelector));\n for (var _i = 0, focusElements_1 = focusElements; _i < focusElements_1.length; _i++) {\n var element = focusElements_1[_i];\n this.parent.selectedElements.push(element);\n }\n }\n else {\n var selectedElements = this.parent.selectedElements.filter(function (element) {\n return element.getAttribute('data-guid') !== target.getAttribute('data-guid');\n });\n this.parent.selectedElements = selectedElements;\n }\n }\n if (target && this.parent.selectedElements.length > 0) {\n this.addSelectedAppointments(this.parent.selectedElements, false);\n }\n return this.parent.selectedElements;\n };\n EventBase.prototype.getSelectedEvents = function () {\n var _this = this;\n var eventSelect = [];\n var elementSelect = [];\n var selectAppointments = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_BORDER));\n selectAppointments.filter(function (element) {\n var isAlreadyAdded = eventSelect.filter(function (event) {\n return event.Guid === element.getAttribute('data-guid');\n });\n if (isAlreadyAdded.length === 0) {\n eventSelect.push(_this.getEventByGuid(element.getAttribute('data-guid')));\n }\n elementSelect.push(element);\n });\n return {\n event: eventSelect.length > 1 ? eventSelect : eventSelect[0],\n element: elementSelect.length > 1 ? elementSelect : elementSelect[0]\n };\n };\n EventBase.prototype.removeSelectedAppointmentClass = function () {\n var selectedAppointments = this.getSelectedAppointments();\n removeClass(selectedAppointments, cls.APPOINTMENT_BORDER);\n if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {\n removeClass(selectedAppointments, cls.AGENDA_SELECTED_CELL);\n }\n };\n EventBase.prototype.addSelectedAppointments = function (cells, preventFocus) {\n if (this.parent.currentView !== 'MonthAgenda') {\n this.parent.removeSelectedClass();\n }\n addClass(cells, cls.APPOINTMENT_BORDER);\n if (cells.length > 0 && !preventFocus) {\n cells[cells.length - 1].focus();\n }\n };\n EventBase.prototype.getSelectedAppointments = function () {\n return [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_BORDER + ',.' + cls.APPOINTMENT_CLASS + ':focus'));\n };\n EventBase.prototype.focusElement = function (isFocused) {\n if (this.parent.eventWindow.dialogObject && this.parent.eventWindow.dialogObject.visible) {\n return;\n }\n var activeEle = document.activeElement;\n var selectedCell = this.parent.getSelectedCells();\n if (selectedCell.length > 0 && ((activeEle && (this.parent.element.contains(activeEle) ||\n selectedCell.indexOf(activeEle) !== -1)) || isFocused)) {\n if (this.parent.keyboardInteractionModule) {\n var target = ((!isNullOrUndefined(this.parent.activeCellsData) &&\n this.parent.activeCellsData.element) || selectedCell[selectedCell.length - 1]);\n this.parent.keyboardInteractionModule.selectCells(target instanceof Array, target);\n }\n return;\n }\n var selectedAppointments = this.getSelectedAppointments();\n if (selectedAppointments.length > 0) {\n if (this.parent.activeEventData && this.parent.activeEventData.element && selectedAppointments.indexOf(this.parent.activeEventData.element) > -1) {\n this.parent.activeEventData.element.focus();\n return;\n }\n selectedAppointments[selectedAppointments.length - 1].focus();\n return;\n }\n };\n EventBase.prototype.selectWorkCellByTime = function (eventsData) {\n var target;\n if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {\n return target;\n }\n if (eventsData.length > 0) {\n var selectedObject = eventsData[eventsData.length - 1];\n var eventStartTime = selectedObject[this.parent.eventFields.startTime];\n var nearestTime = new Date(+eventStartTime).setMinutes(0, 0, 0);\n var isAllDay = this.isAllDayAppointment(selectedObject);\n if (this.parent.currentView === 'Month' || isAllDay) {\n nearestTime = new Date(+eventStartTime).setHours(0, 0, 0, 0);\n }\n var targetArea = void 0;\n if (isAllDay && ['Day', 'Week', 'WorkWeek'].indexOf(this.parent.currentView) !== -1) {\n targetArea = this.parent.getAllDayRow();\n }\n else {\n targetArea = this.parent.getContentTable();\n }\n var queryString = '[data-date=\"' + new Date(nearestTime).getTime() + '\"]';\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n queryString += '[data-group-index=\"' + this.getGroupIndexFromEvent(selectedObject) + '\"]';\n }\n target = targetArea.querySelector(queryString);\n if (target) {\n this.parent.activeCellsData = this.parent.getCellDetails(target);\n if (this.parent.keyboardInteractionModule) {\n this.parent.keyboardInteractionModule.selectCells(false, target);\n }\n return target;\n }\n }\n return target;\n };\n EventBase.prototype.getGroupIndexFromEvent = function (eventData) {\n var levelIndex;\n var resource;\n var levelName;\n var idField;\n for (var i = this.parent.resourceBase.resourceCollection.length - 1; i >= 0; i--) {\n var resourceData = eventData[this.parent.resourceBase.resourceCollection[parseInt(i.toString(), 10)].field];\n if (!isNullOrUndefined(resourceData)) {\n resource = this.parent.resourceBase.resourceCollection[parseInt(i.toString(), 10)];\n levelIndex = i;\n levelName = resource.name;\n idField = resource.field;\n break;\n }\n }\n if (isNullOrUndefined(levelName) && isNullOrUndefined(levelIndex)) {\n levelName = this.parent.resourceCollection.slice(-1)[0].name;\n levelIndex = this.parent.resourceCollection.length - 1;\n idField = this.parent.resourceCollection.slice(-1)[0].field;\n resource = this.parent.resourceCollection.filter(function (e, index) {\n if (e.name === levelName) {\n levelIndex = index;\n return e;\n }\n return null;\n })[0];\n }\n var id = ((eventData[\"\" + idField] instanceof Array) ?\n eventData[\"\" + idField][0] : eventData[\"\" + idField]);\n if (levelIndex > 0) {\n var parentField = this.parent.resourceCollection[levelIndex - 1].field;\n return this.parent.resourceBase.getIndexFromResourceId(id, levelName, resource, eventData, parentField);\n }\n else {\n return this.parent.resourceBase.getIndexFromResourceId(id, levelName, resource);\n }\n };\n EventBase.prototype.isAllDayAppointment = function (event) {\n var fieldMapping = this.parent.eventFields;\n var isAllDay = event[fieldMapping.isAllDay];\n var isFullDay = ((util.getUniversalTime(event[fieldMapping.endTime]) - util.getUniversalTime(event[fieldMapping.startTime]))\n / util.MS_PER_DAY) >= 1;\n return (isAllDay || (this.parent.eventSettings.spannedEventPlacement !== 'TimeSlot' && isFullDay)) ? true : false;\n };\n EventBase.prototype.addEventListener = function () {\n this.parent.on(event.documentClick, this.appointmentBorderRemove, this);\n };\n EventBase.prototype.removeEventListener = function () {\n this.parent.off(event.documentClick, this.appointmentBorderRemove);\n };\n EventBase.prototype.appointmentBorderRemove = function (event) {\n var element = event.event.target;\n if (closest(element, '.' + cls.APPOINTMENT_CLASS)) {\n if (this.parent.currentView !== 'MonthAgenda') {\n this.parent.removeSelectedClass();\n }\n }\n else if (!closest(element, '.' + cls.POPUP_OPEN)) {\n this.removeSelectedAppointmentClass();\n this.parent.selectedElements = [];\n }\n };\n EventBase.prototype.wireAppointmentEvents = function (element, event, isPreventCrud) {\n if (isPreventCrud === void 0) { isPreventCrud = false; }\n var isReadOnly = (!isNullOrUndefined(event)) ? event[this.parent.eventFields.isReadonly] : false;\n EventHandler.add(element, 'click', this.eventClick, this);\n if (!this.parent.isAdaptive && !this.parent.activeViewOptions.readonly && !isReadOnly) {\n EventHandler.add(element, 'touchstart', this.eventTouchClick, this);\n EventHandler.add(element, 'dblclick', this.eventDoubleClick, this);\n }\n if (!this.parent.activeViewOptions.readonly && !isReadOnly && !isPreventCrud) {\n if (this.parent.resizeModule) {\n this.parent.resizeModule.wireResizeEvent(element);\n }\n if (this.parent.dragAndDropModule) {\n this.parent.dragAndDropModule.wireDragEvent(element);\n }\n }\n };\n EventBase.prototype.eventTouchClick = function (e) {\n var _this = this;\n setTimeout(function () { return _this.isDoubleTapped = false; }, 250);\n e.preventDefault();\n if (this.isDoubleTapped) {\n this.eventDoubleClick(e);\n }\n else if (!this.isDoubleTapped) {\n this.isDoubleTapped = true;\n this.eventClick(e);\n }\n };\n EventBase.prototype.renderResizeHandler = function (element, spanEvent, isReadOnly) {\n if (!this.parent.resizeModule || !this.parent.allowResizing || this.parent.activeViewOptions.readonly || isReadOnly) {\n return;\n }\n for (var _i = 0, _a = Object.keys(spanEvent); _i < _a.length; _i++) {\n var resizeEdge = _a[_i];\n var resizeHandler = createElement('div', { className: cls.EVENT_RESIZE_CLASS });\n switch (resizeEdge) {\n case 'isLeft':\n if (!spanEvent.isLeft) {\n resizeHandler.appendChild(createElement('div', { className: 'e-left-right-resize' }));\n addClass([resizeHandler], this.parent.enableRtl ? cls.RIGHT_RESIZE_HANDLER : cls.LEFT_RESIZE_HANDLER);\n prepend([resizeHandler], element);\n }\n break;\n case 'isRight':\n if (!spanEvent.isRight) {\n resizeHandler.appendChild(createElement('div', { className: 'e-left-right-resize' }));\n addClass([resizeHandler], this.parent.enableRtl ? cls.LEFT_RESIZE_HANDLER : cls.RIGHT_RESIZE_HANDLER);\n append([resizeHandler], element);\n }\n break;\n case 'isTop':\n if (!spanEvent.isTop) {\n resizeHandler.appendChild(createElement('div', { className: 'e-top-bottom-resize' }));\n addClass([resizeHandler], cls.TOP_RESIZE_HANDLER);\n prepend([resizeHandler], element);\n }\n break;\n case 'isBottom':\n if (!spanEvent.isBottom) {\n resizeHandler.appendChild(createElement('div', { className: 'e-top-bottom-resize' }));\n addClass([resizeHandler], cls.BOTTOM_RESIZE_HANDLER);\n append([resizeHandler], element);\n }\n break;\n }\n }\n };\n EventBase.prototype.eventClick = function (eventData) {\n var _this = this;\n var target = eventData.target;\n if (target.classList.contains(cls.DRAG_CLONE_CLASS) || target.classList.contains(cls.RESIZE_CLONE_CLASS) ||\n target.classList.contains(cls.INLINE_SUBJECT_CLASS)) {\n return;\n }\n if ((eventData.ctrlKey || eventData.metaKey) && eventData.which === 1 && this.parent.keyboardInteractionModule) {\n this.parent.quickPopup.quickPopup.hide();\n this.parent.selectedElements = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_BORDER));\n var target_1 = closest(eventData.target, '.' + cls.APPOINTMENT_CLASS);\n this.getSelectedEventElements(target_1);\n this.activeEventData(eventData, false);\n var selectArgs = {\n data: this.parent.activeEventData.event,\n element: this.parent.activeEventData.element,\n event: eventData, requestType: 'eventSelect'\n };\n this.parent.trigger(event.select, selectArgs);\n var args = extend(this.parent.activeEventData, { cancel: false, originalEvent: eventData });\n this.parent.trigger(event.eventClick, args);\n }\n else {\n this.removeSelectedAppointmentClass();\n this.activeEventData(eventData, true);\n var selectEventArgs = {\n data: this.parent.activeEventData.event,\n element: this.parent.activeEventData.element,\n event: eventData, requestType: 'eventSelect'\n };\n this.parent.trigger(event.select, selectEventArgs);\n var args = extend(this.parent.activeEventData, { cancel: false, originalEvent: eventData });\n this.parent.trigger(event.eventClick, args, function (eventClickArgs) {\n if (eventClickArgs.cancel) {\n _this.removeSelectedAppointmentClass();\n _this.parent.selectedElements = [];\n if (_this.parent.quickPopup) {\n _this.parent.quickPopup.quickPopupHide();\n }\n }\n else {\n if (_this.parent.currentView === 'Agenda' || _this.parent.currentView === 'MonthAgenda') {\n addClass([_this.parent.activeEventData.element], cls.AGENDA_SELECTED_CELL);\n }\n if (_this.parent.allowInline) {\n var inlineArgs = {\n data: eventClickArgs.event,\n element: eventClickArgs.element,\n type: 'Event'\n };\n _this.parent.notify(event.inlineClick, inlineArgs);\n }\n else {\n _this.parent.notify(event.eventClick, eventClickArgs);\n }\n }\n });\n }\n };\n EventBase.prototype.eventDoubleClick = function (eventData) {\n var _this = this;\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide(true);\n }\n if (eventData.type === 'touchstart') {\n this.activeEventData(eventData, true);\n }\n this.removeSelectedAppointmentClass();\n this.parent.selectedElements = [];\n if (this.parent.activeEventData.element.classList.contains(cls.INLINE_APPOINTMENT_CLASS) ||\n this.parent.activeEventData.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS)) {\n return;\n }\n var args = extend(this.parent.activeEventData, { cancel: false, originalEvent: eventData });\n this.parent.trigger(event.eventDoubleClick, args, function (eventDoubleClickArgs) {\n if (!eventDoubleClickArgs.cancel) {\n if (!isNullOrUndefined(_this.parent.activeEventData.event) &&\n isNullOrUndefined(_this.parent.activeEventData.event[_this.parent.eventFields.recurrenceID])) {\n _this.parent.eventWindow.openEditor(_this.parent.activeEventData.event, 'Save');\n }\n else {\n _this.parent.currentAction = 'EditOccurrence';\n _this.parent.quickPopup.openRecurrenceAlert();\n }\n }\n });\n };\n EventBase.prototype.getEventByGuid = function (guid) {\n return this.parent.eventsProcessed.filter(function (data) { return data.Guid === guid; })[0];\n };\n EventBase.prototype.getEventById = function (id) {\n var _this = this;\n return this.parent.eventsData.filter(function (data) {\n return data[_this.parent.eventFields.id] === id;\n })[0];\n };\n EventBase.prototype.generateGuid = function () {\n return 'xyxxxxyx-xxxy-yxxx-xyxx-xxyxxxxyyxxx'.replace(/[xy]/g, function (c) {\n var r = Math.random() * 16 | 0;\n var v = (c === 'x') ? r : (r & 0x3 | 0x8);\n return v.toString(16);\n });\n };\n EventBase.prototype.getEventIDType = function () {\n if (this.parent.eventsData.length !== 0) {\n return typeof (this.parent.eventsData[0][this.parent.eventFields.id]);\n }\n if (this.parent.blockData.length !== 0) {\n return typeof (this.parent.blockData[0][this.parent.eventFields.id]);\n }\n return 'string';\n };\n EventBase.prototype.getEventMaxID = function (resourceId) {\n var _this = this;\n if (this.parent.eventsData.length < 1 && this.parent.blockData.length < 1) {\n return 1;\n }\n var eventId;\n var idType = this.getEventIDType();\n if (idType === 'string') {\n eventId = this.generateGuid();\n }\n if (idType === 'number') {\n var datas = this.parent.eventsData.concat(this.parent.blockData);\n var appIds = datas.map(function (event) { return event[_this.parent.eventFields.id]; });\n var maxId = appIds.reduce(function (a, b) { return Math.max(a, b); });\n maxId = isNullOrUndefined(resourceId) ? maxId : maxId + resourceId;\n eventId = maxId + 1;\n }\n return eventId;\n };\n EventBase.prototype.activeEventData = function (eventData, isMultiple) {\n var _this = this;\n var target = closest(eventData.target, '.' + cls.APPOINTMENT_CLASS);\n var guid = target.getAttribute('data-guid');\n if (isMultiple) {\n this.addSelectedAppointments([].slice.call(this.parent.element.querySelectorAll('div[data-guid=\"' + guid + '\"]')), true);\n target.focus();\n }\n var eventObject = this.getEventByGuid(guid);\n if (eventObject && eventObject.isSpanned) {\n eventObject = this.parent.eventsData.filter(function (obj) {\n return obj[_this.parent.eventFields.id] === eventObject[_this.parent.eventFields.id];\n })[0];\n }\n this.parent.activeEventData = { event: eventObject, element: target };\n };\n EventBase.prototype.generateOccurrence = function (event, viewDate, isMaxCount) {\n var startDate = event[this.parent.eventFields.startTime];\n var endDate = event[this.parent.eventFields.endTime];\n var eventRule = event[this.parent.eventFields.recurrenceRule];\n var timeZoneDiff = endDate.getTimezoneOffset() - startDate.getTimezoneOffset();\n var duration = (endDate.getTime() - startDate.getTime()) - (timeZoneDiff * 60000);\n viewDate = new Date((viewDate || this.parent.activeView.startDate()).getTime() - duration);\n var exception = event[this.parent.eventFields.recurrenceException];\n var maxCount;\n if (this.parent.currentView !== 'Agenda' && isMaxCount) {\n maxCount = util.getDateCount(viewDate, this.parent.activeView.endDate()) + 1;\n }\n var newTimezone = this.parent.timezone || this.parent.tzModule.getLocalTimezoneName();\n var firstDay = this.parent.activeViewOptions.firstDayOfWeek;\n var calendarMode = this.parent.calendarMode;\n var dates = generate(startDate, eventRule, exception, firstDay, maxCount, viewDate, calendarMode, newTimezone);\n if (this.parent.currentView === 'Agenda' && eventRule.indexOf('COUNT') === -1 && eventRule.indexOf('UNTIL') === -1) {\n if (isNullOrUndefined(event.generatedDates)) {\n event.generatedDates = { start: new Date(dates[0]), end: new Date(dates[dates.length - 1]) };\n }\n else {\n if (dates[0] < event.generatedDates.start.getTime()) {\n event.generatedDates.start = new Date(dates[0]);\n }\n if (dates[dates.length - 1] > event.generatedDates.end.getTime()) {\n event.generatedDates.end = new Date(dates[dates.length - 1]);\n }\n }\n }\n var occurrenceCollection = [];\n for (var _i = 0, dates_1 = dates; _i < dates_1.length; _i++) {\n var date = dates_1[_i];\n var clonedObject = extend({}, event, null, true);\n date = this.getDSTAdjustedTime(date, clonedObject);\n clonedObject[this.parent.eventFields.startTime] = new Date(date);\n clonedObject[this.parent.eventFields.endTime] = new Date(new Date(date).setMilliseconds(duration));\n clonedObject[this.parent.eventFields.recurrenceID] = clonedObject[this.parent.eventFields.id];\n delete clonedObject[this.parent.eventFields.recurrenceException];\n delete clonedObject[this.parent.eventFields.followingID];\n clonedObject.Guid = this.generateGuid();\n occurrenceCollection.push(clonedObject);\n }\n return occurrenceCollection;\n };\n EventBase.prototype.getDSTAdjustedTime = function (date, event) {\n var occurDate = date;\n if (this.parent.timezone &&\n (event[this.parent.eventFields.startTimezone] || event[this.parent.eventFields.endTimezone])) {\n var eventOffset = this.getDSTDiff(event[this.parent.eventFields.startTime], new Date(date), event[this.parent.eventFields.startTimezone]);\n var schOffset = this.getDSTDiff(event[this.parent.eventFields.startTime], new Date(date), this.parent.timezone);\n occurDate = (new Date(date).getTime() - (eventOffset - schOffset) * 60000);\n }\n return occurDate;\n };\n EventBase.prototype.getDSTDiff = function (startDate, occurDate, timezone) {\n var startOffset = this.parent.tzModule.offset(new Date(startDate), timezone);\n var occurOffset = this.parent.tzModule.offset(new Date(occurDate), timezone);\n return startOffset - occurOffset;\n };\n EventBase.prototype.getParentEvent = function (eventObj, isParent) {\n if (isParent === void 0) { isParent = false; }\n var parentEvent;\n do {\n eventObj = this.getFollowingEvent(eventObj);\n if (eventObj) {\n parentEvent = extend({}, eventObj, null, true);\n }\n } while (eventObj && isParent);\n if (isParent && parentEvent) {\n var collection = this.getEventCollections(parentEvent);\n var followObj = collection.follow.slice(-1)[0];\n if (collection.occurrence.length > 0 && !parentEvent[this.parent.eventFields.recurrenceException]) {\n followObj = collection.occurrence.slice(-1)[0];\n }\n if (followObj) {\n parentEvent[this.parent.eventFields.recurrenceRule] = followObj[this.parent.eventFields.recurrenceRule];\n }\n }\n return parentEvent;\n };\n EventBase.prototype.getEventCollections = function (parentObj, childObj) {\n var followingCollection = [];\n var occurrenceCollection = [];\n var followingEvent = parentObj;\n do {\n followingEvent = this.getFollowingEvent(followingEvent, true);\n if (followingEvent) {\n followingCollection.push(followingEvent);\n }\n occurrenceCollection = occurrenceCollection.concat(this.getOccurrenceEvent(followingEvent || parentObj));\n } while (followingEvent);\n var collections = {};\n if (childObj) {\n var fields_1 = this.parent.eventFields;\n collections = {\n follow: followingCollection.filter(function (eventData) {\n return eventData[fields_1.startTime] >= childObj[fields_1.startTime];\n }),\n occurrence: occurrenceCollection.filter(function (eventData) {\n return eventData[fields_1.startTime] >= childObj[fields_1.startTime];\n })\n };\n }\n else {\n collections = { follow: followingCollection, occurrence: occurrenceCollection };\n }\n return collections;\n };\n EventBase.prototype.getFollowingEvent = function (parentObj, isReverse) {\n var fields = this.parent.eventFields;\n var fieldValue;\n if (isReverse) {\n fieldValue = parentObj[fields.id];\n }\n else {\n fieldValue = (parentObj[fields.recurrenceID] || parentObj[fields.followingID]);\n }\n var parentApp = this.parent.eventsData.filter(function (data) {\n return data[isReverse ? fields.followingID : fields.id] === fieldValue;\n });\n return parentApp.shift();\n };\n EventBase.prototype.isFollowingEvent = function (parentObj, childObj) {\n var parentStart = parentObj[this.parent.eventFields.startTime];\n var childStart = childObj[this.parent.eventFields.startTime];\n return parentStart.getHours() === childStart.getHours() && parentStart.getMinutes() === childStart.getMinutes() &&\n parentStart.getSeconds() === childStart.getSeconds();\n };\n EventBase.prototype.getOccurrenceEvent = function (eventObj, isGuid, isFollowing) {\n if (isGuid === void 0) { isGuid = false; }\n if (isFollowing === void 0) { isFollowing = false; }\n var idField = isGuid ? 'Guid' : (isFollowing) ? this.parent.eventFields.followingID : this.parent.eventFields.recurrenceID;\n var fieldKey = isGuid ? 'Guid' : this.parent.eventFields.id;\n var dataSource = isGuid ? this.parent.eventsProcessed : this.parent.eventsData;\n return dataSource.filter(function (data) { return data[\"\" + idField] === eventObj[\"\" + fieldKey]; });\n };\n EventBase.prototype.getOccurrencesByID = function (id) {\n var fields = this.parent.eventFields;\n var occurrenceCollection = [];\n var parentObject = this.parent.eventsData.filter(function (obj) { return obj[fields.id] === id; });\n for (var _i = 0, parentObject_1 = parentObject; _i < parentObject_1.length; _i++) {\n var event_3 = parentObject_1[_i];\n if (!isNullOrUndefined(event_3[fields.recurrenceRule])) {\n occurrenceCollection = occurrenceCollection.concat(this.generateOccurrence(event_3));\n }\n }\n return occurrenceCollection;\n };\n EventBase.prototype.getOccurrencesByRange = function (startTime, endTime) {\n var fields = this.parent.eventFields;\n var occurrenceCollection = [];\n for (var _i = 0, _a = this.parent.eventsData; _i < _a.length; _i++) {\n var event_4 = _a[_i];\n if (!isNullOrUndefined(event_4[fields.recurrenceRule])) {\n occurrenceCollection = occurrenceCollection.concat(this.generateOccurrence(event_4));\n }\n }\n var filter = occurrenceCollection.filter(function (obj) {\n return obj[fields.startTime] >= startTime && obj[fields.endTime] <= endTime && !isNullOrUndefined(obj[fields.recurrenceID]);\n });\n return filter;\n };\n EventBase.prototype.getDeletedOccurrences = function (recurrenceData) {\n var fields = this.parent.eventFields;\n var parentObject;\n var deletedOccurrences = [];\n if (typeof recurrenceData === 'string' || typeof recurrenceData === 'number') {\n parentObject = this.parent.eventsData.filter(function (obj) {\n return obj[fields.id] === recurrenceData;\n })[0];\n }\n else {\n parentObject = extend({}, recurrenceData, null, true);\n }\n if (parentObject[fields.recurrenceException]) {\n var exDateString_1 = parentObject[fields.recurrenceException].split(',');\n var _loop_3 = function (i, len) {\n var edited = this_2.parent.eventsData.filter(function (eventObj) {\n return eventObj[fields.recurrenceID] === parentObject[fields.id] && eventObj[fields.recurrenceException] === exDateString_1[parseInt(i.toString(), 10)];\n });\n if (edited.length === 0) {\n var exDate = getDateFromRecurrenceDateString(exDateString_1[parseInt(i.toString(), 10)]);\n var childObject = extend({}, recurrenceData, null, true);\n childObject[fields.recurrenceID] = parentObject[fields.id];\n delete childObject[fields.followingID];\n childObject[fields.recurrenceException] = exDateString_1[parseInt(i.toString(), 10)];\n var startDate = new Date(exDate.getTime());\n var time = parentObject[fields.endTime].getTime() - parentObject[fields.startTime].getTime();\n var endDate = new Date(startDate.getTime());\n endDate.setMilliseconds(time);\n childObject[fields.startTime] = new Date(startDate.getTime());\n childObject[fields.endTime] = new Date(endDate.getTime());\n deletedOccurrences.push(childObject);\n }\n };\n var this_2 = this;\n for (var i = 0, len = exDateString_1.length; i < len; i++) {\n _loop_3(i, len);\n }\n }\n return deletedOccurrences;\n };\n EventBase.prototype.applyResourceColor = function (element, data, type, index, alpha) {\n if (!this.parent.resourceBase) {\n return;\n }\n var alphaColor = function (color, alpha) {\n color = color.replace('#', '');\n var r = parseInt(color.substring(0, color.length / 3), 16);\n var g = parseInt(color.substring(color.length / 3, 2 * color.length / 3), 16);\n var b = parseInt(color.substring(2 * color.length / 3, 3 * color.length / 3), 16);\n return \"rgba(\" + r + \", \" + g + \", \" + b + \", \" + alpha + \")\";\n };\n // index refers groupOrder\n var color = this.parent.resourceBase.getResourceColor(data, index);\n if (color) {\n element.style[type] = !isNullOrUndefined(alpha) ? alphaColor(color, alpha) : color;\n }\n };\n EventBase.prototype.createBlockAppointmentElement = function (record, resIndex, isResourceEventTemplate) {\n var eventSubject = (record[this.parent.eventFields.subject] || this.parent.eventSettings.fields.subject.default);\n var appointmentWrapper = createElement('div', {\n className: cls.BLOCK_APPOINTMENT_CLASS,\n attrs: {\n 'data-id': 'Appointment_' + record[this.parent.eventFields.id],\n 'aria-disabled': 'true'\n }\n });\n var templateElement;\n if (!isNullOrUndefined(this.parent.activeViewOptions.eventTemplate)) {\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.eventTemplateName;\n var templateId = scheduleId + viewName + 'eventTemplate';\n var templateName = 'eventTemplate' + (isResourceEventTemplate &&\n this.parent.currentView.indexOf('Year') === -1 ? '_' + resIndex : '');\n templateElement = this.parent.getAppointmentTemplate()(record, this.parent, templateName, templateId, false);\n }\n else {\n var appointmentSubject = createElement('div', { className: cls.SUBJECT_CLASS });\n this.parent.sanitize(eventSubject, appointmentSubject);\n templateElement = [appointmentSubject];\n }\n append(templateElement, appointmentWrapper);\n this.setWrapperAttributes(appointmentWrapper, resIndex);\n return appointmentWrapper;\n };\n EventBase.prototype.setWrapperAttributes = function (appointmentWrapper, resIndex) {\n if (!isNullOrUndefined(this.cssClass)) {\n addClass([appointmentWrapper], this.cssClass);\n }\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n appointmentWrapper.setAttribute('data-group-index', resIndex.toString());\n }\n };\n EventBase.prototype.getReadonlyAttribute = function (event) {\n return (event[this.parent.eventFields.isReadonly] || this.parent.readonly).toString();\n };\n EventBase.prototype.isBlockRange = function (eventData) {\n var eventCollection = (eventData instanceof Array) ? eventData : [eventData];\n var isBlockAlert = false;\n var fields = this.parent.eventFields;\n for (var _i = 0, _a = eventCollection; _i < _a.length; _i++) {\n var event_5 = _a[_i];\n var dataCol = [];\n if (!isNullOrUndefined(event_5[fields.recurrenceRule]) &&\n (isNullOrUndefined(event_5[fields.recurrenceID]) || event_5[fields.id] === event_5[fields.recurrenceID])) {\n dataCol = this.generateOccurrence(event_5);\n }\n else {\n dataCol.push(event_5);\n }\n for (var _b = 0, dataCol_1 = dataCol; _b < dataCol_1.length; _b++) {\n var data = dataCol_1[_b];\n var filterBlockEvents = this.filterBlockEvents(data);\n if (filterBlockEvents.length > 0) {\n isBlockAlert = true;\n break;\n }\n }\n }\n this.parent.uiStateValues.isBlock = isBlockAlert;\n return isBlockAlert;\n };\n EventBase.prototype.getFilterEventsList = function (dataSource, query) {\n return new DataManager(dataSource).executeLocal(new Query().where(query));\n };\n EventBase.prototype.getSeriesEvents = function (parentEvent, startTime) {\n var fields = this.parent.eventFields;\n startTime = isNullOrUndefined(startTime) ? parentEvent[fields.startTime] : startTime;\n var deleteFutureEditEvents;\n var futureEvents;\n var deleteFutureEditEventList = [];\n var delId = parentEvent[fields.id];\n var followingId = parentEvent[fields.followingID];\n var deleteFutureEvent;\n var startTimeQuery = this.parent.currentAction === 'EditSeries' ? 'greaterthan' : 'greaterthanorequal';\n do {\n deleteFutureEvent = ((new Predicate(fields.followingID, 'equal', delId))).\n and(new Predicate(fields.startTime, startTimeQuery, startTime));\n futureEvents = this.getFilterEventsList(this.parent.eventsData, deleteFutureEvent);\n deleteFutureEditEvents = futureEvents.slice(-1)[0];\n if (!isNullOrUndefined(deleteFutureEditEvents) && deleteFutureEditEvents[fields.id] !== followingId) {\n deleteFutureEditEventList.push(deleteFutureEditEvents);\n delId = deleteFutureEditEvents[fields.id];\n followingId = deleteFutureEditEvents[fields.followingID];\n }\n else {\n followingId = null;\n }\n } while (futureEvents.length === 1 && !isNullOrUndefined(deleteFutureEditEvents[fields.followingID]));\n return deleteFutureEditEventList;\n };\n EventBase.prototype.getEditedOccurrences = function (deleteFutureEditEventList, startTime) {\n var fields = this.parent.eventFields;\n var deleteRecurrenceEventList = [];\n var delEditedEvents;\n for (var _i = 0, deleteFutureEditEventList_1 = deleteFutureEditEventList; _i < deleteFutureEditEventList_1.length; _i++) {\n var event_6 = deleteFutureEditEventList_1[_i];\n var delEventQuery = new Predicate(fields.recurrenceID, 'equal', event_6[fields.id]).\n or(new Predicate(fields.recurrenceID, 'equal', event_6[fields.followingID]).\n and(new Predicate(fields.recurrenceID, 'notequal', undefined)).\n and(new Predicate(fields.recurrenceID, 'notequal', null)));\n if (this.parent.currentAction === 'EditFollowingEvents' || this.parent.currentAction === 'DeleteFollowingEvents') {\n delEventQuery = delEventQuery.and(new Predicate(fields.startTime, 'greaterthanorequal', startTime));\n }\n delEditedEvents = this.getFilterEventsList(this.parent.eventsData, delEventQuery);\n deleteRecurrenceEventList = deleteRecurrenceEventList.concat(delEditedEvents);\n }\n return deleteRecurrenceEventList;\n };\n EventBase.prototype.getRenderedDates = function (dateRender) {\n var firstDate = 0;\n var lastDate = dateRender.length;\n var filteredDates;\n if (dateRender[0] < this.parent.minDate && dateRender[dateRender.length - 1] > this.parent.maxDate) {\n for (var i = 0; i < dateRender.length; i++) {\n if (util.resetTime(dateRender[parseInt(i.toString(), 10)]).getTime() === util.resetTime(new Date(this.parent.minDate)).getTime()) {\n firstDate = i;\n }\n if (util.resetTime(dateRender[parseInt(i.toString(), 10)]).getTime() === util.resetTime(new Date(this.parent.maxDate)).getTime()) {\n lastDate = i;\n }\n }\n filteredDates = dateRender.filter(function (date) { return date >= dateRender[parseInt(firstDate.toString(), 10)] && date <= dateRender[parseInt(lastDate.toString(), 10)]; });\n }\n return filteredDates;\n };\n EventBase.prototype.isValidEvent = function (eventObj, start, end, schedule) {\n var isHourRange = end.getTime() > schedule.startHour.getTime() && start.getTime() < schedule.endHour.getTime();\n var isSameRange = schedule.startHour.getTime() <= start.getTime() &&\n eventObj[this.parent.eventFields.startTime].getTime() >= schedule.startHour.getTime() &&\n eventObj[this.parent.eventFields.endTime].getTime() < schedule.endHour.getTime() && start.getTime() === end.getTime();\n return isHourRange || isSameRange;\n };\n EventBase.prototype.allDayExpandScroll = function (dateHeader) {\n var indentHeight = 0;\n var headerRows = [].slice.call(this.parent.element.querySelectorAll('.' + cls.HEADER_ROW_CLASS));\n headerRows.forEach(function (element) {\n var tdEle = [].slice.call(element.children);\n tdEle.forEach(function (ele) { ele.style.top = indentHeight + 'px'; });\n indentHeight += element.offsetHeight;\n });\n indentHeight = dateHeader.offsetHeight - indentHeight;\n this.parent.element.querySelector('.' + cls.ALLDAY_CELLS_CLASS).style.height = (indentHeight / 12) + 'em';\n if (this.parent.uiStateValues.expand) {\n addClass([dateHeader], cls.ALLDAY_APPOINTMENT_SCROLL);\n }\n else {\n removeClass([dateHeader], cls.ALLDAY_APPOINTMENT_SCROLL);\n }\n };\n EventBase.prototype.updateEventMinimumDuration = function (startEndHours, startTime, endTime) {\n if (startTime.getTime() < endTime.getTime()) {\n var eventDuration = (util.getUniversalTime(endTime) - util.getUniversalTime(startTime)) / util.MS_PER_MINUTE;\n if (eventDuration < this.parent.eventSettings.minimumEventDuration) {\n var tempEnd = new Date(startTime);\n tempEnd.setMinutes(tempEnd.getMinutes() + this.parent.eventSettings.minimumEventDuration);\n endTime = tempEnd;\n if (endTime.getTime() > startEndHours.endHour.getTime()) {\n var tempStart = new Date(startEndHours.endHour.getTime());\n tempStart.setMinutes(tempStart.getMinutes() - this.parent.eventSettings.minimumEventDuration);\n startTime = tempStart;\n endTime = startEndHours.endHour;\n }\n }\n }\n return { startDate: startTime, endDate: endTime };\n };\n EventBase.prototype.createEventWrapper = function (type, index) {\n if (type === void 0) { type = ''; }\n if (index === void 0) { index = 0; }\n var tr = createElement('tr');\n var levels = this.parent.activeView.colLevels.slice(-1)[0];\n for (var i = 0, len = levels.length; i < len; i++) {\n var col = levels[parseInt(i.toString(), 10)];\n var appointmentWrap = createElement('td', {\n className: (type === 'allDay') ? cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS : (type === 'timeIndicator') ?\n cls.TIMELINE_WRAPPER_CLASS : cls.DAY_WRAPPER_CLASS, attrs: { 'data-date': col.date.getTime().toString() }\n });\n if (!isNullOrUndefined(col.groupIndex)) {\n appointmentWrap.setAttribute('data-group-index', col.groupIndex.toString());\n }\n if (type === '') {\n var innerWrapper = createElement('div', {\n id: cls.APPOINTMENT_WRAPPER_CLASS + '-' + index.toString(),\n className: cls.APPOINTMENT_WRAPPER_CLASS\n });\n appointmentWrap.appendChild(innerWrapper);\n }\n tr.appendChild(appointmentWrap);\n index = index + 1;\n }\n return tr;\n };\n EventBase.prototype.getPageCoordinates = function (e) {\n if (isNullOrUndefined(e)) {\n return e;\n }\n var eventArgs = e.event;\n return eventArgs && eventArgs.changedTouches ? eventArgs.changedTouches[0] : e.changedTouches ? e.changedTouches[0] :\n eventArgs || e;\n };\n EventBase.prototype.renderSpannedIcon = function (element, spanEvent) {\n var iconElement = createElement('div', { className: cls.EVENT_INDICATOR_CLASS + ' ' + cls.ICON });\n if (spanEvent.isLeft) {\n var iconLeft = iconElement.cloneNode();\n addClass([iconLeft], cls.EVENT_ICON_LEFT_CLASS);\n prepend([iconLeft], element);\n }\n if (spanEvent.isRight) {\n var iconRight = iconElement.cloneNode();\n addClass([iconRight], cls.EVENT_ICON_RIGHT_CLASS);\n append([iconRight], element);\n }\n if (spanEvent.isTop) {\n var iconTop = iconElement.cloneNode();\n addClass([iconTop], cls.EVENT_ICON_UP_CLASS);\n prepend([iconTop], element);\n }\n if (spanEvent.isBottom) {\n var iconBottom = iconElement.cloneNode();\n addClass([iconBottom], cls.EVENT_ICON_DOWN_CLASS);\n append([iconBottom], element);\n }\n };\n EventBase.prototype.addCellHeight = function (selector, eventHeight, eventGap, headerHeight, indHeight, isScrollUpdate) {\n if (isScrollUpdate === void 0) { isScrollUpdate = true; }\n if (this.parent.activeViewOptions.maxEventsPerRow && !this.parent.rowAutoHeight) {\n var rows = [].slice.call(this.parent.element.querySelectorAll(selector));\n var weekNumberRows = this.parent.showWeekNumber\n ? [].slice.call(this.parent.element.querySelectorAll('.' + cls.WEEK_NUMBER_WRAPPER_CLASS + ' tbody tr'))\n : [];\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n var height = (this.parent.activeViewOptions.maxEventsPerRow *\n ((eventHeight + (this.parent.currentView === 'Month' ? eventGap : 2)))) + headerHeight + indHeight;\n if (weekNumberRows.length > 0) {\n setStyleAttribute(weekNumberRows[rows.indexOf(row)].firstElementChild, { 'height': height + 'px' });\n }\n setStyleAttribute(row.firstElementChild, { 'height': height + 'px' });\n }\n if (!this.parent.enablePersistence && !this.parent.activeViewOptions.allowVirtualScrolling && isScrollUpdate) {\n this.parent.notify(event.contentReady, {});\n }\n }\n };\n EventBase.prototype.unWireEvents = function () {\n var appElements = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n for (var _i = 0, appElements_1 = appElements; _i < appElements_1.length; _i++) {\n var element = appElements_1[_i];\n EventHandler.clearEvents(element);\n }\n };\n EventBase.prototype.destroy = function () {\n this.unWireEvents();\n this.parent = null;\n };\n return EventBase;\n}());\nexport { EventBase };\n","/* eslint-disable no-inner-declarations */\nimport { extend, merge, isNullOrUndefined, getValue, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { attributes, prepend, isVisible, append, addClass } from '@syncfusion/ej2-base';\nimport { compile } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nexport var cssClass = {\n li: 'e-list-item',\n ul: 'e-list-parent e-ul',\n group: 'e-list-group-item',\n icon: 'e-list-icon',\n text: 'e-list-text',\n check: 'e-list-check',\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: 'e-list-url',\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: 'e-list-img',\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n};\n/**\n * Base List Generator\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var ListBase;\n(function (ListBase) {\n /**\n *\n * Default mapped fields.\n */\n ListBase.defaultMappedFields = {\n id: 'id',\n text: 'text',\n url: 'url',\n value: 'value',\n isChecked: 'isChecked',\n enabled: 'enabled',\n expanded: 'expanded',\n selected: 'selected',\n iconCss: 'iconCss',\n child: 'child',\n isVisible: 'isVisible',\n hasChildren: 'hasChildren',\n tooltip: 'tooltip',\n htmlAttributes: 'htmlAttributes',\n urlAttributes: 'urlAttributes',\n imageAttributes: 'imageAttributes',\n imageUrl: 'imageUrl',\n groupBy: null,\n sortBy: null\n };\n var defaultAriaAttributes = {\n level: 1,\n listRole: 'presentation',\n itemRole: 'presentation',\n groupItemRole: 'group',\n itemText: 'list-item',\n wrapperRole: 'presentation'\n };\n var defaultListBaseOptions = {\n showCheckBox: false,\n showIcon: false,\n enableHtmlSanitizer: false,\n expandCollapse: false,\n fields: ListBase.defaultMappedFields,\n ariaAttributes: defaultAriaAttributes,\n listClass: '',\n itemClass: '',\n processSubChild: false,\n sortOrder: 'None',\n template: null,\n groupTemplate: null,\n headerTemplate: null,\n expandIconClass: 'e-icon-collapsible',\n moduleName: 'list',\n expandIconPosition: 'Right',\n itemNavigable: false\n };\n /**\n * Function helps to created and return the UL Li element based on your data.\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} createListFromJson - Specifies the list options that need to provide.\n */\n function createList(createElement, dataSource, \n // eslint-disable-next-line\n options, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var type = typeofData(dataSource).typeof;\n if (type === 'string' || type === 'number') {\n return createListFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n }\n else {\n return createListFromJson(createElement, dataSource, options, ariaAttributes.level, isSingleLevel, componentInstance);\n }\n }\n ListBase.createList = createList;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - returns the list options that need to provide.\n */\n function createListFromArray(createElement, dataSource, \n // tslint:disable-next-line\n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = createListItemFromArray(createElement, dataSource, isSingleLevel, options, componentInstance);\n return generateUL(createElement, subChild, null, options);\n }\n ListBase.createListFromArray = createListFromArray;\n /**\n * Function helps to created an element list based on string array input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} subChild - returns the list options that need to provide.\n */\n function createListItemFromArray(createElement, dataSource, \n // eslint-disable-next-line\n isSingleLevel, options, componentInstance) {\n var subChild = [];\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n var li = void 0;\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n options: curOpt\n };\n curOpt.itemCreating(curData);\n }\n if (isSingleLevel) {\n li = generateSingleLevelLI(createElement, dataSource[i], undefined, null, null, [], null, id, i, options);\n }\n else {\n li = generateLI(createElement, dataSource[i], undefined, null, null, options, componentInstance);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: dataSource[i],\n item: li,\n options: curOpt\n };\n curOpt.itemCreated(curData);\n }\n subChild.push(li);\n }\n return subChild;\n }\n ListBase.createListItemFromArray = createListItemFromArray;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {HTMLElement[]} child - returns the list options that need to provide.\n */\n function createListItemFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var fields = (componentInstance &&\n (componentInstance.getModuleName() === 'listview' || componentInstance.getModuleName() === 'multiselect'))\n ? curOpt.fields : extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var id;\n var checkboxElement = [];\n if (level) {\n ariaAttributes.level = level;\n }\n var child = [];\n var li;\n var anchorElement;\n if (dataSource && dataSource.length && !isNullOrUndefined(typeofData(dataSource).item) &&\n // eslint-disable-next-line no-prototype-builtins\n !typeofData(dataSource).item.hasOwnProperty(fields.id)) {\n id = generateId(); // generate id for drop-down-list option.\n }\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], fields);\n if (isNullOrUndefined(dataSource[i])) {\n continue;\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreating(curData);\n }\n var curItem = dataSource[i];\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], fields);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.id) && !isNullOrUndefined(fieldData[fields.id])) {\n id = fieldData[fields.id];\n }\n var innerEle = [];\n if (curOpt.showCheckBox) {\n if (curOpt.itemNavigable && (fieldData[fields.url] || fieldData[fields.urlAttributes])) {\n checkboxElement.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n else {\n innerEle.push(createElement('input', { className: cssClass.check, attrs: { type: 'checkbox' } }));\n }\n }\n if (isSingleLevel === true) {\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) && !isNullOrUndefined(fieldData[fields.iconCss])) {\n innerEle.push(createElement('span', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] }));\n }\n li = generateSingleLevelLI(createElement, curItem, fieldData, fields, curOpt.itemClass, innerEle, \n // eslint-disable-next-line no-prototype-builtins\n (curItem.hasOwnProperty('isHeader') &&\n curItem.isHeader) ? true : false, id, i, options);\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n }\n else {\n li = generateLI(createElement, curItem, fieldData, fields, curOpt.itemClass, options, componentInstance);\n li.classList.add(cssClass.level + '-' + ariaAttributes.level);\n li.setAttribute('aria-level', ariaAttributes.level.toString());\n if (ariaAttributes.groupItemRole === 'presentation' || ariaAttributes.itemRole === 'presentation') {\n li.removeAttribute('aria-level');\n }\n anchorElement = li.querySelector('.' + cssClass.anchorWrap);\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.tooltip)) {\n var tooltipText = SanitizeHtmlHelper.sanitize(fieldData[fields.tooltip]);\n li.setAttribute('title', tooltipText);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n var htmlAttributes = fieldData[fields.htmlAttributes];\n // Check if 'class' attribute is present and not an empty string\n if (htmlAttributes.hasOwnProperty('class') && typeof htmlAttributes['class'] === 'string' && htmlAttributes['class'].trim() === '') {\n delete htmlAttributes['class'];\n }\n setAttribute(li, htmlAttributes);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled] === false) {\n li.classList.add(cssClass.disabled);\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.isVisible) && fieldData[fields.isVisible] === false) {\n li.style.display = 'none';\n }\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.imageUrl) && !isNullOrUndefined(fieldData[fields.imageUrl])\n && !curOpt.template) {\n var attr = { src: fieldData[fields.imageUrl] };\n merge(attr, fieldData[fields.imageAttributes]);\n var imageElemnt = createElement('img', { className: cssClass.image, attrs: attr });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', imageElemnt);\n }\n else {\n prepend([imageElemnt], li.firstElementChild);\n }\n }\n // eslint-disable-next-line no-prototype-builtins\n if (curOpt.showIcon && fieldData.hasOwnProperty(fields.iconCss) &&\n !isNullOrUndefined(fieldData[fields.iconCss]) && !curOpt.template) {\n var iconElement = createElement('div', { className: cssClass.icon + ' ' + fieldData[fields.iconCss] });\n if (anchorElement) {\n anchorElement.insertAdjacentElement('afterbegin', iconElement);\n }\n else {\n prepend([iconElement], li.firstElementChild);\n }\n }\n if (innerEle.length) {\n prepend(innerEle, li.firstElementChild);\n }\n if (curOpt.itemNavigable && checkboxElement.length) {\n prepend(checkboxElement, li.firstElementChild);\n }\n processSubChild(createElement, fieldData, fields, dataSource, curOpt, li, ariaAttributes.level);\n }\n if (anchorElement) {\n addClass([li], [cssClass.navigable]);\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: dataSource[i],\n text: fieldData[fields.text],\n item: li,\n options: curOpt,\n fields: fields\n };\n curOpt.itemCreated(curData);\n }\n checkboxElement = [];\n child.push(li);\n }\n return child;\n }\n ListBase.createListItemFromJson = createListItemFromJson;\n /**\n * Function helps to created an element list based on array of JSON input .\n *\n * @param {createElementParams} createElement - Specifies an array of JSON data.\n *\n * @param {{Object}[]} dataSource - Specifies an array of JSON data.\n *\n * @param {ListBaseOptions} options? - Specifies the list options that need to provide.\n *\n * @param {number} level? - Specifies the list options that need to provide.\n *\n * @param {boolean} isSingleLevel? - Specifies the list options that need to provide.\n *\n * @param {any} componentInstance? - Specifies the list options that need to provide.\n *\n * @returns {createElement} generateUL - Specifies the list options that need to provide.\n */\n function createListFromJson(createElement, dataSource, \n // eslint-disable-next-line\n options, level, isSingleLevel, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var li = createListItemFromJson(createElement, dataSource, options, level, isSingleLevel, componentInstance);\n return generateUL(createElement, li, curOpt.listClass, options);\n }\n ListBase.createListFromJson = createListFromJson;\n /**\n * Return the next or previous visible element.\n *\n * @param {Element[]|NodeList} elementArray - An element array to find next or previous element.\n * @param {Element} li - An element to find next or previous after this element.\n * @param {boolean} isPrevious? - Specify when the need get previous element from array.\n */\n function getSiblingLI(elementArray, element, isPrevious) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n if (!elementArray || !elementArray.length) {\n return void 0;\n }\n var siblingLI;\n var liIndex;\n var liCollections = Array.prototype.slice.call(elementArray);\n if (element) {\n liIndex = indexOf(element, liCollections);\n }\n else {\n liIndex = (isPrevious === true ? liCollections.length : -1);\n }\n siblingLI = liCollections[liIndex + (isPrevious === true ? -1 : 1)];\n while (siblingLI && (!isVisible(siblingLI) || siblingLI.classList.contains(cssClass.disabled))) {\n liIndex = liIndex + (isPrevious === true ? -1 : 1);\n siblingLI = liCollections[liIndex];\n }\n return siblingLI;\n }\n ListBase.getSiblingLI = getSiblingLI;\n /**\n * Return the index of the li element\n *\n * @param {Element} item - An element to find next or previous after this element.\n * @param {Element[]} elementArray - An element array to find index of given li.\n */\n function indexOf(item, elementArray) {\n if (!elementArray || !item) {\n return void 0;\n }\n else {\n var liCollections = elementArray;\n liCollections = Array.prototype.slice.call(elementArray);\n return liCollections.indexOf(item);\n }\n }\n ListBase.indexOf = indexOf;\n /**\n * Returns the grouped data from given dataSource.\n *\n * @param {{Object}[]} dataSource - The JSON data which is necessary to process.\n * @param {FieldsMapping} fields - Fields that are mapped from the data source.\n * @param {SortOrder} sortOrder- Specifies final result sort order.\n */\n function groupDataSource(dataSource, fields, sortOrder) {\n if (sortOrder === void 0) { sortOrder = 'None'; }\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var cusQuery = new Query().group(curFields.groupBy);\n // need to remove once sorting issues fixed in DataManager\n cusQuery = addSorting(sortOrder, 'key', cusQuery);\n var ds = getDataSource(dataSource, cusQuery);\n dataSource = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n var grpItem = {};\n var hdr = 'isHeader';\n grpItem[curFields.text] = ds[j].key;\n grpItem[\"\" + hdr] = true;\n var newtext = curFields.text;\n if (newtext === 'id') {\n newtext = 'text';\n grpItem[\"\" + newtext] = ds[j].key;\n }\n grpItem._id = 'group-list-item-' + (ds[j].key ?\n ds[j].key.toString().trim() : 'undefined');\n grpItem.items = itemObj;\n dataSource.push(grpItem);\n for (var k = 0; k < itemObj.length; k++) {\n dataSource.push(itemObj[k]);\n }\n }\n return dataSource;\n }\n ListBase.groupDataSource = groupDataSource;\n /**\n * Returns a sorted query object.\n *\n * @param {SortOrder} sortOrder - Specifies that sort order.\n * @param {string} sortBy - Specifies sortBy fields.\n * @param {Query} query - Pass if any existing query.\n */\n function addSorting(sortOrder, sortBy, query) {\n if (query === void 0) { query = new Query(); }\n if (sortOrder === 'Ascending') {\n query.sortBy(sortBy, 'ascending', true);\n }\n else if (sortOrder === 'Descending') {\n query.sortBy(sortBy, 'descending', true);\n }\n else {\n for (var i = 0; i < query.queries.length; i++) {\n if (query.queries[i].fn === 'onSortBy') {\n query.queries.splice(i, 1);\n }\n }\n }\n return query;\n }\n ListBase.addSorting = addSorting;\n /**\n * Return an array of JSON Data that processed based on queries.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {Query} query - Specifies query that need to process.\n */\n function getDataSource(dataSource, query) {\n // eslint-disable-next-line\n return new DataManager(dataSource)\n .executeLocal(query);\n }\n ListBase.getDataSource = getDataSource;\n /**\n * Created JSON data based the UL and LI element\n *\n * @param {HTMLElement|Element} element - UL element that need to convert as a JSON\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function createJsonFromElement(element, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var fields = extend({}, ListBase.defaultMappedFields, curOpt.fields);\n var curEle = element.cloneNode(true);\n var jsonAr = [];\n curEle.classList.add('json-parent');\n var childs = curEle.querySelectorAll('.json-parent>li');\n curEle.classList.remove('json-parent');\n for (var i = 0; i < childs.length; i++) {\n var li = childs[i];\n var anchor = li.querySelector('a');\n var ul = li.querySelector('ul');\n var json = {};\n var childNodes = anchor ? anchor.childNodes : li.childNodes;\n var keys = Object.keys(childNodes);\n for (var i_1 = 0; i_1 < childNodes.length; i_1++) {\n if (!(childNodes[Number(keys[i_1])]).hasChildNodes()) {\n json[fields.text] = childNodes[Number(keys[i_1])].textContent;\n }\n }\n var attributes_1 = getAllAttributes(li);\n if (attributes_1.id) {\n json[fields.id] = attributes_1.id;\n delete attributes_1.id;\n }\n else {\n json[fields.id] = generateId();\n }\n if (Object.keys(attributes_1).length) {\n json[fields.htmlAttributes] = attributes_1;\n }\n if (anchor) {\n attributes_1 = getAllAttributes(anchor);\n if (Object.keys(attributes_1).length) {\n json[fields.urlAttributes] = attributes_1;\n }\n }\n if (ul) {\n json[fields.child] = createJsonFromElement(ul, options);\n }\n jsonAr.push(json);\n }\n return jsonAr;\n }\n ListBase.createJsonFromElement = createJsonFromElement;\n function typeofData(data) {\n var match = { typeof: null, item: null };\n for (var i = 0; i < data.length; i++) {\n if (!isNullOrUndefined(data[i])) {\n return match = { typeof: typeof data[i], item: data[i] };\n }\n }\n return match;\n }\n function setAttribute(element, elementAttributes) {\n var attr = {};\n merge(attr, elementAttributes);\n if (attr.class) {\n addClass([element], attr.class.split(' '));\n delete attr.class;\n }\n attributes(element, attr);\n }\n function getAllAttributes(element) {\n var attributes = {};\n var attr = element.attributes;\n for (var index = 0; index < attr.length; index++) {\n attributes[attr[index].nodeName] = attr[index].nodeValue;\n }\n return attributes;\n }\n /**\n * Created UL element from content template.\n *\n * @param {string} template - that need to convert and generate li element.\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n * @param {ListBaseOptions} options? - Specifies listbase option for fields.\n */\n function renderContentTemplate(createElement, template, dataSource, \n // eslint-disable-next-line\n fields, options, componentInstance) {\n cssClass = getModuleClass(defaultListBaseOptions.moduleName);\n var ulElement = createElement('ul', { className: cssClass.ul, attrs: { role: 'presentation' } });\n var curOpt = extend({}, defaultListBaseOptions, options);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var compiledString = compileTemplate(template);\n var liCollection = [];\n var value;\n var id = generateId(); // generate id for drop-down-list option.\n for (var i = 0; i < dataSource.length; i++) {\n var fieldData = getFieldValues(dataSource[i], curFields);\n var curItem = dataSource[i];\n var isHeader = curItem.isHeader;\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreating(curData);\n }\n if (curOpt.itemCreating && typeof curOpt.itemCreating === 'function') {\n fieldData = getFieldValues(dataSource[i], curFields);\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n value = curItem;\n }\n else {\n value = fieldData[curFields.value];\n }\n }\n var li = createElement('li', {\n id: id + '-' + i,\n className: isHeader ? cssClass.group : cssClass.li, attrs: { role: 'presentation' }\n });\n if (isHeader) {\n if (typeof dataSource[i] === 'string' || typeof dataSource[i] === 'number') {\n li.innerText = curItem;\n }\n else {\n li.innerText = fieldData[curFields.text];\n }\n }\n else {\n var currentID = isHeader ? curOpt.groupTemplateID : curOpt.templateID;\n if (isHeader) {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'headerTemplate', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(curItem, componentInstance, 'template', currentID, !!curOpt.isStringTemplate), li);\n }\n }\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n }\n if (curOpt.itemCreated && typeof curOpt.itemCreated === 'function') {\n var curData = {\n dataSource: dataSource,\n curData: curItem,\n text: value,\n item: li,\n options: curOpt,\n fields: curFields\n };\n curOpt.itemCreated(curData);\n }\n liCollection.push(li);\n }\n append(liCollection, ulElement);\n return ulElement;\n }\n ListBase.renderContentTemplate = renderContentTemplate;\n /**\n * Created header items from group template.\n *\n * @param {string} template - that need to convert and generate li element.\n *\n * @param {{Object}[]} dataSource - Specifies local JSON data source.\n *\n * @param {FieldsMapping} fields - Specifies fields for mapping the dataSource.\n *\n * @param {Element[]} headerItems? - Specifies listbase header items.\n */\n // tslint:disable-next-line\n function renderGroupTemplate(groupTemplate, groupDataSource, fields, \n // eslint-disable-next-line\n headerItems, options, componentInstance) {\n var compiledString = compileTemplate(groupTemplate);\n var curFields = extend({}, ListBase.defaultMappedFields, fields);\n var curOpt = extend({}, defaultListBaseOptions, options);\n var category = curFields.groupBy;\n for (var _i = 0, headerItems_1 = headerItems; _i < headerItems_1.length; _i++) {\n var header = headerItems_1[_i];\n var headerData = {};\n headerData[\"\" + category] = header.textContent;\n header.innerHTML = '';\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, header);\n if (compiledElement) {\n append(compiledElement, header);\n }\n }\n else {\n append(compiledString(headerData, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), header);\n }\n }\n return headerItems;\n }\n ListBase.renderGroupTemplate = renderGroupTemplate;\n function generateId() {\n return Math.floor((1 + Math.random()) * 0x10000)\n .toString(16)\n .substring(1);\n }\n ListBase.generateId = generateId;\n function processSubChild(createElement, fieldData, fields, ds, options, element, level) {\n // Get SubList\n var subDS = fieldData[fields.child] || [];\n var hasChildren = fieldData[fields.hasChildren];\n //Create Sub child\n if (subDS.length) {\n hasChildren = true;\n element.classList.add(cssClass.hasChild);\n if (options.processSubChild) {\n var subLi = createListFromJson(createElement, subDS, options, ++level);\n element.appendChild(subLi);\n }\n }\n // Create expand and collapse node\n if (!!options.expandCollapse && hasChildren && !options.template) {\n element.firstElementChild.classList.add(cssClass.iconWrapper);\n var expandElement = options.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', { className: 'e-icons ' + options.expandIconClass })], element.querySelector('.' + cssClass.textContent));\n }\n }\n function generateSingleLevelLI(createElement, item, fieldData, fields, className, innerElements, grpLI, id, index, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var value = item;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number' && typeof item !== 'boolean') {\n dataSource = item;\n text = (typeof fieldData[fields.text] === 'boolean' || typeof fieldData[fields.text] === 'number') ?\n fieldData[fields.text] : (fieldData[fields.text] || '');\n value = fieldData[fields.value];\n }\n var elementID;\n if (!isNullOrUndefined(dataSource) && !isNullOrUndefined(fieldData[fields.id])\n && fieldData[fields.id] !== '') {\n elementID = id;\n }\n else {\n elementID = id + '-' + index;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n id: elementID, attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.enabled) && fieldData[fields.enabled].toString() === 'false') {\n li.classList.add(cssClass.disabled);\n }\n if (grpLI) {\n li.innerText = text;\n }\n else {\n li.setAttribute('data-value', isNullOrUndefined(value) ? 'null' : value);\n li.setAttribute('role', 'option');\n // eslint-disable-next-line no-prototype-builtins\n if (dataSource && fieldData.hasOwnProperty(fields.htmlAttributes) && fieldData[fields.htmlAttributes]) {\n setAttribute(li, fieldData[fields.htmlAttributes]);\n }\n if (innerElements.length && !curOpt.itemNavigable) {\n append(innerElements, li);\n }\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n li.appendChild(anchorTag(createElement, dataSource, fields, text, innerElements, curOpt.itemNavigable));\n }\n else {\n if (innerElements.length && curOpt.itemNavigable) {\n append(innerElements, li);\n }\n li.appendChild(document.createTextNode(text));\n }\n }\n return li;\n }\n function getModuleClass(moduleName) {\n var moduleClass;\n // eslint-disable-next-line\n return moduleClass = {\n li: \"e-\" + moduleName + \"-item\",\n ul: \"e-\" + moduleName + \"-parent e-ul\",\n group: \"e-\" + moduleName + \"-group-item\",\n icon: \"e-\" + moduleName + \"-icon\",\n text: \"e-\" + moduleName + \"-text\",\n check: \"e-\" + moduleName + \"-check\",\n checked: 'e-checked',\n selected: 'e-selected',\n expanded: 'e-expanded',\n textContent: 'e-text-content',\n hasChild: 'e-has-child',\n level: 'e-level',\n url: \"e-\" + moduleName + \"-url\",\n collapsible: 'e-icon-collapsible',\n disabled: 'e-disabled',\n image: \"e-\" + moduleName + \"-img\",\n iconWrapper: 'e-icon-wrapper',\n anchorWrap: 'e-anchor-wrap',\n navigable: 'e-navigable'\n };\n }\n function anchorTag(createElement, dataSource, fields, text, innerElements, isFullNavigation) {\n var fieldData = getFieldValues(dataSource, fields);\n var attr = { href: fieldData[fields.url] };\n // eslint-disable-next-line no-prototype-builtins\n if (fieldData.hasOwnProperty(fields.urlAttributes) && fieldData[fields.urlAttributes]) {\n merge(attr, fieldData[fields.urlAttributes]);\n attr.href = fieldData[fields.url] ? fieldData[fields.url] :\n fieldData[fields.urlAttributes].href;\n }\n var anchorTag;\n if (!isFullNavigation) {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url, innerHTML: text });\n }\n else {\n anchorTag = createElement('a', { className: cssClass.text + ' ' + cssClass.url });\n var anchorWrapper = createElement('div', { className: cssClass.anchorWrap });\n if (innerElements && innerElements.length) {\n append(innerElements, anchorWrapper);\n }\n anchorWrapper.appendChild(document.createTextNode(text));\n append([anchorWrapper], anchorTag);\n }\n setAttribute(anchorTag, attr);\n return anchorTag;\n }\n // tslint:disable-next-line\n /* tslint:disable:align */\n function generateLI(createElement, item, fieldData, \n // eslint-disable-next-line\n fields, className, options, componentInstance) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n var text = item;\n var uID;\n var grpLI;\n var dataSource;\n if (typeof item !== 'string' && typeof item !== 'number') {\n dataSource = item;\n text = fieldData[fields.text] || '';\n // tslint:disable-next-line\n uID = (isNullOrUndefined(fieldData['_id'])) ? fieldData[fields.id] : fieldData['_id'];\n // eslint-disable-next-line no-prototype-builtins\n grpLI = (item.hasOwnProperty('isHeader') && item.isHeader)\n ? true : false;\n }\n if (options && options.enableHtmlSanitizer) {\n // eslint-disable-next-line no-self-assign\n text = text;\n }\n var li = createElement('li', {\n className: (grpLI === true ? cssClass.group : cssClass.li) + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.groupItemRole !== '' && ariaAttributes.itemRole !== '' ?\n { role: (grpLI === true ? ariaAttributes.groupItemRole : ariaAttributes.itemRole) } : {})\n });\n if (!isNullOrUndefined(uID) === true) {\n li.setAttribute('data-uid', uID);\n }\n else {\n li.setAttribute('data-uid', generateId());\n }\n if (grpLI && options && options.groupTemplate) {\n var compiledString = compileTemplate(options.groupTemplate);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'groupTemplate', curOpt.groupTemplateID, !!curOpt.isStringTemplate), li);\n }\n }\n else if (!grpLI && options && options.template) {\n var compiledString = compileTemplate(options.template);\n if (componentInstance && componentInstance.getModuleName() !== 'listview') {\n // eslint-disable-next-line\n var compiledElement = compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate, null, li);\n if (compiledElement) {\n append(compiledElement, li);\n }\n }\n else {\n append(compiledString(item, componentInstance, 'template', curOpt.templateID, !!curOpt.isStringTemplate), li);\n }\n }\n else {\n var innerDiv = createElement('div', {\n className: cssClass.textContent,\n attrs: (ariaAttributes.wrapperRole !== '' ? { role: ariaAttributes.wrapperRole } : {})\n });\n if (dataSource && (fieldData[fields.url] || (fieldData[fields.urlAttributes] &&\n fieldData[fields.urlAttributes].href))) {\n innerDiv.appendChild(anchorTag(createElement, dataSource, fields, text, null, curOpt.itemNavigable));\n }\n else {\n var element = createElement('span', {\n className: cssClass.text,\n attrs: (ariaAttributes.itemText !== '' ? { role: ariaAttributes.itemText } : {})\n });\n if (options && options.enableHtmlSanitizer) {\n element.innerText = SanitizeHtmlHelper.sanitize(text);\n }\n else {\n element.innerHTML = text;\n }\n innerDiv.appendChild(element);\n }\n li.appendChild(innerDiv);\n }\n return li;\n }\n /**\n * Returns UL element based on the given LI element.\n *\n * @param {HTMLElement[]} liElement - Specifies array of LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in UL element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateUL(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n var ariaAttributes = extend({}, defaultAriaAttributes, curOpt.ariaAttributes);\n cssClass = getModuleClass(curOpt.moduleName);\n var ulElement = createElement('ul', {\n className: cssClass.ul + ' ' + (isNullOrUndefined(className) ? '' : className),\n attrs: (ariaAttributes.listRole !== '' ? { role: ariaAttributes.listRole } : {})\n });\n append(liElement, ulElement);\n return ulElement;\n }\n ListBase.generateUL = generateUL;\n /**\n * Returns LI element with additional DIV tag based on the given LI element.\n *\n * @param {liElement} liElement - Specifies LI element.\n *\n * @param {string} className? - Specifies class name that need to be added in created DIV element.\n *\n * @param {ListBaseOptions} options? - Specifies ListBase options.\n */\n function generateIcon(createElement, liElement, className, options) {\n var curOpt = extend({}, defaultListBaseOptions, options);\n cssClass = getModuleClass(curOpt.moduleName);\n var expandElement = curOpt.expandIconPosition === 'Left' ? prepend : append;\n expandElement([createElement('div', {\n className: 'e-icons ' + curOpt.expandIconClass + ' ' +\n (isNullOrUndefined(className) ? '' : className)\n })], liElement.querySelector('.' + cssClass.textContent));\n return liElement;\n }\n ListBase.generateIcon = generateIcon;\n})(ListBase || (ListBase = {}));\n/**\n * Used to get dataSource item from complex data using fields.\n *\n * @param {Object} dataSource - Specifies an JSON or String data.\n *\n * @param {FieldsMapping} fields - Fields that are mapped from the dataSource.\n */\nexport function getFieldValues(dataItem, fields) {\n var fieldData = {};\n if (isNullOrUndefined(dataItem) || typeof (dataItem) === 'string' || typeof (dataItem) === 'number'\n || !isNullOrUndefined(dataItem.isHeader)) {\n return dataItem;\n }\n else {\n for (var _i = 0, _a = Object.keys(fields); _i < _a.length; _i++) {\n var field = _a[_i];\n var dataField = fields[\"\" + field];\n var value = !isNullOrUndefined(dataField) &&\n typeof (dataField) === 'string' ? getValue(dataField, dataItem) : undefined;\n if (!isNullOrUndefined(value)) {\n fieldData[\"\" + dataField] = value;\n }\n }\n }\n return fieldData;\n}\nfunction compileTemplate(template) {\n if (template) {\n try {\n if (typeof template !== 'function' && document.querySelector(template)) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n return undefined;\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { append, createElement, extend, EventHandler, Animation, formatUnit } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setStyleAttribute, remove, removeClass, addClass } from '@syncfusion/ej2-base';\nimport { EventBase } from './event-base';\nimport * as util from '../base/util';\nimport * as events from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * Vertical view appointment rendering\n */\nvar VerticalEvent = /** @class */ (function (_super) {\n __extends(VerticalEvent, _super);\n function VerticalEvent(parent) {\n var _this = _super.call(this, parent) || this;\n _this.dateRender = [];\n _this.renderedEvents = [];\n _this.renderedAllDayEvents = [];\n _this.overlapEvents = [];\n _this.moreEvents = [];\n _this.overlapList = [];\n _this.allDayEvents = [];\n _this.slotCount = _this.parent.activeViewOptions.timeScale.slotCount;\n _this.interval = _this.parent.activeViewOptions.timeScale.interval;\n _this.allDayLevel = 0;\n _this.startHour = _this.parent.activeView.getStartHour();\n _this.endHour = _this.parent.activeView.getEndHour();\n _this.element = _this.parent.activeView.getPanel();\n _this.fields = _this.parent.eventFields;\n _this.animation = new Animation({ progress: _this.animationUiUpdate.bind(_this) });\n _this.addEventListener();\n return _this;\n }\n VerticalEvent.prototype.renderAppointments = function () {\n if (isNullOrUndefined(this.parent)) {\n return;\n }\n if (this.parent.dragAndDropModule) {\n this.parent.dragAndDropModule.setDragArea();\n }\n this.isResourceEventTemplate = this.parent.isSpecificResourceEvents();\n var wrapperElements = [].slice.call(this.parent.element.querySelectorAll('.' + cls.BLOCK_APPOINTMENT_CLASS +\n ',.' + cls.APPOINTMENT_CLASS + ',.' + cls.ROW_COUNT_WRAPPER_CLASS));\n var isDragging = (this.parent.crudModule && this.parent.crudModule.crudObj.isCrudAction) ? true : false;\n for (var _i = 0, wrapperElements_1 = wrapperElements; _i < wrapperElements_1.length; _i++) {\n var wrapper = wrapperElements_1[_i];\n if (isDragging && !(wrapper.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS) ||\n wrapper.classList.contains(cls.ROW_COUNT_WRAPPER_CLASS))) {\n var groupIndex = parseInt(wrapper.getAttribute('data-group-index'), 10);\n for (var j = 0, len = this.parent.crudModule.crudObj.sourceEvent.length; j < len; j++) {\n if (groupIndex === this.parent.crudModule.crudObj.sourceEvent[parseInt(j.toString(), 10)].groupIndex ||\n groupIndex === this.parent.crudModule.crudObj.targetEvent[parseInt(j.toString(), 10)].groupIndex) {\n remove(wrapper);\n }\n }\n }\n else {\n remove(wrapper);\n }\n }\n if (!this.element.querySelector('.' + cls.WORK_CELLS_CLASS)) {\n return;\n }\n if (this.parent.virtualScrollModule) {\n this.parent.virtualScrollModule.updateFocusedWorkCell();\n }\n this.allDayElement = [].slice.call(this.element.querySelectorAll('.' + cls.ALLDAY_CELLS_CLASS));\n this.setAllDayRowHeight(0);\n if (this.parent.eventsProcessed.length === 0 && this.parent.blockProcessed.length === 0) {\n return;\n }\n var expandCollapse = this.element.querySelector('.' + cls.ALLDAY_APPOINTMENT_SECTION_CLASS);\n EventHandler.remove(expandCollapse, 'click', this.rowExpandCollapse);\n EventHandler.add(expandCollapse, 'click', this.rowExpandCollapse, this);\n this.renderedEvents = [];\n this.renderedAllDayEvents = [];\n this.initializeValues();\n this.processBlockEvents();\n this.renderEvents('normalEvents');\n if (this.allDayEvents.length > 0) {\n this.allDayEvents = this.allDayEvents.filter(function (item, index, arr) {\n return index === arr.map(function (item) { return item.Guid; }).indexOf(item.Guid);\n });\n removeClass(this.allDayElement, cls.ALLDAY_ROW_ANIMATE_CLASS);\n this.slots.push(this.parent.activeView.renderDates.map(function (date) { return +date; }));\n this.renderEvents('allDayEvents');\n this.animation.animate(this.allDayElement[0]);\n }\n this.parent.notify(events.contentReady, {});\n addClass(this.allDayElement, cls.ALLDAY_ROW_ANIMATE_CLASS);\n if (isDragging) {\n this.parent.crudModule.crudObj.isCrudAction = false;\n }\n this.parent.renderTemplates();\n };\n VerticalEvent.prototype.initializeValues = function () {\n this.resources = (this.parent.activeViewOptions.group.resources.length > 0) ? this.parent.uiStateValues.isGroupAdaptive ?\n [this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex]] :\n this.parent.resourceBase.lastResourceLevel : [];\n if (this.resources.length > 0 && this.parent.activeViewOptions.allowVirtualScrolling && this.parent.virtualScrollModule) {\n this.resources = this.parent.resourceBase.renderedResources;\n }\n this.cellHeight =\n parseFloat(this.parent.element.querySelector('.e-content-wrap tbody tr').getBoundingClientRect().height.toFixed(2));\n this.dateRender[0] = this.parent.activeView.renderDates;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n for (var i = 0, len = this.resources.length; i < len; i++) {\n this.dateRender[parseInt(i.toString(), 10)] = this.resources[parseInt(i.toString(), 10)].renderDates;\n }\n }\n };\n VerticalEvent.prototype.getHeight = function (start, end) {\n var appHeight = (util.getUniversalTime(end) - util.getUniversalTime(start)) /\n util.MS_PER_MINUTE * (this.cellHeight * this.slotCount) / this.interval;\n appHeight = (appHeight <= 0) ? this.cellHeight : appHeight;\n return appHeight;\n };\n VerticalEvent.prototype.appendEvent = function (eventObj, appointmentElement, index, appLeft) {\n var appointmentWrap = this.element.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS + '[id=\"' + cls.APPOINTMENT_WRAPPER_CLASS + '-' + index + '\"]');\n if (this.parent.enableRtl) {\n setStyleAttribute(appointmentElement, { 'right': appLeft });\n }\n else {\n setStyleAttribute(appointmentElement, { 'left': appLeft });\n }\n var eventType = appointmentElement.classList.contains(cls.BLOCK_APPOINTMENT_CLASS) ? 'blockEvent' : 'event';\n var args = {\n data: extend({}, eventObj, null, true),\n element: appointmentElement, cancel: false, type: eventType\n };\n this.parent.trigger(events.eventRendered, args, function (eventArgs) {\n if (!eventArgs.cancel) {\n appointmentWrap.appendChild(appointmentElement);\n }\n });\n };\n VerticalEvent.prototype.processBlockEvents = function () {\n var resources = this.getResourceList();\n var dateCount = this.getStartCount();\n for (var _i = 0, resources_1 = resources; _i < resources_1.length; _i++) {\n var resource = resources_1[_i];\n var renderDates = this.dateRender[parseInt(resource.toString(), 10)];\n for (var day = 0, length_1 = renderDates.length; day < length_1; day++) {\n var startDate = new Date(renderDates[parseInt(day.toString(), 10)].getTime());\n var endDate = util.addDays(renderDates[parseInt(day.toString(), 10)], 1);\n var filterEvents = this.filterEvents(startDate, endDate, this.parent.blockProcessed, this.resources[parseInt(resource.toString(), 10)]);\n for (var _a = 0, filterEvents_1 = filterEvents; _a < filterEvents_1.length; _a++) {\n var event_1 = filterEvents_1[_a];\n if (this.parent.resourceBase) {\n this.setValues(event_1, resource);\n }\n this.renderBlockEvents(event_1, day, resource, dateCount);\n this.cssClass = null;\n this.groupOrder = null;\n }\n dateCount += 1;\n }\n }\n };\n VerticalEvent.prototype.renderBlockEvents = function (eventObj, dayIndex, resource, dayCount) {\n var spannedData = this.isSpannedEvent(eventObj, dayIndex, resource);\n var eStart = spannedData[this.fields.startTime];\n var eEnd = spannedData[this.fields.endTime];\n var currentDate = util.resetTime(new Date(this.dateRender[parseInt(resource.toString(), 10)][parseInt(dayIndex.toString(), 10)].getTime()));\n var schedule = util.getStartEndHours(currentDate, this.startHour, this.endHour);\n if (eStart <= eEnd && this.isValidEvent(eventObj, eStart, eEnd, schedule) && this.isWorkDayAvailable(resource, eStart)) {\n var blockTop = void 0;\n var blockHeight = void 0;\n if (spannedData[this.fields.isAllDay]) {\n var contentWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS + ' table');\n blockHeight = formatUnit(contentWrap.offsetHeight);\n blockTop = formatUnit(0);\n }\n else {\n blockHeight = formatUnit(this.getHeight(eStart, eEnd));\n blockTop = formatUnit(this.getTopValue(eStart, dayIndex, resource));\n }\n var appointmentElement = this.createBlockAppointmentElement(eventObj, resource, this.isResourceEventTemplate);\n setStyleAttribute(appointmentElement, { 'width': '100%', 'height': blockHeight, 'top': blockTop });\n var index = this.getDayIndex(dayIndex, resource, dayCount);\n this.appendEvent(eventObj, appointmentElement, index, '0px');\n }\n };\n VerticalEvent.prototype.renderEvents = function (eventType) {\n removeClass(this.allDayElement, cls.ALLDAY_ROW_ANIMATE_CLASS);\n var eventCollection = (eventType === 'allDayEvents') ? this.sortByDateTime(this.allDayEvents) : undefined;\n var resources = this.getResourceList();\n var dateCount = this.getStartCount();\n var isRender;\n var appHeight = eventType === 'allDayEvents' ? util.getElementHeightFromClass(this.element.querySelector('.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS), cls.APPOINTMENT_CLASS) : 0;\n var allDayRowTop = eventType === 'allDayEvents' && this.allDayElement.length > 0 ? this.allDayElement[0].offsetTop : 0;\n var _loop_1 = function (resource) {\n isRender = true;\n if (this_1.parent.crudModule && this_1.parent.crudModule.crudObj.isCrudAction && eventType !== 'allDayEvents'\n && !this_1.parent.uiStateValues.isGroupAdaptive) {\n if (this_1.parent.crudModule.crudObj.sourceEvent.filter(function (data) { return data.groupIndex === resource; }).length === 0 &&\n this_1.parent.crudModule.crudObj.targetEvent.filter(function (data) { return data.groupIndex === resource; }).length === 0) {\n isRender = false;\n }\n }\n this_1.slots = [];\n var renderDates = this_1.dateRender[parseInt(resource.toString(), 10)];\n var renderedDate = this_1.getRenderedDates(renderDates) || renderDates;\n this_1.slots.push(renderDates.map(function (date) { return +date; }));\n for (var day = 0, length_2 = renderDates.length; day < length_2 &&\n renderDates[parseInt(day.toString(), 10)] <= renderedDate[renderedDate.length - 1]; day++) {\n this_1.renderedEvents = [];\n var startDate = new Date(renderDates[parseInt(day.toString(), 10)].getTime());\n var endDate = util.addDays(renderDates[parseInt(day.toString(), 10)], 1);\n var filterEvents = this_1.filterEvents(startDate, endDate, eventCollection, this_1.resources[parseInt(resource.toString(), 10)]);\n if (isRender) {\n for (var _i = 0, filterEvents_2 = filterEvents; _i < filterEvents_2.length; _i++) {\n var event_2 = filterEvents_2[_i];\n if (this_1.parent.resourceBase) {\n this_1.setValues(event_2, resource);\n }\n if (eventType === 'allDayEvents') {\n this_1.renderAllDayEvents(event_2, day, resource, dateCount, false, allDayRowTop, appHeight);\n }\n else {\n if (this_1.isAllDayAppointment(event_2)) {\n this_1.allDayEvents.push(extend({}, event_2, null, true));\n }\n else {\n if (this_1.parent.eventSettings.enableMaxHeight) {\n if (this_1.getOverlapIndex(event_2, day, false, resource) > 0) {\n continue;\n }\n }\n this_1.renderNormalEvents(event_2, day, resource, dateCount);\n }\n }\n this_1.cssClass = null;\n this_1.groupOrder = null;\n }\n }\n else {\n for (var _a = 0, filterEvents_3 = filterEvents; _a < filterEvents_3.length; _a++) {\n var event_3 = filterEvents_3[_a];\n if (this_1.isAllDayAppointment(event_3)) {\n this_1.allDayEvents.push(extend({}, event_3, null, true));\n }\n }\n }\n dateCount += 1;\n }\n };\n var this_1 = this;\n for (var _i = 0, resources_2 = resources; _i < resources_2.length; _i++) {\n var resource = resources_2[_i];\n _loop_1(resource);\n }\n };\n VerticalEvent.prototype.getStartCount = function () {\n return this.parent.virtualScrollModule && this.parent.activeViewOptions.allowVirtualScrolling && this.parent.timeScale.enable ?\n parseInt(this.element.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS).getAttribute('id').split('-').slice(-1)[0], 10) : 0;\n };\n VerticalEvent.prototype.getDayIndex = function (dayIndex, resource, dayCount) {\n var _this = this;\n if (!this.parent.activeViewOptions.group.byDate) {\n return dayCount;\n }\n if (this.parent.activeViewOptions.group.byDate && !this.parent.activeViewOptions.group.hideNonWorkingDays) {\n var renderedIndex = this.parent.resourceBase.lastResourceLevel[0].renderDates.indexOf(this.dateRender[parseInt(resource.toString(), 10)][parseInt(dayIndex.toString(), 10)]);\n return (this.resources.length * renderedIndex) + resource;\n }\n var dateIndex = 0;\n var firstColumn = this.parent.activeView.colLevels[0];\n var currentDate = this.dateRender[parseInt(resource.toString(), 10)][parseInt(dayIndex.toString(), 10)].getTime();\n var currentResources = [];\n for (var i = 0; i < firstColumn.length; i++) {\n currentResources = this.parent.resourceBase.resourceDateTree[parseInt(i.toString(), 10)];\n if (currentDate === firstColumn[parseInt(i.toString(), 10)].date.getTime()) {\n break;\n }\n dateIndex = dateIndex + firstColumn[parseInt(i.toString(), 10)].colSpan;\n }\n var resIndex = currentResources.findIndex(function (x) { return x.groupOrder.toString() ===\n _this.resources[parseInt(resource.toString(), 10)].groupOrder.toString(); });\n if (resIndex < 0) {\n return dateIndex;\n }\n return dateIndex + resIndex;\n };\n VerticalEvent.prototype.setValues = function (event, resourceIndex) {\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.cssClass = this.resources[parseInt(resourceIndex.toString(), 10)].cssClass;\n this.groupOrder = this.resources[parseInt(resourceIndex.toString(), 10)].groupOrder;\n }\n else {\n this.cssClass = this.parent.resourceBase.getCssClass(event);\n }\n };\n VerticalEvent.prototype.getResourceList = function () {\n // eslint-disable-next-line prefer-spread\n var resources = Array.apply(null, {\n length: (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) ?\n this.resources.length : 1\n }).map(function (value, index) { return index; });\n return resources;\n };\n // eslint-disable-next-line max-len\n VerticalEvent.prototype.createAppointmentElement = function (record, isAllDay, data, resource) {\n var fieldMapping = this.parent.eventFields;\n var recordSubject = (record[fieldMapping.subject] || this.parent.eventSettings.fields.subject.default\n || this.parent.localeObj.getConstant('addTitle'));\n var appointmentWrapper = createElement('div', {\n className: cls.APPOINTMENT_CLASS,\n attrs: {\n 'data-id': 'Appointment_' + record[fieldMapping.id],\n 'data-guid': record.Guid,\n 'role': 'button',\n 'tabindex': '0',\n 'aria-disabled': this.parent.eventBase.getReadonlyAttribute(record),\n 'aria-label': this.parent.getAnnouncementString(record)\n }\n });\n if (record[this.fields.isReadonly]) {\n addClass([appointmentWrapper], 'e-read-only');\n }\n var appointmentDetails = createElement('div', { className: cls.APPOINTMENT_DETAILS });\n appointmentWrapper.appendChild(appointmentDetails);\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var resourceIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex : resource;\n appointmentWrapper.setAttribute('data-group-index', resourceIndex.toString());\n }\n var templateElement;\n var eventData = data;\n if (!isNullOrUndefined(this.parent.activeViewOptions.eventTemplate)) {\n var elementId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.eventTemplateName;\n var templateId = elementId + viewName + 'eventTemplate';\n var resIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex : resource;\n var templateName = 'eventTemplate' + (this.isResourceEventTemplate ? '_' + resIndex : '');\n templateElement = this.parent.getAppointmentTemplate()(record, this.parent, templateName, templateId, false);\n }\n else {\n var appointmentSubject = createElement('div', { className: cls.SUBJECT_CLASS });\n this.parent.sanitize(recordSubject, appointmentSubject);\n if (isAllDay) {\n if (record[fieldMapping.isAllDay]) {\n templateElement = [appointmentSubject];\n }\n else {\n templateElement = [];\n var appointmentStartTime = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''),\n innerHTML: this.parent.getTimeString(record[fieldMapping.startTime])\n });\n var appointmentEndTime = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''),\n innerHTML: this.parent.getTimeString(record[fieldMapping.endTime])\n });\n addClass([appointmentSubject], 'e-text-center');\n if (!eventData.isLeft) {\n templateElement.push(appointmentStartTime);\n }\n templateElement.push(appointmentSubject);\n if (!eventData.isRight) {\n templateElement.push(appointmentEndTime);\n }\n }\n }\n else {\n var timeStr = this.parent.getTimeString(record[fieldMapping.startTime]) + ' - ' +\n this.parent.getTimeString(record[fieldMapping.endTime]);\n var appointmentTime = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''),\n innerHTML: timeStr\n });\n var appointmentLocation = createElement('div', { className: cls.LOCATION_CLASS });\n this.parent.sanitize((record[fieldMapping.location] || this.parent.eventSettings.fields.location.default || ''), appointmentLocation);\n templateElement = [appointmentSubject, appointmentTime, appointmentLocation];\n }\n }\n append(templateElement, appointmentDetails);\n if (!this.parent.isAdaptive &&\n (!isNullOrUndefined(record[fieldMapping.recurrenceRule]) || !isNullOrUndefined(record[fieldMapping.recurrenceID]))) {\n var iconClass = (record[fieldMapping.id] === record[fieldMapping.recurrenceID]) ?\n cls.EVENT_RECURRENCE_ICON_CLASS : cls.EVENT_RECURRENCE_EDIT_ICON_CLASS;\n var recurrenceIcon = createElement('div', { className: cls.ICON + ' ' + iconClass });\n if (isAllDay) {\n appointmentDetails.appendChild(recurrenceIcon);\n }\n else {\n appointmentWrapper.appendChild(recurrenceIcon);\n }\n }\n this.parent.eventBase.renderSpannedIcon(isAllDay ? appointmentDetails : appointmentWrapper, eventData);\n if (!isNullOrUndefined(this.cssClass)) {\n addClass([appointmentWrapper], this.cssClass);\n }\n this.applyResourceColor(appointmentWrapper, record, 'backgroundColor', this.groupOrder);\n this.renderResizeHandler(appointmentWrapper, eventData, record[this.fields.isReadonly]);\n return appointmentWrapper;\n };\n VerticalEvent.prototype.createMoreIndicator = function (allDayRow, count, currentDay) {\n var index = currentDay + count;\n var countWrapper = allDayRow[parseInt(index.toString(), 10)];\n if (countWrapper.childElementCount <= 0) {\n var innerCountWrap = createElement('div', {\n className: cls.ROW_COUNT_WRAPPER_CLASS,\n id: cls.ROW_COUNT_WRAPPER_CLASS + '-' + index.toString()\n });\n var moreIndicatorElement = createElement('div', {\n className: cls.MORE_INDICATOR_CLASS,\n attrs: { 'tabindex': '0', 'data-index': index.toString(), 'data-count': '1' },\n innerHTML: '+1 ' + (this.parent.isAdaptive ? '' : this.parent.localeObj.getConstant('more'))\n });\n innerCountWrap.appendChild(moreIndicatorElement);\n countWrapper.appendChild(innerCountWrap);\n EventHandler.add(moreIndicatorElement, 'click', this.rowExpandCollapse, this);\n }\n else {\n var countCell = countWrapper.querySelector('.' + cls.MORE_INDICATOR_CLASS);\n var moreCount = parseInt(countCell.getAttribute('data-count'), 10) + 1;\n countCell.setAttribute('data-count', moreCount.toString());\n countCell.innerHTML = '+' + this.parent.globalize.formatNumber(moreCount) + ' ' + (this.parent.isAdaptive ? '' : this.parent.localeObj.getConstant('more'));\n }\n };\n VerticalEvent.prototype.isSpannedEvent = function (record, day, resource) {\n var currentDate = util.resetTime(this.dateRender[parseInt(resource.toString(), 10)][parseInt(day.toString(), 10)]);\n var renderedDate = this.getRenderedDates(this.dateRender[parseInt(resource.toString(), 10)]) || [currentDate];\n var currentDay = renderedDate.filter(function (date) { return date.getDay() === day; });\n if (currentDay.length === 0) {\n currentDate = util.resetTime(renderedDate[0]);\n }\n var field = this.parent.eventFields;\n var schedule = util.getStartEndHours(currentDate, this.startHour, this.endHour);\n var event = extend({}, record, null, true);\n event.isSpanned = { isBottom: false, isTop: false };\n if (record[field.startTime].getTime() < schedule.startHour.getTime()) {\n event[field.startTime] = schedule.startHour;\n event.isSpanned.isTop = true;\n }\n if (record[field.endTime].getTime() > schedule.endHour.getTime()) {\n event[field.endTime] = schedule.endHour;\n event.isSpanned.isBottom = true;\n }\n var eventDates = this.updateEventMinimumDuration(schedule, event[field.startTime], event[field.endTime]);\n event[field.startTime] = eventDates.startDate;\n event[field.endTime] = eventDates.endDate;\n return event;\n };\n VerticalEvent.prototype.isWorkDayAvailable = function (resource, start) {\n if (this.parent.activeViewOptions.group.hideNonWorkingDays && this.resources.length > 0) {\n var workDays = this.resources[parseInt(resource.toString(), 10)].\n resourceData[this.resources[parseInt(resource.toString(), 10)].resource.workDaysField] ||\n this.parent.activeViewOptions.workDays;\n return workDays && workDays.indexOf(start.getDay()) >= 0;\n }\n return true;\n };\n // eslint-disable-next-line max-len\n VerticalEvent.prototype.renderAllDayEvents = function (eventObj, dayIndex, resource, dayCount, inline, cellTop, eventHeight) {\n var _this = this;\n var currentDates = this.getRenderedDates(this.dateRender[parseInt(resource.toString(), 10)]) ||\n this.dateRender[parseInt(resource.toString(), 10)];\n if (this.parent.activeViewOptions.group.byDate) {\n this.slots[0] = [this.dateRender[parseInt(resource.toString(), 10)][parseInt(dayIndex.toString(), 10)].getTime()];\n currentDates = [this.dateRender[parseInt(resource.toString(), 10)][parseInt(dayIndex.toString(), 10)]];\n }\n var record = this.splitEvent(eventObj, currentDates)[0];\n var eStart = new Date(record[this.parent.eventFields.startTime].getTime());\n var eEnd = new Date(record[this.parent.eventFields.endTime].getTime());\n var appWidth = 0;\n var topValue = 1;\n var isDateRange = currentDates[0].getTime() <= eStart.getTime() &&\n util.addDays(currentDates.slice(-1)[0], 1).getTime() >= eStart.getTime();\n if (eStart <= eEnd && isDateRange && this.isWorkDayAvailable(resource, eStart)) {\n var isAlreadyRendered = [];\n if (this.renderedAllDayEvents[parseInt(resource.toString(), 10)]) {\n isAlreadyRendered = this.renderedAllDayEvents[parseInt(resource.toString(), 10)].filter(function (event) {\n return event.Guid === eventObj.Guid;\n });\n if (this.parent.activeViewOptions.group.byDate) {\n isAlreadyRendered = isAlreadyRendered.filter(function (event) {\n return event[_this.parent.eventFields.startTime] >= currentDates[parseInt(dayIndex.toString(), 10)] &&\n event[_this.parent.eventFields.endTime] <=\n util.addDays(new Date(+currentDates[parseInt(dayIndex.toString(), 10)]), 1);\n });\n }\n }\n if (isAlreadyRendered.length === 0) {\n var allDayDifference_1 = record.data.count;\n var allDayIndex_1 = this.getOverlapIndex(record, dayIndex, true, resource);\n record.Index = allDayIndex_1;\n this.allDayLevel = (this.allDayLevel < allDayIndex_1) ? allDayIndex_1 : this.allDayLevel;\n var widthAdjustment = record.data.isRight ? 0 :\n this.parent.currentView === 'Day' ? 4 : 7;\n if (allDayDifference_1 >= 0) {\n appWidth = (allDayDifference_1 * 100) - widthAdjustment;\n }\n if (isNullOrUndefined(this.renderedAllDayEvents[parseInt(resource.toString(), 10)])) {\n this.renderedAllDayEvents[parseInt(resource.toString(), 10)] = [];\n }\n this.renderedAllDayEvents[parseInt(resource.toString(), 10)].push(extend({}, record, null, true));\n var allDayRow_1 = [].slice.call(this.element.querySelector('.' + cls.ALLDAY_ROW_CLASS).children);\n var wIndex_1 = this.getDayIndex(dayIndex, resource, dayCount);\n var eventWrapper_1 = this.element.querySelector('.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS +\n ':nth-child(' + (wIndex_1 + 1) + ')');\n var appointmentElement_1;\n if (inline) {\n appointmentElement_1 = this.parent.inlineModule.createInlineAppointmentElement(eventObj);\n }\n else {\n appointmentElement_1 = this.createAppointmentElement(eventObj, true, record.data, resource);\n }\n addClass([appointmentElement_1], cls.ALLDAY_APPOINTMENT_CLASS);\n var eventData = extend({}, record.data, null, true);\n eventObj.data = eventData;\n var args = { data: eventObj, element: appointmentElement_1, cancel: false };\n this.parent.trigger(events.eventRendered, args, function (eventArgs) {\n if (!eventArgs.cancel) {\n eventWrapper_1.appendChild(appointmentElement_1);\n topValue += (allDayIndex_1 === 0 ? cellTop : (cellTop + (allDayIndex_1 * eventHeight))) + 1;\n setStyleAttribute(appointmentElement_1, { 'width': appWidth + '%', 'top': formatUnit(topValue) });\n if (allDayIndex_1 > 1) {\n _this.moreEvents.push(appointmentElement_1);\n for (var count = 0, length_3 = allDayDifference_1; count < length_3; count++) {\n _this.createMoreIndicator(allDayRow_1, count, wIndex_1);\n }\n }\n _this.allDayElement[0].setAttribute('data-count', _this.allDayLevel.toString());\n var allDayRowHeight = ((!_this.parent.uiStateValues.expand && _this.allDayLevel > 2) ?\n (3 * eventHeight) : ((_this.allDayLevel + 1) * eventHeight)) + 4;\n _this.setAllDayRowHeight(allDayRowHeight);\n _this.addOrRemoveClass();\n _this.wireAppointmentEvents(appointmentElement_1, eventObj);\n }\n });\n }\n }\n };\n VerticalEvent.prototype.renderNormalEvents = function (eventObj, dayIndex, resource, dayCount, inline) {\n var record = this.isSpannedEvent(eventObj, dayIndex, resource);\n var eStart = record[this.fields.startTime];\n var eEnd = record[this.fields.endTime];\n var appWidth = '0%';\n var appLeft = '0%';\n var topValue = 0;\n var currentDate = util.resetTime(new Date(this.dateRender[parseInt(resource.toString(), 10)][parseInt(dayIndex.toString(), 10)].getTime()));\n var schedule = util.getStartEndHours(currentDate, this.startHour, this.endHour);\n var isValidEvent = this.isValidEvent(eventObj, eStart, eEnd, schedule);\n if ((eStart.getTime() < this.parent.minDate.getTime()) || (eEnd.getTime() > this.parent.maxDate.getTime())) {\n return;\n }\n if (eStart <= eEnd && isValidEvent && this.isWorkDayAvailable(resource, eStart)) {\n var appHeight = this.getHeight(eStart, eEnd);\n if (eStart.getTime() > schedule.startHour.getTime()) {\n topValue = this.getTopValue(eStart, dayIndex, resource);\n }\n var appIndex = this.getOverlapIndex(record, dayIndex, false, resource);\n record.Index = appIndex;\n this.overlapList.push(record);\n if (this.overlapList.length > 1) {\n if (isNullOrUndefined(this.overlapEvents[parseInt(appIndex.toString(), 10)])) {\n this.overlapEvents[parseInt(appIndex.toString(), 10)] = [];\n }\n this.overlapEvents[parseInt(appIndex.toString(), 10)].push(record);\n }\n else {\n this.overlapEvents = [];\n this.overlapEvents.push([record]);\n }\n appWidth = this.getEventWidth();\n var argsData = {\n index: appIndex, left: appLeft, width: appWidth,\n day: dayCount, dayIndex: dayIndex, record: record, resource: resource\n };\n var tempData = this.adjustOverlapElements(argsData);\n appWidth = (tempData.appWidth);\n if (isNullOrUndefined(this.renderedEvents[parseInt(resource.toString(), 10)])) {\n this.renderedEvents[parseInt(resource.toString(), 10)] = [];\n }\n this.renderedEvents[parseInt(resource.toString(), 10)].push(extend({}, record, null, true));\n var appointmentElement = void 0;\n if (inline) {\n appointmentElement = this.parent.inlineModule.createInlineAppointmentElement(eventObj);\n }\n else {\n appointmentElement = this.createAppointmentElement(eventObj, false, record.isSpanned, resource);\n }\n setStyleAttribute(appointmentElement, {\n 'width': (this.parent.eventSettings.enableMaxHeight ? '100%' : tempData.appWidth),\n 'height': appHeight + 'px', 'top': topValue + 'px'\n });\n var iconHeight = appointmentElement.querySelectorAll('.' + cls.EVENT_INDICATOR_CLASS).length * 15;\n var maxHeight = appHeight - 40 - iconHeight;\n var subjectElement = appointmentElement.querySelector('.' + cls.SUBJECT_CLASS);\n if (!this.parent.isAdaptive && subjectElement) {\n subjectElement.style.maxHeight = formatUnit(maxHeight);\n }\n var index = this.getDayIndex(dayIndex, resource, dayCount);\n var eventData = {};\n eventData[this.fields.startTime] = eventObj[this.fields.startTime];\n eventData[this.fields.endTime] = eventObj[this.fields.endTime];\n record.data = eventData;\n this.appendEvent(record, appointmentElement, index, tempData.appLeft);\n this.wireAppointmentEvents(appointmentElement, eventObj);\n }\n };\n VerticalEvent.prototype.getEventWidth = function () {\n var width = this.parent.currentView === 'Day' ? 97 : 94;\n var tempWidth = ((width - this.overlapEvents.length) / this.overlapEvents.length);\n return (tempWidth < 0 ? 0 : tempWidth) + '%';\n };\n VerticalEvent.prototype.getEventLeft = function (appWidth, index) {\n var tempLeft = (parseFloat(appWidth) + 1) * index;\n return (tempLeft > 99 ? 99 : tempLeft) + '%';\n };\n VerticalEvent.prototype.getTopValue = function (date, day, resource) {\n var startEndHours = util.getStartEndHours(util.resetTime(this.dateRender[parseInt(resource.toString(), 10)][parseInt(day.toString(), 10)]), this.startHour, this.endHour);\n var startHour = startEndHours.startHour;\n var diffInMinutes = ((date.getHours() - startHour.getHours()) * 60) + (date.getMinutes() - startHour.getMinutes());\n return (this.parent.activeViewOptions.timeScale.enable) ? ((diffInMinutes * this.cellHeight * this.slotCount) / this.interval) : 0;\n };\n VerticalEvent.prototype.getOverlapIndex = function (record, day, isAllDay, resource) {\n var _this = this;\n var fieldMapping = this.parent.eventFields;\n var eventsList = [];\n var appIndex = -1;\n this.overlapEvents = [];\n if (isAllDay) {\n if (!isNullOrUndefined(this.renderedAllDayEvents[parseInt(resource.toString(), 10)])) {\n var date_1 = util.resetTime(new Date(this.dateRender[parseInt(resource.toString(), 10)][parseInt(day.toString(), 10)].getTime()));\n eventsList = this.renderedAllDayEvents[parseInt(resource.toString(), 10)].filter(function (app) {\n return util.resetTime(app[fieldMapping.startTime]).getTime() <= date_1.getTime() &&\n util.resetTime(app[fieldMapping.endTime]).getTime() >= date_1.getTime();\n });\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n eventsList = this.filterEventsByResource(this.resources[parseInt(resource.toString(), 10)], eventsList);\n }\n }\n }\n else {\n var appointmentList_1 = !isNullOrUndefined(this.renderedEvents[parseInt(resource.toString(), 10)]) ?\n this.renderedEvents[parseInt(resource.toString(), 10)] : [];\n var appointment_1 = [];\n var recordStart_1 = record[fieldMapping.startTime];\n var recordEnd_1 = record[fieldMapping.endTime];\n this.overlapList = appointmentList_1.filter(function (data) {\n return (data[fieldMapping.endTime] > recordStart_1 && data[fieldMapping.startTime] <= recordEnd_1) ||\n (data[fieldMapping.startTime] >= recordEnd_1 && data[fieldMapping.endTime] <= recordStart_1) ||\n (data[fieldMapping.endTime].getTime() === data[fieldMapping.startTime].getTime() &&\n data[fieldMapping.startTime].getTime() === recordStart_1.getTime() && data[fieldMapping.endTime] < recordEnd_1);\n });\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.overlapList = this.filterEventsByResource(this.resources[parseInt(resource.toString(), 10)], this.overlapList);\n }\n this.overlapList.forEach(function (obj) {\n var filterList = appointmentList_1.filter(function (data) {\n return data[fieldMapping.endTime] > obj[fieldMapping.startTime] && data[fieldMapping.startTime] <= obj[fieldMapping.endTime];\n });\n if (_this.parent.activeViewOptions.group.resources.length > 0) {\n filterList = _this.filterEventsByResource(_this.resources[parseInt(resource.toString(), 10)], filterList);\n }\n var collection = filterList.filter(function (val) {\n return _this.overlapList.indexOf(val) === -1;\n });\n if (collection.length > 0) {\n appointment_1 = appointment_1.concat(collection);\n }\n });\n for (var i = 0; i < appointment_1.length - 1; i++) {\n for (var j = i + 1; j < appointment_1.length; j++) {\n if (appointment_1[parseInt(i.toString(), 10)][fieldMapping.id] ===\n appointment_1[parseInt(j.toString(), 10)][fieldMapping.id]) {\n appointment_1.splice(j, 1);\n j--;\n }\n }\n }\n this.overlapList = this.overlapList.concat(appointment_1);\n eventsList = this.overlapList;\n for (var _i = 0, eventsList_1 = eventsList; _i < eventsList_1.length; _i++) {\n var event_4 = eventsList_1[_i];\n var record_1 = event_4;\n var index = record_1.Index;\n if (isNullOrUndefined(this.overlapEvents[parseInt(index.toString(), 10)])) {\n this.overlapEvents[parseInt(index.toString(), 10)] = [event_4];\n }\n else {\n this.overlapEvents[parseInt(index.toString(), 10)].push(event_4);\n }\n }\n }\n if (!isAllDay) {\n eventsList = eventsList.filter(function (obj) { return (obj[fieldMapping.startTime] === record[fieldMapping.startTime] &&\n obj[fieldMapping.endTime] > record[fieldMapping.endTime] || obj[fieldMapping.endTime] > record[fieldMapping.startTime] &&\n obj[fieldMapping.startTime] < record[fieldMapping.endTime] || obj[fieldMapping.endTime] === record[fieldMapping.startTime]\n && obj[fieldMapping.startTime] === record[fieldMapping.endTime]) ||\n ((obj[fieldMapping.startTime].getTime() === record[fieldMapping.startTime].getTime() &&\n obj[fieldMapping.endTime].getTime() === record[fieldMapping.endTime].getTime())\n || (obj[fieldMapping.startTime].getTime() === record[fieldMapping.startTime].getTime() &&\n obj[fieldMapping.endTime].getTime() < record[fieldMapping.endTime].getTime() ||\n obj[fieldMapping.endTime].getTime() > record[fieldMapping.endTime].getTime())); });\n }\n if (eventsList.length > 0) {\n var appLevel = eventsList.map(function (obj) { return obj.Index; });\n appIndex = (appLevel.length > 0) ? this.getSmallestMissingNumber(appLevel) : 0;\n }\n return (appIndex === -1) ? 0 : appIndex;\n };\n VerticalEvent.prototype.adjustOverlapElements = function (args) {\n var data = { appWidth: args.width, appLeft: args.left };\n for (var i = 0, length1 = this.overlapEvents.length; i < length1; i++) {\n if (!isNullOrUndefined(this.overlapEvents[parseInt(i.toString(), 10)])) {\n for (var j = 0, length2 = this.overlapEvents[parseInt(i.toString(), 10)].length; j < length2; j++) {\n var dayCount = this.getDayIndex(args.dayIndex, args.resource, args.day);\n var element = this.element.querySelector('#e-appointment-wrapper-' + dayCount);\n if (element && element.childElementCount > 0) {\n var eleGuid = this.overlapEvents[parseInt(i.toString(), 10)][parseInt(j.toString(), 10)].Guid;\n if (element.querySelectorAll('div[data-guid=\"' + eleGuid + '\"]').length > 0 && eleGuid !== args.record.Guid) {\n var apps = element.querySelector('div[data-guid=\"' + eleGuid + '\"]');\n if (parseFloat(args.width) <= parseFloat(apps.style.width)) {\n if (this.parent.enableRtl) {\n apps.style.right = this.getEventLeft(args.width, i);\n }\n else {\n apps.style.left = this.getEventLeft(args.width, i);\n }\n apps.style.width = ((parseFloat(args.width))) + '%';\n data.appWidth = apps.style.width;\n }\n else {\n data.appWidth = apps.style.width;\n }\n }\n else {\n var appWidth = args.width;\n if (isNullOrUndefined(this.overlapEvents[i - 1])) {\n appWidth = this.getEventWidth();\n }\n data.appWidth = appWidth;\n data.appLeft = this.getEventLeft(appWidth, args.index);\n }\n }\n }\n }\n }\n return data;\n };\n VerticalEvent.prototype.setAllDayRowHeight = function (height) {\n var dateHeader = this.parent.element.querySelector('.' + cls.DATE_HEADER_WRAP_CLASS);\n if (this.parent.height === 'auto' || !this.parent.enableAllDayScroll) {\n addClass([dateHeader], cls.ALLDAY_APPOINTMENT_AUTO);\n }\n var allDayRow = this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS);\n allDayRow.style.height = '';\n if (this.parent.uiStateValues.expand && this.parent.height !== 'auto' && this.parent.enableAllDayScroll) {\n allDayRow.style.height = (height / 12) + 'em';\n this.parent.eventBase.allDayExpandScroll(dateHeader);\n }\n else {\n for (var _i = 0, _a = this.allDayElement; _i < _a.length; _i++) {\n var element = _a[_i];\n element.style.height = (height / 12) + 'em';\n }\n removeClass([dateHeader], cls.ALLDAY_APPOINTMENT_SCROLL);\n }\n };\n VerticalEvent.prototype.addOrRemoveClass = function () {\n var _this = this;\n this.moreEvents.filter(function (element) {\n if (!_this.parent.uiStateValues.expand && _this.allDayLevel > 2) {\n addClass([element], cls.EVENT_COUNT_CLASS);\n element.setAttribute('tabindex', '-1');\n }\n else {\n removeClass([element], cls.EVENT_COUNT_CLASS);\n element.setAttribute('tabindex', '0');\n }\n });\n var moreEventCount = this.element.querySelector('.' + cls.ALLDAY_APPOINTMENT_SECTION_CLASS);\n if (this.parent.uiStateValues.expand) {\n removeClass([moreEventCount], cls.APPOINTMENT_ROW_EXPAND_CLASS);\n addClass([moreEventCount], cls.APPOINTMENT_ROW_COLLAPSE_CLASS);\n }\n else {\n removeClass([moreEventCount], cls.APPOINTMENT_ROW_COLLAPSE_CLASS);\n addClass([moreEventCount], cls.APPOINTMENT_ROW_EXPAND_CLASS);\n }\n if (this.allDayLevel > 2) {\n removeClass([moreEventCount], cls.DISABLE_CLASS);\n }\n else {\n addClass([moreEventCount], cls.DISABLE_CLASS);\n }\n var countCell = [].slice.call(this.element.querySelectorAll('.' + cls.ROW_COUNT_WRAPPER_CLASS));\n countCell.forEach(function (element) {\n if (!_this.parent.uiStateValues.expand && _this.allDayLevel > 2) {\n removeClass([element], cls.DISABLE_CLASS);\n }\n else {\n addClass([element], cls.DISABLE_CLASS);\n }\n });\n };\n VerticalEvent.prototype.getEventHeight = function () {\n var eventElement = createElement('div', { className: cls.APPOINTMENT_CLASS, styles: 'visibility:hidden' });\n var eventWrapper = this.element.querySelector('.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS + ':first-child');\n eventWrapper.appendChild(eventElement);\n var height = eventElement.offsetHeight;\n remove(eventElement);\n return height;\n };\n VerticalEvent.prototype.rowExpandCollapse = function () {\n var target = this.element.querySelector('.' + cls.ALLDAY_APPOINTMENT_SECTION_CLASS);\n this.parent.uiStateValues.expand = target.classList.contains(cls.APPOINTMENT_ROW_EXPAND_CLASS);\n var rowHeight;\n if (this.parent.uiStateValues.expand) {\n target.setAttribute('title', this.parent.localeObj.getConstant('collapseAllDaySection'));\n target.setAttribute('aria-label', 'Collapse section');\n rowHeight = ((this.allDayLevel + 1) * this.getEventHeight()) + 4;\n }\n else {\n target.setAttribute('title', this.parent.localeObj.getConstant('expandAllDaySection'));\n target.setAttribute('aria-label', 'Expand section');\n rowHeight = (3 * this.getEventHeight()) + 4;\n this.parent.element.querySelector('.' + cls.DATE_HEADER_WRAP_CLASS).scrollTop = 0;\n }\n this.setAllDayRowHeight(rowHeight);\n this.animation.animate(this.allDayElement[0]);\n this.addOrRemoveClass();\n this.animation.animate(target);\n };\n VerticalEvent.prototype.animationUiUpdate = function () {\n this.parent.notify(events.contentReady, {});\n };\n VerticalEvent.prototype.destroy = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.removeEventListener();\n this.allDayElement = null;\n this.renderedAllDayEvents = null;\n this.renderedEvents = null;\n this.slotCount = null;\n this.interval = null;\n this.startHour = null;\n this.endHour = null;\n this.element = null;\n this.fields = null;\n this.animation = null;\n _super.prototype.destroy.call(this);\n };\n return VerticalEvent;\n}(EventBase));\nexport { VerticalEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { append, prepend, createElement, extend, EventHandler, closest, addClass } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setStyleAttribute, remove } from '@syncfusion/ej2-base';\nimport { EventBase } from './event-base';\nimport * as cls from '../base/css-constant';\nimport * as events from '../base/constant';\nimport * as util from '../base/util';\nvar EVENT_GAP = 0;\n/**\n * Month view events render\n */\nvar MonthEvent = /** @class */ (function (_super) {\n __extends(MonthEvent, _super);\n function MonthEvent(parent) {\n var _this = _super.call(this, parent) || this;\n _this.renderedEvents = [];\n _this.monthHeaderHeight = 0;\n _this.moreIndicatorHeight = 19;\n _this.renderType = 'day';\n _this.element = _this.parent.activeView.getPanel();\n _this.fields = _this.parent.eventFields;\n _this.maxHeight = _this.parent.eventSettings.enableMaxHeight && !_this.parent.eventSettings.enableIndicator\n && !_this.parent.rowAutoHeight;\n _this.withIndicator = _this.parent.eventSettings.enableMaxHeight && _this.parent.eventSettings.enableIndicator\n && !_this.parent.rowAutoHeight;\n _this.maxOrIndicator = (_this.maxHeight || _this.withIndicator);\n _this.moreIndicatorHeight =\n (_this.parent.rowAutoHeight && _this.parent.eventSettings.ignoreWhitespace) ? 0 : _this.moreIndicatorHeight;\n _this.addEventListener();\n return _this;\n }\n MonthEvent.prototype.removeEventWrapper = function (appElement) {\n if (appElement.length > 0) {\n appElement = (this.parent.currentView === 'Month' || (!this.parent.activeView.isTimelineView() &&\n !this.parent.activeViewOptions.timeScale.enable)) ? appElement : [appElement[0]];\n for (var _i = 0, appElement_1 = appElement; _i < appElement_1.length; _i++) {\n var wrap = appElement_1[_i];\n if (wrap.parentElement && wrap.parentElement.parentNode) {\n remove(wrap.parentElement);\n }\n }\n }\n };\n MonthEvent.prototype.renderAppointments = function () {\n if (this.parent.dragAndDropModule) {\n this.parent.dragAndDropModule.setDragArea();\n }\n this.isResourceEventTemplate = this.parent.isSpecificResourceEvents();\n var conWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (this.parent.rowAutoHeight) {\n this.parent.uiStateValues.top = conWrap.scrollTop;\n this.parent.uiStateValues.left = conWrap.scrollLeft;\n }\n var appointmentWrapper = [].slice.call(this.element.querySelectorAll('.' + cls.APPOINTMENT_WRAPPER_CLASS));\n if (this.parent.crudModule && this.parent.crudModule.crudObj.isCrudAction) {\n for (var i = 0, len = this.parent.crudModule.crudObj.sourceEvent.length; i < len; i++) {\n var appElement = [].slice.call(this.element.querySelectorAll('.e-appointment-wrapper ' + '[data-group-index=\"' +\n this.parent.crudModule.crudObj.sourceEvent[parseInt(i.toString(), 10)].groupIndex + '\"]'));\n this.removeEventWrapper(appElement);\n if (this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)] &&\n this.parent.crudModule.crudObj.sourceEvent[parseInt(i.toString(), 10)].groupIndex !==\n this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)].groupIndex) {\n var ele = [].slice.call(this.element.querySelectorAll('.e-appointment-wrapper ' + '[data-group-index=\"' +\n this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)].groupIndex + '\"]'));\n this.removeEventWrapper(ele);\n }\n }\n }\n else {\n for (var _i = 0, appointmentWrapper_1 = appointmentWrapper; _i < appointmentWrapper_1.length; _i++) {\n var wrap = appointmentWrapper_1[_i];\n remove(wrap);\n }\n }\n this.removeHeightProperty(cls.CONTENT_TABLE_CLASS);\n if (!this.element.querySelector('.' + cls.WORK_CELLS_CLASS)) {\n return;\n }\n if (this.parent.currentView === 'Month') {\n var wrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n var cellTd = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS);\n cellTd.appendChild(wrapper);\n this.monthHeaderHeight = wrapper.offsetTop - cellTd.offsetTop;\n cellTd.removeChild(wrapper);\n }\n this.eventHeight = util.getElementHeightFromClass(this.element, cls.APPOINTMENT_CLASS);\n var selector = '.' + cls.CONTENT_TABLE_CLASS + ' tbody tr';\n this.addCellHeight(selector, this.eventHeight, (this.parent.currentView === 'Month' ? EVENT_GAP : 2), this.monthHeaderHeight, this.moreIndicatorHeight);\n var scrollTop = conWrap.scrollTop;\n if (this.parent.rowAutoHeight && this.parent.virtualScrollModule && !this.parent.virtualScrollModule.isHorizontalScroll\n && !isNullOrUndefined(this.parent.currentAction)) {\n conWrap.scrollTop = conWrap.scrollTop - 1;\n }\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.renderResourceEvents();\n if (this.parent.virtualScrollModule) {\n this.parent.virtualScrollModule.updateFocusedWorkCell();\n }\n }\n else {\n this.renderEventsHandler(this.parent.activeView.renderDates, this.parent.activeViewOptions.workDays);\n }\n if (this.parent.rowAutoHeight) {\n this.updateBlockElements();\n var data = {\n cssProperties: this.parent.getCssProperties(),\n module: this.parent.getModuleName(),\n isPreventScrollUpdate: true,\n scrollPosition: { left: this.parent.uiStateValues.left, top: this.parent.uiStateValues.top }\n };\n if (this.parent.virtualScrollModule && !this.parent.virtualScrollModule.isHorizontalScroll) {\n if (this.parent.currentAction) {\n conWrap.scrollTop = scrollTop;\n this.parent.currentAction = null;\n }\n else {\n this.parent.virtualScrollModule.updateVirtualScrollHeight();\n }\n }\n if (!this.parent.enablePersistence) {\n this.parent.notify(events.contentReady, {});\n }\n this.parent.notify(events.scrollUiUpdate, data);\n if (this.parent.currentView === 'Month' && this.parent.showWeekNumber) {\n var totalCells_1 = [].slice.call(this.parent.element.querySelectorAll('.e-content-wrap table tr td:first-child'));\n var weekNumberCells = [].slice.call(this.parent.element.querySelectorAll('.' + cls.WEEK_NUMBER_CLASS));\n weekNumberCells.forEach(function (cell, i) {\n var height = totalCells_1[parseInt(i.toString(), 10)].offsetHeight;\n setStyleAttribute(cell, { 'height': height + 'px' });\n });\n this.parent.element.querySelector('.' + cls.WEEK_NUMBER_WRAPPER_CLASS).scrollTop =\n this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS).scrollTop;\n }\n }\n this.parent.renderTemplates();\n };\n MonthEvent.prototype.renderEventsHandler = function (dateRender, workDays, resData) {\n this.renderedEvents = [];\n var eventsList;\n var blockList;\n var resIndex = 0;\n if (resData) {\n resIndex = resData.groupIndex;\n this.cssClass = resData.cssClass;\n this.groupOrder = resData.groupOrder;\n eventsList = this.parent.eventBase.filterEventsByResource(resData, this.parent.eventsProcessed);\n blockList = this.parent.eventBase.filterEventsByResource(resData, this.parent.blockProcessed);\n this.workCells = [].slice.call(this.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS + '[data-group-index=\"' + resIndex + '\"]'));\n }\n else {\n eventsList = this.parent.eventsProcessed;\n blockList = this.parent.blockProcessed;\n this.workCells = [].slice.call(this.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS));\n }\n this.sortByDateTime(eventsList);\n this.sortByDateTime(blockList);\n if (this.parent.currentView === 'Month' && this.parent.rowAutoHeight && this.parent.activeViewOptions.group.resources.length === 0) {\n var totalCells = [].slice.call(this.parent.element.querySelectorAll('.e-content-wrap table tr td:first-child'));\n var height_1 = this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS).clientHeight / totalCells.length;\n totalCells.forEach(function (cell) {\n setStyleAttribute(cell, { 'height': height_1 + 'px' });\n });\n }\n var cellDetail = this.workCells[this.parent.activeView.isTimelineView() ?\n 0 : this.workCells.length - 1].getBoundingClientRect();\n this.cellWidth = cellDetail.width;\n this.cellHeight = cellDetail.height;\n this.dateRender = dateRender;\n var filteredDates = this.getRenderedDates(dateRender);\n this.getSlotDates(workDays || this.parent.activeViewOptions.workDays);\n this.processBlockEvents(blockList, resIndex, resData);\n var events = [];\n for (var _i = 0, eventsList_1 = eventsList; _i < eventsList_1.length; _i++) {\n var event_1 = eventsList_1[_i];\n if (this.parent.resourceBase && !resData) {\n this.cssClass = this.parent.resourceBase.getCssClass(event_1);\n }\n events = events.concat(this.splitEvent(event_1, filteredDates || this.dateRender));\n }\n for (var level = 0; level < this.slots.length; level++) {\n this.renderedEvents = [];\n var slot = this.slots[parseInt(level.toString(), 10)];\n var endDate = util.addDays(new Date(slot[slot.length - 1]), 1);\n var spannedEvents = this.filterEvents(new Date(slot[0]), endDate, events);\n for (var _a = 0, spannedEvents_1 = spannedEvents; _a < spannedEvents_1.length; _a++) {\n var event_2 = spannedEvents_1[_a];\n if (this.maxHeight) {\n var sDate = this.parent.currentView === 'Month' ? event_2[this.fields.startTime] :\n this.getStartTime(event_2, event_2.data);\n if (this.getIndex(sDate) > 0) {\n continue;\n }\n }\n this.updateIndicatorIcon(event_2);\n this.renderEvents(event_2, resIndex, eventsList);\n }\n }\n this.cssClass = null;\n this.groupOrder = null;\n };\n MonthEvent.prototype.processBlockEvents = function (blockEvents, resIndex, resData) {\n for (var _i = 0, blockEvents_1 = blockEvents; _i < blockEvents_1.length; _i++) {\n var event_3 = blockEvents_1[_i];\n if (this.parent.resourceBase && !resData) {\n this.cssClass = this.parent.resourceBase.getCssClass(event_3);\n }\n var blockSpannedList = [];\n if (this.renderType === 'day' && !event_3[this.fields.isAllDay]) {\n var temp = extend({}, event_3, null, true);\n var isSameDate = this.isSameDate(temp[this.fields.startTime], temp[this.fields.endTime]);\n temp.isBlockIcon = isSameDate;\n if (!isSameDate && util.getDateInMs(temp[this.fields.startTime]) > 0) {\n var e = extend({}, event_3, null, true);\n e[this.fields.endTime] = util.addDays(util.resetTime(new Date(event_3[this.fields.startTime] + '')), 1);\n e.isBlockIcon = true;\n temp[this.fields.startTime] = e[this.fields.endTime];\n blockSpannedList.push(e);\n }\n isSameDate = this.isSameDate(temp[this.fields.startTime], temp[this.fields.endTime]);\n if (!isSameDate && util.getDateInMs(temp[this.fields.endTime]) > 0) {\n var e = extend({}, event_3, null, true);\n e[this.fields.startTime] = util.resetTime(new Date(event_3[this.fields.endTime] + ''));\n e.isBlockIcon = true;\n blockSpannedList.push(e);\n temp[this.fields.endTime] = e[this.fields.startTime];\n }\n blockSpannedList.push(temp);\n }\n else {\n blockSpannedList.push(event_3);\n }\n for (var _a = 0, blockSpannedList_1 = blockSpannedList; _a < blockSpannedList_1.length; _a++) {\n var blockEvent = blockSpannedList_1[_a];\n var spannedEvents = this.splitEvent(blockEvent, this.dateRender);\n for (var _b = 0, spannedEvents_2 = spannedEvents; _b < spannedEvents_2.length; _b++) {\n var event_4 = spannedEvents_2[_b];\n this.renderBlockEvents(event_4, resIndex, !!blockEvent.isBlockIcon);\n }\n }\n }\n };\n MonthEvent.prototype.isSameDate = function (start, end) {\n return new Date(+start).setHours(0, 0, 0, 0) === new Date(+end).setHours(0, 0, 0, 0);\n };\n MonthEvent.prototype.renderBlockEvents = function (event, resIndex, isIcon) {\n var eventData = event.data;\n var startTime = this.getStartTime(event, eventData);\n var endTime = this.getEndTime(event, eventData);\n var day = this.parent.getIndexOfDate(this.dateRender, util.resetTime(new Date(startTime.getTime())));\n if (day < 0 || startTime > endTime) {\n return;\n }\n var cellTd = this.getCellTd(day);\n var position = this.getPosition(startTime, endTime, event[this.fields.isAllDay], day);\n if (!isIcon) {\n var diffInDays = eventData.count;\n var appWidth = this.getEventWidth(startTime, endTime, event[this.fields.isAllDay], diffInDays);\n appWidth = (appWidth <= 0) ? this.cellWidth : appWidth;\n var appLeft = (this.parent.enableRtl) ? 0 : position;\n var appRight = (this.parent.enableRtl) ? position : 0;\n var appHeight = this.cellHeight - this.monthHeaderHeight;\n var appTop = this.getRowTop(resIndex);\n var blockElement = this.createBlockAppointmentElement(event, resIndex, this.isResourceEventTemplate);\n setStyleAttribute(blockElement, {\n 'width': appWidth + 'px', 'height': appHeight + 'px', 'left': appLeft + 'px',\n 'right': appRight + 'px', 'top': appTop + 'px'\n });\n this.renderEventElement(event, blockElement, cellTd);\n }\n else {\n this.renderBlockIndicator(cellTd, position, resIndex);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MonthEvent.prototype.renderBlockIndicator = function (cellTd, position, resIndex) {\n var blockIndicator = createElement('div', { className: 'e-icons ' + cls.BLOCK_INDICATOR_CLASS });\n if (isNullOrUndefined(cellTd.querySelector('.' + cls.BLOCK_INDICATOR_CLASS))) {\n cellTd.appendChild(blockIndicator);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MonthEvent.prototype.getStartTime = function (event, eventData) {\n return event[this.fields.startTime];\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MonthEvent.prototype.getEndTime = function (event, eventData) {\n return event[this.fields.endTime];\n };\n MonthEvent.prototype.getCellTd = function (day) {\n return this.workCells[parseInt(day.toString(), 10)];\n };\n MonthEvent.prototype.getEventWidth = function (startDate, endDate, isAllDay, count) {\n return count * this.cellWidth - 1;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MonthEvent.prototype.getPosition = function (startTime, endTime, isAllDay, day) {\n return 0;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MonthEvent.prototype.getRowTop = function (resIndex) {\n return 0;\n };\n MonthEvent.prototype.updateIndicatorIcon = function (event) {\n if (this.parent.currentView.indexOf('Timeline') === -1 || this.parent.currentView === 'TimelineMonth'\n || event[this.fields.isAllDay]) {\n return;\n }\n var cloneData = event.data;\n var start = this.parent.activeView.getStartHour();\n var end = this.parent.activeView.getEndHour();\n var startHour = util.getStartEndHours(event[this.fields.startTime], start, end);\n var endHour = util.getStartEndHours(event[this.fields.endTime], start, end);\n var actualStartTime = cloneData[this.fields.startTime];\n var actualEndTime = cloneData[this.fields.endTime];\n cloneData.isLeft = cloneData.isLeft || actualStartTime.getTime() < startHour.startHour.getTime();\n cloneData.isRight = cloneData.isRight || actualEndTime.getTime() > endHour.endHour.getTime();\n if (util.resetTime(actualStartTime).getTime() !== util.resetTime(actualEndTime).getTime()) {\n var actualStartHour = startHour.startHour;\n var actualEndHour = endHour.endHour;\n var startTime = new Date(util.resetTime(actualStartTime));\n startTime.setHours(actualEndHour.getHours(), actualEndHour.getMinutes(), actualEndHour.getSeconds());\n cloneData.isLeft = cloneData.isLeft || actualStartTime.getTime() >= (actualStartHour.getDate() === startHour.endHour.getDate() ?\n startTime.getTime() : util.addDays(startTime, 1).getTime());\n if (actualEndTime.getTime() !== util.resetTime(actualEndTime).getTime()) {\n var endTime = new Date(util.resetTime(actualEndTime));\n cloneData.isRight = cloneData.isRight || actualEndTime.getTime() <=\n endTime.setHours(actualStartHour.getHours(), actualStartHour.getMinutes(), actualStartHour.getSeconds());\n }\n }\n };\n MonthEvent.prototype.renderResourceEvents = function () {\n var resources = this.parent.uiStateValues.isGroupAdaptive ?\n [this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex]] :\n this.parent.resourceBase.renderedResources;\n if (this.parent.crudModule && this.parent.crudModule.crudObj.isCrudAction) {\n for (var i = 0, len = this.parent.crudModule.crudObj.sourceEvent.length; i < len; i++) {\n var sourceRes = this.parent.crudModule.crudObj.sourceEvent[parseInt(i.toString(), 10)];\n this.renderEventsHandler(sourceRes.renderDates, sourceRes.workDays, sourceRes);\n if (this.parent.crudModule.crudObj.sourceEvent[parseInt(i.toString(), 10)].groupIndex !==\n this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)].groupIndex) {\n var target = this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)];\n this.renderEventsHandler(target.renderDates, target.workDays, target);\n }\n }\n this.parent.crudModule.crudObj.isCrudAction = false;\n }\n else {\n for (var _i = 0, resources_1 = resources; _i < resources_1.length; _i++) {\n var slotData = resources_1[_i];\n this.renderEventsHandler(slotData.renderDates, slotData.workDays, slotData);\n }\n }\n };\n MonthEvent.prototype.getSlotDates = function (workDays) {\n this.slots = [];\n var dates = this.dateRender.map(function (date) { return +date; });\n var noOfDays = !this.parent.activeViewOptions.showWeekend || (this.parent.activeViewOptions.group.byDate &&\n this.parent.activeViewOptions.group.hideNonWorkingDays) ? workDays.length : util.WEEK_LENGTH;\n while (dates.length > 0) {\n this.slots.push(dates.splice(0, noOfDays));\n }\n };\n MonthEvent.prototype.createAppointmentElement = function (record, resIndex, isCloneElement) {\n if (isCloneElement === void 0) { isCloneElement = false; }\n var eventSubject = (record[this.fields.subject] || this.parent.eventSettings.fields.subject.default ||\n this.parent.localeObj.getConstant('addTitle'));\n var newRecord = extend({}, record, record.data, true);\n var attrs = {\n 'data-id': 'Appointment_' + record[this.fields.id],\n 'role': 'button', 'tabindex': '0',\n 'aria-disabled': this.parent.eventBase.getReadonlyAttribute(record),\n 'aria-label': this.parent.getAnnouncementString(newRecord, eventSubject)\n };\n if (!isCloneElement) {\n attrs['data-guid'] = record.Guid;\n }\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n attrs['data-group-index'] = resIndex.toString();\n }\n var appointmentWrapper = createElement('div', { className: cls.APPOINTMENT_CLASS, attrs: attrs });\n if (!isNullOrUndefined(this.cssClass)) {\n addClass([appointmentWrapper], this.cssClass);\n }\n if (record[this.fields.isReadonly]) {\n addClass([appointmentWrapper], 'e-read-only');\n }\n var appointmentDetails = createElement('div', { className: cls.APPOINTMENT_DETAILS });\n appointmentWrapper.appendChild(appointmentDetails);\n var templateElement;\n var eventData = record.data;\n var eventObj = this.getEventData(record);\n if (!isNullOrUndefined(this.parent.activeViewOptions.eventTemplate)) {\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.eventTemplateName;\n var templateId = scheduleId + viewName + 'eventTemplate';\n var eventTemplate = 'eventTemplate' + (this.isResourceEventTemplate ? '_' + resIndex : '');\n templateElement = this.parent.getAppointmentTemplate()(eventObj, this.parent, eventTemplate, templateId, false);\n }\n else {\n var eventLocation = (record[this.fields.location] || this.parent.eventSettings.fields.location.default || '');\n var appointmentSubject = createElement('div', { className: cls.SUBJECT_CLASS });\n this.parent.sanitize((eventSubject + (eventLocation ? '; ' + eventLocation : '')), appointmentSubject);\n var appointmentStartTime = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''),\n innerHTML: this.parent.getTimeString(eventData[this.fields.startTime])\n });\n var appointmentEndTime = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''),\n innerHTML: this.parent.getTimeString(eventData[this.fields.endTime])\n });\n if (this.parent.currentView === 'Month') {\n if (record[this.fields.isAllDay]) {\n templateElement = [appointmentSubject];\n addClass([appointmentSubject], 'e-text-center');\n }\n else if (eventData.count <= 1 && !eventData.isLeft && !eventData.isRight) {\n templateElement = [appointmentStartTime, appointmentSubject];\n }\n else {\n templateElement = [];\n addClass([appointmentSubject], 'e-text-center');\n if (!eventData.isLeft) {\n templateElement.push(appointmentStartTime);\n }\n templateElement.push(appointmentSubject);\n if (!eventData.isRight) {\n templateElement.push(appointmentEndTime);\n }\n }\n }\n else {\n var innerElement = void 0;\n if (record[this.fields.isAllDay]) {\n var allDayString = createElement('div', {\n className: cls.APPOINTMENT_TIME, innerHTML: this.parent.localeObj.getConstant('allDay')\n });\n innerElement = [appointmentSubject, allDayString];\n }\n else {\n var timeString = this.parent.getTimeString(eventData[this.fields.startTime])\n + ' - ' + this.parent.getTimeString(eventData[this.fields.endTime]);\n var appTime = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''), innerHTML: timeString\n });\n var appLocation = createElement('div', { className: cls.LOCATION_CLASS });\n this.parent.sanitize(eventLocation, appLocation);\n innerElement = [appointmentSubject, appTime, appLocation];\n }\n var wrap = createElement('div', { className: 'e-inner-wrap' });\n append(innerElement, wrap);\n templateElement = [wrap];\n }\n }\n append(templateElement, appointmentDetails);\n this.appendEventIcons(record, appointmentDetails);\n this.renderResizeHandler(appointmentWrapper, record.data, record[this.fields.isReadonly]);\n return appointmentWrapper;\n };\n MonthEvent.prototype.appendEventIcons = function (record, appointmentDetails) {\n var eventData = record.data;\n if (!isNullOrUndefined(record[this.fields.recurrenceRule]) || !isNullOrUndefined(record[this.fields.recurrenceID])) {\n var iconClass = (record[this.fields.id] === record[this.fields.recurrenceID]) ?\n cls.EVENT_RECURRENCE_ICON_CLASS : cls.EVENT_RECURRENCE_EDIT_ICON_CLASS;\n appointmentDetails.appendChild(createElement('div', {\n className: cls.ICON + ' ' + iconClass + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : '')\n }));\n }\n if (eventData.isLeft) {\n var iconLeft = createElement('div', {\n className: cls.EVENT_INDICATOR_CLASS + ' ' + cls.ICON + ' ' + cls.EVENT_ICON_LEFT_CLASS\n });\n prepend([iconLeft], appointmentDetails);\n }\n if (eventData.isRight) {\n var iconRight = createElement('div', {\n className: cls.EVENT_INDICATOR_CLASS + ' ' + cls.ICON + ' ' + cls.EVENT_ICON_RIGHT_CLASS\n });\n append([iconRight], appointmentDetails);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MonthEvent.prototype.renderEvents = function (event, resIndex, eventsList) {\n var startTime = event[this.fields.startTime];\n var endTime = event[this.fields.endTime];\n var day = this.parent.getIndexOfDate(this.dateRender, util.resetTime(startTime));\n if ((day < 0) || (startTime.getTime() < this.parent.minDate.getTime()) || (endTime.getTime() > this.parent.maxDate.getTime())) {\n return;\n }\n var eventsPerRow = this.parent.rowAutoHeight ? 1 : this.parent.activeViewOptions.maxEventsPerRow;\n var overlapCount = this.getIndex(startTime);\n event.Index = overlapCount;\n var diffInDays = event.data.count;\n if (startTime.getTime() <= endTime.getTime()) {\n var appWidth = (diffInDays * this.cellWidth) - 5;\n var cellTd = this.workCells[parseInt(day.toString(), 10)];\n var appTop = (overlapCount * (this.eventHeight + EVENT_GAP));\n var height = this.monthHeaderHeight + ((overlapCount + 1) * (this.eventHeight + EVENT_GAP)) + this.moreIndicatorHeight;\n var enableAppRender = this.parent.activeViewOptions.maxEventsPerRow && !this.parent.rowAutoHeight &&\n !this.parent.eventSettings.enableIndicator ? overlapCount < eventsPerRow : this.maxOrIndicator ? overlapCount < 1\n ? true : false : this.cellHeight > height;\n if (this.parent.rowAutoHeight || enableAppRender) {\n this.renderedEvents.push(extend({}, event, null, true));\n var appointmentElement = void 0;\n if (this.inlineValue) {\n appointmentElement = this.parent.inlineModule.createInlineAppointmentElement();\n }\n else {\n appointmentElement = this.createAppointmentElement(event, resIndex);\n }\n this.applyResourceColor(appointmentElement, event, 'backgroundColor', this.groupOrder);\n this.wireAppointmentEvents(appointmentElement, event);\n setStyleAttribute(appointmentElement, { 'width': appWidth + 'px', 'top': appTop + 'px' });\n this.renderEventElement(event, appointmentElement, cellTd);\n if (this.parent.rowAutoHeight) {\n var firstChild = cellTd.parentElement.firstElementChild;\n this.updateCellHeight(firstChild, height);\n }\n }\n else {\n for (var i = 0; i < diffInDays; i++) {\n if (this.workCells[day + i]) {\n var indicator = this.workCells[day + i].querySelector('.' + cls.MORE_INDICATOR_CLASS);\n if (indicator) {\n var count = parseInt(indicator.getAttribute('data-count'), 10) + 1;\n indicator.setAttribute('data-count', count.toString());\n indicator.innerHTML = this.getMoreIndicatorText(count);\n }\n else {\n var startDate = new Date(this.dateRender[day + i].getTime());\n var endDate = util.addDays(this.dateRender[day + i], 1);\n var groupIndex = this.workCells[day + i].getAttribute('data-group-index');\n var moreIndicatorElement = this.getMoreIndicatorElement(1, startDate, endDate);\n if (!isNullOrUndefined(groupIndex)) {\n moreIndicatorElement.setAttribute('data-group-index', groupIndex);\n }\n moreIndicatorElement.style.top = (this.cellHeight - this.monthHeaderHeight - this.moreIndicatorHeight) + 'px';\n moreIndicatorElement.style.width = this.cellWidth - 2 + 'px';\n this.renderElement(this.workCells[day + i], moreIndicatorElement);\n EventHandler.add(moreIndicatorElement, 'click', this.moreIndicatorClick, this);\n }\n }\n }\n }\n }\n };\n MonthEvent.prototype.updateCellHeight = function (cell, height) {\n if ((height > cell.offsetHeight)) {\n setStyleAttribute(cell, { 'height': height + 'px' });\n }\n };\n MonthEvent.prototype.updateBlockElements = function () {\n var blockElement = [].slice.call(this.element.querySelectorAll('.' + cls.BLOCK_APPOINTMENT_CLASS));\n for (var _i = 0, blockElement_1 = blockElement; _i < blockElement_1.length; _i++) {\n var element = blockElement_1[_i];\n var target = closest(element, 'tr');\n this.monthHeaderHeight = element.offsetParent.offsetTop - target.offsetTop;\n element.style.height = ((target.offsetHeight - 1) - this.monthHeaderHeight) + 'px';\n var firstChild = target.firstElementChild;\n var width = Math.round(element.offsetWidth / firstChild.offsetWidth);\n element.style.width = (firstChild.offsetWidth * width) + 'px';\n }\n };\n // eslint-disable-next-line max-len\n MonthEvent.prototype.getFilteredEvents = function (startDate, endDate, groupIndex, eventsList) {\n var filteredEvents;\n if (isNullOrUndefined(groupIndex)) {\n filteredEvents = this.filterEvents(startDate, endDate);\n }\n else {\n var data = this.parent.resourceBase.lastResourceLevel[parseInt(groupIndex, 10)];\n filteredEvents = this.filterEvents(startDate, endDate, isNullOrUndefined(eventsList) ? undefined : eventsList, data);\n }\n return filteredEvents;\n };\n MonthEvent.prototype.getOverlapEvents = function (date, appointments) {\n var appointmentsList = [];\n var dateTime = util.resetTime(date).getTime();\n for (var _i = 0, appointments_1 = appointments; _i < appointments_1.length; _i++) {\n var app = appointments_1[_i];\n if ((util.resetTime(app[this.fields.startTime]).getTime() <= dateTime) &&\n (util.resetTime(app[this.fields.endTime]).getTime() >= dateTime)) {\n appointmentsList.push(app);\n }\n }\n return appointmentsList;\n };\n MonthEvent.prototype.getIndex = function (date) {\n var appIndex = -1;\n var appointments = this.renderedEvents;\n if (appointments.length > 0) {\n var appointmentsList = this.getOverlapEvents(date, appointments);\n var appLevel = appointmentsList.map(function (obj) { return obj.Index; });\n appIndex = (appLevel.length > 0) ? this.getSmallestMissingNumber(appLevel) : 0;\n }\n return (appIndex === -1) ? 0 : appIndex;\n };\n MonthEvent.prototype.moreIndicatorClick = function (event) {\n var _this = this;\n var target = closest(event.target, '.' + cls.MORE_INDICATOR_CLASS);\n var startDate = new Date(parseInt(target.getAttribute('data-start-date'), 10));\n var endDate = new Date(parseInt(target.getAttribute('data-end-date'), 10));\n var groupIndex = target.getAttribute('data-group-index');\n var moreArgs = {\n cancel: false, event: event, element: target, isPopupOpen: true,\n startTime: startDate, endTime: endDate, viewName: this.parent.getNavigateView()\n };\n if (groupIndex) {\n moreArgs.groupIndex = parseInt(groupIndex, 10);\n }\n this.parent.trigger(events.moreEventsClick, moreArgs, function (clickArgs) {\n if (!clickArgs.cancel) {\n if (clickArgs.isPopupOpen) {\n var filteredEvents = _this.getFilteredEvents(startDate, endDate, groupIndex);\n var moreArgs_1 = { date: startDate, event: filteredEvents, element: event.target };\n _this.parent.quickPopup.moreEventClick(moreArgs_1, endDate, groupIndex);\n }\n else {\n _this.parent.setProperties({ selectedDate: startDate }, true);\n _this.parent.changeView(clickArgs.viewName, event);\n }\n }\n });\n };\n MonthEvent.prototype.renderEventElement = function (event, appointmentElement, cellTd) {\n var _this = this;\n var eventType = appointmentElement.classList.contains(cls.BLOCK_APPOINTMENT_CLASS) ? 'blockEvent' : 'event';\n var isAppointment = appointmentElement.classList.contains(cls.APPOINTMENT_CLASS);\n var eventObj = this.getEventData(event);\n var args = { data: eventObj, element: appointmentElement, cancel: false, type: eventType };\n this.parent.trigger(events.eventRendered, args, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.renderedEvents.pop();\n }\n else {\n _this.renderElement(cellTd, appointmentElement, isAppointment);\n }\n });\n };\n MonthEvent.prototype.getEventData = function (event) {\n var eventObj = extend({}, event, null, true);\n eventObj[this.fields.startTime] = event.data[this.fields.startTime];\n eventObj[this.fields.endTime] = event.data[this.fields.endTime];\n return eventObj;\n };\n MonthEvent.prototype.renderElement = function (cellTd, element, isAppointment) {\n if (isAppointment === void 0) { isAppointment = false; }\n if (this.maxOrIndicator && isAppointment) {\n this.setMaxEventHeight(element, cellTd);\n }\n var wrapperEle = cellTd.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS);\n if (wrapperEle) {\n wrapperEle.appendChild(element);\n }\n else {\n var wrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n wrapper.appendChild(element);\n cellTd.appendChild(wrapper);\n }\n };\n MonthEvent.prototype.getMoreIndicatorElement = function (count, startDate, endDate) {\n var moreIndicatorElement = createElement('div', {\n className: cls.MORE_INDICATOR_CLASS,\n innerHTML: this.getMoreIndicatorText(count),\n attrs: {\n 'role': 'button',\n 'tabindex': '0',\n 'aria-label': this.parent.globalize.formatNumber(count) + ' '\n + (this.parent.isAdaptive ? '' : this.parent.localeObj.getConstant('more')),\n 'data-count': count.toString(),\n 'data-start-date': startDate.getTime().toString(),\n 'data-end-date': endDate.getTime().toString()\n }\n });\n return moreIndicatorElement;\n };\n MonthEvent.prototype.getMoreIndicatorText = function (count) {\n return '+' + this.parent.globalize.formatNumber(count) + ' ' + (this.parent.isAdaptive ? '' : this.parent.localeObj.getConstant('more'));\n };\n MonthEvent.prototype.removeHeightProperty = function (selector) {\n var rows = [].slice.call(this.element.querySelectorAll('.' + selector + ' tbody tr'));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n row.firstElementChild.style.height = '';\n }\n };\n MonthEvent.prototype.setMaxEventHeight = function (event, cell) {\n var headerHeight = util.getOuterHeight(cell.querySelector('.' + cls.DATE_HEADER_CLASS));\n var height = (cell.offsetHeight - headerHeight) - (this.maxHeight ? 0 : this.moreIndicatorHeight);\n setStyleAttribute(event, { 'height': height + 'px', 'align-items': 'center' });\n };\n MonthEvent.prototype.destroy = function () {\n this.element = null;\n this.fields = null;\n this.maxHeight = null;\n this.withIndicator = null;\n this.maxOrIndicator = null;\n this.moreIndicatorHeight = null;\n this.removeEventListener();\n _super.prototype.destroy.call(this);\n };\n return MonthEvent;\n}(EventBase));\nexport { MonthEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nimport { isNullOrUndefined, extend, EventHandler, formatUnit, Browser } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, removeClass, append, prepend } from '@syncfusion/ej2-base';\nimport { ViewBase } from './view-base';\nimport { VerticalEvent } from '../event-renderer/vertical-view';\nimport { MonthEvent } from '../event-renderer/month';\nimport * as util from '../base/util';\nimport * as event from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * vertical view\n */\nvar VerticalView = /** @class */ (function (_super) {\n __extends(VerticalView, _super);\n function VerticalView(parent) {\n var _this = _super.call(this, parent) || this;\n _this.viewClass = 'e-day-view';\n _this.isInverseTableSelect = true;\n _this.baseCssClass = 'e-vertical-view';\n _this.appointment = null;\n return _this;\n }\n VerticalView.prototype.getModuleName = function () {\n return 'verticalView';\n };\n VerticalView.prototype.addEventListener = function () {\n this.parent.on(event.scrollUiUpdate, this.scrollUiUpdate, this);\n this.parent.on(event.dataReady, this.renderEvents, this);\n };\n VerticalView.prototype.removeEventListener = function () {\n if (this.parent) {\n this.parent.off(event.scrollUiUpdate, this.scrollUiUpdate);\n this.parent.off(event.dataReady, this.renderEvents);\n }\n };\n VerticalView.prototype.renderEvents = function () {\n this.appointment = this.parent.activeViewOptions.timeScale.enable ?\n new VerticalEvent(this.parent) : new MonthEvent(this.parent);\n this.appointment.renderAppointments();\n this.parent.notify(event.eventsLoaded, {});\n };\n VerticalView.prototype.onContentScroll = function (e) {\n this.parent.removeNewEventElement();\n var target = e.target;\n this.parent.notify(event.virtualScroll, e);\n this.scrollLeftPanel(target);\n this.scrollTopPanel(target);\n if (!this.parent.isAdaptive) {\n this.parent.uiStateValues.top = target.scrollTop;\n }\n this.parent.uiStateValues.left = target.scrollLeft;\n if (!isNullOrUndefined(this.parent.quickPopup)) {\n this.parent.quickPopup.quickPopupHide();\n }\n this.setPersistence();\n };\n VerticalView.prototype.onAdaptiveMove = function (e) {\n if (this.parent.uiStateValues.action) {\n e.preventDefault();\n }\n };\n VerticalView.prototype.onAdaptiveScroll = function (e) {\n if (this.parent && !this.parent.isDestroyed) {\n this.parent.removeNewEventElement();\n this.parent.uiStateValues.top = e.target.scrollTop;\n }\n };\n VerticalView.prototype.scrollLeftPanel = function (target) {\n var leftPanel = this.getLeftPanelElement();\n if (!isNullOrUndefined(leftPanel)) {\n leftPanel.scrollTop = target.scrollTop;\n }\n };\n VerticalView.prototype.scrollUiUpdate = function (args) {\n if (!this.parent) {\n return;\n }\n var dateHeader = this.parent.element.querySelector('.' + cls.DATE_HEADER_WRAP_CLASS);\n var headerBarHeight = this.getHeaderBarHeight();\n var timeCells = this.getLeftPanelElement();\n var content = this.getScrollableElement();\n var header = this.getDatesHeaderElement();\n var scrollerHeight = this.parent.element.offsetHeight - headerBarHeight - header.offsetHeight;\n this.setContentHeight(content, timeCells, scrollerHeight);\n this.setColWidth(content);\n var scrollBarWidth = util.getScrollBarWidth();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.firstElementChild.style[args.cssProperties.rtlBorder] = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.style[args.cssProperties.rtlPadding] = '';\n var isDateHeaderScroll = this.parent.enableAllDayScroll ? !((content.offsetWidth - content.clientWidth) <=\n (dateHeader.offsetWidth - dateHeader.clientWidth) && dateHeader.classList.contains('e-all-day-scroll')) : true;\n if (content.offsetWidth - content.clientWidth > 0 && isDateHeaderScroll) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.firstElementChild.style[args.cssProperties.border] = scrollBarWidth > 0 ? '1px' : '0px';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.style[args.cssProperties.padding] = scrollBarWidth > 0 ? scrollBarWidth - 1 + 'px' : '0px';\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.firstElementChild.style[args.cssProperties.border] = '';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n header.style[args.cssProperties.padding] = '';\n }\n if (!args.isPreventScrollUpdate) {\n if (this.parent.uiStateValues.isInitial) {\n if (this.parent.currentView.indexOf('Timeline') > -1) {\n content.scrollTop = this.parent.uiStateValues.top;\n }\n this.scrollToWorkHour();\n this.parent.uiStateValues.isInitial = false;\n }\n else {\n if (timeCells) {\n timeCells.scrollTop = this.parent.uiStateValues.top;\n }\n content.scrollTop = this.parent.uiStateValues.top;\n content.scrollLeft = this.parent.uiStateValues.left;\n }\n }\n if (this.parent.activeViewOptions.timeScale.enable) {\n this.highlightCurrentTime();\n }\n this.retainScrollPosition();\n };\n VerticalView.prototype.setContentHeight = function (element, leftPanelElement, height) {\n if (this.parent.isAdaptive && !this.isTimelineView()) {\n element.style.height = (this.parent.height === 'auto') ? 'auto' : formatUnit(height);\n }\n else {\n if (!isNullOrUndefined(leftPanelElement)) {\n leftPanelElement.style.height = (this.parent.height === 'auto') ? 'auto'\n : formatUnit(height - this.getScrollXIndent(element));\n }\n element.style.height = (this.parent.height === 'auto') ? 'auto' : formatUnit(height);\n }\n };\n VerticalView.prototype.scrollToWorkHour = function () {\n if (this.parent.workHours.highlight) {\n var firstWorkHourCell = this.element.querySelector('.' + cls.WORK_HOURS_CLASS);\n if (firstWorkHourCell) {\n this.getScrollableElement().scrollTop = firstWorkHourCell.offsetTop;\n this.parent.uiStateValues.top = firstWorkHourCell.offsetTop;\n this.parent.uiStateValues.left = 0;\n }\n }\n };\n VerticalView.prototype.scrollToHour = function (hour, scrollDate) {\n var date = this.parent.getStartEndTime(hour);\n if (!isNullOrUndefined(scrollDate)) {\n var headerElement = this.element.querySelector('.' + cls.HEADER_CELLS_CLASS + '[data-date=\"' + new Date(util.resetTime(scrollDate)).getTime() + '\"]');\n if (headerElement) {\n if (this.parent.enableRtl) {\n var conWrap = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS);\n this.getScrollableElement().scrollLeft = -(conWrap.offsetWidth - headerElement.offsetLeft - headerElement.offsetWidth);\n }\n else {\n this.getScrollableElement().scrollLeft = headerElement.offsetLeft;\n }\n }\n }\n if (isNullOrUndefined(date)) {\n return;\n }\n this.getScrollableElement().scrollTop = this.getTopFromDateTime(date);\n };\n VerticalView.prototype.scrollToDate = function (scrollDate) {\n this.scrollToHour(null, scrollDate);\n };\n VerticalView.prototype.generateColumnLevels = function () {\n var level = this.getDateSlots(this.renderDates, this.parent.activeViewOptions.workDays);\n var columnLevels = [];\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n columnLevels = this.parent.resourceBase.generateResourceLevels(level);\n if (this.parent.activeViewOptions.group.hideNonWorkingDays) {\n while (columnLevels[0].length === 0) {\n this.parent.setProperties({ selectedDate: this.parent.activeView.getNextPreviousDate(this.previousNextAction) }, true);\n this.parent.activeView.getRenderDates();\n if (this.parent.headerModule) {\n this.parent.headerModule.setCalendarDate(this.parent.selectedDate);\n this.parent.headerModule.updateDateRange();\n }\n level = this.getDateSlots(this.renderDates, this.parent.activeViewOptions.workDays);\n columnLevels = this.parent.resourceBase.generateResourceLevels(level);\n }\n }\n if (this.parent.uiStateValues.isGroupAdaptive && this.parent.resourceBase.lastResourceLevel.length > 0) {\n var resourceLevel = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex];\n var resStartHour = resourceLevel.resourceData[resourceLevel.resource.startHourField];\n var resEndHour = resourceLevel.resourceData[resourceLevel.resource.endHourField];\n var dateSlots = this.getDateSlots(resourceLevel.renderDates, resourceLevel.workDays, resStartHour, resEndHour);\n columnLevels = [dateSlots];\n }\n }\n else {\n columnLevels.push(level);\n }\n this.colLevels = columnLevels;\n return columnLevels;\n };\n // eslint-disable-next-line max-len\n VerticalView.prototype.getDateSlots = function (renderDates, workDays, workStartHour, workEndHour) {\n if (workStartHour === void 0) { workStartHour = this.parent.workHours.start; }\n if (workEndHour === void 0) { workEndHour = this.parent.workHours.end; }\n var dateCol = [];\n var start = this.parent.getStartEndTime(workStartHour);\n var end = this.parent.getStartEndTime(workEndHour);\n for (var _i = 0, renderDates_1 = renderDates; _i < renderDates_1.length; _i++) {\n var col = renderDates_1[_i];\n var classList = [cls.HEADER_CELLS_CLASS];\n if (this.isCurrentDate(col)) {\n classList.push(cls.CURRENT_DAY_CLASS);\n }\n dateCol.push({\n date: col, type: 'dateHeader', className: classList, colSpan: 1,\n workDays: workDays, startHour: new Date(+start), endHour: new Date(+end)\n });\n }\n return dateCol;\n };\n VerticalView.prototype.isWorkHourRange = function (date) {\n return (this.getStartHour().getTime() <= date.getTime()) && (this.getEndHour().getTime() >= date.getTime());\n };\n VerticalView.prototype.highlightCurrentTime = function () {\n var _this = this;\n if (this.parent.activeViewOptions.headerRows.length > 0 &&\n this.parent.activeViewOptions.headerRows.slice(-1)[0].option !== 'Hour') {\n return;\n }\n var currentDate = this.parent.getCurrentTime();\n if (this.parent.showTimeIndicator && this.isWorkHourRange(currentDate)) {\n var currentDateIndex = this.getCurrentTimeIndicatorIndex();\n if (currentDateIndex.length > 0) {\n var workCells = [].slice.call(this.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS));\n if (workCells.length > 0) {\n this.changeCurrentTimePosition();\n }\n if (isNullOrUndefined(this.currentTimeIndicatorTimer)) {\n var interval = util.MS_PER_MINUTE - ((currentDate.getSeconds() * 1000) + currentDate.getMilliseconds());\n if (interval <= (util.MS_PER_MINUTE - 1000)) {\n window.setTimeout(function () {\n if (!isNullOrUndefined(_this.currentTimeIndicatorTimer)) {\n _this.clearCurrentTimeIndicatorTimer();\n _this.changeCurrentTimePosition();\n _this.updateCurrentTimeIndicatorTimer();\n }\n }, interval);\n }\n this.updateCurrentTimeIndicatorTimer();\n }\n }\n else {\n this.clearCurrentTimeIndicatorTimer();\n }\n }\n else {\n this.clearCurrentTimeIndicatorTimer();\n }\n };\n VerticalView.prototype.getCurrentTimeIndicatorIndex = function () {\n var currentDateIndex = [];\n if (!isNullOrUndefined(this.parent.resourceBase) && (this.parent.activeViewOptions.group.resources.length > 0) &&\n !this.parent.uiStateValues.isGroupAdaptive) {\n var count = 0;\n var currentDate = util.resetTime(this.parent.getCurrentTime());\n if (this.parent.virtualScrollModule && this.parent.activeViewOptions.allowVirtualScrolling &&\n this.parent.activeViewOptions.group.byDate) {\n for (var _i = 0, _a = this.parent.resourceBase.expandedResources; _i < _a.length; _i++) {\n var resource = _a[_i];\n if (util.resetTime(resource.date).getTime() === currentDate.getTime()) {\n currentDateIndex.push(count);\n }\n count += 1;\n }\n }\n else {\n for (var _b = 0, _c = this.parent.resourceBase.renderedResources; _b < _c.length; _b++) {\n var resource = _c[_b];\n var index = this.parent.getIndexOfDate(resource.renderDates, currentDate);\n if (index >= 0) {\n var resIndex = this.parent.activeViewOptions.group.byDate ?\n (this.parent.resourceBase.lastResourceLevel.length * index) + count : count + index;\n currentDateIndex.push(resIndex);\n }\n count += this.parent.activeViewOptions.group.byDate ? 1 : resource.renderDates.length;\n }\n }\n }\n else {\n var renderDates = (this.parent.uiStateValues.isGroupAdaptive && this.parent.resourceBase.lastResourceLevel.length > 0)\n ? this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex].renderDates : this.renderDates;\n var index = this.parent.getIndexOfDate(renderDates, util.resetTime(this.parent.getCurrentTime()));\n if (index >= 0) {\n currentDateIndex.push(index);\n }\n }\n return currentDateIndex;\n };\n VerticalView.prototype.clearCurrentTimeIndicatorTimer = function () {\n if (!isNullOrUndefined(this.currentTimeIndicatorTimer)) {\n window.clearInterval(this.currentTimeIndicatorTimer);\n this.currentTimeIndicatorTimer = null;\n this.removeCurrentTimeIndicatorElements();\n }\n };\n VerticalView.prototype.updateCurrentTimeIndicatorTimer = function () {\n var _this = this;\n this.currentTimeIndicatorTimer = window.setInterval(function () { _this.changeCurrentTimePosition(); }, util.MS_PER_MINUTE);\n };\n VerticalView.prototype.removeCurrentTimeIndicatorElements = function () {\n var queryString = '.' + cls.PREVIOUS_TIMELINE_CLASS + ',.' + cls.CURRENT_TIMELINE_CLASS + ',.' + cls.CURRENT_TIME_CLASS;\n var timeIndicator = [].slice.call(this.element.querySelectorAll(queryString));\n for (var _i = 0, timeIndicator_1 = timeIndicator; _i < timeIndicator_1.length; _i++) {\n var indicator = timeIndicator_1[_i];\n remove(indicator);\n }\n };\n VerticalView.prototype.changeCurrentTimePosition = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.removeCurrentTimeIndicatorElements();\n var currentDateIndex = this.getCurrentTimeIndicatorIndex();\n var firstRow = this.parent.getContentTable().rows[0];\n var top = this.getTopFromDateTime(this.parent.getCurrentTime());\n var topInPx = formatUnit(top);\n var rowIndex = Math.floor(top / firstRow.cells[0].offsetHeight);\n var timeCellsWrap = this.getLeftPanelElement();\n var timeTrs = [].slice.call(timeCellsWrap.querySelectorAll('tr'));\n if (isNullOrUndefined(rowIndex) || isNaN(rowIndex) || rowIndex === timeTrs.length) {\n return;\n }\n var curTimeWrap = [].slice.call(this.element.querySelectorAll('.' + cls.TIMELINE_WRAPPER_CLASS));\n for (var i = 0, length_1 = currentDateIndex[0]; i < length_1; i++) {\n curTimeWrap[parseInt(i.toString(), 10)].appendChild(createElement('div', { className: cls.PREVIOUS_TIMELINE_CLASS, styles: 'top:' + topInPx }));\n }\n for (var _i = 0, currentDateIndex_1 = currentDateIndex; _i < currentDateIndex_1.length; _i++) {\n var day = currentDateIndex_1[_i];\n curTimeWrap[parseInt(day.toString(), 10)].appendChild(createElement('div', { className: cls.CURRENT_TIMELINE_CLASS, styles: 'top:' + topInPx }));\n }\n var currentTimeEle = createElement('div', {\n innerHTML: this.parent.getTimeString(this.parent.getCurrentTime()),\n className: cls.CURRENT_TIME_CLASS,\n styles: 'top:' + topInPx\n });\n if (rowIndex <= timeTrs.length) {\n removeClass(timeCellsWrap.querySelectorAll('.' + cls.HIDE_CHILDS_CLASS), cls.HIDE_CHILDS_CLASS);\n if (timeTrs[parseInt(rowIndex.toString(), 10)]) {\n addClass([timeTrs[parseInt(rowIndex.toString(), 10)].lastElementChild], cls.HIDE_CHILDS_CLASS);\n }\n prepend([currentTimeEle], timeCellsWrap);\n currentTimeEle.style.top = formatUnit(currentTimeEle.offsetTop - (currentTimeEle.offsetHeight / 2));\n }\n };\n VerticalView.prototype.getTopFromDateTime = function (date) {\n var startHour = this.getStartHour();\n var diffInMinutes = ((date.getHours() - startHour.getHours()) * 60) + (date.getMinutes() - startHour.getMinutes());\n return (diffInMinutes * this.getWorkCellHeight() * this.parent.activeViewOptions.timeScale.slotCount) /\n this.parent.activeViewOptions.timeScale.interval;\n };\n VerticalView.prototype.getWorkCellHeight = function () {\n return parseFloat(this.element.querySelector('.' + cls.WORK_CELLS_CLASS).getBoundingClientRect().height.toFixed(2));\n };\n VerticalView.prototype.getTdContent = function (date, type, groupIndex) {\n var cntEle;\n var wrapper = createElement('div');\n var templateName = '';\n var templateId = this.parent.element.id + '_';\n switch (type) {\n case 'dateHeader':\n if (this.parent.activeViewOptions.dateHeaderTemplate) {\n templateName = 'dateHeaderTemplate';\n var args = { date: date, type: type };\n var viewName = this.parent.activeViewOptions.dateHeaderTemplateName;\n cntEle = [].slice.call(this.parent.getDateHeaderTemplate()(args, this.parent, templateName, templateId + viewName + templateName, false));\n }\n else {\n wrapper.innerHTML = this.parent.activeView.isTimelineView() ?\n \"\" + this.getTimelineDate(date) + \"\" :\n \"
\" + util.capitalizeFirstWord(this.getDayName(date), 'single') + \"
\" +\n (\"
\" + this.getDate(date) + \"
\");\n cntEle = [].slice.call(wrapper.childNodes);\n }\n break;\n case 'majorSlot':\n if (this.parent.activeViewOptions.timeScale.majorSlotTemplate) {\n templateName = 'majorSlotTemplate';\n var args = { date: date, type: type };\n cntEle = [].slice.call(this.parent.getMajorSlotTemplate()(args, this.parent, templateName, templateId + templateName, false));\n }\n else {\n wrapper.innerHTML = \"\" + this.getTime(date) + \"\";\n cntEle = [].slice.call(wrapper.childNodes);\n }\n break;\n case 'minorSlot':\n if (this.parent.activeViewOptions.timeScale.minorSlotTemplate) {\n templateName = 'minorSlotTemplate';\n var args = { date: date, type: type };\n cntEle = [].slice.call(this.parent.getMinorSlotTemplate()(args, this.parent, templateName, templateId + templateName, false));\n }\n else {\n cntEle = [].slice.call(wrapper.childNodes);\n }\n break;\n case 'alldayCells':\n if (this.parent.activeViewOptions.cellTemplate) {\n var viewName = this.parent.activeViewOptions.cellTemplateName;\n templateName = 'cellTemplate';\n var args = { date: date, type: type, groupIndex: groupIndex };\n cntEle = [].slice.call(this.parent.getCellTemplate()(args, this.parent, templateName, templateId + viewName + templateName, false));\n }\n break;\n }\n return cntEle;\n };\n VerticalView.prototype.refreshHeader = function () {\n remove(this.element.querySelector('tbody tr'));\n this.renderHeader();\n this.parent.notify(event.contentReady, {});\n };\n VerticalView.prototype.renderLayout = function (type) {\n this.setPanel(createElement('div', { className: cls.TABLE_WRAP_CLASS }));\n var clsList = [this.baseCssClass, this.viewClass];\n clsList.push(type);\n if (this.parent.activeViewOptions.group.byDate) {\n clsList.push('e-by-date');\n }\n if (!this.parent.activeViewOptions.timeScale.enable) {\n addClass([this.element], [cls.TIMESCALE_DISABLE, this.viewClass]);\n }\n if (this.parent.activeViewOptions.allowVirtualScrolling && !this.parent.uiStateValues.isGroupAdaptive) {\n clsList.push(cls.VIRTUAL_SCROLL_CLASS);\n }\n if (this.parent.rowAutoHeight && this.parent.eventSettings.ignoreWhitespace) {\n clsList.push(cls.IGNORE_WHITESPACE);\n }\n this.renderPanel(type);\n addClass([this.element], clsList);\n this.element.appendChild(this.createTableLayout(cls.OUTER_TABLE_CLASS));\n this.element.querySelector('table').setAttribute('role', 'presentation');\n this.colLevels = this.generateColumnLevels();\n this.renderHeader();\n this.renderContent();\n if (this.parent.uiStateValues.isGroupAdaptive && !this.parent.element.querySelector('.' + cls.RESOURCE_TOOLBAR_CONTAINER)) {\n this.renderResourceMobileLayout();\n }\n this.parent.notify(event.contentReady, {});\n };\n VerticalView.prototype.renderHeader = function () {\n var tr = createElement('tr');\n var dateTd = createElement('td');\n dateTd.appendChild(this.renderDatesHeader());\n if (this.parent.activeViewOptions.timeScale.enable) {\n var indentTd = createElement('td', { className: cls.LEFT_INDENT_CLASS });\n indentTd.appendChild(this.renderLeftIndent());\n tr.appendChild(indentTd);\n }\n tr.appendChild(dateTd);\n prepend([tr], this.element.querySelector('tbody'));\n };\n VerticalView.prototype.renderContent = function () {\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.parent.resourceBase.renderedResources = extend([], this.parent.resourceBase.lastResourceLevel, null, true);\n }\n var tr = createElement('tr');\n var workTd = createElement('td');\n if (this.parent.isAdaptive) {\n workTd.setAttribute('colspan', (this.parent.activeViewOptions.timeScale.enable ? '2' : '1'));\n var scrollContainer = createElement('div', { className: cls.SCROLL_CONTAINER_CLASS });\n if (this.parent.activeViewOptions.timeScale.enable) {\n scrollContainer.appendChild(this.renderTimeCells());\n }\n scrollContainer.appendChild(this.renderContentArea());\n workTd.appendChild(scrollContainer);\n EventHandler.add(scrollContainer, 'scroll', this.onAdaptiveScroll, this);\n EventHandler.add(scrollContainer, Browser.touchMoveEvent, this.onAdaptiveMove, this);\n tr.appendChild(workTd);\n }\n else {\n var levels = this.colLevels.slice(0);\n if (this.parent.virtualScrollModule) {\n this.resetColLevels();\n }\n var wrap = this.renderContentArea();\n workTd.appendChild(wrap);\n if (this.parent.activeViewOptions.timeScale.enable) {\n var timesTd = createElement('td');\n timesTd.appendChild(this.renderTimeCells());\n tr.appendChild(timesTd);\n }\n tr.appendChild(workTd);\n if (this.parent.virtualScrollModule) {\n this.colLevels = levels;\n this.parent.virtualScrollModule.renderVirtualTrack(wrap);\n }\n }\n this.element.querySelector('tbody').appendChild(tr);\n };\n VerticalView.prototype.renderLeftIndent = function () {\n var wrap = createElement('div', { className: cls.LEFT_INDENT_WRAP_CLASS });\n var tbl = this.createTableLayout();\n var trEle = createElement('tr');\n var rowCount = this.colLevels.length;\n var nth;\n for (var i = 0; i < rowCount; i++) {\n var ntr_1 = trEle.cloneNode();\n var data_1 = { className: [(this.colLevels[parseInt(i.toString(), 10)][0] && this.colLevels[parseInt(i.toString(), 10)][0].className[0])], type: 'emptyCells' };\n if (this.parent.activeViewOptions.showWeekNumber && data_1.className.indexOf(cls.HEADER_CELLS_CLASS) !== -1) {\n data_1.className.push(cls.WEEK_NUMBER_CLASS);\n var weekNo = this.parent.getWeekNumberContent(this.renderDates);\n data_1.template = [createElement('span', {\n innerHTML: '' + weekNo,\n attrs: { title: this.parent.localeObj.getConstant('week') + ' ' + weekNo }\n })];\n }\n nth = this.createTd(data_1);\n this.parent.renderHeaderIndentTemplate(data_1, nth);\n ntr_1.appendChild(nth);\n tbl.querySelector('tbody').appendChild(ntr_1);\n }\n var ntr = trEle.cloneNode();\n var appointmentExpandCollapse = createElement('div', {\n attrs: {\n 'tabindex': '0', 'role': 'list',\n title: this.parent.localeObj.getConstant('expandAllDaySection'), 'aria-disabled': 'false', 'aria-label': 'Expand section'\n },\n className: cls.ALLDAY_APPOINTMENT_SECTION_CLASS + ' ' + cls.APPOINTMENT_ROW_EXPAND_CLASS + ' ' +\n cls.ICON + ' ' + cls.DISABLE_CLASS\n });\n var data = { className: [cls.ALLDAY_CELLS_CLASS], type: 'emptyCells' };\n nth = this.createTd(data);\n nth.appendChild(appointmentExpandCollapse);\n this.parent.renderHeaderIndentTemplate(data, nth);\n ntr.appendChild(nth);\n tbl.querySelector('tbody').appendChild(ntr);\n wrap.appendChild(tbl);\n return wrap;\n };\n VerticalView.prototype.renderDatesHeader = function () {\n var container = createElement('div', { className: cls.DATE_HEADER_CONTAINER_CLASS });\n var wrap = createElement('div', { className: cls.DATE_HEADER_WRAP_CLASS });\n container.appendChild(wrap);\n var tbl = this.createTableLayout();\n var trEle = createElement('tr', { className: cls.HEADER_ROW_CLASS });\n var rowCount = this.colLevels.length;\n var lastLevel = this.colLevels[rowCount - 1];\n for (var i = 0; i < rowCount; i++) {\n var ntr = trEle.cloneNode();\n var level = this.colLevels[parseInt(i.toString(), 10)];\n for (var j = 0; j < level.length; j++) {\n ntr.appendChild(this.createTd(level[parseInt(j.toString(), 10)]));\n }\n tbl.querySelector('tbody').appendChild(ntr);\n }\n this.createAllDayRow(tbl, lastLevel);\n this.createColGroup(tbl, lastLevel);\n wrap.appendChild(tbl);\n return container;\n };\n VerticalView.prototype.createAllDayRow = function (table, tdData) {\n var ntr = createElement('tr', { className: cls.ALLDAY_ROW_CLASS });\n for (var j = 0; j < tdData.length; j++) {\n var td = extend({}, tdData[parseInt(j.toString(), 10)]);\n td.className = [cls.ALLDAY_CELLS_CLASS];\n td.type = 'alldayCells';\n var ntd = this.createTd(td);\n ntd.setAttribute('data-date', td.date.getTime().toString());\n if (!isNullOrUndefined(td.groupIndex)) {\n ntd.setAttribute('data-group-index', '' + td.groupIndex);\n }\n else if (this.parent.uiStateValues.isGroupAdaptive) {\n ntd.setAttribute('data-group-index', '' + this.parent.uiStateValues.groupIndex);\n }\n this.wireCellEvents(ntd);\n ntr.appendChild(ntd);\n }\n table.querySelector('tbody').appendChild(ntr);\n var thead = createElement('thead');\n thead.appendChild(this.parent.eventBase.createEventWrapper('allDay'));\n prepend([thead], table);\n };\n VerticalView.prototype.createTd = function (td) {\n var tdEle = createElement('td');\n this.addAttributes(td, tdEle);\n if (td.date && td.type) {\n var ele = this.getTdContent(td.date, td.type, td.groupIndex);\n if (ele && ele.length) {\n append(ele, tdEle);\n }\n }\n if (!this.parent.isMinMaxDate(util.resetTime(new Date('' + td.date)))) {\n addClass([tdEle], cls.DISABLE_DATES);\n }\n if (td.type === 'resourceHeader') {\n this.setResourceHeaderContent(tdEle, td);\n }\n if (td.type === 'dateHeader' && td.className.indexOf(cls.HEADER_CELLS_CLASS) >= 0) {\n tdEle.setAttribute('data-date', td.date.getTime().toString());\n if (!isNullOrUndefined(td.groupIndex)) {\n tdEle.setAttribute('data-group-index', '' + td.groupIndex);\n }\n this.wireMouseEvents(tdEle);\n }\n var args = { elementType: td.type, element: tdEle, date: td.date, groupIndex: td.groupIndex };\n this.parent.trigger(event.renderCell, args);\n return tdEle;\n };\n VerticalView.prototype.wireCellEvents = function (element) {\n EventHandler.add(element, 'mousedown', this.parent.workCellAction.cellMouseDown, this.parent.workCellAction);\n this.wireMouseEvents(element);\n };\n VerticalView.prototype.wireMouseEvents = function (element) {\n EventHandler.add(element, 'click', this.parent.workCellAction.cellClick, this.parent.workCellAction);\n if (!this.parent.isAdaptive) {\n EventHandler.add(element, 'dblclick', this.parent.workCellAction.cellDblClick, this.parent.workCellAction);\n }\n };\n VerticalView.prototype.renderTimeCells = function () {\n var _this = this;\n var wrap = createElement('div', { className: cls.TIME_CELLS_WRAP_CLASS });\n var tbl = this.createTableLayout();\n var trEle = createElement('tr');\n var handler = function (r) {\n r.type = r.first ? 'majorSlot' : 'minorSlot';\n r.className = r.last ? [cls.TIME_CELLS_CLASS, cls.TIME_SLOT_CLASS] : [cls.TIME_SLOT_CLASS];\n var ntr = trEle.cloneNode();\n var data = { date: r.date, type: r.type, className: r.className };\n ntr.appendChild(_this.createTd(data));\n tbl.querySelector('tbody').appendChild(ntr);\n return r;\n };\n this.getTimeSlotRows(handler);\n wrap.appendChild(tbl);\n return wrap;\n };\n VerticalView.prototype.renderContentArea = function () {\n var wrap = createElement('div', { className: cls.CONTENT_WRAP_CLASS });\n var tbl = this.createTableLayout(cls.CONTENT_TABLE_CLASS);\n this.setAriaAttributes(tbl);\n this.addAutoHeightClass(tbl);\n this.renderContentTable(tbl);\n this.createColGroup(tbl, this.colLevels.slice(-1)[0]);\n wrap.appendChild(tbl);\n this.wireCellEvents(tbl.querySelector('tbody'));\n EventHandler.add(wrap, 'scroll', this.onContentScroll, this);\n EventHandler.add(wrap, Browser.touchMoveEvent, this.onAdaptiveMove, this);\n return wrap;\n };\n VerticalView.prototype.renderContentTable = function (table) {\n var tBody = table.querySelector('tbody');\n append(this.getContentRows(), tBody);\n this.renderContentTableHeader(table);\n };\n VerticalView.prototype.getContentRows = function () {\n var _this = this;\n var rows = [];\n var tr = createElement('tr');\n var td = createElement('td', { attrs: { 'aria-selected': 'false' } });\n var handler = function (r) {\n var ntr = tr.cloneNode();\n for (var _i = 0, _a = _this.colLevels[_this.colLevels.length - 1]; _i < _a.length; _i++) {\n var tdData = _a[_i];\n var ntd = _this.createContentTd(tdData, r, td);\n ntr.appendChild(ntd);\n }\n rows.push(ntr);\n return r;\n };\n this.getTimeSlotRows(handler);\n return rows;\n };\n VerticalView.prototype.createContentTd = function (tdData, r, td) {\n var ntd = td.cloneNode();\n if (tdData.colSpan) {\n ntd.setAttribute('colspan', tdData.colSpan.toString());\n }\n var clsName = this.getContentTdClass(r);\n var cellDate = util.resetTime(tdData.date);\n if (!this.parent.isMinMaxDate(cellDate)) {\n clsName.push(cls.DISABLE_DATES);\n }\n util.setTime(cellDate, util.getDateInMs(r.date));\n var type = 'workCells';\n if (tdData.className.indexOf(cls.RESOURCE_PARENT_CLASS) !== -1) {\n clsName.push(cls.RESOURCE_GROUP_CELLS_CLASS);\n type = 'resourceGroupCells';\n }\n if (this.parent.workHours.highlight && ((this.parent.activeViewOptions.timeScale.enable &&\n this.isWorkHour(cellDate, tdData.startHour, tdData.endHour, tdData.workDays)) ||\n (!this.parent.activeViewOptions.timeScale.enable && this.isWorkDay(cellDate, tdData.workDays)))) {\n clsName.push(cls.WORK_HOURS_CLASS);\n }\n addClass([ntd], clsName);\n if (this.parent.activeViewOptions.cellTemplate) {\n var args_1 = { date: cellDate, type: type, groupIndex: tdData.groupIndex };\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.cellTemplateName;\n var templateId = scheduleId + viewName + 'cellTemplate';\n var tooltipTemplate = [].slice.call(this.parent.getCellTemplate()(args_1, this.parent, 'cellTemplate', templateId, false));\n append(tooltipTemplate, ntd);\n }\n ntd.setAttribute('data-date', cellDate.getTime().toString());\n if (!isNullOrUndefined(tdData.groupIndex) || this.parent.uiStateValues.isGroupAdaptive) {\n var groupIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex :\n tdData.groupIndex;\n ntd.setAttribute('data-group-index', '' + groupIndex);\n }\n var args = { elementType: type, element: ntd, date: cellDate, groupIndex: tdData.groupIndex };\n this.parent.trigger(event.renderCell, args);\n return ntd;\n };\n VerticalView.prototype.getContentTdClass = function (r) {\n return r.last ? [cls.WORK_CELLS_CLASS] : [cls.WORK_CELLS_CLASS, cls.ALTERNATE_CELLS_CLASS];\n };\n VerticalView.prototype.renderContentTableHeader = function (table) {\n var thead = createElement('thead');\n thead.appendChild(this.parent.eventBase.createEventWrapper());\n if (this.parent.activeViewOptions.timeScale.enable) {\n thead.appendChild(this.parent.eventBase.createEventWrapper('timeIndicator'));\n }\n prepend([thead], table);\n };\n VerticalView.prototype.getScrollableElement = function () {\n if (this.parent.isAdaptive && !this.isTimelineView()) {\n return this.element.querySelector('.' + cls.SCROLL_CONTAINER_CLASS);\n }\n else {\n return this.getContentAreaElement();\n }\n };\n VerticalView.prototype.getLeftPanelElement = function () {\n return this.element.querySelector('.' + cls.TIME_CELLS_WRAP_CLASS);\n };\n VerticalView.prototype.getEndDateFromStartDate = function (start) {\n var msMajorInterval = this.parent.activeViewOptions.timeScale.interval * util.MS_PER_MINUTE;\n var msInterval = msMajorInterval / this.parent.activeViewOptions.timeScale.slotCount;\n var end = new Date(start.getTime());\n end.setMilliseconds(end.getMilliseconds() + msInterval);\n return end;\n };\n VerticalView.prototype.getTimeSlotRows = function (handler) {\n var rows = [];\n var startHour = this.getStartHour();\n var endHour = this.getEndHour();\n var msMajorInterval = this.parent.activeViewOptions.timeScale.interval * util.MS_PER_MINUTE;\n var msInterval = msMajorInterval / this.parent.activeViewOptions.timeScale.slotCount;\n var length = Math.round(util.MS_PER_DAY / msInterval);\n var msStartHour = startHour.getTime();\n var msEndHour = endHour.getTime();\n if (msStartHour !== msEndHour) {\n var milliSeconds = (startHour.getTimezoneOffset() !== endHour.getTimezoneOffset()) ?\n (msEndHour - msStartHour) - 3600000 : (msEndHour - msStartHour);\n length = Math.round(milliSeconds / msInterval);\n }\n if (!this.parent.activeViewOptions.timeScale.enable) {\n length = 1;\n }\n var start = this.parent.getStartEndTime(this.parent.workHours.start);\n var end = this.parent.getStartEndTime(this.parent.workHours.end);\n for (var i = 0; i < length; i++) {\n var dt = new Date(msStartHour + (msInterval * i));\n if (util.isDaylightSavingTime(dt) || new Date(msStartHour).getTimezoneOffset() !== dt.getTimezoneOffset()) {\n var timeOffset = new Date(msStartHour).getTimezoneOffset() - dt.getTimezoneOffset();\n dt = new Date(dt.getTime() - (1000 * 60 * timeOffset));\n }\n var majorTickDivider = i % (msMajorInterval / msInterval);\n var row = {\n date: new Date('' + dt),\n startHour: start,\n endHour: end,\n first: (majorTickDivider === 0),\n middle: (majorTickDivider < this.parent.activeViewOptions.timeScale.slotCount - 1),\n last: (majorTickDivider === this.parent.activeViewOptions.timeScale.slotCount - 1),\n type: ''\n };\n if (handler) {\n handler(row);\n }\n rows.push(row);\n }\n return rows;\n };\n VerticalView.prototype.getAdjustedDate = function (startTime) {\n if (!this.parent.activeViewOptions.timeScale.enable) {\n return new Date(startTime.setHours(0, 0, 0, 0));\n }\n else {\n var timeSlots = this.getTimeSlotRows();\n var startDate = new Date(new Date(timeSlots[0].date.getTime()).\n setHours(startTime.getHours(), startTime.getMinutes(), startTime.getMilliseconds()));\n for (var i = 0; i < timeSlots.length; i++) {\n if (timeSlots[parseInt(i.toString(), 10)].date.getTime() > startDate.getTime()) {\n startTime.setHours(timeSlots[i - 1].date.getHours(), timeSlots[i - 1].date.getMinutes(), timeSlots[i - 1].date.getMilliseconds());\n return new Date(startTime);\n }\n }\n }\n return null;\n };\n VerticalView.prototype.destroy = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.clearCurrentTimeIndicatorTimer();\n if (this.element) {\n if (this.appointment) {\n this.appointment.destroy();\n this.appointment = null;\n }\n var contentScrollableEle = this.getContentAreaElement();\n if (contentScrollableEle) {\n EventHandler.remove(contentScrollableEle, 'scroll', this.onContentScroll);\n EventHandler.remove(contentScrollableEle, Browser.touchMoveEvent, this.onAdaptiveMove);\n }\n if (this.parent.resourceBase) {\n this.parent.resourceBase.destroy();\n }\n if (this.parent.scheduleTouchModule) {\n this.parent.scheduleTouchModule.resetValues();\n }\n _super.prototype.destroy.call(this);\n }\n };\n return VerticalView;\n}(ViewBase));\nexport { VerticalView };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nimport { VerticalView } from './vertical-view';\n/**\n * day view\n */\nvar Day = /** @class */ (function (_super) {\n __extends(Day, _super);\n /**\n * Constructor for day view\n *\n * @param {Schedule} parent Accepts the schedule instance\n */\n function Day(parent) {\n var _this = _super.call(this, parent) || this;\n _this.viewClass = 'e-day-view';\n return _this;\n }\n /**\n * Get module name.\n *\n * @returns {string} Returns the module name.\n */\n Day.prototype.getModuleName = function () {\n return 'day';\n };\n return Day;\n}(VerticalView));\nexport { Day };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nimport { VerticalView } from './vertical-view';\n/**\n * week view\n */\nvar Week = /** @class */ (function (_super) {\n __extends(Week, _super);\n /**\n * Constructor for week view\n *\n * @param {Schedule} parent Accepts the schedule instance\n */\n function Week(parent) {\n var _this = _super.call(this, parent) || this;\n _this.viewClass = 'e-week-view';\n return _this;\n }\n Week.prototype.startDate = function () {\n return this.getViewStartDate();\n };\n Week.prototype.endDate = function () {\n return this.getViewEndDate();\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the module name.\n */\n Week.prototype.getModuleName = function () {\n return 'week';\n };\n return Week;\n}(VerticalView));\nexport { Week };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined, addClass, createElement, append, EventHandler, extend, remove } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { ViewBase } from '../renderer/view-base';\nimport * as util from '../base/util';\nimport * as cls from '../base/css-constant';\nimport * as event from '../base/constant';\nvar AgendaBase = /** @class */ (function (_super) {\n __extends(AgendaBase, _super);\n function AgendaBase(parent) {\n return _super.call(this, parent) || this;\n }\n // eslint-disable-next-line max-len\n AgendaBase.prototype.createAgendaContentElement = function (type, listData, aTd, groupOrder, groupIndex) {\n var _this = this;\n var listElement;\n var fieldMapping = this.parent.eventFields;\n if (type === 'noEvents') {\n var noEvents = [{ 'subject': this.parent.localeObj.getConstant('noEvents') }];\n listElement = ListBase.createList(this.parent.createElement, noEvents, {\n moduleName: 'agenda',\n listClass: this.parent.activeView.viewClass,\n itemClass: this.parent.activeView.viewClass,\n template: \"
\" + this.parent.localeObj.getConstant('noEvents') + \"
\"\n });\n if (listElement.querySelector('.e-agenda-item').children.length === 0) {\n listElement.firstElementChild.appendChild(createElement('div', { className: cls.AGENDA_NO_EVENT_CLASS, innerHTML: this.parent.localeObj.getConstant('noEvents') }));\n }\n }\n else {\n listElement = ListBase.createList(this.parent.createElement, listData, {\n moduleName: 'agenda',\n listClass: this.parent.activeView.viewClass,\n itemClass: this.parent.activeView.viewClass\n });\n var listElements = [].slice.call(listElement.children);\n listElements.forEach(function (element, li) {\n var appWrapper = createElement('div', {\n className: cls.APPOINTMENT_CLASS, attrs: {\n 'data-id': 'Appointment_' + listData[parseInt(li.toString(), 10)][\"\" + _this.parent.eventFields.id],\n 'data-guid': listData[parseInt(li.toString(), 10)].Guid,\n 'role': 'button',\n 'tabindex': '0',\n 'aria-disabled': _this.parent.eventBase.getReadonlyAttribute(listData[parseInt(li.toString(), 10)]),\n 'aria-label': _this.parent.getAnnouncementString(listData[parseInt(li.toString(), 10)])\n }\n });\n if (!isNullOrUndefined(groupIndex)) {\n appWrapper.setAttribute('data-group-index', groupIndex.toString());\n }\n _this.parent.eventBase.applyResourceColor(appWrapper, listData[parseInt(li.toString(), 10)], 'borderColor', groupOrder);\n var templateEle;\n if (!isNullOrUndefined(_this.parent.activeViewOptions.eventTemplate)) {\n addClass([appWrapper], cls.EVENT_TEMPLATE);\n var scheduleId = _this.parent.element.id + '_';\n var viewName = _this.parent.activeViewOptions.eventTemplateName;\n var templateId = scheduleId + viewName + 'eventTemplate';\n templateEle = _this.parent.getAppointmentTemplate()(listData[parseInt(li.toString(), 10)], _this.parent, 'eventTemplate', templateId, false);\n if (!isNullOrUndefined(listData[parseInt(li.toString(), 10)][fieldMapping.recurrenceRule])) {\n var iconClass = (listData[parseInt(li.toString(), 10)][fieldMapping.id] ===\n listData[parseInt(li.toString(), 10)][fieldMapping.recurrenceID]) ?\n cls.EVENT_RECURRENCE_ICON_CLASS : cls.EVENT_RECURRENCE_EDIT_ICON_CLASS;\n appWrapper.appendChild(createElement('div', { className: cls.ICON + ' ' + iconClass }));\n }\n }\n else {\n templateEle = _this.createAppointment(listData[parseInt(li.toString(), 10)]);\n }\n append([].slice.call(templateEle), appWrapper);\n util.removeChildren(element);\n element.appendChild(appWrapper);\n var args = {\n data: extend({}, listData[parseInt(li.toString(), 10)], null, true),\n element: element, cancel: false\n };\n _this.parent.trigger(event.eventRendered, args, function (eventArgs) {\n if (eventArgs.cancel) {\n remove(element);\n }\n });\n });\n }\n aTd.appendChild(listElement);\n if ((this.parent.currentView === 'MonthAgenda' && this.parent.activeViewOptions.group.resources.length > 0)\n || this.parent.currentView === 'Agenda') {\n addClass([aTd], cls.AGENDA_DAY_BORDER_CLASS);\n }\n this.parent.renderTemplates();\n return aTd;\n };\n AgendaBase.prototype.createAppointment = function (event) {\n var fieldMapping = this.parent.eventFields;\n var eventSubject = (event[fieldMapping.subject] || this.parent.eventSettings.fields.subject.default\n || this.parent.localeObj.getConstant('addTitle'));\n var eventLocation = (event[fieldMapping.location] || this.parent.eventSettings.fields.location.default);\n var appSubjectWrap = createElement('div', { className: cls.SUBJECT_WRAP });\n if (!isNullOrUndefined(eventLocation) && eventLocation !== '') {\n eventSubject += ',';\n }\n var appSubjectText = createElement('div', { className: cls.SUBJECT_CLASS });\n this.parent.sanitize(eventSubject, appSubjectText);\n appSubjectWrap.appendChild(appSubjectText);\n if (!isNullOrUndefined(eventLocation) && eventLocation !== '') {\n var appLocation = createElement('div', { className: cls.LOCATION_CLASS });\n this.parent.sanitize(eventLocation, appLocation);\n appSubjectWrap.appendChild(appLocation);\n }\n if (!isNullOrUndefined(event[fieldMapping.recurrenceRule])) {\n var iconClass = (event[fieldMapping.id] === event[fieldMapping.recurrenceID]) ?\n cls.EVENT_RECURRENCE_ICON_CLASS : cls.EVENT_RECURRENCE_EDIT_ICON_CLASS;\n appSubjectWrap.appendChild(createElement('div', { className: cls.ICON + ' ' + iconClass }));\n }\n var strDate = event[fieldMapping.startTime];\n var endDate = event[fieldMapping.endTime];\n var isAllDay = event[fieldMapping.isAllDay];\n var allDayStr = this.parent.localeObj.getConstant('allDay');\n var timeStr = this.parent.getTimeString(strDate) + ' - ' + this.parent.getTimeString(endDate);\n if (!isNullOrUndefined(event.data)) {\n var milliSeconds = (endDate.getTimezoneOffset() !== strDate.getTimezoneOffset()) ?\n (endDate.getTime() - strDate.getTime() + 3600000) : (endDate.getTime() - strDate.getTime());\n var eventString = (milliSeconds / util.MS_PER_DAY) >= 1 ? allDayStr : timeStr;\n allDayStr = eventString + ' (' + this.parent.localeObj.getConstant('day') + ' '\n + event.data.index + '/' + event.data.count + ')';\n }\n var displayStr = (!isNullOrUndefined(event.data) || isAllDay) ? allDayStr : timeStr;\n var appDateTime = createElement('div', { className: cls.DATE_TIME_CLASS, innerHTML: displayStr });\n return [appSubjectWrap, appDateTime];\n };\n AgendaBase.prototype.processAgendaEvents = function (events) {\n var eventsProcessed = [];\n if (isNullOrUndefined(events)) {\n return eventsProcessed;\n }\n for (var _i = 0, events_1 = events; _i < events_1.length; _i++) {\n var event_1 = events_1[_i];\n var spanned = this.parent.eventBase.splitEventByDay(event_1);\n eventsProcessed = eventsProcessed.concat(spanned.length > 1 ? spanned : event_1);\n }\n return eventsProcessed;\n };\n AgendaBase.prototype.wireEventActions = function () {\n var eventElement = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n for (var _i = 0, eventElement_1 = eventElement; _i < eventElement_1.length; _i++) {\n var element = eventElement_1[_i];\n this.parent.eventBase.wireAppointmentEvents(element, this.parent.getEventDetails(element), true);\n }\n var dateHeaderElement = [].slice.call(this.parent.element.querySelectorAll('.e-m-date'));\n for (var _a = 0, dateHeaderElement_1 = dateHeaderElement; _a < dateHeaderElement_1.length; _a++) {\n var element = dateHeaderElement_1[_a];\n EventHandler.add(element, 'click', this.parent.agendaModule.dayNavigationClick, this);\n }\n };\n AgendaBase.prototype.calculateResourceTableElement = function (tBody, noOfDays, agendaDate) {\n if (isNullOrUndefined(this.parent.resourceBase.lastResourceLevel)) {\n var level = this.getDateSlots(this.renderDates, this.parent.activeViewOptions.workDays);\n this.parent.resourceBase.generateResourceLevels(level);\n }\n var agendaLastDate = util.addDays(new Date(agendaDate.getTime()), noOfDays);\n var days = (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') ? noOfDays : 1;\n var resColl = this.parent.resourceBase.resourceCollection;\n var resData = this.parent.resourceBase.lastResourceLevel;\n var initialDate = agendaDate;\n for (var i = 0; i < days; i++) {\n var lastLevelInfo = [];\n var tempLastLevelInfo = [];\n var tempIndex = 0;\n var eventObj = void 0;\n var dateObj = void 0;\n var firstDate = util.addDays(initialDate, i);\n var finalDate = (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda')\n ? util.addDays(firstDate, 1) : agendaLastDate;\n var agendaCollection = this.parent.eventBase.filterEvents(firstDate, finalDate);\n if (agendaCollection.length > 0 || !this.parent.hideEmptyAgendaDays || this.parent.currentView === 'MonthAgenda') {\n for (var res = 0; res < resData.length; res++) {\n noOfDays = (!this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') ? noOfDays : 1;\n var data = [];\n agendaDate = firstDate;\n // eslint-disable-next-line max-len\n var resDataCollection = this.parent.eventBase.filterEvents(agendaDate, agendaLastDate, agendaCollection, resData[parseInt(res.toString(), 10)]);\n if (resDataCollection.length > 0 || !this.parent.hideEmptyAgendaDays || this.parent.currentView === 'MonthAgenda') {\n for (var r = 0; r < noOfDays; r++) {\n // eslint-disable-next-line max-len\n var resDayCollection = this.parent.eventBase.filterEvents(agendaDate, util.addDays(agendaDate, 1), resDataCollection, undefined);\n if (resDayCollection.length > 0 || !this.parent.hideEmptyAgendaDays ||\n this.parent.currentView === 'MonthAgenda') {\n data.push(resDayCollection[0]);\n eventObj = {\n rowSpan: 1, type: 'eventColumn', resource: resColl[resColl.length - 1],\n groupIndex: resData[parseInt(res.toString(), 10)].groupIndex,\n groupOrder: resData[parseInt(res.toString(), 10)].groupOrder,\n resourceData: resData[parseInt(res.toString(), 10)].resourceData,\n eventData: resDayCollection, date: agendaDate\n };\n dateObj = {\n rowSpan: 1, type: 'dateColumn', resource: resColl[parseInt((resColl.length - 1).toString(), 10)],\n groupOrder: resData[parseInt(res.toString(), 10)].groupOrder,\n resourceData: resData[parseInt(res.toString(), 10)].resourceData,\n date: agendaDate\n };\n if (!lastLevelInfo[parseInt(tempIndex.toString(), 10)]) {\n lastLevelInfo[parseInt(tempIndex.toString(), 10)] = [];\n }\n lastLevelInfo[parseInt(tempIndex.toString(), 10)].push(eventObj);\n lastLevelInfo[parseInt(tempIndex.toString(), 10)].push(dateObj);\n tempIndex++;\n }\n agendaDate = util.addDays(agendaDate, 1);\n if (agendaDate.getTime() >= agendaLastDate.getTime() || this.parent.activeViewOptions.group.byDate\n || this.parent.currentView === 'MonthAgenda') {\n lastLevelInfo[lastLevelInfo.length - 1][1].cssClass = cls.AGENDA_DAY_BORDER_CLASS;\n var tempObj = {\n rowSpan: data.length, type: 'resourceColumn', resource: resColl[parseInt((resColl.length - 1).toString(), 10)],\n groupOrder: resData[parseInt(res.toString(), 10)].groupOrder.slice(0, -1),\n resourceData: resData[parseInt(res.toString(), 10)].resourceData,\n groupIndex: (lastLevelInfo.length - data.length), className: [cls.RESOURCE_NAME],\n date: agendaDate\n };\n lastLevelInfo[parseInt((lastLevelInfo.length - data.length).toString(), 10)].push(tempObj);\n tempLastLevelInfo.push(extend({}, tempObj, null, true));\n break;\n }\n }\n }\n }\n var topResources = resColl.slice(0, -1);\n var tempGroupedData = [];\n var totalRowSpan = 0;\n for (var y = 0; y < topResources.length; y++) {\n var data = topResources[topResources.length - (y + 1)].dataSource;\n for (var x = 0; x < data.length; x++) {\n var z = 0;\n for (var u = 0; u < tempLastLevelInfo.length; u++) {\n // eslint-disable-next-line max-len\n if (tempLastLevelInfo[parseInt(u.toString(), 10)].groupOrder[topResources.length - (y + 1)] === data[parseInt(x.toString(), 10)][topResources[topResources.length - (y + 1)].idField]) {\n totalRowSpan = totalRowSpan + tempLastLevelInfo[parseInt(u.toString(), 10)].rowSpan;\n tempGroupedData.push(extend({}, tempLastLevelInfo[parseInt(u.toString(), 10)], null, true));\n }\n if (++z === tempLastLevelInfo.length && tempGroupedData.length > 0) {\n tempGroupedData[0].rowSpan = totalRowSpan;\n tempGroupedData[0].type = 'parentColumnLevel_' + (y + 1);\n tempGroupedData[0].resource = topResources[topResources.length - (y + 1)];\n tempGroupedData[0].resourceData = data[parseInt(x.toString(), 10)];\n tempGroupedData[0].date = agendaDate;\n lastLevelInfo[tempGroupedData[0].groupIndex].push(tempGroupedData[0]);\n tempGroupedData = [];\n totalRowSpan = 0;\n }\n }\n }\n }\n this.createResourceTableRow(lastLevelInfo, tBody);\n }\n }\n var totalCollection = this.parent.eventBase.filterEvents(initialDate, agendaLastDate);\n if (totalCollection.length === 0 && !this.parent.activeViewOptions.allowVirtualScrolling && this.parent.hideEmptyAgendaDays) {\n this.renderEmptyContent(tBody, initialDate);\n }\n };\n AgendaBase.prototype.createResourceTableRow = function (tContent, tBody) {\n var tr = createElement('tr');\n var ntr;\n var td = createElement('td');\n var tempData;\n var rowSpan = 0;\n var level;\n if (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') {\n var tContentCollection = [];\n var parentCollection = this.parent.resourceBase.resourceCollection.slice(0, -1);\n for (var w = 0; w < tContent.length; w++) {\n tContentCollection = tContentCollection.concat(tContent[parseInt(w.toString(), 10)]);\n }\n level = (parentCollection.length > 0) ? 'parentColumnLevel_' + parentCollection.length : 'resourceColumn';\n var rowSpanCollection = tContentCollection.filter(function (data) { return data.type === level; });\n for (var x = 0; x < rowSpanCollection.length; x++) {\n rowSpan = rowSpan + rowSpanCollection[parseInt(x.toString(), 10)].rowSpan;\n }\n }\n for (var row = 0; row < tContent.length; row++) {\n ntr = tr.cloneNode();\n for (var col = tContent[parseInt(row.toString(), 10)].length - 1; col >= 0; col--) {\n var data = tContent[parseInt(row.toString(), 10)][parseInt(col.toString(), 10)];\n var ntd = td.cloneNode();\n if (data.type === 'dateColumn') {\n if (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') {\n tempData = tContent[parseInt(row.toString(), 10)][parseInt(col.toString(), 10)];\n continue;\n }\n ntd.setAttribute('data-date', data.date.getTime().toString());\n ntd.appendChild(this.createDateHeaderElement(data.date));\n var className = [cls.AGENDA_CELLS_CLASS, cls.AGENDA_DATE_CLASS];\n if (data.cssClass) {\n className.push(data.cssClass);\n }\n addClass([ntd], className);\n if (this.isCurrentDate(new Date(data.date.getTime()))) {\n addClass(ntd.childNodes, cls.AGENDA_CURRENT_DAY_CLASS);\n }\n ntr.appendChild(ntd);\n }\n else if (data.type === 'eventColumn') {\n var elementType = (data.eventData.length === 0) ? 'noEvents' : 'data';\n ntd = this.createAgendaContentElement(elementType, data.eventData, ntd, data.groupOrder, data.groupIndex);\n ntd.setAttribute('data-date', data.date.getTime().toString());\n if (this.parent.activeViewOptions.group.byDate || this.parent.currentView === 'MonthAgenda') {\n addClass([ntd], [cls.AGENDA_CELLS_CLASS, cls.AGENDA_DAY_PADDING_CLASS]);\n }\n ntr.appendChild(ntd);\n }\n else {\n ntd.setAttribute('rowspan', data.rowSpan.toString());\n addClass([ntd], cls.AGENDA_RESOURCE_CLASS);\n this.setResourceHeaderContent(ntd, data, data.className[0]);\n ntr.appendChild(ntd);\n }\n }\n if (this.parent.activeViewOptions.group.byDate && row === 0 && this.parent.currentView !== 'MonthAgenda') {\n var ntd = td.cloneNode();\n ntd.setAttribute('data-date', tempData.date.getTime().toString());\n ntd.setAttribute('rowspan', rowSpan.toString());\n ntd.appendChild(this.createDateHeaderElement(tempData.date));\n addClass([ntd], [cls.AGENDA_CELLS_CLASS, cls.AGENDA_DATE_CLASS, cls.DATE_BORDER_CLASS]);\n var daysCount = util.getDaysCount(this.parent.selectedDate.getTime(), tempData.date.getTime());\n ntr.setAttribute('data-row-index', daysCount.toString());\n if (this.parent.element.querySelector(\".e-agenda-view tr[data-row-index=\\\"\" + daysCount + \"\\\"]\")) {\n break;\n }\n ntr.insertBefore(ntd, ntr.childNodes[0]);\n }\n tBody.appendChild(ntr);\n }\n };\n AgendaBase.prototype.createDateHeaderElement = function (date) {\n var dateHeader;\n if (this.parent.activeViewOptions.dateHeaderTemplate) {\n dateHeader = createElement('div', { className: cls.AGENDA_HEADER_CLASS });\n var args = { date: date, type: 'dateHeader' };\n var scheduleId = this.parent.element.id + '_';\n var viewName = this.parent.activeViewOptions.dateHeaderTemplateName;\n var templateId = scheduleId + viewName + 'dateHeaderTemplate';\n var dateTemplate = [].slice.call(this.parent.getDateHeaderTemplate()(args, this.parent, 'dateHeaderTemplate', templateId, false));\n append(dateTemplate, dateHeader);\n }\n else {\n dateHeader = this.getMobileDateElement(date, cls.AGENDA_HEADER_CLASS);\n }\n return dateHeader;\n };\n AgendaBase.prototype.renderEmptyContent = function (tBody, agendaDate) {\n var eTr = this.createTableRowElement(agendaDate, 'noEvents');\n var eTd = eTr.children[0];\n var noEvents = createElement('div', {\n className: cls.AGENDA_EMPTY_EVENT_CLASS,\n innerHTML: this.parent.localeObj.getConstant('noEvents')\n });\n eTd.appendChild(noEvents);\n tBody.appendChild(eTr);\n };\n AgendaBase.prototype.createTableRowElement = function (date, type) {\n var daysCount = util.getDaysCount(this.parent.selectedDate.getTime(), date.getTime());\n var tr = createElement('tr', { attrs: { 'data-row-index': daysCount.toString() } });\n var td = createElement('td', {\n attrs: {\n 'class': (type === 'monthHeader') ? cls.MONTH_HEADER_CLASS : cls.AGENDA_CELLS_CLASS,\n 'aria-selected': 'false',\n 'data-column-index': daysCount.toString(),\n 'data-date': date.getTime().toString()\n }\n });\n var dTd = td.cloneNode();\n var aTd = td.cloneNode();\n tr.appendChild(dTd);\n if (type !== 'noEvents') {\n tr.appendChild(aTd);\n }\n return tr;\n };\n AgendaBase.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n };\n return AgendaBase;\n}(ViewBase));\nexport { AgendaBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { formatUnit, isNullOrUndefined, closest, extend, append, prepend, remove } from '@syncfusion/ej2-base';\nimport { createElement, addClass, EventHandler } from '@syncfusion/ej2-base';\nimport { AgendaBase } from '../event-renderer/agenda-base';\nimport * as util from '../base/util';\nimport * as event from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * agenda view\n */\nvar Agenda = /** @class */ (function (_super) {\n __extends(Agenda, _super);\n function Agenda(parent) {\n var _this = _super.call(this, parent) || this;\n _this.viewClass = 'e-agenda-view';\n _this.isInverseTableSelect = false;\n _this.agendaDates = {};\n _this.virtualScrollTop = 1;\n return _this;\n }\n Agenda.prototype.getModuleName = function () {\n return 'agenda';\n };\n Agenda.prototype.renderLayout = function () {\n this.agendaDates = {};\n this.element = createElement('div', { className: cls.TABLE_WRAP_CLASS });\n addClass([this.element], this.viewClass);\n this.element.appendChild(this.createTableLayout(cls.OUTER_TABLE_CLASS));\n this.element.querySelector('table').setAttribute('role', 'presentation');\n this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS).appendChild(this.element);\n var eTr = createElement('tr');\n this.element.querySelector('tbody').appendChild(eTr);\n var workTd = createElement('td');\n eTr.appendChild(workTd);\n var wrap = createElement('div', { className: cls.CONTENT_WRAP_CLASS });\n workTd.appendChild(wrap);\n var tbl = this.createTableLayout(cls.CONTENT_TABLE_CLASS);\n this.setAriaAttributes(tbl);\n wrap.appendChild(tbl);\n var tBody = tbl.querySelector('tbody');\n var agendaDate = util.resetTime(this.parent.selectedDate);\n this.renderEmptyContent(tBody, agendaDate);\n this.wireEvents();\n if (this.parent.resourceBase) {\n this.parent.resourceBase.generateResourceLevels([{ renderDates: this.parent.activeView.renderDates }]);\n }\n if (this.parent.uiStateValues.isGroupAdaptive && !this.parent.element.querySelector('.' + cls.RESOURCE_TOOLBAR_CONTAINER)) {\n this.renderResourceMobileLayout();\n }\n this.parent.notify(event.contentReady, {});\n };\n Agenda.prototype.eventLoad = function (args) {\n this.dataSource = extend([], this.parent.eventsData, null, true);\n for (var _i = 0, _a = this.parent.eventsData; _i < _a.length; _i++) {\n var event_1 = _a[_i];\n delete event_1.generatedDates;\n }\n var eventCollection = this.parent.activeViewOptions.allowVirtualScrolling ?\n args.processedData : this.parent.eventsProcessed;\n if (this.parent.uiStateValues.isGroupAdaptive) {\n var resource = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex];\n this.dataSource = this.parent.eventBase.filterEventsByResource(resource, this.dataSource);\n eventCollection = this.parent.eventBase.filterEventsByResource(resource, eventCollection);\n }\n this.parent.eventsProcessed = this.processAgendaEvents(eventCollection);\n var agendaDate = util.resetTime(this.parent.selectedDate);\n var tBody = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS + ' tbody');\n util.removeChildren(tBody);\n this.renderInitialContent(tBody, agendaDate);\n this.wireEventActions();\n var contentArea = closest(tBody, '.' + cls.CONTENT_WRAP_CLASS);\n contentArea.scrollTop = 1;\n this.parent.notify(event.eventsLoaded, {});\n if (!this.parent.activeViewOptions.allowVirtualScrolling) {\n this.retainScrollPosition();\n }\n };\n Agenda.prototype.refreshEvent = function (refreshDate) {\n var processedData = [];\n var fields = this.parent.eventFields;\n for (var _i = 0, _a = this.dataSource; _i < _a.length; _i++) {\n var data = _a[_i];\n if (isNullOrUndefined(data[fields.recurrenceID]) && !isNullOrUndefined(data[fields.recurrenceRule]) &&\n !isNullOrUndefined(data.generatedDates) && refreshDate >= data.generatedDates.end) {\n processedData = processedData.concat(this.parent.eventBase.generateOccurrence(data, refreshDate));\n }\n }\n this.parent.eventsProcessed = this.parent.eventsProcessed.concat(this.processAgendaEvents(processedData));\n };\n Agenda.prototype.refreshHeader = function () {\n var tBody = this.element.querySelector('.' + cls.CONTENT_TABLE_CLASS + ' tbody');\n if (this.parent.activeViewOptions.group.byDate) {\n util.removeChildren(tBody);\n }\n else {\n remove(tBody.firstElementChild);\n }\n var agendaDate = util.resetTime(this.parent.selectedDate);\n var emptyTBody = createElement('tbody');\n var firstDate = new Date(agendaDate.getTime());\n var lastDate = (this.parent.activeViewOptions.allowVirtualScrolling && this.parent.hideEmptyAgendaDays) ?\n this.getEndDateFromStartDate(firstDate) : util.addDays(firstDate, this.parent.agendaDaysCount);\n this.renderContent(emptyTBody, firstDate, lastDate);\n append([].slice.call(emptyTBody.childNodes), tBody);\n };\n Agenda.prototype.renderInitialContent = function (tBody, agendaDate) {\n var emptyTBody = createElement('tbody');\n var firstDate = new Date(agendaDate.getTime());\n var lastDate = (this.parent.activeViewOptions.allowVirtualScrolling && this.parent.hideEmptyAgendaDays) ?\n this.getEndDateFromStartDate(firstDate) : util.addDays(firstDate, this.parent.agendaDaysCount);\n this.renderContent(emptyTBody, firstDate, lastDate);\n append([].slice.call(emptyTBody.childNodes), tBody);\n // Initial rendering, to load previous date events upto scroll bar enable\n if (this.parent.activeViewOptions.allowVirtualScrolling && this.parent.hideEmptyAgendaDays && this.parent.eventsData.length > 0) {\n var contentArea = this.getContentAreaElement();\n var contentChild = contentArea.querySelector('.e-content-table');\n while (contentArea.offsetWidth <= contentArea.clientWidth) {\n if (this.parent.isAdaptive && contentChild.offsetHeight >= contentArea.clientHeight) {\n break;\n }\n var emptyTBody_1 = createElement('tbody');\n lastDate = firstDate;\n firstDate = util.addDays(lastDate, -this.parent.agendaDaysCount);\n this.renderContent(emptyTBody_1, firstDate, lastDate);\n prepend([].slice.call(emptyTBody_1.childNodes), tBody);\n if (firstDate <= this.parent.minDate) {\n break;\n }\n }\n }\n if (tBody.childNodes.length <= 0) {\n this.renderEmptyContent(tBody, agendaDate);\n }\n };\n Agenda.prototype.renderContent = function (tBody, agendaDate, lastDate) {\n var fieldMapping = this.parent.eventFields;\n var firstDate = new Date(agendaDate.getTime());\n var isObject = this.appointmentFiltering(firstDate, lastDate);\n if (isObject.length > 0 && this.parent.activeViewOptions.allowVirtualScrolling && this.parent.hideEmptyAgendaDays) {\n agendaDate = isObject[0][fieldMapping.startTime];\n agendaDate = new Date(new Date(agendaDate.getTime()).setHours(0, 0, 0, 0));\n this.updateHeaderText(isObject[0][fieldMapping.startTime]);\n }\n var endDate;\n if (!this.parent.hideEmptyAgendaDays || (this.parent.agendaDaysCount > 0 && isObject.length > 0)) {\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n var date = agendaDate;\n if (!this.parent.activeViewOptions.group.byDate) {\n this.parent.activeViewOptions.allowVirtualScrolling = false;\n date = firstDate;\n if (this.parent.headerModule) {\n this.parent.headerModule.updateDateRange();\n this.parent.headerModule.updateHeaderItems('remove');\n }\n }\n this.calculateResourceTableElement(tBody, this.parent.agendaDaysCount, date);\n }\n else {\n for (var day = 0; day < this.parent.agendaDaysCount; day++) {\n var filterData = this.appointmentFiltering(agendaDate);\n var nTr = this.createTableRowElement(agendaDate, 'data');\n if (this.element.querySelector('tr[data-row-index=\"' + parseInt(nTr.getAttribute('data-row-index'), 10) + '\"]')) {\n agendaDate = util.addDays(agendaDate, 1);\n continue;\n }\n var dTd = nTr.children[0];\n var aTd = nTr.children[1];\n if (filterData.length > 0 || (!this.parent.hideEmptyAgendaDays && filterData.length === 0)) {\n var elementType = (!this.parent.hideEmptyAgendaDays && filterData.length === 0) ? 'noEvents' : 'data';\n dTd.appendChild(this.createDateHeaderElement(agendaDate));\n nTr.appendChild(dTd);\n var cTd = this.createAgendaContentElement(elementType, filterData, aTd);\n nTr.appendChild(cTd);\n if (cTd.querySelectorAll('li').length > 0) {\n tBody.appendChild(nTr);\n }\n }\n else if (this.parent.activeViewOptions.allowVirtualScrolling) {\n day--;\n }\n if (this.isCurrentDate(new Date(agendaDate.getTime()))) {\n addClass(dTd.childNodes, cls.AGENDA_CURRENT_DAY_CLASS);\n }\n agendaDate = util.addDays(agendaDate, 1);\n if (agendaDate.getTime() > lastDate.getTime()) {\n break;\n }\n }\n }\n endDate = new Date(agendaDate.getTime() - util.MS_PER_DAY);\n }\n this.agendaDates = { start: firstDate, end: endDate };\n };\n Agenda.prototype.agendaScrolling = function (event) {\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide();\n }\n if (this.parent.activeViewOptions.allowVirtualScrolling) {\n this.virtualScrolling(event);\n }\n if (!this.parent.activeViewOptions.allowVirtualScrolling) {\n this.setPersistence();\n }\n };\n Agenda.prototype.virtualScrolling = function (event) {\n var target = event.target;\n var scrollTop = target.scrollTop;\n var scrollHeight = target.scrollHeight;\n var offsetHeight = target.clientHeight;\n var totalHeight = scrollTop + offsetHeight;\n var direction = (this.virtualScrollTop < scrollTop) ? 'next' : 'previous';\n var tBody = target.querySelector('tbody');\n var emptyTBody = createElement('tbody');\n var topElement = this.getElementFromScrollerPosition(event);\n var scrollDate = this.parent.getDateFromElement(topElement);\n var filterDate;\n var filterData;\n if (scrollTop === 0) {\n filterDate = this.getPreviousNextDate(util.addDays(scrollDate, -1), direction);\n filterData = this.appointmentFiltering(filterDate.start, filterDate.end);\n if (filterData.length > 0 || !this.parent.hideEmptyAgendaDays) {\n this.renderContent(emptyTBody, filterDate.start, filterDate.end);\n prepend([].slice.call(emptyTBody.childNodes), tBody);\n this.wireEventActions();\n for (var s = 0, element = tBody.children; s < element.length; s++) {\n if (element[parseInt(s.toString(), 10)].getAttribute('data-row-index') === topElement.getAttribute('data-column-index')) {\n var scrollToValue = element[parseInt(s.toString(), 10)].offsetTop -\n this.element.querySelector('.e-agenda-item').offsetHeight;\n target.scrollTop = scrollToValue;\n break;\n }\n }\n this.updateHeaderText(scrollDate);\n }\n }\n else if (totalHeight >= (scrollHeight - 5)) {\n filterDate = this.getPreviousNextDate(util.addDays(scrollDate, 1), direction);\n filterData = this.appointmentFiltering(filterDate.start, filterDate.end);\n if (filterData.length > 0 || !this.parent.hideEmptyAgendaDays) {\n this.renderContent(emptyTBody, filterDate.start, filterDate.end);\n append([].slice.call(emptyTBody.childNodes), tBody);\n this.wireEventActions();\n this.updateHeaderText(scrollDate);\n }\n }\n else {\n this.updateHeaderText(scrollDate);\n }\n this.virtualScrollTop = scrollTop;\n var selectedElements = this.parent.eventBase.getSelectedAppointments();\n if (selectedElements.length > 0) {\n selectedElements[selectedElements.length - 1].focus();\n }\n };\n Agenda.prototype.getElementFromScrollerPosition = function (event) {\n var filterElement;\n var target = event.target;\n var scrollTop = target.scrollTop;\n var scrollHeight = target.scrollHeight;\n var offsetHeight = target.clientHeight;\n var totalHeight = scrollTop + offsetHeight;\n var liCollection = [].slice.call(target.querySelectorAll('.e-agenda-item'));\n var li;\n var liDetails;\n if (liCollection.length > 0) {\n if (scrollTop === 0) {\n li = liCollection[0];\n filterElement = closest(li, '.' + cls.AGENDA_CELLS_CLASS);\n }\n else if (totalHeight === scrollHeight) {\n li = liCollection[liCollection.length - 1];\n filterElement = closest(li, '.' + cls.AGENDA_CELLS_CLASS);\n }\n else {\n for (var a = 0, length_1 = liCollection.length; a < length_1; a++) {\n li = liCollection[parseInt(a.toString(), 10)];\n liDetails = li.getBoundingClientRect();\n if (liDetails.top >= 0) {\n filterElement = closest(li, '.' + cls.AGENDA_CELLS_CLASS);\n break;\n }\n }\n }\n }\n return filterElement;\n };\n Agenda.prototype.updateHeaderText = function (date) {\n if (this.parent.showHeaderBar) {\n this.parent.headerModule.updateDateRange(date);\n }\n };\n Agenda.prototype.getPreviousNextDate = function (date, type) {\n var currentDate = new Date(date.getTime());\n var firstDate = this.getStartDateFromEndDate(date);\n var lastDate = this.getEndDateFromStartDate(date);\n var daysCount = 0;\n do {\n var filterData = this.appointmentFiltering(currentDate);\n if (filterData.length > 0 || !this.parent.hideEmptyAgendaDays) {\n daysCount++;\n }\n currentDate = util.addDays(currentDate, (type === 'next') ? 1 : -1);\n if (currentDate < firstDate || currentDate > lastDate) {\n break;\n }\n } while (daysCount !== this.parent.agendaDaysCount);\n var endDate = util.addDays(currentDate, (type === 'next') ? -1 : 1);\n return (type === 'next') ? { start: date, end: util.addDays(endDate, 1) } : { start: endDate, end: util.addDays(date, 1) };\n };\n Agenda.prototype.appointmentFiltering = function (startDate, endDate) {\n var dateStart;\n var dateEnd;\n if (!isNullOrUndefined(startDate) && isNullOrUndefined(endDate)) {\n dateStart = util.resetTime(new Date(startDate.getTime()));\n dateEnd = util.setTime(new Date(dateStart.getTime()), util.MS_PER_DAY);\n }\n else {\n dateStart = new Date(startDate.getTime());\n dateEnd = new Date(endDate.getTime());\n }\n var filterData = this.parent.eventBase.filterEvents(dateStart, dateEnd);\n if (filterData.length === 0) {\n this.refreshEvent(startDate);\n filterData = this.parent.eventBase.filterEvents(dateStart, dateEnd);\n }\n return filterData;\n };\n Agenda.prototype.getStartDateFromEndDate = function (endDate) {\n var filterDate;\n var fields = this.parent.eventFields;\n if (this.parent.eventsProcessed.length > 0) {\n var firstDate = Math.min.apply(Math, this.parent.eventsProcessed.map(function (a) {\n return a[fields.startTime].getTime();\n }));\n filterDate = this.parent.hideEmptyAgendaDays ? new Date(firstDate) : this.parent.minDate;\n }\n else {\n filterDate = this.parent.hideEmptyAgendaDays ? util.addMonths(endDate, -1) : this.parent.minDate;\n }\n return util.resetTime(filterDate);\n };\n Agenda.prototype.getEndDateFromStartDate = function (startDate) {\n var filterDate;\n var fieldMapping = this.parent.eventFields;\n if (this.parent.eventsProcessed.length > 0) {\n var lastDate = Math.max.apply(Math, this.parent.eventsProcessed.map(function (a) {\n return a[fieldMapping.endTime].getTime();\n }));\n filterDate = this.parent.hideEmptyAgendaDays ? new Date(lastDate) : this.parent.maxDate;\n }\n else {\n filterDate = this.parent.hideEmptyAgendaDays ? util.addMonths(startDate, 1) : this.parent.maxDate;\n }\n return util.resetTime(util.addDays(filterDate, 1));\n };\n Agenda.prototype.getNextPreviousDate = function (type) {\n var noOfDays = (type === 'next') ? 1 : -1;\n return util.addDays(this.parent.selectedDate, noOfDays);\n };\n Agenda.prototype.startDate = function () {\n return util.resetTime(this.parent.selectedDate);\n };\n Agenda.prototype.endDate = function () {\n if (this.parent.activeViewOptions.allowVirtualScrolling) {\n return this.getEndDateFromStartDate(this.startDate());\n }\n else {\n return util.addDays(this.startDate(), this.parent.agendaDaysCount);\n }\n };\n Agenda.prototype.getDateRangeText = function (date) {\n var formatDate = (this.parent.activeViewOptions.dateFormat) ? this.parent.activeViewOptions.dateFormat : 'MMMM y';\n if (this.parent.activeViewOptions.allowVirtualScrolling || this.parent.isAdaptive) {\n var currentDate = isNullOrUndefined(date) ? this.parent.selectedDate : date;\n return util.capitalizeFirstWord(this.parent.globalize.formatDate(currentDate, { format: formatDate, calendar: this.parent.getCalendarMode() }), 'multiple');\n }\n else {\n var startDate = this.parent.selectedDate;\n var endDate = util.addDays(startDate, this.parent.agendaDaysCount - 1);\n return this.formatDateRange(startDate, endDate);\n }\n };\n Agenda.prototype.dayNavigationClick = function (e) {\n var element = closest(e.currentTarget, '.' + cls.AGENDA_CELLS_CLASS);\n var date = this.parent.getDateFromElement(element);\n if (!isNullOrUndefined(date) && !this.parent.isAdaptive && this.parent.isMinMaxDate(date)) {\n this.parent.setProperties({ selectedDate: date }, true);\n this.parent.changeView('Day', e);\n }\n };\n Agenda.prototype.wireEvents = function () {\n EventHandler.add(this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS), event.scroll, this.agendaScrolling, this);\n };\n Agenda.prototype.unWireEvents = function () {\n EventHandler.remove(this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS), event.scroll, this.agendaScrolling);\n var dateHeaderElement = [].slice.call(this.element.querySelectorAll('.e-m-date'));\n for (var _i = 0, dateHeaderElement_1 = dateHeaderElement; _i < dateHeaderElement_1.length; _i++) {\n var element = dateHeaderElement_1[_i];\n EventHandler.remove(element, 'click', this.dayNavigationClick);\n }\n };\n Agenda.prototype.addEventListener = function () {\n this.parent.on(event.scrollUiUpdate, this.onAgendaScrollUiUpdate, this);\n this.parent.on(event.dataReady, this.eventLoad, this);\n };\n Agenda.prototype.removeEventListener = function () {\n if (this.parent) {\n this.parent.off(event.scrollUiUpdate, this.onAgendaScrollUiUpdate);\n this.parent.off(event.dataReady, this.eventLoad);\n }\n };\n Agenda.prototype.onAgendaScrollUiUpdate = function () {\n var headerHeight = this.getHeaderBarHeight();\n if (this.parent.headerModule) {\n if (this.parent.activeViewOptions.allowVirtualScrolling) {\n this.parent.headerModule.updateHeaderItems('add');\n }\n else {\n this.parent.headerModule.updateHeaderItems('remove');\n }\n }\n var contentArea = this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (this.parent.height !== 'auto') {\n contentArea.style.height = formatUnit(this.parent.element.offsetHeight - headerHeight);\n }\n };\n Agenda.prototype.scrollToDate = function (scrollDate) {\n var date = new Date(+util.resetTime(scrollDate));\n if (this.parent.activeViewOptions.allowVirtualScrolling) {\n if (!this.parent.hideEmptyAgendaDays || this.parent.getEvents(date, util.addDays(date, 1), true).length > 0) {\n this.parent.changeDate(date);\n }\n }\n else {\n var dateElement = this.element.querySelector('.' + cls.AGENDA_CELLS_CLASS + '[data-date=\"' + date.getTime() + '\"]');\n if (dateElement) {\n this.getContentAreaElement().scrollTop = dateElement.offsetTop;\n }\n }\n };\n Agenda.prototype.destroy = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n if (this.element) {\n this.unWireEvents();\n if (this.parent.resourceBase) {\n this.parent.resourceBase.destroy();\n }\n if (this.parent.headerModule && this.parent.activeViewOptions.allowVirtualScrolling) {\n this.parent.headerModule.updateHeaderItems('remove');\n }\n _super.prototype.destroy.call(this);\n }\n };\n return Agenda;\n}(AgendaBase));\nexport { Agenda };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { addClass, createElement, extend, isNullOrUndefined, closest, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { formatUnit, remove, removeClass } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\n/**\n * Base class for the common drag and resize related actions\n */\nvar ActionBase = /** @class */ (function () {\n function ActionBase(parent) {\n this.daysVariation = 0;\n this.parent = parent;\n this.actionObj = {\n X: 0, Y: 0, groupIndex: 0, cellWidth: 0, cellHeight: 0, slotInterval: 0, interval: 0, actionIndex: 0,\n cloneElement: [], originalElement: [], action: null, isAllDay: null, excludeSelectors: null,\n index: 0, navigationInterval: null, scrollInterval: null\n };\n this.scrollArgs = { element: null, width: 0, height: 0 };\n this.resizeEdges = { left: false, right: false, top: false, bottom: false };\n this.scrollEdges = { left: false, right: false, top: false, bottom: false };\n }\n ActionBase.prototype.getChangedData = function (multiData) {\n var _this = this;\n var eventObj = extend({}, this.actionObj.event, null, true);\n eventObj[this.parent.eventFields.startTime] = this.actionObj.start;\n eventObj[this.parent.eventFields.endTime] = this.actionObj.end;\n if (!isNullOrUndefined(this.actionObj.isAllDay)) {\n eventObj[this.parent.eventFields.isAllDay] = this.actionObj.isAllDay;\n }\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var originalElement = this.getOriginalElement(this.actionObj.element);\n if (originalElement) {\n var indexCol_1 = originalElement.map(function (element) { return parseInt(element.getAttribute('data-group-index'), 10); });\n if (indexCol_1.indexOf(this.actionObj.groupIndex) === -1 || (!isNullOrUndefined(multiData) && multiData.length > 0)) {\n var cloneIndex_1 = parseInt(this.actionObj.clone.getAttribute('data-group-index'), 10);\n indexCol_1 = indexCol_1.filter(function (index) { return index !== cloneIndex_1; });\n indexCol_1.push(this.actionObj.groupIndex);\n if (multiData && multiData.length > 0) {\n multiData.forEach(function (data) {\n _this.parent.resourceBase.getResourceData(data, _this.actionObj.groupIndex, indexCol_1);\n });\n }\n else {\n this.parent.resourceBase.getResourceData(eventObj, this.actionObj.groupIndex, indexCol_1);\n }\n }\n }\n }\n return eventObj;\n };\n ActionBase.prototype.saveChangedData = function (eventArgs, isMultiSelect) {\n if (isMultiSelect === void 0) { isMultiSelect = false; }\n this.parent.activeEventData.event = this.actionObj.event;\n this.parent.currentAction = 'Save';\n var currentAction;\n var eventsCollection = [eventArgs.data];\n if (isMultiSelect) {\n eventsCollection = eventArgs.selectedData;\n }\n for (var _i = 0, eventsCollection_1 = eventsCollection; _i < eventsCollection_1.length; _i++) {\n var eventObj = eventsCollection_1[_i];\n var isSameResource = (this.parent.activeViewOptions.group.resources.length > 0) ?\n parseInt(this.actionObj.element.getAttribute('data-group-index'), 10) === this.actionObj.groupIndex : true;\n if (+eventObj[this.parent.eventFields.startTime] === +this.actionObj.event[this.parent.eventFields.startTime] &&\n +eventObj[this.parent.eventFields.endTime] === +this.actionObj.event[this.parent.eventFields.endTime] && isSameResource) {\n this.parent.crudModule.crudObj.isCrudAction = false;\n return;\n }\n if (eventObj[this.parent.eventFields.recurrenceRule]) {\n var eveId = (eventObj[this.parent.eventFields.recurrenceID] || eventObj[this.parent.eventFields.id]);\n if (eventObj[this.parent.eventFields.id] === eventObj[this.parent.eventFields.recurrenceID]) {\n eventObj[this.parent.eventFields.id] = this.parent.eventBase.getEventMaxID();\n currentAction = 'EditOccurrence';\n }\n if (this.parent.enableRecurrenceValidation\n && this.parent.eventWindow.editOccurrenceValidation(eveId, eventObj, this.actionObj.event)) {\n return;\n }\n }\n else {\n currentAction = null;\n }\n if (eventObj[this.parent.eventFields.startTimezone] || eventObj[this.parent.eventFields.endTimezone]) {\n this.parent.eventBase.timezoneConvert(eventObj);\n }\n this.parent.crudModule.saveEvent(eventObj, currentAction);\n }\n };\n ActionBase.prototype.calculateIntervalTime = function (date) {\n var intervalTime = new Date(+date);\n intervalTime.setMinutes(Math.floor(intervalTime.getMinutes() / this.actionObj.interval) * this.actionObj.interval);\n return intervalTime;\n };\n ActionBase.prototype.getContentAreaDimension = function () {\n var viewElement = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var trElement = [].slice.call(viewElement.querySelector('tr').children);\n if (!this.parent.activeView.isTimelineView() && this.parent.activeViewOptions.group.resources.length > 0 &&\n !this.parent.isAdaptive && !this.parent.enableAdaptiveUI && !this.parent.virtualScrollModule) {\n trElement = this.getResourceElements(trElement);\n }\n var leftOffset = trElement[0].getBoundingClientRect();\n var rightOffset = trElement.slice(-1)[0].getBoundingClientRect();\n var viewDimension = {\n bottom: viewElement.scrollHeight - 5,\n left: this.parent.enableRtl ? rightOffset.left : leftOffset.left,\n right: this.parent.enableRtl ? leftOffset.right : rightOffset.right,\n top: 0,\n leftOffset: this.parent.enableRtl ? rightOffset.right : leftOffset.right,\n rightOffset: this.parent.enableRtl ? leftOffset.left : rightOffset.left\n };\n return viewDimension;\n };\n ActionBase.prototype.getIndex = function (index) {\n var contentElements = [].slice.call(this.parent.getContentTable().querySelector('tr').children);\n var indexes = { minIndex: 0, maxIndex: contentElements.length - 1 };\n if (this.actionObj.action === 'resize' && this.parent.activeViewOptions.group.resources.length > 0 &&\n !this.parent.uiStateValues.isGroupAdaptive && !this.parent.activeView.isTimelineView()) {\n var groupElements = this.getResourceElements(contentElements);\n indexes.minIndex = groupElements[0].cellIndex;\n indexes.maxIndex = groupElements.slice(-1)[0].cellIndex;\n }\n if (index < indexes.minIndex) {\n index = indexes.minIndex;\n }\n if (index > indexes.maxIndex) {\n index = indexes.maxIndex;\n }\n return index;\n };\n ActionBase.prototype.updateTimePosition = function (date, multiData) {\n var index = 0;\n for (var _i = 0, _a = this.actionObj.cloneElement; _i < _a.length; _i++) {\n var cloneElement = _a[_i];\n var timeElement = cloneElement.querySelector('.' + cls.APPOINTMENT_TIME);\n if (timeElement) {\n var startTime = this.actionObj.start;\n var endTime = this.actionObj.end;\n if (multiData && multiData.length > 0) {\n startTime = multiData[parseInt(index.toString(), 10)][this.parent.eventFields.startTime];\n endTime = multiData[parseInt(index.toString(), 10)][this.parent.eventFields.endTime];\n }\n timeElement.innerHTML = this.parent.getTimeString(startTime) + ' - ' +\n this.parent.getTimeString(endTime);\n }\n index++;\n }\n if (!this.parent.activeViewOptions.timeScale.enable || !this.parent.isAdaptive || this.parent.currentView === 'Month' ||\n this.parent.currentView === 'TimelineMonth') {\n return;\n }\n var timeIndicator = this.parent.element.querySelector('.' + cls.CLONE_TIME_INDICATOR_CLASS);\n if (!timeIndicator) {\n timeIndicator = createElement('div', { className: cls.CLONE_TIME_INDICATOR_CLASS });\n var wrapperClass = this.parent.activeView.isTimelineView() ? cls.DATE_HEADER_WRAP_CLASS : cls.TIME_CELLS_WRAP_CLASS;\n this.parent.element.querySelector('.' + wrapperClass).appendChild(timeIndicator);\n }\n timeIndicator.innerHTML = this.parent.getTimeString(date);\n var offsetValue = 0;\n if (this.parent.activeView.isTimelineView()) {\n if (this.parent.enableRtl) {\n var rightValue = parseInt(this.actionObj.clone.style.right, 10);\n offsetValue = this.actionObj.action === 'drag' || this.resizeEdges.left ?\n rightValue + this.actionObj.clone.offsetWidth : rightValue;\n timeIndicator.style.right = formatUnit(offsetValue);\n }\n else {\n var leftValue = parseInt(this.actionObj.clone.style.left, 10);\n offsetValue = this.actionObj.action === 'drag' || this.resizeEdges.left ?\n leftValue : leftValue + this.actionObj.clone.offsetWidth;\n timeIndicator.style.left = formatUnit(offsetValue);\n }\n }\n else {\n offsetValue = this.actionObj.action === 'drag' || this.resizeEdges.top ? this.actionObj.clone.offsetTop :\n this.actionObj.clone.offsetTop + this.actionObj.clone.offsetHeight;\n timeIndicator.style.top = formatUnit(offsetValue);\n }\n };\n ActionBase.prototype.getResourceElements = function (table) {\n var _this = this;\n return table.filter(function (element) {\n return parseInt(element.getAttribute('data-group-index'), 10) === _this.actionObj.groupIndex;\n });\n };\n ActionBase.prototype.getOriginalElement = function (element) {\n var originalElement;\n var guid = element.getAttribute('data-guid');\n var isMorePopup = element.offsetParent && element.offsetParent.classList.contains(cls.MORE_EVENT_POPUP_CLASS);\n if (isMorePopup || this.parent.activeView.isTimelineView() || (this.actionObj.action !== 'resize' && this.parent.virtualScrollModule)) {\n originalElement = [].slice.call(this.parent.element.querySelectorAll('[data-guid=\"' + guid + '\"]'));\n }\n else {\n var tr = closest(element, 'tr');\n if (tr) {\n originalElement = [].slice.call(tr.querySelectorAll('[data-guid=\"' + guid + '\"]'));\n }\n }\n return originalElement;\n };\n ActionBase.prototype.createCloneElement = function (element) {\n var cloneWrapper = createElement('div', { innerHTML: element.outerHTML });\n var cloneElement = cloneWrapper.children[0];\n var cloneClassLists = [cls.CLONE_ELEMENT_CLASS];\n cloneClassLists.push((this.actionObj.action === 'drag') ? cls.DRAG_CLONE_CLASS : cls.RESIZE_CLONE_CLASS);\n if (this.parent.currentView === 'Month' || this.parent.currentView === 'TimelineMonth') {\n cloneClassLists.push(cls.MONTH_CLONE_ELEMENT_CLASS);\n }\n addClass([cloneElement], cloneClassLists);\n addClass([element], cls.EVENT_ACTION_CLASS);\n if (!isNullOrUndefined(element.parentElement)) {\n element.parentElement.appendChild(cloneElement);\n }\n cloneElement.style.width = formatUnit(cloneElement.offsetWidth - 2);\n var dragElement = document.querySelector(this.parent.eventDragArea);\n if (this.parent.eventDragArea && this.actionObj.action === 'drag' && dragElement) {\n dragElement.appendChild(cloneElement);\n }\n setStyleAttribute(cloneElement, { border: '0px' });\n return cloneElement;\n };\n ActionBase.prototype.removeCloneElementClasses = function () {\n var elements = this.actionObj.originalElement;\n if (this.parent.currentView === 'Month' || this.parent.currentView === 'TimelineYear' ||\n this.parent.currentView === 'Day' || this.parent.currentView === 'Week' || this.parent.currentView === 'WorkWeek') {\n elements = [].slice.call(this.parent.element.querySelectorAll('.' + cls.EVENT_ACTION_CLASS));\n }\n removeClass(elements, cls.EVENT_ACTION_CLASS);\n };\n ActionBase.prototype.removeCloneElement = function () {\n this.actionObj.originalElement = [];\n var dynamicEle = [].slice.call(this.parent.element.querySelectorAll('.e-dynamic-clone'));\n for (var _i = 0, dynamicEle_1 = dynamicEle; _i < dynamicEle_1.length; _i++) {\n var cloneEle = dynamicEle_1[_i];\n remove(cloneEle);\n }\n for (var _a = 0, _b = this.actionObj.cloneElement; _a < _b.length; _a++) {\n var cloneElement = _b[_a];\n if (!isNullOrUndefined(cloneElement.parentNode)) {\n remove(cloneElement);\n }\n }\n this.actionObj.cloneElement = [];\n var timeIndicator = this.parent.element.querySelector('.' + cls.CLONE_TIME_INDICATOR_CLASS);\n if (timeIndicator) {\n remove(timeIndicator);\n }\n };\n ActionBase.prototype.getCursorElement = function (e) {\n var pages = this.parent.eventBase.getPageCoordinates(e);\n return document.elementFromPoint(pages.clientX, pages.clientY);\n };\n ActionBase.prototype.autoScroll = function () {\n var parent = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var yIsScrollable = parent.offsetHeight <= parent.scrollHeight;\n var xIsScrollable = parent.offsetWidth <= parent.scrollWidth;\n var yInBounds = yIsScrollable && parent.scrollTop >= 0 && parent.scrollTop + parent.offsetHeight <= parent.scrollHeight;\n var xInBounds = xIsScrollable && parent.scrollLeft >= 0 && parent.scrollLeft + parent.offsetWidth <= parent.scrollWidth;\n if (this.actionObj.action === 'resize' && this.scrollEdges.right && (parent.scrollLeft + parent.offsetWidth) > parent.scrollWidth) {\n var tdCollections = ([].slice.call(this.parent.getContentTable().querySelector('tr').children)).length - 1;\n var cellIndex = Math.ceil((this.actionObj.clone.offsetLeft + (this.actionObj.clone.offsetWidth)) /\n this.actionObj.cellWidth);\n xInBounds = cellIndex === tdCollections;\n }\n if (yInBounds && (this.scrollEdges.top || this.scrollEdges.bottom)) {\n parent.scrollTop += this.scrollEdges.top ? -this.actionObj.scroll.scrollBy : this.actionObj.scroll.scrollBy;\n if (this.actionObj.action === 'resize') {\n if (parent.scrollHeight !== parent.offsetHeight + parent.scrollTop && parent.scrollTop > 0) {\n this.actionObj.Y += this.scrollEdges.top ? this.actionObj.scroll.scrollBy : -this.actionObj.scroll.scrollBy;\n }\n }\n }\n if (xInBounds && (this.scrollEdges.left || this.scrollEdges.right)) {\n parent.scrollLeft += this.scrollEdges.left ? -this.actionObj.scroll.scrollBy : this.actionObj.scroll.scrollBy;\n if (this.actionObj.action === 'resize') {\n if (parent.scrollWidth !== parent.offsetWidth + parent.scrollLeft && parent.scrollLeft > 0) {\n this.actionObj.X += this.scrollEdges.left ? this.actionObj.scroll.scrollBy : -this.actionObj.scroll.scrollBy;\n }\n }\n }\n };\n ActionBase.prototype.autoScrollValidation = function () {\n if (!this.actionObj.scroll.enable) {\n return false;\n }\n var res = this.parent.boundaryValidation(this.actionObj.pageY, this.actionObj.pageX);\n this.scrollEdges = res;\n return res.bottom || res.top || res.left || res.right;\n };\n ActionBase.prototype.actionClass = function (type) {\n if (type === 'addClass') {\n addClass([this.parent.element], cls.EVENT_ACTION_CLASS);\n }\n else {\n removeClass([this.parent.element], cls.EVENT_ACTION_CLASS);\n }\n };\n ActionBase.prototype.updateScrollPosition = function (e) {\n var _this = this;\n this.scrollEventArgs = e;\n if (this.actionObj.scroll.enable && isNullOrUndefined(this.actionObj.scrollInterval)) {\n this.actionObj.scrollInterval = window.setInterval(function () {\n if (_this.autoScrollValidation() && !_this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS)) {\n if (_this.parent.activeView.isTimelineView() && _this.parent.activeViewOptions.group.resources.length > 0\n && _this.actionObj.groupIndex < 0) {\n return;\n }\n _this.autoScroll();\n if (_this.actionObj.action === 'drag') {\n _this.parent.dragAndDropModule.updateDraggingDateTime(_this.scrollEventArgs);\n }\n else {\n _this.parent.resizeModule.updateResizingDirection(_this.scrollEventArgs);\n }\n }\n }, this.actionObj.scroll.timeDelay);\n }\n };\n ActionBase.prototype.updateOriginalElement = function (cloneElement) {\n var query = '[data-id=\"' + cloneElement.getAttribute('data-id') + '\"]';\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n query = query.concat('[data-group-index = \"' + cloneElement.getAttribute('data-group-index') + '\"]');\n }\n var elements = [].slice.call(this.parent.element.querySelectorAll(query));\n addClass(elements, cls.EVENT_ACTION_CLASS);\n var eventWrappers = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CLONE_ELEMENT_CLASS));\n removeClass(eventWrappers, cls.EVENT_ACTION_CLASS);\n };\n ActionBase.prototype.getUpdatedEvent = function (startTime, endTime, eventObj) {\n var event = JSON.parse(JSON.stringify(eventObj));\n event[this.parent.eventFields.startTime] = startTime;\n event[this.parent.eventFields.endTime] = endTime;\n return event;\n };\n ActionBase.prototype.dynamicYearlyEventsRendering = function (event, isResize) {\n if (isResize === void 0) { isResize = false; }\n if (!isNullOrUndefined(this.parent.eventDragArea)) {\n return;\n }\n var appWidth = this.actionObj.cellWidth - 7;\n if (isResize && (this.resizeEdges.left || this.resizeEdges.right)) {\n appWidth = this.actionObj.cellWidth * event.count;\n }\n if (!isResize && (this.parent.activeViewOptions.orientation === 'Horizontal' && this.parent.activeViewOptions.group.resources.length === 0)) {\n var eventObj = this.yearEvent.isSpannedEvent(event, event[this.parent.eventFields.startTime]);\n if (eventObj[this.parent.eventFields.startTime].getTime() ===\n eventObj[this.parent.eventFields.endTime].getTime()) {\n eventObj.isSpanned.count = 1;\n }\n appWidth = eventObj.isSpanned.count * this.actionObj.cellWidth;\n }\n if (!isResize && this.parent.activeViewOptions.orientation === 'Vertical' && this.parent.activeViewOptions.group.resources.length !== 0) {\n var eventObj = this.yearEvent.isSpannedEvent(event, event[this.parent.eventFields.startTime]);\n appWidth = eventObj.isSpanned.count * this.actionObj.cellWidth;\n }\n var appointmentElement = this.createAppointmentElement(this.actionObj.groupIndex, event[this.parent.eventFields.subject]);\n appointmentElement.setAttribute('drag', 'true');\n addClass([appointmentElement], cls.CLONE_ELEMENT_CLASS);\n setStyleAttribute(appointmentElement, {\n 'width': appWidth + 'px', 'border': '0px', 'pointer-events': 'none',\n 'position': 'absolute', 'overflow': 'hidden', 'padding': '3px'\n });\n if (this.actionObj.clone.style.backgroundColor !== '') {\n setStyleAttribute(appointmentElement, { 'backgroundColor': this.actionObj.clone.style.backgroundColor });\n }\n var date = util.resetTime(event[this.parent.eventFields.startTime]).getTime();\n var query = '.' + cls.WORK_CELLS_CLASS + '[data-date=\"' + date + '\"]';\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n query = '.' + cls.WORK_CELLS_CLASS + '[data-date=\"' + date + '\"][data-group-index=\"' + this.actionObj.groupIndex + '\"]';\n }\n var cellTd = this.parent.element.querySelector(query);\n if (isNullOrUndefined(cellTd)) {\n return;\n }\n if (isResize) {\n var dateHeader = cellTd.querySelector('.' + cls.DATE_HEADER_CLASS);\n var appHeight = this.actionObj.cellHeight * event.count -\n (dateHeader ? dateHeader.offsetHeight : 0) - 7;\n if (this.resizeEdges.right || this.resizeEdges.left) {\n appHeight = parseInt(this.actionObj.clone.style.height, 10);\n }\n setStyleAttribute(appointmentElement, { 'height': appHeight + 'px' });\n }\n this.renderDynamicElement(cellTd, appointmentElement, true);\n this.actionObj.cloneElement.push(appointmentElement);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ActionBase.prototype.renderDynamicElement = function (cellTd, element, isAppointment) {\n if (isAppointment === void 0) { isAppointment = false; }\n if (cellTd.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS)) {\n cellTd.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS).appendChild(element);\n }\n else {\n var wrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n wrapper.appendChild(element);\n cellTd.appendChild(wrapper);\n }\n };\n ActionBase.prototype.createAppointmentElement = function (resIndex, innerText) {\n var appointmentWrapper = createElement('div', {\n className: cls.APPOINTMENT_CLASS,\n innerHTML: innerText\n });\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n appointmentWrapper.setAttribute('data-group-index', resIndex.toString());\n }\n return appointmentWrapper;\n };\n ActionBase.prototype.dynamicEventsRendering = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.parent.eventDragArea)) {\n return;\n }\n var dateRender = this.parent.activeView.renderDates;\n var workCells = [].slice.call(this.parent.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS));\n var workDays = this.parent.activeViewOptions.workDays;\n var groupOrder;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var renderedResource = this.parent.virtualScrollModule && this.parent.virtualScrollModule.isHorizontalScroll ?\n this.parent.resourceBase.renderedResources : this.parent.resourceBase.lastResourceLevel;\n var resources = renderedResource.\n filter(function (res) { return res.groupIndex === _this.actionObj.groupIndex; });\n dateRender = resources[0].renderDates;\n var elementSelector = \".\" + cls.WORK_CELLS_CLASS + \"[data-group-index=\\\"\" + this.actionObj.groupIndex + \"\\\"]\";\n workCells = [].slice.call(this.parent.element.querySelectorAll(elementSelector));\n workDays = resources[0].workDays;\n groupOrder = resources[0].groupOrder;\n }\n this.monthEvent.dateRender = dateRender;\n this.monthEvent.getSlotDates(workDays);\n if (this.resizeEdges.left || this.resizeEdges.right) {\n var eventWrappers = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CLONE_ELEMENT_CLASS));\n for (var _i = 0, eventWrappers_1 = eventWrappers; _i < eventWrappers_1.length; _i++) {\n var wrapper = eventWrappers_1[_i];\n remove(wrapper);\n }\n }\n var spannedEvents = this.monthEvent.splitEvent(event, dateRender);\n for (var _a = 0, spannedEvents_1 = spannedEvents; _a < spannedEvents_1.length; _a++) {\n var event_1 = spannedEvents_1[_a];\n var day = this.parent.getIndexOfDate(dateRender, util.resetTime(event_1[this.monthEvent.fields.startTime]));\n var diffInDays = event_1.data.count;\n var appWidth = (diffInDays * this.actionObj.cellWidth) - 7;\n var appointmentElement = this.monthEvent.createAppointmentElement(event_1, this.actionObj.groupIndex, true);\n appointmentElement.setAttribute('drag', 'true');\n addClass([appointmentElement], cls.CLONE_ELEMENT_CLASS);\n this.monthEvent.applyResourceColor(appointmentElement, event_1, 'backgroundColor', groupOrder);\n setStyleAttribute(appointmentElement, { 'width': appWidth + 'px', 'border': '0px', 'pointer-events': 'none' });\n var cellTd = workCells[parseInt(day.toString(), 10)];\n if (cellTd) {\n this.monthEvent.renderElement(cellTd, appointmentElement, true);\n this.actionObj.cloneElement.push(appointmentElement);\n }\n }\n };\n ActionBase.prototype.destroy = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.actionObj = {};\n this.scrollArgs = {};\n this.resizeEdges = { left: false, right: false, top: false, bottom: false };\n this.scrollEdges = { left: false, right: false, top: false, bottom: false };\n };\n return ActionBase;\n}());\nexport { ActionBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\n/* eslint-disable max-len */\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined, setStyleAttribute, extend, EventHandler, createElement } from '@syncfusion/ej2-base';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\nimport { MonthEvent } from './month';\nvar EVENT_GAP = 2;\nvar BLOCK_INDICATOR_WIDTH = 22;\nvar BLOCK_INDICATOR_HEIGHT = 18;\n/**\n * Timeline view events render\n */\nvar TimelineEvent = /** @class */ (function (_super) {\n __extends(TimelineEvent, _super);\n function TimelineEvent(parent, type) {\n var _this = _super.call(this, parent) || this;\n _this.startHour = _this.parent.activeView.getStartHour();\n _this.endHour = _this.parent.activeView.getEndHour();\n _this.slotCount = _this.parent.activeViewOptions.timeScale.slotCount;\n _this.interval = _this.parent.activeViewOptions.timeScale.interval;\n _this.day = 0;\n _this.rowIndex = 0;\n _this.cellTops = [];\n _this.renderType = type;\n _this.eventContainers = [].slice.call(_this.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS));\n var tr = [].slice.call(_this.element.querySelectorAll('.' + cls.CONTENT_TABLE_CLASS + ' tbody tr'));\n _this.dayLength = tr.length === 0 ? 0 : tr[0].children.length;\n _this.content = _this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS);\n return _this;\n }\n TimelineEvent.prototype.getSlotDates = function () {\n this.slots = [];\n this.slots.push(this.parent.activeView.renderDates.map(function (date) { return +date; }));\n if (this.parent.activeViewOptions.headerRows.length > 0 &&\n this.parent.activeViewOptions.headerRows.slice(-1)[0].option !== 'Hour') {\n this.renderType = 'day';\n var workCell = this.content.querySelector('.' + cls.WORK_CELLS_CLASS);\n this.cellWidth = workCell.getBoundingClientRect().width / +(workCell.getAttribute('colspan') || 1);\n this.slotsPerDay = 1;\n }\n else {\n this.slotsPerDay = (this.dayLength / this.dateRender.length);\n }\n };\n TimelineEvent.prototype.getOverlapEvents = function (date, appointments) {\n var appointmentsList = [];\n if (this.renderType === 'day') {\n for (var _i = 0, appointments_1 = appointments; _i < appointments_1.length; _i++) {\n var app = appointments_1[_i];\n if ((util.resetTime(app[this.fields.startTime]).getTime() <= util.resetTime(new Date(date.getTime())).getTime()) &&\n (util.resetTime(app[this.fields.endTime]).getTime() >= util.resetTime(new Date(date.getTime())).getTime())) {\n appointmentsList.push(app);\n }\n }\n }\n else {\n for (var _a = 0, appointments_2 = appointments; _a < appointments_2.length; _a++) {\n var app = appointments_2[_a];\n var eventData = app.data;\n if (eventData.trimStartTime.getTime() <= date.getTime() &&\n eventData.trimEndTime.getTime() > date.getTime()) {\n appointmentsList.push(app);\n }\n }\n }\n return appointmentsList;\n };\n TimelineEvent.prototype.getSortComparerIndex = function (startDate, endDate) {\n var appIndex = -1;\n var appointments = this.renderedEvents;\n if (appointments.length > 0) {\n var appointmentsList = this.getOverlapSortComparerEvents(startDate, endDate, appointments);\n var appLevel = appointmentsList.map(function (obj) { return obj.Index; });\n appIndex = (appLevel.length > 0) ? this.getSmallestMissingNumber(appLevel) : 0;\n }\n return (appIndex === -1) ? 0 : appIndex;\n };\n TimelineEvent.prototype.getOverlapSortComparerEvents = function (startDate, endDate, appointmentsCollection) {\n var appointments = [];\n for (var _i = 0, appointmentsCollection_1 = appointmentsCollection; _i < appointmentsCollection_1.length; _i++) {\n var app = appointmentsCollection_1[_i];\n if (this.renderType === 'day') {\n if ((util.resetTime(app[this.fields.startTime]).getTime() <= util.resetTime(new Date(startDate.getTime())).getTime()) &&\n (util.resetTime(app[this.fields.endTime]).getTime() >= util.resetTime(new Date(startDate.getTime())).getTime())) {\n appointments.push(app);\n }\n }\n else {\n var eventData = app.data;\n if (((eventData.trimStartTime.getTime() <= startDate.getTime()) && (startDate.getTime() < eventData.trimEndTime.getTime())) ||\n ((startDate.getTime() <= eventData.trimStartTime.getTime()) && (eventData.trimStartTime.getTime() < endDate.getTime()))) {\n appointments.push(app);\n }\n }\n }\n return appointments;\n };\n TimelineEvent.prototype.renderResourceEvents = function () {\n this.removeHeightProperty(cls.RESOURCE_COLUMN_TABLE_CLASS);\n var selector = '.' + cls.RESOURCE_COLUMN_TABLE_CLASS + ' tbody tr';\n this.addCellHeight(selector, this.eventHeight, EVENT_GAP, this.moreIndicatorHeight, 0, false);\n var resources = this.parent.uiStateValues.isGroupAdaptive ?\n [this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex]] :\n this.parent.resourceBase.renderedResources;\n if (this.parent.crudModule && this.parent.crudModule.crudObj.isCrudAction) {\n for (var i = 0, len = this.parent.crudModule.crudObj.sourceEvent.length; i < len; i++) {\n var source = this.parent.crudModule.crudObj.sourceEvent[parseInt(i.toString(), 10)];\n this.rowIndex = source.groupIndex;\n this.renderEventsHandler(this.parent.activeView.renderDates, this.parent.activeViewOptions.workDays, source);\n if (this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)] && this.parent.crudModule.crudObj.sourceEvent[parseInt(i.toString(), 10)].groupIndex !==\n this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)].groupIndex) {\n var target = this.parent.crudModule.crudObj.targetEvent[parseInt(i.toString(), 10)];\n this.rowIndex = target.groupIndex;\n this.renderEventsHandler(this.parent.activeView.renderDates, this.parent.activeViewOptions.workDays, target);\n }\n }\n this.parent.crudModule.crudObj.isCrudAction = false;\n }\n else {\n for (var i = 0; i < resources.length; i++) {\n this.rowIndex = i;\n this.renderEventsHandler(this.parent.activeView.renderDates, this.parent.activeViewOptions.workDays, resources[parseInt(i.toString(), 10)]);\n }\n }\n };\n TimelineEvent.prototype.renderEvents = function (event, resIndex, appointmentsList) {\n var startTime = event[this.fields.startTime];\n var endTime = event[this.fields.endTime];\n if ((startTime.getTime() < this.parent.minDate.getTime()) || (endTime.getTime() > this.parent.maxDate.getTime())) {\n return;\n }\n var eventData = event.data;\n startTime = this.getStartTime(event, eventData);\n endTime = this.getEndTime(event, eventData);\n var startEndHours = util.getStartEndHours(event[this.fields.startTime], this.startHour, this.endHour);\n var eventDates = this.updateEventMinimumDuration(startEndHours, startTime, endTime);\n startTime = eventDates.startDate;\n endTime = eventDates.endDate;\n this.day = this.parent.getIndexOfDate(this.dateRender, util.resetTime(new Date(startTime.getTime())));\n if (this.day < 0) {\n return;\n }\n var cellTd = this.getCellTd();\n var eventsPerRow = this.parent.rowAutoHeight ? 1 : this.parent.activeViewOptions.maxEventsPerRow;\n var overlapCount = (isNullOrUndefined(this.parent.eventSettings.sortComparer)) ? this.getIndex(startTime) : this.getSortComparerIndex(startTime, endTime);\n event.Index = overlapCount;\n var appHeight = this.eventHeight;\n var diffInDays = eventData.count;\n var eventObj = extend({}, event, null, true);\n eventObj[this.fields.startTime] = eventData[this.fields.startTime];\n eventObj[this.fields.endTime] = eventData[this.fields.endTime];\n var currentDate = util.resetTime(new Date(this.dateRender[this.day].getTime()));\n var schedule = util.getStartEndHours(currentDate, this.startHour, this.endHour);\n var isValidEvent = true;\n if (this.isDayProcess() || eventObj[this.fields.isAllDay]) {\n isValidEvent = true;\n }\n else {\n isValidEvent = this.isValidEvent(eventObj, startTime, endTime, schedule);\n }\n if (startTime <= endTime && isValidEvent) {\n var appWidth = this.getEventWidth(startTime, endTime, event[this.fields.isAllDay], diffInDays);\n appWidth = this.renderType === 'day' ? appWidth - 2 : appWidth;\n var appLeft = 0;\n var appRight = 0;\n var position = this.getPosition(startTime, endTime, event[this.fields.isAllDay], this.day);\n appWidth = (appWidth <= 0) ? this.cellWidth : appWidth; // appWidth 0 when start and end time as same\n this.renderedEvents.push(extend({}, event, null, true));\n if (isNullOrUndefined(this.cellTops[parseInt(resIndex.toString(), 10)])) {\n this.cellTops[parseInt(resIndex.toString(), 10)] = this.getRowTop(resIndex);\n }\n var top_1 = this.cellTops[parseInt(resIndex.toString(), 10)];\n var appTop = (top_1 + (this.maxHeight ? 0 : EVENT_GAP)) + (overlapCount * (appHeight + EVENT_GAP));\n appLeft = (this.parent.enableRtl) ? 0 : position;\n appRight = (this.parent.enableRtl) ? position : 0;\n var height = ((overlapCount + 1) * (appHeight + EVENT_GAP)) + this.moreIndicatorHeight;\n var renderApp = this.parent.activeViewOptions.maxEventsPerRow && !this.parent.rowAutoHeight && !this.parent.eventSettings.enableIndicator\n ? overlapCount < eventsPerRow : this.maxOrIndicator ? overlapCount < 1 ? true : false : this.cellHeight > height;\n if (this.parent.rowAutoHeight || renderApp) {\n var appointmentElement = void 0;\n if (isNullOrUndefined(this.inlineValue)) {\n appointmentElement = this.createAppointmentElement(event, resIndex);\n }\n else {\n appointmentElement = this.parent.inlineModule.createInlineAppointmentElement();\n }\n this.applyResourceColor(appointmentElement, event, 'backgroundColor', this.groupOrder);\n setStyleAttribute(appointmentElement, {\n 'width': appWidth + 'px', 'left': appLeft + 'px', 'right': appRight + 'px', 'top': appTop + 'px'\n });\n this.wireAppointmentEvents(appointmentElement, event);\n if (this.parent.rowAutoHeight) {\n var conWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var conWidth = conWrap.getBoundingClientRect().width;\n var isWithoutScroll = conWrap.offsetHeight === conWrap.clientHeight &&\n conWrap.offsetWidth === conWrap.clientWidth;\n this.renderEventElement(event, appointmentElement, cellTd);\n var firstChild = this.getFirstChild(resIndex);\n this.updateCellHeight(firstChild, height);\n if (isWithoutScroll &&\n (conWrap.offsetWidth > conWrap.clientWidth || conWidth !== conWrap.getBoundingClientRect().width)) {\n this.adjustAppointments(conWidth);\n }\n }\n else {\n this.renderEventElement(event, appointmentElement, cellTd);\n }\n }\n else {\n for (var i = 0; i < diffInDays; i++) {\n var moreIndicator = cellTd.querySelector('.' + cls.MORE_INDICATOR_CLASS);\n var appPos = (this.parent.enableRtl) ? appRight : appLeft;\n appPos = (Math.floor(appPos / this.cellWidth) * this.cellWidth);\n var interval = this.interval / this.slotCount;\n var startDate = (this.parent.activeViewOptions.option === 'TimelineMonth' || this.renderType === 'day' || i !== 0) ?\n new Date(this.dateRender[this.day + i].getTime()) : new Date(startTime);\n var endDate = util.addDays(this.dateRender[this.day + i], 1);\n if (this.parent.activeViewOptions.option === 'TimelineMonth' || this.renderType === 'day') {\n var position_1 = this.getPosition(startDate, endDate, event[this.fields.isAllDay], (this.day + i));\n this.renderTimelineMoreIndicator(startTime, startDate, endDate, appHeight, interval, resIndex, appointmentsList, top_1, appLeft, appRight, cellTd, moreIndicator, appPos, position_1);\n }\n else {\n var slotCount = (util.getUniversalTime(endTime) - util.getUniversalTime(startTime)) / util.MS_PER_MINUTE *\n this.slotCount / this.interval;\n for (var k = 0; k < slotCount; k++) {\n startDate = (k === 0) ? new Date(startDate.getTime()) : new Date(startDate.getTime() + (60000 * interval));\n endDate = new Date(startDate.getTime() + (60000 * interval));\n if (endDate.getTime() > endTime.getTime()) {\n break;\n }\n var position_2 = this.getPosition(startDate, endDate, false, (this.day + i));\n if (appPos > position_2) {\n break;\n }\n appPos = position_2;\n this.renderTimelineMoreIndicator(startTime, startDate, endDate, appHeight, interval, resIndex, appointmentsList, top_1, appLeft, appRight, cellTd, moreIndicator, appPos, position_2);\n }\n }\n }\n }\n }\n this.parent.renderTemplates();\n };\n TimelineEvent.prototype.renderTimelineMoreIndicator = function (startTime, startDate, endDate, appHeight, interval, resIndex, appointmentsList, top, appLeft, appRight, cellTd, moreIndicator, appPos, position) {\n appLeft = (this.parent.enableRtl) ? appRight = position : position;\n appPos = (this.parent.enableRtl) ? appRight : appLeft;\n appPos = (Math.floor(appPos / this.cellWidth) * this.cellWidth);\n if ((cellTd && isNullOrUndefined(moreIndicator)) ||\n (!this.isAlreadyAvail(appPos, cellTd))) {\n var startDateTime = (this.parent.activeViewOptions.option === 'TimelineMonth' || this.renderType === 'day') ? new Date(+startTime) : startDate;\n var slotStartTime = (new Date(startDateTime.setMinutes(Math.floor(startDateTime.getMinutes() / interval) * interval)));\n var slotEndTime = new Date(slotStartTime.getTime() + (60000 * interval));\n var groupIndex = void 0;\n if (this.parent.activeViewOptions.group.resources.length > 0 && !isNullOrUndefined(resIndex)) {\n groupIndex = resIndex.toString();\n }\n var filterEvents = this.getFilterEvents(startDate, endDate, slotStartTime, slotEndTime, groupIndex, appointmentsList);\n var appArea = this.cellHeight - this.moreIndicatorHeight;\n appHeight = this.withIndicator ? appArea - EVENT_GAP : appHeight;\n var renderedAppCount = Math.floor(appArea / (appHeight + EVENT_GAP));\n var count = this.parent.activeViewOptions.maxEventsPerRow && !this.parent.eventSettings.enableIndicator\n ? filterEvents.length - this.parent.activeViewOptions.maxEventsPerRow : (filterEvents.length - renderedAppCount) <= 0 ? 1\n : filterEvents.length - renderedAppCount;\n var moreIndicatorElement = void 0;\n if (this.renderType === 'day') {\n moreIndicatorElement = this.getMoreIndicatorElement(count, startDate, endDate);\n }\n else {\n moreIndicatorElement = this.getMoreIndicatorElement(count, slotStartTime, slotEndTime);\n }\n if (!isNullOrUndefined(groupIndex)) {\n moreIndicatorElement.setAttribute('data-group-index', groupIndex);\n }\n moreIndicatorElement.style.top = top + appArea + 'px';\n moreIndicatorElement.style.width = this.cellWidth + 'px';\n moreIndicatorElement.style.left = (Math.floor(appLeft / this.cellWidth) * this.cellWidth) + 'px';\n moreIndicatorElement.style.right = (Math.floor(appRight / this.cellWidth) * this.cellWidth) + 'px';\n this.renderElement(cellTd, moreIndicatorElement);\n EventHandler.add(moreIndicatorElement, 'click', this.moreIndicatorClick, this);\n }\n };\n TimelineEvent.prototype.updateCellHeight = function (cell, height) {\n var cellHeight = cell.style.height === '' ? this.cellHeight : parseInt(cell.style.height, 10);\n if (height > cellHeight) {\n setStyleAttribute(cell, { 'height': height + 'px' });\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var resourceCell = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_TABLE_CLASS + ' ' + 'tbody td[data-group-index=\"' +\n cell.getAttribute('data-group-index') + '\"]');\n if (resourceCell) {\n setStyleAttribute(resourceCell, { 'height': height + 'px' });\n }\n }\n var monthHeader = this.parent.element.querySelector('.e-month-header-wrapper table tr:nth-child(' +\n (cell.parentElement.rowIndex + 1) + ') td');\n if (monthHeader) {\n setStyleAttribute(monthHeader, { 'height': height + 'px' });\n }\n }\n };\n TimelineEvent.prototype.adjustAppointments = function (conWidth) {\n var _this = this;\n var tr = this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS + ' tbody tr');\n this.cellWidth = this.workCells[0].getBoundingClientRect().width;\n var currentPercentage = (this.cellWidth * tr.children.length) / (conWidth / 100);\n var apps = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n apps.forEach(function (app) {\n if (_this.parent.enableRtl && app.style.right !== '0px') {\n app.style.right = ((parseFloat(app.style.right) / 100) * currentPercentage) + 'px';\n }\n else if (app.style.left !== '0px') {\n app.style.left = ((parseFloat(app.style.left) / 100) * currentPercentage) + 'px';\n }\n app.style.width = ((parseFloat(app.style.width) / 100) * currentPercentage) + 'px';\n });\n };\n TimelineEvent.prototype.getFirstChild = function (index) {\n var query = '.' + cls.CONTENT_TABLE_CLASS + ' tbody td';\n var groupIndex = '';\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n groupIndex = '[data-group-index=\"' + index.toString() + '\"]';\n }\n var td = this.parent.element.querySelector(query + groupIndex);\n return td;\n };\n TimelineEvent.prototype.updateBlockElements = function () {\n var blockElement = [].slice.call(this.element.querySelectorAll('.' + cls.BLOCK_APPOINTMENT_CLASS));\n for (var _i = 0, blockElement_1 = blockElement; _i < blockElement_1.length; _i++) {\n var element = blockElement_1[_i];\n var resIndex = parseInt(element.getAttribute('data-group-index'), 10);\n var firstChild = this.getFirstChild(resIndex);\n element.style.height = firstChild.offsetHeight + 'px';\n var width = Math.round(element.offsetWidth / firstChild.offsetWidth);\n element.style.width = (firstChild.offsetWidth * width) + 'px';\n }\n var blockIndicator = [].slice.call(this.element.querySelectorAll('.' + cls.BLOCK_INDICATOR_CLASS));\n for (var _a = 0, blockIndicator_1 = blockIndicator; _a < blockIndicator_1.length; _a++) {\n var element = blockIndicator_1[_a];\n var resIndex = parseInt(element.getAttribute('data-group-index'), 10);\n element.style.top = this.getRowTop(resIndex) +\n this.getFirstChild(resIndex).offsetHeight - BLOCK_INDICATOR_HEIGHT + 'px';\n }\n };\n TimelineEvent.prototype.getStartTime = function (event, eventData) {\n var startTime = event[this.fields.startTime];\n var schedule = util.getStartEndHours(startTime, this.startHour, this.endHour);\n if (this.isDayProcess()) {\n startTime = event[this.fields.startTime];\n }\n else {\n if (schedule.startHour.getTime() >= eventData[this.fields.startTime]) {\n startTime = schedule.startHour;\n }\n else if (schedule.endHour.getTime() <= eventData[this.fields.startTime]) {\n startTime = this.getNextDay(schedule.startHour, eventData);\n }\n else {\n startTime = eventData[this.fields.startTime];\n }\n }\n // To overcome the overflow\n eventData.trimStartTime = (event[this.fields.isAllDay]) ? schedule.startHour : eventData[this.fields.startTime];\n return startTime;\n };\n TimelineEvent.prototype.getNextDay = function (startTime, eventData) {\n var startDate;\n for (var i = 1; i <= this.dateRender.length; i++) {\n startDate = util.addDays(startTime, i);\n if (this.parent.getIndexOfDate(this.dateRender, util.resetTime(new Date(startTime.getTime()))) !== -1) {\n eventData.count = eventData.count - 1;\n return startDate;\n }\n }\n return startDate;\n };\n TimelineEvent.prototype.getEndTime = function (event, eventData) {\n var endTime = event[this.fields.endTime];\n var schedule = util.getStartEndHours(endTime, this.startHour, this.endHour);\n if (this.isDayProcess()) {\n endTime = eventData[this.fields.endTime];\n }\n else {\n endTime = eventData[this.fields.endTime];\n if (schedule.endHour.getTime() <= eventData[this.fields.endTime] || event[this.fields.isAllDay]) {\n endTime = schedule.endHour;\n }\n if (schedule.startHour.getTime() >= eventData[this.fields.endTime].getTime() && !event[this.fields.isAllDay]) {\n endTime = this.getPreviousDay(schedule.startHour, schedule.endHour, eventData);\n }\n }\n // To overcome the overflow\n eventData.trimEndTime = (event[this.fields.isAllDay]) ? schedule.endHour : eventData[this.fields.endTime];\n return endTime;\n };\n TimelineEvent.prototype.getPreviousDay = function (startTime, endTime, eventData) {\n for (var i = 1; i <= this.dateRender.length; i++) {\n var endDate = util.addDays(endTime, -i);\n if (this.parent.getIndexOfDate(this.dateRender, util.resetTime(new Date(startTime.getTime()))) !== -1) {\n endDate = util.resetTime(new Date(endDate.getTime()));\n endDate.setHours(endTime.getHours(), endTime.getMinutes(), endTime.getSeconds());\n var count = eventData.count;\n var actualEndTime = eventData[this.fields.endTime];\n eventData.count = actualEndTime.getHours() !== 0 || actualEndTime.getMinutes() !== 0 ? count - 1 : count;\n return endDate;\n }\n }\n return eventData[this.fields.endTime];\n };\n TimelineEvent.prototype.getEventWidth = function (startDate, endDate, isAllDay, count) {\n if (this.renderType === 'day' || isAllDay) {\n return (count * this.slotsPerDay) * this.cellWidth;\n }\n if (this.isSameDay(startDate, endDate)) {\n return this.getSameDayEventsWidth(startDate, endDate);\n }\n else {\n return this.getSpannedEventsWidth(startDate, endDate, count);\n }\n };\n TimelineEvent.prototype.getSameDayEventsWidth = function (startDate, endDate) {\n return ((util.getUniversalTime(endDate) - util.getUniversalTime(startDate)) /\n util.MS_PER_MINUTE * (this.cellWidth * this.slotCount) / this.interval);\n };\n TimelineEvent.prototype.getSpannedEventsWidth = function (startDate, endDate, diffInDays) {\n var width = (diffInDays * this.slotsPerDay) * this.cellWidth;\n var endWidth;\n var start = util.getStartEndHours(util.resetTime(new Date(startDate.getTime())), this.startHour, this.endHour);\n var startWidth = this.getSameDayEventsWidth(start.startHour, startDate);\n if (this.parent.getIndexOfDate(this.dateRender, util.resetTime(new Date(endDate.getTime()))) === -1) {\n endWidth = 0;\n }\n else {\n var end = util.getStartEndHours(util.resetTime(new Date(endDate.getTime())), this.startHour, this.endHour);\n endWidth = this.getSameDayEventsWidth(endDate, end.endHour);\n endWidth = ((this.slotsPerDay * this.cellWidth) === endWidth) ? 0 : endWidth;\n }\n var spannedWidth = startWidth + endWidth;\n return (width > spannedWidth) ? width - spannedWidth : width - startWidth;\n };\n TimelineEvent.prototype.isSameDay = function (startTime, endTime) {\n var startDay = this.parent.getIndexOfDate(this.dateRender, util.resetTime(new Date(startTime.getTime())));\n var endDay = this.parent.getIndexOfDate(this.dateRender, util.resetTime(new Date(endTime.getTime())));\n return (startDay === endDay);\n };\n TimelineEvent.prototype.getAppointmentLeft = function (schedule, startTime, day) {\n var slotTd = (this.isSameDay(startTime, schedule.startHour)) ?\n ((util.getUniversalTime(startTime) - util.getUniversalTime(schedule.startHour)) /\n (util.MS_PER_MINUTE * this.interval)) * this.slotCount : 0;\n if (day === 0) {\n return slotTd;\n }\n else {\n var daySlot = Math.round((((util.getUniversalTime(schedule.endHour) - util.getUniversalTime(schedule.startHour)) /\n util.MS_PER_MINUTE) / this.interval) * this.slotCount);\n return (daySlot * day) + slotTd;\n }\n };\n TimelineEvent.prototype.getPosition = function (startTime, endTime, isAllDay, day) {\n if (this.renderType === 'day' || isAllDay) {\n return (day * this.slotsPerDay) * this.cellWidth;\n }\n var currentDate = util.resetTime(new Date(this.dateRender[parseInt(day.toString(), 10)].getTime()));\n var schedule = util.getStartEndHours(currentDate, this.startHour, this.endHour);\n var cellIndex;\n if (schedule.endHour.getTime() <= endTime.getTime() && schedule.startHour.getTime() >= startTime.getTime()) {\n cellIndex = this.getAppointmentLeft(schedule, schedule.startHour, day);\n }\n else if (schedule.endHour.getTime() <= endTime.getTime()) {\n cellIndex = this.getAppointmentLeft(schedule, startTime, day);\n }\n else if (schedule.startHour.getTime() >= startTime.getTime()) {\n cellIndex = this.getAppointmentLeft(schedule, schedule.startHour, day);\n }\n else {\n cellIndex = this.getAppointmentLeft(schedule, startTime, day);\n }\n return cellIndex * this.cellWidth;\n };\n TimelineEvent.prototype.getFilterEvents = function (startDate, endDate, startTime, endTime, gIndex, eventsList) {\n if (this.renderType === 'day') {\n return this.getFilteredEvents(startDate, endDate, gIndex, eventsList);\n }\n else {\n return this.getFilteredEvents(startTime, endTime, gIndex, eventsList);\n }\n };\n TimelineEvent.prototype.isAlreadyAvail = function (appPos, cellTd) {\n var moreIndicator = [].slice.call(cellTd.querySelectorAll('.' + cls.MORE_INDICATOR_CLASS));\n for (var i = 0; i < moreIndicator.length; i++) {\n var indicatorPos = void 0;\n if (moreIndicator) {\n indicatorPos = (this.parent.enableRtl) ? moreIndicator[parseInt(i.toString(), 10)].style.right : moreIndicator[parseInt(i.toString(), 10)].style.left;\n }\n if (parseInt(indicatorPos, 10) === Math.floor(appPos)) {\n return true;\n }\n }\n return false;\n };\n TimelineEvent.prototype.getRowTop = function (resIndex) {\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n return this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS +\n ' ' + 'tbody td[data-group-index=\"' + resIndex.toString() + '\"]').offsetTop;\n }\n return 0;\n };\n TimelineEvent.prototype.getCellTd = function () {\n var wrapIndex = this.parent.uiStateValues.isGroupAdaptive ? 0 : this.rowIndex;\n return this.eventContainers[parseInt(wrapIndex.toString(), 10)];\n };\n TimelineEvent.prototype.renderBlockIndicator = function (cellTd, position, resIndex) {\n // No need to render block icon for Year, Month and Week header rows\n if (this.parent.headerRows.length > 0 &&\n (this.parent.headerRows[this.parent.headerRows.length - 1].option !== 'Hour' ||\n this.parent.headerRows[this.parent.headerRows.length - 1].option !== 'Date')) {\n return;\n }\n position = (Math.floor(position / this.cellWidth) * this.cellWidth) + this.cellWidth - BLOCK_INDICATOR_WIDTH;\n if (!this.isAlreadyAvail(position, cellTd)) {\n var blockIndicator = createElement('div', { className: 'e-icons ' + cls.BLOCK_INDICATOR_CLASS });\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n blockIndicator.setAttribute('data-group-index', resIndex.toString());\n }\n if (this.parent.enableRtl) {\n blockIndicator.style.right = position + 'px';\n }\n else {\n blockIndicator.style.left = position + 'px';\n }\n blockIndicator.style.top = this.getRowTop(resIndex) + this.cellHeight - BLOCK_INDICATOR_HEIGHT + 'px';\n this.renderElement(cellTd, blockIndicator);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimelineEvent.prototype.setMaxEventHeight = function (event, cell) {\n setStyleAttribute(event, {\n 'height': (this.cellHeight - (this.maxHeight ? 0 : EVENT_GAP) - (this.maxHeight ? 0 : this.moreIndicatorHeight)) + 'px'\n });\n };\n TimelineEvent.prototype.isDayProcess = function () {\n if (this.parent.currentView === 'TimelineMonth' || !this.parent.activeViewOptions.timeScale.enable ||\n (this.parent.activeViewOptions.headerRows.length > 0 &&\n this.parent.activeViewOptions.headerRows.slice(-1)[0].option !== 'Hour')) {\n return true;\n }\n return false;\n };\n TimelineEvent.prototype.destroy = function () {\n this.renderType = null;\n this.eventContainers = null;\n this.dayLength = null;\n this.content = null;\n _super.prototype.destroy.call(this);\n this.parent = null;\n };\n return TimelineEvent;\n}(MonthEvent));\nexport { TimelineEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { addClass, append, createElement, extend, remove, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, EventHandler } from '@syncfusion/ej2-base';\nimport { TimelineEvent } from './timeline-view';\nimport * as util from '../base/util';\nimport * as events from '../base/constant';\nimport * as cls from '../base/css-constant';\nvar EVENT_GAP = 2;\n/**\n * Year view events render\n */\nvar YearEvent = /** @class */ (function (_super) {\n __extends(YearEvent, _super);\n function YearEvent(parent) {\n var _this = _super.call(this, parent, 'day') || this;\n _this.isResource = false;\n return _this;\n }\n YearEvent.prototype.renderAppointments = function () {\n if (this.parent.dragAndDropModule) {\n this.parent.dragAndDropModule.setDragArea();\n }\n this.fields = this.parent.eventFields;\n var elementSelector = (this.parent.currentView === 'Year') ? '.' + cls.APPOINTMENT_CLASS :\n '.' + cls.APPOINTMENT_WRAPPER_CLASS + ',.' + cls.MORE_INDICATOR_CLASS;\n var eventWrappers = [].slice.call(this.parent.element.querySelectorAll(elementSelector));\n for (var _i = 0, eventWrappers_1 = eventWrappers; _i < eventWrappers_1.length; _i++) {\n var wrapper = eventWrappers_1[_i];\n remove(wrapper);\n }\n this.renderedEvents = [];\n if (this.parent.currentView === 'Year') {\n this.yearViewEvents();\n }\n else {\n this.removeCellHeight();\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n this.isResource = true;\n this.timelineResourceEvents();\n }\n else {\n this.timelineYearViewEvents();\n }\n }\n this.parent.renderTemplates();\n this.parent.notify(events.contentReady, {});\n };\n YearEvent.prototype.yearViewEvents = function () {\n var months = this.getMonths();\n for (var _i = 0, months_1 = months; _i < months_1.length; _i++) {\n var month = months_1[_i];\n var queryString = \".e-month-calendar:nth-child(\" + (months.indexOf(month) + 1) + \") td.e-work-cells\";\n var workCells = [].slice.call(this.parent.element.querySelectorAll(queryString));\n var monthDate = new Date(this.parent.selectedDate.getFullYear(), month, 1);\n var monthStart = this.parent.calendarUtil.getMonthStartDate(new Date(monthDate.getTime()));\n var monthEnd = this.parent.calendarUtil.getMonthEndDate(new Date(monthDate.getTime()));\n var startDate = util.getWeekFirstDate(monthStart, this.parent.firstDayOfWeek);\n var endDate = util.addDays(util.getWeekLastDate(monthEnd, this.parent.firstDayOfWeek), 1);\n for (var index = 0; startDate.getTime() < endDate.getTime(); index++) {\n var start = util.resetTime(new Date(startDate.getTime()));\n var end = util.addDays(new Date(start.getTime()), 1);\n startDate = util.addDays(new Date(startDate.getTime()), 1);\n if (!this.parent.isMinMaxDate(start)) {\n continue;\n }\n var filterEvents = this.parent.eventBase.filterEvents(start, end);\n if (filterEvents.length > 0) {\n var workCell = workCells[parseInt(index.toString(), 10)];\n if (workCell) {\n workCell.appendChild(createElement('div', { className: cls.APPOINTMENT_CLASS }));\n }\n }\n }\n }\n };\n YearEvent.prototype.timelineYearViewEvents = function () {\n var _this = this;\n var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS + ':not(.' + cls.OTHERMONTH_CLASS + ')');\n this.cellWidth = workCell.getBoundingClientRect().width;\n this.cellHeader = util.getOuterHeight(workCell.querySelector('.' + cls.DATE_HEADER_CLASS));\n var eventTable = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);\n this.eventHeight = util.getElementHeightFromClass(eventTable, cls.APPOINTMENT_CLASS);\n var selector = \".\" + cls.MONTH_HEADER_WRAPPER + \" tbody tr,.\" + cls.RESOURCE_COLUMN_TABLE_CLASS + \" tbody tr,.\" + cls.CONTENT_TABLE_CLASS + \" tbody tr\";\n this.addCellHeight(selector, this.eventHeight, EVENT_GAP, this.cellHeader, this.moreIndicatorHeight);\n var wrapperCollection = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS));\n var months = this.getMonths();\n var groupIndex = (this.parent.activeViewOptions.group.resources.length > 0 && this.parent.uiStateValues.isGroupAdaptive) ?\n this.parent.uiStateValues.groupIndex : undefined;\n for (var row = 0; row < months.length; row++) {\n var wrapper = wrapperCollection[parseInt(row.toString(), 10)];\n var td = row + 1;\n var eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n wrapper.appendChild(eventWrapper);\n var monthStart = new Date(this.parent.selectedDate.getFullYear(), months[parseInt(row.toString(), 10)], 1);\n var monthEnd = new Date(monthStart.getFullYear(), monthStart.getMonth() + 1, 0);\n var dayIndex = monthStart.getDay();\n var isSpannedCollection = [];\n if (this.parent.activeViewOptions.orientation === 'Horizontal') {\n this.renderedEvents = [];\n }\n while (monthStart.getTime() <= monthEnd.getTime()) {\n var leftValue = void 0;\n var rightValue = void 0;\n if (this.parent.activeViewOptions.orientation === 'Vertical') {\n var wrapper_1 = wrapperCollection[parseInt(dayIndex.toString(), 10)];\n td = dayIndex + 1;\n eventWrapper = wrapper_1.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS);\n if (!eventWrapper) {\n eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n wrapper_1.appendChild(eventWrapper);\n }\n if (this.parent.enableRtl) {\n rightValue = row * this.cellWidth;\n }\n else {\n leftValue = row * this.cellWidth;\n }\n }\n else {\n if (this.parent.enableRtl) {\n rightValue = ((dayIndex + monthStart.getDate()) - 1) * this.cellWidth;\n }\n else {\n leftValue = ((dayIndex + monthStart.getDate()) - 1) * this.cellWidth;\n }\n }\n var rowTd = this.parent.element.querySelector(\".e-content-wrap tr:nth-child(\" + td + \") td\");\n this.cellHeight = rowTd.offsetHeight;\n var dayStart = util.resetTime(new Date(monthStart.getTime()));\n var dayEnd = util.addDays(new Date(dayStart.getTime()), 1);\n var resource = void 0;\n if (this.parent.uiStateValues.isGroupAdaptive) {\n resource = this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex];\n }\n var dayEvents = this.parent.eventBase.filterEvents(dayStart, dayEnd, undefined, resource);\n dayEvents = this.parent.eventBase.sortByDateTime(dayEvents);\n var _loop_1 = function (index, count) {\n var eventData = extend({}, dayEvents[parseInt(index.toString(), 10)], null, true);\n this_1.updateSpannedEvents(eventData, dayStart, dayEnd);\n var overlapIndex = this_1.getIndex(dayStart);\n eventData.Index = overlapIndex;\n var availedHeight = this_1.cellHeader + (this_1.eventHeight * (overlapIndex + 1)) + EVENT_GAP +\n this_1.moreIndicatorHeight;\n var appArea = this_1.cellHeight - this_1.cellHeader - this_1.moreIndicatorHeight;\n var renderedAppCount = Math.floor(appArea / (this_1.eventHeight + EVENT_GAP));\n var eventsPerRow = this_1.parent.rowAutoHeight ? 1 : this_1.parent.activeViewOptions.maxEventsPerRow;\n var moreIndicatorCount = this_1.parent.activeViewOptions.maxEventsPerRow ? count - eventsPerRow\n : (count - renderedAppCount) <= 0 ? 1 : count - renderedAppCount;\n if (this_1.parent.activeViewOptions.orientation === 'Horizontal') {\n var isRendered = this_1.renderedEvents.filter(function (eventObj) {\n return eventObj.Guid === eventData.Guid;\n });\n var isSpanned = isSpannedCollection.filter(function (eventObj) {\n return eventObj.Guid === eventData.Guid;\n });\n if (isRendered.length > 0 && isRendered[0].MoreIndicator || isSpanned.length > 0 && isSpanned[0].MoreIndicator) {\n var moreIndex = this_1.parent.activeViewOptions.orientation === 'Horizontal' ? row : dayIndex;\n this_1.renderMoreIndicator(eventWrapper, moreIndicatorCount, dayStart, moreIndex, leftValue, rightValue, groupIndex);\n return \"continue\";\n }\n else if (isRendered.length > 0 || isSpanned.length > 0) {\n return \"continue\";\n }\n }\n var enableAppRender = this_1.maxOrIndicator || (overlapIndex < eventsPerRow) || (this_1.cellHeight > availedHeight);\n if (this_1.parent.rowAutoHeight || enableAppRender || this_1.cellHeight > availedHeight) {\n this_1.renderEvent(eventWrapper, eventData, row, leftValue, rightValue, monthStart, dayIndex);\n if (this_1.parent.rowAutoHeight || this_1.cellHeight > availedHeight) {\n this_1.updateCellHeight(rowTd, availedHeight);\n }\n isSpannedCollection.push(eventData);\n }\n else {\n var moreIndex = this_1.parent.activeViewOptions.orientation === 'Horizontal' ? row : dayIndex;\n this_1.renderMoreIndicator(eventWrapper, moreIndicatorCount, dayStart, moreIndex, leftValue, rightValue, groupIndex);\n if (this_1.parent.activeViewOptions.orientation === 'Horizontal') {\n eventData.MoreIndicator = true;\n this_1.renderedEvents.push(eventData);\n isSpannedCollection.push(eventData);\n }\n }\n };\n var this_1 = this;\n for (var index = 0, count = dayEvents.length; index < count; index++) {\n _loop_1(index, count);\n }\n monthStart = util.addDays(new Date(monthStart.getTime()), 1);\n if (this.parent.activeViewOptions.orientation === 'Vertical') {\n dayIndex++;\n this.renderedEvents = [];\n }\n }\n }\n if (this.parent.rowAutoHeight && this.parent.activeViewOptions.orientation === 'Vertical') {\n var appContainer = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS));\n var tr_1 = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CONTENT_TABLE_CLASS + ' tbody tr'));\n appContainer.forEach(function (ele, index) {\n var app = [].slice.call(ele.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n var appTop = tr_1[parseInt(index.toString(), 10)].offsetTop + _this.cellHeader + EVENT_GAP;\n app.forEach(function (app) {\n var overlap = parseInt(app.getAttribute('data-index'), 10);\n app.style.top = appTop + (overlap * _this.eventHeight) + 'px';\n app.removeAttribute('data-index');\n });\n });\n }\n };\n YearEvent.prototype.updateSpannedEvents = function (eventObj, dayStart, dayEnd) {\n var isLeftRightResize = (this.isResource && this.parent.activeViewOptions.orientation === 'Vertical') ||\n (!this.isResource && this.parent.activeViewOptions.orientation === 'Horizontal');\n var data = { isLeft: true, isRight: true, isBottom: true, isTop: true };\n if (dayStart.getTime() <= eventObj[this.fields.startTime].getTime()) {\n if (isLeftRightResize) {\n data.isLeft = false;\n }\n else {\n data.isTop = false;\n }\n }\n if ((dayEnd.getTime() >= eventObj[this.fields.endTime].getTime()) || (isLeftRightResize && !this.isResource &&\n util.addDays(dayEnd, -1).getMonth() === eventObj[this.fields.endTime].getMonth()) ||\n (isLeftRightResize && this.isResource && (dayEnd.getTime() <= eventObj[this.fields.endTime].getTime()))) {\n if (isLeftRightResize) {\n data.isRight = false;\n }\n else {\n data.isBottom = false;\n }\n }\n eventObj.data = data;\n };\n YearEvent.prototype.timelineResourceEvents = function () {\n var _this = this;\n var contentTable = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var isVerticalScrollbarAvail = contentTable.offsetWidth > contentTable.clientWidth;\n var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS);\n this.cellWidth = workCell.getBoundingClientRect().width;\n this.cellHeader = 0;\n var eventTable = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);\n this.eventHeight = util.getElementHeightFromClass(eventTable, cls.APPOINTMENT_CLASS);\n var selector = \".\" + cls.MONTH_HEADER_WRAPPER + \" tbody tr,.\" + cls.RESOURCE_COLUMN_TABLE_CLASS + \" tbody tr,.\" + cls.CONTENT_TABLE_CLASS + \" tbody tr\";\n this.addCellHeight(selector, this.eventHeight, EVENT_GAP, this.cellHeader, this.moreIndicatorHeight);\n var wrapperCollection = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS));\n var resources = this.parent.uiStateValues.isGroupAdaptive ?\n [this.parent.resourceBase.lastResourceLevel[this.parent.uiStateValues.groupIndex]] :\n this.parent.activeViewOptions.allowVirtualScrolling ? this.parent.resourceBase.renderedResources :\n this.parent.resourceBase.lastResourceLevel;\n var months = this.getMonths();\n if (this.parent.activeViewOptions.orientation === 'Horizontal') {\n for (var month = 0; month < months.length; month++) {\n var monthStart = new Date(this.parent.selectedDate.getFullYear(), months[parseInt(month.toString(), 10)], 1);\n for (var i = 0, len = resources.length; i < len; i++) {\n this.renderedEvents = [];\n this.renderResourceEvent(wrapperCollection[parseInt(month.toString(), 10)], resources[parseInt(i.toString(), 10)], month, i, monthStart);\n }\n }\n }\n else {\n for (var i = 0, len = resources.length; i < len; i++) {\n this.renderedEvents = [];\n for (var month = 0; month < months.length; month++) {\n var monthStart = new Date(this.parent.selectedDate.getFullYear(), months[parseInt(month.toString(), 10)], 1);\n this.renderResourceEvent(wrapperCollection[parseInt(i.toString(), 10)], resources[parseInt(i.toString(), 10)], month, i, monthStart);\n }\n }\n }\n if (this.parent.rowAutoHeight && !isVerticalScrollbarAvail && contentTable.offsetWidth > contentTable.clientWidth) {\n var appointments = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n appointments.forEach(function (ele) {\n ele.style.removeProperty('left');\n ele.style.removeProperty('right');\n });\n var appContainer = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS));\n var conTable_1 = this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS);\n var tr_2 = [].slice.call(conTable_1.querySelectorAll('tbody tr'));\n appContainer.forEach(function (ele, index) {\n var appWrapper = [].slice.call(ele.children);\n var row = tr_2[parseInt(index.toString(), 10)];\n appWrapper.forEach(function (appWrap, cellIndex) {\n var td = row.querySelector(\"td:nth-child(\" + (cellIndex + 1) + \")\");\n var app = [].slice.call(appWrap.children);\n var width = td.getBoundingClientRect().width;\n var left = td.offsetLeft;\n if (_this.parent.enableRtl) {\n var right_1 = conTable_1.offsetWidth - left - td.offsetWidth;\n app.forEach(function (app) {\n app.style.width = Math.floor(parseInt(app.style.width, 10) / width) * width + 'px';\n app.style.right = right_1 + 'px';\n });\n }\n else {\n app.forEach(function (app) {\n app.style.width = Math.floor(parseInt(app.style.width, 10) / width) * width + 'px';\n app.style.left = left + 'px';\n });\n }\n });\n });\n }\n };\n YearEvent.prototype.renderResourceEvent = function (wrapper, resource, month, index, monthStart) {\n var eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n wrapper.appendChild(eventWrapper);\n var monthEnd = util.addDays(util.lastDateOfMonth(new Date(monthStart.getTime())), 1);\n var eventDatas = this.parent.eventBase.filterEvents(monthStart, monthEnd, undefined, resource);\n var rowIndex = this.parent.activeViewOptions.orientation === 'Vertical' ? index : month;\n var td = this.parent.element.querySelector(\".e-content-wrap tr:nth-child(\" + (rowIndex + 1) + \") td\");\n this.cellHeight = td.offsetHeight;\n this.groupOrder = resource.groupOrder;\n var isSpannedCollection = [];\n var _loop_2 = function (a) {\n var data = eventDatas[parseInt(a.toString(), 10)];\n var overlapIndex = void 0;\n var eventData = extend({}, data, null, true);\n if (this_2.parent.activeViewOptions.group.resources.length > 0) {\n var eventObj = this_2.isSpannedEvent(eventData, monthStart);\n overlapIndex = this_2.getIndex(eventObj[this_2.fields.startTime]);\n eventData.Index = overlapIndex;\n }\n else {\n overlapIndex = this_2.getIndex(eventData[this_2.fields.startTime]);\n eventData.Index = overlapIndex;\n }\n var availedHeight = this_2.cellHeader + (this_2.eventHeight * (a + 1)) + EVENT_GAP + this_2.moreIndicatorHeight;\n var leftValue = (this_2.parent.activeViewOptions.orientation === 'Vertical') ?\n month * this_2.cellWidth : index * this_2.cellWidth;\n if (!this_2.parent.isMinMaxDate(eventData[this_2.fields.startTime])) {\n return { value: void 0 };\n }\n if (this_2.parent.activeViewOptions.orientation === 'Vertical' && this_2.parent.activeViewOptions.group.resources.length > 0) {\n var isRendered = this_2.renderedEvents.filter(function (eventObj) {\n return eventObj.Guid === eventData.Guid;\n });\n var isSpanned = isSpannedCollection.filter(function (eventObj) {\n return eventObj.Guid === eventData.Guid;\n });\n if (isRendered.length > 0 || isSpanned.length > 0) {\n return \"continue\";\n }\n }\n if (this_2.parent.rowAutoHeight || this_2.cellHeight > availedHeight) {\n this_2.renderEvent(eventWrapper, eventData, month, leftValue, leftValue, monthStart, index);\n this_2.updateCellHeight(td, availedHeight);\n isSpannedCollection.push(eventData);\n }\n else {\n var moreIndex = this_2.parent.activeViewOptions.orientation === 'Horizontal' ? month : index;\n this_2.renderMoreIndicator(eventWrapper, eventDatas.length - a, monthStart, moreIndex, leftValue, leftValue, index);\n if (this_2.parent.activeViewOptions.orientation === 'Horizontal') {\n for (var i = index; i < eventDatas.length; i++) {\n this_2.renderedEvents.push(extend({}, eventDatas[parseInt(i.toString(), 10)], { Index: overlapIndex + i }, true));\n }\n }\n return \"break\";\n }\n };\n var this_2 = this;\n for (var a = 0; a < eventDatas.length; a++) {\n var state_1 = _loop_2(a);\n if (typeof state_1 === \"object\")\n return state_1.value;\n if (state_1 === \"break\")\n break;\n }\n };\n // eslint-disable-next-line max-len\n YearEvent.prototype.renderEvent = function (wrapper, eventData, row, left, right, monthDate, rowIndex) {\n var _this = this;\n var eventObj = this.isSpannedEvent(eventData, monthDate);\n var wrap = this.createEventElement(eventObj);\n var width;\n var index;\n if (eventObj.isSpanned.count === 1) {\n var endTime = util.addDays(eventObj[this.fields.endTime], -1);\n eventObj[this.fields.endTime] = (endTime > eventObj[this.fields.startTime]) ? endTime : eventObj[this.fields.endTime];\n }\n if (eventObj[this.fields.startTime] > eventObj[this.fields.endTime]) {\n return;\n }\n if (this.parent.activeViewOptions.orientation === 'Horizontal') {\n index = row + 1;\n if (eventObj[this.fields.startTime].getTime() === eventObj[this.fields.endTime].getTime()) {\n eventObj.isSpanned.count = 1;\n }\n width = eventObj.isSpanned.count * this.cellWidth;\n }\n else {\n index = rowIndex + 1;\n width = this.isResource ? eventObj.isSpanned.count * this.cellWidth : this.cellWidth;\n }\n var rowTd = this.parent.element.querySelector(\".e-content-wrap tr:nth-child(\" + index + \") td\");\n var top = rowTd.offsetTop + this.cellHeader + (this.eventHeight * eventObj.Index) + EVENT_GAP;\n setStyleAttribute(wrap, {\n 'width': width + 'px', 'height': this.eventHeight + 'px', 'left': left + 'px', 'right': right + 'px', 'top': top + 'px'\n });\n if (!this.isResource && this.parent.rowAutoHeight && this.parent.activeViewOptions.orientation === 'Vertical') {\n wrap.setAttribute('data-index', eventObj.Index.toString());\n }\n var args = { data: eventObj, element: wrap, cancel: false, type: 'event' };\n this.parent.trigger(events.eventRendered, args, function (eventArgs) {\n if (!eventArgs.cancel) {\n wrapper.appendChild(wrap);\n _this.wireAppointmentEvents(wrap, eventObj);\n if (_this.parent.activeViewOptions.group.resources.length > 0) {\n _this.renderedEvents.push(extend({}, eventObj, null, true));\n }\n else if (_this.parent.activeViewOptions.orientation === 'Vertical') {\n _this.renderedEvents.push(extend({}, eventObj, null, true));\n }\n else if ((eventObj.isSpanned.isRight || eventObj.isSpanned.isLeft) && _this.parent.activeViewOptions.orientation === 'Horizontal'\n || !eventObj.isSpanned.isRight) {\n _this.renderedEvents.push(extend({}, eventObj, null, true));\n }\n }\n });\n };\n // eslint-disable-next-line max-len\n YearEvent.prototype.renderMoreIndicator = function (wrapper, count, startDate, row, left, right, index) {\n if (this.parent.activeViewOptions.group.resources.length === 0 && wrapper.querySelector('[data-start-date=\"' + startDate.getTime() + '\"]')) {\n return;\n }\n var endDate;\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n endDate = util.addDays(util.lastDateOfMonth(new Date(startDate.getTime())), 1);\n }\n else {\n endDate = util.addDays(new Date(startDate.getTime()), 1);\n }\n var moreIndicator = this.getMoreIndicatorElement(count, startDate, endDate);\n var rowTr = this.parent.element.querySelector(\".e-content-wrap tr:nth-child(\" + (row + 1) + \")\");\n var top = rowTr.offsetTop + (this.cellHeight - this.moreIndicatorHeight);\n left = (Math.floor(left / this.cellWidth) * this.cellWidth);\n right = (Math.floor(right / this.cellWidth) * this.cellWidth);\n setStyleAttribute(moreIndicator, { 'width': this.cellWidth + 'px', 'left': left + 'px', 'right': right + 'px', 'top': top + 'px' });\n if (!isNullOrUndefined(index)) {\n moreIndicator.setAttribute('data-group-index', index.toString());\n }\n wrapper.appendChild(moreIndicator);\n EventHandler.add(moreIndicator, 'click', this.moreIndicatorClick, this);\n };\n YearEvent.prototype.createEventElement = function (record) {\n var eventSubject = (record[this.fields.subject] || this.parent.eventSettings.fields.subject.default\n || this.parent.localeObj.getConstant('addTitle'));\n var eventWrapper = createElement('div', {\n className: cls.APPOINTMENT_CLASS,\n attrs: {\n 'data-id': 'Appointment_' + record[this.fields.id],\n 'data-guid': record.Guid,\n 'role': 'button', 'tabindex': '0',\n 'aria-disabled': this.parent.eventBase.getReadonlyAttribute(record),\n 'aria-label': this.parent.getAnnouncementString(record)\n }\n });\n if (this.cssClass) {\n addClass([eventWrapper], this.cssClass);\n }\n if (record[this.fields.isReadonly]) {\n addClass([eventWrapper], cls.READ_ONLY);\n }\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var resIndex = this.getGroupIndexFromEvent(record);\n eventWrapper.setAttribute('data-group-index', resIndex.toString());\n }\n var templateElement = [];\n var eventObj = extend({}, record, null, true);\n if (this.parent.activeViewOptions.eventTemplate) {\n var templateId = this.parent.element.id + '_' + this.parent.activeViewOptions.eventTemplateName + 'eventTemplate';\n templateElement = this.parent.getAppointmentTemplate()(eventObj, this.parent, 'eventTemplate', templateId, false);\n }\n else {\n var locationEle = (record[this.fields.location] || this.parent.eventSettings.fields.location.default || '');\n var subjectEle = createElement('div', {\n className: cls.SUBJECT_CLASS,\n innerHTML: (eventSubject + (locationEle ? '; ' + locationEle : ''))\n });\n var startTimeEle = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''),\n innerHTML: this.parent.getTimeString(eventObj[this.fields.startTime])\n });\n var endTimeEle = createElement('div', {\n className: cls.APPOINTMENT_TIME + (this.parent.isAdaptive ? ' ' + cls.DISABLE_CLASS : ''),\n innerHTML: this.parent.getTimeString(eventObj[this.fields.endTime])\n });\n addClass([subjectEle], 'e-text-center');\n if (record[this.fields.isAllDay]) {\n templateElement = [subjectEle];\n }\n else if (!eventObj.isLeft && !eventObj.isRight) {\n templateElement = [startTimeEle, subjectEle, endTimeEle];\n }\n else {\n if (!eventObj.isLeft) {\n templateElement.push(startTimeEle);\n }\n templateElement.push(subjectEle);\n if (!eventObj.isRight) {\n templateElement.push(endTimeEle);\n }\n }\n }\n var appointmentDetails = createElement('div', { className: cls.APPOINTMENT_DETAILS });\n append(templateElement, appointmentDetails);\n eventWrapper.appendChild(appointmentDetails);\n this.parent.eventBase.renderSpannedIcon(eventWrapper, record.isSpanned);\n this.renderResizeHandler(eventWrapper, record.data, record[this.fields.isReadonly]);\n this.applyResourceColor(eventWrapper, eventObj, 'backgroundColor', this.groupOrder);\n return eventWrapper;\n };\n YearEvent.prototype.isSpannedEvent = function (eventObj, monthDate) {\n var monthStart = new Date(monthDate.getFullYear(), monthDate.getMonth(), 1);\n var monthEnd = util.addDays(new Date(monthDate.getFullYear(), monthDate.getMonth() + 1, 0), 1);\n var eventData = extend({}, eventObj, null, true);\n var eventStart = eventData[this.fields.startTime];\n var eventEnd = eventData[this.fields.endTime];\n var isSpanned = { isLeft: false, isRight: false, count: 1 };\n var yearStart = new Date(this.parent.selectedDate.getFullYear(), this.parent.firstMonthOfYear, 1);\n var yearEnd = util.addMonths(yearStart, this.parent.monthsCount);\n if (this.isResource) {\n this.updateSpannedEvents(eventObj, monthStart, monthEnd);\n }\n if (this.parent.activeViewOptions.orientation === 'Vertical' && this.parent.activeViewOptions.group.resources.length > 0) {\n this.updateSpannedEventDetails(eventStart, eventEnd, yearStart, yearEnd, eventData, isSpanned);\n var originalStartTime = eventData[this.fields.startTime];\n var originalEndTime = new Date(eventData[this.fields.endTime] - 1);\n isSpanned.count = (originalEndTime.getMonth() - originalStartTime.getMonth()) +\n (this.parent.monthsCount * (originalEndTime.getFullYear() - originalStartTime.getFullYear())) + 1;\n }\n else {\n this.updateSpannedEventDetails(eventStart, eventEnd, monthStart, monthEnd, eventData, isSpanned);\n if (this.parent.activeViewOptions.group.resources.length === 0 || this.parent.uiStateValues.isGroupAdaptive) {\n var end = util.resetTime(eventData[this.fields.endTime]).getTime();\n var start = util.resetTime(eventData[this.fields.startTime]).getTime();\n if (eventObj[this.fields.isAllDay] && end === eventObj[this.fields.endTime].getTime() || isSpanned.isRight) {\n end = util.addDays(new Date(end), -1).getTime();\n }\n isSpanned.count = Math.ceil((end - start) / util.MS_PER_DAY) + 1;\n }\n }\n eventData.isSpanned = isSpanned;\n if (util.resetTime(eventStart).getTime() < util.resetTime(this.parent.minDate).getTime()) {\n eventData[this.fields.startTime] = this.parent.minDate;\n }\n if (util.resetTime(eventEnd).getTime() > util.resetTime(this.parent.maxDate).getTime()) {\n eventData[this.fields.endTime] = this.parent.maxDate;\n }\n return eventData;\n };\n YearEvent.prototype.updateSpannedEventDetails = function (eventStart, eventEnd, viewStart, viewEnd, eventObj, isSpanned) {\n if (eventStart.getTime() < viewStart.getTime()) {\n eventObj[this.fields.startTime] = viewStart;\n isSpanned.isLeft = true;\n }\n if (eventEnd.getTime() > viewEnd.getTime()) {\n eventObj[this.fields.endTime] = viewEnd;\n isSpanned.isRight = true;\n }\n };\n YearEvent.prototype.getOverlapEvents = function (date, appointments) {\n var appointmentsList = [];\n var dateStart;\n var dateEnd;\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n var monthStart = this.parent.calendarUtil.getMonthStartDate(new Date(date.getTime()));\n var monthEnd = util.addDays(this.parent.calendarUtil.getMonthEndDate(new Date(date.getTime())), -1);\n dateStart = util.resetTime(new Date(monthStart.getTime())).getTime();\n dateEnd = util.resetTime(new Date(monthEnd.getTime())).getTime();\n }\n else {\n if (this.parent.rowAutoHeight) {\n dateStart = util.resetTime(new Date(date.getTime())).getTime();\n dateEnd = util.addDays(util.resetTime(new Date(date.getTime())), 1).getTime();\n }\n else {\n dateStart = dateEnd = util.resetTime(new Date(date.getTime())).getTime();\n }\n }\n for (var _i = 0, appointments_1 = appointments; _i < appointments_1.length; _i++) {\n var app = appointments_1[_i];\n var appStart = new Date(app[this.fields.startTime].getTime());\n var appEnd = new Date(app[this.fields.endTime].getTime());\n var timeCondition = app[this.fields.isAllDay] ? util.resetTime(appEnd).getTime() > dateStart :\n util.resetTime(appEnd).getTime() >= dateStart;\n if (((util.resetTime(appStart).getTime() <= dateStart) && (timeCondition)) ||\n (util.resetTime(appStart).getTime() >= dateStart) && (util.resetTime(appEnd).getTime() <= dateEnd)) {\n appointmentsList.push(app);\n }\n else if (this.parent.activeViewOptions.orientation === 'Vertical') {\n if (util.resetTime(appStart).getTime() >= dateStart && util.resetTime(appEnd).getTime() >= dateEnd) {\n appointmentsList.push(app);\n }\n }\n }\n return appointmentsList;\n };\n YearEvent.prototype.getMonths = function () {\n var _this = this;\n // eslint-disable-next-line prefer-spread\n return Array.apply(null, { length: this.parent.monthsCount }).map(function (value, index) {\n return _this.parent.firstMonthOfYear + index;\n });\n };\n YearEvent.prototype.removeCellHeight = function () {\n var elementSelector = \".\" + cls.MONTH_HEADER_WRAPPER + \" tbody tr,.\" + cls.RESOURCE_COLUMN_TABLE_CLASS + \" tbody tr,.\" + cls.CONTENT_TABLE_CLASS + \" tbody tr\";\n var rows = [].slice.call(this.element.querySelectorAll(elementSelector));\n for (var _i = 0, rows_1 = rows; _i < rows_1.length; _i++) {\n var row = rows_1[_i];\n row.firstElementChild.style.height = '';\n }\n };\n YearEvent.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n this.parent = null;\n };\n return YearEvent;\n}(TimelineEvent));\nexport { YearEvent };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createElement, closest, Draggable, extend, formatUnit, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { addClass, remove, removeClass, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { ActionBase } from '../actions/action-base';\nimport { MonthEvent } from '../event-renderer/month';\nimport { TimelineEvent } from '../event-renderer/timeline-view';\nimport { YearEvent } from '../event-renderer/year';\nimport { VerticalEvent } from '../event-renderer/vertical-view';\nimport * as cls from '../base/css-constant';\nimport * as events from '../base/constant';\nimport * as util from '../base/util';\nvar MINUTES_PER_DAY = 1440;\n/**\n * Schedule events drag actions\n */\nvar DragAndDrop = /** @class */ (function (_super) {\n __extends(DragAndDrop, _super);\n function DragAndDrop() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.widthUptoCursorPoint = 0;\n _this.heightUptoCursorPoint = 0;\n _this.cursorPointIndex = 0;\n _this.isHeaderRows = false;\n _this.isTimelineDayProcess = false;\n _this.widthPerMinute = 0;\n _this.heightPerMinute = 0;\n _this.minDiff = 0;\n _this.isStepDragging = false;\n _this.isMorePopupOpened = false;\n _this.isAllDayDrag = false;\n _this.isMultiSelect = false;\n _this.multiData = [];\n _this.updatedData = [];\n _this.swagData = [];\n _this.startTime = 0;\n _this.isAllDayTarget = false;\n _this.targetTd = null;\n _this.isCursorAhead = false;\n return _this;\n }\n DragAndDrop.prototype.wireDragEvent = function (element) {\n new Draggable(element, {\n abort: '.' + cls.EVENT_RESIZE_CLASS,\n clone: true,\n isDragScroll: true,\n enableTapHold: this.parent.isAdaptive,\n enableTailMode: (this.parent.eventDragArea) ? true : false,\n cursorAt: (this.parent.eventDragArea) ? { left: -20, top: -20 } : { left: 0, top: 0 },\n dragArea: this.dragArea,\n dragStart: this.dragStart.bind(this),\n drag: this.drag.bind(this),\n dragStop: this.dragStop.bind(this),\n enableAutoScroll: false,\n helper: this.dragHelper.bind(this),\n queryPositionInfo: this.dragPosition.bind(this)\n });\n };\n DragAndDrop.prototype.setDragArea = function () {\n var dragElement = document.querySelector(this.parent.eventDragArea);\n this.dragArea = this.parent.eventDragArea && dragElement ? dragElement :\n this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS);\n };\n DragAndDrop.prototype.dragHelper = function (e) {\n var _this = this;\n this.setDragActionDefaultValues();\n this.actionObj.element = e.element;\n this.actionObj.action = 'drag';\n var elements = [];\n if (!this.parent.allowMultiDrag || isNullOrUndefined(this.parent.selectedElements) || this.parent.selectedElements.length === 0 ||\n (this.parent.selectedElements.length > 0 && this.parent.selectedElements.indexOf(this.actionObj.element) === -1)) {\n elements = [e.element];\n }\n else {\n elements = this.parent.selectedElements;\n this.isMultiSelect = true;\n }\n elements.forEach(function (ele) {\n var cloneElement = _this.createCloneElement(ele);\n if (ele.getAttribute('data-guid') === _this.actionObj.element.getAttribute('data-guid')) {\n _this.actionObj.clone = cloneElement;\n if (!_this.parent.eventDragArea && _this.parent.currentView !== 'Month' &&\n _this.parent.activeViewOptions.timeScale.enable && !_this.parent.activeView.isTimelineView() &&\n !_this.actionObj.element.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS)) {\n setStyleAttribute(_this.actionObj.clone, { cursor: 'move', left: '0%', right: '0%', width: '100%' });\n }\n _this.actionObj.clone.style.top = formatUnit(_this.actionObj.element.offsetTop);\n }\n _this.actionObj.cloneElement.push(cloneElement);\n _this.actionObj.originalElement.push(ele);\n });\n return this.actionObj.clone;\n };\n DragAndDrop.prototype.dragPosition = function (e) {\n if (this.parent.eventDragArea) {\n return { left: e.left, top: e.top };\n }\n var cellHeight = (this.actionObj.cellHeight / this.actionObj.slotInterval) * this.actionObj.interval;\n var leftValue = formatUnit(0);\n if (this.parent.currentView === 'Month') {\n leftValue = e.left;\n }\n var cloneRight;\n if (this.isStepDragging) {\n cloneRight = Math.ceil(this.actionObj.clone.getBoundingClientRect().right) + this.actionObj.interval;\n }\n else {\n cloneRight = this.actionObj.clone.getBoundingClientRect().right;\n }\n var dragArea = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var contentWrapRight = dragArea.getBoundingClientRect().right;\n if (this.parent.activeView.isTimelineView() && this.parent.currentView !== 'TimelineYear' && !this.parent.enableRtl &&\n this.actionObj.pageX > cloneRight && !this.isMorePopupOpened && !(this.actionObj.pageX > contentWrapRight)) {\n this.isCursorAhead = true;\n }\n if (this.parent.activeView.isTimelineView()) {\n leftValue = formatUnit(this.actionObj.clone.offsetLeft);\n }\n var topValue;\n if ((this.parent.activeView.isTimelineView() || !this.parent.timeScale.enable ||\n (!isNullOrUndefined(this.actionObj.clone.offsetParent) &&\n this.actionObj.clone.offsetParent.classList.contains(cls.MORE_EVENT_POPUP_CLASS)))) {\n topValue = formatUnit(this.actionObj.clone.offsetTop);\n }\n else if (this.parent.currentView === 'Month') {\n topValue = formatUnit(0);\n }\n else if (this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS)) {\n topValue = formatUnit(this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS).offsetTop);\n setStyleAttribute(this.actionObj.clone, {\n width: formatUnit(Math.ceil(this.actionObj.clone.offsetWidth / this.actionObj.cellWidth) * this.actionObj.cellWidth),\n right: this.parent.enableRtl && formatUnit(0)\n });\n }\n else {\n if (this.actionObj.element.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS) &&\n !this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS)) {\n setStyleAttribute(this.actionObj.clone, {\n height: formatUnit(this.actionObj.cellHeight),\n width: formatUnit(this.actionObj.cellWidth - 1),\n pointerEvents: 'none'\n });\n }\n var top_1 = parseInt(e.top, 10);\n top_1 = top_1 < 0 ? 0 : top_1;\n topValue = formatUnit(Math.ceil(top_1 / cellHeight) * cellHeight);\n var scrollHeight = this.parent.element.querySelector('.e-content-wrap').scrollHeight;\n var cloneBottom = parseInt(topValue, 10) + this.actionObj.clone.offsetHeight;\n if (cloneBottom > scrollHeight) {\n topValue = (parseInt(topValue, 10) - (cloneBottom - scrollHeight)) + 'px';\n }\n }\n return { left: leftValue, top: topValue };\n };\n DragAndDrop.prototype.setDragActionDefaultValues = function () {\n this.actionObj.action = 'drag';\n this.actionObj.isAllDay = null;\n this.actionObj.slotInterval = this.parent.activeViewOptions.timeScale.interval / this.parent.activeViewOptions.timeScale.slotCount;\n this.actionObj.interval = this.actionObj.slotInterval;\n var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS);\n this.actionObj.cellWidth = workCell.offsetWidth;\n this.actionObj.cellHeight = workCell.offsetHeight;\n };\n DragAndDrop.prototype.dragStart = function (e) {\n var _this = this;\n var eventGuid = this.actionObj.element.getAttribute('data-guid');\n this.actionObj.event = this.parent.eventBase.getEventByGuid(eventGuid);\n var eventObj = extend({}, this.actionObj.event, null, true);\n if (!isNullOrUndefined(eventObj)) {\n this.startTime = eventObj[this.parent.eventFields.startTime].getTime();\n }\n var dragArgs = {\n cancel: false,\n data: eventObj,\n selectedData: this.getSelectedData(),\n event: e,\n excludeSelectors: null,\n element: this.actionObj.element,\n interval: this.actionObj.interval,\n navigation: { enable: false, timeDelay: 2000 },\n scroll: { enable: true, scrollBy: 30, timeDelay: 100 }\n };\n this.parent.trigger(events.dragStart, dragArgs, function (dragEventArgs) {\n if (dragEventArgs.cancel || (!isNullOrUndefined(_this.actionObj.element) &&\n isNullOrUndefined(_this.actionObj.element.parentElement))) {\n var dragObj = _this.actionObj.element.ej2_instances[0];\n if (!isNullOrUndefined(dragObj)) {\n dragObj.intDestroy(e.event);\n }\n _this.actionObj.action = '';\n _this.removeCloneElementClasses();\n _this.removeCloneElement();\n return;\n }\n _this.actionClass('addClass');\n _this.parent.uiStateValues.action = true;\n _this.actionObj.start = eventObj[_this.parent.eventFields.startTime];\n _this.actionObj.end = eventObj[_this.parent.eventFields.endTime];\n _this.actionObj.groupIndex = parseInt(_this.actionObj.element.getAttribute('data-group-index') || '0', 10);\n _this.actionObj.interval = dragEventArgs.interval;\n _this.actionObj.navigation = dragEventArgs.navigation;\n _this.actionObj.scroll = dragEventArgs.scroll;\n _this.actionObj.excludeSelectors = dragEventArgs.excludeSelectors;\n var viewElement = _this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n _this.scrollArgs = { element: viewElement, width: viewElement.scrollWidth, height: viewElement.scrollHeight };\n _this.widthPerMinute = (_this.actionObj.cellWidth / _this.actionObj.slotInterval) * _this.actionObj.interval;\n _this.heightPerMinute = (_this.actionObj.cellHeight / _this.actionObj.slotInterval) * _this.actionObj.interval;\n _this.widthUptoCursorPoint = 0;\n _this.heightUptoCursorPoint = 0;\n _this.cursorPointIndex = -1;\n _this.isHeaderRows = false;\n _this.isTimelineDayProcess = false;\n _this.minDiff = 0;\n _this.isMorePopupOpened = false;\n _this.daysVariation = -1;\n _this.isAllDayTarget = _this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS);\n if ((_this.parent.activeView.isTimelineView() || !_this.parent.timeScale.enable) && _this.parent.currentView !== 'TimelineYear') {\n if (!isNullOrUndefined(_this.actionObj.clone.offsetParent) &&\n _this.actionObj.clone.offsetParent.classList.contains(cls.MORE_EVENT_POPUP_CLASS)) {\n _this.isMorePopupOpened = true;\n }\n _this.actionObj.pageX = e.event.pageX;\n var rows = _this.parent.activeViewOptions.headerRows;\n _this.isHeaderRows = rows.length > 0 && rows[rows.length - 1].option !== 'Hour' &&\n rows[rows.length - 1].option !== 'Date';\n _this.isTimelineDayProcess = !_this.parent.activeViewOptions.timeScale.enable || _this.isHeaderRows ||\n _this.parent.currentView === 'TimelineMonth' || (rows.length > 0 && rows[rows.length - 1].option === 'Date');\n _this.isStepDragging = !_this.isTimelineDayProcess && (_this.actionObj.slotInterval !== _this.actionObj.interval);\n if (_this.isTimelineDayProcess) {\n _this.timelineEventModule = new TimelineEvent(_this.parent, 'day');\n }\n else {\n _this.timelineEventModule = new TimelineEvent(_this.parent, 'hour');\n }\n }\n if (_this.parent.currentView === 'TimelineYear') {\n _this.yearEvent = new YearEvent(_this.parent);\n }\n if (_this.parent.currentView === 'Month') {\n _this.startTime = util.resetTime(new Date(_this.startTime)).getTime();\n _this.updateOriginalElement(_this.actionObj.clone);\n _this.monthEvent = new MonthEvent(_this.parent);\n }\n if (_this.parent.currentView === 'Day' || _this.parent.currentView === 'Week' || _this.parent.currentView === 'WorkWeek') {\n _this.verticalEvent = new VerticalEvent(_this.parent);\n _this.verticalEvent.initializeValues();\n var splitEvents = _this.splitEvent(_this.actionObj.event);\n splitEvents.forEach(function (event) {\n var query = \".e-day-wrapper[data-date=\\\"\" + util.resetTime(event[_this.parent.eventFields.startTime]).getTime() + \"\\\"]\";\n if (_this.parent.activeViewOptions.group.resources.length > 0) {\n query = query.concat('[data-group-index = \"' + _this.actionObj.groupIndex + '\"]');\n }\n var appWrap = _this.parent.element.querySelector(query);\n if (appWrap) {\n var appEle = appWrap.querySelector('[data-id=\"' + _this.actionObj.clone.getAttribute('data-id') + '\"]');\n if (appEle) {\n addClass([appEle], cls.EVENT_ACTION_CLASS);\n }\n }\n });\n }\n });\n };\n DragAndDrop.prototype.getSelectedData = function () {\n if (this.isMultiSelect && this.multiData.length === 0 && this.parent.selectedElements.length > 0) {\n for (var _i = 0, _a = this.parent.selectedElements; _i < _a.length; _i++) {\n var element = _a[_i];\n var eventGuid = element.getAttribute('data-guid');\n var data = this.parent.eventBase.getEventByGuid(eventGuid);\n this.multiData.push(extend({}, data, null, true));\n }\n }\n return this.multiData;\n };\n DragAndDrop.prototype.drag = function (e) {\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide(true);\n }\n if ((!isNullOrUndefined(e.target)) && e.target.classList && e.target.classList.contains(cls.DISABLE_DATES)) {\n return;\n }\n var eventObj = extend({}, this.actionObj.event, null, true);\n var eventArgs = this.parent.eventBase.getPageCoordinates(e);\n this.actionObj.Y = this.actionObj.pageY = eventArgs.pageY;\n this.actionObj.X = this.actionObj.pageX = eventArgs.pageX;\n this.actionObj.target = e.target;\n this.widthUptoCursorPoint = (this.widthUptoCursorPoint === 0) ?\n Math.ceil((Math.abs(this.actionObj.clone.getBoundingClientRect().left - this.actionObj.X) / this.widthPerMinute)) *\n this.widthPerMinute : this.widthUptoCursorPoint;\n this.widthUptoCursorPoint = this.isMorePopupOpened ? this.actionObj.cellWidth : this.widthUptoCursorPoint;\n this.heightUptoCursorPoint = (this.heightUptoCursorPoint === 0) ?\n Math.ceil((Math.abs(this.actionObj.clone.getBoundingClientRect().top - this.actionObj.Y) / this.heightPerMinute)) *\n this.heightPerMinute : this.heightUptoCursorPoint;\n this.isAllDayDrag = (this.parent.activeViewOptions.timeScale.enable) ?\n this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS) :\n this.actionObj.event[this.parent.eventFields.isAllDay];\n if (this.isStepDragging && this.minDiff === 0) {\n this.calculateMinutesDiff(eventObj);\n }\n if ((this.parent.currentView === 'Month' || this.isAllDayDrag) && this.daysVariation < 0) {\n var date = this.parent.getDateFromElement(this.actionObj.target);\n if (!isNullOrUndefined(date)) {\n var currentDate = util.resetTime(date);\n var startDate = util.resetTime(new Date(eventObj[this.parent.eventFields.startTime].getTime()));\n this.daysVariation = (currentDate.getTime() - startDate.getTime()) / util.MS_PER_DAY;\n }\n else {\n this.daysVariation = 0;\n }\n }\n else {\n this.daysVariation = 0;\n }\n if (this.parent.eventDragArea) {\n var targetElement = eventArgs.target;\n this.actionObj.clone.style.top = formatUnit(targetElement.offsetTop);\n this.actionObj.clone.style.left = formatUnit(targetElement.offsetLeft);\n var currentTarget = closest(targetElement, '.' + cls.ROOT);\n if (!currentTarget) {\n this.actionObj.clone.style.height = '';\n this.actionObj.clone.style.width = '';\n }\n else {\n if (!(this.parent.currentView === 'Week' || this.parent.currentView === 'WorkWeek' || this.parent.currentView === 'Day')) {\n this.actionObj.clone.style.width = formatUnit(this.actionObj.element.offsetWidth);\n }\n }\n }\n this.updateScrollPosition(e);\n this.updateNavigatingPosition(e);\n this.updateDraggingDateTime(e);\n var dragArgs = {\n data: eventObj, event: e, element: this.actionObj.element, startTime: this.actionObj.start,\n endTime: this.actionObj.end, selectedData: this.updatedData\n };\n if (this.parent.group.resources.length > 0) {\n dragArgs.groupIndex = this.actionObj.groupIndex;\n }\n this.parent.trigger(events.drag, dragArgs);\n };\n DragAndDrop.prototype.calculateMinutesDiff = function (eventObj) {\n if (this.parent.enableRtl) {\n this.minDiff =\n ((this.actionObj.clone.offsetWidth - this.widthUptoCursorPoint) / this.widthPerMinute) * this.actionObj.interval;\n }\n else {\n this.minDiff = (this.widthUptoCursorPoint / this.widthPerMinute) * this.actionObj.interval;\n }\n var startDate = eventObj[this.parent.eventFields.startTime];\n var startTime = this.parent.activeView.renderDates[0];\n var startEndHours = util.getStartEndHours(startTime, this.parent.activeView.getStartHour(), this.parent.activeView.getEndHour());\n if (startEndHours.startHour.getTime() > startDate.getTime()) {\n this.minDiff = this.minDiff + ((startEndHours.startHour.getTime() - startDate.getTime()) / util.MS_PER_MINUTE);\n }\n };\n DragAndDrop.prototype.dragStop = function (e) {\n var _this = this;\n this.isCursorAhead = false;\n this.removeCloneElementClasses();\n this.removeCloneElement();\n clearInterval(this.actionObj.navigationInterval);\n this.actionObj.navigationInterval = null;\n clearInterval(this.actionObj.scrollInterval);\n this.actionObj.scrollInterval = null;\n this.actionClass('removeClass');\n this.parent.uiStateValues.action = false;\n if (this.isAllowDrop(e)) {\n return;\n }\n var target = (e.target.classList && (!e.target.classList.contains('e-work-cells') && this.parent.cellTemplate) ?\n closest(e.target, '.e-work-cells') : e.target);\n var dragArgs = {\n cancel: false, data: this.getChangedData(this.updatedData), selectedData: this.updatedData,\n event: e, element: this.actionObj.element, target: target\n };\n this.actionObj.action = null;\n this.parent.trigger(events.dragStop, dragArgs, function (dragEventArgs) {\n if (dragEventArgs.cancel) {\n return;\n }\n if (_this.parent.isSpecificResourceEvents()) {\n _this.parent.crudModule.crudObj.isCrudAction = true;\n _this.parent.crudModule.crudObj.sourceEvent =\n [_this.parent.resourceBase.lastResourceLevel[parseInt(dragArgs.element.getAttribute('data-group-index'), 10)]];\n var currentGroupIndex = parseInt(dragArgs.target.getAttribute('data-group-index'), 10) || _this.actionObj.groupIndex;\n _this.parent.crudModule.crudObj.targetEvent =\n [_this.parent.resourceBase.lastResourceLevel[parseInt(currentGroupIndex.toString(), 10)]];\n }\n _this.saveChangedData(dragEventArgs, _this.isMultiSelect);\n });\n this.updatedData = [];\n this.multiData = [];\n this.isMultiSelect = false;\n this.parent.selectedElements = [];\n };\n DragAndDrop.prototype.updateNavigatingPosition = function (e) {\n var _this = this;\n if (this.actionObj.navigation.enable) {\n var currentDate_1 = this.parent.getCurrentTime();\n if (isNullOrUndefined(this.actionObj.navigationInterval)) {\n this.actionObj.navigationInterval = window.setInterval(function () {\n if (currentDate_1) {\n var crtDate = _this.parent.getCurrentTime();\n var end = crtDate.getSeconds();\n var start = currentDate_1.getSeconds() + (_this.actionObj.navigation.timeDelay / 1000);\n start = (start >= 60) ? start - 60 : start;\n if (start === end) {\n currentDate_1 = _this.parent.getCurrentTime();\n _this.viewNavigation(e);\n _this.updateDraggingDateTime(e);\n }\n }\n }, this.actionObj.navigation.timeDelay);\n }\n }\n };\n DragAndDrop.prototype.updateDraggingDateTime = function (e) {\n if (!isNullOrUndefined(this.actionObj.clone.offsetParent) &&\n this.actionObj.clone.offsetParent.classList.contains(cls.MORE_EVENT_POPUP_CLASS)) {\n this.morePopupEventDragging(e);\n }\n else if (this.parent.activeView.isTimelineView() && this.parent.currentView !== 'TimelineYear') {\n this.timelineEventModule.dateRender = this.parent.activeView.renderDates;\n this.timelineEventModule.cellWidth = this.actionObj.cellWidth;\n this.timelineEventModule.getSlotDates();\n this.actionObj.cellWidth = this.isHeaderRows ? this.timelineEventModule.cellWidth :\n this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS).getBoundingClientRect().width;\n this.calculateTimelineTime(e);\n }\n else {\n if (this.parent.currentView === 'Month' || this.parent.currentView === 'TimelineYear') {\n this.calculateVerticalDate(e);\n }\n else {\n this.calculateVerticalTime(e);\n }\n }\n };\n DragAndDrop.prototype.navigationWrapper = function () {\n if (!this.parent.activeView.isTimelineView()) {\n if (this.parent.currentView === 'Month' || !this.parent.timeScale.enable) {\n var outerWrapperCls = [].slice.call(this.parent.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS));\n this.actionObj.index = (this.parent.activeView.renderDates.length < this.actionObj.index) ?\n this.parent.activeView.renderDates.length - 1 : this.actionObj.index;\n var targetWrapper = outerWrapperCls[this.actionObj.index].querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS);\n if (!targetWrapper) {\n targetWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n outerWrapperCls[this.actionObj.index].appendChild(targetWrapper);\n }\n targetWrapper.appendChild(this.actionObj.clone);\n }\n else {\n var wrapperClass = this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS) ?\n '.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS : '.' + cls.APPOINTMENT_WRAPPER_CLASS;\n this.parent.element.querySelectorAll(wrapperClass)\n .item(this.actionObj.index).appendChild(this.actionObj.clone);\n if (wrapperClass === '.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS) {\n var elementHeight = this.getAllDayEventHeight();\n var event_2 = [].slice.call(this.parent.element.querySelectorAll('.' + cls.ALLDAY_CELLS_CLASS + ':first-child'));\n if (event_2[0].offsetHeight < elementHeight) {\n for (var _i = 0, event_1 = event_2; _i < event_1.length; _i++) {\n var e = event_1[_i];\n e.style.height = ((elementHeight + 2) / 12) + 'em';\n }\n }\n this.actionObj.clone.style.height = formatUnit(elementHeight);\n }\n this.actionObj.height = parseInt(this.actionObj.clone.style.height, 10);\n }\n }\n else {\n var outWrapper = void 0;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n outWrapper = this.parent.element.querySelectorAll('.e-appointment-container:not(.e-hidden)').item(this.actionObj.index);\n }\n else {\n outWrapper = this.parent.element.querySelector('.' + cls.APPOINTMENT_CONTAINER_CLASS);\n }\n if (!isNullOrUndefined(outWrapper)) {\n var tarWrapper_1 = outWrapper.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS);\n if (!tarWrapper_1) {\n tarWrapper_1 = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n outWrapper.appendChild(tarWrapper_1);\n }\n this.actionObj.cloneElement.forEach(function (ele) {\n tarWrapper_1.appendChild(ele);\n });\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DragAndDrop.prototype.viewNavigation = function (e) {\n var navigationType;\n var dragArea = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (dragArea && ((!this.scrollEdges.top && !this.scrollEdges.bottom) ||\n closest(this.actionObj.clone, '.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS))) {\n if ((dragArea.scrollLeft === 0) &&\n (Math.round(this.actionObj.X) <=\n Math.round(dragArea.getBoundingClientRect().left + this.actionObj.cellWidth + window.pageXOffset))) {\n navigationType = this.parent.enableRtl ? 'next' : 'previous';\n }\n else if ((Math.round(dragArea.scrollLeft) + dragArea.clientWidth === dragArea.scrollWidth) &&\n (Math.round(this.actionObj.X) >=\n Math.round(dragArea.getBoundingClientRect().right - this.actionObj.cellWidth + window.pageXOffset))) {\n navigationType = this.parent.enableRtl ? 'previous' : 'next';\n }\n if (navigationType) {\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate(navigationType));\n }\n }\n };\n DragAndDrop.prototype.morePopupEventDragging = function (e) {\n if (isNullOrUndefined(e.target) || (e.target && isNullOrUndefined(closest(e.target, 'td')))) {\n return;\n }\n var eventObj = extend({}, this.actionObj.event, null, true);\n var eventDuration = eventObj[this.parent.eventFields.endTime].getTime() -\n eventObj[this.parent.eventFields.startTime].getTime();\n var td = closest(e.target, 'td');\n if (this.parent.currentView === 'TimelineYear' && (!td.classList.contains(cls.WORK_CELLS_CLASS) || td.classList.contains(cls.OTHERMONTH_CLASS))) {\n return;\n }\n var dragStart = this.parent.getDateFromElement(td);\n var dragEnd = new Date(dragStart.getTime());\n dragEnd.setMilliseconds(eventDuration);\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.actionObj.groupIndex = parseInt(td.getAttribute('data-group-index'), 10);\n }\n this.actionObj.start = new Date(dragStart.getTime());\n this.actionObj.end = new Date(dragEnd.getTime());\n this.actionObj.clone.style.top = formatUnit(td.offsetParent.offsetTop);\n this.actionObj.clone.style.left = formatUnit(td.offsetLeft);\n this.actionObj.clone.style.width = formatUnit(td.offsetWidth);\n var eventContainer = td;\n var eventWrapper;\n if (this.parent.activeView.isTimelineView()) {\n var rowIndex = closest(td, 'tr').rowIndex;\n eventContainer = this.parent.element.querySelectorAll('.e-appointment-container').item(rowIndex);\n }\n eventWrapper = eventContainer.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS);\n if (!eventWrapper) {\n eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n eventContainer.appendChild(eventWrapper);\n }\n this.appendCloneElement(eventWrapper);\n };\n DragAndDrop.prototype.calculateVerticalTime = function (e) {\n var _this = this;\n if (isNullOrUndefined(this.actionObj.target) ||\n (this.actionObj.target && isNullOrUndefined(closest(this.actionObj.target, 'tr'))) ||\n (!isNullOrUndefined(closest(this.actionObj.target, 'td')) && !(closest(this.actionObj.target, 'td').classList.contains(cls.WORK_CELLS_CLASS)) &&\n !(closest(this.actionObj.target, 'td').classList.contains(cls.ALLDAY_CELLS_CLASS)))) {\n return;\n }\n if (this.parent.activeViewOptions.timeScale.enable) {\n this.swapDragging(e);\n }\n var dragArea = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var eventObj = extend({}, this.actionObj.event, null, true);\n var eventStart = eventObj[this.parent.eventFields.startTime];\n var eventEnd = eventObj[this.parent.eventFields.endTime];\n var eventDuration = util.getUniversalTime(eventEnd) - util.getUniversalTime(eventStart);\n var offsetTop = Math.floor(parseInt(this.actionObj.clone.style.top, 10) / this.actionObj.cellHeight)\n * this.actionObj.cellHeight;\n offsetTop = offsetTop < 0 ? 0 : offsetTop;\n if (this.scrollEdges.top || this.scrollEdges.bottom) {\n offsetTop = this.scrollEdges.top ? dragArea.scrollTop - this.heightUptoCursorPoint +\n this.actionObj.cellHeight + window.pageYOffset :\n (dragArea.scrollTop + dragArea.offsetHeight - this.actionObj.clone.offsetHeight + window.pageYOffset) +\n (this.actionObj.clone.offsetHeight - this.heightUptoCursorPoint);\n offsetTop = Math.round(offsetTop / this.actionObj.cellHeight) * this.actionObj.cellHeight;\n if (dragArea.scrollTop > 0) {\n this.actionObj.clone.style.top = formatUnit(offsetTop);\n }\n }\n var rowIndex = (this.parent.activeViewOptions.timeScale.enable) ? (offsetTop / this.actionObj.cellHeight) : 0;\n var heightPerMinute = this.actionObj.cellHeight / this.actionObj.slotInterval;\n var diffInMinutes = parseInt(this.actionObj.clone.style.top, 10) - offsetTop;\n var tr;\n if (this.isAllDayDrag) {\n tr = this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS);\n }\n else {\n var trCollections = [].slice.call(this.parent.getContentTable().querySelectorAll('tr'));\n tr = trCollections[parseInt(rowIndex.toString(), 10)];\n }\n var index;\n if (!isNullOrUndefined(closest(this.actionObj.target, 'td')) && (closest(this.actionObj.target, 'td').classList.contains(cls.WORK_CELLS_CLASS) ||\n closest(this.actionObj.target, 'td').classList.contains(cls.ALLDAY_CELLS_CLASS))) {\n index = closest(this.actionObj.target, 'td').cellIndex;\n }\n var colIndex = isNullOrUndefined(index) ? closest(this.actionObj.clone, 'td').cellIndex : index;\n this.actionObj.index = colIndex;\n if (isNullOrUndefined(tr)) {\n return;\n }\n var td = tr.children[parseInt(colIndex.toString(), 10)];\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n this.actionObj.groupIndex = parseInt(td.getAttribute('data-group-index'), 10);\n }\n var dragStart;\n var dragEnd;\n if (this.parent.activeViewOptions.timeScale.enable && !this.isAllDayDrag) {\n this.appendCloneElement(this.getEventWrapper(colIndex));\n dragStart = this.parent.getDateFromElement(td);\n dragStart.setMinutes(dragStart.getMinutes() + (diffInMinutes / heightPerMinute));\n dragEnd = new Date(dragStart.getTime());\n if (this.actionObj.element.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS)) {\n dragEnd.setMinutes(dragEnd.getMinutes() + this.actionObj.slotInterval);\n }\n else {\n dragEnd.setMilliseconds(eventDuration);\n }\n }\n else {\n dragStart = this.parent.getDateFromElement(td);\n dragStart.setDate(dragStart.getDate() - this.daysVariation);\n dragStart.setHours(eventStart.getHours(), eventStart.getMinutes(), eventStart.getSeconds());\n dragEnd = new Date(dragStart.getTime());\n dragEnd.setMilliseconds(eventDuration);\n if (!this.actionObj.element.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS) &&\n this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS)) {\n dragEnd = util.addDays(util.resetTime(dragEnd), 1);\n }\n var index_1 = this.parent.activeViewOptions.group.byDate || (this.parent.virtualScrollModule &&\n !this.parent.activeViewOptions.timeScale.enable) ? colIndex : undefined;\n this.updateAllDayEvents(dragStart, dragEnd, index_1);\n }\n this.actionObj.start = new Date(+dragStart);\n this.actionObj.end = new Date(+dragEnd);\n var event = this.getUpdatedEvent(this.actionObj.start, this.actionObj.end, this.actionObj.event);\n var dynamicWrappers = [].slice.call(this.parent.element.querySelectorAll('.e-dynamic-clone'));\n for (var _i = 0, dynamicWrappers_1 = dynamicWrappers; _i < dynamicWrappers_1.length; _i++) {\n var wrapper = dynamicWrappers_1[_i];\n remove(wrapper);\n }\n if (this.multiData.length > 0) {\n if (this.isAllDayTarget && this.isAllDayDrag && !isNullOrUndefined(this.actionObj.isAllDay) && !this.actionObj.isAllDay) {\n var targetCellTime_1 = parseInt((closest(this.actionObj.target, 'td')).getAttribute('data-date'), 10);\n this.multiData.forEach(function (data) {\n _this.swagData.push(extend({}, data, null, true));\n if (data[_this.parent.eventFields.isAllDay]) {\n data[_this.parent.eventFields.startTime] =\n new Date(data[_this.parent.eventFields.startTime].getTime() + (targetCellTime_1 - _this.startTime));\n var startTime = new Date(data[_this.parent.eventFields.startTime]);\n var endTime = new Date(startTime.setMinutes(startTime.getMinutes() + _this.actionObj.slotInterval));\n data[_this.parent.eventFields.endTime] = endTime;\n data[_this.parent.eventFields.isAllDay] = false;\n }\n });\n this.startTime = targetCellTime_1;\n }\n if (this.isAllDayTarget && this.isAllDayDrag &&\n !isNullOrUndefined(this.actionObj.isAllDay) && this.actionObj.isAllDay && this.swagData.length > 0) {\n this.multiData = this.swagData;\n this.swagData = [];\n var eventObj_1 = extend({}, this.actionObj.event, null, true);\n this.startTime = eventObj_1[this.parent.eventFields.startTime].getTime();\n }\n var startTimeDiff = event[this.parent.eventFields.startTime].getTime() - this.startTime;\n for (var index_2 = 0; index_2 < this.multiData.length; index_2++) {\n this.updatedData[parseInt(index_2.toString(), 10)] =\n this.updateMultipleData(this.multiData[parseInt(index_2.toString(), 10)], startTimeDiff);\n var dayIndex = this.getDayIndex(this.updatedData[parseInt(index_2.toString(), 10)]);\n if (dayIndex >= 0) {\n var wrapper = this.getEventWrapper(dayIndex, this.updatedData[parseInt(index_2.toString(), 10)][this.parent.eventFields.isAllDay]);\n this.appendCloneElement(wrapper, this.actionObj.cloneElement[parseInt(index_2.toString(), 10)]);\n this.updateEventHeight(this.updatedData[parseInt(index_2.toString(), 10)], index_2, dayIndex);\n }\n else {\n if (!isNullOrUndefined(this.actionObj.cloneElement[parseInt(index_2.toString(), 10)].parentNode)) {\n remove(this.actionObj.cloneElement[parseInt(index_2.toString(), 10)]);\n }\n }\n }\n }\n else {\n this.updateEventHeight(event);\n }\n this.updateTimePosition(this.actionObj.start, this.updatedData);\n };\n DragAndDrop.prototype.splitEvent = function (event) {\n var eventFields = this.parent.eventFields;\n var eventData = [];\n var startTime = event[eventFields.startTime];\n var endTime = event[eventFields.endTime];\n if (util.resetTime(new Date(startTime.getTime())) < util.resetTime(new Date(endTime.getTime()))) {\n var startReferenceDate = util.resetTime(new Date(startTime.getTime()));\n var endReferenceDate = new Date(startReferenceDate.getTime());\n for (var i = 0; startReferenceDate < new Date(endTime.getTime()); i++) {\n endReferenceDate = new Date(endReferenceDate.setDate(startReferenceDate.getDate() + 1));\n var eventObj = extend({}, event, null, true);\n eventObj[eventFields.startTime] = new Date(startReferenceDate);\n eventObj[eventFields.endTime] = new Date(endReferenceDate);\n startReferenceDate = new Date(startReferenceDate.setDate(startReferenceDate.getDate() + 1));\n eventData.push(eventObj);\n }\n var index = eventData.length - 1;\n eventData[0][eventFields.startTime] = startTime;\n eventData[parseInt(index.toString(), 10)][eventFields.endTime] = endTime;\n }\n else {\n eventData.push(event);\n }\n return eventData;\n };\n DragAndDrop.prototype.updateMultipleData = function (data, timeDifference) {\n var eventObj = extend({}, data, null, true);\n if (!isNullOrUndefined(this.actionObj.isAllDay) && this.parent.activeViewOptions.timeScale.enable &&\n ((this.isAllDayTarget && eventObj[this.parent.eventFields.isAllDay]) ||\n (!this.isAllDayTarget && !eventObj[this.parent.eventFields.isAllDay]))) {\n eventObj[this.parent.eventFields.isAllDay] = this.actionObj.isAllDay;\n }\n var endTimeDiff = eventObj[this.parent.eventFields.endTime].getTime() -\n eventObj[this.parent.eventFields.startTime].getTime();\n if (eventObj[this.parent.eventFields.isAllDay]) {\n var differInDays = Math.ceil(timeDifference / (1000 * 3600 * 24));\n var day = Math.ceil(endTimeDiff / (1000 * 3600 * 24));\n var startTime = new Date(eventObj[this.parent.eventFields.startTime]);\n eventObj[this.parent.eventFields.startTime] = util.resetTime(new Date(startTime.setDate(startTime.getDate() + differInDays)));\n eventObj[this.parent.eventFields.endTime] = util.addDays(eventObj[this.parent.eventFields.startTime], day);\n }\n else {\n eventObj[this.parent.eventFields.startTime] =\n new Date(eventObj[this.parent.eventFields.startTime].getTime() + timeDifference);\n eventObj[this.parent.eventFields.endTime] =\n new Date(eventObj[this.parent.eventFields.startTime].getTime() + endTimeDiff);\n }\n return eventObj;\n };\n DragAndDrop.prototype.getDayIndex = function (event) {\n var eventObj = extend({}, event, null, true);\n var startDate = util.resetTime(eventObj[this.parent.eventFields.startTime]);\n if (this.parent.activeViewOptions.timeScale.enable && !eventObj[this.parent.eventFields.isAllDay]) {\n var startHour = this.parent.activeView.getStartHour();\n startDate.setMilliseconds(startHour.getTime() - util.resetTime(startHour).getTime());\n }\n var startTime = startDate.getTime();\n var query = '';\n var wrapper = cls.DAY_WRAPPER_CLASS;\n if (this.parent.activeViewOptions.timeScale.enable && (eventObj[this.parent.eventFields.isAllDay])) {\n wrapper = cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS;\n }\n else {\n wrapper = cls.WORK_CELLS_CLASS;\n }\n query = '.' + wrapper + '[data-date=\"' + startTime + '\"]';\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n query = query + '[data-group-index=\"' + this.actionObj.groupIndex + '\"]';\n }\n this.targetTd = this.parent.element.querySelector(query);\n if (isNullOrUndefined(this.targetTd)) {\n return -1;\n }\n return this.targetTd.cellIndex;\n };\n DragAndDrop.prototype.updateEventHeight = function (event, index, colIndex) {\n this.verticalEvent.initializeValues();\n var datesCount = this.verticalEvent.getStartCount();\n if (!this.parent.uiStateValues.isGroupAdaptive) {\n for (var i = 0; i < this.actionObj.groupIndex; i++) {\n if (this.verticalEvent.dateRender[parseInt(i.toString(), 10)]) {\n datesCount = datesCount + this.verticalEvent.dateRender[parseInt(i.toString(), 10)].length;\n }\n }\n }\n var indexGroup = this.parent.uiStateValues.isGroupAdaptive ? datesCount : this.actionObj.groupIndex;\n var target = (this.parent.activeViewOptions.group.byDate &&\n !isNullOrUndefined(this.parent.getDateFromElement(this.actionObj.target))) ? true : false;\n if (target || !this.parent.activeViewOptions.group.byDate) {\n var dynamicIndex = -1;\n var dayIndex = !this.parent.activeViewOptions.group.byDate ?\n isNullOrUndefined(index) ? this.actionObj.index - datesCount : colIndex - datesCount\n : this.parent.getIndexOfDate(this.verticalEvent.dateRender[parseInt(indexGroup.toString(), 10)], util.resetTime(\n // eslint-disable-next-line max-len\n this.parent.getDateFromElement(isNullOrUndefined(index) ? this.actionObj.target : this.targetTd)));\n var splitEvents = this.splitEvent(event);\n var events_1 = this.parent.eventBase.isAllDayAppointment(event) || splitEvents.length > 2 ||\n this.parent.eventSettings.spannedEventPlacement !== 'TimeSlot' ? [event] : splitEvents;\n for (var i = 0; i < events_1.length; i++) {\n if (i > 0) {\n var filterQuery = \".e-day-wrapper[data-date=\\\"\" + util.resetTime(events_1[parseInt(i.toString(), 10)][this.parent.eventFields.startTime]).getTime() + \"\\\"]\";\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n filterQuery = filterQuery.concat('[data-group-index = \"' + this.actionObj.groupIndex + '\"]');\n }\n var appWrap = this.parent.element.querySelector(filterQuery);\n if (appWrap) {\n dayIndex = dayIndex + 1;\n dynamicIndex = appWrap.cellIndex;\n }\n else {\n dayIndex = -1;\n }\n }\n if (dayIndex >= 0) {\n var record = this.verticalEvent.isSpannedEvent(events_1[parseInt(i.toString(), 10)], dayIndex, indexGroup);\n var eStart = record[this.verticalEvent.fields.startTime];\n var eEnd = record[this.verticalEvent.fields.endTime];\n var appHeight = this.parent.activeViewOptions.timeScale.enable ? this.verticalEvent.getHeight(eStart, eEnd) :\n this.actionObj.element.offsetHeight;\n var topValue = this.parent.activeViewOptions.timeScale.enable ?\n this.verticalEvent.getTopValue(eStart, dayIndex, indexGroup) : this.actionObj.element.offsetTop;\n if (isNullOrUndefined(index)) {\n if (i === 0) {\n this.actionObj.clone.style.top = formatUnit(topValue);\n this.actionObj.clone.style.height = formatUnit(appHeight);\n }\n else {\n this.renderSpannedEvents(record, dynamicIndex, topValue, appHeight);\n }\n }\n else {\n var appWidth = this.actionObj.cellWidth;\n if (event[this.parent.eventFields.isAllDay]) {\n topValue = this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS).offsetTop;\n appHeight = this.getAllDayEventHeight();\n var timeDiff = event[this.parent.eventFields.endTime].getTime() -\n event[this.parent.eventFields.startTime].getTime();\n var allDayDifference = Math.ceil(timeDiff / (1000 * 3600 * 24));\n if (allDayDifference >= 0) {\n appWidth = (allDayDifference * this.actionObj.cellWidth);\n }\n }\n if (this.actionObj.cloneElement[parseInt(index.toString(), 10)]) {\n if (i === 0) {\n this.actionObj.cloneElement[parseInt(index.toString(), 10)].style.top = formatUnit(topValue);\n this.actionObj.cloneElement[parseInt(index.toString(), 10)].style.height = formatUnit(appHeight);\n this.actionObj.cloneElement[parseInt(index.toString(), 10)].style.width = formatUnit(appWidth);\n this.actionObj.cloneElement[parseInt(index.toString(), 10)].style.left = formatUnit(0);\n }\n else {\n this.renderSpannedEvents(record, dynamicIndex, topValue, appHeight);\n }\n }\n }\n }\n }\n }\n };\n DragAndDrop.prototype.renderSpannedEvents = function (record, index, top, height) {\n var startTime = record[this.parent.eventFields.startTime].getTime();\n var endTime = record[this.parent.eventFields.endTime].getTime();\n if (startTime !== endTime) {\n var appointmentElement = this.verticalEvent.\n createAppointmentElement(record, false, record.isSpanned, this.actionObj.groupIndex);\n addClass([appointmentElement], [cls.CLONE_ELEMENT_CLASS, 'e-dynamic-clone']);\n setStyleAttribute(appointmentElement, {\n 'width': '100%',\n 'height': height + 'px',\n 'top': top + 'px',\n 'border': '0px'\n });\n var appointmentWrap = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_WRAPPER_CLASS));\n appointmentWrap[parseInt(index.toString(), 10)].appendChild(appointmentElement);\n }\n };\n DragAndDrop.prototype.getRenderedDates = function () {\n var _this = this;\n var _a, _b;\n var renderDates = this.parent.activeView.renderDates;\n (_a = this.parent.eventBase.slots).push.apply(_a, this.parent.activeView.renderDates.map(function (date) { return +date; }));\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.parent.eventBase.slots = [];\n var resources = this.parent.resourceBase.lastResourceLevel.\n filter(function (res) { return res.groupIndex === _this.actionObj.groupIndex; });\n renderDates = resources[0].renderDates;\n (_b = this.parent.eventBase.slots).push.apply(_b, renderDates.map(function (date) { return +date; }));\n }\n return renderDates;\n };\n DragAndDrop.prototype.updateAllDayEvents = function (startDate, endDate, colIndex) {\n this.parent.eventBase.slots = [];\n var event = this.getUpdatedEvent(startDate, endDate, this.actionObj.event);\n var renderDates = this.getRenderedDates();\n var events = this.parent.eventBase.splitEvent(event, renderDates);\n var query = \".e-all-day-cells[data-date=\\\"\" + events[0][this.parent.eventFields.startTime].getTime() + \"\\\"]\";\n if (this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n query = query.concat('[data-group-index = \"' + this.actionObj.groupIndex + '\"]');\n }\n var cell = [].slice.call(this.parent.element.querySelectorAll(query));\n if (cell.length > 0 || !isNullOrUndefined(colIndex)) {\n var cellIndex = !isNullOrUndefined(colIndex) ? colIndex : cell[0].cellIndex;\n this.appendCloneElement(this.getEventWrapper(cellIndex));\n // eslint-disable-next-line max-len\n this.actionObj.clone.style.width = formatUnit(events[0].data.count * this.actionObj.cellWidth);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DragAndDrop.prototype.swapDragging = function (e) {\n var colIndex = !isNullOrUndefined(closest(this.actionObj.target, 'td')) && closest(this.actionObj.target, 'td').cellIndex;\n if (closest(this.actionObj.target, '.' + cls.DATE_HEADER_WRAP_CLASS) &&\n !closest(this.actionObj.clone, '.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS)) {\n addClass([this.actionObj.clone], cls.ALLDAY_APPOINTMENT_CLASS);\n this.appendCloneElement(this.getEventWrapper(colIndex));\n this.actionObj.isAllDay = true;\n var eventHeight = this.getAllDayEventHeight();\n var allDayElement = [].slice.call(this.parent.element.querySelectorAll('.' + cls.ALLDAY_CELLS_CLASS + ':first-child'));\n if (allDayElement[0].offsetHeight < eventHeight) {\n for (var _i = 0, allDayElement_1 = allDayElement; _i < allDayElement_1.length; _i++) {\n var element = allDayElement_1[_i];\n element.style.height = ((eventHeight + 2) / 12) + 'em';\n }\n }\n setStyleAttribute(this.actionObj.clone, {\n width: formatUnit(this.actionObj.cellWidth),\n height: formatUnit(eventHeight),\n top: formatUnit(this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS).offsetTop)\n });\n }\n if (closest(this.actionObj.target, '.' + cls.WORK_CELLS_CLASS) &&\n !closest(this.actionObj.clone, '.' + cls.DAY_WRAPPER_CLASS)) {\n removeClass([this.actionObj.clone], cls.ALLDAY_APPOINTMENT_CLASS);\n this.appendCloneElement(this.getEventWrapper(colIndex));\n this.actionObj.isAllDay = false;\n // eslint-disable-next-line max-len\n var height = (this.actionObj.element.offsetHeight === 0) ? this.actionObj.height : this.actionObj.element.offsetHeight;\n setStyleAttribute(this.actionObj.clone, {\n left: formatUnit(0),\n height: formatUnit(height),\n width: formatUnit(this.actionObj.cellWidth)\n });\n }\n };\n DragAndDrop.prototype.calculateVerticalDate = function (e) {\n if (isNullOrUndefined(e.target) || (e.target && isNullOrUndefined(closest(e.target, 'tr'))) ||\n (e.target && e.target.tagName === 'DIV')) {\n return;\n }\n var eventObj = extend({}, this.actionObj.event, null, true);\n if (isNullOrUndefined(this.parent.eventDragArea)) {\n this.removeCloneElement();\n }\n var eventDuration = util.getUniversalTime(eventObj[this.parent.eventFields.endTime]) -\n util.getUniversalTime(eventObj[this.parent.eventFields.startTime]);\n var td = closest(this.actionObj.target, 'td');\n if (!isNullOrUndefined(td)) {\n var tr = td.parentElement;\n this.actionObj.index = (tr.rowIndex * tr.children.length) + td.cellIndex;\n var workCells = [].slice.call(this.parent.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS));\n td = workCells[this.actionObj.index];\n var currentDate = this.parent.getDateFromElement(td);\n if (!isNullOrUndefined(currentDate)) {\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.actionObj.groupIndex = parseInt(td.getAttribute('data-group-index'), 10);\n }\n var timeString = new Date(currentDate.setDate(currentDate.getDate() - this.daysVariation));\n var dragStart = new Date(timeString.getTime());\n var startTimeDiff = util.getUniversalTime(eventObj[this.parent.eventFields.startTime]) -\n util.getUniversalTime(util.resetTime(new Date(+eventObj[this.parent.eventFields.startTime])));\n dragStart.setMilliseconds(startTimeDiff);\n var dragEnd = new Date(dragStart.getTime());\n dragEnd.setMilliseconds(eventDuration);\n this.actionObj.start = new Date(dragStart.getTime());\n this.actionObj.end = new Date(dragEnd.getTime());\n }\n }\n var event = this.getUpdatedEvent(this.actionObj.start, this.actionObj.end, this.actionObj.event);\n if (isNullOrUndefined(this.parent.eventDragArea)) {\n var eventWrappers = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CLONE_ELEMENT_CLASS));\n for (var _i = 0, eventWrappers_1 = eventWrappers; _i < eventWrappers_1.length; _i++) {\n var wrapper = eventWrappers_1[_i];\n remove(wrapper);\n }\n }\n if (this.multiData && this.multiData.length > 0) {\n var startTime = util.resetTime(new Date(event[this.parent.eventFields.startTime]));\n var startTimeDiff = startTime.getTime() - this.startTime;\n if (this.parent.currentView === 'TimelineYear' && this.parent.group.resources.length > 0) {\n startTimeDiff = (startTime.getFullYear() - new Date(this.startTime).getFullYear()) * 12;\n startTimeDiff -= new Date(this.startTime).getMonth();\n startTimeDiff += startTime.getMonth();\n }\n for (var index = 0; index < this.multiData.length; index++) {\n this.updatedData[parseInt(index.toString(), 10)] =\n this.updateMultipleVerticalDate(this.multiData[parseInt(index.toString(), 10)], startTimeDiff);\n if (this.parent.currentView === 'TimelineYear') {\n this.dynamicYearlyEventsRendering(this.updatedData[parseInt(index.toString(), 10)]);\n }\n else {\n this.dynamicEventsRendering(this.updatedData[parseInt(index.toString(), 10)]);\n }\n }\n }\n else {\n if (this.parent.currentView === 'TimelineYear') {\n this.dynamicYearlyEventsRendering(event);\n }\n else {\n this.dynamicEventsRendering(event);\n }\n }\n };\n DragAndDrop.prototype.updateMultipleVerticalDate = function (data, timeDifference) {\n var eventObj = extend({}, data, null, true);\n var eventDuration = eventObj[this.parent.eventFields.endTime].getTime() -\n eventObj[this.parent.eventFields.startTime].getTime();\n var startDate = new Date(eventObj[this.parent.eventFields.startTime]);\n if (this.parent.currentView === 'TimelineYear' && this.parent.group.resources.length > 0) {\n eventObj[this.parent.eventFields.startTime] = new Date(startDate.setMonth(startDate.getMonth() + timeDifference));\n }\n else {\n var differInDays = Math.ceil(timeDifference / util.MS_PER_DAY);\n eventObj[this.parent.eventFields.startTime] = new Date(startDate.setDate(startDate.getDate() + differInDays));\n }\n eventObj[this.parent.eventFields.endTime] =\n new Date(eventObj[this.parent.eventFields.startTime].getTime() + eventDuration);\n return eventObj;\n };\n DragAndDrop.prototype.calculateTimelineTime = function (e) {\n var eventObj = extend({}, this.actionObj.event, null, true);\n var eventDuration = util.getUniversalTime(eventObj[this.parent.eventFields.endTime]) -\n util.getUniversalTime(eventObj[this.parent.eventFields.startTime]);\n var offsetLeft = this.parent.enableRtl ? Math.abs(this.actionObj.clone.offsetLeft) - this.actionObj.clone.offsetWidth :\n parseInt(this.actionObj.clone.style.left, 10);\n offsetLeft = Math.floor(offsetLeft / Math.trunc(this.actionObj.cellWidth)) * this.actionObj.cellWidth;\n var rightOffset;\n if (this.parent.enableRtl) {\n rightOffset = Math.abs(parseInt(this.actionObj.clone.style.right, 10));\n this.actionObj.clone.style.right = formatUnit(rightOffset);\n }\n offsetLeft = this.getOffsetValue(offsetLeft, rightOffset);\n var colIndex = this.getColumnIndex(offsetLeft);\n var dragArea = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var contentWrapRight = dragArea.getBoundingClientRect().right;\n var cursorDrag = this.parent.activeView.isTimelineView() && !this.parent.enableRtl &&\n this.actionObj.pageX > this.actionObj.clone.getBoundingClientRect().right &&\n !this.isMorePopupOpened && !(this.actionObj.pageX > contentWrapRight);\n var leftVal = (this.parent.eventDragArea) ? dragArea.scrollLeft - dragArea.offsetLeft : 0;\n if ((this.isCursorAhead || cursorDrag) && !this.isStepDragging) {\n this.isCursorAhead = true;\n }\n var cloneIndex = Math.floor((this.actionObj.pageX - this.actionObj.clone.getBoundingClientRect().left + leftVal) / this.actionObj.cellWidth);\n if (this.parent.enableRtl) {\n cloneIndex = Math.abs(Math.floor((this.actionObj.pageX - this.actionObj.clone.getBoundingClientRect().right) /\n this.actionObj.cellWidth)) - 1;\n }\n if (this.cursorPointIndex < 0) {\n this.cursorIndex(e, eventObj, offsetLeft, cloneIndex);\n }\n var tr = this.parent.getContentTable().querySelector('tr');\n var index = this.getCursorCurrentIndex(colIndex, cloneIndex, tr);\n index = index < 0 ? 0 : index;\n var eventStart = this.isHeaderRows ? new Date(this.timelineEventModule.dateRender[parseInt(index.toString(), 10)].getTime()) :\n this.parent.getDateFromElement(tr.children[parseInt(index.toString(), 10)]);\n if (this.isStepDragging) {\n var widthDiff = this.getWidthDiff(tr, index);\n if (widthDiff !== 0) {\n var timeDiff = Math.round(widthDiff / this.widthPerMinute);\n eventStart.setMinutes(eventStart.getMinutes() + (timeDiff * this.actionObj.interval));\n if (this.isCursorAhead || cursorDrag) {\n eventStart.setMilliseconds(-(eventDuration));\n }\n else {\n eventStart.setMinutes(eventStart.getMinutes() - this.minDiff);\n }\n }\n else {\n eventStart = this.actionObj.start;\n }\n }\n else {\n if (this.isCursorAhead || cursorDrag) {\n var minutes = this.isTimelineDayProcess ? MINUTES_PER_DAY : this.actionObj.slotInterval;\n eventStart.setMinutes(eventStart.getMinutes() + minutes);\n eventStart.setMilliseconds(-(eventDuration));\n if (eventStart.getTime() === util.resetTime(eventStart).getTime() && eventStart.getMinutes() === 0 && eventDuration === 0) {\n eventStart.setMinutes(-minutes);\n }\n }\n else {\n eventStart.setMinutes(eventStart.getMinutes() -\n (this.cursorPointIndex * (this.isTimelineDayProcess ? MINUTES_PER_DAY : this.actionObj.slotInterval)));\n }\n }\n eventStart = this.calculateIntervalTime(eventStart);\n if (this.isTimelineDayProcess) {\n var eventSrt = eventObj[this.parent.eventFields.startTime];\n eventStart.setHours(eventSrt.getHours(), eventSrt.getMinutes(), eventSrt.getSeconds());\n }\n if (this.parent.eventDragArea) {\n var targetDate = this.parent.getDateFromElement(e.target);\n if (!isNullOrUndefined(targetDate)) {\n if (!this.parent.activeViewOptions.timeScale.enable || (this.parent.currentView === 'TimelineMonth')) {\n var eventSrt = eventObj[this.parent.eventFields.startTime];\n eventStart = new Date(targetDate.setHours(eventSrt.getHours(), eventSrt.getMinutes(), eventSrt.getSeconds()));\n }\n else {\n eventStart = targetDate;\n }\n }\n }\n var eventEnd = new Date(eventStart.getTime());\n eventEnd.setMilliseconds(eventDuration);\n var eventsData = [this.getUpdatedEvent(eventStart, eventEnd, this.actionObj.event)];\n if (this.multiData.length > 0) {\n var startTimeDiff = eventsData[0][this.parent.eventFields.startTime].getTime() - this.startTime;\n for (var i = 0; i < this.multiData.length; i++) {\n this.updatedData[parseInt(i.toString(), 10)] =\n this.updateMultipleData(this.multiData[parseInt(i.toString(), 10)], startTimeDiff);\n }\n eventsData = this.updatedData;\n }\n for (var dataIndex = 0; dataIndex < eventsData.length; dataIndex++) {\n var cloneElement = this.multiData.length > 0 ? this.actionObj.cloneElement[parseInt(dataIndex.toString(), 10)] : this.actionObj.clone;\n if (isNullOrUndefined(this.parent.eventDragArea)) {\n var events_2 = this.timelineEventModule.splitEvent(eventsData[parseInt(dataIndex.toString(), 10)], this.timelineEventModule.dateRender);\n var eventData = events_2[0].data;\n var startTime = this.timelineEventModule.getStartTime(events_2[0], eventData);\n var endTime = this.timelineEventModule.getEndTime(events_2[0], eventData);\n // eslint-disable-next-line max-len\n var width = this.timelineEventModule.getEventWidth(startTime, endTime, eventObj[this.parent.eventFields.isAllDay], eventData.count);\n // eslint-disable-next-line max-len\n var day = this.parent.getIndexOfDate(this.timelineEventModule.dateRender, util.resetTime(new Date(startTime.getTime())));\n day = day < 0 ? 0 : day;\n var left = this.timelineEventModule.getPosition(startTime, endTime, eventObj[this.parent.eventFields.isAllDay], day);\n if (this.parent.enableRtl) {\n cloneElement.style.right = formatUnit(left);\n }\n else {\n cloneElement.style.left = formatUnit(left);\n }\n if (!this.isMorePopupOpened) {\n cloneElement.style.width = formatUnit(width);\n }\n }\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n this.calculateResourceGroupingPosition(e, cloneElement);\n }\n this.actionObj.start = new Date(eventStart.getTime());\n this.actionObj.end = new Date(eventEnd.getTime());\n this.updateTimePosition(this.actionObj.start, this.updatedData);\n }\n };\n DragAndDrop.prototype.getOffsetValue = function (offsetLeft, rightOffset) {\n if (this.scrollEdges.left || this.scrollEdges.right) {\n var viewEle = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (this.parent.enableRtl) {\n rightOffset = viewEle.offsetWidth - viewEle.scrollLeft;\n if (this.scrollEdges.right) {\n rightOffset = (rightOffset - viewEle.offsetWidth + this.actionObj.clone.offsetWidth) -\n (this.actionObj.clone.offsetWidth - this.widthUptoCursorPoint);\n }\n else {\n rightOffset = rightOffset + this.widthUptoCursorPoint;\n if (rightOffset - this.widthUptoCursorPoint >= viewEle.scrollWidth) {\n this.actionObj.clone.style.width =\n formatUnit(this.actionObj.clone.offsetWidth - this.widthUptoCursorPoint + this.actionObj.cellWidth);\n rightOffset = (viewEle.scrollLeft - viewEle.scrollWidth);\n }\n }\n if (isNullOrUndefined(this.parent.eventDragArea)) {\n this.actionObj.clone.style.left = formatUnit(rightOffset);\n }\n }\n else {\n if (this.scrollEdges.left) {\n offsetLeft = viewEle.scrollLeft - this.widthUptoCursorPoint + this.actionObj.cellWidth;\n if (viewEle.scrollLeft + viewEle.offsetWidth >= viewEle.offsetWidth) {\n viewEle.scrollLeft = viewEle.scrollLeft - 1;\n }\n else if (this.actionObj.clone.offsetLeft === 0) {\n offsetLeft = viewEle.scrollLeft;\n }\n }\n else {\n offsetLeft = (viewEle.scrollLeft + viewEle.offsetWidth -\n this.actionObj.clone.offsetWidth) + (this.actionObj.clone.offsetWidth - this.widthUptoCursorPoint);\n }\n offsetLeft = offsetLeft < 0 ? 0 : offsetLeft;\n if (isNullOrUndefined(this.parent.eventDragArea)) {\n this.actionObj.clone.style.left = formatUnit(offsetLeft);\n }\n }\n }\n return offsetLeft;\n };\n DragAndDrop.prototype.getWidthDiff = function (tr, index) {\n var pages = this.scrollArgs.element.getBoundingClientRect();\n if (pages.left <= this.actionObj.pageX && pages.right >= this.actionObj.pageX) {\n var targetLeft = tr.children[parseInt(index.toString(), 10)].offsetLeft;\n var pageX = this.actionObj.pageX - pages.left;\n if (this.parent.enableRtl) {\n return (targetLeft + this.actionObj.cellWidth) - (this.scrollArgs.element.scrollLeft + pageX);\n }\n else {\n return (this.scrollArgs.element.scrollLeft + pageX) - targetLeft;\n }\n }\n return 0;\n };\n DragAndDrop.prototype.getColumnIndex = function (offsetLeft) {\n var index = Math.floor(offsetLeft / Math.trunc(this.actionObj.cellWidth));\n if (this.isHeaderRows) {\n return index;\n }\n return this.getIndex(index);\n };\n DragAndDrop.prototype.getCursorCurrentIndex = function (colIndex, cloneIndex, tr) {\n var index = colIndex + cloneIndex;\n if (this.isHeaderRows) {\n var dateLength = Math.floor(tr.offsetWidth / this.actionObj.cellWidth);\n return (index > dateLength - 1) ? dateLength - 1 : index;\n }\n return (index > tr.children.length - 1) ? tr.children.length - 1 : index;\n };\n DragAndDrop.prototype.cursorIndex = function (e, event, left, index) {\n var td = closest(e.target, '.e-work-cells');\n if (!isNullOrUndefined(td) && !this.isMorePopupOpened) {\n var targetDate = this.parent.getDateFromElement(td);\n if (this.isHeaderRows) {\n var currentIndex = Math.floor(left / this.actionObj.cellWidth);\n targetDate = new Date(this.timelineEventModule.dateRender[currentIndex + index].getTime());\n }\n var timeDiff = targetDate.getTime() - event[this.parent.eventFields.startTime].getTime();\n if (this.isTimelineDayProcess) {\n this.cursorPointIndex = Math.abs(Math.ceil(timeDiff / (util.MS_PER_DAY)));\n }\n else {\n var widthDiff = Math.floor((timeDiff / util.MS_PER_MINUTE) / (this.actionObj.slotInterval / this.actionObj.cellWidth));\n this.cursorPointIndex = Math.floor(widthDiff / this.actionObj.cellWidth);\n this.cursorPointIndex = this.cursorPointIndex < 0 ? 0 : this.cursorPointIndex;\n }\n }\n else {\n this.cursorPointIndex = 0;\n }\n };\n DragAndDrop.prototype.calculateResourceGroupingPosition = function (e, cloneElement) {\n var dragArea = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var trCollection = [].slice.call(this.parent.element.querySelectorAll('.e-content-wrap .e-content-table tr:not(.e-hidden)'));\n var translateY = util.getTranslateY(dragArea.querySelector('table'));\n translateY = (isNullOrUndefined(translateY)) ? 0 : translateY;\n var rowHeight = (this.parent.rowAutoHeight) ?\n ~~(dragArea.querySelector('table').offsetHeight / trCollection.length) : this.actionObj.cellHeight;\n var rowIndex = Math.floor(Math.floor((this.actionObj.Y +\n (dragArea.scrollTop - translateY - (window.scrollY || window.pageYOffset))) -\n dragArea.getBoundingClientRect().top) / rowHeight);\n rowIndex = (rowIndex < 0) ? 0 : (rowIndex > trCollection.length - 1) ? trCollection.length - 1 : rowIndex;\n this.actionObj.index = rowIndex;\n var eventContainer = this.parent.element.querySelectorAll('.e-appointment-container:not(.e-hidden)').item(rowIndex);\n var eventWrapper = eventContainer.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS);\n if (!eventWrapper) {\n eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n eventContainer.appendChild(eventWrapper);\n }\n this.appendCloneElement(eventWrapper, cloneElement);\n var td = closest(this.actionObj.target, 'td');\n this.actionObj.groupIndex = (td && !isNaN(parseInt(td.getAttribute('data-group-index'), 10)))\n ? parseInt(td.getAttribute('data-group-index'), 10) : this.actionObj.groupIndex;\n if (!isNullOrUndefined(this.parent.eventDragArea)) {\n return;\n }\n var top = trCollection[parseInt(rowIndex.toString(), 10)].getBoundingClientRect().height * rowIndex;\n if (this.parent.rowAutoHeight) {\n var cursorElement = this.getCursorElement(e);\n if (cursorElement) {\n top = cursorElement.classList.contains(cls.WORK_CELLS_CLASS) ? cursorElement.offsetTop :\n (cursorElement.offsetParent && cursorElement.offsetParent.classList.contains(cls.APPOINTMENT_CLASS)) ?\n cursorElement.offsetParent.offsetTop : top;\n }\n }\n cloneElement.style.top = formatUnit(top);\n };\n DragAndDrop.prototype.appendCloneElement = function (element, cloneElement) {\n if (cloneElement === void 0) { cloneElement = null; }\n cloneElement = isNullOrUndefined(cloneElement) ? this.actionObj.clone : cloneElement;\n var dragElement = document.querySelector(this.parent.eventDragArea);\n if (this.parent.eventDragArea && dragElement) {\n dragElement.appendChild(cloneElement);\n }\n else {\n element.appendChild(cloneElement);\n }\n };\n DragAndDrop.prototype.getEventWrapper = function (index, isAllDayDrag) {\n var eventWrapper;\n if (isNullOrUndefined(isAllDayDrag)) {\n isAllDayDrag = this.actionObj.clone.classList.contains(cls.ALLDAY_APPOINTMENT_CLASS);\n }\n if (this.parent.activeViewOptions.timeScale.enable) {\n var wrapperClass = isAllDayDrag ? '.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS : '.' + cls.APPOINTMENT_WRAPPER_CLASS;\n eventWrapper = this.parent.element.querySelectorAll(wrapperClass).item(index);\n }\n else {\n var targetWrapper = this.parent.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS).item(index);\n eventWrapper = targetWrapper.querySelector('.' + cls.APPOINTMENT_WRAPPER_CLASS);\n if (!eventWrapper) {\n eventWrapper = createElement('div', { className: cls.APPOINTMENT_WRAPPER_CLASS });\n targetWrapper.appendChild(eventWrapper);\n }\n }\n return eventWrapper;\n };\n DragAndDrop.prototype.getAllDayEventHeight = function () {\n var eventWrapper = createElement('div', { className: cls.APPOINTMENT_CLASS });\n this.parent.element.querySelector('.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS).appendChild(eventWrapper);\n var eventHeight = eventWrapper.offsetHeight;\n remove(eventWrapper);\n return eventHeight;\n };\n DragAndDrop.prototype.isAllowDrop = function (e) {\n if (!this.actionObj.excludeSelectors) {\n return false;\n }\n var dropSelectors = this.actionObj.excludeSelectors.split(',');\n var isAllowDrop = false;\n for (var _i = 0, dropSelectors_1 = dropSelectors; _i < dropSelectors_1.length; _i++) {\n var selector = dropSelectors_1[_i];\n if (e.target.classList.contains(selector)) {\n isAllowDrop = true;\n break;\n }\n }\n return isAllowDrop;\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the module name\n */\n DragAndDrop.prototype.getModuleName = function () {\n return 'dragAndDrop';\n };\n return DragAndDrop;\n}(ActionBase));\nexport { DragAndDrop };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { addClass, Browser, EventHandler, remove, closest, extend, formatUnit, setStyleAttribute, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { ActionBase } from '../actions/action-base';\nimport { MonthEvent } from '../event-renderer/month';\nimport * as util from '../base/util';\nimport * as event from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * Schedule events resize actions\n */\nvar Resize = /** @class */ (function (_super) {\n __extends(Resize, _super);\n function Resize() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n Resize.prototype.wireResizeEvent = function (element) {\n var resizeElement = [].slice.call(element.querySelectorAll('.' + cls.EVENT_RESIZE_CLASS));\n for (var _i = 0, resizeElement_1 = resizeElement; _i < resizeElement_1.length; _i++) {\n var element_1 = resizeElement_1[_i];\n EventHandler.add(element_1, Browser.touchStartEvent, this.resizeStart, this);\n }\n };\n Resize.prototype.resizeHelper = function () {\n if (this.parent.activeViewOptions.group.resources.length > 0 && this.parent.activeViewOptions.group.allowGroupEdit) {\n for (var i = 0, len = this.actionObj.originalElement.length; i < len; i++) {\n var cloneElement = this.createCloneElement(this.actionObj.originalElement[parseInt(i.toString(), 10)]);\n this.actionObj.cloneElement[parseInt(i.toString(), 10)] = cloneElement;\n if (this.actionObj.element === this.actionObj.originalElement[parseInt(i.toString(), 10)]) {\n this.actionObj.clone = cloneElement;\n }\n }\n }\n else {\n if (this.actionObj.element) {\n this.actionObj.clone = this.createCloneElement(this.actionObj.element);\n }\n this.actionObj.cloneElement = [this.actionObj.clone];\n this.actionObj.originalElement = [this.actionObj.element];\n }\n };\n Resize.prototype.resizeStart = function (e) {\n var _this = this;\n this.actionObj.action = 'resize';\n this.actionObj.slotInterval = this.parent.activeViewOptions.timeScale.interval / this.parent.activeViewOptions.timeScale.slotCount;\n this.actionObj.interval = this.actionObj.slotInterval;\n var resizeTarget = closest(e.target, '.' + cls.EVENT_RESIZE_CLASS);\n this.actionObj.element = closest(resizeTarget, '.' + cls.APPOINTMENT_CLASS);\n this.actionObj.event = this.parent.eventBase.getEventByGuid(this.actionObj.element.getAttribute('data-guid'));\n var eventObj = extend({}, this.actionObj.event, null, true);\n var resizeArgs = {\n cancel: false,\n data: eventObj,\n element: this.actionObj.element,\n event: e,\n interval: this.actionObj.interval,\n scroll: { enable: true, scrollBy: 30, timeDelay: 100 }\n };\n this.parent.trigger(event.resizeStart, resizeArgs, function (resizeEventArgs) {\n if (resizeEventArgs.cancel) {\n return;\n }\n _this.actionClass('addClass');\n _this.parent.uiStateValues.action = true;\n _this.resizeEdges = {\n left: resizeTarget.classList.contains(cls.LEFT_RESIZE_HANDLER),\n right: resizeTarget.classList.contains(cls.RIGHT_RESIZE_HANDLER),\n top: resizeTarget.classList.contains(cls.TOP_RESIZE_HANDLER),\n bottom: resizeTarget.classList.contains(cls.BOTTOM_RESIZE_HANDLER)\n };\n _this.actionObj.groupIndex = _this.parent.uiStateValues.isGroupAdaptive ? _this.parent.uiStateValues.groupIndex : 0;\n var workCell = _this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS).getBoundingClientRect();\n _this.actionObj.cellWidth = workCell.width;\n _this.actionObj.cellHeight = workCell.height;\n var hRows = _this.parent.activeViewOptions.headerRows.map(function (row) { return row.option; });\n if (_this.parent.activeView.isTimelineView() && hRows.length > 0 && ['Date', 'Hour'].indexOf(hRows.slice(-1)[0]) < 0) {\n var tr = _this.parent.getContentTable().querySelector('tr');\n var noOfDays = 0;\n var tdCollections = [].slice.call(tr.children);\n for (var _i = 0, tdCollections_1 = tdCollections; _i < tdCollections_1.length; _i++) {\n var td = tdCollections_1[_i];\n noOfDays += parseInt(td.getAttribute('colspan'), 10);\n }\n var trRect = tr.getBoundingClientRect();\n _this.actionObj.cellWidth = trRect.width / noOfDays;\n _this.actionObj.cellHeight = trRect.height;\n }\n var pages = _this.parent.eventBase.getPageCoordinates(e);\n _this.actionObj.X = pages.pageX;\n _this.actionObj.Y = pages.pageY;\n _this.actionObj.groupIndex = parseInt(_this.actionObj.element.getAttribute('data-group-index') || '0', 10);\n _this.actionObj.interval = resizeEventArgs.interval;\n _this.actionObj.scroll = resizeEventArgs.scroll;\n _this.actionObj.start = new Date(eventObj[_this.parent.eventFields.startTime].getTime());\n _this.actionObj.end = new Date(eventObj[_this.parent.eventFields.endTime].getTime());\n _this.actionObj.originalElement = _this.getOriginalElement(_this.actionObj.element);\n if (_this.parent.currentView === 'Month') {\n _this.daysVariation = -1;\n _this.monthEvent = new MonthEvent(_this.parent);\n }\n var viewElement = _this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n _this.scrollArgs = { element: viewElement, width: viewElement.scrollWidth, height: viewElement.scrollHeight };\n EventHandler.add(document, Browser.touchMoveEvent, _this.resizing, _this);\n EventHandler.add(document, Browser.touchEndEvent, _this.resizeStop, _this);\n });\n };\n Resize.prototype.resizing = function (e) {\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide();\n }\n if (this.parent.element.querySelectorAll('.' + cls.RESIZE_CLONE_CLASS).length === 0) {\n this.resizeHelper();\n }\n if ((!isNullOrUndefined(e.target)) && e.target.classList.contains(cls.DISABLE_DATES)) {\n return;\n }\n var pages = this.parent.eventBase.getPageCoordinates(e);\n if (this.parent.currentView === 'Month' || this.parent.currentView === 'TimelineYear') {\n var doc = document.documentElement;\n var left = (window.pageXOffset || doc.scrollLeft) - (doc.clientLeft || 0);\n var top_1 = (window.pageYOffset || doc.scrollTop) - (doc.clientTop || 0);\n this.actionObj.pageX = pages.pageX - left;\n this.actionObj.pageY = pages.pageY - top_1;\n }\n else {\n this.actionObj.pageX = pages.pageX;\n this.actionObj.pageY = pages.pageY;\n }\n this.updateScrollPosition(e);\n this.updateResizingDirection(e);\n var eventObj = extend({}, this.actionObj.event, null, true);\n var resizeArgs = {\n cancel: false,\n data: eventObj,\n element: this.actionObj.element,\n event: e,\n startTime: this.actionObj.start,\n endTime: this.actionObj.end\n };\n if (this.parent.group.resources.length > 0) {\n resizeArgs.groupIndex = this.actionObj.groupIndex;\n }\n this.parent.trigger(event.resizing, resizeArgs);\n };\n Resize.prototype.updateResizingDirection = function (e) {\n if (this.parent.currentView === 'Month' || this.parent.currentView === 'TimelineYear') {\n this.monthResizing();\n return;\n }\n var resizeValidation = this.resizeValidation(e);\n if (this.resizeEdges.left) {\n if (resizeValidation) {\n var leftStyles = this.getLeftRightStyles(e, true);\n if (parseInt(leftStyles.width, 10) < 1) {\n return;\n }\n for (var _i = 0, _a = this.actionObj.cloneElement; _i < _a.length; _i++) {\n var cloneElement = _a[_i];\n setStyleAttribute(cloneElement, leftStyles);\n addClass([cloneElement], cls.LEFT_RESIZE_HANDLER);\n }\n }\n this.horizontalResizing(!this.parent.enableRtl);\n }\n if (this.resizeEdges.right) {\n if (resizeValidation) {\n var rightStyles = this.getLeftRightStyles(e, false);\n if (parseInt(rightStyles.width, 10) < 1) {\n return;\n }\n for (var _b = 0, _c = this.actionObj.cloneElement; _b < _c.length; _b++) {\n var cloneElement = _c[_b];\n setStyleAttribute(cloneElement, rightStyles);\n addClass([cloneElement], cls.RIGHT_RESIZE_HANDLER);\n }\n }\n this.horizontalResizing(this.parent.enableRtl);\n }\n if (this.resizeEdges.top) {\n if (resizeValidation) {\n var topStyles = this.getTopBottomStyles(e, true);\n if (parseInt(topStyles.height, 10) < 1) {\n return;\n }\n for (var _d = 0, _e = this.actionObj.cloneElement; _d < _e.length; _d++) {\n var cloneElement = _e[_d];\n setStyleAttribute(cloneElement, topStyles);\n addClass([cloneElement], cls.TOP_RESIZE_HANDLER);\n }\n }\n this.verticalResizing(true);\n }\n if (this.resizeEdges.bottom) {\n if (resizeValidation) {\n var bottomStyles = this.getTopBottomStyles(e, false);\n if (parseInt(bottomStyles.height, 10) < 1) {\n return;\n }\n for (var _f = 0, _g = this.actionObj.cloneElement; _f < _g.length; _f++) {\n var cloneElement = _g[_f];\n setStyleAttribute(cloneElement, bottomStyles);\n addClass([cloneElement], cls.BOTTOM_RESIZE_HANDLER);\n }\n }\n this.verticalResizing(false);\n }\n };\n Resize.prototype.monthResizing = function () {\n this.removeCloneElement();\n if (isNullOrUndefined(this.actionObj.pageX) || isNullOrUndefined(this.actionObj.pageY)) {\n return;\n }\n var td = document.elementFromPoint(this.actionObj.pageX, this.actionObj.pageY);\n if (isNullOrUndefined(td)) {\n return;\n }\n var resizeTime = this.parent.getDateFromElement(td);\n var isSameCell = this.parent.activeViewOptions.group.resources.length > 0 ?\n parseInt(td.getAttribute('data-group-index'), 10) === this.actionObj.groupIndex : true;\n var startTime = new Date(this.actionObj.event[this.parent.eventFields.startTime].getTime());\n var endTime = new Date(this.actionObj.event[this.parent.eventFields.endTime].getTime());\n if ((!this.parent.enableRtl && this.resizeEdges.left) || (this.parent.enableRtl && this.resizeEdges.right)\n || this.resizeEdges.top) {\n startTime = resizeTime;\n }\n else if ((!this.parent.enableRtl && this.resizeEdges.right) || (this.parent.enableRtl && this.resizeEdges.left)\n || this.resizeEdges.bottom) {\n endTime = util.addDays(resizeTime, 1);\n }\n if (isSameCell && startTime < endTime) {\n this.actionObj.start = startTime;\n this.actionObj.end = endTime;\n var event_1 = this.getUpdatedEvent(this.actionObj.start, this.actionObj.end, this.actionObj.event);\n if (this.parent.currentView === 'TimelineYear') {\n this.yearEventsRendering(event_1);\n }\n else {\n this.dynamicEventsRendering(event_1);\n }\n this.updateOriginalElement(this.actionObj.clone);\n }\n };\n Resize.prototype.yearEventsRendering = function (event) {\n var eventWrappers = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CLONE_ELEMENT_CLASS));\n for (var _i = 0, eventWrappers_1 = eventWrappers; _i < eventWrappers_1.length; _i++) {\n var wrapper = eventWrappers_1[_i];\n remove(wrapper);\n }\n var endDate = new Date(event[this.parent.eventFields.endTime]);\n var monthDiff = 0;\n if (this.parent.activeViewOptions.group.resources.length === 0) {\n monthDiff = this.getMonthDiff(event[this.parent.eventFields.startTime], util.addDays(endDate, -1));\n }\n for (var i = 0; i <= monthDiff; i++) {\n var eventObj = void 0;\n if (this.parent.activeViewOptions.group.resources.length === 0) {\n eventObj = this.getEventCount(event, this.actionObj.start.getMonth() + i);\n }\n else {\n eventObj = extend({}, event, null, true);\n endDate = this.resizeEdges.left || this.resizeEdges.right ? util.addDays(endDate, -1) : endDate;\n eventObj.count = this.getMonthDiff(event[this.parent.eventFields.startTime], endDate) + 1;\n }\n this.dynamicYearlyEventsRendering(eventObj, true);\n }\n };\n Resize.prototype.getMonthDiff = function (startDate, endDate) {\n var months;\n months = (endDate.getFullYear() - startDate.getFullYear()) * 12;\n months -= startDate.getMonth();\n months += endDate.getMonth();\n return months <= 0 ? 0 : months;\n };\n Resize.prototype.getEventCount = function (eventObj, month) {\n var eventData = extend({}, eventObj, null, true);\n var eventStart = eventData[this.parent.eventFields.startTime];\n var eventEnd = eventData[this.parent.eventFields.endTime];\n var monthStart = new Date(this.parent.selectedDate.getFullYear(), month, 1);\n var monthEnd = util.addDays(new Date(this.parent.selectedDate.getFullYear(), month + 1, 0), 1);\n var count = 1;\n if (eventStart.getTime() < monthStart.getTime()) {\n eventData[this.parent.eventFields.startTime] = monthStart;\n }\n if (eventEnd.getTime() > monthEnd.getTime()) {\n eventData[this.parent.eventFields.endTime] = monthEnd;\n }\n if (this.parent.activeViewOptions.group.resources.length === 0) {\n count = Math.ceil((eventData[this.parent.eventFields.endTime].getTime() -\n eventData[this.parent.eventFields.startTime].getTime()) / util.MS_PER_DAY);\n }\n eventData.count = count;\n return eventData;\n };\n Resize.prototype.resizeStop = function (e) {\n var _this = this;\n EventHandler.remove(document, Browser.touchMoveEvent, this.resizing);\n EventHandler.remove(document, Browser.touchEndEvent, this.resizeStop);\n clearInterval(this.actionObj.scrollInterval);\n this.actionObj.scrollInterval = null;\n this.removeCloneElementClasses();\n this.removeCloneElement();\n this.actionClass('removeClass');\n this.parent.uiStateValues.action = false;\n var resizeArgs = { cancel: false, data: this.getChangedData(), element: this.actionObj.element, event: e };\n this.parent.trigger(event.resizeStop, resizeArgs, function (resizeEventArgs) {\n if (resizeEventArgs.cancel) {\n return;\n }\n if (_this.parent.isSpecificResourceEvents()) {\n _this.parent.crudModule.crudObj.sourceEvent =\n [_this.parent.resourceBase.lastResourceLevel[parseInt(resizeEventArgs.element.getAttribute('data-group-index'), 10)]];\n _this.parent.crudModule.crudObj.targetEvent = _this.parent.crudModule.crudObj.sourceEvent;\n _this.parent.crudModule.crudObj.isCrudAction = true;\n }\n _this.saveChangedData(resizeEventArgs);\n });\n };\n Resize.prototype.verticalResizing = function (isTop) {\n var offsetValue = this.actionObj.clone.offsetTop;\n if (!isTop) {\n offsetValue += this.actionObj.clone.offsetHeight;\n }\n var minutes = (offsetValue / this.actionObj.cellHeight) * this.actionObj.slotInterval;\n var element = this.actionObj.clone.offsetParent;\n if (isNullOrUndefined(element)) {\n return;\n }\n var resizeTime = util.resetTime(this.parent.getDateFromElement(element));\n resizeTime.setHours(this.parent.activeView.getStartHour().getHours());\n resizeTime.setMinutes(minutes + this.parent.activeView.getStartHour().getMinutes());\n if (isTop) {\n this.actionObj.start = this.calculateIntervalTime(resizeTime);\n }\n else {\n this.actionObj.end = this.calculateIntervalTime(resizeTime);\n }\n this.updateTimePosition(resizeTime);\n };\n Resize.prototype.horizontalResizing = function (isLeft) {\n var eventStart = new Date(this.actionObj.event[this.parent.eventFields.startTime].getTime());\n var eventEnd = new Date(this.actionObj.event[this.parent.eventFields.endTime].getTime());\n var resizeTime;\n var isDateHeader = false;\n var headerName = this.parent.currentView;\n var isTimeViews = ['TimelineDay', 'TimelineWeek', 'TimelineWorkWeek'].indexOf(this.parent.currentView) > -1;\n var isTimelineMonth = this.parent.currentView === 'TimelineMonth';\n var isWithoutScale = isTimelineMonth || isTimeViews && !this.parent.activeViewOptions.timeScale.enable;\n if (this.parent.activeView.isTimelineView()) {\n var tr = this.parent.getContentTable().querySelector('tr');\n if (this.parent.activeViewOptions.headerRows.length > 0) {\n var rows = this.parent.activeViewOptions.headerRows.map(function (row) { return row.option; });\n headerName = rows.slice(-1)[0];\n if (isTimelineMonth && headerName === 'Hour') {\n headerName = rows.slice(-2)[0] || 'Month';\n }\n }\n resizeTime = isLeft ? eventStart : eventEnd;\n var cellIndex = 0;\n var tdCollections = [].slice.call(tr.children);\n var isLastCell = false;\n var pixelsPerMinute = this.actionObj.cellWidth / (this.parent.activeViewOptions.timeScale.interval /\n this.parent.activeViewOptions.timeScale.slotCount);\n var offset = parseFloat(this.parent.enableRtl ? this.actionObj.clone.style.right :\n this.actionObj.clone.style.left);\n offset = Math.round(offset / pixelsPerMinute) * pixelsPerMinute;\n if (['Year', 'Month', 'Week', 'Date'].indexOf(headerName) !== -1) {\n var noOfDays = 0;\n for (var _i = 0, tdCollections_2 = tdCollections; _i < tdCollections_2.length; _i++) {\n var td = tdCollections_2[_i];\n noOfDays += parseInt(td.getAttribute('colspan'), 10);\n }\n var offsetValue = this.parent.enableRtl ? parseInt(this.actionObj.clone.style.right, 10) :\n parseInt(this.actionObj.clone.style.left, 10);\n offsetValue = Math.round(offsetValue / this.actionObj.cellWidth) * this.actionObj.cellWidth;\n if (!isLeft) {\n offsetValue += (this.actionObj.clone.getBoundingClientRect().width - this.actionObj.cellWidth);\n }\n cellIndex = Math.floor(offsetValue / Math.floor(tr.getBoundingClientRect().width / noOfDays));\n isDateHeader = isTimeViews && headerName === 'Date';\n cellIndex = isLeft ? cellIndex : isTimelineMonth ? cellIndex + 1 : cellIndex;\n isLastCell = cellIndex === tdCollections.length;\n cellIndex = (cellIndex < 0) ? 0 : (cellIndex >= noOfDays) ? noOfDays - 1 : cellIndex;\n }\n else {\n var cellWidth = this.actionObj.cellWidth;\n cellIndex = isLeft ? Math.floor(offset / this.actionObj.cellWidth) :\n Math.ceil((offset + (this.actionObj.clone.getBoundingClientRect().width - cellWidth)) / this.actionObj.cellWidth);\n if (this.parent.enableRtl) {\n var cellOffsetWidth = 0;\n if (headerName === 'TimelineMonth' || (!this.parent.activeViewOptions.timeScale.enable &&\n !isTimelineMonth)) {\n cellOffsetWidth = this.actionObj.cellWidth;\n }\n var offsetWidth = (Math.floor(offset / this.actionObj.cellWidth) *\n this.actionObj.cellWidth) + (isLeft ? 0 : this.actionObj.clone.getBoundingClientRect().width - cellOffsetWidth);\n cellIndex = Math.floor(offsetWidth / this.actionObj.cellWidth);\n }\n isLastCell = cellIndex === tdCollections.length;\n cellIndex = this.getIndex(cellIndex);\n }\n var resizeDate = void 0;\n if (['Year', 'Month', 'Week', 'Date'].indexOf(headerName) !== -1) {\n resizeDate = new Date(this.parent.activeView.renderDates[parseInt(cellIndex.toString(), 10)].getTime());\n }\n else {\n resizeDate = this.parent.getDateFromElement(tr.children[parseInt(cellIndex.toString(), 10)]);\n }\n if (['TimelineMonth', 'Year', 'Month', 'Week', 'Date'].indexOf(headerName) !== -1 ||\n !this.parent.activeViewOptions.timeScale.enable) {\n resizeTime = new Date(resizeDate.setHours(resizeTime.getHours(), resizeTime.getMinutes(), resizeTime.getSeconds()));\n }\n else {\n if (!isLeft) {\n offset += this.actionObj.clone.getBoundingClientRect().width;\n }\n var spanMinutes = Math.ceil((this.actionObj.slotInterval / this.actionObj.cellWidth) *\n (offset - Math.floor(offset / this.actionObj.cellWidth) * this.actionObj.cellWidth));\n spanMinutes = (isLastCell || (!isLeft && spanMinutes === 0)) ? this.actionObj.slotInterval : spanMinutes;\n resizeTime = new Date(resizeDate.getTime());\n resizeTime.setMinutes(resizeTime.getMinutes() + spanMinutes);\n this.updateTimePosition(resizeTime);\n }\n }\n else {\n var cloneIndex = closest(this.actionObj.clone, 'td').cellIndex;\n var originalWidth = Math.ceil((isLeft ? this.actionObj.element.getBoundingClientRect().width : 0) /\n this.actionObj.cellWidth) * this.actionObj.cellWidth;\n var noOfDays = Math.ceil((this.actionObj.clone.getBoundingClientRect().width - originalWidth) /\n this.actionObj.cellWidth);\n var tr = closest(this.actionObj.clone, 'tr');\n var dayIndex = isLeft ? cloneIndex - noOfDays : cloneIndex + noOfDays - 1;\n dayIndex = this.getIndex(dayIndex);\n resizeTime = this.parent.getDateFromElement(tr.children[parseInt(dayIndex.toString(), 10)]);\n if (isLeft) {\n resizeTime.setHours(eventStart.getHours(), eventStart.getMinutes(), eventStart.getSeconds());\n }\n else {\n resizeTime.setHours(eventEnd.getHours(), eventEnd.getMinutes(), eventEnd.getSeconds());\n }\n }\n var isNotHourSlot = ['TimelineMonth', 'Year', 'Month', 'Week', 'Date'].indexOf(headerName) !== -1 ||\n !this.parent.activeViewOptions.timeScale.enable;\n if (isLeft) {\n if ((eventEnd.getTime() - resizeTime.getTime()) <= 0) {\n resizeTime = isWithoutScale ? util.resetTime(eventEnd) : eventStart;\n }\n this.actionObj.start = !isNotHourSlot ? this.calculateIntervalTime(resizeTime) : resizeTime;\n }\n else {\n var isTimeScaleViews = isTimeViews && this.parent.activeViewOptions.timeScale.enable;\n var resizeEnd = ((!isTimeScaleViews || isDateHeader || isTimeViews && ['Week', 'Month', 'Year'].indexOf(headerName) > -1)\n && resizeTime.getHours() === 0 && resizeTime.getMinutes() === 0) ? util.addDays(resizeTime, 1) : resizeTime;\n if (isWithoutScale && (resizeEnd.getTime() - eventStart.getTime()) <= 0) {\n resizeEnd = util.addDays(util.resetTime(eventStart), 1);\n }\n this.actionObj.end = !isNotHourSlot ? this.calculateIntervalTime(resizeEnd) : resizeEnd;\n }\n };\n Resize.prototype.getTopBottomStyles = function (e, isTop) {\n var viewElement = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var slotInterval = (this.actionObj.cellHeight / this.actionObj.slotInterval) * this.actionObj.interval;\n var clnHeight = isTop ? this.actionObj.element.offsetHeight + (this.actionObj.Y - this.actionObj.pageY) :\n this.actionObj.element.offsetHeight + (this.actionObj.pageY - this.actionObj.Y);\n var clnTop = isTop ? this.actionObj.element.offsetTop -\n (this.actionObj.Y - this.actionObj.pageY) : this.actionObj.clone.offsetTop;\n clnHeight = (clnTop < 0) ? this.actionObj.clone.offsetHeight :\n (this.actionObj.clone.offsetTop + this.actionObj.clone.offsetHeight) > this.scrollArgs.height ?\n this.actionObj.clone.offsetHeight : clnHeight;\n clnTop = (clnTop < 0) ? 0 : clnTop;\n clnTop = isTop ? Math.floor(clnTop / slotInterval) * slotInterval : clnTop;\n clnHeight = clnTop + clnHeight >= viewElement.scrollHeight ? viewElement.scrollHeight - clnTop :\n Math.ceil(clnHeight / slotInterval) * slotInterval;\n if (!isTop && this.actionObj.clone.offsetTop + clnHeight >= this.parent.getContentTable().offsetHeight) {\n clnHeight = this.parent.getContentTable().offsetHeight - this.actionObj.clone.offsetTop;\n }\n var styles = {\n height: formatUnit(clnHeight < this.actionObj.cellHeight ? Math.floor(clnHeight / slotInterval) * slotInterval : clnHeight),\n top: formatUnit((clnHeight < this.actionObj.cellHeight && isTop) ? Math.ceil(clnTop / slotInterval) * slotInterval : clnTop),\n left: '0px', right: '0px', width: '100%'\n };\n return styles;\n };\n Resize.prototype.getLeftRightStyles = function (e, isLeft) {\n var styles = {};\n var isTimelineView = this.parent.activeView.isTimelineView();\n var isTimeViews = ['TimelineDay', 'TimelineWeek', 'TimelineWorkWeek'].indexOf(this.parent.currentView) > -1 &&\n this.parent.activeViewOptions.timeScale.enable;\n var slotInterval = (this.actionObj.cellWidth / this.actionObj.slotInterval) * this.actionObj.interval;\n var pageWidth = isLeft ? (this.actionObj.X - this.actionObj.pageX) : (this.actionObj.pageX - this.actionObj.X);\n var targetWidth = isTimelineView ?\n (this.actionObj.element.getBoundingClientRect().width / this.actionObj.cellWidth) * this.actionObj.cellWidth :\n this.parent.currentView === 'Month' ? this.actionObj.element.getBoundingClientRect().width :\n Math.ceil(this.actionObj.element.getBoundingClientRect().width / this.actionObj.cellWidth) * this.actionObj.cellWidth;\n var offsetWidth = targetWidth + (Math.ceil(pageWidth / this.actionObj.cellWidth) * this.actionObj.cellWidth);\n var left = (this.parent.enableRtl) ? parseInt(this.actionObj.element.style.right, 10) : this.actionObj.clone.offsetLeft;\n if (isTimeViews) {\n offsetWidth = targetWidth + (Math.ceil(pageWidth / slotInterval) * slotInterval);\n offsetWidth = (Math.round((left + offsetWidth) / slotInterval) * slotInterval) - left;\n this.actionObj.event[this.parent.eventFields.isAllDay] = false;\n }\n var width = !isLeft && ((offsetWidth + this.actionObj.clone.offsetLeft > this.scrollArgs.width)) ?\n this.actionObj.clone.getBoundingClientRect().width : (offsetWidth < this.actionObj.cellWidth) ? offsetWidth : offsetWidth;\n if (this.parent.enableRtl) {\n var rightValue = isTimelineView ? parseInt(this.actionObj.element.style.right, 10) :\n -(offsetWidth - this.actionObj.cellWidth);\n rightValue = isTimelineView ? rightValue : isLeft ? 0 : rightValue > 0 ? 0 : rightValue;\n if (isTimelineView && !isLeft) {\n rightValue = Math.ceil((this.actionObj.element.offsetLeft + (this.actionObj.element.getBoundingClientRect().width +\n (this.actionObj.pageX - this.actionObj.X))) / slotInterval) * slotInterval;\n rightValue = rightValue < 0 ? Math.abs(rightValue) : -rightValue;\n }\n rightValue = rightValue >= this.scrollArgs.width ? this.scrollArgs.width - this.actionObj.cellWidth : rightValue;\n styles.right = formatUnit(rightValue);\n width = width + rightValue > this.scrollArgs.width ? this.actionObj.clone.getBoundingClientRect().width : width;\n }\n else {\n var offsetLeft = isLeft ? this.actionObj.element.offsetLeft - (this.actionObj.X - this.actionObj.pageX) :\n this.parent.enableRtl ? this.actionObj.element.offsetLeft : 0;\n if (isTimelineView) {\n offsetLeft = isLeft ? offsetLeft : parseInt(this.actionObj.clone.style.left, 10);\n if (this.parent.enableRtl) {\n offsetLeft = !isLeft ? (this.actionObj.pageX < this.actionObj.X - this.actionObj.clone.getBoundingClientRect().width)\n ? parseInt(this.actionObj.clone.style.right, 10) : offsetLeft : offsetLeft;\n }\n else {\n offsetLeft = isLeft ? (this.actionObj.pageX > this.actionObj.X + this.actionObj.clone.getBoundingClientRect().width &&\n this.actionObj.clone.getBoundingClientRect().width === this.actionObj.cellWidth) ?\n parseInt(this.actionObj.clone.style.left, 10) : offsetLeft : offsetLeft;\n }\n }\n var leftValue = offsetLeft;\n offsetLeft = isTimelineView ? isTimeViews ? isLeft ? Math.floor(offsetLeft / slotInterval) * slotInterval : offsetLeft :\n Math.floor(offsetLeft / this.actionObj.cellWidth) * this.actionObj.cellWidth :\n Math.ceil(Math.abs(offsetLeft) / this.actionObj.cellWidth) * this.actionObj.cellWidth;\n if (offsetLeft < 0) {\n offsetLeft = 0;\n width = this.actionObj.clone.getBoundingClientRect().width;\n }\n var cloneWidth = Math.ceil(this.actionObj.clone.getBoundingClientRect().width / this.actionObj.cellWidth) *\n this.actionObj.cellWidth;\n if (isLeft) {\n styles.left = formatUnit(isTimelineView ? offsetLeft : isLeft ? leftValue < 0 ? -offsetLeft :\n (Math.ceil((targetWidth - cloneWidth) / this.actionObj.cellWidth) * this.actionObj.cellWidth) : offsetLeft);\n }\n }\n styles.width = formatUnit(width);\n return styles;\n };\n Resize.prototype.resizeValidation = function (e) {\n var pages = this.parent.eventBase.getPageCoordinates(e);\n var viewDimension = this.getContentAreaDimension();\n var isTimeScale = this.parent.activeView.isTimelineView() && this.parent.activeViewOptions.timeScale.enable;\n var cellWidth = this.actionObj.cellWidth;\n var resizeValidation = false;\n if (this.resizeEdges.left) {\n if (pages.pageX < viewDimension.leftOffset && pages.pageX >= viewDimension.left && isTimeScale) {\n cellWidth = 0;\n }\n resizeValidation = (pages.pageX - cellWidth) >= viewDimension.left;\n }\n if (this.resizeEdges.right) {\n if (pages.pageX > viewDimension.rightOffset && pages.pageX <= viewDimension.right && isTimeScale) {\n cellWidth = 0;\n }\n resizeValidation = (pages.pageX + cellWidth) <= viewDimension.right;\n }\n if (this.resizeEdges.top) {\n resizeValidation = this.actionObj.clone.offsetTop >= viewDimension.top;\n }\n if (this.resizeEdges.bottom) {\n resizeValidation = (this.actionObj.clone.offsetTop + this.actionObj.clone.offsetHeight) <= this.scrollArgs.height;\n }\n return resizeValidation;\n };\n /**\n * Get module name\n *\n * @returns {string} Returns the module name..\n */\n Resize.prototype.getModuleName = function () {\n return 'resize';\n };\n return Resize;\n}(ActionBase));\nexport { Resize };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\n/**\n * React Component Base\n */\nimport * as React from 'react';\nimport * as ReactDOM from 'react-dom';\nimport { extend, isNullOrUndefined, setValue, getValue, isObject, onIntlChange } from '@syncfusion/ej2-base';\nvar defaulthtmlkeys = ['alt', 'className', 'disabled', 'form', 'id',\n 'readOnly', 'style', 'tabIndex', 'title', 'type', 'name',\n 'onClick', 'onFocus', 'onBlur'];\nvar delayUpdate = ['accordion', 'tab', 'splitter'];\nvar reactUid = 0;\nvar isColEName = new RegExp('\\]');\n// tslint:disable\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar ComponentBase = /** @class */ (function (_super) {\n __extends(ComponentBase, _super);\n function ComponentBase() {\n var _this = _super !== null && _super.apply(this, arguments) || this;\n _this.mountingState = false;\n _this.attrKeys = [];\n _this.cachedTimeOut = 0;\n _this.isAppendCalled = false;\n _this.initRenderCalled = false;\n _this.isReactForeceUpdate = false;\n _this.isReact = true;\n _this.isshouldComponentUpdateCalled = false;\n _this.isCreated = false;\n return _this;\n }\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentWillMount\n // tslint:disable-next-line:no-any\n ComponentBase.prototype.componentDidMount = function () {\n this.refreshChild(true);\n this.canDelayUpdate = delayUpdate.indexOf(this.getModuleName()) !== -1;\n // Used timeout to resolve template binding\n // Reference link: https://github.com/facebook/react/issues/10309#issuecomment-318433235\n // tslint:disable-next-line:no-any\n this.renderReactComponent();\n if (this.portals && this.portals.length) {\n this.mountingState = true;\n this.renderReactTemplates();\n this.mountingState = false;\n }\n };\n ComponentBase.prototype.componentDidUpdate = function (prev) {\n if (!this.isshouldComponentUpdateCalled && this.initRenderCalled && !this.isReactForeceUpdate) {\n if (prev !== this.props) {\n this.isshouldComponentUpdateCalled = true;\n this.updateProperties(this.props, false, prev);\n }\n }\n };\n ComponentBase.prototype.renderReactComponent = function () {\n var ele = this.reactElement;\n if (ele && !this.isAppendCalled) {\n this.isAppendCalled = true;\n this.appendTo(ele);\n }\n };\n // Lifecycle methods are changed by React team and so we can deprecate this method and use\n // Reference link:https://reactjs.org/docs/react-component.html#unsafe_componentwillreceiveprops\n // tslint:disable-next-line:no-any\n /**\n * @private\n */\n ComponentBase.prototype.shouldComponentUpdate = function (nextProps) {\n this.isshouldComponentUpdateCalled = true;\n if (!this.initRenderCalled) {\n this.updateProperties(nextProps, true);\n return true;\n }\n if (!this.isAppendCalled) {\n clearTimeout(this.cachedTimeOut);\n this.isAppendCalled = true;\n this.appendTo(this.reactElement);\n }\n this.updateProperties(nextProps);\n return true;\n };\n /**\n * @private\n */\n ComponentBase.prototype.updateProperties = function (nextProps, silent, prev) {\n var _this = this;\n var dProps = extend({}, nextProps);\n var keys = Object.keys(nextProps);\n var prevProps = extend({}, prev || this.props);\n // The statelessTemplates props value is taken from sample level property or default component property.\n var statelessTemplates = !isNullOrUndefined(prevProps['statelessTemplates']) ? prevProps['statelessTemplates'] :\n (!isNullOrUndefined(this['statelessTemplateProps']) ? this['statelessTemplateProps'] : []);\n for (var _i = 0, keys_1 = keys; _i < keys_1.length; _i++) {\n var propkey = keys_1[_i];\n var isClassName = propkey === 'className';\n if (propkey === 'children') {\n continue;\n }\n if (!isClassName && !isNullOrUndefined(this.htmlattributes[\"\" + propkey]) &&\n this.htmlattributes[\"\" + propkey] !== dProps[\"\" + propkey]) {\n this.htmlattributes[\"\" + propkey] = dProps[\"\" + propkey];\n }\n if (this.compareValues(prevProps[\"\" + propkey], nextProps[\"\" + propkey])) {\n delete dProps[\"\" + propkey];\n }\n else if (this.attrKeys.indexOf(propkey) !== -1) {\n if (isClassName) {\n this.clsName = true;\n var propsClsName = prevProps[\"\" + propkey].split(' ');\n for (var i = 0; i < propsClsName.length; i++) {\n this.element.classList.remove(propsClsName[parseInt(i.toString(), 10)]);\n }\n var dpropsClsName = dProps[\"\" + propkey].split(' ');\n for (var j = 0; j < dpropsClsName.length; j++) {\n this.element.classList.add(dpropsClsName[parseInt(j.toString(), 10)]);\n }\n }\n else if (propkey !== 'disabled' && !this.properties.hasOwnProperty(propkey)) {\n delete dProps[\"\" + propkey];\n }\n }\n else if (propkey === 'value' && nextProps[\"\" + propkey] === this[\"\" + propkey]) {\n delete dProps[\"\" + propkey];\n }\n else if (statelessTemplates.indexOf(propkey) > -1 && ((propkey === 'content' && typeof dProps[\"\" + propkey] === 'function') || (nextProps[\"\" + propkey].toString() === this[\"\" + propkey].toString()))) {\n delete dProps[\"\" + propkey];\n }\n }\n if (dProps['children']) {\n delete dProps['children'];\n }\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && (this.canDelayUpdate || prevProps.delayUpdate)) {\n setTimeout(function () {\n _this.refreshProperties(dProps, nextProps, silent);\n });\n }\n else {\n this.refreshProperties(dProps, nextProps, silent);\n }\n };\n ComponentBase.prototype.refreshProperties = function (dProps, nextProps, silent) {\n var statelessTemplates = !isNullOrUndefined(this.props['statelessTemplates']) ? this.props['statelessTemplates'] : [];\n if (Object.keys(dProps).length) {\n if (!silent) {\n // tslint:disable-next-line:no-any\n this.processComplexTemplate(dProps, this);\n }\n this.setProperties(dProps, silent);\n }\n if (statelessTemplates.indexOf('directiveTemplates') === -1) {\n this.refreshChild(silent, nextProps);\n }\n };\n ComponentBase.prototype.processComplexTemplate = function (curObject, context) {\n var compTemplate = context.complexTemplate;\n if (compTemplate) {\n for (var prop in compTemplate) {\n var PropVal = compTemplate[\"\" + prop];\n if (curObject[\"\" + prop]) {\n setValue(PropVal, getValue(prop, curObject), curObject);\n }\n }\n }\n };\n ComponentBase.prototype.getDefaultAttributes = function () {\n var _this = this;\n this.isReact = true;\n var propKeys = Object.keys(this.props);\n var stringValue = ['autocomplete', 'dropdownlist', 'combobox'];\n // if ((stringValue.indexOf(this.getModuleName()) !== -1) && (!isNullOrUndefined(this.props[\"value\"]))) {\n // this.value = (<{ [key: string]: Object }>this.props)[\"value\"];\n // }\n if (!this.htmlattributes) {\n this.htmlattributes = {};\n }\n this.attrKeys = defaulthtmlkeys.concat(this.controlAttributes || []);\n for (var _i = 0, propKeys_1 = propKeys; _i < propKeys_1.length; _i++) {\n var prop = propKeys_1[_i];\n if (prop.indexOf('data-') !== -1 || prop.indexOf('aria-') !== -1 || this.attrKeys.indexOf(prop) !== -1 || (Object.keys(this.properties).indexOf(\"\" + prop) === -1 && prop.indexOf('children') === -1)) {\n if (this.htmlattributes[\"\" + prop] !== this.props[\"\" + prop]) {\n this.htmlattributes[\"\" + prop] = this.props[\"\" + prop];\n }\n }\n }\n if (!this.htmlattributes.ref) {\n /* tslint:disable:no-any */\n this.htmlattributes.ref = function (ele) {\n _this.reactElement = ele;\n };\n var keycompoentns = ['autocomplete', 'combobox', 'dropdownlist', 'dropdowntree', 'multiselect',\n 'listbox', 'colorpicker', 'numerictextbox', 'textbox',\n 'uploader', 'maskedtextbox', 'slider', 'datepicker', 'datetimepicker', 'daterangepicker', 'timepicker', 'checkbox', 'switch', 'radio', 'rating'];\n if (keycompoentns.indexOf(this.getModuleName()) !== -1) {\n this.htmlattributes.key = '' + ComponentBase.reactUid;\n ComponentBase.reactUid++;\n if (this.type && !this.htmlattributes['type'])\n this.htmlattributes['type'] = this.multiline ? 'hidden' : this.type;\n if (this.name && !this.htmlattributes['name'])\n this.htmlattributes['name'] = this.name;\n }\n }\n if (this.clsName) {\n var clsList = this.element.classList;\n var className = this.htmlattributes['className'];\n for (var i = 0; i < clsList.length; i++) {\n if ((className.indexOf(clsList[parseInt(i.toString(), 10)]) === -1)) {\n this.htmlattributes['className'] = this.htmlattributes['className'] + ' ' + clsList[parseInt(i.toString(), 10)];\n }\n }\n this.clsName = false;\n }\n return this.htmlattributes;\n };\n /* tslint:disable:no-any */\n ComponentBase.prototype.trigger = function (eventName, eventProp, successHandler) {\n var _this = this;\n if (this.isDestroyed !== true && this.modelObserver) {\n if (isColEName.test(eventName)) {\n var handler = getValue(eventName, this);\n if (handler) {\n handler.call(this, eventProp);\n if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n else if (successHandler) {\n successHandler.call(this, eventProp);\n }\n }\n if ((eventName === 'change' || eventName === 'input')) {\n if (this.props.onChange && eventProp.event) {\n this.props.onChange.call(undefined, {\n syntheticEvent: eventProp.event,\n nativeEvent: { text: eventProp.value },\n value: eventProp.value,\n target: this\n });\n }\n }\n var prevDetection = this.isProtectedOnChange;\n this.isProtectedOnChange = false;\n if (eventName === 'created') {\n setTimeout(function () {\n _this.isCreated = true;\n if (!_this.isDestroyed) {\n _this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n }, 10);\n }\n else {\n this.modelObserver.notify(eventName, eventProp, successHandler);\n }\n this.isProtectedOnChange = prevDetection;\n }\n };\n ComponentBase.prototype.compareValues = function (value1, value2) {\n var typeVal = typeof value1;\n var typeVal2 = typeof value2;\n if (typeVal === typeVal2) {\n if (value1 === value2) {\n return true;\n }\n if ((!isNullOrUndefined(value1) && value1.constructor) !== (!isNullOrUndefined(value2) && value2.constructor)) {\n return false;\n }\n if (value1 instanceof Date ||\n value1 instanceof RegExp ||\n value1 instanceof String ||\n value1 instanceof Number) {\n return value1.toString() === value2.toString();\n }\n if (isObject(value1) || Array.isArray(value1)) {\n var tempVal = value1;\n var tempVal2 = value2;\n if (isObject(tempVal)) {\n tempVal = [value1];\n tempVal2 = [value2];\n }\n return this.compareObjects(tempVal, tempVal2).status;\n }\n if (value1.constructor &&\n value1.constructor.name === value2.constructor.name &&\n (value1.constructor.name === 'Query' ||\n value1.constructor.name === 'DataManager')) {\n if (JSON.stringify(value1) === JSON.stringify(value2)) {\n return true;\n }\n }\n }\n return false;\n };\n ComponentBase.prototype.compareObjects = function (oldProps, newProps, propName) {\n var status = true;\n var lenSimilarity = (oldProps.length === newProps.length);\n var diffArray = [];\n var templateProps = !isNullOrUndefined(this['templateProps']) ? this['templateProps'] : [];\n if (lenSimilarity) {\n for (var i = 0, len = newProps.length; i < len; i++) {\n var curObj = {};\n var oldProp = oldProps[parseInt(i.toString(), 10)];\n var newProp = newProps[parseInt(i.toString(), 10)];\n var keys = Object.keys(newProp);\n if (keys.length !== 0) {\n for (var _i = 0, keys_2 = keys; _i < keys_2.length; _i++) {\n var key = keys_2[_i];\n var oldValue = oldProp[\"\" + key];\n var newValue = newProp[\"\" + key];\n if (key === 'items') {\n for (var _j = 0; _j < newValue.length; _j++) {\n if (this.getModuleName() === 'richtexteditor' && typeof (newValue[parseInt(_j.toString(), 10)]) === 'object') {\n return { status: true };\n }\n }\n }\n if (this.getModuleName() === 'grid' && key === 'field') {\n curObj[\"\" + key] = newValue;\n }\n if (!oldProp.hasOwnProperty(key) || !((templateProps.length > 0 && templateProps.indexOf(\"\" + key) === -1 && typeof (newValue) === 'function') ? this.compareValues(oldValue.toString(), newValue.toString()) : this.compareValues(oldValue, newValue))) {\n if (!propName) {\n return { status: false };\n }\n status = false;\n curObj[\"\" + key] = newValue;\n }\n }\n }\n else if (newProps[parseInt(i.toString(), 10)] === oldProps[parseInt(i.toString(), 10)]) {\n status = true;\n }\n else {\n if (!propName) {\n return { status: false };\n }\n status = false;\n }\n if (this.getModuleName() === 'grid' && propName === 'columns' && isNullOrUndefined(curObj['field'])) {\n curObj['field'] = undefined;\n }\n if (Object.keys(curObj).length) {\n diffArray.push({ index: i, value: curObj, key: propName });\n }\n }\n }\n else {\n status = false;\n }\n return { status: status, changedProperties: diffArray };\n };\n ComponentBase.prototype.refreshChild = function (silent, props) {\n if (this.checkInjectedModules) {\n var prevModule = this.getInjectedModules() || [];\n var curModule = this.getInjectedServices() || [];\n for (var _i = 0, curModule_1 = curModule; _i < curModule_1.length; _i++) {\n var mod = curModule_1[_i];\n if (prevModule.indexOf(mod) === -1) {\n prevModule.push(mod);\n }\n }\n this.injectedModules = prevModule;\n }\n if (this.directivekeys) {\n var changedProps = [];\n var directiveValue = this.validateChildren({}, this.directivekeys, (props || this.props));\n if (directiveValue && Object.keys(directiveValue).length) {\n if (!silent && this.skipRefresh) {\n for (var _a = 0, _b = this.skipRefresh; _a < _b.length; _a++) {\n var fields = _b[_a];\n delete directiveValue[\"\" + fields];\n }\n }\n if (this.prevProperties) {\n var dKeys = Object.keys(this.prevProperties);\n for (var i = 0; i < dKeys.length; i++) {\n var key = dKeys[parseInt(i.toString(), 10)];\n if (!directiveValue.hasOwnProperty(key)) {\n continue;\n }\n var compareOutput = this.compareObjects(this.prevProperties[\"\" + key], directiveValue[\"\" + key], key);\n if (compareOutput.status) {\n delete directiveValue[\"\" + key];\n }\n else {\n if (compareOutput.changedProperties.length) {\n changedProps = changedProps.concat(compareOutput.changedProperties);\n }\n var obj = {};\n obj[\"\" + key] = directiveValue[\"\" + key];\n this.prevProperties = extend(this.prevProperties, obj);\n }\n }\n }\n else {\n this.prevProperties = extend({}, directiveValue, {}, true);\n }\n if (changedProps.length) {\n if (this.getModuleName() === 'grid' && key === 'columns') {\n for (var _c1 = 0, allColumns = this.columns; _c1 < allColumns.length; _c1++) {\n var compareField1 = getValue('field', allColumns[parseInt(_c1.toString(), 10)]);\n var compareField2 = getValue(_c1 + '.value.field', changedProps);\n if (compareField1 === compareField2) {\n var propInstance = getValue(changedProps[parseInt(_c1.toString(), 10)].key + '.' + changedProps[parseInt(_c1.toString(), 10)].index, this);\n if (propInstance && propInstance.setProperties) {\n propInstance.setProperties(changedProps[parseInt(_c1.toString(), 10)].value);\n }\n else {\n extend(propInstance, changedProps[parseInt(_c1.toString(), 10)].value);\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n else {\n for (var _c = 0, changedProps_1 = changedProps; _c < changedProps_1.length; _c++) {\n var changes = changedProps_1[_c];\n var propInstance_1 = getValue(changes.key + '.' + changes.index, this);\n if (propInstance_1 && propInstance_1.setProperties) {\n propInstance_1.setProperties(changes.value);\n }\n else {\n extend(propInstance_1, changes.value);\n }\n }\n }\n }\n else {\n this.setProperties(directiveValue, silent);\n }\n }\n }\n };\n ComponentBase.prototype.componentWillUnmount = function () {\n clearTimeout(this.cachedTimeOut);\n var modulesName = ['dropdowntree', 'checkbox'];\n // tslint:disable-next-line:no-any\n if (this.initRenderCalled && this.isAppendCalled && this.element && ((!modulesName.indexOf(this.getModuleName())) ? document.body.contains(this.element) : true) && !this.isDestroyed && this.isCreated) {\n this.destroy();\n }\n onIntlChange.offIntlEvents();\n };\n // tslint:disable:no-any\n ComponentBase.prototype.appendReactElement = function (element, container) {\n var portal = ReactDOM.createPortal(element, container);\n if (!this.portals) {\n this.portals = [portal];\n }\n else {\n this.portals.push(portal);\n }\n };\n // tslint:disable:no-any\n ComponentBase.prototype.renderReactTemplates = function (callback) {\n this.isReactForeceUpdate = true;\n if (callback) {\n this.forceUpdate(callback);\n }\n else {\n this.forceUpdate();\n }\n this.isReactForeceUpdate = false;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.clearTemplate = function (templateNames, index, callback) {\n var _this = this;\n var tempPortal = [];\n if (templateNames && templateNames.length) {\n Array.prototype.forEach.call(templateNames, function (propName) {\n var indexCount = 0;\n var propIndexCount = 0;\n _this.portals.forEach(function (portal) {\n if (portal.propName === propName) {\n tempPortal.push(propIndexCount);\n propIndexCount++;\n }\n });\n if (!isNullOrUndefined(index) && _this.portals[index] && _this.portals[index].propName === propName) {\n _this.portals.splice(index, 1);\n indexCount++;\n }\n else {\n for (var i = 0; i < _this.portals.length; i++) {\n if (_this.portals[parseInt(i.toString(), 10)].propName === propName) {\n _this.portals.splice(i, 1);\n i--;\n }\n }\n }\n });\n }\n else {\n this.portals = [];\n }\n this.renderReactTemplates(callback);\n };\n /* tslint:disable:no-any */\n ComponentBase.prototype.validateChildren = function (childCache, mapper, props) {\n var flag = false;\n var childs = React.Children.toArray(props.children);\n for (var _i = 0, childs_1 = childs; _i < childs_1.length; _i++) {\n var child = childs_1[_i];\n var ifield = this.getChildType(child);\n var key = mapper[\"\" + ifield];\n if (ifield && mapper) {\n // tslint:disable\n var childProps = this.getChildProps(React.Children.toArray(child.props.children), key);\n if (childProps.length) {\n flag = true;\n // tslint:disable\n childCache[child.type.propertyName || ifield] = childProps;\n }\n }\n }\n if (flag) {\n return childCache;\n }\n return null;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getChildType = function (child) {\n if (child.type && child.type.isDirective) {\n return child.type.moduleName || '';\n }\n return '';\n };\n ComponentBase.prototype.getChildProps = function (subChild, matcher) {\n var ret = [];\n for (var _i = 0, subChild_1 = subChild; _i < subChild_1.length; _i++) {\n var child = subChild_1[_i];\n var accessProp = false;\n var key = void 0;\n if (typeof matcher === 'string') {\n accessProp = true;\n key = matcher;\n }\n else {\n key = Object.keys(matcher)[0];\n }\n var prop = child.props;\n // tslint:disable-next-line:no-any\n var field = this.getChildType(child);\n if (field === key) {\n if (accessProp || !prop.children) {\n // tslint:disable\n var cacheVal = extend({}, prop, {}, true);\n // tslint:disable\n this.processComplexTemplate(cacheVal, child.type);\n ret.push(cacheVal);\n }\n else {\n var cachedValue = this.validateChildren(extend({}, prop), matcher[\"\" + key], prop) || prop;\n if (cachedValue['children']) {\n delete cachedValue['children'];\n }\n // tslint:disable\n this.processComplexTemplate(cachedValue, child.type);\n ret.push(cachedValue);\n }\n }\n }\n return ret;\n };\n // tslint:disable:no-any\n ComponentBase.prototype.getInjectedServices = function () {\n var childs = React.Children.toArray(this.props.children);\n for (var _i = 0, childs_2 = childs; _i < childs_2.length; _i++) {\n var child = childs_2[_i];\n /* tslint:disable:no-any */\n if (child.type && child.type.isService) {\n return child.props.services;\n }\n }\n return [];\n };\n /**\n * @private\n */\n ComponentBase.reactUid = 1;\n return ComponentBase;\n}(React.Component));\nexport { ComponentBase };\n/* tslint:enable:no-any */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nimport * as React from 'react';\n/**\n * Directory base\n */\nvar ComplexBase = /** @class */ (function (_super) {\n __extends(ComplexBase, _super);\n function ComplexBase() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ComplexBase.prototype.render = function () {\n return null;\n };\n ComplexBase.isDirective = true;\n return ComplexBase;\n}(React.PureComponent));\nexport { ComplexBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\n/**\n * Dependency injection\n */\nimport * as React from 'react';\nvar Inject = /** @class */ (function (_super) {\n __extends(Inject, _super);\n function Inject() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n // eslint-disable-next-line\n Inject.prototype.render = function () {\n return null;\n };\n Inject.isService = true;\n return Inject;\n}(React.PureComponent));\nexport { Inject };\n","/**\n * Template compiler for react\n */\nimport { setTemplateEngine, getTemplateEngine, extend } from '@syncfusion/ej2-base';\nimport * as ReactDOM from 'react-dom';\nimport * as React from 'react';\n/* eslint-disable @typescript-eslint/no-explicit-any */\nvar stringCompiler = getTemplateEngine();\n// eslint-disable-next-line\nexport function compile(templateElement, helper) {\n if (typeof templateElement === 'string' || (templateElement.prototype && templateElement.prototype.CSPTemplate && typeof templateElement === 'function')) {\n return stringCompiler(templateElement, helper);\n }\n else {\n return function (data, component, prop, element) {\n var actTemplate = templateElement;\n var actData = data;\n if (typeof actTemplate === 'object') {\n actTemplate = templateElement.template;\n actData = extend({}, data, templateElement.data || {});\n }\n var cEle;\n if (element) {\n cEle = element;\n }\n else {\n cEle = document.createElement('div');\n }\n var rele = React.createElement(actTemplate, actData);\n var portal = ReactDOM.createPortal(rele, cEle);\n portal.propName = prop;\n if (!component.portals) {\n component.portals = [portal];\n }\n else {\n component.portals.push(portal);\n }\n if (!element) {\n return [cEle];\n }\n };\n }\n}\nsetTemplateEngine({ compile: compile });\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `ViewsDirective` represent a view of the react Schedule.\n * It must be contained in a Schedule component(`SchduleComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * \n * ```\n */\nvar ViewDirective = /** @class */ (function (_super) {\n __extends(ViewDirective, _super);\n function ViewDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ViewDirective.moduleName = 'view';\n ViewDirective.complexTemplate = { 'timeScale.minorSlotTemplate': 'timeScale.minorSlotTemplate', 'timeScale.majorSlotTemplate': 'timeScale.majorSlotTemplate', 'group.headerTooltipTemplate': 'group.headerTooltipTemplate' };\n return ViewDirective;\n}(ComplexBase));\nexport { ViewDirective };\nvar ViewsDirective = /** @class */ (function (_super) {\n __extends(ViewsDirective, _super);\n function ViewsDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ViewsDirective.propertyName = 'views';\n ViewsDirective.moduleName = 'views';\n return ViewsDirective;\n}(ComplexBase));\nexport { ViewsDirective };\n","/**\n * Position library\n */\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar elementRect;\nvar popupRect;\nvar element;\nvar parentDocument;\nvar fixedParent = false;\n/**\n *\n * @param {HTMLElement} anchor - specifies the element\n * @param {HTMLElement} element - specifies the element\n * @returns {OffsetPosition} - returns the value\n */\nexport function calculateRelativeBasedPosition(anchor, element) {\n var fixedElement = false;\n var anchorPos = { left: 0, top: 0 };\n var tempAnchor = anchor;\n if (!anchor || !element) {\n return anchorPos;\n }\n if (isNullOrUndefined(element.offsetParent) && element.style.position === 'fixed') {\n fixedElement = true;\n }\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left += anchor.offsetLeft;\n anchorPos.top += anchor.offsetTop;\n anchor = anchor.offsetParent;\n }\n anchor = tempAnchor;\n while ((element.offsetParent || fixedElement) && anchor && element.offsetParent !== anchor) {\n anchorPos.left -= anchor.scrollLeft;\n anchorPos.top -= anchor.scrollTop;\n anchor = anchor.parentElement;\n }\n return anchorPos;\n}\n/**\n *\n * @param {Element} currentElement - specifies the element\n * @param {string} positionX - specifies the position\n * @param {string} positionY - specifies the position\n * @param {boolean} parentElement - specifies the boolean\n * @param {ClientRect} targetValues - specifies the client\n * @returns {OffsetPosition} - returns the position\n */\nexport function calculatePosition(currentElement, positionX, positionY, parentElement, targetValues) {\n popupRect = undefined;\n popupRect = targetValues;\n fixedParent = parentElement ? true : false;\n if (!currentElement) {\n return { left: 0, top: 0 };\n }\n if (!positionX) {\n positionX = 'left';\n }\n if (!positionY) {\n positionY = 'top';\n }\n parentDocument = currentElement.ownerDocument;\n element = currentElement;\n var pos = { left: 0, top: 0 };\n return updatePosition(positionX.toLowerCase(), positionY.toLowerCase(), pos);\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosx(value, pos) {\n pos.left = value;\n}\n/**\n *\n * @param {number} value - specifies the number\n * @param {OffsetPosition} pos - specifies the position\n * @returns {void}\n */\nfunction setPosy(value, pos) {\n pos.top = value;\n}\n/**\n *\n * @param {string} posX - specifies the position\n * @param {string} posY - specifies the position\n * @param {OffsetPosition} pos - specifies the position\n * @returns {OffsetPosition} - returns the postion\n */\nfunction updatePosition(posX, posY, pos) {\n elementRect = element.getBoundingClientRect();\n switch (posY + posX) {\n case 'topcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'topright':\n setPosx(getElementRight(), pos);\n setPosy(getElementTop(), pos);\n break;\n case 'centercenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerright':\n setPosx(getElementRight(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'centerleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementVCenter(), pos);\n break;\n case 'bottomcenter':\n setPosx(getElementHCenter(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomright':\n setPosx(getElementRight(), pos);\n setPosy(getElementBottom(), pos);\n break;\n case 'bottomleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementBottom(), pos);\n break;\n default:\n case 'topleft':\n setPosx(getElementLeft(), pos);\n setPosy(getElementTop(), pos);\n break;\n }\n element = null;\n return pos;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollTop() {\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getBodyScrollLeft() {\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementBottom() {\n return fixedParent ? elementRect.bottom : elementRect.bottom + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementVCenter() {\n return getElementTop() + (elementRect.height / 2);\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementTop() {\n return fixedParent ? elementRect.top : elementRect.top + getBodyScrollTop();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementLeft() {\n return elementRect.left + getBodyScrollLeft();\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementRight() {\n var popupWidth = (element && (element.classList.contains('e-date-wrapper') || element.classList.contains('e-datetime-wrapper') || element.classList.contains('e-date-range-wrapper') || element.classList.contains('e-multiselect'))) ? (popupRect ? popupRect.width : 0) :\n (popupRect && (elementRect.width >= popupRect.width) ? popupRect.width : 0);\n return elementRect.right + getBodyScrollLeft() - popupWidth;\n}\n/**\n * @returns {number} - specifies the number value\n */\nfunction getElementHCenter() {\n return getElementLeft() + (elementRect.width / 2);\n}\n","import { isNullOrUndefined, classList, createElement, Browser } from '@syncfusion/ej2-base';\nvar globalTimeOut = {};\nvar DEFT_MAT_WIDTH = 30;\nvar DEFT_MAT3_WIDTH = 30;\nvar DEFT_FAB_WIDTH = 30;\nvar DEFT_FLUENT_WIDTH = 30;\nvar DEFT_BOOT_WIDTH = 30;\nvar DEFT_BOOT4_WIDTH = 36;\nvar DEFT_BOOT5_WIDTH = 36;\nvar CLS_SHOWSPIN = 'e-spin-show';\nvar CLS_HIDESPIN = 'e-spin-hide';\nvar CLS_MATERIALSPIN = 'e-spin-material';\nvar CLS_MATERIAL3SPIN = 'e-spin-material3';\nvar CLS_FABRICSPIN = 'e-spin-fabric';\nvar CLS_FLUENTSPIN = 'e-spin-fluent';\nvar CLS_TAILWINDSPIN = 'e-spin-tailwind';\nvar CLS_BOOTSPIN = 'e-spin-bootstrap';\nvar CLS_BOOT4SPIN = 'e-spin-bootstrap4';\nvar CLS_BOOT5SPIN = 'e-spin-bootstrap5';\nvar CLS_HIGHCONTRASTSPIN = 'e-spin-high-contrast';\nvar CLS_SPINWRAP = 'e-spinner-pane';\nvar CLS_SPININWRAP = 'e-spinner-inner';\nvar CLS_SPINCIRCLE = 'e-path-circle';\nvar CLS_SPINARC = 'e-path-arc';\nvar CLS_SPINLABEL = 'e-spin-label';\nvar CLS_SPINTEMPLATE = 'e-spin-template';\nvar spinTemplate = null;\nvar spinCSSClass = null;\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : blazorSpinner({ action: \"Create\", options: {target: targetElement}, type: \"\" });\n * ```\n *\n * @param {string} action - specifies the string\n * @param {CreateArgs} options - specifies the args\n * @param {string} target - specifies the target\n * @param {string} type - specifes the type\n * @returns {void}\n * @private\n */\nexport function Spinner(action, options, target, type) {\n switch (action) {\n case 'Create':\n /* eslint-disable */\n var element = document.querySelector(options.target);\n var args = { type: type, target: element, cssClass: options.cssClass,\n label: options.label, width: options.width };\n /* eslint-enable */\n createSpinner(args);\n break;\n case 'Show':\n showSpinner(document.querySelector(target));\n break;\n case 'Hide':\n hideSpinner(document.querySelector(target));\n break;\n case 'Set':\n // eslint-disable-next-line\n var setArgs = { cssClass: options.cssClass, type: type };\n setSpinner(setArgs);\n break;\n }\n}\n/**\n * Create a spinner for the specified target element.\n * ```\n * E.g : createSpinner({ target: targetElement, width: '34px', label: 'Loading..' });\n * ```\n *\n * @param {SpinnerArgs} args - specifies the args\n * @param {CreateElementArgs} internalCreateElement - specifis the element args\n * @returns {void}\n * @private\n */\nexport function createSpinner(args, internalCreateElement) {\n var _a;\n if (!args.target) {\n return;\n }\n var radius;\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n // eslint-disable-next-line\n var container = create_spinner_container(args.target, makeElement);\n if (!isNullOrUndefined(args.cssClass)) {\n var classNames = args.cssClass.split(' ').filter(function (className) { return className.trim() !== ''; });\n (_a = container.wrap.classList).add.apply(_a, classNames);\n }\n if (!isNullOrUndefined(args.template) || !isNullOrUndefined(spinTemplate)) {\n var template = !isNullOrUndefined(args.template) ? args.template : spinTemplate;\n container.wrap.classList.add(CLS_SPINTEMPLATE);\n replaceContent(container.wrap, template, spinCSSClass);\n }\n else {\n var theme = !isNullOrUndefined(args.type) ? args.type : getTheme(container.wrap);\n var width = !isNullOrUndefined(args.width) ? args.width : undefined;\n radius = calculateRadius(width, theme);\n setTheme(theme, container.wrap, radius, makeElement);\n if (!isNullOrUndefined(args.label)) {\n createLabel(container.inner_wrap, args.label, makeElement);\n }\n }\n container.wrap.classList.add(CLS_HIDESPIN);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} label - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction createLabel(container, label, makeElement) {\n var labelEle = makeElement('div', {});\n labelEle.classList.add(CLS_SPINLABEL);\n labelEle.innerHTML = label;\n container.appendChild(labelEle);\n return labelEle;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterialSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIALSPIN);\n mat_calculate_attributes(radius, container, 'Material', CLS_MATERIALSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createMaterial3Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Material3', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_MATERIAL3SPIN);\n mat_calculate_attributes(radius, container, 'Material3', CLS_MATERIAL3SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap4Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap4', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT4SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap4', CLS_BOOT4SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrap5Spinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap5', radius: radius };\n create_material_element(container, uniqueID, makeElement, CLS_BOOT5SPIN);\n mat_calculate_attributes(radius, container, 'Bootstrap5', CLS_BOOT5SPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} uniqueID - specifies the id.\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\nfunction startMatAnimate(container, uniqueID, radius) {\n var globalObject = {};\n var timeOutVar = 0;\n globalTimeOut[\"\" + uniqueID].timeOut = 0;\n globalObject[\"\" + uniqueID] = globalVariables(uniqueID, radius, 0, 0);\n // eslint-disable-next-line\n var spinnerInfo = { uniqueID: uniqueID, container: container, globalInfo: globalObject, timeOutVar: timeOutVar };\n animateMaterial(spinnerInfo);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFabricSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fabric', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FABRICSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FABRICSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createFluentSinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Fluent', radius: radius };\n create_fabric_element(container, uniqueID, CLS_FLUENTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_FLUENTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createTailwindSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Tailwind', radius: radius };\n create_fabric_element(container, uniqueID, CLS_TAILWINDSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_TAILWINDSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createHighContrastSpinner(container, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'HighContrast', radius: radius };\n create_fabric_element(container, uniqueID, CLS_HIGHCONTRASTSPIN, makeElement);\n fb_calculate_attributes(radius, container, CLS_HIGHCONTRASTSPIN);\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @returns {string} - returns the string\n */\nfunction getTheme(container) {\n var theme = window.getComputedStyle(container, ':after').getPropertyValue('content');\n return theme.replace(/['\"]+/g, '');\n}\n/**\n *\n * @param {string} theme - specifies the theme\n * @param {HTMLElement} container - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction setTheme(theme, container, radius, makeElement) {\n var innerContainer = container.querySelector('.' + CLS_SPININWRAP);\n var svg = innerContainer.querySelector('svg');\n if (!isNullOrUndefined(svg)) {\n innerContainer.removeChild(svg);\n }\n switch (theme) {\n case 'Material':\n createMaterialSpinner(innerContainer, radius, makeElement);\n break;\n case 'Material3':\n createMaterial3Spinner(innerContainer, radius, makeElement);\n break;\n case 'Fabric':\n createFabricSpinner(innerContainer, radius, makeElement);\n break;\n case 'Fluent':\n createFluentSinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap':\n createBootstrapSpinner(innerContainer, radius, makeElement);\n break;\n case 'HighContrast':\n createHighContrastSpinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap4':\n createBootstrap4Spinner(innerContainer, radius, makeElement);\n break;\n case 'Bootstrap5':\n createBootstrap5Spinner(innerContainer, radius, makeElement);\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n createTailwindSpinner(innerContainer, radius, makeElement);\n break;\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\nfunction createBootstrapSpinner(innerContainer, radius, makeElement) {\n var uniqueID = random_generator();\n globalTimeOut[\"\" + uniqueID] = { timeOut: 0, type: 'Bootstrap', radius: radius };\n create_bootstrap_element(innerContainer, uniqueID, makeElement);\n boot_calculate_attributes(innerContainer, radius);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the id\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_bootstrap_element(innerContainer, uniqueID, makeElement) {\n var svgBoot = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var viewBoxValue = 64;\n var trans = 32;\n var defaultRadius = 2;\n svgBoot.setAttribute('id', uniqueID);\n svgBoot.setAttribute('class', CLS_BOOTSPIN);\n svgBoot.setAttribute('viewBox', '0 0 ' + viewBoxValue + ' ' + viewBoxValue);\n innerContainer.insertBefore(svgBoot, innerContainer.firstChild);\n for (var item = 0; item <= 7; item++) {\n var bootCircle = document.createElementNS('http://www.w3.org/2000/svg', 'circle');\n bootCircle.setAttribute('class', CLS_SPINCIRCLE + '_' + item);\n bootCircle.setAttribute('r', defaultRadius + '');\n bootCircle.setAttribute('transform', 'translate(' + trans + ',' + trans + ')');\n svgBoot.appendChild(bootCircle);\n }\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {number} radius - specifies the radius\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction boot_calculate_attributes(innerContainer, radius) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var x = 0;\n var y = 0;\n var rad = 24;\n svg.style.width = svg.style.height = radius + 'px';\n var startArc = 90;\n for (var item = 0; item <= 7; item++) {\n var start = defineArcPoints(x, y, rad, startArc);\n var circleEle = svg.querySelector('.' + CLS_SPINCIRCLE + '_' + item);\n circleEle.setAttribute('cx', start.x + '');\n circleEle.setAttribute('cy', start.y + '');\n startArc = startArc >= 360 ? 0 : startArc;\n startArc = startArc + 45;\n }\n}\n/**\n *\n * @param {number} begin - specifies the number\n * @param {number} stop - specifirs the number\n * @returns {number[]} - returns the array of number\n */\nfunction generateSeries(begin, stop) {\n var series = [];\n var start = begin;\n var end = stop;\n // eslint-disable-next-line\n var increment = false, count = 1;\n formSeries(start);\n /**\n *\n * @param {number} i - specifies the number\n * @returns {void}\n */\n function formSeries(i) {\n series.push(i);\n if (i !== end || count === 1) {\n if (i <= start && i > 1 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n else if (i === 1) {\n i = 7;\n i = parseFloat((i + 0.2).toFixed(2));\n increment = true;\n }\n else if (i < 8 && increment) {\n i = parseFloat((i + 0.2).toFixed(2));\n if (i === 8) {\n increment = false;\n }\n }\n else if (i <= 8 && !increment) {\n i = parseFloat((i - 0.2).toFixed(2));\n }\n ++count;\n formSeries(i);\n }\n }\n return series;\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @returns {void}\n */\nfunction animateBootstrap(innerContainer) {\n var svg = innerContainer.querySelector('svg.e-spin-bootstrap');\n var id = svg.getAttribute('id');\n for (var i = 1; i <= 8; i++) {\n var circleEle = (innerContainer.getElementsByClassName('e-path-circle_' +\n (i === 8 ? 0 : i))[0]);\n rotation(circleEle, i, i, generateSeries(i, i), id);\n }\n /**\n *\n * @param {SVGCircleElement} circle - specifies the circl element\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {number} series - specifies the series\n * @param {string} id - specifies the id\n * @returns {void}\n */\n function rotation(circle, start, end, series, id) {\n var count = 0;\n boot_animate(start);\n // eslint-disable-next-line\n function boot_animate(radius) {\n if (globalTimeOut[\"\" + id].isAnimate) {\n ++count;\n circle.setAttribute('r', radius + '');\n if (count >= series.length) {\n count = 0;\n }\n // eslint-disable-next-line\n globalTimeOut[id].timeOut = setTimeout(boot_animate.bind(null, series[count]), 18);\n }\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {string} template - specifies the template\n * @param {string} cssClass - specifies the css class.\n * @returns {void}\n */\nfunction replaceContent(container, template, cssClass) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var inner = container.querySelector('.e-spinner-inner');\n inner.innerHTML = template;\n}\n/**\n *\n * @param {string} width - specifies the width\n * @param {string} theme - specifies the string\n * @returns {number} - returns the number\n */\nfunction calculateRadius(width, theme) {\n var defaultSize;\n switch (theme) {\n case 'Material':\n defaultSize = DEFT_MAT_WIDTH;\n break;\n case 'Material3':\n defaultSize = DEFT_MAT3_WIDTH;\n break;\n case 'Fabric':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Tailwind':\n case 'Tailwind-dark':\n defaultSize = DEFT_FAB_WIDTH;\n break;\n case 'Fluent':\n defaultSize = DEFT_FLUENT_WIDTH;\n break;\n case 'Bootstrap4':\n defaultSize = DEFT_BOOT4_WIDTH;\n break;\n case 'Bootstrap5':\n defaultSize = DEFT_BOOT5_WIDTH;\n break;\n default:\n defaultSize = DEFT_BOOT_WIDTH;\n }\n width = width ? parseFloat(width + '') : defaultSize;\n return theme === 'Bootstrap' ? width : width / 2;\n}\n/**\n *\n * @param {string} id - specifies the id\n * @param {number} radius - specifies the radius\n * @param {number} count - specifies the number count\n * @param {number} previousId - specifies the previous id\n * @returns {GlobalVariables} - returns the variables\n */\nfunction globalVariables(id, radius, count, previousId) {\n return {\n radius: radius,\n count: count,\n previousId: previousId\n };\n}\n/**\n * @returns {string} - returns the string\n */\n// eslint-disable-next-line\nfunction random_generator() {\n var random = '';\n var combine = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';\n for (var i = 0; i < 5; i++) {\n random += combine.charAt(Math.floor(Math.random() * combine.length));\n }\n return random;\n}\n/**\n *\n * @param {HTMLElement} innerCon - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {string} themeClass - specifies the string\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_fabric_element(innerCon, uniqueID, themeClass, makeElement) {\n var svgFabric = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n svgFabric.setAttribute('id', uniqueID);\n svgFabric.setAttribute('class', themeClass);\n var fabricCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n var fabricCircleArc = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n fabricCircleArc.setAttribute('class', CLS_SPINARC);\n innerCon.insertBefore(svgFabric, innerCon.firstChild);\n svgFabric.appendChild(fabricCirclePath);\n svgFabric.appendChild(fabricCircleArc);\n}\n/**\n *\n * @param {HTMLElement} innerContainer - specifies the element\n * @param {string} uniqueID - specifies the unique id\n * @param {createElementParams} makeElement - specifies the element\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_material_element(innerContainer, uniqueID, makeElement, cls) {\n var svgMaterial = document.createElementNS('http://www.w3.org/2000/svg', 'svg');\n var matCirclePath = document.createElementNS('http://www.w3.org/2000/svg', 'path');\n svgMaterial.setAttribute('class', cls);\n svgMaterial.setAttribute('id', uniqueID);\n matCirclePath.setAttribute('class', CLS_SPINCIRCLE);\n innerContainer.insertBefore(svgMaterial, innerContainer.firstChild);\n svgMaterial.appendChild(matCirclePath);\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {createElementParams} makeElement - specifies the element\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction create_spinner_container(target, makeElement) {\n var spinnerContainer = makeElement('div', {});\n var spinnerInnerContainer = makeElement('div', {});\n spinnerContainer.classList.add(CLS_SPINWRAP);\n spinnerInnerContainer.classList.add(CLS_SPININWRAP);\n spinnerInnerContainer.setAttribute('aria-disabled', 'true');\n target.appendChild(spinnerContainer);\n spinnerContainer.appendChild(spinnerInnerContainer);\n // eslint-disable-next-line\n return { wrap: spinnerContainer, inner_wrap: spinnerInnerContainer };\n}\n/**\n *\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner\n * @returns {void}\n */\nfunction animateMaterial(spinnerInfo) {\n var start = 1;\n var end = 149;\n var duration = 1333;\n var max = 75;\n createCircle(start, end, easeAnimation, duration, spinnerInfo.globalInfo[spinnerInfo.uniqueID].count, max, spinnerInfo);\n spinnerInfo.globalInfo[spinnerInfo.uniqueID].count = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].count % 4;\n}\n/**\n *\n * @param {number} start - specifies the number\n * @param {number} end - specifies the end number\n * @param {Function} easing - specifies the function\n * @param {number} duration - specifies the duration\n * @param {number} count - specifies the count\n * @param {number} max - specifies the max number\n * @param {SpinnerInfo} spinnerInfo - specifies the spinner info\n * @returns {void}\n */\nfunction createCircle(start, end, easing, duration, count, max, spinnerInfo) {\n var id = ++spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId;\n var startTime = new Date().getTime();\n var change = end - start;\n var diameter = getSize((spinnerInfo.globalInfo[spinnerInfo.uniqueID].radius * 2) + '');\n var strokeSize = getStrokeSize(diameter);\n var rotate = -90 * (spinnerInfo.globalInfo[spinnerInfo.uniqueID].count || 0);\n mat_animation(spinnerInfo);\n // eslint-disable-next-line\n function mat_animation(spinnerInfo) {\n var currentTime = Math.max(0, Math.min(new Date().getTime() - startTime, duration));\n updatePath(easing(currentTime, start, change, duration), spinnerInfo.container);\n if (id === spinnerInfo.globalInfo[spinnerInfo.uniqueID].previousId && currentTime < duration) {\n // eslint-disable-next-line\n globalTimeOut[spinnerInfo.uniqueID].timeOut = setTimeout(mat_animation.bind(null, spinnerInfo), 1);\n }\n else {\n animateMaterial(spinnerInfo);\n }\n }\n /**\n *\n * @param {number} value - specifies the number value\n * @param {HTMLElement} container - specifies the container\n * @returns {void}\n */\n function updatePath(value, container) {\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) || !isNullOrUndefined(container.querySelector('svg.e-spin-material3'))) {\n var svg = void 0;\n if (!isNullOrUndefined(container.querySelector('svg.e-spin-material')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material');\n }\n else if (!isNullOrUndefined(container.querySelector('svg.e-spin-material3')) && !isNullOrUndefined(container.querySelector('svg.e-spin-material3').querySelector('path.e-path-circle'))) {\n svg = container.querySelector('svg.e-spin-material3');\n }\n if (!isNullOrUndefined(svg)) {\n var path = svg.querySelector('path.e-path-circle');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, value, max) + '');\n path.setAttribute('transform', 'rotate(' + (rotate) + ' ' + diameter / 2 + ' ' + diameter / 2 + ')');\n }\n }\n }\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} container - specifies the element\n * @param {string} type - specifies the string type\n * @param {string} cls - specifies the string\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction mat_calculate_attributes(radius, container, type, cls) {\n var diameter = radius * 2;\n var svg = container.querySelector('svg.' + cls);\n var path = svg.querySelector('path.e-path-circle');\n var strokeSize = getStrokeSize(diameter);\n var transformOrigin = (diameter / 2) + 'px';\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.width = svg.style.height = diameter + 'px';\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n path.setAttribute('d', drawArc(diameter, strokeSize));\n if (type === 'Material' || type === 'Material3') {\n path.setAttribute('stroke-width', strokeSize + '');\n path.setAttribute('stroke-dasharray', ((diameter - strokeSize) * Math.PI * 0.75) + '');\n path.setAttribute('stroke-dashoffset', getDashOffset(diameter, strokeSize, 1, 75) + '');\n }\n}\n/**\n *\n * @param {string} value - specifies the value\n * @returns {number} - returns the number\n */\nfunction getSize(value) {\n var parsed = parseFloat(value);\n return parsed;\n}\n/**\n *\n * @param {number} diameter - specifies the diameter\n * @param {number} strokeSize - specifies the size\n * @returns {string} - returns the string\n */\nfunction drawArc(diameter, strokeSize) {\n var radius = diameter / 2;\n var offset = strokeSize / 2;\n return 'M' + radius + ',' + offset\n + 'A' + (radius - offset) + ',' + (radius - offset) + ' 0 1 1 ' + offset + ',' + radius;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @returns {number} - returns the number\n */\nfunction getStrokeSize(diameter) {\n return 10 / 100 * diameter;\n}\n/**\n *\n * @param {number} diameter - specifies the number\n * @param {number} strokeSize - specifies the stroke size\n * @param {number} value - specifies the value\n * @param {number} max - specifies the max number\n * @returns {number} - returns the number\n */\nfunction getDashOffset(diameter, strokeSize, value, max) {\n return (diameter - strokeSize) * Math.PI * ((3 * (max) / 100) - (value / 100));\n}\n/**\n *\n * @param {number} current - specifies the number\n * @param {number} start - specifies the stroke size\n * @param {number} change - specifies the value\n * @param {number} duration - specifies the max number\n * @returns {number} - returns the number\n */\nfunction easeAnimation(current, start, change, duration) {\n var timestamp = (current /= duration) * current;\n var timecount = timestamp * current;\n return start + change * (6 * timecount * timestamp + -15 * timestamp * timestamp + 10 * timecount);\n}\n/**\n *\n * @param {number} radius - specifies the number\n * @param {HTMLElement} innerConainer - specifies the element\n * @param {string} trgClass - specifies the class\n * @returns {void}\n */\n// eslint-disable-next-line\nfunction fb_calculate_attributes(radius, innerConainer, trgClass) {\n var centerX = radius;\n var centerY = radius;\n var diameter = radius * 2;\n // eslint-disable-next-line\n var startArc = 315, endArc = 45;\n var svg = innerConainer.querySelector('.' + trgClass);\n var circle = svg.querySelector('.e-path-circle');\n var path = svg.querySelector('.e-path-arc');\n var transformOrigin = (diameter / 2) + 'px';\n circle.setAttribute('d', defineCircle(centerX, centerY, radius));\n path.setAttribute('d', defineArc(centerX, centerY, radius, startArc, endArc));\n svg.setAttribute('viewBox', '0 0 ' + diameter + ' ' + diameter);\n svg.style.transformOrigin = transformOrigin + ' ' + transformOrigin + ' ' + transformOrigin;\n svg.style.width = svg.style.height = diameter + 'px';\n}\n/**\n *\n * @param {number} centerX - specifies the number\n * @param {number} centerY - specifies the stroke size\n * @param {number} radius - specifies the value\n * @param {number} angle - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArcPoints(centerX, centerY, radius, angle) {\n var radians = (angle - 90) * Math.PI / 180.0;\n return {\n x: centerX + (radius * Math.cos(radians)),\n y: centerY + (radius * Math.sin(radians))\n };\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the radius\n * @param {number} startArc - specifies the value\n * @param {number} endArc - specifies the max number\n * @returns {number} - returns the number\n */\nfunction defineArc(x, y, radius, startArc, endArc) {\n var start = defineArcPoints(x, y, radius, endArc);\n var end = defineArcPoints(x, y, radius, startArc);\n var d = [\n 'M', start.x, start.y,\n 'A', radius, radius, 0, 0, 0, end.x, end.y\n ].join(' ');\n return d;\n}\n/**\n *\n * @param {number} x - specifies the number\n * @param {number} y - specifies the stroke size\n * @param {number} radius - specifies the value\n * @returns {string} - returns the string\n */\nfunction defineCircle(x, y, radius) {\n var d = [\n 'M', x, y,\n 'm', -radius, 0,\n 'a', radius, radius, 0, 1, 0, radius * 2, 0,\n 'a', radius, radius, 0, 1, 0, -radius * 2, 0\n ].join(' ');\n return d;\n}\n/**\n * Function to show the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function showSpinner(container) {\n showHideSpinner(container, false);\n container = null;\n}\n/**\n *\n * @param {HTMLElement} container - specifies the element\n * @param {boolean} isHide - specifies the boolean\n * @returns {void}\n */\nfunction showHideSpinner(container, isHide) {\n var spinnerWrap;\n if (container) {\n if (container.classList.contains(CLS_SPINWRAP)) {\n spinnerWrap = container;\n }\n else {\n var spinWrapCollection = container.querySelectorAll('.' + CLS_SPINWRAP);\n if (Browser.isIE) {\n for (var i = 0; i < spinWrapCollection.length; i++) {\n // eslint-disable-next-line\n if (spinWrapCollection[i].parentElement && spinWrapCollection[i].parentElement === container) {\n // eslint-disable-next-line\n spinnerWrap = spinWrapCollection[i];\n break;\n }\n }\n }\n else {\n spinnerWrap = Array.from(spinWrapCollection).find(function (wrap) { return wrap.parentElement === container; }) || null;\n }\n }\n }\n if (container && spinnerWrap) {\n var inner = spinnerWrap.querySelector('.' + CLS_SPININWRAP);\n var spinCheck = void 0;\n // eslint-disable-next-line\n spinCheck = isHide ? !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_HIDESPIN) :\n !spinnerWrap.classList.contains(CLS_SPINTEMPLATE) && !spinnerWrap.classList.contains(CLS_SHOWSPIN);\n if (spinCheck) {\n var svgEle = spinnerWrap.querySelector('svg');\n if (isNullOrUndefined(svgEle)) {\n return;\n }\n var id = svgEle.getAttribute('id');\n globalTimeOut[\"\" + id].isAnimate = !isHide;\n switch (globalTimeOut[\"\" + id].type) {\n case 'Material':\n case 'Material3':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : startMatAnimate(inner, id, globalTimeOut[id].radius);\n break;\n case 'Bootstrap':\n // eslint-disable-next-line\n isHide ? clearTimeout(globalTimeOut[id].timeOut) : animateBootstrap(inner);\n break;\n }\n }\n // eslint-disable-next-line\n isHide ? classList(spinnerWrap, [CLS_HIDESPIN], [CLS_SHOWSPIN]) : classList(spinnerWrap, [CLS_SHOWSPIN], [CLS_HIDESPIN]);\n container = null;\n }\n}\n/**\n * Function to hide the Spinner.\n *\n * @param {HTMLElement} container - Specify the target of the Spinner.\n * @returns {void}\n * @private\n */\nexport function hideSpinner(container) {\n showHideSpinner(container, true);\n container = null;\n}\n// eslint-disable-next-line\n/**\n * Function to change the Spinners in a page globally from application end.\n * ```\n * E.g : setSpinner({ cssClass: 'custom-css'; type: 'Material' });\n * ```\n *\n * @param {SetSpinnerArgs} args - specifies the args\n * @param {createElementParams} internalCreateElement - specifies the element params\n * @returns {void}\n * @private\n */\nexport function setSpinner(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.template !== undefined) {\n spinTemplate = args.template;\n if (args.template !== undefined) {\n spinCSSClass = args.cssClass;\n }\n }\n var container = document.querySelectorAll('.' + CLS_SPINWRAP);\n for (var index = 0; index < container.length; index++) {\n ensureTemplate(args.template, container[index], args.type, args.cssClass, makeElement);\n }\n}\n/**\n *\n * @param {string} template - specifies the string\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction ensureTemplate(template, container, theme, cssClass, makeEle) {\n if (isNullOrUndefined(template) && !container.classList.contains(CLS_SPINTEMPLATE)) {\n replaceTheme(container, theme, cssClass, makeEle);\n if (container.classList.contains(CLS_SHOWSPIN)) {\n container.classList.remove(CLS_SHOWSPIN);\n showSpinner(container);\n }\n else {\n container.classList.remove(CLS_HIDESPIN);\n hideSpinner(container);\n }\n }\n else {\n spinTemplate = template;\n if (!isNullOrUndefined(cssClass)) {\n spinCSSClass = cssClass;\n }\n if (!isNullOrUndefined(spinTemplate)) {\n replaceContent(container, spinTemplate, spinCSSClass);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} container - specifies the container\n * @param {string} theme - specifies the theme\n * @param {string} cssClass - specifies the string class\n * @param {createElementParams} makeEle - specifies the params\n * @returns {void}\n */\nfunction replaceTheme(container, theme, cssClass, makeEle) {\n if (!isNullOrUndefined(cssClass)) {\n container.classList.add(cssClass);\n }\n var svgElement = container.querySelector('svg');\n if (!isNullOrUndefined(svgElement)) {\n var radius = theme === 'Bootstrap' ? parseFloat(svgElement.style.height) : parseFloat(svgElement.style.height) / 2;\n var classNames = svgElement.getAttribute('class');\n var svgClassList = classNames.split(/\\s/);\n if (svgClassList.indexOf('e-spin-material') >= 0) {\n var id = svgElement.getAttribute('id');\n clearTimeout(globalTimeOut[\"\" + id].timeOut);\n }\n setTheme(theme, container, radius, makeEle);\n }\n}\n","/**\n * Collision module.\n */\nimport { calculatePosition } from './position';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\nvar parentDocument;\nvar targetContainer;\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision coordinates\n * @param {OffsetPosition} position - specifies the position\n * @returns {void}\n */\nexport function fit(element, viewPortElement, axis, position) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: false, Y: false }; }\n if (!axis.Y && !axis.X) {\n return { left: 0, top: 0 };\n }\n var elemData = element.getBoundingClientRect();\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n if (!position) {\n position = calculatePosition(element, 'left', 'top');\n }\n if (axis.X) {\n var containerWidth = targetContainer ? getTargetContainerWidth() : getViewPortWidth();\n var containerLeft = ContainerLeft();\n var containerRight = ContainerRight();\n var overLeft = containerLeft - position.left;\n var overRight = position.left + elemData.width - containerRight;\n if (elemData.width > containerWidth) {\n if (overLeft > 0 && overRight <= 0) {\n position.left = containerRight - elemData.width;\n }\n else if (overRight > 0 && overLeft <= 0) {\n position.left = containerLeft;\n }\n else {\n position.left = overLeft > overRight ? (containerRight - elemData.width) : containerLeft;\n }\n }\n else if (overLeft > 0) {\n position.left += overLeft;\n }\n else if (overRight > 0) {\n position.left -= overRight;\n }\n }\n if (axis.Y) {\n var containerHeight = targetContainer ? getTargetContainerHeight() : getViewPortHeight();\n var containerTop = ContainerTop();\n var containerBottom = ContainerBottom();\n var overTop = containerTop - position.top;\n var overBottom = position.top + elemData.height - containerBottom;\n if (elemData.height > containerHeight) {\n if (overTop > 0 && overBottom <= 0) {\n position.top = containerBottom - elemData.height;\n }\n else if (overBottom > 0 && overTop <= 0) {\n position.top = containerTop;\n }\n else {\n position.top = overTop > overBottom ? (containerBottom - elemData.height) : containerTop;\n }\n }\n else if (overTop > 0) {\n position.top += overTop;\n }\n else if (overBottom > 0) {\n position.top -= overBottom;\n }\n }\n return position;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the html element\n * @param {HTMLElement} viewPortElement - specifies the html element\n * @param {number} x - specifies the number\n * @param {number} y - specifies the number\n * @returns {string[]} - returns the string value\n */\nexport function isCollide(element, viewPortElement, x, y) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n var elemOffset = calculatePosition(element, 'left', 'top');\n if (x) {\n elemOffset.left = x;\n }\n if (y) {\n elemOffset.top = y;\n }\n var data = [];\n targetContainer = viewPortElement;\n parentDocument = element.ownerDocument;\n var elementRect = element.getBoundingClientRect();\n var top = elemOffset.top;\n var left = elemOffset.left;\n var right = elemOffset.left + elementRect.width;\n var bottom = elemOffset.top + elementRect.height;\n // eslint-disable-next-line\n var topData = '', leftData = '';\n var yAxis = topCollideCheck(top, bottom);\n var xAxis = leftCollideCheck(left, right);\n if (yAxis.topSide) {\n data.push('top');\n }\n if (xAxis.rightSide) {\n data.push('right');\n }\n if (xAxis.leftSide) {\n data.push('left');\n }\n if (yAxis.bottomSide) {\n data.push('bottom');\n }\n return data;\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {HTMLElement} target - specifies the element\n * @param {number} offsetX - specifies the number\n * @param {number} offsetY - specifies the number\n * @param {string} positionX - specifies the string value\n * @param {string} positionY - specifies the string value\n * @param {HTMLElement} viewPortElement - specifies the element\n * @param {CollisionCoordinates} axis - specifies the collision axis\n * @param {boolean} fixedParent - specifies the boolean\n * @returns {void}\n */\nexport function flip(element, target, offsetX, offsetY, positionX, positionY, viewPortElement, \n/* eslint-disable */\naxis, fixedParent) {\n if (viewPortElement === void 0) { viewPortElement = null; }\n if (axis === void 0) { axis = { X: true, Y: true }; }\n if (!target || !element || !positionX || !positionY || (!axis.X && !axis.Y)) {\n return;\n }\n var tEdge = { TL: null,\n TR: null,\n BL: null,\n BR: null\n }, eEdge = {\n TL: null,\n TR: null,\n BL: null,\n BR: null\n /* eslint-enable */\n };\n var elementRect;\n if (window.getComputedStyle(element).display === 'none') {\n var oldVisibility = element.style.visibility;\n element.style.visibility = 'hidden';\n element.style.display = 'block';\n elementRect = element.getBoundingClientRect();\n element.style.removeProperty('display');\n element.style.visibility = oldVisibility;\n }\n else {\n elementRect = element.getBoundingClientRect();\n }\n var pos = {\n posX: positionX, posY: positionY, offsetX: offsetX, offsetY: offsetY, position: { left: 0, top: 0 }\n };\n targetContainer = viewPortElement;\n parentDocument = target.ownerDocument;\n updateElementData(target, tEdge, pos, fixedParent, elementRect);\n setPosition(eEdge, pos, elementRect);\n if (axis.X) {\n leftFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n if (axis.Y && tEdge.TL.top > -1) {\n topFlip(target, eEdge, tEdge, pos, elementRect, true);\n }\n setPopup(element, pos, elementRect);\n}\n/**\n *\n * @param {HTMLElement} element - specifies the element\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction setPopup(element, pos, elementRect) {\n //eslint-disable-next-line\n var left = 0, top = 0;\n if (element.offsetParent != null\n && (getComputedStyle(element.offsetParent).position === 'absolute' ||\n getComputedStyle(element.offsetParent).position === 'relative')) {\n var data = calculatePosition(element.offsetParent, 'left', 'top', false, elementRect);\n left = data.left;\n top = data.top;\n }\n var scaleX = 1;\n var scaleY = 1;\n if (element.offsetParent) {\n var transformStyle = getComputedStyle(element.offsetParent).transform;\n if (transformStyle !== 'none') {\n var matrix = new DOMMatrix(transformStyle);\n scaleX = matrix.a;\n scaleY = matrix.d;\n }\n }\n element.style.top = ((pos.position.top / scaleY) + pos.offsetY - (top)) + 'px';\n element.style.left = ((pos.position.left / scaleX) + pos.offsetX - (left)) + 'px';\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {PositionLocation} pos - specifies theloaction\n * @param {boolean} fixedParent - specifies the boolean\n * @param {ClientRect} elementRect - specifies the client rect\n * @returns {void}\n */\nfunction updateElementData(target, edge, pos, fixedParent, elementRect) {\n pos.position = calculatePosition(target, pos.posX, pos.posY, fixedParent, elementRect);\n edge.TL = calculatePosition(target, 'left', 'top', fixedParent, elementRect);\n edge.TR = calculatePosition(target, 'right', 'top', fixedParent, elementRect);\n edge.BR = calculatePosition(target, 'left', 'bottom', fixedParent, elementRect);\n edge.BL = calculatePosition(target, 'right', 'bottom', fixedParent, elementRect);\n}\n/**\n *\n * @param {EdgeOffset} eStatus - specifies the status\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client\n * @returns {void}\n */\nfunction setPosition(eStatus, pos, elementRect) {\n eStatus.TL = { top: pos.position.top + pos.offsetY, left: pos.position.left + pos.offsetX };\n eStatus.TR = { top: eStatus.TL.top, left: eStatus.TL.left + elementRect.width };\n eStatus.BL = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left };\n eStatus.BR = { top: eStatus.TL.top + elementRect.height,\n left: eStatus.TL.left + elementRect.width };\n}\n/**\n *\n * @param {number} left - specifies the number\n * @param {number} right - specifies the number\n * @returns {LeftCorners} - returns the value\n */\nfunction leftCollideCheck(left, right) {\n //eslint-disable-next-line\n var leftSide = false, rightSide = false;\n if (((left - getBodyScrollLeft()) < ContainerLeft())) {\n leftSide = true;\n }\n if (right > ContainerRight()) {\n rightSide = true;\n }\n return { leftSide: leftSide, rightSide: rightSide };\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifes the element\n * @param {EdgeOffset} tEdge - specifies the edge offset\n * @param {PositionLocation} pos - specifes the location\n * @param {ClientRect} elementRect - specifies the client\n * @param {boolean} deepCheck - specifies the boolean value\n * @returns {void}\n */\nfunction leftFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = leftCollideCheck(edge.TL.left, edge.TR.left);\n if ((tEdge.TL.left - getBodyScrollLeft()) <= ContainerLeft()) {\n collideSide.leftSide = false;\n }\n if (tEdge.TR.left > ContainerRight()) {\n collideSide.rightSide = false;\n }\n if ((collideSide.leftSide && !collideSide.rightSide) || (!collideSide.leftSide && collideSide.rightSide)) {\n if (pos.posX === 'right') {\n pos.posX = 'left';\n }\n else {\n pos.posX = 'right';\n }\n pos.offsetX = pos.offsetX + elementRect.width;\n pos.offsetX = -1 * pos.offsetX;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n leftFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {HTMLElement} target - specifies the element\n * @param {EdgeOffset} edge - specifies the offset\n * @param {EdgeOffset} tEdge - specifies the offset\n * @param {PositionLocation} pos - specifies the location\n * @param {ClientRect} elementRect - specifies the client rect\n * @param {boolean} deepCheck - specifies the boolean\n * @returns {void}\n */\nfunction topFlip(target, edge, tEdge, pos, elementRect, deepCheck) {\n var collideSide = topCollideCheck(edge.TL.top, edge.BL.top);\n if ((tEdge.TL.top - getBodyScrollTop()) <= ContainerTop()) {\n collideSide.topSide = false;\n }\n if (tEdge.BL.top >= ContainerBottom() && target.getBoundingClientRect().bottom < window.innerHeight) {\n collideSide.bottomSide = false;\n }\n if ((collideSide.topSide && !collideSide.bottomSide) || (!collideSide.topSide && collideSide.bottomSide)) {\n if (pos.posY === 'top') {\n pos.posY = 'bottom';\n }\n else {\n pos.posY = 'top';\n }\n pos.offsetY = pos.offsetY + elementRect.height;\n pos.offsetY = -1 * pos.offsetY;\n pos.position = calculatePosition(target, pos.posX, pos.posY, false, elementRect);\n setPosition(edge, pos, elementRect);\n if (deepCheck) {\n topFlip(target, edge, tEdge, pos, elementRect, false);\n }\n }\n}\n/**\n *\n * @param {number} top - specifies the number\n * @param {number} bottom - specifies the number\n * @returns {TopCorners} - retyrns the value\n */\nfunction topCollideCheck(top, bottom) {\n //eslint-disable-next-line\n var topSide = false, bottomSide = false;\n if ((top - getBodyScrollTop()) < ContainerTop()) {\n topSide = true;\n }\n if (bottom > ContainerBottom()) {\n bottomSide = true;\n }\n return { topSide: topSide, bottomSide: bottomSide };\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerWidth() {\n return targetContainer.getBoundingClientRect().width;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerHeight() {\n return targetContainer.getBoundingClientRect().height;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerLeft() {\n return targetContainer.getBoundingClientRect().left;\n}\n/**\n * @returns {void}\n */\nfunction getTargetContainerTop() {\n return targetContainer.getBoundingClientRect().top;\n}\n//eslint-disable-next-line\nfunction ContainerTop() {\n if (targetContainer) {\n return getTargetContainerTop();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerLeft() {\n if (targetContainer) {\n return getTargetContainerLeft();\n }\n return 0;\n}\n//eslint-disable-next-line\nfunction ContainerRight() {\n if (targetContainer) {\n return (getBodyScrollLeft() + getTargetContainerLeft() + getTargetContainerWidth());\n }\n return (getBodyScrollLeft() + getViewPortWidth());\n}\n//eslint-disable-next-line\nfunction ContainerBottom() {\n if (targetContainer) {\n return (getBodyScrollTop() + getTargetContainerTop() + getTargetContainerHeight());\n }\n return (getBodyScrollTop() + getViewPortHeight());\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollTop() {\n // if(targetContainer)\n // return targetContainer.scrollTop;\n return parentDocument.documentElement.scrollTop || parentDocument.body.scrollTop;\n}\n/**\n * @returns {void}\n */\nfunction getBodyScrollLeft() {\n // if(targetContainer)\n // return targetContainer.scrollLeft;\n return parentDocument.documentElement.scrollLeft || parentDocument.body.scrollLeft;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortHeight() {\n return window.innerHeight;\n}\n/**\n * @returns {void}\n */\nfunction getViewPortWidth() {\n var windowWidth = window.innerWidth;\n var documentReact = document.documentElement.getBoundingClientRect();\n var offsetWidth = (isNullOrUndefined(document.documentElement)) ? 0 : documentReact.width;\n return windowWidth - (windowWidth - offsetWidth);\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { setStyleAttribute, addClass, removeClass, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit } from '@syncfusion/ej2-base';\nimport { Browser } from '@syncfusion/ej2-base';\nimport { calculatePosition, calculateRelativeBasedPosition } from '../common/position';\nimport { Animation, Property, Event, Component } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { EventHandler } from '@syncfusion/ej2-base';\nimport { flip, fit, isCollide } from '../common/collision';\n/**\n * Specifies the offset position values.\n */\nvar PositionData = /** @class */ (function (_super) {\n __extends(PositionData, _super);\n function PositionData() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('left')\n ], PositionData.prototype, \"X\", void 0);\n __decorate([\n Property('top')\n ], PositionData.prototype, \"Y\", void 0);\n return PositionData;\n}(ChildProperty));\nexport { PositionData };\n// don't use space in classNames\nvar CLASSNAMES = {\n ROOT: 'e-popup',\n RTL: 'e-rtl',\n OPEN: 'e-popup-open',\n CLOSE: 'e-popup-close'\n};\n/**\n * Represents the Popup Component\n * ```html\n *
\n *
Popup Content
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Popup = /** @class */ (function (_super) {\n __extends(Popup, _super);\n function Popup(element, options) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Called internally if any of the property value changed.\n *\n * @param {PopupModel} newProp - specifies the new property\n * @param {PopupModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Popup.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'zIndex':\n setStyleAttribute(this.element, { 'zIndex': newProp.zIndex });\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'position':\n case 'relateTo':\n this.refreshPosition();\n break;\n case 'offsetX':\n // eslint-disable-next-line\n var x = newProp.offsetX - oldProp.offsetX;\n this.element.style.left = (parseInt(this.element.style.left, 10) + (x)).toString() + 'px';\n break;\n case 'offsetY':\n // eslint-disable-next-line\n var y = newProp.offsetY - oldProp.offsetY;\n this.element.style.top = (parseInt(this.element.style.top, 10) + (y)).toString() + 'px';\n break;\n case 'content':\n this.setContent();\n break;\n case 'actionOnScroll':\n if (newProp.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n else {\n this.unwireScrollEvents();\n }\n break;\n }\n }\n };\n /**\n * gets the Component module name.\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.getModuleName = function () {\n return 'popup';\n };\n /**\n * To resolve if any collision occurs.\n *\n * @returns {void}\n */\n Popup.prototype.resolveCollision = function () {\n this.checkCollision();\n };\n /**\n * gets the persisted state properties of the Component.\n *\n * @returns {void}\n */\n Popup.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * To destroy the control.\n *\n * @returns {void}\n */\n Popup.prototype.destroy = function () {\n if (this.element.classList.contains('e-popup-open')) {\n this.unwireEvents();\n }\n this.element.classList.remove(CLASSNAMES.ROOT, CLASSNAMES.RTL, CLASSNAMES.OPEN, CLASSNAMES.CLOSE);\n this.content = null;\n this.relateTo = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.render = function () {\n this.element.classList.add(CLASSNAMES.ROOT);\n var styles = {};\n if (this.zIndex !== 1000) {\n styles.zIndex = this.zIndex;\n }\n if (this.width !== 'auto') {\n styles.width = formatUnit(this.width);\n }\n if (this.height !== 'auto') {\n styles.height = formatUnit(this.height);\n }\n setStyleAttribute(this.element, styles);\n this.fixedParent = false;\n this.setEnableRtl();\n this.setContent();\n };\n Popup.prototype.wireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.add(window, 'orientationchange', this.orientationOnChange, this);\n }\n if (this.actionOnScroll !== 'none') {\n this.wireScrollEvents();\n }\n };\n Popup.prototype.wireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_1 = _a[_i];\n EventHandler.add(parent_1, 'scroll', this.scrollRefresh, this);\n }\n }\n };\n Popup.prototype.unwireEvents = function () {\n if (Browser.isDevice) {\n EventHandler.remove(window, 'orientationchange', this.orientationOnChange);\n }\n if (this.actionOnScroll !== 'none') {\n this.unwireScrollEvents();\n }\n };\n Popup.prototype.unwireScrollEvents = function () {\n if (this.getRelateToElement()) {\n for (var _i = 0, _a = this.getScrollableParent(this.getRelateToElement()); _i < _a.length; _i++) {\n var parent_2 = _a[_i];\n EventHandler.remove(parent_2, 'scroll', this.scrollRefresh);\n }\n }\n };\n Popup.prototype.getRelateToElement = function () {\n var relateToElement = this.relateTo === '' || isNullOrUndefined(this.relateTo) ?\n document.body : this.relateTo;\n this.setProperties({ relateTo: relateToElement }, true);\n return ((typeof this.relateTo) === 'string') ?\n document.querySelector(this.relateTo) : this.relateTo;\n };\n Popup.prototype.scrollRefresh = function (e) {\n if (this.actionOnScroll === 'reposition') {\n if (!isNullOrUndefined(this.element) && !(this.element.offsetParent === e.target ||\n (this.element.offsetParent && this.element.offsetParent.tagName === 'BODY' &&\n e.target.parentElement == null))) {\n this.refreshPosition();\n }\n }\n else if (this.actionOnScroll === 'hide') {\n this.hide();\n }\n if (this.actionOnScroll !== 'none') {\n if (this.getRelateToElement()) {\n var targetVisible = this.isElementOnViewport(this.getRelateToElement(), e.target);\n if (!targetVisible && !this.targetInvisibleStatus) {\n this.trigger('targetExitViewport');\n this.targetInvisibleStatus = true;\n }\n else if (targetVisible) {\n this.targetInvisibleStatus = false;\n }\n }\n }\n };\n /**\n * This method is to get the element visibility on viewport when scroll\n * the page. This method will returns true even though 1 px of element\n * part is in visible.\n *\n * @param {HTMLElement} relateToElement - specifies the element\n * @param {HTMLElement} scrollElement - specifies the scroll element\n * @returns {boolean} - retruns the boolean\n */\n // eslint-disable-next-line\n Popup.prototype.isElementOnViewport = function (relateToElement, scrollElement) {\n var scrollParents = this.getScrollableParent(relateToElement);\n for (var parent_3 = 0; parent_3 < scrollParents.length; parent_3++) {\n if (this.isElementVisible(relateToElement, scrollParents[parent_3])) {\n continue;\n }\n else {\n return false;\n }\n }\n return true;\n };\n Popup.prototype.isElementVisible = function (relateToElement, scrollElement) {\n var rect = this.checkGetBoundingClientRect(relateToElement);\n if (!rect.height || !rect.width) {\n return false;\n }\n if (!isNullOrUndefined(this.checkGetBoundingClientRect(scrollElement))) {\n var parent_4 = scrollElement.getBoundingClientRect();\n return !(rect.bottom < parent_4.top) &&\n (!(rect.bottom > parent_4.bottom) &&\n (!(rect.right > parent_4.right) &&\n !(rect.left < parent_4.left)));\n }\n else {\n var win = window;\n var windowView = {\n top: win.scrollY,\n left: win.scrollX,\n right: win.scrollX + win.outerWidth,\n bottom: win.scrollY + win.outerHeight\n };\n var off = calculatePosition(relateToElement);\n var ele = {\n top: off.top,\n left: off.left,\n right: off.left + rect.width,\n bottom: off.top + rect.height\n };\n var elementView = {\n top: windowView.bottom - ele.top,\n left: windowView.right - ele.left,\n bottom: ele.bottom - windowView.top,\n right: ele.right - windowView.left\n };\n return elementView.top > 0\n && elementView.left > 0\n && elementView.right > 0\n && elementView.bottom > 0;\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Popup.prototype.preRender = function () {\n //There is no event handler\n };\n Popup.prototype.setEnableRtl = function () {\n this.reposition();\n // eslint-disable-next-line\n this.enableRtl ? this.element.classList.add(CLASSNAMES.RTL) : this.element.classList.remove(CLASSNAMES.RTL);\n };\n Popup.prototype.setContent = function () {\n if (!isNullOrUndefined(this.content)) {\n this.element.innerHTML = '';\n if (typeof (this.content) === 'string') {\n this.element.textContent = this.content;\n }\n else {\n var relateToElem = this.getRelateToElement();\n // eslint-disable-next-line\n var props = this.content.props;\n if (!relateToElem.classList.contains('e-dropdown-btn') || isNullOrUndefined(props)) {\n this.element.appendChild(this.content);\n }\n }\n }\n };\n Popup.prototype.orientationOnChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.refreshPosition();\n }, 200);\n };\n // eslint-disable-next-line\n /**\n * Based on the `relative` element and `offset` values, `Popup` element position will refreshed.\n *\n * @returns {void}\n */\n Popup.prototype.refreshPosition = function (target, collision) {\n if (!isNullOrUndefined(target)) {\n this.checkFixedParent(target);\n }\n this.reposition();\n if (!collision) {\n this.checkCollision();\n }\n };\n Popup.prototype.reposition = function () {\n var pos;\n var position;\n var relateToElement = this.getRelateToElement();\n if (typeof this.position.X === 'number' && typeof this.position.Y === 'number') {\n pos = { left: this.position.X, top: this.position.Y };\n }\n else if ((typeof this.position.X === 'string' && typeof this.position.Y === 'number') ||\n (typeof this.position.X === 'number' && typeof this.position.Y === 'string')) {\n var parentDisplay = void 0;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n if (this.element.classList.contains('e-dlg-modal')) {\n parentDisplay = this.element.parentElement.style.display;\n this.element.parentElement.style.display = 'block';\n }\n position = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY);\n if (typeof this.position.X === 'string') {\n pos = { left: position.left, top: this.position.Y };\n }\n else {\n pos = { left: this.position.X, top: position.top };\n }\n this.element.style.display = display;\n if (this.element.classList.contains('e-dlg-modal')) {\n this.element.parentElement.style.display = parentDisplay;\n }\n }\n else if (relateToElement) {\n var height = this.element.clientHeight;\n var display = this.element.style.display;\n this.element.style.display = 'block';\n pos = this.getAnchorPosition(relateToElement, this.element, this.position, this.offsetX, this.offsetY, height);\n this.element.style.display = display;\n }\n else {\n pos = { left: 0, top: 0 };\n }\n if (!isNullOrUndefined(pos)) {\n this.element.style.left = pos.left + 'px';\n this.element.style.top = pos.top + 'px';\n }\n };\n Popup.prototype.checkGetBoundingClientRect = function (ele) {\n var eleRect;\n try {\n eleRect = ele.getBoundingClientRect();\n return eleRect;\n }\n catch (error) {\n return null;\n }\n };\n Popup.prototype.getAnchorPosition = function (anchorEle, ele, position, offsetX, offsetY, height) {\n if (height === void 0) { height = 0; }\n var eleRect = this.checkGetBoundingClientRect(ele);\n var anchorRect = this.checkGetBoundingClientRect(anchorEle);\n if (isNullOrUndefined(eleRect) || isNullOrUndefined(anchorRect)) {\n return null;\n }\n var anchor = anchorEle;\n var anchorPos = { left: 0, top: 0 };\n if (ele.offsetParent && ele.offsetParent.tagName === 'BODY' && anchorEle.tagName === 'BODY') {\n anchorPos = calculatePosition(anchorEle);\n }\n else {\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName !== 'BODY')) {\n ele = ele.parentElement;\n }\n anchorPos = calculateRelativeBasedPosition(anchor, ele);\n }\n switch (position.X) {\n default:\n case 'left':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth / 2 - eleRect.width / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width / 2 - eleRect.width / 2);\n }\n else {\n anchorPos.left += (anchorRect.width / 2);\n }\n break;\n case 'right':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.left += (window.innerWidth - eleRect.width);\n }\n else if (this.targetType === 'container') {\n anchorPos.left += (anchorRect.width - eleRect.width);\n }\n else {\n anchorPos.left += (anchorRect.width);\n }\n break;\n }\n switch (position.Y) {\n default:\n case 'top':\n break;\n case 'center':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight / 2 - eleRect.height / 2);\n }\n else if (this.targetType === 'container') {\n anchorPos.top += (anchorRect.height / 2 - eleRect.height / 2);\n }\n else {\n anchorPos.top += (anchorRect.height / 2);\n }\n break;\n case 'bottom':\n if ((ele.classList.contains('e-dlg-modal') && anchor.tagName === 'BODY' && this.targetType === 'container')) {\n anchorPos.top += (window.innerHeight - eleRect.height);\n }\n else if (this.targetType === 'container' && !ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - eleRect.height);\n }\n else if (this.targetType === 'container' && ele.classList.contains('e-dialog')) {\n anchorPos.top += (anchorRect.height - height);\n }\n else {\n anchorPos.top += (anchorRect.height);\n }\n break;\n }\n anchorPos.left += offsetX;\n anchorPos.top += offsetY;\n return anchorPos;\n };\n Popup.prototype.callFlip = function (param) {\n var relateToElement = this.getRelateToElement();\n flip(this.element, relateToElement, this.offsetX, this.offsetY, this.position.X, this.position.Y, this.viewPortElement, param, this.fixedParent);\n };\n Popup.prototype.callFit = function (param) {\n if (isCollide(this.element, this.viewPortElement).length !== 0) {\n if (isNullOrUndefined(this.viewPortElement)) {\n var data = fit(this.element, this.viewPortElement, param);\n if (param.X) {\n this.element.style.left = data.left + 'px';\n }\n if (param.Y) {\n this.element.style.top = data.top + 'px';\n }\n }\n else {\n var elementRect = this.checkGetBoundingClientRect(this.element);\n var viewPortRect = this.checkGetBoundingClientRect(this.viewPortElement);\n if (isNullOrUndefined(elementRect) || isNullOrUndefined(viewPortRect)) {\n return null;\n }\n if (param && param.Y === true) {\n if (viewPortRect.top > elementRect.top) {\n this.element.style.top = '0px';\n }\n else if (viewPortRect.bottom < elementRect.bottom) {\n this.element.style.top = parseInt(this.element.style.top, 10) - (elementRect.bottom - viewPortRect.bottom) + 'px';\n }\n }\n if (param && param.X === true) {\n if (viewPortRect.right < elementRect.right) {\n this.element.style.left = parseInt(this.element.style.left, 10) - (elementRect.right - viewPortRect.right) + 'px';\n }\n else if (viewPortRect.left > elementRect.left) {\n this.element.style.left = parseInt(this.element.style.left, 10) + (viewPortRect.left - elementRect.left) + 'px';\n }\n }\n }\n }\n };\n Popup.prototype.checkCollision = function () {\n var horz = this.collision.X;\n var vert = this.collision.Y;\n if (horz === 'none' && vert === 'none') {\n return;\n }\n if (horz === 'flip' && vert === 'flip') {\n this.callFlip({ X: true, Y: true });\n }\n else if (horz === 'fit' && vert === 'fit') {\n this.callFit({ X: true, Y: true });\n }\n else {\n if (horz === 'flip') {\n this.callFlip({ X: true, Y: false });\n }\n else if (vert === 'flip') {\n this.callFlip({ Y: true, X: false });\n }\n if (horz === 'fit') {\n this.callFit({ X: true, Y: false });\n }\n else if (vert === 'fit') {\n this.callFit({ X: false, Y: true });\n }\n }\n };\n /**\n * Shows the popup element from screen.\n *\n * @returns {void}\n * @param {AnimationModel} animationOptions - specifies the model\n * @param { HTMLElement } relativeElement - To calculate the zIndex value dynamically.\n */\n Popup.prototype.show = function (animationOptions, relativeElement) {\n var _this = this;\n var relateToElement = this.getRelateToElement();\n if (relateToElement.classList.contains('e-filemanager')) {\n this.fmDialogContainer = this.element.getElementsByClassName('e-file-select-wrap')[0];\n }\n this.wireEvents();\n if (!isNullOrUndefined(this.fmDialogContainer) && Browser.isIos) {\n this.fmDialogContainer.style.display = 'block';\n }\n if (this.zIndex === 1000 || !isNullOrUndefined(relativeElement)) {\n var zIndexElement = (isNullOrUndefined(relativeElement)) ? this.element : relativeElement;\n this.zIndex = getZindexPartial(zIndexElement);\n setStyleAttribute(this.element, { 'zIndex': this.zIndex });\n }\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.showAnimation;\n if (this.collision.X !== 'none' || this.collision.Y !== 'none') {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.checkCollision();\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n }\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.begin = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.CLOSE);\n addClass([_this.element], CLASSNAMES.OPEN);\n }\n };\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n _this.trigger('open');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.CLOSE);\n addClass([this.element], CLASSNAMES.OPEN);\n this.trigger('open');\n }\n };\n /**\n * Hides the popup element from screen.\n *\n * @param {AnimationModel} animationOptions - To give the animation options.\n * @returns {void}\n */\n Popup.prototype.hide = function (animationOptions) {\n var _this = this;\n animationOptions = (!isNullOrUndefined(animationOptions) && typeof animationOptions === 'object') ?\n animationOptions : this.hideAnimation;\n if (!isNullOrUndefined(animationOptions)) {\n animationOptions.end = function () {\n if (!_this.isDestroyed) {\n removeClass([_this.element], CLASSNAMES.OPEN);\n addClass([_this.element], CLASSNAMES.CLOSE);\n _this.trigger('close');\n }\n };\n new Animation(animationOptions).animate(this.element);\n }\n else {\n removeClass([this.element], CLASSNAMES.OPEN);\n addClass([this.element], CLASSNAMES.CLOSE);\n this.trigger('close');\n }\n this.unwireEvents();\n };\n /**\n * Gets scrollable parent elements for the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n */\n Popup.prototype.getScrollableParent = function (element) {\n this.checkFixedParent(element);\n return getScrollableParent(element, this.fixedParent);\n };\n Popup.prototype.checkFixedParent = function (element) {\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (parentStyle.position === 'fixed' && !isNullOrUndefined(this.element) && this.element.offsetParent &&\n this.element.offsetParent.tagName === 'BODY' && getComputedStyle(this.element.offsetParent).overflow !== 'hidden') {\n this.element.style.top = window.scrollY > parseInt(this.element.style.top, 10) ?\n formatUnit(window.scrollY - parseInt(this.element.style.top, 10))\n : formatUnit(parseInt(this.element.style.top, 10) - window.scrollY);\n this.element.style.position = 'fixed';\n this.fixedParent = true;\n }\n parent = parent.parentElement;\n if (!isNullOrUndefined(this.element) && isNullOrUndefined(this.element.offsetParent) && parentStyle.position === 'fixed'\n && this.element.style.position === 'fixed') {\n this.fixedParent = true;\n }\n }\n };\n __decorate([\n Property('auto')\n ], Popup.prototype, \"height\", void 0);\n __decorate([\n Property('auto')\n ], Popup.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"content\", void 0);\n __decorate([\n Property('container')\n ], Popup.prototype, \"targetType\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"viewPortElement\", void 0);\n __decorate([\n Property({ X: 'none', Y: 'none' })\n ], Popup.prototype, \"collision\", void 0);\n __decorate([\n Property('')\n ], Popup.prototype, \"relateTo\", void 0);\n __decorate([\n Complex({}, PositionData)\n ], Popup.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Popup.prototype, \"offsetY\", void 0);\n __decorate([\n Property(1000)\n ], Popup.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], Popup.prototype, \"enableRtl\", void 0);\n __decorate([\n Property('reposition')\n ], Popup.prototype, \"actionOnScroll\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"showAnimation\", void 0);\n __decorate([\n Property(null)\n ], Popup.prototype, \"hideAnimation\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Popup.prototype, \"targetExitViewport\", void 0);\n Popup = __decorate([\n NotifyPropertyChanges\n ], Popup);\n return Popup;\n}(Component));\nexport { Popup };\n/**\n * Gets scrollable parent elements for the given element.\n *\n * @param { HTMLElement } element - Specify the element to get the scrollable parents of it.\n * @param {boolean} fixedParent - specifies the parent element\n * @private\n * @returns {void}\n */\nexport function getScrollableParent(element, fixedParent) {\n var eleStyle = getComputedStyle(element);\n var scrollParents = [];\n var overflowRegex = /(auto|scroll)/;\n var parent = element.parentElement;\n while (parent && parent.tagName !== 'HTML') {\n var parentStyle = getComputedStyle(parent);\n if (!(eleStyle.position === 'absolute' && parentStyle.position === 'static')\n && overflowRegex.test(parentStyle.overflow + parentStyle.overflowY + parentStyle.overflowX)) {\n scrollParents.push(parent);\n }\n parent = parent.parentElement;\n }\n if (!fixedParent) {\n scrollParents.push(document);\n }\n return scrollParents;\n}\n/**\n * Gets the maximum z-index of the given element.\n *\n * @returns {void}\n * @param { HTMLElement } element - Specify the element to get the maximum z-index of it.\n * @private\n */\nexport function getZindexPartial(element) {\n // upto body traversal\n var parent = element.parentElement;\n var parentZindex = [];\n while (parent) {\n if (parent.tagName !== 'BODY') {\n var index = document.defaultView.getComputedStyle(parent, null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(parent, null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n parentZindex.push(index);\n }\n parent = parent.parentElement;\n }\n else {\n break;\n }\n }\n var childrenZindex = [];\n for (var i = 0; i < document.body.children.length; i++) {\n if (!element.isEqualNode(document.body.children[i])) {\n var index = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(document.body.children[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n childrenZindex.push(index);\n }\n }\n }\n childrenZindex.push('999');\n var siblingsZindex = [];\n if (!isNullOrUndefined(element.parentElement) && element.parentElement.tagName !== 'BODY') {\n var childNodes = [].slice.call(element.parentElement.children);\n for (var i = 0; i < childNodes.length; i++) {\n if (!element.isEqualNode(childNodes[i])) {\n var index = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(childNodes[i], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n siblingsZindex.push(index);\n }\n }\n }\n }\n var finalValue = parentZindex.concat(childrenZindex, siblingsZindex);\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, finalValue) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n/**\n * Gets the maximum z-index of the page.\n *\n * @returns {void}\n * @param { HTMLElement } tagName - Specify the tagName to get the maximum z-index of it.\n * @private\n */\nexport function getMaxZindex(tagName) {\n if (tagName === void 0) { tagName = ['*']; }\n var maxZindex = [];\n for (var i = 0; i < tagName.length; i++) {\n var elements = document.getElementsByTagName(tagName[i]);\n for (var i_1 = 0; i_1 < elements.length; i_1++) {\n var index = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('z-index');\n var position = document.defaultView.getComputedStyle(elements[i_1], null).getPropertyValue('position');\n if (index !== 'auto' && position !== 'static') {\n maxZindex.push(index);\n }\n }\n }\n // eslint-disable-next-line\n var currentZindexValue = Math.max.apply(Math, maxZindex) + 1;\n return currentZindexValue > 2147483647 ? 2147483647 : currentZindexValue;\n}\n","import { detach, getUniqueID, rippleEffect, setValue, attributes } from '@syncfusion/ej2-base';\nimport { getValue, addClass, deleteObject } from '@syncfusion/ej2-base';\n/**\n * Initialize wrapper element for angular.\n *\n * @private\n *\n * @param {CreateElementArgs} createElement - Specifies created element args\n * @param {string} tag - Specifies tag name\n * @param {string} type - Specifies type name\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} WRAPPER - Specifies wrapper element\n * @param {string} role - Specifies role\n * @returns {HTMLInputElement} - Input Element\n */\nexport function wrapperInitialize(createElement, tag, type, element, WRAPPER, role) {\n var input = element;\n if (element.tagName === tag) {\n var ejInstance = getValue('ej2_instances', element);\n input = createElement('input', { attrs: { 'type': type } });\n var props = ['change', 'cssClass', 'label', 'labelPosition', 'id'];\n for (var index = 0, len = element.attributes.length; index < len; index++) {\n if (props.indexOf(element.attributes[index].nodeName) === -1) {\n input.setAttribute(element.attributes[index].nodeName, element.attributes[index].nodeValue);\n }\n }\n attributes(element, { 'class': WRAPPER });\n element.appendChild(input);\n setValue('ej2_instances', ejInstance, input);\n deleteObject(element, 'ej2_instances');\n }\n return input;\n}\n/**\n * Get the text node.\n *\n * @param {HTMLElement} element - Specifies html element\n * @private\n * @returns {Node} - Text node.\n */\nexport function getTextNode(element) {\n var node;\n var childnode = element.childNodes;\n for (var i = 0; i < childnode.length; i++) {\n node = childnode[i];\n if (node.nodeType === 3) {\n return node;\n }\n }\n return null;\n}\n/**\n * Destroy the button components.\n *\n * @private\n * @param {Switch | CheckBox} ejInst - Specifies eJ2 Instance\n * @param {Element} wrapper - Specifies wrapper element\n * @param {string} tagName - Specifies tag name\n * @returns {void}\n */\nexport function destroy(ejInst, wrapper, tagName) {\n if (tagName === 'INPUT') {\n wrapper.parentNode.insertBefore(ejInst.element, wrapper);\n detach(wrapper);\n ejInst.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n ejInst.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n ejInst.element = wrapper;\n }\n}\n/**\n * Initialize control pre rendering.\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies proxy\n * @param {string} control - Specifies control\n * @param {string} wrapper - Specifies wrapper element\n * @param {HTMLInputElement} element - Specifies input element\n * @param {string} moduleName - Specifies module name\n * @returns {void}\n */\nexport function preRender(proxy, control, wrapper, element, moduleName) {\n element = wrapperInitialize(proxy.createElement, control, 'checkbox', element, wrapper, moduleName);\n proxy.element = element;\n if (proxy.element.getAttribute('type') !== 'checkbox') {\n proxy.element.setAttribute('type', 'checkbox');\n }\n if (!proxy.element.id) {\n proxy.element.id = getUniqueID('e-' + moduleName);\n }\n}\n/**\n * Creates CheckBox component UI with theming and ripple support.\n *\n * @private\n * @param {CreateElementArgs} createElement - Specifies Created Element args\n * @param {boolean} enableRipple - Specifies ripple effect\n * @param {CheckBoxUtilModel} options - Specifies Checkbox util Model\n * @returns {Element} - Checkbox Element\n */\nexport function createCheckBox(createElement, enableRipple, options) {\n if (enableRipple === void 0) { enableRipple = false; }\n if (options === void 0) { options = {}; }\n var wrapper = createElement('div', { className: 'e-checkbox-wrapper e-css' });\n if (options.cssClass) {\n addClass([wrapper], options.cssClass.split(' '));\n }\n if (options.enableRtl) {\n wrapper.classList.add('e-rtl');\n }\n if (enableRipple) {\n var rippleSpan = createElement('span', { className: 'e-ripple-container' });\n rippleEffect(rippleSpan, { isCenterRipple: true, duration: 400 });\n wrapper.appendChild(rippleSpan);\n }\n var frameSpan = createElement('span', { className: 'e-frame e-icons' });\n if (options.checked) {\n frameSpan.classList.add('e-check');\n }\n wrapper.appendChild(frameSpan);\n if (options.label) {\n var labelSpan = createElement('span', { className: 'e-label' });\n if (options.disableHtmlEncode) {\n labelSpan.textContent = options.label;\n }\n else {\n labelSpan.innerHTML = options.label;\n }\n wrapper.appendChild(labelSpan);\n }\n return wrapper;\n}\n/**\n * Handles ripple mouse.\n *\n * @private\n * @param {MouseEvent} e - Specifies mouse event\n * @param {Element} rippleSpan - Specifies Ripple span element\n * @returns {void}\n */\nexport function rippleMouseHandler(e, rippleSpan) {\n if (rippleSpan) {\n var event_1 = document.createEvent('MouseEvents');\n event_1.initEvent(e.type, false, true);\n rippleSpan.dispatchEvent(event_1);\n }\n}\n/**\n * Append hidden input to given element\n *\n * @private\n * @param {Switch | CheckBox} proxy - Specifies Proxy\n * @param {Element} wrap - Specifies Wrapper ELement\n * @returns {void}\n */\nexport function setHiddenInput(proxy, wrap) {\n if (proxy.element.getAttribute('ejs-for')) {\n wrap.appendChild(proxy.createElement('input', {\n attrs: { 'name': proxy.name || proxy.element.name, 'value': 'false', 'type': 'hidden' }\n }));\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, NotifyPropertyChanges, Component, isBlazor, isRippleEnabled } from '@syncfusion/ej2-base';\nimport { addClass, Event, detach, removeClass } from '@syncfusion/ej2-base';\nimport { rippleEffect, EventHandler, Observer, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { getTextNode } from '../common/common';\n/**\n * Defines the icon position of button.\n */\nexport var IconPosition;\n(function (IconPosition) {\n /**\n * Positions the Icon at the left of the text content in the Button.\n */\n IconPosition[\"Left\"] = \"Left\";\n /**\n * Positions the Icon at the right of the text content in the Button.\n */\n IconPosition[\"Right\"] = \"Right\";\n /**\n * Positions the Icon at the top of the text content in the Button.\n */\n IconPosition[\"Top\"] = \"Top\";\n /**\n * Positions the Icon at the bottom of the text content in the Button.\n */\n IconPosition[\"Bottom\"] = \"Bottom\";\n})(IconPosition || (IconPosition = {}));\nexport var buttonObserver = new Observer();\nvar cssClassName = {\n RTL: 'e-rtl',\n BUTTON: 'e-btn',\n PRIMARY: 'e-primary',\n ICONBTN: 'e-icon-btn'\n};\n/**\n * The Button is a graphical user interface element that triggers an event on its click action. It can contain a text, an image, or both.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar Button = /** @class */ (function (_super) {\n __extends(Button, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {ButtonModel} options - Specifies the button model\n * @param {string|HTMLButtonElement} element - Specifies the target element\n */\n function Button(options, element) {\n return _super.call(this, options, element) || this;\n }\n Button.prototype.preRender = function () {\n // pre render code snippets\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Button.prototype.render = function () {\n this.initialize();\n this.removeRippleEffect = rippleEffect(this.element, { selector: '.' + cssClassName.BUTTON });\n this.renderComplete();\n };\n Button.prototype.initialize = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n if (!isBlazor() || (isBlazor() && this.getModuleName() !== 'progress-btn')) {\n if (this.content) {\n var tempContent = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(this.content) : this.content;\n this.element.innerHTML = tempContent;\n }\n this.setIconCss();\n }\n if (this.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n if (this.disabled) {\n this.controlStatus(this.disabled);\n }\n else {\n this.wireEvents();\n }\n };\n Button.prototype.controlStatus = function (disabled) {\n this.element.disabled = disabled;\n };\n Button.prototype.setIconCss = function () {\n if (this.iconCss) {\n var span = this.createElement('span', { className: 'e-btn-icon ' + this.iconCss });\n if (!this.element.textContent.trim()) {\n this.element.classList.add(cssClassName.ICONBTN);\n }\n else {\n span.classList.add('e-icon-' + this.iconPosition.toLowerCase());\n if (this.iconPosition === 'Top' || this.iconPosition === 'Bottom') {\n this.element.classList.add('e-' + this.iconPosition.toLowerCase() + '-icon-btn');\n }\n }\n var node = this.element.childNodes[0];\n if (node && (this.iconPosition === 'Left' || this.iconPosition === 'Top')) {\n this.element.insertBefore(span, node);\n }\n else {\n this.element.appendChild(span);\n }\n }\n };\n Button.prototype.wireEvents = function () {\n if (this.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n };\n Button.prototype.unWireEvents = function () {\n if (this.isToggle) {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n }\n };\n Button.prototype.btnClickHandler = function () {\n if (this.element.classList.contains('e-active')) {\n this.element.classList.remove('e-active');\n }\n else {\n this.element.classList.add('e-active');\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Button.prototype.destroy = function () {\n var classList = [cssClassName.PRIMARY, cssClassName.RTL, cssClassName.ICONBTN, 'e-success', 'e-info', 'e-danger',\n 'e-warning', 'e-flat', 'e-outline', 'e-small', 'e-bigger', 'e-active', 'e-round',\n 'e-top-icon-btn', 'e-bottom-icon-btn'];\n if (this.cssClass) {\n classList = classList.concat(this.cssClass.split(' '));\n }\n _super.prototype.destroy.call(this);\n removeClass([this.element], classList);\n if (!this.element.getAttribute('class')) {\n this.element.removeAttribute('class');\n }\n if (this.disabled) {\n this.element.removeAttribute('disabled');\n }\n if (this.content) {\n this.element.innerHTML = this.element.innerHTML.replace(this.content, '');\n }\n var span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.unWireEvents();\n if (isRippleEnabled) {\n this.removeRippleEffect();\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} - Module name\n * @private\n */\n Button.prototype.getModuleName = function () {\n return 'btn';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - Persist Data\n * @private\n */\n Button.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Dynamically injects the required modules to the component.\n *\n * @private\n * @returns {void}\n */\n Button.Inject = function () {\n // Inject code snippets\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {ButtonModel} newProp - Specifies new properties\n * @param {ButtonModel} oldProp - Specifies old properties\n * @returns {void}\n * @private\n */\n Button.prototype.onPropertyChanged = function (newProp, oldProp) {\n var span = this.element.querySelector('span.e-btn-icon');\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'isPrimary':\n if (newProp.isPrimary) {\n this.element.classList.add(cssClassName.PRIMARY);\n }\n else {\n this.element.classList.remove(cssClassName.PRIMARY);\n }\n break;\n case 'disabled':\n this.controlStatus(newProp.disabled);\n break;\n case 'iconCss': {\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n if (newProp.iconCss) {\n span.className = 'e-btn-icon ' + newProp.iconCss;\n if (this.element.textContent.trim()) {\n if (this.iconPosition === 'Left') {\n span.classList.add('e-icon-left');\n }\n else {\n span.classList.add('e-icon-right');\n }\n }\n }\n else {\n detach(span);\n }\n }\n else {\n this.setIconCss();\n }\n break;\n }\n case 'iconPosition':\n removeClass([this.element], ['e-top-icon-btn', 'e-bottom-icon-btn']);\n span = this.element.querySelector('span.e-btn-icon');\n if (span) {\n detach(span);\n }\n this.setIconCss();\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(cssClassName.RTL);\n }\n else {\n this.element.classList.remove(cssClassName.RTL);\n }\n break;\n case 'content': {\n var node = getTextNode(this.element);\n if (!node) {\n this.element.classList.remove(cssClassName.ICONBTN);\n }\n if (!isBlazor() || (isBlazor() && !this.isServerRendered && this.getModuleName() !== 'progress-btn')) {\n if (this.enableHtmlSanitizer) {\n newProp.content = SanitizeHtmlHelper.sanitize(newProp.content);\n }\n this.element.innerHTML = newProp.content;\n this.setIconCss();\n }\n break;\n }\n case 'isToggle':\n if (newProp.isToggle) {\n EventHandler.add(this.element, 'click', this.btnClickHandler, this);\n }\n else {\n EventHandler.remove(this.element, 'click', this.btnClickHandler);\n removeClass([this.element], ['e-active']);\n }\n break;\n }\n }\n };\n /**\n * Click the button element\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to Button\n * its native method\n *\n * @public\n * @returns {void}\n */\n Button.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Property('Left')\n ], Button.prototype, \"iconPosition\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"iconCss\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isPrimary\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"cssClass\", void 0);\n __decorate([\n Property('')\n ], Button.prototype, \"content\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"isToggle\", void 0);\n __decorate([\n Property()\n ], Button.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], Button.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Event()\n ], Button.prototype, \"created\", void 0);\n Button = __decorate([\n NotifyPropertyChanges\n ], Button);\n return Button;\n}(Component));\nexport { Button };\n","/**\n * Resize library\n */\nimport { isNullOrUndefined as isNOU, createElement, EventHandler, detach, Browser } from '@syncfusion/ej2-base';\n/* eslint-disable */\nvar elementClass = ['north-west', 'north', 'north-east', 'west', 'east', 'south-west', 'south', 'south-east'];\nvar RESIZE_HANDLER = 'e-resize-handle';\nvar FOCUSED_HANDLER = 'e-focused-handle';\nvar DIALOG_RESIZABLE = 'e-dlg-resizable';\nvar RESTRICT_LEFT = ['e-restrict-left'];\nvar RESIZE_WITHIN_VIEWPORT = 'e-resize-viewport';\nvar dialogBorderResize = ['north', 'west', 'east', 'south'];\nvar targetElement;\nvar selectedHandler;\nvar originalWidth = 0;\nvar originalHeight = 0;\nvar originalX = 0;\nvar originalY = 0;\nvar originalMouseX = 0;\nvar originalMouseY = 0;\nvar minHeight;\nvar maxHeight;\nvar minWidth;\nvar maxWidth;\nvar containerElement;\nvar resizeStart = null;\nvar resize = null;\nvar resizeEnd = null;\n/* eslint-enable */\nvar resizeWestWidth;\nvar setLeft = true;\nvar previousWidth = 0;\nvar setWidth = true;\n// eslint-disable-next-line\nvar proxy;\n/**\n *\n * @param {ResizeArgs} args - specifies the resize args\n * @returns {void}\n */\nexport function createResize(args) {\n resizeStart = args.resizeBegin;\n resize = args.resizing;\n resizeEnd = args.resizeComplete;\n targetElement = getDOMElement(args.element);\n containerElement = getDOMElement(args.boundary);\n var directions = args.direction.split(' ');\n for (var i = 0; i < directions.length; i++) {\n if (dialogBorderResize.indexOf(directions[i]) >= 0 && directions[i]) {\n setBorderResizeElm(directions[i]);\n }\n else if (directions[i].trim() !== '') {\n var resizeHandler = createElement('div', { className: 'e-icons ' + RESIZE_HANDLER + ' ' + 'e-' + directions[i] });\n targetElement.appendChild(resizeHandler);\n }\n }\n minHeight = args.minHeight;\n minWidth = args.minWidth;\n maxWidth = args.maxWidth;\n maxHeight = args.maxHeight;\n if (args.proxy && args.proxy.element && args.proxy.element.classList.contains('e-dialog')) {\n wireEvents(args.proxy);\n }\n else {\n wireEvents();\n }\n}\n/**\n *\n * @param {string} direction - specifies the string\n * @returns {void}\n */\nfunction setBorderResizeElm(direction) {\n calculateValues();\n var borderBottom = createElement('span', {\n attrs: {\n 'unselectable': 'on', 'contenteditable': 'false'\n }\n });\n borderBottom.setAttribute('class', 'e-dialog-border-resize e-' + direction);\n if (direction === 'south') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.bottom = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'north') {\n borderBottom.style.height = '2px';\n borderBottom.style.width = '100%';\n borderBottom.style.top = '0px';\n borderBottom.style.left = '0px';\n }\n if (direction === 'east') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.right = '0px';\n borderBottom.style.top = '0px';\n }\n if (direction === 'west') {\n borderBottom.style.height = '100%';\n borderBottom.style.width = '2px';\n borderBottom.style.left = '0px';\n borderBottom.style.top = '0px';\n }\n targetElement.appendChild(borderBottom);\n}\n/**\n *\n * @param {string} element - specifies the element\n * @returns {HTMLElement} - returns the element\n */\nfunction getDOMElement(element) {\n var domElement;\n if (!isNOU(element)) {\n if (typeof (element) === 'string') {\n domElement = document.querySelector(element);\n }\n else {\n domElement = element;\n }\n }\n return domElement;\n}\n// eslint-disable-next-line\nfunction wireEvents(args) {\n if (isNOU(args)) {\n args = this;\n }\n var resizers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < resizers.length; i++) {\n selectedHandler = resizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n selectedHandler = borderResizers[i];\n EventHandler.add(selectedHandler, 'mousedown', onMouseDown, args);\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.add(selectedHandler, eventName, onTouchStart, args);\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {string} e - specifies the string\n * @returns {string} - returns the string\n */\nfunction getEventType(e) {\n return (e.indexOf('mouse') > -1) ? 'mouse' : 'touch';\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the mouse event\n * @returns {void}\n */\nfunction onMouseDown(e) {\n e.preventDefault();\n targetElement = e.target.parentElement;\n calculateValues();\n originalMouseX = e.pageX;\n originalMouseY = e.pageY;\n e.target.classList.add(FOCUSED_HANDLER);\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n if (this.targetEle && targetElement && targetElement.querySelector('.' + DIALOG_RESIZABLE)) {\n containerElement = this.target === ('body' || 'document.body' || document.body) ? null : this.targetEle;\n maxWidth = this.targetEle.clientWidth;\n maxHeight = this.targetEle.clientHeight;\n }\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, 'mousemove', onMouseMove, this);\n EventHandler.add(document, 'mouseup', onMouseUp, this);\n for (var i = 0; i < RESTRICT_LEFT.length; i++) {\n if (targetElement.classList.contains(RESTRICT_LEFT[i])) {\n setLeft = false;\n }\n else {\n setLeft = true;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseUp(e) {\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n var eventName = (Browser.info.name === 'msie') ? 'pointerdown' : 'touchstart';\n EventHandler.remove(target, 'mousemove', onMouseMove);\n EventHandler.remove(target, touchMoveEvent, onMouseMove);\n EventHandler.remove(target, eventName, onMouseMove);\n if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n document.body.querySelector('.' + FOCUSED_HANDLER).classList.remove(FOCUSED_HANDLER);\n }\n if (!isNOU(resizeEnd)) {\n proxy = this;\n resizeEnd(e, proxy);\n }\n EventHandler.remove(document, 'mouseup', onMouseUp);\n EventHandler.remove(document, touchEndEvent, onMouseUp);\n}\n/* istanbul ignore next */\n/**\n * @returns {void}\n */\nfunction calculateValues() {\n originalWidth = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('width').replace('px', ''));\n originalHeight = parseFloat(getComputedStyle(targetElement, null).getPropertyValue('height').replace('px', ''));\n originalX = targetElement.getBoundingClientRect().left;\n originalY = targetElement.getBoundingClientRect().top;\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onTouchStart(e) {\n targetElement = e.target.parentElement;\n calculateValues();\n var dialogResizeElement = targetElement.classList.contains('e-dialog');\n if ((e.target.classList.contains(RESIZE_HANDLER) || e.target.classList.contains('e-dialog-border-resize')) && dialogResizeElement) {\n e.target.classList.add(FOCUSED_HANDLER);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n originalMouseX = coordinates.pageX;\n originalMouseY = coordinates.pageY;\n if (!isNOU(resizeStart)) {\n proxy = this;\n if (resizeStart(e, proxy) === true) {\n return;\n }\n }\n var touchMoveEvent = (Browser.info.name === 'msie') ? 'pointermove' : 'touchmove';\n var touchEndEvent = (Browser.info.name === 'msie') ? 'pointerup' : 'touchend';\n var target = (isNOU(containerElement)) ? document : containerElement;\n EventHandler.add(target, touchMoveEvent, onMouseMove, this);\n EventHandler.add(document, touchEndEvent, onMouseUp, this);\n}\n/* istanbul ignore next */\n/**\n *\n * @param {MouseEvent} e - specifies the event\n * @returns {void}\n */\nfunction onMouseMove(e) {\n if (e.target.classList.contains(RESIZE_HANDLER) && e.target.classList.contains(FOCUSED_HANDLER)) {\n selectedHandler = e.target;\n }\n else if (!isNOU(document.body.querySelector('.' + FOCUSED_HANDLER))) {\n selectedHandler = document.body.querySelector('.' + FOCUSED_HANDLER);\n }\n if (!isNOU(selectedHandler)) {\n var resizeTowards = '';\n for (var i = 0; i < elementClass.length; i++) {\n if (selectedHandler.classList.contains('e-' + elementClass[i])) {\n resizeTowards = elementClass[i];\n }\n }\n if (!isNOU(resize)) {\n proxy = this;\n resize(e, proxy);\n }\n switch (resizeTowards) {\n case 'south':\n resizeSouth(e);\n break;\n case 'north':\n resizeNorth(e);\n break;\n case 'west':\n resizeWest(e);\n break;\n case 'east':\n resizeEast(e);\n break;\n case 'south-east':\n resizeSouth(e);\n resizeEast(e);\n break;\n case 'south-west':\n resizeSouth(e);\n resizeWest(e);\n break;\n case 'north-east':\n resizeNorth(e);\n resizeEast(e);\n break;\n case 'north-west':\n resizeNorth(e);\n resizeWest(e);\n break;\n default: break;\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {HTMLElement} element - specifies the eleemnt\n * @returns {ClientRect} - returns the client\n */\nfunction getClientRectValues(element) {\n return element.getBoundingClientRect();\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeSouth(e) {\n var documentHeight = document.documentElement.clientHeight;\n var calculateValue = false;\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var currentpageY = coordinates.pageY;\n var targetRectValues = getClientRectValues(targetElement);\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && ((documentHeight - currentpageY) >= 0 || (targetRectValues.top < 0))) {\n calculateValue = true;\n }\n var calculatedHeight = originalHeight + (currentpageY - originalMouseY);\n calculatedHeight = (calculatedHeight > minHeight) ? calculatedHeight : minHeight;\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = containerRectValues.top;\n }\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetHeight - containerElement.clientHeight;\n var topWithoutborder = (targetRectValues.top - containerTop) - (borderValue / 2);\n topWithoutborder = (topWithoutborder < 0) ? 0 : topWithoutborder;\n if (targetRectValues.top > 0 && (topWithoutborder + calculatedHeight) > maxHeight) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.height = (maxHeight - parseInt(topWithoutborder.toString(), 10)) + 'px';\n return;\n }\n var targetTop = 0;\n if (calculateValue) {\n if (targetRectValues.top < 0 && (documentHeight + (targetRectValues.height + targetRectValues.top) > 0)) {\n targetTop = targetRectValues.top;\n if ((calculatedHeight + targetTop) <= 30) {\n calculatedHeight = (targetRectValues.height - (targetRectValues.height + targetRectValues.top)) + 30;\n }\n }\n if (((calculatedHeight + targetRectValues.top) >= maxHeight)) {\n targetElement.style.height = targetRectValues.height +\n (documentHeight - (targetRectValues.height + targetRectValues.top)) + 'px';\n }\n var calculatedTop = (isNOU(containerElement)) ? targetTop : topWithoutborder;\n if (calculatedHeight >= minHeight && ((calculatedHeight + calculatedTop) <= maxHeight)) {\n targetElement.style.height = calculatedHeight + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeNorth(e) {\n var calculateValue = false;\n var boundaryRectValues;\n var pageY = (getEventType(e.type) === 'mouse') ? e.pageY : e.touches[0].pageY;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement)) {\n boundaryRectValues = getClientRectValues(containerElement);\n }\n if (!isNOU(containerElement) && (targetRectValues.top - boundaryRectValues.top) > 0) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageY > 0) {\n calculateValue = true;\n }\n var currentHeight = originalHeight - (pageY - originalMouseY);\n if (calculateValue) {\n if (currentHeight >= minHeight && currentHeight <= maxHeight) {\n var containerTop = 0;\n if (!isNOU(containerElement)) {\n containerTop = boundaryRectValues.top;\n }\n var top_1 = (originalY - containerTop) + (pageY - originalMouseY);\n top_1 = top_1 > 0 ? top_1 : 1;\n targetElement.style.height = currentHeight + 'px';\n targetElement.style.top = top_1 + 'px';\n }\n }\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeWest(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var rectValues;\n if (!isNOU(containerElement)) {\n rectValues = getClientRectValues(containerElement);\n }\n var pageX = (getEventType(e.type) === 'mouse') ? e.pageX : e.touches[0].pageX;\n var targetRectValues = getClientRectValues(targetElement);\n var borderValue = isNOU(containerElement) ? 0 : containerElement.offsetWidth - containerElement.clientWidth;\n /* eslint-disable */\n var left = isNOU(containerElement) ? 0 : rectValues.left;\n var containerWidth = isNOU(containerElement) ? 0 : rectValues.width;\n /* eslint-enable */\n if (isNOU(resizeWestWidth)) {\n if (!isNOU(containerElement)) {\n resizeWestWidth = (((targetRectValues.left - left) - borderValue / 2)) + targetRectValues.width;\n resizeWestWidth = resizeWestWidth + (containerWidth - borderValue - resizeWestWidth);\n }\n else {\n resizeWestWidth = documentWidth;\n }\n }\n if (!isNOU(containerElement) &&\n (Math.floor((targetRectValues.left - rectValues.left) + targetRectValues.width +\n (rectValues.right - targetRectValues.right)) - borderValue) <= maxWidth) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && pageX >= 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth - (pageX - originalMouseX);\n if (setLeft) {\n calculatedWidth = (calculatedWidth > resizeWestWidth) ? resizeWestWidth : calculatedWidth;\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = rectValues.left;\n }\n var left_1 = (originalX - containerLeft) + (pageX - originalMouseX);\n left_1 = (left_1 > 0) ? left_1 : 1;\n if (calculatedWidth !== previousWidth && setWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n if (setLeft) {\n targetElement.style.left = left_1 + 'px';\n if (left_1 === 1) {\n setWidth = false;\n }\n else {\n setWidth = true;\n }\n }\n }\n }\n previousWidth = calculatedWidth;\n}\n/* istanbul ignore next */\n// eslint-disable-next-line\nfunction resizeEast(e) {\n var documentWidth = document.documentElement.clientWidth;\n var calculateValue = false;\n var containerRectValues;\n if (!isNOU(containerElement)) {\n containerRectValues = getClientRectValues(containerElement);\n }\n var coordinates = e.touches ? e.changedTouches[0] : e;\n var pageX = coordinates.pageX;\n var targetRectValues = getClientRectValues(targetElement);\n if (!isNOU(containerElement) && (((targetRectValues.left - containerRectValues.left) + targetRectValues.width) <= maxWidth\n || (targetRectValues.right - containerRectValues.left) >= targetRectValues.width)) {\n calculateValue = true;\n }\n else if (isNOU(containerElement) && (documentWidth - pageX) > 0) {\n calculateValue = true;\n }\n var calculatedWidth = originalWidth + (pageX - originalMouseX);\n var containerLeft = 0;\n if (!isNOU(containerElement)) {\n containerLeft = containerRectValues.left;\n }\n if (((targetRectValues.left - containerLeft) + calculatedWidth) > maxWidth) {\n calculateValue = false;\n if (targetElement.classList.contains(RESIZE_WITHIN_VIEWPORT)) {\n return;\n }\n targetElement.style.width = maxWidth - (targetRectValues.left - containerLeft) + 'px';\n }\n if (calculateValue) {\n if (calculatedWidth >= minWidth && calculatedWidth <= maxWidth) {\n targetElement.style.width = calculatedWidth + 'px';\n }\n }\n}\n/* istanbul ignore next */\n/**\n *\n * @param {number} minimumHeight - specifies the number\n * @returns {void}\n */\nexport function setMinHeight(minimumHeight) {\n minHeight = minimumHeight;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxWidth(value) {\n maxWidth = value;\n}\n/**\n *\n * @param {number} value - specifies the number value\n * @returns {void}\n */\nexport function setMaxHeight(value) {\n maxHeight = value;\n}\n/**\n * @returns {void}\n */\nexport function removeResize() {\n var handlers = targetElement.querySelectorAll('.' + RESIZE_HANDLER);\n for (var i = 0; i < handlers.length; i++) {\n detach(handlers[i]);\n }\n var borderResizers = targetElement.querySelectorAll('.e-dialog-border-resize');\n if (!isNOU(borderResizers)) {\n for (var i = 0; i < borderResizers.length; i++) {\n detach(borderResizers[i]);\n }\n }\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-hscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_HSCROLLCON = 'e-hscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVRIGHTARROW = 'e-nav-right-arrow';\nvar CLS_NAVLEFTARROW = 'e-nav-left-arrow';\nvar CLS_HSCROLLNAV = 'e-scroll-nav';\nvar CLS_HSCROLLNAVRIGHT = 'e-scroll-right-nav';\nvar CLS_HSCROLLNAVLEFT = 'e-scroll-left-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_RIGHTOVERLAY = 'e-scroll-right-overlay';\nvar CLS_LEFTOVERLAY = 'e-scroll-left-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * HScroll module is introduces horizontal scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs horizontal scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar HScroll = /** @class */ (function (_super) {\n __extends(HScroll, _super);\n /**\n * Initializes a new instance of the HScroll class.\n *\n * @param {HScrollModel} options - Specifies HScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which horizontal scrolling applies.\n */\n function HScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var element = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (element.id === '') {\n element.id = getUniqueID('hscroll');\n this.uniqueId = true;\n }\n element.style.display = 'block';\n if (this.enableRtl) {\n element.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the horizontal scroll rendering\n *\n * @private\n * @returns {void}\n */\n HScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlay(this.element);\n }\n this.setScrollState();\n };\n HScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetWidth;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n HScroll.prototype.initialize = function () {\n var scrollEle = this.createElement('div', { className: CLS_HSCROLLCON });\n var scrollDiv = this.createElement('div', { className: CLS_HSCROLLBAR });\n scrollDiv.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollEle.appendChild(ele_1);\n }\n scrollDiv.appendChild(scrollEle);\n ele.appendChild(scrollDiv);\n scrollDiv.style.overflowX = 'hidden';\n this.scrollEle = scrollDiv;\n this.scrollItems = scrollEle;\n };\n HScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n HScroll.prototype.getModuleName = function () {\n return 'hScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n HScroll.prototype.destroy = function () {\n var ele = this.element;\n ele.style.display = '';\n ele.classList.remove(CLS_ROOT);\n ele.classList.remove(CLS_DEVICE);\n ele.classList.remove(CLS_RTL);\n var nav = selectAll('.e-' + ele.id + '_nav.' + CLS_HSCROLLNAV, ele);\n var overlay = selectAll('.' + CLS_OVERLAY, ele);\n [].slice.call(overlay).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n ele.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (nav.length > 0) {\n detach(nav[0]);\n if (!isNullOrUndefined(nav[1])) {\n detach(nav[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the HScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, HScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n HScroll.prototype.disable = function (value) {\n var navEles = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEles).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n HScroll.prototype.createOverlay = function (element) {\n var id = element.id.concat('_nav');\n var rightOverlayEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_RIGHTOVERLAY });\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightEle = this.createElement('div', { id: id.concat('_right'), className: clsRight });\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n rightEle.appendChild(navItem);\n var leftEle = this.createElement('div', { className: CLS_OVERLAY + ' ' + CLS_LEFTOVERLAY });\n if (this.ieCheck) {\n rightEle.classList.add('e-ie-align');\n }\n element.appendChild(rightOverlayEle);\n element.appendChild(rightEle);\n element.insertBefore(leftEle, element.firstChild);\n this.eventBinding([rightEle]);\n };\n HScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsRight = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVRIGHT);\n var rightAttributes = { 'role': 'button', 'id': id.concat('_right'), 'aria-label': 'Scroll right' };\n var nav = this.createElement('div', { className: clsRight, attrs: rightAttributes });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = this.createElement('div', { className: CLS_NAVRIGHTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsLeft = 'e-' + element.id.concat('_nav ' + CLS_HSCROLLNAV + ' ' + CLS_HSCROLLNAVLEFT);\n var leftAttributes = { 'role': 'button', 'id': id.concat('_left'), 'aria-label': 'Scroll left' };\n var navEle = this.createElement('div', { className: clsLeft + ' ' + CLS_DISABLE, attrs: leftAttributes });\n navEle.setAttribute('aria-disabled', 'true');\n var navLeftItem = this.createElement('div', { className: CLS_NAVLEFTARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navEle.appendChild(navLeftItem);\n nav.appendChild(navItem);\n element.appendChild(nav);\n element.insertBefore(navEle, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navEle.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navEle]);\n };\n HScroll.prototype.onKeyPress = function (e) {\n var _this = this;\n if (e.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, e.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n HScroll.prototype.onKeyUp = function (e) {\n if (e.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n e.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n HScroll.prototype.eventBinding = function (ele) {\n var _this = this;\n [].slice.call(ele).forEach(function (el) {\n new Touch(el, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n el.addEventListener('keydown', _this.onKeyPress.bind(_this));\n el.addEventListener('keyup', _this.onKeyUp.bind(_this));\n el.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n el.addEventListener('touchend', _this.repeatScroll.bind(_this));\n el.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(el, 'click', _this.clickEventHandler, _this);\n });\n };\n HScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n HScroll.prototype.tabHoldHandler = function (e) {\n var _this = this;\n var trgt = e.originalEvent.target;\n trgt = this.contains(trgt, CLS_HSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDis = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDis, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n HScroll.prototype.contains = function (ele, className) {\n return ele.classList.contains(className);\n };\n HScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var rootEle = this.element;\n var classList = trgt.classList;\n if (classList.contains(CLS_HSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (this.contains(rootEle, CLS_RTL) && this.browserCheck) {\n scrollDis = -scrollDis;\n }\n if ((!this.contains(rootEle, CLS_RTL) || this.browserCheck) || this.ieCheck) {\n if (classList.contains(CLS_NAVRIGHTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n else {\n if (classList.contains(CLS_NAVLEFTARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n }\n };\n HScroll.prototype.clickEventHandler = function (e) {\n this.eleScrolling(this.scrollStep, e.target, false);\n };\n HScroll.prototype.swipeHandler = function (e) {\n var swipeEle = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceX / (e.velocity * 10);\n }\n else {\n distance = e.distanceX / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Left') {\n swipeEle.scrollLeft += distance * step;\n }\n else if (e.swipeDirection === 'Right') {\n swipeEle.scrollLeft -= distance * step;\n }\n start -= 0.5;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollLeft += scrollVal;\n }\n else {\n this.scrollEle.scrollLeft -= scrollVal;\n }\n if (this.enableRtl && this.scrollEle.scrollLeft > 0) {\n this.scrollEle.scrollLeft = 0;\n }\n };\n HScroll.prototype.frameScrollRequest = function (scrollVal, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollVal, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollVal -= el.offsetWidth;\n });\n }\n var animate = function () {\n var scrollValue;\n var scrollStep;\n if (_this.contains(_this.element, CLS_RTL) && _this.browserCheck) {\n scrollValue = -scrollVal;\n scrollStep = -step;\n }\n else {\n scrollValue = scrollVal;\n scrollStep = step;\n }\n if (scrollValue < step) {\n window.cancelAnimationFrame(scrollStep);\n }\n else {\n _this.scrollUpdating(scrollStep, action);\n scrollVal -= scrollStep;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n HScroll.prototype.touchHandler = function (e) {\n var ele = this.scrollEle;\n var distance = e.distanceX;\n if ((this.ieCheck) && this.contains(this.element, CLS_RTL)) {\n distance = -distance;\n }\n if (e.scrollDirection === 'Left') {\n ele.scrollLeft = ele.scrollLeft + distance;\n }\n else if (e.scrollDirection === 'Right') {\n ele.scrollLeft = ele.scrollLeft - distance;\n }\n };\n HScroll.prototype.arrowDisabling = function (addDisable, removeDisable) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisable) ? removeDisable : addDisable;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisable)) {\n classList(arrowIcon, [CLS_NAVRIGHTARROW], [CLS_NAVLEFTARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVLEFTARROW], [CLS_NAVRIGHTARROW]);\n }\n }\n else if (addDisable && removeDisable) {\n addDisable.classList.add(CLS_DISABLE);\n addDisable.setAttribute('aria-disabled', 'true');\n addDisable.removeAttribute('tabindex');\n removeDisable.classList.remove(CLS_DISABLE);\n removeDisable.setAttribute('aria-disabled', 'false');\n removeDisable.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n HScroll.prototype.scrollHandler = function (e) {\n var target = e.target;\n var width = target.offsetWidth;\n var rootEle = this.element;\n var navLeftEle = this.element.querySelector('.' + CLS_HSCROLLNAVLEFT);\n var navRightEle = this.element.querySelector('.' + CLS_HSCROLLNAVRIGHT);\n var leftOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n var rightOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n var scrollLeft = target.scrollLeft;\n if (scrollLeft <= 0) {\n scrollLeft = -scrollLeft;\n }\n if (this.isDevice) {\n if (this.enableRtl && !(this.browserCheck || this.ieCheck)) {\n leftOverlay = this.element.querySelector('.' + CLS_RIGHTOVERLAY);\n rightOverlay = this.element.querySelector('.' + CLS_LEFTOVERLAY);\n }\n if (scrollLeft < OVERLAY_MAXWID) {\n leftOverlay.style.width = scrollLeft + 'px';\n }\n else {\n leftOverlay.style.width = '40px';\n }\n if ((target.scrollWidth - Math.ceil(width + scrollLeft)) < OVERLAY_MAXWID) {\n rightOverlay.style.width = (target.scrollWidth - Math.ceil(width + scrollLeft)) + 'px';\n }\n else {\n rightOverlay.style.width = '40px';\n }\n }\n if (scrollLeft === 0) {\n this.arrowDisabling(navLeftEle, navRightEle);\n }\n else if (Math.ceil(width + scrollLeft + .1) >= target.scrollWidth) {\n this.arrowDisabling(navRightEle, navLeftEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_HSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {HScrollModel} newProp - It contains the new value of data.\n * @param {HScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n HScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n newProp.enableRtl ? this.element.classList.add(CLS_RTL) : this.element.classList.remove(CLS_RTL);\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], HScroll.prototype, \"scrollStep\", void 0);\n HScroll = __decorate([\n NotifyPropertyChanges\n ], HScroll);\n return HScroll;\n}(Component));\nexport { HScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Touch, Component, EventHandler, selectAll, getUniqueID, removeClass } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Property, Browser, detach, createElement as buildTag } from '@syncfusion/ej2-base';\nimport { classList, isNullOrUndefined } from '@syncfusion/ej2-base';\nvar CLS_ROOT = 'e-vscroll';\nvar CLS_RTL = 'e-rtl';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_VSCROLLBAR = 'e-vscroll-bar';\nvar CLS_VSCROLLCON = 'e-vscroll-content';\nvar CLS_NAVARROW = 'e-nav-arrow';\nvar CLS_NAVUPARROW = 'e-nav-up-arrow';\nvar CLS_NAVDOWNARROW = 'e-nav-down-arrow';\nvar CLS_VSCROLLNAV = 'e-scroll-nav';\nvar CLS_VSCROLLNAVUP = 'e-scroll-up-nav';\nvar CLS_VSCROLLNAVDOWN = 'e-scroll-down-nav';\nvar CLS_DEVICE = 'e-scroll-device';\nvar CLS_OVERLAY = 'e-scroll-overlay';\nvar CLS_UPOVERLAY = 'e-scroll-up-overlay';\nvar CLS_DOWNOVERLAY = 'e-scroll-down-overlay';\nvar OVERLAY_MAXWID = 40;\n/**\n * VScroll module is introduces vertical scroller when content exceeds the current viewing area.\n * It can be useful for the components like Toolbar, Tab which needs vertical scrolling alone.\n * Hidden content can be view by touch moving or icon click.\n * ```html\n *
\n * \n * ```\n */\nvar VScroll = /** @class */ (function (_super) {\n __extends(VScroll, _super);\n /**\n * Initializes a new instance of the VScroll class.\n *\n * @param {VScrollModel} options - Specifies VScroll model properties as options.\n * @param {string | HTMLElement} element - Specifies the element for which vertical scrolling applies.\n */\n function VScroll(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.preRender = function () {\n this.browser = Browser.info.name;\n this.browserCheck = this.browser === 'mozilla';\n this.isDevice = Browser.isDevice;\n this.customStep = true;\n var ele = this.element;\n this.ieCheck = this.browser === 'edge' || this.browser === 'msie';\n this.initialize();\n if (ele.id === '') {\n ele.id = getUniqueID('vscroll');\n this.uniqueId = true;\n }\n ele.style.display = 'block';\n if (this.enableRtl) {\n ele.classList.add(CLS_RTL);\n }\n };\n /**\n * To Initialize the vertical scroll rendering\n *\n * @private\n * @returns {void}\n */\n VScroll.prototype.render = function () {\n this.touchModule = new Touch(this.element, { scroll: this.touchHandler.bind(this), swipe: this.swipeHandler.bind(this) });\n EventHandler.add(this.scrollEle, 'scroll', this.scrollEventHandler, this);\n if (!this.isDevice) {\n this.createNavIcon(this.element);\n }\n else {\n this.element.classList.add(CLS_DEVICE);\n this.createOverlayElement(this.element);\n }\n this.setScrollState();\n EventHandler.add(this.element, 'wheel', this.wheelEventHandler, this);\n };\n VScroll.prototype.setScrollState = function () {\n if (isNullOrUndefined(this.scrollStep) || this.scrollStep < 0) {\n this.scrollStep = this.scrollEle.offsetHeight;\n this.customStep = false;\n }\n else {\n this.customStep = true;\n }\n };\n VScroll.prototype.initialize = function () {\n var scrollCnt = buildTag('div', { className: CLS_VSCROLLCON });\n var scrollBar = buildTag('div', { className: CLS_VSCROLLBAR });\n scrollBar.setAttribute('tabindex', '-1');\n var ele = this.element;\n var innerEle = [].slice.call(ele.children);\n for (var _i = 0, innerEle_1 = innerEle; _i < innerEle_1.length; _i++) {\n var ele_1 = innerEle_1[_i];\n scrollCnt.appendChild(ele_1);\n }\n scrollBar.appendChild(scrollCnt);\n ele.appendChild(scrollBar);\n scrollBar.style.overflow = 'hidden';\n this.scrollEle = scrollBar;\n this.scrollItems = scrollCnt;\n };\n VScroll.prototype.getPersistData = function () {\n var keyEntity = ['scrollStep'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - It returns the current module name.\n * @private\n */\n VScroll.prototype.getModuleName = function () {\n return 'vScroll';\n };\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}\n */\n VScroll.prototype.destroy = function () {\n var el = this.element;\n el.style.display = '';\n removeClass([this.element], [CLS_ROOT, CLS_DEVICE, CLS_RTL]);\n var navs = selectAll('.e-' + el.id + '_nav.' + CLS_VSCROLLNAV, el);\n var overlays = selectAll('.' + CLS_OVERLAY, el);\n [].slice.call(overlays).forEach(function (ele) {\n detach(ele);\n });\n for (var _i = 0, _a = [].slice.call(this.scrollItems.children); _i < _a.length; _i++) {\n var elem = _a[_i];\n el.appendChild(elem);\n }\n if (this.uniqueId) {\n this.element.removeAttribute('id');\n }\n detach(this.scrollEle);\n if (navs.length > 0) {\n detach(navs[0]);\n if (!isNullOrUndefined(navs[1])) {\n detach(navs[1]);\n }\n }\n EventHandler.remove(this.scrollEle, 'scroll', this.scrollEventHandler);\n this.touchModule.destroy();\n this.touchModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Specifies the value to disable/enable the VScroll component.\n * When set to `true` , the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, VScroll will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n VScroll.prototype.disable = function (value) {\n var navEle = selectAll('.e-scroll-nav:not(.' + CLS_DISABLE + ')', this.element);\n if (value) {\n this.element.classList.add(CLS_DISABLE);\n }\n else {\n this.element.classList.remove(CLS_DISABLE);\n }\n [].slice.call(navEle).forEach(function (el) {\n el.setAttribute('tabindex', !value ? '0' : '-1');\n });\n };\n VScroll.prototype.createOverlayElement = function (element) {\n var id = element.id.concat('_nav');\n var downOverlayEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_DOWNOVERLAY });\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var downEle = buildTag('div', { id: id.concat('down'), className: clsDown });\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n downEle.appendChild(navItem);\n var upEle = buildTag('div', { className: CLS_OVERLAY + ' ' + CLS_UPOVERLAY });\n if (this.ieCheck) {\n downEle.classList.add('e-ie-align');\n }\n element.appendChild(downOverlayEle);\n element.appendChild(downEle);\n element.insertBefore(upEle, element.firstChild);\n this.eventBinding([downEle]);\n };\n VScroll.prototype.createNavIcon = function (element) {\n var id = element.id.concat('_nav');\n var clsDown = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVDOWN);\n var nav = buildTag('div', { id: id.concat('_down'), className: clsDown });\n nav.setAttribute('aria-disabled', 'false');\n var navItem = buildTag('div', { className: CLS_NAVDOWNARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n var clsUp = 'e-' + element.id.concat('_nav ' + CLS_VSCROLLNAV + ' ' + CLS_VSCROLLNAVUP);\n var navElement = buildTag('div', { id: id.concat('_up'), className: clsUp + ' ' + CLS_DISABLE });\n navElement.setAttribute('aria-disabled', 'true');\n var navUpItem = buildTag('div', { className: CLS_NAVUPARROW + ' ' + CLS_NAVARROW + ' e-icons' });\n navElement.appendChild(navUpItem);\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n element.appendChild(nav);\n element.insertBefore(navElement, element.firstChild);\n if (this.ieCheck) {\n nav.classList.add('e-ie-align');\n navElement.classList.add('e-ie-align');\n }\n this.eventBinding([nav, navElement]);\n };\n VScroll.prototype.onKeyPress = function (ev) {\n var _this = this;\n if (ev.key === 'Enter') {\n var timeoutFun_1 = function () {\n _this.keyTimeout = true;\n _this.eleScrolling(10, ev.target, true);\n };\n this.keyTimer = window.setTimeout(function () {\n timeoutFun_1();\n }, 100);\n }\n };\n VScroll.prototype.onKeyUp = function (ev) {\n if (ev.key !== 'Enter') {\n return;\n }\n if (this.keyTimeout) {\n this.keyTimeout = false;\n }\n else {\n ev.target.click();\n }\n clearTimeout(this.keyTimer);\n };\n VScroll.prototype.eventBinding = function (element) {\n var _this = this;\n [].slice.call(element).forEach(function (ele) {\n new Touch(ele, { tapHold: _this.tabHoldHandler.bind(_this), tapHoldThreshold: 500 });\n ele.addEventListener('keydown', _this.onKeyPress.bind(_this));\n ele.addEventListener('keyup', _this.onKeyUp.bind(_this));\n ele.addEventListener('mouseup', _this.repeatScroll.bind(_this));\n ele.addEventListener('touchend', _this.repeatScroll.bind(_this));\n ele.addEventListener('contextmenu', function (e) {\n e.preventDefault();\n });\n EventHandler.add(ele, 'click', _this.clickEventHandler, _this);\n });\n };\n VScroll.prototype.repeatScroll = function () {\n clearInterval(this.timeout);\n };\n VScroll.prototype.tabHoldHandler = function (ev) {\n var _this = this;\n var trgt = ev.originalEvent.target;\n trgt = this.contains(trgt, CLS_VSCROLLNAV) ? trgt.firstElementChild : trgt;\n var scrollDistance = 10;\n var timeoutFun = function () {\n _this.eleScrolling(scrollDistance, trgt, true);\n };\n this.timeout = window.setInterval(function () {\n timeoutFun();\n }, 50);\n };\n VScroll.prototype.contains = function (element, className) {\n return element.classList.contains(className);\n };\n VScroll.prototype.eleScrolling = function (scrollDis, trgt, isContinuous) {\n var classList = trgt.classList;\n if (classList.contains(CLS_VSCROLLNAV)) {\n classList = trgt.querySelector('.' + CLS_NAVARROW).classList;\n }\n if (classList.contains(CLS_NAVDOWNARROW)) {\n this.frameScrollRequest(scrollDis, 'add', isContinuous);\n }\n else if (classList.contains(CLS_NAVUPARROW)) {\n this.frameScrollRequest(scrollDis, '', isContinuous);\n }\n };\n VScroll.prototype.clickEventHandler = function (event) {\n this.eleScrolling(this.scrollStep, event.target, false);\n };\n VScroll.prototype.wheelEventHandler = function (e) {\n e.preventDefault();\n this.frameScrollRequest(this.scrollStep, (e.deltaY > 0 ? 'add' : ''), false);\n };\n VScroll.prototype.swipeHandler = function (e) {\n var swipeElement = this.scrollEle;\n var distance;\n if (e.velocity <= 1) {\n distance = e.distanceY / (e.velocity * 10);\n }\n else {\n distance = e.distanceY / e.velocity;\n }\n var start = 0.5;\n var animate = function () {\n var step = Math.sin(start);\n if (step <= 0) {\n window.cancelAnimationFrame(step);\n }\n else {\n if (e.swipeDirection === 'Up') {\n swipeElement.scrollTop += distance * step;\n }\n else if (e.swipeDirection === 'Down') {\n swipeElement.scrollTop -= distance * step;\n }\n start -= 0.02;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.scrollUpdating = function (scrollVal, action) {\n if (action === 'add') {\n this.scrollEle.scrollTop += scrollVal;\n }\n else {\n this.scrollEle.scrollTop -= scrollVal;\n }\n };\n VScroll.prototype.frameScrollRequest = function (scrollValue, action, isContinuous) {\n var _this = this;\n var step = 10;\n if (isContinuous) {\n this.scrollUpdating(scrollValue, action);\n return;\n }\n if (!this.customStep) {\n [].slice.call(selectAll('.' + CLS_OVERLAY, this.element)).forEach(function (el) {\n scrollValue -= el.offsetHeight;\n });\n }\n var animate = function () {\n if (scrollValue < step) {\n window.cancelAnimationFrame(step);\n }\n else {\n _this.scrollUpdating(step, action);\n scrollValue -= step;\n window.requestAnimationFrame(animate);\n }\n };\n animate();\n };\n VScroll.prototype.touchHandler = function (e) {\n var el = this.scrollEle;\n var distance = e.distanceY;\n if (e.scrollDirection === 'Up') {\n el.scrollTop = el.scrollTop + distance;\n }\n else if (e.scrollDirection === 'Down') {\n el.scrollTop = el.scrollTop - distance;\n }\n };\n VScroll.prototype.arrowDisabling = function (addDisableCls, removeDisableCls) {\n if (this.isDevice) {\n var arrowEle = isNullOrUndefined(addDisableCls) ? removeDisableCls : addDisableCls;\n var arrowIcon = arrowEle.querySelector('.' + CLS_NAVARROW);\n if (isNullOrUndefined(addDisableCls)) {\n classList(arrowIcon, [CLS_NAVDOWNARROW], [CLS_NAVUPARROW]);\n }\n else {\n classList(arrowIcon, [CLS_NAVUPARROW], [CLS_NAVDOWNARROW]);\n }\n }\n else {\n addDisableCls.classList.add(CLS_DISABLE);\n addDisableCls.setAttribute('aria-disabled', 'true');\n addDisableCls.removeAttribute('tabindex');\n removeDisableCls.classList.remove(CLS_DISABLE);\n removeDisableCls.setAttribute('aria-disabled', 'false');\n removeDisableCls.setAttribute('tabindex', '0');\n }\n this.repeatScroll();\n };\n VScroll.prototype.scrollEventHandler = function (e) {\n var target = e.target;\n var height = target.offsetHeight;\n var navUpEle = this.element.querySelector('.' + CLS_VSCROLLNAVUP);\n var navDownEle = this.element.querySelector('.' + CLS_VSCROLLNAVDOWN);\n var upOverlay = this.element.querySelector('.' + CLS_UPOVERLAY);\n var downOverlay = this.element.querySelector('.' + CLS_DOWNOVERLAY);\n var scrollTop = target.scrollTop;\n if (scrollTop <= 0) {\n scrollTop = -scrollTop;\n }\n if (this.isDevice) {\n if (scrollTop < OVERLAY_MAXWID) {\n upOverlay.style.height = scrollTop + 'px';\n }\n else {\n upOverlay.style.height = '40px';\n }\n if ((target.scrollHeight - Math.ceil(height + scrollTop)) < OVERLAY_MAXWID) {\n downOverlay.style.height = (target.scrollHeight - Math.ceil(height + scrollTop)) + 'px';\n }\n else {\n downOverlay.style.height = '40px';\n }\n }\n if (scrollTop === 0) {\n this.arrowDisabling(navUpEle, navDownEle);\n }\n else if (Math.ceil(height + scrollTop + .1) >= target.scrollHeight) {\n this.arrowDisabling(navDownEle, navUpEle);\n }\n else {\n var disEle = this.element.querySelector('.' + CLS_VSCROLLNAV + '.' + CLS_DISABLE);\n if (disEle) {\n disEle.classList.remove(CLS_DISABLE);\n disEle.setAttribute('aria-disabled', 'false');\n disEle.setAttribute('tabindex', '0');\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of property that changed.\n *\n * @param {VScrollModel} newProp - It contains the new value of data.\n * @param {VScrollModel} oldProp - It contains the old value of data.\n * @returns {void}\n * @private\n */\n VScroll.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'scrollStep':\n this.setScrollState();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.element.classList.add(CLS_RTL);\n }\n else {\n this.element.classList.remove(CLS_RTL);\n }\n break;\n }\n }\n };\n __decorate([\n Property(null)\n ], VScroll.prototype, \"scrollStep\", void 0);\n VScroll = __decorate([\n NotifyPropertyChanges\n ], VScroll);\n return VScroll;\n}(Component));\nexport { VScroll };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, EventHandler, Property, Event } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, isVisible, closest, attributes, detach, classList, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { selectAll, setStyleAttribute as setStyle, select } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined as isNOU, getUniqueID, formatUnit, Collection, compile as templateCompiler } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, Browser, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { calculatePosition } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { HScroll } from '../common/h-scroll';\nimport { VScroll } from '../common/v-scroll';\nvar CLS_VERTICAL = 'e-vertical';\nvar CLS_ITEMS = 'e-toolbar-items';\nvar CLS_ITEM = 'e-toolbar-item';\nvar CLS_RTL = 'e-rtl';\nvar CLS_SEPARATOR = 'e-separator';\nvar CLS_POPUPICON = 'e-popup-up-icon';\nvar CLS_POPUPDOWN = 'e-popup-down-icon';\nvar CLS_POPUPOPEN = 'e-popup-open';\nvar CLS_TEMPLATE = 'e-template';\nvar CLS_DISABLE = 'e-overlay';\nvar CLS_POPUPTEXT = 'e-toolbar-text';\nvar CLS_TBARTEXT = 'e-popup-text';\nvar CLS_TBAROVERFLOW = 'e-overflow-show';\nvar CLS_POPOVERFLOW = 'e-overflow-hide';\nvar CLS_TBARBTN = 'e-tbar-btn';\nvar CLS_TBARNAV = 'e-hor-nav';\nvar CLS_TBARSCRLNAV = 'e-scroll-nav';\nvar CLS_TBARRIGHT = 'e-toolbar-right';\nvar CLS_TBARLEFT = 'e-toolbar-left';\nvar CLS_TBARCENTER = 'e-toolbar-center';\nvar CLS_TBARPOS = 'e-tbar-pos';\nvar CLS_HSCROLLCNT = 'e-hscroll-content';\nvar CLS_VSCROLLCNT = 'e-vscroll-content';\nvar CLS_HSCROLLBAR = 'e-hscroll-bar';\nvar CLS_POPUPNAV = 'e-hor-nav';\nvar CLS_POPUPCLASS = 'e-toolbar-pop';\nvar CLS_POPUP = 'e-toolbar-popup';\nvar CLS_TBARBTNTEXT = 'e-tbar-btn-text';\nvar CLS_TBARNAVACT = 'e-nav-active';\nvar CLS_TBARIGNORE = 'e-ignore';\nvar CLS_POPPRI = 'e-popup-alone';\nvar CLS_HIDDEN = 'e-hidden';\nvar CLS_MULTIROW = 'e-toolbar-multirow';\nvar CLS_MULTIROWPOS = 'e-multirow-pos';\nvar CLS_MULTIROW_SEPARATOR = 'e-multirow-separator';\nvar CLS_EXTENDABLE_SEPARATOR = 'e-extended-separator';\nvar CLS_EXTEANDABLE_TOOLBAR = 'e-extended-toolbar';\nvar CLS_EXTENDABLECLASS = 'e-toolbar-extended';\nvar CLS_EXTENDPOPUP = 'e-expended-nav';\nvar CLS_EXTENDEDPOPOPEN = 'e-tbar-extended';\n/**\n * An item object that is used to configure Toolbar commands.\n */\nvar Item = /** @class */ (function (_super) {\n __extends(Item, _super);\n function Item() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], Item.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], Item.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], Item.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], Item.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], Item.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], Item.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], Item.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], Item.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], Item.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], Item.prototype, \"align\", void 0);\n __decorate([\n Event()\n ], Item.prototype, \"click\", void 0);\n __decorate([\n Property(-1)\n ], Item.prototype, \"tabIndex\", void 0);\n return Item;\n}(ChildProperty));\nexport { Item };\n/**\n * The Toolbar control contains a group of commands that are aligned horizontally.\n * ```html\n *
\n * \n * ```\n */\nvar Toolbar = /** @class */ (function (_super) {\n __extends(Toolbar, _super);\n /**\n * Initializes a new instance of the Toolbar class.\n *\n * @param {ToolbarModel} options - Specifies Toolbar model properties as options.\n * @param { string | HTMLElement} element - Specifies the element that is rendered as a Toolbar.\n */\n function Toolbar(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.resizeContext = _this.resize.bind(_this);\n _this.orientationChangeContext = _this.orientationChange.bind(_this);\n /**\n * Contains the keyboard configuration of the Toolbar.\n */\n _this.keyConfigs = {\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n moveDown: 'downarrow',\n popupOpen: 'enter',\n popupClose: 'escape',\n tab: 'tab',\n home: 'home',\n end: 'end'\n };\n return _this;\n }\n /**\n * Removes the control from the DOM and also removes all its related events.\n *\n * @returns {void}.\n */\n Toolbar.prototype.destroy = function () {\n var _this = this;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n var btnItems = this.element.querySelectorAll('.e-control.e-btn');\n [].slice.call(btnItems).forEach(function (el) {\n if (!isNOU(el) && !isNOU(el.ej2_instances) && !isNOU(el.ej2_instances[0]) && !(el.ej2_instances[0].isDestroyed)) {\n el.ej2_instances[0].destroy();\n }\n });\n this.unwireEvents();\n this.tempId.forEach(function (ele) {\n if (!isNOU(_this.element.querySelector(ele))) {\n document.body.appendChild(_this.element.querySelector(ele)).style.display = 'none';\n }\n });\n this.destroyItems();\n while (this.element.lastElementChild) {\n this.element.removeChild(this.element.lastElementChild);\n }\n if (this.trgtEle) {\n this.element.appendChild(this.ctrlTem);\n this.trgtEle = null;\n this.ctrlTem = null;\n }\n if (this.popObj) {\n this.popObj.destroy();\n detach(this.popObj.element);\n }\n if (this.activeEle) {\n this.activeEle = null;\n }\n this.popObj = null;\n this.tbarAlign = null;\n this.tbarItemsCol = [];\n this.remove(this.element, 'e-toolpop');\n if (this.cssClass) {\n removeClass([this.element], this.cssClass.split(' '));\n }\n this.element.removeAttribute('style');\n ['aria-disabled', 'aria-orientation', 'role'].forEach(function (attrb) {\n return _this.element.removeAttribute(attrb);\n });\n _super.prototype.destroy.call(this);\n };\n /**\n * Initialize the event handler\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.preRender = function () {\n var eventArgs = { enableCollision: this.enableCollision, scrollStep: this.scrollStep };\n this.trigger('beforeCreate', eventArgs);\n this.enableCollision = eventArgs.enableCollision;\n this.scrollStep = eventArgs.scrollStep;\n this.scrollModule = null;\n this.popObj = null;\n this.tempId = [];\n this.tbarItemsCol = this.items;\n this.isVertical = this.element.classList.contains(CLS_VERTICAL) ? true : false;\n this.isExtendedOpen = false;\n this.popupPriCount = 0;\n if (this.enableRtl) {\n this.add(this.element, CLS_RTL);\n }\n };\n Toolbar.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'click', this.clickHandler, this);\n window.addEventListener('resize', this.resizeContext);\n window.addEventListener('orientationchange', this.orientationChangeContext);\n if (this.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n };\n Toolbar.prototype.wireKeyboardEvent = function () {\n this.keyModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs\n });\n EventHandler.add(this.element, 'keydown', this.docKeyDown, this);\n this.updateTabIndex('0');\n };\n Toolbar.prototype.updateTabIndex = function (tabIndex) {\n var ele = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n if (!isNOU(ele) && !isNOU(ele.firstElementChild)) {\n var dataTabIndex = ele.firstElementChild.getAttribute('data-tabindex');\n if (dataTabIndex && dataTabIndex === '-1' && ele.firstElementChild.tagName !== 'INPUT') {\n ele.firstElementChild.setAttribute('tabindex', tabIndex);\n }\n }\n };\n Toolbar.prototype.unwireKeyboardEvent = function () {\n if (this.keyModule) {\n EventHandler.remove(this.element, 'keydown', this.docKeyDown);\n this.keyModule.destroy();\n this.keyModule = null;\n }\n };\n Toolbar.prototype.docKeyDown = function (e) {\n if (e.target.tagName === 'INPUT') {\n return;\n }\n var popCheck = !isNOU(this.popObj) && isVisible(this.popObj.element) && this.overflowMode !== 'Extended';\n if (e.keyCode === 9 && e.target.classList.contains('e-hor-nav') === true && popCheck) {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n var keyCheck = (e.keyCode === 40 || e.keyCode === 38 || e.keyCode === 35 || e.keyCode === 36);\n if (keyCheck) {\n e.preventDefault();\n }\n };\n Toolbar.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'click', this.clickHandler);\n this.destroyScroll();\n this.unwireKeyboardEvent();\n window.removeEventListener('resize', this.resizeContext);\n window.removeEventListener('orientationchange', this.orientationChangeContext);\n EventHandler.remove(document, 'scroll', this.docEvent);\n EventHandler.remove(document, 'click', this.docEvent);\n };\n Toolbar.prototype.clearProperty = function () {\n this.tbarEle = [];\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n };\n Toolbar.prototype.docEvent = function (e) {\n var popEle = closest(e.target, '.e-popup');\n if (this.popObj && isVisible(this.popObj.element) && !popEle && this.overflowMode === 'Popup') {\n this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n };\n Toolbar.prototype.destroyScroll = function () {\n if (this.scrollModule) {\n if (this.tbarAlign) {\n this.add(this.scrollModule.element, CLS_TBARPOS);\n }\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n };\n Toolbar.prototype.destroyItems = function () {\n if (this.element) {\n [].slice.call(this.element.querySelectorAll('.' + CLS_ITEM)).forEach(function (el) { detach(el); });\n }\n if (this.tbarAlign) {\n var tbarItems = this.element.querySelector('.' + CLS_ITEMS);\n [].slice.call(tbarItems.children).forEach(function (el) {\n detach(el);\n });\n this.tbarAlign = false;\n this.remove(tbarItems, CLS_TBARPOS);\n }\n this.clearProperty();\n };\n Toolbar.prototype.destroyMode = function () {\n if (this.scrollModule) {\n this.remove(this.scrollModule.element, CLS_RTL);\n this.destroyScroll();\n }\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n this.remove(this.element, CLS_EXTEANDABLE_TOOLBAR);\n var tempEle = this.element.querySelector('.e-toolbar-multirow');\n if (tempEle) {\n this.remove(tempEle, CLS_MULTIROW);\n }\n if (this.popObj) {\n this.popupRefresh(this.popObj.element, true);\n }\n };\n Toolbar.prototype.add = function (ele, val) {\n ele.classList.add(val);\n };\n Toolbar.prototype.remove = function (ele, val) {\n ele.classList.remove(val);\n };\n Toolbar.prototype.elementFocus = function (ele) {\n var fChild = ele.firstElementChild;\n if (fChild) {\n fChild.focus();\n this.activeEleSwitch(ele);\n }\n else {\n ele.focus();\n }\n };\n Toolbar.prototype.clstElement = function (tbrNavChk, trgt) {\n var clst;\n if (tbrNavChk && this.popObj && isVisible(this.popObj.element)) {\n clst = this.popObj.element.querySelector('.' + CLS_ITEM);\n }\n else if (this.element === trgt || tbrNavChk) {\n clst = this.element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_DISABLE + ' ):not(.' + CLS_SEPARATOR + ' ):not(.' + CLS_HIDDEN + ' )');\n }\n else {\n clst = closest(trgt, '.' + CLS_ITEM);\n }\n return clst;\n };\n Toolbar.prototype.keyHandling = function (clst, e, trgt, navChk, scrollChk) {\n var popObj = this.popObj;\n var rootEle = this.element;\n var popAnimate = { name: 'FadeOut', duration: 100 };\n var value = e.action === 'moveUp' ? 'previous' : 'next';\n var ele;\n var nodes;\n switch (e.action) {\n case 'moveRight':\n if (this.isVertical) {\n return;\n }\n if (rootEle === trgt) {\n this.elementFocus(clst);\n }\n else if (!navChk) {\n this.eleFocus(clst, 'next');\n }\n break;\n case 'moveLeft':\n if (this.isVertical) {\n return;\n }\n if (!navChk) {\n this.eleFocus(clst, 'previous');\n }\n break;\n case 'home':\n case 'end':\n if (clst) {\n var popupCheck = closest(clst, '.e-popup');\n var extendedPopup = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && extendedPopup && extendedPopup.classList.contains('e-popup-open')) {\n popupCheck = e.action === 'end' ? extendedPopup : null;\n }\n if (popupCheck) {\n if (isVisible(this.popObj.element)) {\n nodes = [].slice.call(popupCheck.children);\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n }\n else {\n nodes = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')');\n if (e.action === 'home') {\n ele = this.focusFirstVisibleEle(nodes);\n }\n else {\n ele = this.focusLastVisibleEle(nodes);\n }\n }\n if (ele) {\n this.elementFocus(ele);\n }\n }\n break;\n case 'moveUp':\n case 'moveDown':\n if (!this.isVertical) {\n if (popObj && closest(trgt, '.e-popup')) {\n var popEle = popObj.element;\n var popFrstEle = popEle.firstElementChild;\n if ((value === 'previous' && popFrstEle === clst)) {\n popEle.lastElementChild.firstChild.focus();\n }\n else if (value === 'next' && popEle.lastElementChild === clst) {\n popFrstEle.firstChild.focus();\n }\n else {\n this.eleFocus(clst, value);\n }\n }\n else if (e.action === 'moveDown' && popObj && isVisible(popObj.element)) {\n this.elementFocus(clst);\n }\n }\n else {\n if (e.action === 'moveUp') {\n this.eleFocus(clst, 'previous');\n }\n else {\n this.eleFocus(clst, 'next');\n }\n }\n break;\n case 'tab':\n if (!scrollChk && !navChk) {\n var ele_1 = clst.firstElementChild;\n if (rootEle === trgt) {\n if (this.activeEle) {\n this.activeEle.focus();\n }\n else {\n this.activeEleRemove(ele_1);\n ele_1.focus();\n }\n }\n }\n break;\n case 'popupClose':\n if (popObj && this.overflowMode !== 'Extended') {\n popObj.hide(popAnimate);\n }\n break;\n case 'popupOpen':\n if (!navChk) {\n return;\n }\n if (popObj && !isVisible(popObj.element)) {\n popObj.element.style.top = rootEle.offsetHeight + 'px';\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n else {\n popObj.hide(popAnimate);\n }\n break;\n }\n };\n Toolbar.prototype.keyActionHandler = function (e) {\n var trgt = e.target;\n if (trgt.tagName === 'INPUT' || trgt.tagName === 'TEXTAREA' || this.element.classList.contains(CLS_DISABLE)) {\n return;\n }\n e.preventDefault();\n var tbrNavChk = trgt.classList.contains(CLS_TBARNAV);\n var tbarScrollChk = trgt.classList.contains(CLS_TBARSCRLNAV);\n var clst = this.clstElement(tbrNavChk, trgt);\n if (clst || tbarScrollChk) {\n this.keyHandling(clst, e, trgt, tbrNavChk, tbarScrollChk);\n }\n };\n /**\n * Specifies the value to disable/enable the Toolbar component.\n * When set to `true`, the component will be disabled.\n *\n * @param {boolean} value - Based on this Boolean value, Toolbar will be enabled (false) or disabled (true).\n * @returns {void}.\n */\n Toolbar.prototype.disable = function (value) {\n var rootEle = this.element;\n if (value) {\n rootEle.classList.add(CLS_DISABLE);\n }\n else {\n rootEle.classList.remove(CLS_DISABLE);\n }\n if (this.activeEle) {\n this.activeEle.setAttribute('tabindex', this.activeEle.getAttribute('data-tabindex'));\n }\n if (this.scrollModule) {\n this.scrollModule.disable(value);\n }\n if (this.popObj) {\n if (isVisible(this.popObj.element) && this.overflowMode !== 'Extended') {\n this.popObj.hide();\n }\n rootEle.querySelector('#' + rootEle.id + '_nav').setAttribute('tabindex', !value ? '0' : '-1');\n }\n };\n Toolbar.prototype.eleContains = function (el) {\n return el.classList.contains(CLS_SEPARATOR) || el.classList.contains(CLS_DISABLE) || el.getAttribute('disabled') || el.classList.contains(CLS_HIDDEN) || !isVisible(el) || !el.classList.contains(CLS_ITEM);\n };\n Toolbar.prototype.focusFirstVisibleEle = function (nodes) {\n var element;\n var index = 0;\n while (index < nodes.length) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index++;\n }\n return element;\n };\n Toolbar.prototype.focusLastVisibleEle = function (nodes) {\n var element;\n var index = nodes.length - 1;\n while (index >= 0) {\n var ele = nodes[parseInt(index.toString(), 10)];\n if (!ele.classList.contains(CLS_HIDDEN) && !ele.classList.contains(CLS_DISABLE)) {\n return ele;\n }\n index--;\n }\n return element;\n };\n Toolbar.prototype.eleFocus = function (closest, pos) {\n var sib = Object(closest)[pos + 'ElementSibling'];\n if (sib) {\n var skipEle = this.eleContains(sib);\n if (skipEle) {\n this.eleFocus(sib, pos);\n return;\n }\n this.elementFocus(sib);\n }\n else if (this.tbarAlign) {\n var elem = Object(closest.parentElement)[pos + 'ElementSibling'];\n if (!isNOU(elem) && elem.children.length === 0) {\n elem = Object(elem)[pos + 'ElementSibling'];\n }\n if (!isNOU(elem) && elem.children.length > 0) {\n if (pos === 'next') {\n var el = elem.querySelector('.' + CLS_ITEM);\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n el.firstElementChild.focus();\n this.activeEleSwitch(el);\n }\n }\n else {\n var el = elem.lastElementChild;\n if (this.eleContains(el)) {\n this.eleFocus(el, pos);\n }\n else {\n this.elementFocus(el);\n }\n }\n }\n }\n else if (!isNOU(closest)) {\n var tbrItems = this.element.querySelectorAll('.' + CLS_ITEMS + ' .' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + ')' + ':not(.' + CLS_DISABLE + ')' + ':not(.' + CLS_HIDDEN + ')');\n if (pos === 'next' && tbrItems) {\n this.elementFocus(tbrItems[0]);\n }\n else if (pos === 'previous' && tbrItems) {\n this.elementFocus(tbrItems[tbrItems.length - 1]);\n }\n }\n };\n Toolbar.prototype.clickHandler = function (e) {\n var _this = this;\n var trgt = e.target;\n var ele = this.element;\n var isPopupElement = !isNOU(closest(trgt, '.' + CLS_POPUPCLASS));\n var clsList = trgt.classList;\n var popupNav = closest(trgt, ('.' + CLS_TBARNAV));\n if (!popupNav) {\n popupNav = trgt;\n }\n if (!ele.children[0].classList.contains('e-hscroll') && !ele.children[0].classList.contains('e-vscroll')\n && (clsList.contains(CLS_TBARNAV))) {\n clsList = trgt.querySelector('.e-icons').classList;\n }\n if (clsList.contains(CLS_POPUPICON) || clsList.contains(CLS_POPUPDOWN)) {\n this.popupClickHandler(ele, popupNav, CLS_RTL);\n }\n var itemObj;\n var clst = closest(e.target, '.' + CLS_ITEM);\n if ((isNOU(clst) || clst.classList.contains(CLS_DISABLE)) && !popupNav.classList.contains(CLS_TBARNAV)) {\n return;\n }\n if (clst) {\n var tempItem = this.items[this.tbarEle.indexOf(clst)];\n itemObj = tempItem;\n }\n var eventArgs = { originalEvent: e, item: itemObj };\n if (itemObj && !isNOU(itemObj.click)) {\n this.trigger('items[' + this.tbarEle.indexOf(clst) + '].click', eventArgs);\n }\n if (!eventArgs.cancel) {\n this.trigger('clicked', eventArgs, function (clickedArgs) {\n if (!isNOU(_this.popObj) && isPopupElement && !clickedArgs.cancel && _this.overflowMode === 'Popup' &&\n clickedArgs.item && clickedArgs.item.type !== 'Input') {\n _this.popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n });\n }\n };\n Toolbar.prototype.popupClickHandler = function (ele, popupNav, CLS_RTL) {\n var popObj = this.popObj;\n if (isVisible(popObj.element)) {\n popupNav.classList.remove(CLS_TBARNAVACT);\n popObj.hide({ name: 'FadeOut', duration: 100 });\n }\n else {\n if (ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = true;\n popObj.position = { X: 'left', Y: 'top' };\n }\n if (popObj.offsetX === 0 && !ele.classList.contains(CLS_RTL)) {\n popObj.enableRtl = false;\n popObj.position = { X: 'right', Y: 'top' };\n }\n popObj.dataBind();\n popObj.refreshPosition();\n popObj.element.style.top = this.getElementOffsetY() + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '0px';\n }\n popupNav.classList.add(CLS_TBARNAVACT);\n popObj.show({ name: 'FadeIn', duration: 100 });\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n Toolbar.prototype.render = function () {\n var _this = this;\n this.initialize();\n this.renderControl();\n this.wireEvents();\n this.renderComplete();\n if (this.isReact && this.portals && this.portals.length > 0) {\n this.renderReactTemplates(function () {\n _this.refreshOverflow();\n });\n }\n };\n Toolbar.prototype.initialize = function () {\n var width = formatUnit(this.width);\n var height = formatUnit(this.height);\n if (Browser.info.name !== 'msie' || this.height !== 'auto' || this.overflowMode === 'MultiRow') {\n setStyle(this.element, { 'height': height });\n }\n setStyle(this.element, { 'width': width });\n var ariaAttr = {\n 'role': 'toolbar', 'aria-disabled': 'false',\n 'aria-orientation': !this.isVertical ? 'horizontal' : 'vertical'\n };\n attributes(this.element, ariaAttr);\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n Toolbar.prototype.renderControl = function () {\n var ele = this.element;\n this.trgtEle = (ele.children.length > 0) ? ele.querySelector('div') : null;\n this.tbarAlgEle = { lefts: [], centers: [], rights: [] };\n this.renderItems();\n this.renderLayout();\n };\n Toolbar.prototype.renderLayout = function () {\n this.renderOverflowMode();\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.popObj.element.childElementCount > 1 && this.checkPopupRefresh(this.element, this.popObj.element)) {\n this.popupRefresh(this.popObj.element, false);\n }\n this.separator();\n };\n Toolbar.prototype.itemsAlign = function (items, itemEleDom) {\n var innerItem;\n var innerPos;\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n for (var i = 0; i < items.length; i++) {\n innerItem = this.renderSubComponent(items[parseInt(i.toString(), 10)], i);\n if (this.tbarEle.indexOf(innerItem) === -1) {\n this.tbarEle.push(innerItem);\n }\n if (!this.tbarAlign) {\n this.tbarItemAlign(items[parseInt(i.toString(), 10)], itemEleDom, i);\n }\n innerPos = itemEleDom.querySelector('.e-toolbar-' + items[parseInt(i.toString(), 10)].align.toLowerCase());\n if (innerPos) {\n if (!(items[parseInt(i.toString(), 10)].showAlwaysInPopup && items[parseInt(i.toString(), 10)].overflow !== 'Show')) {\n this.tbarAlgEle[(items[parseInt(i.toString(), 10)].align + 's').toLowerCase()].push(innerItem);\n }\n innerPos.appendChild(innerItem);\n }\n else {\n itemEleDom.appendChild(innerItem);\n }\n }\n if (this.isReact) {\n var portals = 'portals';\n this.notify('render-react-toolbar-template', this[\"\" + portals]);\n this.renderReactTemplates();\n }\n };\n /**\n * @hidden\n * @returns {void}\n */\n Toolbar.prototype.changeOrientation = function () {\n var ele = this.element;\n if (this.isVertical) {\n ele.classList.remove(CLS_VERTICAL);\n this.isVertical = false;\n if (this.height === 'auto' || this.height === '100%') {\n ele.style.height = this.height;\n }\n ele.setAttribute('aria-orientation', 'horizontal');\n }\n else {\n ele.classList.add(CLS_VERTICAL);\n this.isVertical = true;\n ele.setAttribute('aria-orientation', 'vertical');\n setStyle(this.element, { 'height': formatUnit(this.height), 'width': formatUnit(this.width) });\n }\n this.destroyMode();\n this.refreshOverflow();\n };\n Toolbar.prototype.initScroll = function (element, innerItems) {\n if (!this.scrollModule && this.checkOverflow(element, innerItems[0])) {\n if (this.tbarAlign) {\n this.element.querySelector('.' + CLS_ITEMS + ' .' + CLS_TBARCENTER).removeAttribute('style');\n }\n if (this.isVertical) {\n this.scrollModule = new VScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n else {\n this.scrollModule = new HScroll({ scrollStep: this.scrollStep, enableRtl: this.enableRtl }, innerItems[0]);\n }\n if (this.cssClass) {\n addClass([innerItems[0]], this.cssClass.split(' '));\n }\n var scrollEle = this.scrollModule.element.querySelector('.' + CLS_HSCROLLBAR + ', .' + 'e-vscroll-bar');\n if (scrollEle) {\n scrollEle.removeAttribute('tabindex');\n }\n this.remove(this.scrollModule.element, CLS_TBARPOS);\n setStyle(this.element, { overflow: 'hidden' });\n }\n };\n Toolbar.prototype.itemWidthCal = function (items) {\n var _this = this;\n var width = 0;\n var style;\n [].slice.call(selectAll('.' + CLS_ITEM, items)).forEach(function (el) {\n if (isVisible(el)) {\n style = window.getComputedStyle(el);\n width += _this.isVertical ? el.offsetHeight : el.offsetWidth;\n width += parseFloat(_this.isVertical ? style.marginTop : style.marginRight);\n width += parseFloat(_this.isVertical ? style.marginBottom : style.marginLeft);\n }\n });\n return width;\n };\n Toolbar.prototype.getScrollCntEle = function (innerItem) {\n var trgClass = (this.isVertical) ? '.e-vscroll-content' : '.e-hscroll-content';\n return innerItem.querySelector(trgClass);\n };\n Toolbar.prototype.checkOverflow = function (element, innerItem) {\n if (isNOU(element) || isNOU(innerItem) || !isVisible(element)) {\n return false;\n }\n var eleWidth = this.isVertical ? element.offsetHeight : element.offsetWidth;\n var itemWidth = this.isVertical ? innerItem.offsetHeight : innerItem.offsetWidth;\n if (this.tbarAlign || this.scrollModule || (eleWidth === itemWidth)) {\n itemWidth = this.itemWidthCal(this.scrollModule ? this.getScrollCntEle(innerItem) : innerItem);\n }\n var popNav = element.querySelector('.' + CLS_TBARNAV);\n var scrollNav = element.querySelector('.' + CLS_TBARSCRLNAV);\n var navEleWidth = 0;\n if (popNav) {\n navEleWidth = this.isVertical ? popNav.offsetHeight : popNav.offsetWidth;\n }\n else if (scrollNav) {\n navEleWidth = this.isVertical ? (scrollNav.offsetHeight * (2)) : (scrollNav.offsetWidth * 2);\n }\n if (itemWidth > eleWidth - navEleWidth) {\n return true;\n }\n else {\n return false;\n }\n };\n /**\n * Refresh the whole Toolbar component without re-rendering.\n * - It is used to manually refresh the Toolbar overflow modes such as scrollable, popup, multi row, and extended.\n * - It will refresh the Toolbar component after loading items dynamically.\n *\n * @returns {void}.\n */\n Toolbar.prototype.refreshOverflow = function () {\n this.resize();\n };\n Toolbar.prototype.toolbarAlign = function (innerItems) {\n if (this.tbarAlign) {\n this.add(innerItems, CLS_TBARPOS);\n this.itemPositioning();\n }\n };\n Toolbar.prototype.renderOverflowMode = function () {\n var ele = this.element;\n var innerItems = ele.querySelector('.' + CLS_ITEMS);\n var priorityCheck = this.popupPriCount > 0;\n if (ele && ele.children.length > 0) {\n this.offsetWid = ele.offsetWidth;\n this.remove(this.element, 'e-toolpop');\n if (Browser.info.name === 'msie' && this.height === 'auto') {\n ele.style.height = '';\n }\n switch (this.overflowMode) {\n case 'Scrollable':\n if (isNOU(this.scrollModule)) {\n this.initScroll(ele, [].slice.call(ele.getElementsByClassName(CLS_ITEMS)));\n }\n break;\n case 'Popup':\n this.add(this.element, 'e-toolpop');\n if (this.tbarAlign) {\n this.removePositioning();\n }\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n break;\n case 'MultiRow':\n this.add(innerItems, CLS_MULTIROW);\n if (this.checkOverflow(ele, innerItems) && this.tbarAlign) {\n this.removePositioning();\n this.add(innerItems, CLS_MULTIROWPOS);\n }\n if (ele.style.overflow === 'hidden') {\n ele.style.overflow = '';\n }\n if (Browser.info.name === 'msie' || ele.style.height !== 'auto') {\n ele.style.height = 'auto';\n }\n break;\n case 'Extended':\n this.add(this.element, CLS_EXTEANDABLE_TOOLBAR);\n if (this.checkOverflow(ele, innerItems) || priorityCheck) {\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.setOverflowAttributes(ele);\n }\n this.toolbarAlign(innerItems);\n }\n }\n };\n Toolbar.prototype.setOverflowAttributes = function (ele) {\n this.createPopupEle(ele, [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, ele)));\n var ariaAttr = {\n 'tabindex': '0', 'role': 'button', 'aria-haspopup': 'true',\n 'aria-label': 'overflow'\n };\n attributes(this.element.querySelector('.' + CLS_TBARNAV), ariaAttr);\n };\n Toolbar.prototype.separator = function () {\n var element = this.element;\n var eleItem = [].slice.call(element.querySelectorAll('.' + CLS_SEPARATOR));\n var multiVar = element.querySelector('.' + CLS_MULTIROW_SEPARATOR);\n var extendVar = element.querySelector('.' + CLS_EXTENDABLE_SEPARATOR);\n var eleInlineItem = this.overflowMode === 'MultiRow' ? multiVar : extendVar;\n if (eleInlineItem !== null) {\n if (this.overflowMode === 'MultiRow') {\n eleInlineItem.classList.remove(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleInlineItem.classList.remove(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n for (var i = 0; i <= eleItem.length - 1; i++) {\n if (eleItem[parseInt(i.toString(), 10)].offsetLeft < 30 && eleItem[parseInt(i.toString(), 10)].offsetLeft !== 0) {\n if (this.overflowMode === 'MultiRow') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_MULTIROW_SEPARATOR);\n }\n else if (this.overflowMode === 'Extended') {\n eleItem[parseInt(i.toString(), 10)].classList.add(CLS_EXTENDABLE_SEPARATOR);\n }\n }\n }\n };\n Toolbar.prototype.createPopupEle = function (ele, innerEle) {\n var innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var vertical = this.isVertical;\n if (!innerNav) {\n this.createPopupIcon(ele);\n }\n innerNav = ele.querySelector('.' + CLS_TBARNAV);\n var innerNavDom = (vertical ? innerNav.offsetHeight : innerNav.offsetWidth);\n var eleWidth = ((vertical ? ele.offsetHeight : ele.offsetWidth) - (innerNavDom));\n this.element.classList.remove('e-rtl');\n setStyle(this.element, { direction: 'initial' });\n this.checkPriority(ele, innerEle, eleWidth, true);\n if (this.enableRtl) {\n this.element.classList.add('e-rtl');\n }\n this.element.style.removeProperty('direction');\n this.createPopup();\n };\n Toolbar.prototype.pushingPoppedEle = function (tbarObj, popupPri, ele, eleHeight, sepHeight) {\n var element = tbarObj.element;\n var poppedEle = [].slice.call(selectAll('.' + CLS_POPUP, element.querySelector('.' + CLS_ITEMS)));\n var nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n var nodeIndex = 0;\n var nodePri = 0;\n poppedEle.forEach(function (el, index) {\n nodes = selectAll('.' + CLS_TBAROVERFLOW, ele);\n if (el.classList.contains(CLS_TBAROVERFLOW) && nodes.length > 0) {\n if (tbarObj.tbResize && nodes.length > index) {\n ele.insertBefore(el, nodes[parseInt(index.toString(), 10)]);\n ++nodePri;\n }\n else {\n ele.insertBefore(el, ele.children[nodes.length]);\n ++nodePri;\n }\n }\n else if (el.classList.contains(CLS_TBAROVERFLOW)) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (tbarObj.tbResize && el.classList.contains(CLS_POPOVERFLOW) && ele.children.length > 0 && nodes.length === 0) {\n ele.insertBefore(el, ele.firstChild);\n ++nodePri;\n }\n else if (el.classList.contains(CLS_POPOVERFLOW)) {\n popupPri.push(el);\n }\n else if (tbarObj.tbResize) {\n ele.insertBefore(el, ele.childNodes[nodeIndex + nodePri]);\n ++nodeIndex;\n }\n else {\n ele.appendChild(el);\n }\n if (el.classList.contains(CLS_SEPARATOR)) {\n setStyle(el, { display: '', height: sepHeight + 'px' });\n }\n else {\n setStyle(el, { display: '', height: eleHeight + 'px' });\n }\n });\n popupPri.forEach(function (el) {\n ele.appendChild(el);\n });\n var tbarEle = selectAll('.' + CLS_ITEM, element.querySelector('.' + CLS_ITEMS));\n for (var i = tbarEle.length - 1; i >= 0; i--) {\n var tbarElement = tbarEle[parseInt(i.toString(), 10)];\n if (tbarElement.classList.contains(CLS_SEPARATOR) && this.overflowMode !== 'Extended') {\n setStyle(tbarElement, { display: 'none' });\n }\n else {\n break;\n }\n }\n };\n Toolbar.prototype.createPopup = function () {\n var element = this.element;\n var sepHeight;\n var sepItem;\n if (this.overflowMode === 'Extended') {\n sepItem = element.querySelector('.' + CLS_SEPARATOR);\n sepHeight =\n (element.style.height === 'auto' || element.style.height === '') ? null : (sepItem && sepItem.offsetHeight);\n }\n var eleItem = element.querySelector('.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_POPUP + ')');\n var eleHeight = (element.style.height === 'auto' || element.style.height === '') ? null : (eleItem && eleItem.offsetHeight);\n var ele;\n var popupPri = [];\n if (select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element)) {\n ele = select('#' + element.id + '_popup.' + CLS_POPUPCLASS, element);\n }\n else {\n var extendEle = this.createElement('div', {\n id: element.id + '_popup', className: CLS_POPUPCLASS + ' ' + CLS_EXTENDABLECLASS\n });\n var popupEle = this.createElement('div', { id: element.id + '_popup', className: CLS_POPUPCLASS });\n ele = this.overflowMode === 'Extended' ? extendEle : popupEle;\n }\n this.pushingPoppedEle(this, popupPri, ele, eleHeight, sepHeight);\n this.popupInit(element, ele);\n };\n Toolbar.prototype.getElementOffsetY = function () {\n return (this.overflowMode === 'Extended' && window.getComputedStyle(this.element).getPropertyValue('box-sizing') === 'border-box' ?\n this.element.clientHeight : this.element.offsetHeight);\n };\n Toolbar.prototype.popupInit = function (element, ele) {\n if (!this.popObj) {\n element.appendChild(ele);\n if (this.cssClass) {\n addClass([ele], this.cssClass.split(' '));\n }\n setStyle(this.element, { overflow: '' });\n var eleStyles = window.getComputedStyle(this.element);\n var popup = new Popup(null, {\n relateTo: this.element,\n offsetY: (this.isVertical) ? 0 : this.getElementOffsetY(),\n enableRtl: this.enableRtl,\n open: this.popupOpen.bind(this),\n close: this.popupClose.bind(this),\n collision: { Y: this.enableCollision ? 'flip' : 'none' },\n position: this.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }\n });\n if (this.overflowMode === 'Extended') {\n popup.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n popup.offsetX = 0;\n }\n popup.appendTo(ele);\n EventHandler.add(document, 'scroll', this.docEvent.bind(this));\n EventHandler.add(document, 'click ', this.docEvent.bind(this));\n popup.element.style.maxHeight = popup.element.offsetHeight + 'px';\n if (this.isVertical) {\n popup.element.style.visibility = 'hidden';\n }\n if (this.isExtendedOpen) {\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popupNav.firstElementChild, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.element.querySelector('.' + CLS_EXTENDABLECLASS).classList.add(CLS_POPUPOPEN);\n }\n else {\n popup.hide();\n }\n this.popObj = popup;\n }\n else {\n var popupEle = this.popObj.element;\n setStyle(popupEle, { maxHeight: '', display: 'block' });\n setStyle(popupEle, { maxHeight: popupEle.offsetHeight + 'px', display: '' });\n }\n };\n Toolbar.prototype.tbarPopupHandler = function (isOpen) {\n if (this.overflowMode === 'Extended') {\n if (isOpen) {\n this.add(this.element, CLS_EXTENDEDPOPOPEN);\n }\n else {\n this.remove(this.element, CLS_EXTENDEDPOPOPEN);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupOpen = function (e) {\n var popObj = this.popObj;\n if (!this.isVertical) {\n popObj.offsetY = this.getElementOffsetY();\n popObj.dataBind();\n }\n var popupEle = this.popObj.element;\n var toolEle = this.popObj.element.parentElement;\n var popupNav = toolEle.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'true');\n setStyle(popObj.element, { height: 'auto', maxHeight: '' });\n popObj.element.style.maxHeight = popObj.element.offsetHeight + 'px';\n if (this.overflowMode === 'Extended') {\n popObj.element.style.minHeight = '';\n }\n var popupElePos = popupEle.offsetTop + popupEle.offsetHeight + calculatePosition(toolEle).top;\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.add(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPICON], [CLS_POPUPDOWN]);\n this.tbarPopupHandler(true);\n var scrollVal = isNOU(window.scrollY) ? 0 : window.scrollY;\n if (!this.isVertical && ((window.innerHeight + scrollVal) < popupElePos) && (this.element.offsetTop < popupEle.offsetHeight)) {\n var overflowHeight = (popupEle.offsetHeight - ((popupElePos - window.innerHeight - scrollVal) + 5));\n popObj.height = overflowHeight + 'px';\n for (var i = 0; i <= popupEle.childElementCount; i++) {\n var ele = popupEle.children[parseInt(i.toString(), 10)];\n if (ele.offsetTop + ele.offsetHeight > overflowHeight) {\n overflowHeight = ele.offsetTop;\n break;\n }\n }\n setStyle(popObj.element, { maxHeight: overflowHeight + 'px' });\n }\n else if (this.isVertical) {\n var tbEleData = this.element.getBoundingClientRect();\n setStyle(popObj.element, { maxHeight: (tbEleData.top + this.element.offsetHeight) + 'px', bottom: 0, visibility: '' });\n }\n if (popObj) {\n var popupOffset = popupEle.getBoundingClientRect();\n if (popupOffset.right > document.documentElement.clientWidth && popupOffset.width > toolEle.getBoundingClientRect().width) {\n popObj.collision = { Y: 'none' };\n popObj.dataBind();\n }\n popObj.refreshPosition();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Toolbar.prototype.popupClose = function (e) {\n var element = this.element;\n var popupNav = element.querySelector('.' + CLS_TBARNAV);\n popupNav.setAttribute('aria-expanded', 'false');\n var popIcon = popupNav.firstElementChild;\n popupNav.classList.remove(CLS_TBARNAVACT);\n classList(popIcon, [CLS_POPUPDOWN], [CLS_POPUPICON]);\n this.tbarPopupHandler(false);\n };\n Toolbar.prototype.checkPriority = function (ele, inEle, eleWidth, pre) {\n var popPriority = this.popupPriCount > 0;\n var len = inEle.length;\n var eleWid = eleWidth;\n var eleOffset;\n var checkoffset;\n var sepCheck = 0;\n var itemCount = 0;\n var itemPopCount = 0;\n var checkClass = function (ele, val) {\n var rVal = false;\n val.forEach(function (cls) {\n if (ele.classList.contains(cls)) {\n rVal = true;\n }\n });\n return rVal;\n };\n for (var i = len - 1; i >= 0; i--) {\n var mrgn = void 0;\n var compuStyle = window.getComputedStyle(inEle[parseInt(i.toString(), 10)]);\n if (this.isVertical) {\n mrgn = parseFloat((compuStyle).marginTop);\n mrgn += parseFloat((compuStyle).marginBottom);\n }\n else {\n mrgn = parseFloat((compuStyle).marginRight);\n mrgn += parseFloat((compuStyle).marginLeft);\n }\n var fstEleCheck = inEle[parseInt(i.toString(), 10)] === this.tbarEle[0];\n if (fstEleCheck) {\n this.tbarEleMrgn = mrgn;\n }\n eleOffset = this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight : inEle[parseInt(i.toString(), 10)].offsetWidth;\n var eleWid_1 = fstEleCheck ? (eleOffset + mrgn) : eleOffset;\n if (checkClass(inEle[parseInt(i.toString(), 10)], [CLS_POPPRI]) && popPriority) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n if (this.isVertical) {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetTop + inEle[parseInt(i.toString(), 10)].offsetHeight + mrgn) > eleWidth;\n }\n else {\n checkoffset =\n (inEle[parseInt(i.toString(), 10)].offsetLeft + inEle[parseInt(i.toString(), 10)].offsetWidth + mrgn) > eleWidth;\n }\n if (checkoffset) {\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_SEPARATOR)) {\n if (this.overflowMode === 'Extended') {\n var sepEle = inEle[parseInt(i.toString(), 10)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n itemPopCount++;\n }\n itemCount++;\n }\n else if (this.overflowMode === 'Popup') {\n if (sepCheck > 0 && itemCount === itemPopCount) {\n var sepEle = inEle[i + itemCount + (sepCheck - 1)];\n if (checkClass(sepEle, [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n setStyle(sepEle, { display: 'none' });\n }\n }\n sepCheck++;\n itemCount = 0;\n itemPopCount = 0;\n }\n }\n else {\n itemCount++;\n }\n if (inEle[parseInt(i.toString(), 10)].classList.contains(CLS_TBAROVERFLOW) && pre) {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n else if (!checkClass(inEle[parseInt(i.toString(), 10)], [CLS_SEPARATOR, CLS_TBARIGNORE])) {\n inEle[parseInt(i.toString(), 10)].classList.add(CLS_POPUP);\n if (this.isVertical) {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minHeight: eleWid_1 + 'px' });\n }\n else {\n setStyle(inEle[parseInt(i.toString(), 10)], { display: 'none', minWidth: eleWid_1 + 'px' });\n }\n itemPopCount++;\n }\n else {\n eleWidth -= ((this.isVertical ? inEle[parseInt(i.toString(), 10)].offsetHeight :\n inEle[parseInt(i.toString(), 10)].offsetWidth) + (mrgn));\n }\n }\n }\n if (pre) {\n var popedEle = selectAll('.' + CLS_ITEM + ':not(.' + CLS_POPUP + ')', this.element);\n this.checkPriority(ele, popedEle, eleWid, false);\n }\n };\n Toolbar.prototype.createPopupIcon = function (element) {\n var id = element.id.concat('_nav');\n var className = 'e-' + element.id.concat('_nav ' + CLS_POPUPNAV);\n className = this.overflowMode === 'Extended' ? className + ' ' + CLS_EXTENDPOPUP : className;\n var nav = this.createElement('div', { id: id, className: className });\n if (Browser.info.name === 'msie' || Browser.info.name === 'edge') {\n nav.classList.add('e-ie-align');\n }\n var navItem = this.createElement('div', { className: CLS_POPUPDOWN + ' e-icons' });\n nav.appendChild(navItem);\n nav.setAttribute('tabindex', '0');\n nav.setAttribute('role', 'button');\n element.appendChild(nav);\n };\n Toolbar.prototype.tbarPriRef = function (inEle, indx, sepPri, el, des, elWid, wid, ig, eleStyles) {\n var ignoreCount = ig;\n var popEle = this.popObj.element;\n var query = '.' + CLS_ITEM + ':not(.' + CLS_SEPARATOR + '):not(.' + CLS_TBAROVERFLOW + ')';\n var priEleCnt = selectAll('.' + CLS_POPUP + ':not(.' + CLS_TBAROVERFLOW + ')', popEle).length;\n var checkClass = function (ele, val) {\n return ele.classList.contains(val);\n };\n if (selectAll(query, inEle).length === 0) {\n var eleSep = inEle.children[indx - (indx - sepPri) - 1];\n var ignoreCheck = (!isNOU(eleSep) && checkClass(eleSep, CLS_TBARIGNORE));\n if ((!isNOU(eleSep) && checkClass(eleSep, CLS_SEPARATOR) && !isVisible(eleSep)) || ignoreCheck) {\n eleSep.style.display = 'unset';\n var eleSepWidth = eleSep.offsetWidth + (parseFloat(window.getComputedStyle(eleSep).marginRight) * 2);\n var prevSep = eleSep.previousElementSibling;\n if ((elWid + eleSepWidth) < wid || des) {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n if (!isNOU(prevSep)) {\n prevSep.style.display = '';\n }\n }\n else {\n setStyle(el, eleStyles);\n if (prevSep.classList.contains(CLS_SEPARATOR)) {\n prevSep.style.display = 'none';\n }\n }\n eleSep.style.display = '';\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - (indx - sepPri)]);\n }\n }\n else {\n inEle.insertBefore(el, inEle.children[(indx + ignoreCount) - priEleCnt]);\n }\n };\n Toolbar.prototype.popupRefresh = function (popupEle, destroy) {\n var _this = this;\n var ele = this.element;\n var isVer = this.isVertical;\n var innerEle = ele.querySelector('.' + CLS_ITEMS);\n var popNav = ele.querySelector('.' + CLS_TBARNAV);\n if (isNOU(popNav)) {\n return;\n }\n innerEle.removeAttribute('style');\n popupEle.style.display = 'block';\n var dimension;\n if (isVer) {\n dimension = ele.offsetHeight - (popNav.offsetHeight + innerEle.offsetHeight);\n }\n else {\n dimension = ele.offsetWidth - (popNav.offsetWidth + innerEle.offsetWidth);\n }\n var popupEleWidth = 0;\n [].slice.call(popupEle.children).forEach(function (el) {\n popupEleWidth += _this.popupEleWidth(el);\n setStyle(el, { 'position': '' });\n });\n if ((dimension + (isVer ? popNav.offsetHeight : popNav.offsetWidth)) > (popupEleWidth) && this.popupPriCount === 0) {\n destroy = true;\n }\n this.popupEleRefresh(dimension, popupEle, destroy);\n popupEle.style.display = '';\n if (popupEle.children.length === 0 && popNav && this.popObj) {\n detach(popNav);\n popNav = null;\n this.popObj.destroy();\n detach(this.popObj.element);\n this.popObj = null;\n }\n };\n Toolbar.prototype.ignoreEleFetch = function (index, innerEle) {\n var ignoreEle = [].slice.call(innerEle.querySelectorAll('.' + CLS_TBARIGNORE));\n var ignoreInx = [];\n var count = 0;\n if (ignoreEle.length > 0) {\n ignoreEle.forEach(function (ele) {\n ignoreInx.push([].slice.call(innerEle.children).indexOf(ele));\n });\n }\n else {\n return 0;\n }\n ignoreInx.forEach(function (val) {\n if (val <= index) {\n count++;\n }\n });\n return count;\n };\n Toolbar.prototype.checkPopupRefresh = function (root, popEle) {\n popEle.style.display = 'block';\n var elWid = this.popupEleWidth(popEle.firstElementChild);\n popEle.firstElementChild.style.removeProperty('Position');\n var tbarWidth = root.offsetWidth - root.querySelector('.' + CLS_TBARNAV).offsetWidth;\n var tbarItemsWid = root.querySelector('.' + CLS_ITEMS).offsetWidth;\n popEle.style.removeProperty('display');\n if (tbarWidth > (elWid + tbarItemsWid)) {\n return true;\n }\n return false;\n };\n Toolbar.prototype.popupEleWidth = function (el) {\n el.style.position = 'absolute';\n var elWidth = this.isVertical ? el.offsetHeight : el.offsetWidth;\n var btnText = el.querySelector('.' + CLS_TBARBTNTEXT);\n if (el.classList.contains('e-tbtn-align') || el.classList.contains(CLS_TBARTEXT)) {\n var btn = el.children[0];\n if (!isNOU(btnText) && el.classList.contains(CLS_TBARTEXT)) {\n btnText.style.display = 'none';\n }\n else if (!isNOU(btnText) && el.classList.contains(CLS_POPUPTEXT)) {\n btnText.style.display = 'block';\n }\n btn.style.minWidth = '0%';\n elWidth = parseFloat(!this.isVertical ? el.style.minWidth : el.style.minHeight);\n btn.style.minWidth = '';\n btn.style.minHeight = '';\n if (!isNOU(btnText)) {\n btnText.style.display = '';\n }\n }\n return elWidth;\n };\n Toolbar.prototype.popupEleRefresh = function (width, popupEle, destroy) {\n var popPriority = this.popupPriCount > 0;\n var eleSplice = this.tbarEle;\n var priEleCnt;\n var index;\n var innerEle = this.element.querySelector('.' + CLS_ITEMS);\n var ignoreCount = 0;\n var _loop_1 = function (el) {\n if (el.classList.contains(CLS_POPPRI) && popPriority && !destroy) {\n return \"continue\";\n }\n var elWidth = this_1.popupEleWidth(el);\n if (el === this_1.tbarEle[0]) {\n elWidth += this_1.tbarEleMrgn;\n }\n el.style.position = '';\n if (elWidth < width || destroy) {\n var inlineStyles = { minWidth: el.style.minWidth, height: el.style.height, minHeight: el.style.minHeight };\n setStyle(el, { minWidth: '', height: '', minHeight: '' });\n if (!el.classList.contains(CLS_POPOVERFLOW)) {\n el.classList.remove(CLS_POPUP);\n }\n index = this_1.tbarEle.indexOf(el);\n if (this_1.tbarAlign) {\n var pos = this_1.items[parseInt(index.toString(), 10)].align;\n index = this_1.tbarAlgEle[(pos + 's').toLowerCase()].indexOf(el);\n eleSplice = this_1.tbarAlgEle[(pos + 's').toLowerCase()];\n innerEle = this_1.element.querySelector('.' + CLS_ITEMS + ' .' + 'e-toolbar-' + pos.toLowerCase());\n }\n var sepBeforePri_1 = 0;\n if (this_1.overflowMode !== 'Extended') {\n eleSplice.slice(0, index).forEach(function (el) {\n if (el.classList.contains(CLS_TBAROVERFLOW) || el.classList.contains(CLS_SEPARATOR)) {\n if (el.classList.contains(CLS_SEPARATOR)) {\n el.style.display = '';\n width -= el.offsetWidth;\n }\n sepBeforePri_1++;\n }\n });\n }\n ignoreCount = this_1.ignoreEleFetch(index, innerEle);\n if (el.classList.contains(CLS_TBAROVERFLOW)) {\n this_1.tbarPriRef(innerEle, index, sepBeforePri_1, el, destroy, elWidth, width, ignoreCount, inlineStyles);\n width -= el.offsetWidth;\n }\n else if (index === 0) {\n innerEle.insertBefore(el, innerEle.firstChild);\n width -= el.offsetWidth;\n }\n else {\n priEleCnt = selectAll('.' + CLS_TBAROVERFLOW, this_1.popObj.element).length;\n innerEle.insertBefore(el, innerEle.children[(index + ignoreCount) - priEleCnt]);\n width -= el.offsetWidth;\n }\n el.style.height = '';\n }\n else {\n return \"break\";\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = [].slice.call(popupEle.children); _i < _a.length; _i++) {\n var el = _a[_i];\n var state_1 = _loop_1(el);\n if (state_1 === \"break\")\n break;\n }\n var checkOverflow = this.checkOverflow(this.element, this.element.getElementsByClassName(CLS_ITEMS)[0]);\n if (checkOverflow && !destroy) {\n this.renderOverflowMode();\n }\n };\n Toolbar.prototype.removePositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n this.remove(item, CLS_TBARPOS);\n var innerItem = [].slice.call(item.childNodes);\n innerItem[1].removeAttribute('style');\n innerItem[2].removeAttribute('style');\n };\n Toolbar.prototype.refreshPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n this.add(item, CLS_TBARPOS);\n this.itemPositioning();\n };\n Toolbar.prototype.itemPositioning = function () {\n var item = this.element.querySelector('.' + CLS_ITEMS);\n var margin;\n if (isNOU(item) || !item.classList.contains(CLS_TBARPOS)) {\n return;\n }\n var popupNav = this.element.querySelector('.' + CLS_TBARNAV);\n var innerItem;\n if (this.scrollModule) {\n var trgClass = (this.isVertical) ? CLS_VSCROLLCNT : CLS_HSCROLLCNT;\n innerItem = [].slice.call(item.querySelector('.' + trgClass).children);\n }\n else {\n innerItem = [].slice.call(item.childNodes);\n }\n if (this.isVertical) {\n margin = innerItem[0].offsetHeight + innerItem[2].offsetHeight;\n }\n else {\n margin = innerItem[0].offsetWidth + innerItem[2].offsetWidth;\n }\n var tbarWid = this.isVertical ? this.element.offsetHeight : this.element.offsetWidth;\n if (popupNav) {\n tbarWid -= (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth);\n var popWid = (this.isVertical ? popupNav.offsetHeight : popupNav.offsetWidth) + 'px';\n innerItem[2].removeAttribute('style');\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[2].style.top = popWid;\n }\n else {\n innerItem[2].style.bottom = popWid;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[2].style.left = popWid;\n }\n else {\n innerItem[2].style.right = popWid;\n }\n }\n }\n if (tbarWid <= margin) {\n return;\n }\n var value = (((tbarWid - margin)) - (!this.isVertical ? innerItem[1].offsetWidth : innerItem[1].offsetHeight)) / 2;\n innerItem[1].removeAttribute('style');\n var mrgn = ((!this.isVertical ? innerItem[0].offsetWidth : innerItem[0].offsetHeight) + value) + 'px';\n if (this.isVertical) {\n if (this.enableRtl) {\n innerItem[1].style.marginBottom = mrgn;\n }\n else {\n innerItem[1].style.marginTop = mrgn;\n }\n }\n else {\n if (this.enableRtl) {\n innerItem[1].style.marginRight = mrgn;\n }\n else {\n innerItem[1].style.marginLeft = mrgn;\n }\n }\n };\n Toolbar.prototype.tbarItemAlign = function (item, itemEle, pos) {\n var _this = this;\n if (item.showAlwaysInPopup && item.overflow !== 'Show') {\n return;\n }\n var alignDiv = [];\n alignDiv.push(this.createElement('div', { className: CLS_TBARLEFT }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARCENTER }));\n alignDiv.push(this.createElement('div', { className: CLS_TBARRIGHT }));\n if (pos === 0 && item.align !== 'Left') {\n alignDiv.forEach(function (ele) {\n itemEle.appendChild(ele);\n });\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n else if (item.align !== 'Left') {\n var alignEle = itemEle.childNodes;\n var leftAlign_1 = alignDiv[0];\n [].slice.call(alignEle).forEach(function (el) {\n _this.tbarAlgEle.lefts.push(el);\n leftAlign_1.appendChild(el);\n });\n itemEle.appendChild(leftAlign_1);\n itemEle.appendChild(alignDiv[1]);\n itemEle.appendChild(alignDiv[2]);\n this.tbarAlign = true;\n this.add(itemEle, CLS_TBARPOS);\n }\n };\n Toolbar.prototype.ctrlTemplate = function () {\n var _this = this;\n this.ctrlTem = this.trgtEle.cloneNode(true);\n this.add(this.trgtEle, CLS_ITEMS);\n this.tbarEle = [];\n var innerEle = [].slice.call(this.trgtEle.children);\n innerEle.forEach(function (ele) {\n if (ele.tagName === 'DIV') {\n _this.tbarEle.push(ele);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n _this.add(ele, CLS_ITEM);\n }\n });\n };\n Toolbar.prototype.renderItems = function () {\n var ele = this.element;\n var items = this.items;\n if (this.trgtEle != null) {\n this.ctrlTemplate();\n }\n else if (ele && items.length > 0) {\n var itemEleDom = void 0;\n if (ele && ele.children.length > 0) {\n itemEleDom = ele.querySelector('.' + CLS_ITEMS);\n }\n if (!itemEleDom) {\n itemEleDom = this.createElement('div', { className: CLS_ITEMS });\n }\n this.itemsAlign(items, itemEleDom);\n ele.appendChild(itemEleDom);\n }\n };\n Toolbar.prototype.setAttr = function (attr, element) {\n var key = Object.keys(attr);\n var keyVal;\n for (var i = 0; i < key.length; i++) {\n keyVal = key[parseInt(i.toString(), 10)];\n if (keyVal === 'class') {\n this.add(element, attr[\"\" + keyVal]);\n }\n else {\n element.setAttribute(keyVal, attr[\"\" + keyVal]);\n }\n }\n };\n /**\n * Enables or disables the specified Toolbar item.\n *\n * @param {number|HTMLElement|NodeList} items - DOM element or an array of items to be enabled or disabled.\n * @param {boolean} isEnable - Boolean value that determines whether the command should be enabled or disabled.\n * By default, `isEnable` is set to true.\n * @returns {void}.\n */\n Toolbar.prototype.enableItems = function (items, isEnable) {\n var elements = items;\n var len = elements.length;\n var ele;\n if (isNOU(isEnable)) {\n isEnable = true;\n }\n var enable = function (isEnable, ele) {\n if (isEnable) {\n ele.classList.remove(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'false');\n }\n }\n else {\n ele.classList.add(CLS_DISABLE);\n if (!isNOU(ele.firstElementChild)) {\n ele.firstElementChild.setAttribute('aria-disabled', 'true');\n }\n }\n };\n if (!isNOU(len) && len >= 1) {\n for (var a = 0, element = [].slice.call(elements); a < len; a++) {\n var itemElement = element[parseInt(a.toString(), 10)];\n if (typeof (itemElement) === 'number') {\n ele = this.getElementByIndex(itemElement);\n if (isNOU(ele)) {\n return;\n }\n else {\n elements[parseInt(a.toString(), 10)] = ele;\n }\n }\n else {\n ele = itemElement;\n }\n enable(isEnable, ele);\n }\n if (isEnable) {\n removeClass(elements, CLS_DISABLE);\n }\n else {\n addClass(elements, CLS_DISABLE);\n }\n }\n else {\n if (typeof (elements) === 'number') {\n ele = this.getElementByIndex(elements);\n if (isNOU(ele)) {\n return;\n }\n }\n else {\n ele = items;\n }\n enable(isEnable, ele);\n }\n };\n Toolbar.prototype.getElementByIndex = function (index) {\n if (this.tbarEle[parseInt(index.toString(), 10)]) {\n return this.tbarEle[parseInt(index.toString(), 10)];\n }\n return null;\n };\n /**\n * Adds new items to the Toolbar that accepts an array as Toolbar items.\n *\n * @param {ItemModel[]} items - DOM element or an array of items to be added to the Toolbar.\n * @param {number} index - Number value that determines where the command is to be added. By default, index is 0.\n * @returns {void}.\n */\n Toolbar.prototype.addItems = function (items, index) {\n var innerItems;\n this.extendedOpen();\n var itemsDiv = this.element.querySelector('.' + CLS_ITEMS);\n if (isNOU(itemsDiv)) {\n this.itemsRerender(items);\n return;\n }\n var innerEle;\n var itemAgn = 'Left';\n if (isNOU(index)) {\n index = 0;\n }\n items.forEach(function (e) {\n if (!isNOU(e.align) && e.align !== 'Left' && itemAgn === 'Left') {\n itemAgn = e.align;\n }\n });\n for (var _i = 0, items_1 = items; _i < items_1.length; _i++) {\n var item = items_1[_i];\n if (isNOU(item.type)) {\n item.type = 'Button';\n }\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n item.align = itemAgn;\n innerEle = this.renderSubComponent(item, index);\n if (this.tbarEle.length >= index && innerItems.length >= 0) {\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var algIndex = item.align[0] === 'L' ? 0 : item.align[0] === 'C' ? 1 : 2;\n var ele = void 0;\n if (!this.tbarAlign && itemAgn !== 'Left') {\n this.tbarItemAlign(item, itemsDiv, 1);\n this.tbarAlign = true;\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.appendChild(innerEle);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].push(innerEle);\n this.refreshPositioning();\n }\n else if (this.tbarAlign) {\n ele = closest(innerItems[0], '.' + CLS_ITEMS).children[parseInt(algIndex.toString(), 10)];\n ele.insertBefore(innerEle, ele.children[parseInt(index.toString(), 10)]);\n this.tbarAlgEle[(item.align + 's').toLowerCase()].splice(index, 0, innerEle);\n this.refreshPositioning();\n }\n else if (innerItems.length === 0) {\n innerItems = selectAll('.' + CLS_ITEMS, this.element);\n innerItems[0].appendChild(innerEle);\n }\n else {\n innerItems[0].parentNode.insertBefore(innerEle, innerItems[parseInt(index.toString(), 10)]);\n }\n this.items.splice(index, 0, item);\n if (item.template) {\n this.tbarEle.splice(this.tbarEle.length - 1, 1);\n }\n this.tbarEle.splice(index, 0, innerEle);\n index++;\n this.offsetWid = itemsDiv.offsetWidth;\n }\n }\n itemsDiv.style.width = '';\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Removes the items from the Toolbar. Acceptable arguments are index of item/HTMLElement/node list.\n *\n * @param {number|HTMLElement|NodeList|HTMLElement[]} args\n * Index or DOM element or an Array of item which is to be removed from the Toolbar.\n * @returns {void}.\n */\n Toolbar.prototype.removeItems = function (args) {\n var elements = args;\n var index;\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (typeof (elements) === 'number') {\n index = parseInt(args.toString(), 10);\n this.removeItemByIndex(index, innerItems);\n }\n else {\n if (elements && elements.length > 1) {\n for (var _i = 0, _a = [].slice.call(elements); _i < _a.length; _i++) {\n var ele = _a[_i];\n index = this.tbarEle.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n innerItems = selectAll('.' + CLS_ITEM, this.element);\n }\n }\n else {\n var ele = (elements && elements.length && elements.length === 1) ? elements[0] : args;\n index = innerItems.indexOf(ele);\n this.removeItemByIndex(index, innerItems);\n }\n }\n this.resize();\n };\n Toolbar.prototype.removeItemByIndex = function (index, innerItems) {\n if (this.tbarEle[parseInt(index.toString(), 10)] && innerItems[parseInt(index.toString(), 10)]) {\n var eleIdx = this.tbarEle.indexOf(innerItems[parseInt(index.toString(), 10)]);\n if (this.tbarAlign) {\n var indexAgn = this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].indexOf(this.tbarEle[parseInt(eleIdx.toString(), 10)]);\n this.tbarAlgEle[(this.items[parseInt(eleIdx.toString(), 10)].align + 's').toLowerCase()].splice(parseInt(indexAgn.toString(), 10), 1);\n }\n if (this.isReact) {\n this.clearToolbarTemplate(innerItems[parseInt(index.toString(), 10)]);\n }\n var btnItem = innerItems[parseInt(index.toString(), 10)].querySelector('.e-control.e-btn');\n if (!isNOU(btnItem) && !isNOU(btnItem.ej2_instances[0]) && !(btnItem.ej2_instances[0].isDestroyed)) {\n btnItem.ej2_instances[0].destroy();\n }\n detach(innerItems[parseInt(index.toString(), 10)]);\n this.items.splice(eleIdx, 1);\n this.tbarEle.splice(eleIdx, 1);\n }\n };\n Toolbar.prototype.templateRender = function (templateProp, innerEle, item, index) {\n var itemType = item.type;\n var eleObj = templateProp;\n var isComponent;\n if (typeof (templateProp) === 'object') {\n isComponent = typeof (eleObj.appendTo) === 'function';\n }\n if (typeof (templateProp) === 'string' || !isComponent) {\n var templateFn = void 0;\n var val = templateProp;\n var regEx = new RegExp(/<(?=.*? .*?\\/ ?>|br|hr|input|!--|wbr)[a-z]+.*?>|<([a-z]+).*?<\\/\\1>/i);\n val = (typeof (templateProp) === 'string') ? templateProp.trim() : templateProp;\n try {\n if (typeof (templateProp) === 'object' && !isNOU(templateProp.tagName)) {\n innerEle.appendChild(templateProp);\n }\n else if (typeof (templateProp) === 'string' && regEx.test(val)) {\n innerEle.innerHTML = val;\n }\n else if (document.querySelectorAll(val).length) {\n var ele = document.querySelector(val);\n var tempStr = ele.outerHTML.trim();\n innerEle.appendChild(ele);\n ele.style.display = '';\n if (!isNOU(tempStr)) {\n this.tempId.push(val);\n }\n }\n else {\n templateFn = templateCompiler(val);\n }\n }\n catch (e) {\n templateFn = templateCompiler(val);\n }\n var tempArray = void 0;\n if (!isNOU(templateFn)) {\n var toolbarTemplateID = this.element.id + index + '_template';\n tempArray = templateFn({}, this, 'template', toolbarTemplateID, this.isStringTemplate, undefined, undefined, this.root);\n }\n if (!isNOU(tempArray) && tempArray.length > 0) {\n [].slice.call(tempArray).forEach(function (ele) {\n if (!isNOU(ele.tagName)) {\n ele.style.display = '';\n }\n innerEle.appendChild(ele);\n });\n }\n }\n else if (itemType === 'Input') {\n var ele = this.createElement('input');\n if (item.id) {\n ele.id = item.id;\n }\n else {\n ele.id = getUniqueID('tbr-ipt');\n }\n innerEle.appendChild(ele);\n eleObj.appendTo(ele);\n }\n this.add(innerEle, CLS_TEMPLATE);\n var firstChild = innerEle.firstElementChild;\n if (!isNOU(firstChild)) {\n firstChild.setAttribute('tabindex', isNOU(firstChild.getAttribute(\"tabIndex\")) ? '-1' : this.getDataTabindex(firstChild));\n firstChild.setAttribute('data-tabindex', isNOU(firstChild.getAttribute(\"tabIndex\")) ? '-1' : this.getDataTabindex(firstChild));\n }\n this.tbarEle.push(innerEle);\n };\n Toolbar.prototype.buttonRendering = function (item, innerEle) {\n var dom = this.createElement('button', { className: CLS_TBARBTN });\n dom.setAttribute('type', 'button');\n var textStr = item.text;\n var iconCss;\n var iconPos;\n if (item.id) {\n dom.id = item.id;\n }\n else {\n dom.id = getUniqueID('e-tbr-btn');\n }\n var btnTxt = this.createElement('span', { className: 'e-tbar-btn-text' });\n if (textStr) {\n btnTxt.innerHTML = this.enableHtmlSanitizer ? SanitizeHtmlHelper.sanitize(textStr) : textStr;\n dom.appendChild(btnTxt);\n dom.classList.add('e-tbtn-txt');\n }\n else {\n this.add(innerEle, 'e-tbtn-align');\n }\n if (item.prefixIcon || item.suffixIcon) {\n if ((item.prefixIcon && item.suffixIcon) || item.prefixIcon) {\n iconCss = item.prefixIcon + ' e-icons';\n iconPos = 'Left';\n }\n else {\n iconCss = item.suffixIcon + ' e-icons';\n iconPos = 'Right';\n }\n }\n var btnObj = new Button({ iconCss: iconCss, iconPosition: iconPos });\n btnObj.createElement = this.createElement;\n btnObj.appendTo(dom);\n if (item.width) {\n setStyle(dom, { 'width': formatUnit(item.width) });\n }\n return dom;\n };\n Toolbar.prototype.renderSubComponent = function (item, index) {\n var dom;\n var innerEle = this.createElement('div', { className: CLS_ITEM });\n var tempDom = this.createElement('div', {\n innerHTML: this.enableHtmlSanitizer && !isNOU(item.tooltipText) ?\n SanitizeHtmlHelper.sanitize(item.tooltipText) : item.tooltipText\n });\n if (!this.tbarEle) {\n this.tbarEle = [];\n }\n if (item.htmlAttributes) {\n this.setAttr(item.htmlAttributes, innerEle);\n }\n if (item.tooltipText) {\n innerEle.setAttribute('title', tempDom.textContent);\n }\n if (item.cssClass) {\n innerEle.className = innerEle.className + ' ' + item.cssClass;\n }\n if (item.template) {\n this.templateRender(item.template, innerEle, item, index);\n }\n else {\n switch (item.type) {\n case 'Button':\n dom = this.buttonRendering(item, innerEle);\n dom.setAttribute('tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('data-tabindex', isNOU(item.tabIndex) ? '-1' : item.tabIndex.toString());\n dom.setAttribute('aria-label', (item.text || item.tooltipText));\n dom.setAttribute('aria-disabled', 'false');\n innerEle.appendChild(dom);\n innerEle.addEventListener('click', this.itemClick.bind(this));\n break;\n case 'Separator':\n this.add(innerEle, CLS_SEPARATOR);\n break;\n }\n }\n if (item.showTextOn) {\n var sTxt = item.showTextOn;\n if (sTxt === 'Toolbar') {\n this.add(innerEle, CLS_POPUPTEXT);\n this.add(innerEle, 'e-tbtn-align');\n }\n else if (sTxt === 'Overflow') {\n this.add(innerEle, CLS_TBARTEXT);\n }\n }\n if (item.overflow) {\n var overflow = item.overflow;\n if (overflow === 'Show') {\n this.add(innerEle, CLS_TBAROVERFLOW);\n }\n else if (overflow === 'Hide') {\n if (!innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPOVERFLOW);\n }\n }\n }\n if (item.overflow !== 'Show' && item.showAlwaysInPopup && !innerEle.classList.contains(CLS_SEPARATOR)) {\n this.add(innerEle, CLS_POPPRI);\n this.popupPriCount++;\n }\n if (item.disabled) {\n this.add(innerEle, CLS_DISABLE);\n }\n if (item.visible === false) {\n this.add(innerEle, CLS_HIDDEN);\n }\n return innerEle;\n };\n Toolbar.prototype.getDataTabindex = function (ele) {\n return isNOU(ele.getAttribute('data-tabindex')) ? '-1' : ele.getAttribute('data-tabindex');\n };\n Toolbar.prototype.itemClick = function (e) {\n this.activeEleSwitch(e.currentTarget);\n };\n Toolbar.prototype.activeEleSwitch = function (ele) {\n this.activeEleRemove(ele.firstElementChild);\n this.activeEle.focus();\n };\n Toolbar.prototype.activeEleRemove = function (curEle) {\n if (!isNOU(this.activeEle)) {\n this.activeEle.setAttribute('tabindex', this.getDataTabindex(this.activeEle));\n }\n this.activeEle = curEle;\n if (this.getDataTabindex(this.activeEle) === '-1') {\n if (isNOU(this.trgtEle) && !curEle.parentElement.classList.contains(CLS_TEMPLATE)) {\n this.updateTabIndex('-1');\n curEle.removeAttribute('tabindex');\n }\n else {\n var tabIndex = parseInt(this.getDataTabindex(this.activeEle)) + 1;\n this.activeEle.setAttribute('tabindex', tabIndex.toString());\n }\n }\n };\n Toolbar.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Returns the current module name.\n *\n * @returns {string} - Returns the module name as string.\n * @private\n */\n Toolbar.prototype.getModuleName = function () {\n return 'toolbar';\n };\n Toolbar.prototype.itemsRerender = function (newProp) {\n this.items = this.tbarItemsCol;\n if (this.isReact || this.isAngular) {\n this.clearTemplate();\n }\n this.destroyMode();\n this.destroyItems();\n this.items = newProp;\n this.tbarItemsCol = this.items;\n this.renderItems();\n this.renderOverflowMode();\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n Toolbar.prototype.resize = function () {\n var ele = this.element;\n this.tbResize = true;\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n if (this.popObj && this.overflowMode === 'Popup') {\n this.popObj.hide();\n }\n var checkOverflow = this.checkOverflow(ele, ele.getElementsByClassName(CLS_ITEMS)[0]);\n if (!checkOverflow) {\n this.destroyScroll();\n var multirowele = ele.querySelector('.' + CLS_ITEMS);\n if (!isNOU(multirowele)) {\n this.remove(multirowele, CLS_MULTIROWPOS);\n if (this.tbarAlign) {\n this.add(multirowele, CLS_TBARPOS);\n }\n }\n }\n if (checkOverflow && this.scrollModule && (this.offsetWid === ele.offsetWidth)) {\n return;\n }\n if (this.offsetWid > ele.offsetWidth || checkOverflow) {\n this.renderOverflowMode();\n }\n if (this.popObj) {\n if (this.overflowMode === 'Extended') {\n var eleStyles = window.getComputedStyle(this.element);\n this.popObj.width = parseFloat(eleStyles.width) + ((parseFloat(eleStyles.borderRightWidth)) * 2);\n }\n if (this.tbarAlign) {\n this.removePositioning();\n }\n this.popupRefresh(this.popObj.element, false);\n if (this.tbarAlign) {\n this.refreshPositioning();\n }\n }\n if (this.element.querySelector('.' + CLS_HSCROLLBAR)) {\n this.scrollStep = this.element.querySelector('.' + CLS_HSCROLLBAR).offsetWidth;\n }\n this.offsetWid = ele.offsetWidth;\n this.tbResize = false;\n this.separator();\n };\n Toolbar.prototype.orientationChange = function () {\n var _this = this;\n setTimeout(function () {\n _this.resize();\n }, 500);\n };\n Toolbar.prototype.extendedOpen = function () {\n var sib = this.element.querySelector('.' + CLS_EXTENDABLECLASS);\n if (this.overflowMode === 'Extended' && sib) {\n this.isExtendedOpen = sib.classList.contains(CLS_POPUPOPEN);\n }\n };\n Toolbar.prototype.updateHideEleTabIndex = function (ele, isHidden, isElement, eleIndex, innerItems) {\n if (isElement) {\n eleIndex = innerItems.indexOf(ele);\n }\n var nextEle = innerItems[++eleIndex];\n while (nextEle) {\n var skipEle = this.eleContains(nextEle);\n if (!skipEle) {\n var dataTabIndex = nextEle.firstElementChild.getAttribute('data-tabindex');\n if (isHidden && dataTabIndex === '-1') {\n nextEle.firstElementChild.setAttribute('tabindex', '0');\n }\n else if (dataTabIndex !== nextEle.firstElementChild.getAttribute('tabindex')) {\n nextEle.firstElementChild.setAttribute('tabindex', dataTabIndex);\n }\n break;\n }\n nextEle = innerItems[++eleIndex];\n }\n };\n Toolbar.prototype.clearToolbarTemplate = function (templateEle) {\n if (this.registeredTemplate && this.registeredTemplate[\"\" + 'template']) {\n var registeredTemplates = this.registeredTemplate;\n for (var index = 0; index < registeredTemplates[\"\" + 'template'].length; index++) {\n var registeredItem = registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)].rootNodes[0];\n var closestItem = closest(registeredItem, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], [registeredTemplates[\"\" + 'template'][parseInt(index.toString(), 10)]]);\n break;\n }\n }\n }\n else if (this.portals && this.portals.length > 0) {\n var portals = this.portals;\n for (var index = 0; index < portals.length; index++) {\n var portalItem = portals[parseInt(index.toString(), 10)];\n var closestItem = closest(portalItem.containerInfo, '.' + CLS_ITEM);\n if (!isNOU(closestItem) && closestItem === templateEle) {\n this.clearTemplate(['template'], index);\n break;\n }\n }\n }\n };\n /**\n * Gets called when the model property changes.The data that describes the old and new values of the property that changed.\n *\n * @param {ToolbarModel} newProp - It contains new value of the data.\n * @param {ToolbarModel} oldProp - It contains old value of the data.\n * @returns {void}\n * @private\n */\n Toolbar.prototype.onPropertyChanged = function (newProp, oldProp) {\n var tEle = this.element;\n var wid = tEle.offsetWidth;\n this.extendedOpen();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'items':\n if (!(newProp.items instanceof Array && oldProp.items instanceof Array)) {\n var changedProb = Object.keys(newProp.items);\n for (var i = 0; i < changedProb.length; i++) {\n var index = parseInt(Object.keys(newProp.items)[parseInt(i.toString(), 10)], 10);\n var property = Object.keys(newProp.items[parseInt(index.toString(), 10)])[0];\n var newProperty = Object(newProp.items[parseInt(index.toString(), 10)])[\"\" + property];\n if (this.tbarAlign || property === 'align') {\n this.refresh();\n this.trigger('created');\n break;\n }\n var popupPriCheck = property === 'showAlwaysInPopup' && !newProperty;\n var booleanCheck = property === 'overflow' && this.popupPriCount !== 0;\n if ((popupPriCheck) || (this.items[parseInt(index.toString(), 10)].showAlwaysInPopup) && booleanCheck) {\n --this.popupPriCount;\n }\n if (isNOU(this.scrollModule)) {\n this.destroyMode();\n }\n var itemCol = [].slice.call(selectAll('.' + CLS_ITEMS + ' .' + CLS_ITEM, tEle));\n if (this.isReact && this.items[parseInt(index.toString(), 10)].template) {\n this.clearToolbarTemplate(itemCol[parseInt(index.toString(), 10)]);\n }\n detach(itemCol[parseInt(index.toString(), 10)]);\n this.tbarEle.splice(index, 1);\n this.addItems([this.items[parseInt(index.toString(), 10)]], index);\n this.items.splice(index, 1);\n if (this.items[parseInt(index.toString(), 10)].template) {\n this.tbarEle.splice(this.items.length, 1);\n }\n }\n }\n else {\n this.itemsRerender(newProp.items);\n }\n break;\n case 'width':\n setStyle(tEle, { 'width': formatUnit(newProp.width) });\n this.refreshOverflow();\n break;\n case 'height':\n setStyle(this.element, { 'height': formatUnit(newProp.height) });\n break;\n case 'overflowMode':\n this.destroyMode();\n this.renderOverflowMode();\n if (this.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n this.refreshOverflow();\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n this.add(tEle, CLS_RTL);\n }\n else {\n this.remove(tEle, CLS_RTL);\n }\n if (!isNOU(this.scrollModule)) {\n if (newProp.enableRtl) {\n this.add(this.scrollModule.element, CLS_RTL);\n }\n else {\n this.remove(this.scrollModule.element, CLS_RTL);\n }\n }\n if (!isNOU(this.popObj)) {\n if (newProp.enableRtl) {\n this.add(this.popObj.element, CLS_RTL);\n }\n else {\n this.remove(this.popObj.element, CLS_RTL);\n }\n }\n if (this.tbarAlign) {\n this.itemPositioning();\n }\n break;\n case 'scrollStep':\n if (this.scrollModule) {\n this.scrollModule.scrollStep = this.scrollStep;\n }\n break;\n case 'enableCollision':\n if (this.popObj) {\n this.popObj.collision = { Y: this.enableCollision ? 'flip' : 'none' };\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'allowKeyboard':\n this.unwireKeyboardEvent();\n if (newProp.allowKeyboard) {\n this.wireKeyboardEvent();\n }\n break;\n }\n }\n };\n /**\n * Shows or hides the Toolbar item that is in the specified index.\n *\n * @param {number | HTMLElement} index - Index value of target item or DOM element of items to be hidden or shown.\n * @param {boolean} value - Based on this Boolean value, item will be hide (true) or show (false). By default, value is false.\n * @returns {void}.\n */\n Toolbar.prototype.hideItem = function (index, value) {\n var isElement = (typeof (index) === 'object') ? true : false;\n var eleIndex = index;\n var ele;\n if (!isElement && isNOU(eleIndex)) {\n return;\n }\n var innerItems = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n if (isElement) {\n ele = index;\n }\n else if (this.tbarEle[parseInt(eleIndex.toString(), 10)]) {\n var innerItems_1 = [].slice.call(selectAll('.' + CLS_ITEM, this.element));\n ele = innerItems_1[parseInt(eleIndex.toString(), 10)];\n }\n if (ele) {\n if (value) {\n ele.classList.add(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n if (isNOU(ele.firstElementChild.getAttribute('tabindex')) ||\n ele.firstElementChild.getAttribute('tabindex') !== '-1') {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n }\n else {\n ele.classList.remove(CLS_HIDDEN);\n if (!ele.classList.contains(CLS_SEPARATOR)) {\n this.updateHideEleTabIndex(ele, value, isElement, eleIndex, innerItems);\n }\n }\n this.refreshOverflow();\n }\n };\n __decorate([\n Collection([], Item)\n ], Toolbar.prototype, \"items\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Toolbar.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Toolbar.prototype, \"cssClass\", void 0);\n __decorate([\n Property('Scrollable')\n ], Toolbar.prototype, \"overflowMode\", void 0);\n __decorate([\n Property()\n ], Toolbar.prototype, \"scrollStep\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableCollision\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(true)\n ], Toolbar.prototype, \"allowKeyboard\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"clicked\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Toolbar.prototype, \"beforeCreate\", void 0);\n Toolbar = __decorate([\n NotifyPropertyChanges\n ], Toolbar);\n return Toolbar;\n}(Component));\nexport { Toolbar };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-unused-expressions */\nimport { Component, EventHandler, Internationalization } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, L10n } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { cldrData, getDefaultDateObject, rippleEffect } from '@syncfusion/ej2-base';\nimport { removeClass, detach, closest, addClass, attributes } from '@syncfusion/ej2-base';\nimport { getValue, getUniqueID, extend, Browser } from '@syncfusion/ej2-base';\nimport { Property, Event, isNullOrUndefined, throwError } from '@syncfusion/ej2-base';\n//class constant defination.\nvar OTHERMONTH = 'e-other-month';\nvar OTHERDECADE = 'e-other-year';\nvar ROOT = 'e-calendar';\nvar DEVICE = 'e-device';\nvar HEADER = 'e-header';\nvar RTL = 'e-rtl';\nvar CONTENT = 'e-content';\nvar YEAR = 'e-year';\nvar MONTH = 'e-month';\nvar DECADE = 'e-decade';\nvar ICON = 'e-icons';\nvar PREVICON = 'e-prev';\nvar NEXTICON = 'e-next';\nvar PREVSPAN = 'e-date-icon-prev';\nvar NEXTSPAN = 'e-date-icon-next ';\nvar ICONCONTAINER = 'e-icon-container';\nvar DISABLED = 'e-disabled';\nvar OVERLAY = 'e-overlay';\nvar WEEKEND = 'e-weekend';\nvar WEEKNUMBER = 'e-week-number';\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar OTHERMONTHROW = 'e-month-hide';\nvar TODAY = 'e-today';\nvar TITLE = 'e-title';\nvar LINK = 'e-day';\nvar CELL = 'e-cell';\nvar WEEKHEADER = 'e-week-header';\nvar ZOOMIN = 'e-zoomin';\nvar FOOTER = 'e-footer-container';\nvar BTN = 'e-btn';\nvar FLAT = 'e-flat';\nvar CSS = 'e-css';\nvar PRIMARY = 'e-primary';\nvar DAYHEADERLONG = 'e-calendar-day-header-lg';\nvar dayMilliSeconds = 86400000;\nvar minutesMilliSeconds = 60000;\n/**\n *\n * @private\n */\nvar CalendarBase = /** @class */ (function (_super) {\n __extends(CalendarBase, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarBaseModel} options - Specifies the CalendarBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function CalendarBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.effect = '';\n _this.isPopupClicked = false;\n _this.isDateSelected = true;\n _this.isTodayClicked = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.previousDates = false;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.render = function () {\n this.rangeValidation(this.min, this.max);\n this.calendarEleCopy = this.element.cloneNode(true);\n if (this.calendarMode === 'Islamic') {\n if (+(this.min.setSeconds(0)) === +new Date(1900, 0, 1, 0, 0, 0)) {\n this.min = new Date(1944, 2, 18);\n }\n if (+this.max === +new Date(2099, 11, 31)) {\n this.max = new Date(2069, 10, 16);\n }\n }\n this.globalize = new Internationalization(this.locale);\n if (isNullOrUndefined(this.firstDayOfWeek) || this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: this.globalize.getFirstDayOfWeek() }, true);\n }\n this.todayDisabled = false;\n this.todayDate = new Date(new Date().setHours(0, 0, 0, 0));\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add(ROOT);\n if (this.enableRtl) {\n this.element.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.element.classList.add(DEVICE);\n }\n attributes(this.element, {\n 'data-role': 'calendar'\n });\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.calendarElement = this.createElement('div');\n this.calendarElement.classList.add(ROOT);\n if (this.enableRtl) {\n this.calendarElement.classList.add(RTL);\n }\n if (Browser.isDevice) {\n this.calendarElement.classList.add(DEVICE);\n }\n attributes(this.calendarElement, {\n 'data-role': 'calendar'\n });\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.createHeader();\n this.createContent();\n this.wireEvents();\n };\n CalendarBase.prototype.rangeValidation = function (min, max) {\n if (isNullOrUndefined(min)) {\n this.setProperties({ min: new Date(1900, 0, 1) }, true);\n }\n if (isNullOrUndefined(max)) {\n this.setProperties({ max: new Date(2099, 11, 31) }, true);\n }\n };\n CalendarBase.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n altUpArrow: 'alt+uparrow',\n spacebar: 'space',\n altRightArrow: 'alt+rightarrow',\n altLeftArrow: 'alt+leftarrow'\n };\n return this.defaultKeyConfigs;\n };\n CalendarBase.prototype.validateDate = function (value) {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(this.max))) }, true);\n this.currentDate = this.currentDate ? this.currentDate : new Date(new Date().setHours(0, 0, 0, 0));\n if (!isNullOrUndefined(value) && this.min <= this.max && value >= this.min && value <= this.max) {\n this.currentDate = new Date(this.checkValue(value));\n }\n };\n CalendarBase.prototype.setOverlayIndex = function (popupWrapper, popupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(popupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(popupElement.style.zIndex, 10) ? parseInt(popupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n CalendarBase.prototype.minMaxUpdate = function (value) {\n if (!(+this.min <= +this.max)) {\n this.setProperties({ min: this.min }, true);\n addClass([this.element], OVERLAY);\n }\n else {\n removeClass([this.element], OVERLAY);\n }\n this.min = isNullOrUndefined(this.min) || !(+this.min) ? this.min = new Date(1900, 0, 1) : this.min;\n this.max = isNullOrUndefined(this.max) || !(+this.max) ? this.max = new Date(2099, 11, 31) : this.max;\n if (+this.min <= +this.max && value && +value <= +this.max && +value >= +this.min) {\n this.currentDate = new Date(this.checkValue(value));\n }\n else {\n if (+this.min <= +this.max && !value && +this.currentDate > +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n else {\n if (+this.currentDate < +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n }\n }\n };\n CalendarBase.prototype.createHeader = function () {\n var ariaPrevAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'previous month'\n };\n var ariaNextAttrs = {\n 'aria-disabled': 'false',\n 'aria-label': 'next month'\n };\n var ariaTitleAttrs = {\n 'aria-atomic': 'true', 'aria-live': 'assertive', 'aria-label': 'title'\n };\n this.headerElement = this.createElement('div', { className: HEADER });\n var iconContainer = this.createElement('div', { className: ICONCONTAINER });\n this.previousIcon = this.createElement('button', { className: '' + PREVICON, attrs: { type: 'button' } });\n rippleEffect(this.previousIcon, {\n duration: 400,\n selector: '.e-prev',\n isCenterRipple: true\n });\n attributes(this.previousIcon, ariaPrevAttrs);\n this.nextIcon = this.createElement('button', { className: '' + NEXTICON, attrs: { type: 'button' } });\n rippleEffect(this.nextIcon, {\n selector: '.e-next',\n duration: 400,\n isCenterRipple: true\n });\n if (this.getModuleName() === 'daterangepicker') {\n attributes(this.previousIcon, { tabIndex: '-1' });\n attributes(this.nextIcon, { tabIndex: '-1' });\n }\n attributes(this.nextIcon, ariaNextAttrs);\n this.headerTitleElement = this.createElement('div', { className: '' + LINK + ' ' + TITLE });\n attributes(this.headerTitleElement, ariaTitleAttrs);\n this.headerElement.appendChild(this.headerTitleElement);\n this.previousIcon.appendChild(this.createElement('span', { className: '' + PREVSPAN + ' ' + ICON }));\n this.nextIcon.appendChild(this.createElement('span', { className: '' + NEXTSPAN + ' ' + ICON }));\n iconContainer.appendChild(this.previousIcon);\n iconContainer.appendChild(this.nextIcon);\n this.headerElement.appendChild(iconContainer);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.headerElement);\n }\n else {\n this.calendarElement.appendChild(this.headerElement);\n }\n this.adjustLongHeaderSize();\n };\n CalendarBase.prototype.createContent = function () {\n this.contentElement = this.createElement('div', { className: CONTENT });\n this.table = this.createElement('table', { attrs: { tabIndex: '0', 'role': 'grid', 'aria-activedescendant': '', 'aria-labelledby': this.element.id } });\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.contentElement);\n }\n else {\n this.calendarElement.appendChild(this.contentElement);\n }\n this.contentElement.appendChild(this.table);\n this.createContentHeader();\n this.createContentBody();\n if (this.showTodayButton) {\n this.createContentFooter();\n }\n };\n CalendarBase.prototype.getCultureValues = function () {\n var culShortNames = [];\n var cldrObj;\n var dayFormat = 'days.stand-alone.' + this.dayHeaderFormat.toLowerCase();\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrObj = (getValue(dayFormat, getDefaultDateObject()));\n }\n else {\n cldrObj = (this.getCultureObjects(cldrData, '' + this.locale));\n }\n if (!isNullOrUndefined(cldrObj)) {\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n culShortNames.push(getValue(obj, cldrObj));\n }\n }\n return culShortNames;\n };\n CalendarBase.prototype.toCapitalize = function (text) {\n return !isNullOrUndefined(text) && text.length ? text[0].toUpperCase() + text.slice(1) : text;\n };\n CalendarBase.prototype.createContentHeader = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.element.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content .e-week-header')[0]);\n }\n }\n var daysCount = 6;\n var html = '';\n if (this.firstDayOfWeek > 6 || this.firstDayOfWeek < 0) {\n this.setProperties({ firstDayOfWeek: 0 }, true);\n }\n this.tableHeadElement = this.createElement('thead', { className: WEEKHEADER });\n if (this.weekNumber) {\n html += '';\n if (this.getModuleName() === 'calendar') {\n addClass([this.element], '' + WEEKNUMBER);\n }\n else {\n addClass([this.calendarElement], '' + WEEKNUMBER);\n }\n }\n // eslint-disable-next-line max-len\n var shortNames = this.getCultureValues().length > 0 && this.getCultureValues() ? this.shiftArray(((this.getCultureValues().length > 0 && this.getCultureValues())), this.firstDayOfWeek) : null;\n if (!isNullOrUndefined(shortNames)) {\n for (var days = 0; days <= daysCount; days++) {\n html += '' + this.toCapitalize(shortNames[days]) + '';\n }\n }\n html = '' + html + '';\n this.tableHeadElement.innerHTML = html;\n this.table.appendChild(this.tableHeadElement);\n };\n CalendarBase.prototype.createContentBody = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content tbody')[0])) {\n detach(this.element.querySelectorAll('.e-content tbody')[0]);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content tbody')[0])) {\n detach(this.calendarElement.querySelectorAll('.e-content tbody')[0]);\n }\n }\n switch (this.start) {\n case 'Year':\n this.renderYears();\n break;\n case 'Decade':\n this.renderDecades();\n break;\n default:\n this.renderMonths();\n }\n };\n CalendarBase.prototype.updateFooter = function () {\n this.todayElement.textContent = this.l10.getConstant('today');\n this.todayElement.setAttribute('aria-label', this.l10.getConstant('today'));\n };\n CalendarBase.prototype.createContentFooter = function () {\n if (this.showTodayButton) {\n var minimum = new Date(+this.min);\n var maximum = new Date(+this.max);\n var l10nLocale = { today: 'Today' };\n this.globalize = new Internationalization(this.locale);\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n this.todayElement = this.createElement('button', { attrs: { role: 'button' } });\n rippleEffect(this.todayElement);\n this.updateFooter();\n addClass([this.todayElement], [BTN, TODAY, FLAT, PRIMARY, CSS]);\n if ((!(+new Date(minimum.setHours(0, 0, 0, 0)) <= +this.todayDate &&\n +this.todayDate <= +new Date(maximum.setHours(0, 0, 0, 0)))) || (this.todayDisabled)) {\n addClass([this.todayElement], DISABLED);\n }\n this.footer = this.createElement('div', { className: FOOTER });\n this.footer.appendChild(this.todayElement);\n if (this.getModuleName() === 'calendar') {\n this.element.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.calendarElement.appendChild(this.footer);\n }\n if (!this.todayElement.classList.contains(DISABLED)) {\n EventHandler.add(this.todayElement, 'click', this.todayButtonClick, this);\n }\n }\n };\n CalendarBase.prototype.wireEvents = function (id, ref, keyConfig, moduleName) {\n EventHandler.add(this.headerTitleElement, 'click', this.navigateTitle, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n if (this.getModuleName() === 'calendar') {\n this.keyboardModule = new KeyboardEvents(this.element, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.calendarElement, {\n eventName: 'keydown',\n keyAction: this.keyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n };\n CalendarBase.prototype.dateWireEvents = function (id, ref, keyConfig, moduleName) {\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, keyConfig);\n this.serverModuleName = moduleName;\n };\n CalendarBase.prototype.todayButtonClick = function (e, value, isCustomDate) {\n if (this.showTodayButton) {\n if (this.currentView() === this.depth) {\n this.effect = '';\n }\n else {\n this.effect = 'e-zoomin';\n }\n if (this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.navigateTo(this.depth, new Date(this.checkValue(value)), isCustomDate);\n }\n else {\n this.navigateTo('Month', new Date(this.checkValue(value)), isCustomDate);\n }\n }\n };\n CalendarBase.prototype.resetCalendar = function () {\n this.calendarElement && detach(this.calendarElement);\n this.tableBodyElement && detach(this.tableBodyElement);\n this.table && detach(this.table);\n this.tableHeadElement && detach(this.tableHeadElement);\n this.nextIcon && detach(this.nextIcon);\n this.previousIcon && detach(this.previousIcon);\n this.footer && detach(this.footer);\n this.todayElement = null;\n this.renderDayCellArgs = null;\n this.calendarElement = this.tableBodyElement = this.footer = this.tableHeadElement =\n this.nextIcon = this.previousIcon = this.table = null;\n };\n CalendarBase.prototype.keyActionHandle = function (e, value, multiSelection) {\n var focusedDate = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedDate;\n if (multiSelection) {\n if (!isNullOrUndefined(focusedDate) && +value === parseInt(focusedDate.getAttribute('id').split('_')[0], 10)) {\n selectedDate = focusedDate;\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n }\n else {\n selectedDate = this.tableBodyElement.querySelector('tr td.e-selected');\n }\n var view = this.getViewNumber(this.currentView());\n var depthValue = this.getViewNumber(this.depth);\n var levelRestrict = (view === depthValue && this.getViewNumber(this.start) >= depthValue);\n this.effect = '';\n switch (e.action) {\n case 'moveLeft':\n this.keyboardNavigate(-1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveRight':\n this.keyboardNavigate(1, view, e, this.max, this.min);\n e.preventDefault();\n break;\n case 'moveUp':\n if (view === 0) {\n this.keyboardNavigate(-7, view, e, this.max, this.min); // move the current date to the previous seven days.\n }\n else {\n this.keyboardNavigate(-4, view, e, this.max, this.min); // move the current year to the previous four days.\n }\n e.preventDefault();\n break;\n case 'moveDown':\n if (view === 0) {\n this.keyboardNavigate(7, view, e, this.max, this.min);\n }\n else {\n this.keyboardNavigate(4, view, e, this.max, this.min);\n }\n e.preventDefault();\n break;\n case 'select':\n if (e.target === this.todayElement) {\n this.todayButtonClick(e, value);\n }\n else {\n var element = !isNullOrUndefined(focusedDate) ? focusedDate : selectedDate;\n if (!isNullOrUndefined(element) && !element.classList.contains(DISABLED)) {\n if (levelRestrict) {\n // eslint-disable-next-line radix\n var d = new Date(parseInt('' + (element).id, 0));\n this.selectDate(e, d, (element));\n }\n else {\n this.contentClick(null, --view, (element), value);\n }\n }\n }\n break;\n case 'controlUp':\n this.title();\n e.preventDefault();\n break;\n case 'controlDown':\n if (!isNullOrUndefined(focusedDate) && !levelRestrict || !isNullOrUndefined(selectedDate) && !levelRestrict) {\n this.contentClick(null, --view, (focusedDate || selectedDate), value);\n }\n e.preventDefault();\n break;\n case 'home':\n this.currentDate = this.firstDay(this.currentDate);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'end':\n this.currentDate = this.lastDay(this.currentDate, view);\n detach(this.tableBodyElement);\n if (view === 0) {\n this.renderMonths(e);\n }\n else if (view === 1) {\n this.renderYears(e);\n }\n else {\n this.renderDecades(e);\n }\n e.preventDefault();\n break;\n case 'pageUp':\n this.addMonths(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'pageDown':\n this.addMonths(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageUp':\n this.addYears(this.currentDate, -1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'shiftPageDown':\n this.addYears(this.currentDate, 1);\n this.navigateTo('Month', this.currentDate);\n e.preventDefault();\n break;\n case 'controlHome':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 0, 1));\n e.preventDefault();\n break;\n case 'controlEnd':\n this.navigateTo('Month', new Date(this.currentDate.getFullYear(), 11, 31));\n e.preventDefault();\n break;\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.keyboardNavigate = function (number, currentView, e, max, min) {\n var date = new Date(this.checkValue(this.currentDate));\n switch (currentView) {\n case 2:\n this.addYears(this.currentDate, number);\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n case 1:\n this.addMonths(this.currentDate, number);\n if (this.calendarMode === 'Gregorian') {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n else {\n if (this.isMonthYearRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n else {\n this.currentDate = date;\n }\n }\n break;\n case 0:\n this.addDay(this.currentDate, number, e, max, min);\n if (this.isMinMaxRange(this.currentDate)) {\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n else {\n this.currentDate = date;\n }\n break;\n }\n };\n /**\n * Initialize the event handler\n *\n * @param {Date} value - Specifies value of date.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.preRender = function (value) {\n var _this = this;\n this.navigatePreviousHandler = this.navigatePrevious.bind(this);\n this.navigateNextHandler = this.navigateNext.bind(this);\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.navigateHandler = function (e) {\n _this.triggerNavigate(e);\n };\n };\n CalendarBase.prototype.minMaxDate = function (localDate) {\n var currentDate = new Date(new Date(+localDate).setHours(0, 0, 0, 0));\n var minDate = new Date(new Date(+this.min).setHours(0, 0, 0, 0));\n var maxDate = new Date(new Date(+this.max).setHours(0, 0, 0, 0));\n if (+currentDate === +minDate || +currentDate === +maxDate) {\n if (+localDate < +this.min) {\n localDate = new Date(+this.min);\n }\n if (+localDate > +this.max) {\n localDate = new Date(+this.max);\n }\n }\n return localDate;\n };\n CalendarBase.prototype.renderMonths = function (e, value, isCustomDate) {\n var numCells = this.weekNumber ? 8 : 7;\n var tdEles;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(this.currentDate, value, null, null, isCustomDate, e);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n this.createContentHeader();\n if (this.calendarMode === 'Gregorian') {\n this.renderTemplate(tdEles, numCells, MONTH, e, value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(tdEles, numCells, MONTH, e, value);\n }\n };\n CalendarBase.prototype.renderDays = function (currentDate, value, multiSelection, values, isTodayDate, e) {\n var tdEles = [];\n var cellsCount = 42;\n var todayDate = isTodayDate ? new Date(+currentDate) : this.getDate(new Date(), this.timezone);\n var localDate = new Date(this.checkValue(currentDate));\n var minMaxDate;\n var currentMonth = localDate.getMonth();\n this.titleUpdate(currentDate, 'days');\n var d = localDate;\n localDate = new Date(d.getFullYear(), d.getMonth(), 0, d.getHours(), d.getMinutes(), d.getSeconds(), d.getMilliseconds());\n while (localDate.getDay() !== this.firstDayOfWeek) {\n this.setStartDate(localDate, -1 * dayMilliSeconds);\n }\n for (var day = 0; day < cellsCount; ++day) {\n var weekEle = this.createElement('td', { className: CELL });\n var weekAnchor = this.createElement('span');\n if (day % 7 === 0 && this.weekNumber) {\n // 6 days are added to get Last day of the week and 3 days are added to get middle day of the week.\n var numberOfDays = this.weekRule === 'FirstDay' ? 6 : (this.weekRule === 'FirstFourDayWeek' ? 3 : 0);\n var finalDate = new Date(localDate.getFullYear(), localDate.getMonth(), (localDate.getDate() + numberOfDays));\n weekAnchor.textContent = '' + this.getWeek(finalDate);\n weekEle.appendChild(weekAnchor);\n addClass([weekEle], '' + WEEKNUMBER);\n tdEles.push(weekEle);\n }\n minMaxDate = new Date(+localDate);\n localDate = this.minMaxDate(localDate);\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full' };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var tdEle = this.dayCell(localDate);\n var title = this.globalize.formatDate(localDate, { type: 'date', skeleton: 'full' });\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, { format: 'd', type: 'date', skeleton: 'yMd' });\n var disabled = (this.min > localDate) || (this.max < localDate);\n if (disabled) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n }\n else {\n dayLink.setAttribute('title', '' + title);\n }\n if (currentMonth !== localDate.getMonth()) {\n addClass([tdEle], OTHERMONTH);\n dayLink.setAttribute('aria-disabled', 'true');\n }\n if (localDate.getDay() === 0 || localDate.getDay() === 6) {\n addClass([tdEle], WEEKEND);\n }\n tdEle.appendChild(dayLink);\n this.renderDayCellArgs = {\n date: localDate,\n isDisabled: false,\n element: tdEle,\n isOutOfRange: disabled\n };\n var argument = this.renderDayCellArgs;\n this.renderDayCellEvent(argument);\n if (argument.isDisabled) {\n var selectDate = new Date(this.checkValue(value));\n var argsDate = new Date(this.checkValue(argument.date));\n if (multiSelection) {\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n var localDateString = +new Date(this.globalize.formatDate(argument.date, { type: 'date', skeleton: 'yMd' }));\n var tempDateString = +new Date(this.globalize.formatDate(values[index], { type: 'date', skeleton: 'yMd' }));\n if (localDateString === tempDateString) {\n values.splice(index, 1);\n index = -1;\n }\n }\n }\n }\n else if (selectDate && +selectDate === +argsDate) {\n this.setProperties({ value: null }, true);\n }\n }\n if (this.renderDayCellArgs.isDisabled && !tdEle.classList.contains(SELECTED)) {\n addClass([tdEle], DISABLED);\n addClass([tdEle], OVERLAY);\n dayLink.setAttribute('aria-disabled', 'true');\n if (+this.renderDayCellArgs.date === +this.todayDate) {\n this.todayDisabled = true;\n }\n }\n var otherMnthBool = tdEle.classList.contains(OTHERMONTH);\n var disabledCls = tdEle.classList.contains(DISABLED);\n if (!disabledCls) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n }\n // to set the value as null while setting the disabled date onProperty change.\n // if (args.isDisabled && +this.value === +args.date) {\n // this.setProperties({ value: null }, true);\n // }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var currentTarget = void 0;\n if (!isNullOrUndefined(e) && e.type === 'click') {\n currentTarget = e.currentTarget;\n }\n if (multiSelection && !isNullOrUndefined(values) && !disabledCls) {\n for (var tempValue = 0; tempValue < values.length; tempValue++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(localDate, formatOptions);\n var tempDateString = this.globalize.formatDate(values[tempValue], formatOptions);\n if ((localDateString === tempDateString && this.getDateVal(localDate, values[tempValue]))\n || (this.getDateVal(localDate, value))) {\n addClass([tdEle], SELECTED);\n }\n if (!isNullOrUndefined(currentTarget) && currentTarget.innerText === tdEle.innerText &&\n this.previousDates && tdEle.classList.contains(SELECTED) && currentTarget.classList.contains(SELECTED)) {\n removeClass([tdEle], SELECTED);\n this.previousDates = false;\n var copyValues = this.copyValues(values);\n for (var i = 0; i < copyValues.length; i++) {\n var type_1 = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions_1 = { format: null, type: 'date', skeleton: 'short', calendar: type_1 };\n var localDateString_1 = this.globalize.formatDate(date, formatOptions_1);\n var tempDateString_1 = this.globalize.formatDate(copyValues[i], formatOptions_1);\n if (localDateString_1 === tempDateString_1) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n values.splice(index, 1);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n if (values.length <= 0) {\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n }\n }\n else if (!disabledCls && this.getDateVal(localDate, value)) {\n addClass([tdEle], SELECTED);\n }\n this.updateFocus(otherMnthBool, disabledCls, localDate, tdEle, currentDate);\n if (!isNullOrUndefined(date) && date.getFullYear() === todayDate.getFullYear() && date.getMonth() === todayDate.getMonth()\n && date.getDate() === todayDate.getDate()) {\n addClass([tdEle], TODAY);\n }\n tdEles.push(this.renderDayCellArgs.element);\n localDate = new Date(+minMaxDate);\n this.addDay(localDate, 1, null, this.max, this.min);\n }\n return tdEles;\n };\n CalendarBase.prototype.updateFocus = function (otherMonth, disabled, localDate, tableElement, currentDate) {\n if (currentDate.getDate() === localDate.getDate() && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n else {\n // eslint-disable-next-line radix\n if (currentDate >= this.max && parseInt(tableElement.id, 0) === +this.max && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n // eslint-disable-next-line radix\n if (currentDate <= this.min && parseInt(tableElement.id, 0) === +this.min && !otherMonth && !disabled) {\n addClass([tableElement], FOCUSEDDATE);\n }\n }\n };\n CalendarBase.prototype.renderYears = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var tdEles = [];\n var valueUtil = isNullOrUndefined(value);\n var curDate = new Date(this.checkValue(this.currentDate));\n var mon = curDate.getMonth();\n var yr = curDate.getFullYear();\n var localDate = curDate;\n var curYrs = localDate.getFullYear();\n var minYr = new Date(this.checkValue(this.min)).getFullYear();\n var minMonth = new Date(this.checkValue(this.min)).getMonth();\n var maxYr = new Date(this.checkValue(this.max)).getFullYear();\n var maxMonth = new Date(this.checkValue(this.max)).getMonth();\n localDate.setMonth(0);\n this.titleUpdate(this.currentDate, 'months');\n localDate.setDate(1);\n for (var month = 0; month < 12; ++month) {\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n var localMonth = (value && (value).getMonth() === localDate.getMonth());\n var select = (value && (value).getFullYear() === yr && localMonth);\n var title = this.globalize.formatDate(localDate, { type: 'date', format: 'MMM y' });\n dayLink.textContent = this.toCapitalize(this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'MMM'\n }));\n if ((this.min && (curYrs < minYr || (month < minMonth && curYrs === minYr))) || (this.max && (curYrs > maxYr || (month > maxMonth && curYrs >= maxYr)))) {\n addClass([tdEle], DISABLED);\n }\n else if (!valueUtil && select) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getMonth() === mon && this.currentDate.getMonth() === mon) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n localDate.setDate(1);\n localDate.setMonth(localDate.getMonth() + 1);\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n dayLink.setAttribute('title', '' + title);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, YEAR, e, value);\n };\n CalendarBase.prototype.renderDecades = function (e, value) {\n this.removeTableHeadElement();\n var numCells = 4;\n var yearCell = 12;\n var tdEles = [];\n var localDate = new Date(this.checkValue(this.currentDate));\n localDate.setMonth(0);\n localDate.setDate(1);\n var localYr = localDate.getFullYear();\n var startYr = new Date(localDate.setFullYear((localYr - localYr % 10)));\n var endYr = new Date(localDate.setFullYear((localYr - localYr % 10 + (10 - 1))));\n var startFullYr = startYr.getFullYear();\n var endFullYr = endYr.getFullYear();\n var startHdrYr = this.globalize.formatDate(startYr, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n var endHdrYr = this.globalize.formatDate(endYr, { format: null, type: 'dateTime', skeleton: 'y' });\n this.headerTitleElement.textContent = startHdrYr + ' - ' + (endHdrYr);\n var start = new Date(localYr - (localYr % 10) - 1, 0, 1);\n var startYear = start.getFullYear();\n for (var rowIterator = 0; rowIterator < yearCell; ++rowIterator) {\n var year = startYear + rowIterator;\n localDate.setFullYear(year);\n var tdEle = this.dayCell(localDate);\n var dayLink = this.createElement('span');\n dayLink.textContent = this.globalize.formatDate(localDate, {\n format: null, type: 'dateTime', skeleton: 'y'\n });\n if ((year < startFullYr) || (year > endFullYr)) {\n addClass([tdEle], OTHERDECADE);\n dayLink.setAttribute('aria-disabled', 'true');\n if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n }\n else if (year < new Date(this.checkValue(this.min)).getFullYear() ||\n year > new Date(this.checkValue(this.max)).getFullYear()) {\n addClass([tdEle], DISABLED);\n }\n else if (!isNullOrUndefined(value) && localDate.getFullYear() === (value).getFullYear()) {\n addClass([tdEle], SELECTED);\n }\n else {\n if (localDate.getFullYear() === this.currentDate.getFullYear() && !tdEle.classList.contains(DISABLED)) {\n addClass([tdEle], FOCUSEDDATE);\n }\n }\n if (!tdEle.classList.contains(DISABLED)) {\n EventHandler.add(tdEle, 'click', this.clickHandler, this);\n dayLink.setAttribute('title', '' + dayLink.textContent);\n }\n tdEle.appendChild(dayLink);\n tdEles.push(tdEle);\n }\n this.renderTemplate(tdEles, numCells, 'e-decade', e, value);\n };\n CalendarBase.prototype.dayCell = function (localDate) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { skeleton: 'full', type: 'dateTime', calendar: type };\n var date = this.globalize.parseDate(this.globalize.formatDate(localDate, dateFormatOptions), dateFormatOptions);\n var value;\n if (!isNullOrUndefined(date)) {\n value = date.valueOf();\n }\n var attrs = {\n className: CELL, attrs: { 'id': '' + getUniqueID('' + value), 'aria-selected': 'false' }\n };\n return this.createElement('td', attrs);\n };\n CalendarBase.prototype.firstDay = function (date) {\n var collection = this.currentView() !== 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '');\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.lastDay = function (date, view) {\n var lastDate = new Date(date.getFullYear(), date.getMonth() + 1, 0);\n if (view !== 2) {\n var timeOffset = Math.abs(lastDate.getTimezoneOffset() - this.firstDay(date).getTimezoneOffset());\n if (timeOffset) {\n lastDate.setHours(this.firstDay(date).getHours() + (timeOffset / 60));\n }\n return this.findLastDay(lastDate);\n }\n else {\n return this.findLastDay(this.firstDay(lastDate));\n }\n };\n CalendarBase.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n CalendarBase.prototype.findLastDay = function (date) {\n var collection = this.currentView() === 'Decade' ? this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERDECADE + '') :\n this.tableBodyElement.querySelectorAll('td' + ':not(.' + OTHERMONTH + '');\n if (collection.length) {\n for (var i = collection.length - 1; i >= 0; i--) {\n if (!collection[i].classList.contains(DISABLED)) {\n // eslint-disable-next-line radix\n date = new Date(parseInt(collection[i].id, 0));\n break;\n }\n }\n }\n return date;\n };\n CalendarBase.prototype.removeTableHeadElement = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.element.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n else {\n if (!isNullOrUndefined(this.calendarElement.querySelectorAll('.e-content table thead')[0])) {\n detach(this.tableHeadElement);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.renderTemplate = function (elements, count, classNm, e, value) {\n var view = this.getViewNumber(this.currentView());\n var trEle;\n this.tableBodyElement = this.createElement('tbody');\n this.table.appendChild(this.tableBodyElement);\n removeClass([this.contentElement, this.headerElement], [MONTH, DECADE, YEAR]);\n addClass([this.contentElement, this.headerElement], [classNm]);\n var weekNumCell = 41;\n var numberCell = 35;\n var otherMonthCell = 6;\n var row = count;\n var rowIterator = 0;\n for (var dayCell = 0; dayCell < elements.length / count; ++dayCell) {\n trEle = this.createElement('tr');\n for (rowIterator = 0 + rowIterator; rowIterator < row; rowIterator++) {\n if (!elements[rowIterator].classList.contains('e-week-number') && !isNullOrUndefined(elements[rowIterator].children[0])) {\n addClass([elements[rowIterator].children[0]], [LINK]);\n rippleEffect(elements[rowIterator].children[0], {\n duration: 600,\n isCenterRipple: true\n });\n }\n trEle.appendChild(elements[rowIterator]);\n if (this.weekNumber && rowIterator === otherMonthCell + 1 && elements[otherMonthCell + 1].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (!this.weekNumber && rowIterator === otherMonthCell && elements[otherMonthCell].\n classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n if (this.weekNumber) {\n if (rowIterator === weekNumCell && elements[weekNumCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n else {\n if (rowIterator === numberCell && elements[numberCell].classList.contains(OTHERMONTH)) {\n addClass([trEle], OTHERMONTHROW);\n }\n }\n }\n row = row + count;\n rowIterator = rowIterator + 0;\n this.tableBodyElement.appendChild(trEle);\n }\n this.table.querySelector('tbody').className = this.effect;\n if (this.calendarMode === 'Gregorian') {\n this.iconHandler();\n }\n else {\n this.islamicModule.islamicIconHandler();\n }\n if (view !== this.getViewNumber(this.currentView()) || (view === 0 && view !== this.getViewNumber(this.currentView()))) {\n this.navigateHandler(e);\n }\n this.setAriaActiveDescendant();\n };\n CalendarBase.prototype.clickHandler = function (e, value) {\n this.clickEventEmitter(e);\n var eve = e.currentTarget;\n var view = this.getViewNumber(this.currentView());\n if (eve.classList.contains(OTHERMONTH)) {\n this.contentClick(e, 0, null, value);\n }\n else if (view === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.contentClick(e, 1, null, value);\n }\n else if (2 === view) {\n this.contentClick(e, 1, null, value);\n }\n else if (!eve.classList.contains(OTHERMONTH) && view === 0) {\n this.selectDate(e, this.getIdValue(e, null), null);\n }\n else {\n this.contentClick(e, 0, eve, value);\n }\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n // Content click event handler required for extended components\n CalendarBase.prototype.clickEventEmitter = function (e) {\n e.preventDefault();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.contentClick = function (e, view, element, value) {\n var currentView = this.getViewNumber(this.currentView());\n var d = this.getIdValue(e, element);\n switch (view) {\n case 0:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n detach(this.tableBodyElement);\n this.currentDate = d;\n this.effect = ZOOMIN;\n this.renderMonths(e);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setMonth(d.getMonth());\n if (d.getMonth() > 0 && this.currentDate.getMonth() !== d.getMonth()) {\n this.currentDate.setDate(0);\n }\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.currentDate = d;\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderMonths(e);\n }\n break;\n case 1:\n if (currentView === this.getViewNumber(this.depth) && this.getViewNumber(this.start) >= this.getViewNumber(this.depth)) {\n this.selectDate(e, d, null);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n this.currentDate.setFullYear(d.getFullYear());\n }\n else {\n this.islamicPreviousHeader = this.headerElement.textContent;\n var islamicDate = this.islamicModule.getIslamicDate(d);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, islamicDate.month, 1);\n }\n this.effect = ZOOMIN;\n detach(this.tableBodyElement);\n this.renderYears(e);\n }\n }\n };\n CalendarBase.prototype.switchView = function (view, e, multiSelection, isCustomDate) {\n switch (view) {\n case 0:\n detach(this.tableBodyElement);\n this.renderMonths(e, null, isCustomDate);\n break;\n case 1:\n detach(this.tableBodyElement);\n this.renderYears(e);\n break;\n case 2:\n detach(this.tableBodyElement);\n this.renderDecades(e);\n }\n };\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n CalendarBase.prototype.getModuleName = function () {\n return 'calendar';\n };\n /**\n *\n * @returns {void}\n\n */\n CalendarBase.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n return modules;\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n CalendarBase.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarBaseModel} oldProp - Returns the previous property value of the component.\n * @param {boolean} multiSelection - - Specifies whether multiple date selection is enabled or not.\n * @param {Date[]} values - Specifies the dates.\n * @returns {void}\n * @private\n */\n CalendarBase.prototype.onPropertyChanged = function (newProp, oldProp, multiSelection, values) {\n this.effect = '';\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'enableRtl':\n if (newProp.enableRtl) {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.add('e-rtl');\n }\n else {\n this.calendarElement.classList.add('e-rtl');\n }\n }\n else {\n if (this.getModuleName() === 'calendar') {\n this.element.classList.remove('e-rtl');\n }\n else {\n this.calendarElement.classList.remove('e-rtl');\n }\n }\n break;\n case 'dayHeaderFormat':\n this.getCultureValues();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n }\n this.adjustLongHeaderSize();\n break;\n case 'min':\n case 'max':\n this.rangeValidation(this.min, this.max);\n if (prop === 'min') {\n this.setProperties({ min: this.checkDateValue(new Date(this.checkValue(newProp.min))) }, true);\n }\n else {\n this.setProperties({ max: this.checkDateValue(new Date(this.checkValue(newProp.max))) }, true);\n }\n this.setProperties({ start: this.currentView() }, true);\n if (this.tableBodyElement) {\n detach(this.tableBodyElement);\n }\n this.minMaxUpdate();\n if (multiSelection) {\n this.validateValues(multiSelection, values);\n }\n if (this.getModuleName() !== 'datepicker') {\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentBody();\n }\n if ((this.todayDate < this.min || this.max < this.todayDate) && (this.footer) && (this.todayElement)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n else {\n if ((this.footer) && (this.todayElement) && this.todayElement.classList.contains('e-disabled')) {\n removeClass([this.todayElement], DISABLED);\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = null;\n this.createContentFooter();\n }\n }\n break;\n case 'start':\n case 'depth':\n case 'weekNumber':\n case 'firstDayOfWeek':\n case 'weekRule':\n this.checkView();\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n if (this.getModuleName() !== 'datepicker') {\n this.createContentHeader();\n this.createContentBody();\n }\n else if (this.calendarElement) {\n this.createContentHeader();\n this.createContentBody();\n }\n if (this.getModuleName() === 'calendar') {\n var l10nLocale = { today: 'Today' };\n this.l10 = new L10n(this.getModuleName(), l10nLocale, this.locale);\n }\n this.l10.setLocale(this.locale);\n if (this.showTodayButton) {\n this.updateFooter();\n }\n break;\n case 'showTodayButton':\n if (newProp.showTodayButton) {\n this.createContentFooter();\n }\n else {\n if (!isNullOrUndefined(this.todayElement) && !isNullOrUndefined(this.footer)) {\n detach(this.todayElement);\n detach(this.footer);\n this.todayElement = this.footer = undefined;\n }\n }\n this.setProperties({ showTodayButton: newProp.showTodayButton }, true);\n break;\n }\n }\n };\n /**\n * values property updated with considered disabled dates of the calendar.\n *\n * @param {boolean} multiSelection - Specifies whether multiple date selection is enabled.\n * @param {Date[]} values - Specifies the dates to validate.\n * @returns {void}\n */\n CalendarBase.prototype.validateValues = function (multiSelection, values) {\n if (multiSelection && !isNullOrUndefined(values) && values.length > 0) {\n var copyValues = this.copyValues(values);\n for (var skipIndex = 0; skipIndex < copyValues.length; skipIndex++) {\n var tempValue = copyValues[skipIndex];\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var tempValueString = void 0;\n if (this.calendarMode === 'Gregorian') {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'date', skeleton: 'yMd' });\n }\n else {\n tempValueString = this.globalize.formatDate(tempValue, { type: 'dateTime', skeleton: 'full', calendar: 'islamic' });\n }\n var minFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var minStringValue = this.globalize.formatDate(this.min, minFormatOption);\n var minString = minStringValue;\n var maxFormatOption = { type: 'date', skeleton: 'yMd', calendar: type };\n var maxStringValue = this.globalize.formatDate(this.max, maxFormatOption);\n var maxString = maxStringValue;\n if (+new Date(tempValueString) < +new Date(minString) ||\n +new Date(tempValueString) > +new Date(maxString)) {\n copyValues.splice(skipIndex, 1);\n skipIndex = -1;\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n };\n CalendarBase.prototype.setValueUpdate = function () {\n if (!isNullOrUndefined(this.tableBodyElement)) {\n detach(this.tableBodyElement);\n this.setProperties({ start: this.currentView() }, true);\n this.createContentBody();\n }\n };\n CalendarBase.prototype.copyValues = function (values) {\n var copyValues = [];\n if (!isNullOrUndefined(values) && values.length > 0) {\n for (var index = 0; index < values.length; index++) {\n copyValues.push(new Date(+values[index]));\n }\n }\n return copyValues;\n };\n CalendarBase.prototype.titleUpdate = function (date, view) {\n var globalize = new Internationalization(this.locale);\n var dayFormatOptions;\n var monthFormatOptions;\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n if (this.calendarMode === 'Gregorian') {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', skeleton: 'yMMMM', calendar: type });\n monthFormatOptions = globalize.formatDate(date, {\n format: null, type: 'dateTime', skeleton: 'y', calendar: type\n });\n }\n else {\n dayFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'MMMM y', calendar: type });\n monthFormatOptions = globalize.formatDate(date, { type: 'dateTime', format: 'y', calendar: type });\n }\n switch (view) {\n case 'days':\n this.headerTitleElement.textContent = this.toCapitalize(dayFormatOptions);\n break;\n case 'months':\n this.headerTitleElement.textContent = monthFormatOptions;\n }\n };\n CalendarBase.prototype.setActiveDescendant = function () {\n var id;\n var focusedEle = this.tableBodyElement.querySelector('tr td.e-focused-date');\n var selectedEle = this.tableBodyElement.querySelector('tr td.e-selected');\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var title;\n var view = this.currentView();\n if (view === 'Month') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'full', calendar: type });\n }\n else if (view === 'Year') {\n if (type !== 'islamic') {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'yMMMM', calendar: type });\n }\n else {\n title = this.globalize.formatDate(this.currentDate, { type: 'date', skeleton: 'GyMMM', calendar: type });\n }\n }\n else {\n title = this.globalize.formatDate(this.currentDate, {\n format: null, type: 'date', skeleton: 'y', calendar: type\n });\n }\n if (selectedEle || focusedEle) {\n if (!isNullOrUndefined(selectedEle)) {\n selectedEle.setAttribute('aria-selected', 'true');\n }\n (focusedEle || selectedEle).setAttribute('aria-label', title);\n id = (focusedEle || selectedEle).getAttribute('id');\n }\n return id;\n };\n CalendarBase.prototype.iconHandler = function () {\n new Date(this.checkValue(this.currentDate)).setDate(1);\n switch (this.currentView()) {\n case 'Month':\n this.previousIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareMonth(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Year':\n this.previousIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareYear(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n break;\n case 'Decade':\n this.previousIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.min) < 1);\n this.nextIconHandler(this.compareDecade(new Date(this.checkValue(this.currentDate)), this.max) > -1);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CalendarBase.prototype.destroy = function () {\n if (this.getModuleName() === 'calendar' && this.element) {\n removeClass([this.element], [ROOT]);\n }\n else {\n if (this.calendarElement && this.element) {\n removeClass([this.element], [ROOT]);\n }\n }\n if (this.getModuleName() === 'calendar' && this.element) {\n if (!isNullOrUndefined(this.headerTitleElement)) {\n EventHandler.remove(this.headerTitleElement, 'click', this.navigateTitle);\n }\n if (this.todayElement) {\n EventHandler.remove(this.todayElement, 'click', this.todayButtonClick);\n }\n this.previousIconHandler(true);\n this.nextIconHandler(true);\n this.keyboardModule.destroy();\n this.element.removeAttribute('data-role');\n if (!isNullOrUndefined(this.calendarEleCopy.getAttribute('tabindex'))) {\n this.element.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.element.removeAttribute('tabindex');\n }\n }\n if (this.element) {\n this.element.innerHTML = '';\n }\n this.todayElement = null;\n this.tableBodyElement = null;\n this.todayButtonEvent = null;\n this.renderDayCellArgs = null;\n this.headerElement = null;\n this.nextIcon = null;\n this.table = null;\n this.tableHeadElement = null;\n this.previousIcon = null;\n this.headerTitleElement = null;\n this.footer = null;\n this.contentElement = null;\n _super.prototype.destroy.call(this);\n };\n CalendarBase.prototype.title = function (e) {\n var currentView = this.getViewNumber(this.currentView());\n this.effect = ZOOMIN;\n this.switchView(++currentView, e);\n };\n CalendarBase.prototype.getViewNumber = function (stringVal) {\n if (stringVal === 'Month') {\n return 0;\n }\n else if (stringVal === 'Year') {\n return 1;\n }\n else {\n return 2;\n }\n };\n CalendarBase.prototype.navigateTitle = function (e) {\n e.preventDefault();\n this.title(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.previous = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, -1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, -10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigatePrevious = function (e) {\n !Browser.isDevice && e.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.previous();\n }\n else {\n this.islamicModule.islamicPrevious();\n }\n this.triggerNavigate(e);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n CalendarBase.prototype.next = function () {\n this.effect = '';\n var currentView = this.getViewNumber(this.currentView());\n switch (this.currentView()) {\n case 'Month':\n this.addMonths(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Year':\n this.addYears(this.currentDate, 1);\n this.switchView(currentView);\n break;\n case 'Decade':\n this.addYears(this.currentDate, 10);\n this.switchView(currentView);\n break;\n }\n };\n CalendarBase.prototype.navigateNext = function (eve) {\n !Browser.isDevice && eve.preventDefault();\n if (this.calendarMode === 'Gregorian') {\n this.next();\n }\n else {\n this.islamicModule.islamicNext();\n }\n this.triggerNavigate(eve);\n if (this.getModuleName() === 'calendar') {\n this.table.focus();\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n */\n CalendarBase.prototype.navigateTo = function (view, date, isCustomDate) {\n if (+date >= +this.min && +date <= +this.max) {\n this.currentDate = date;\n }\n if (+date <= +this.min) {\n this.currentDate = new Date(this.checkValue(this.min));\n }\n if (+date >= +this.max) {\n this.currentDate = new Date(this.checkValue(this.max));\n }\n if ((this.getViewNumber(this.depth) >= this.getViewNumber(view))) {\n if ((this.getViewNumber(this.depth) <= this.getViewNumber(this.start))\n || this.getViewNumber(this.depth) === this.getViewNumber(view)) {\n view = this.depth;\n }\n }\n this.switchView(this.getViewNumber(view), null, null, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n */\n CalendarBase.prototype.currentView = function () {\n if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(YEAR)) {\n return 'Year';\n }\n else if (!isNullOrUndefined(this.contentElement) && this.contentElement.classList.contains(DECADE)) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n CalendarBase.prototype.getDateVal = function (date, value) {\n return (!isNullOrUndefined(value) && date.getDate() === (value).getDate()\n && date.getMonth() === (value).getMonth() && date.getFullYear() === (value).getFullYear());\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n CalendarBase.prototype.getCultureObjects = function (ld, c) {\n var gregorianFormat = '.dates.calendars.gregorian.days.format.' + this.dayHeaderFormat.toLowerCase();\n var islamicFormat = '.dates.calendars.islamic.days.format.' + this.dayHeaderFormat.toLowerCase();\n var mainVal = 'main.';\n if (this.calendarMode === 'Gregorian') {\n return getValue(mainVal + '' + this.locale + gregorianFormat, ld);\n }\n else {\n return getValue('main.' + '' + this.locale + islamicFormat, ld);\n }\n };\n CalendarBase.prototype.getWeek = function (d) {\n var currentDate = new Date(this.checkValue(d)).valueOf();\n var date = new Date(d.getFullYear(), 0, 1).valueOf();\n return Math.ceil((((currentDate - date) + dayMilliSeconds) / dayMilliSeconds) / 7);\n };\n CalendarBase.prototype.setStartDate = function (date, time) {\n var tzOffset = date.getTimezoneOffset();\n var d = new Date(date.getTime() + time);\n var tzOffsetDiff = d.getTimezoneOffset() - tzOffset;\n date.setTime(d.getTime() + tzOffsetDiff * minutesMilliSeconds);\n };\n CalendarBase.prototype.addMonths = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setMonth(date.getMonth() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year, (islamicDate.month) + i, 1);\n }\n };\n CalendarBase.prototype.addYears = function (date, i) {\n if (this.calendarMode === 'Gregorian') {\n var day = date.getDate();\n date.setDate(1);\n date.setFullYear(date.getFullYear() + i);\n date.setDate(Math.min(day, this.getMaxDays(date)));\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n this.currentDate = this.islamicModule.toGregorian(islamicDate.year + i, (islamicDate.month), 1);\n }\n };\n CalendarBase.prototype.getIdValue = function (e, element) {\n var eve;\n if (e) {\n eve = e.currentTarget;\n }\n else {\n eve = element;\n }\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var dateFormatOptions = { type: 'dateTime', skeleton: 'full', calendar: type };\n // eslint-disable-next-line radix\n var dateString = this.globalize.formatDate(new Date(parseInt('' + eve.getAttribute('id'), 0)), dateFormatOptions);\n var date = this.globalize.parseDate(dateString, dateFormatOptions);\n var value = date.valueOf() - date.valueOf() % 1000;\n return new Date(value);\n //return this.globalize.parseDate(dateString, dateFormatOptions);\n };\n CalendarBase.prototype.adjustLongHeaderSize = function () {\n removeClass([this.element], DAYHEADERLONG);\n if (this.dayHeaderFormat === 'Wide') {\n addClass([this.getModuleName() === 'calendar' ? this.element : this.calendarElement], DAYHEADERLONG);\n }\n };\n CalendarBase.prototype.selectDate = function (e, date, node, multiSelection, values) {\n var element = node || e.currentTarget;\n this.isDateSelected = false;\n if (this.currentView() === 'Decade') {\n this.setDateDecade(this.currentDate, date.getFullYear());\n }\n else if (this.currentView() === 'Year') {\n this.setDateYear(this.currentDate, date);\n }\n else {\n if (multiSelection && !this.checkPresentDate(date, values)) {\n var copyValues = this.copyValues(values);\n if (!isNullOrUndefined(values) && copyValues.length > 0) {\n copyValues.push(new Date(this.checkValue(date)));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: values[values.length - 1] }, true);\n }\n else {\n this.setProperties({ values: [new Date(this.checkValue(date))] }, true);\n }\n }\n else {\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n }\n this.currentDate = new Date(this.checkValue(date));\n }\n var tableBodyElement = closest(element, '.' + ROOT);\n if (isNullOrUndefined(tableBodyElement)) {\n tableBodyElement = this.tableBodyElement;\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + SELECTED))) {\n removeClass([tableBodyElement.querySelector('.' + SELECTED)], SELECTED);\n }\n if (!multiSelection && !isNullOrUndefined(tableBodyElement.querySelector('.' + FOCUSEDDATE))) {\n removeClass([tableBodyElement.querySelector('.' + FOCUSEDDATE)], FOCUSEDDATE);\n }\n if (multiSelection) {\n var copyValues = this.copyValues(values);\n var collection = Array.prototype.slice.call(this.tableBodyElement.querySelectorAll('td'));\n for (var index = 0; index < collection.length; index++) {\n var tempElement = tableBodyElement.querySelectorAll('td' + '.' + FOCUSEDDATE)[0];\n var selectedElement = tableBodyElement.querySelectorAll('td' + '.' + SELECTED)[0];\n if (collection[index] === tempElement) {\n removeClass([collection[index]], FOCUSEDDATE);\n }\n if (collection[index] === selectedElement &&\n !this.checkPresentDate(new Date(parseInt(selectedElement.getAttribute('id').split('_')[0], 10)), values)) {\n removeClass([collection[index]], SELECTED);\n }\n }\n if (element.classList.contains(SELECTED)) {\n removeClass([element], SELECTED);\n for (var i = 0; i < copyValues.length; i++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var formatOptions = { format: null, type: 'date', skeleton: 'short', calendar: type };\n var localDateString = this.globalize.formatDate(date, formatOptions);\n var tempDateString = this.globalize.formatDate(copyValues[i], formatOptions);\n if (localDateString === tempDateString) {\n var index = copyValues.indexOf(copyValues[i]);\n copyValues.splice(index, 1);\n addClass([element], FOCUSEDDATE);\n }\n }\n this.setProperties({ values: copyValues }, true);\n }\n else {\n addClass([element], SELECTED);\n }\n }\n else {\n addClass([element], SELECTED);\n }\n this.isDateSelected = true;\n };\n CalendarBase.prototype.checkPresentDate = function (dates, values) {\n var previousValue = false;\n if (!isNullOrUndefined(values)) {\n for (var checkPrevious = 0; checkPrevious < values.length; checkPrevious++) {\n var type = (this.calendarMode === 'Gregorian') ? 'gregorian' : 'islamic';\n var localDateString = this.globalize.formatDate(dates, {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n var tempDateString = this.globalize.formatDate(values[checkPrevious], {\n format: null, type: 'date', skeleton: 'short', calendar: type\n });\n if (localDateString === tempDateString) {\n previousValue = true;\n }\n }\n }\n return previousValue;\n };\n CalendarBase.prototype.setAriaActiveDescendant = function () {\n attributes(this.table, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n };\n CalendarBase.prototype.previousIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.previousIcon, 'click', this.navigatePreviousHandler);\n addClass([this.previousIcon], '' + DISABLED);\n addClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.previousIcon, 'click', this.navigatePreviousHandler);\n removeClass([this.previousIcon], '' + DISABLED);\n removeClass([this.previousIcon], '' + OVERLAY);\n this.previousIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.renderDayCellEvent = function (args) {\n extend(this.renderDayCellArgs, { name: 'renderDayCell' });\n this.trigger('renderDayCell', args);\n };\n CalendarBase.prototype.navigatedEvent = function (eve) {\n extend(this.navigatedArgs, { name: 'navigated', event: eve });\n this.trigger('navigated', this.navigatedArgs);\n };\n CalendarBase.prototype.triggerNavigate = function (event) {\n this.navigatedArgs = { view: this.currentView(), date: this.currentDate };\n this.navigatedEvent(event);\n };\n CalendarBase.prototype.nextIconHandler = function (disabled) {\n if (disabled) {\n if (!isNullOrUndefined(this.previousIcon)) {\n EventHandler.remove(this.nextIcon, 'click', this.navigateNextHandler);\n addClass([this.nextIcon], DISABLED);\n addClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'true');\n }\n }\n else {\n EventHandler.add(this.nextIcon, 'click', this.navigateNextHandler);\n removeClass([this.nextIcon], DISABLED);\n removeClass([this.nextIcon], OVERLAY);\n this.nextIcon.setAttribute('aria-disabled', 'false');\n }\n };\n CalendarBase.prototype.compare = function (startDate, endDate, modifier) {\n var start = endDate.getFullYear();\n var end;\n var result;\n end = start;\n result = 0;\n if (modifier) {\n start = start - start % modifier;\n end = start - start % modifier + modifier - 1;\n }\n if (startDate.getFullYear() > end) {\n result = 1;\n }\n else if (startDate.getFullYear() < start) {\n result = -1;\n }\n return result;\n };\n CalendarBase.prototype.isMinMaxRange = function (date) {\n return +date >= +this.min && +date <= +this.max;\n };\n CalendarBase.prototype.isMonthYearRange = function (date) {\n if (this.calendarMode === 'Gregorian') {\n return date.getMonth() >= this.min.getMonth()\n && date.getFullYear() >= this.min.getFullYear()\n && date.getMonth() <= this.max.getMonth()\n && date.getFullYear() <= this.max.getFullYear();\n }\n else {\n var islamicDate = this.islamicModule.getIslamicDate(date);\n return islamicDate.month >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).month\n && islamicDate.year >= (this.islamicModule.getIslamicDate(new Date(1944, 1, 18))).year\n && islamicDate.month <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).month\n && islamicDate.year <= (this.islamicModule.getIslamicDate(new Date(2069, 1, 16))).year;\n }\n };\n CalendarBase.prototype.compareYear = function (start, end) {\n return this.compare(start, end, 0);\n };\n CalendarBase.prototype.compareDecade = function (start, end) {\n return this.compare(start, end, 10);\n };\n CalendarBase.prototype.shiftArray = function (array, i) {\n return array.slice(i).concat(array.slice(0, i));\n };\n CalendarBase.prototype.addDay = function (date, i, e, max, min) {\n var column = i;\n var value = new Date(+date);\n if (!isNullOrUndefined(this.tableBodyElement) && !isNullOrUndefined(e)) {\n while (this.findNextTD(new Date(+date), column, max, min)) {\n column += i;\n }\n var rangeValue = new Date(value.setDate(value.getDate() + column));\n column = (+rangeValue > +max || +rangeValue < +min) ? column === i ? i - i : i : column;\n }\n date.setDate(date.getDate() + column);\n };\n CalendarBase.prototype.findNextTD = function (date, column, max, min) {\n var value = new Date(date.setDate(date.getDate() + column));\n var collection = [];\n var isDisabled = false;\n if ((!isNullOrUndefined(value) && value.getMonth()) === (!isNullOrUndefined(this.currentDate) && this.currentDate.getMonth())) {\n var tdEles = void 0;\n if (this.calendarMode === 'Gregorian') {\n tdEles = this.renderDays(value);\n }\n else {\n tdEles = this.islamicModule.islamicRenderDays(this.currentDate, value);\n }\n collection = tdEles.filter(function (element) {\n return element.classList.contains(DISABLED);\n });\n }\n else {\n collection = this.tableBodyElement.querySelectorAll('td.' + DISABLED);\n }\n if (+value <= (+(max)) && +value >= (+(min))) {\n if (collection.length) {\n for (var i = 0; i < collection.length; i++) {\n // eslint-disable-next-line radix\n isDisabled = (+value === +new Date(parseInt(collection[i].id, 0))) ? true : false;\n if (isDisabled) {\n break;\n }\n }\n }\n }\n return isDisabled;\n };\n CalendarBase.prototype.getMaxDays = function (d) {\n var date;\n var tmpDate = new Date(this.checkValue(d));\n date = 28;\n var month = tmpDate.getMonth();\n while (tmpDate.getMonth() === month) {\n ++date;\n tmpDate.setDate(date);\n }\n return date - 1;\n };\n CalendarBase.prototype.setDateDecade = function (date, year) {\n date.setFullYear(year);\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.setDateYear = function (date, value) {\n date.setFullYear(value.getFullYear(), value.getMonth(), date.getDate());\n if (value.getMonth() !== date.getMonth()) {\n date.setDate(0);\n this.currentDate = new Date(this.checkValue(value));\n }\n this.setProperties({ value: new Date(this.checkValue(date)) }, true);\n };\n CalendarBase.prototype.compareMonth = function (start, end) {\n var result;\n if (start.getFullYear() > end.getFullYear()) {\n result = 1;\n }\n else if (start.getFullYear() < end.getFullYear()) {\n result = -1;\n }\n else {\n result = start.getMonth() === end.getMonth() ? 0 : start.getMonth() > end.getMonth() ? 1 : -1;\n }\n return result;\n };\n CalendarBase.prototype.checkValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n CalendarBase.prototype.checkView = function () {\n if (this.start !== 'Decade' && this.start !== 'Year') {\n this.setProperties({ start: 'Month' }, true);\n }\n if (this.depth !== 'Decade' && this.depth !== 'Year') {\n this.setProperties({ depth: 'Month' }, true);\n }\n if (this.getViewNumber(this.depth) > this.getViewNumber(this.start)) {\n this.setProperties({ depth: 'Month' }, true);\n }\n };\n CalendarBase.prototype.getDate = function (date, timezone) {\n if (timezone) {\n date = new Date(date.toLocaleString('en-US', { timeZone: timezone }));\n }\n return date;\n };\n __decorate([\n Property(new Date(1900, 0, 1))\n ], CalendarBase.prototype, \"min\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"enabled\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"cssClass\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], CalendarBase.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], CalendarBase.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], CalendarBase.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"weekNumber\", void 0);\n __decorate([\n Property('FirstDay')\n ], CalendarBase.prototype, \"weekRule\", void 0);\n __decorate([\n Property(true)\n ], CalendarBase.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], CalendarBase.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], CalendarBase.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], CalendarBase.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"navigated\", void 0);\n __decorate([\n Event()\n ], CalendarBase.prototype, \"renderDayCell\", void 0);\n CalendarBase = __decorate([\n NotifyPropertyChanges\n ], CalendarBase);\n return CalendarBase;\n}(Component));\nexport { CalendarBase };\n/**\n * Represents the Calendar component that allows the user to select a date.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Calendar = /** @class */ (function (_super) {\n __extends(Calendar, _super);\n /**\n * Initialized new instance of Calendar Class.\n * Constructor for creating the widget\n *\n * @param {CalendarModel} options - Specifies the Calendar model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function Calendar(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.render = function () {\n if (this.calendarMode === 'Islamic' && this.islamicModule === undefined) {\n throwError('Requires the injectable Islamic modules to render Calendar in Islamic mode');\n }\n if (this.isMultiSelection && typeof this.values === 'object' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var tempValues = [];\n var copyValues = [];\n for (var limit = 0; limit < this.values.length; limit++) {\n if (tempValues.indexOf(+this.values[limit]) === -1) {\n tempValues.push(+this.values[limit]);\n copyValues.push(this.values[limit]);\n }\n }\n this.setProperties({ values: copyValues }, true);\n for (var index = 0; index < this.values.length; index++) {\n if (!this.checkDateValue(this.values[index])) {\n if (typeof (this.values[index]) === 'string' && this.checkDateValue(new Date(this.checkValue(this.values[index])))) {\n var copyDate = new Date(this.checkValue(this.values[index]));\n this.values.splice(index, 1);\n this.values.splice(index, 0, copyDate);\n }\n else {\n this.values.splice(index, 1);\n }\n }\n }\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n this.previousValues = this.values.length;\n }\n this.validateDate();\n this.minMaxUpdate();\n if (this.getModuleName() === 'calendar') {\n this.setEnable(this.enabled);\n this.setClass(this.cssClass);\n }\n _super.prototype.render.call(this);\n if (this.getModuleName() === 'calendar') {\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.add(form, 'reset', this.formResetHandler.bind(this));\n }\n this.setTimeZone(this.serverTimezoneOffset);\n }\n this.renderComplete();\n };\n Calendar.prototype.setEnable = function (enable) {\n if (!enable) {\n addClass([this.element], DISABLED);\n }\n else {\n removeClass([this.element], DISABLED);\n }\n };\n Calendar.prototype.setClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(oldCssClass) && oldCssClass !== '') {\n removeClass([this.element], oldCssClass.split(' '));\n }\n if (!isNullOrUndefined(newCssClass)) {\n addClass([this.element], newCssClass.split(' '));\n }\n };\n Calendar.prototype.isDayLightSaving = function () {\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n Calendar.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var serverTimezoneDiff = offsetValue;\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date(this.value.getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n Calendar.prototype.formResetHandler = function () {\n this.setProperties({ value: null }, true);\n };\n Calendar.prototype.validateDate = function () {\n if (typeof this.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(this.checkValue(this.value))) }, true); // persist the value property.\n }\n _super.prototype.validateDate.call(this, this.value);\n if (!isNullOrUndefined(this.value) && this.min <= this.max && this.value >= this.min && this.value <= this.max) {\n this.currentDate = new Date(this.checkValue(this.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n };\n Calendar.prototype.minMaxUpdate = function () {\n if (this.getModuleName() === 'calendar') {\n if (!isNullOrUndefined(this.value) && this.value <= this.min && this.min <= this.max) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value >= this.max && this.min <= this.max) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n }\n if (this.getModuleName() !== 'calendar' && !isNullOrUndefined(this.value)) {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.min);\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max) {\n _super.prototype.minMaxUpdate.call(this, this.max);\n }\n }\n }\n else {\n _super.prototype.minMaxUpdate.call(this, this.value);\n }\n };\n Calendar.prototype.generateTodayVal = function (value) {\n var tempValue = new Date();\n if (!isNullOrUndefined(this.timezone)) {\n tempValue = _super.prototype.getDate.call(this, tempValue, this.timezone);\n }\n if (value && isNullOrUndefined(this.timezone)) {\n tempValue.setHours(value.getHours());\n tempValue.setMinutes(value.getMinutes());\n tempValue.setSeconds(value.getSeconds());\n tempValue.setMilliseconds(value.getMilliseconds());\n }\n else {\n tempValue = new Date(tempValue.getFullYear(), tempValue.getMonth(), tempValue.getDate(), 0, 0, 0, 0);\n }\n return tempValue;\n };\n Calendar.prototype.todayButtonClick = function (e) {\n if (this.showTodayButton) {\n var tempValue = this.generateTodayVal(this.value);\n this.setProperties({ value: tempValue }, true);\n this.isTodayClicked = true;\n this.todayButtonEvent = e;\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (!_super.prototype.checkPresentDate.call(this, tempValue, this.values)) {\n copyValues.push(tempValue);\n this.setProperties({ values: copyValues });\n }\n }\n _super.prototype.todayButtonClick.call(this, e, new Date(+this.value));\n }\n };\n Calendar.prototype.keyActionHandle = function (e) {\n _super.prototype.keyActionHandle.call(this, e, this.value, this.isMultiSelection);\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Calendar.prototype.preRender = function () {\n var _this = this;\n this.changeHandler = function (e) {\n _this.triggerChange(e);\n };\n this.checkView();\n _super.prototype.preRender.call(this, this.value);\n };\n /**\n * @returns {void}\n\n */\n Calendar.prototype.createContent = function () {\n this.previousDate = this.value;\n this.previousDateTime = this.value;\n _super.prototype.createContent.call(this);\n };\n Calendar.prototype.minMaxDate = function (localDate) {\n return _super.prototype.minMaxDate.call(this, localDate);\n };\n Calendar.prototype.renderMonths = function (e, value, isCustomDate) {\n _super.prototype.renderMonths.call(this, e, this.value, isCustomDate);\n };\n Calendar.prototype.renderDays = function (currentDate, value, isMultiSelect, values, isCustomDate, e) {\n var tempDays = _super.prototype.renderDays.call(this, currentDate, this.value, this.isMultiSelection, this.values, isCustomDate, e);\n if (this.isMultiSelection) {\n _super.prototype.validateValues.call(this, this.isMultiSelection, this.values);\n }\n return tempDays;\n };\n Calendar.prototype.renderYears = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderYears.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderYears(e, this.value);\n }\n };\n Calendar.prototype.renderDecades = function (e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderDecades.call(this, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderDecade(e, this.value);\n }\n };\n Calendar.prototype.renderTemplate = function (elements, count, classNm, e) {\n if (this.calendarMode === 'Gregorian') {\n _super.prototype.renderTemplate.call(this, elements, count, classNm, e, this.value);\n }\n else {\n this.islamicModule.islamicRenderTemplate(elements, count, classNm, e, this.value);\n }\n this.changedArgs = { value: this.value, values: this.values };\n e && e.type === 'click' && e.currentTarget.classList.contains(OTHERMONTH) ? this.changeHandler(e) : this.changeHandler();\n };\n Calendar.prototype.clickHandler = function (e) {\n var eve = e.currentTarget;\n this.isPopupClicked = true;\n if (eve.classList.contains(OTHERMONTH)) {\n if (this.isMultiSelection) {\n var copyValues = this.copyValues(this.values);\n if (copyValues.toString().indexOf(this.getIdValue(e, null).toString()) === -1) {\n copyValues.push(this.getIdValue(e, null));\n this.setProperties({ values: copyValues }, true);\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n else {\n this.previousDates = true;\n }\n }\n else {\n this.setProperties({ value: this.getIdValue(e, null) }, true);\n }\n }\n var storeView = this.currentView();\n _super.prototype.clickHandler.call(this, e, this.value);\n if (this.isMultiSelection && this.currentDate !== this.value &&\n !isNullOrUndefined(this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0]) && storeView === 'Year') {\n this.tableBodyElement.querySelectorAll('.' + FOCUSEDDATE)[0].classList.remove(FOCUSEDDATE);\n }\n };\n Calendar.prototype.switchView = function (view, e, isMultiSelection, isCustomDate) {\n _super.prototype.switchView.call(this, view, e, this.isMultiSelection, isCustomDate);\n };\n /**\n * To get component name\n *\n * @returns {string} Return the component name.\n * @private\n */\n Calendar.prototype.getModuleName = function () {\n _super.prototype.getModuleName.call(this);\n return 'calendar';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n Calendar.prototype.getPersistData = function () {\n _super.prototype.getPersistData.call(this);\n var keyEntity = ['value', 'values'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Called internally if any of the property value changed.\n *\n * @param {CalendarModel} newProp - Returns the dynamic property value of the component.\n * @param {CalendarModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n Calendar.prototype.onPropertyChanged = function (newProp, oldProp) {\n this.effect = '';\n this.rangeValidation(this.min, this.max);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n if (this.isDateSelected) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: new Date(this.checkValue(newProp.value)) }, true);\n }\n else {\n newProp.value = new Date(this.checkValue(newProp.value));\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: oldProp.value }, true);\n }\n this.update();\n }\n break;\n case 'values':\n if (this.isDateSelected) {\n if (typeof newProp.values === 'string' || typeof newProp.values === 'number') {\n this.setProperties({ values: null }, true);\n }\n else {\n var copyValues = this.copyValues(this.values);\n for (var index = 0; index < copyValues.length; index++) {\n var tempDate = copyValues[index];\n if (this.checkDateValue(tempDate) && !_super.prototype.checkPresentDate.call(this, tempDate, copyValues)) {\n copyValues.push(tempDate);\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.values.length > 0) {\n this.setProperties({ value: newProp.values[newProp.values.length - 1] }, true);\n }\n }\n this.validateValues(this.isMultiSelection, this.values);\n this.update();\n }\n break;\n case 'isMultiSelection':\n if (this.isDateSelected) {\n this.setProperties({ isMultiSelection: newProp.isMultiSelection }, true);\n this.update();\n }\n break;\n case 'enabled':\n this.setEnable(this.enabled);\n break;\n case 'cssClass':\n if (this.getModuleName() === 'calendar') {\n this.setClass(newProp.cssClass, oldProp.cssClass);\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp, this.isMultiSelection, this.values);\n }\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n Calendar.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.getModuleName() === 'calendar') {\n this.changedArgs = null;\n var form = closest(this.element, 'form');\n if (form) {\n EventHandler.remove(form, 'reset', this.formResetHandler.bind(this));\n }\n }\n };\n /**\n * This method is used to navigate to the month/year/decade view of the Calendar.\n *\n * @param {string} view - Specifies the view of the Calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @param {boolean} isCustomDate - Specifies whether the calendar is rendered with custom today date or not.\n * @returns {void}\n\n */\n Calendar.prototype.navigateTo = function (view, date, isCustomDate) {\n this.minMaxUpdate();\n _super.prototype.navigateTo.call(this, view, date, isCustomDate);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the Calendar.\n *\n * @returns {string}\n\n */\n Calendar.prototype.currentView = function () {\n return _super.prototype.currentView.call(this);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * This method is used to add the single or multiple dates to the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates to be added to the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.addDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number') {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && (dates).length > 0) {\n var tempDates = dates;\n for (var i = 0; i < tempDates.length; i++) {\n if (this.checkDateValue(tempDates[i]) && !_super.prototype.checkPresentDate.call(this, tempDates[i], copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push(tempDates[i]);\n }\n else {\n copyValues = [new Date(+tempDates[i])];\n }\n }\n }\n }\n else {\n if (this.checkDateValue(dates) && !_super.prototype.checkPresentDate.call(this, dates, copyValues)) {\n if (!isNullOrUndefined(copyValues) && copyValues.length > 0) {\n copyValues.push((dates));\n }\n else {\n copyValues = [new Date(+dates)];\n }\n }\n }\n this.setProperties({ values: copyValues }, true);\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.validateValues(this.isMultiSelection, copyValues);\n this.update();\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * This method is used to remove the single or multiple dates from the values property of the Calendar.\n *\n * @param {Date | Date[]} dates - Specifies the date or dates which need to be removed from the values property of the Calendar.\n * @returns {void}\n\n */\n Calendar.prototype.removeDate = function (dates) {\n if (typeof dates !== 'string' && typeof dates !== 'number' && !isNullOrUndefined(this.values) && this.values.length > 0) {\n var copyValues = this.copyValues(this.values);\n if (typeof dates === 'object' && ((dates).length > 0)) {\n var tempDates = dates;\n for (var index = 0; index < tempDates.length; index++) {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +tempDates[index]) {\n copyValues.splice(i, 1);\n }\n }\n }\n }\n else {\n for (var i = 0; i < copyValues.length; i++) {\n if (+copyValues[i] === +dates) {\n copyValues.splice(i, 1);\n }\n }\n }\n this.setProperties({ values: copyValues }, false);\n this.update();\n if (this.isMultiSelection) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler();\n }\n };\n /**\n * To set custom today date in calendar\n *\n * @param {Date} date - Specifies date value to be set.\n * @private\n * @returns {void}\n */\n Calendar.prototype.setTodayDate = function (date) {\n var todayDate = new Date(+date);\n this.setProperties({ value: todayDate }, true);\n _super.prototype.todayButtonClick.call(this, null, todayDate, true);\n };\n Calendar.prototype.update = function () {\n this.validateDate();\n this.minMaxUpdate();\n _super.prototype.setValueUpdate.call(this);\n };\n Calendar.prototype.selectDate = function (e, date, element) {\n _super.prototype.selectDate.call(this, e, date, element, this.isMultiSelection, this.values);\n if (this.isMultiSelection && !isNullOrUndefined(this.values) && this.values.length > 0) {\n this.setProperties({ value: this.values[this.values.length - 1] }, true);\n }\n this.changedArgs = { value: this.value, values: this.values };\n this.changeHandler(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n Calendar.prototype.changeEvent = function (e) {\n if ((this.value && this.value.valueOf()) !== (this.previousDate && +this.previousDate.valueOf())\n || this.isMultiSelection) {\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = new Date(+this.value);\n }\n };\n Calendar.prototype.triggerChange = function (e) {\n if (!isNullOrUndefined(this.todayButtonEvent) && this.isTodayClicked) {\n e = this.todayButtonEvent;\n this.isTodayClicked = false;\n }\n this.changedArgs.event = e || null;\n this.changedArgs.isInteracted = !isNullOrUndefined(e);\n if (!isNullOrUndefined(this.value)) {\n this.setProperties({ value: this.value }, true);\n }\n // eslint-disable-next-line use-isnan\n if (!this.isMultiSelection && +this.value !== Number.NaN && (!isNullOrUndefined(this.value) &&\n !isNullOrUndefined(this.previousDate) || this.previousDate === null\n && !isNaN(+this.value))) {\n this.changeEvent(e);\n }\n else if (!isNullOrUndefined(this.values) && this.previousValues !== this.values.length) {\n this.changeEvent(e);\n this.previousValues = this.values.length;\n }\n };\n __decorate([\n Property(null)\n ], Calendar.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], Calendar.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], Calendar.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Event()\n ], Calendar.prototype, \"change\", void 0);\n Calendar = __decorate([\n NotifyPropertyChanges\n ], Calendar);\n return Calendar;\n}(CalendarBase));\nexport { Calendar };\n","var __assign = (this && this.__assign) || function () {\n __assign = Object.assign || function(t) {\n for (var s, i = 1, n = arguments.length; i < n; i++) {\n s = arguments[i];\n for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p))\n t[p] = s[p];\n }\n return t;\n };\n return __assign.apply(this, arguments);\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined, createElement, remove, closest, addClass, removeClass, extend, append } from '@syncfusion/ej2-base';\nimport { Toolbar } from '@syncfusion/ej2-navigations';\nimport { Calendar } from '@syncfusion/ej2-calendars';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport * as events from '../base/constant';\nimport * as util from '../base/util';\nimport * as cls from '../base/css-constant';\n/**\n * Header module\n */\nvar HeaderRenderer = /** @class */ (function () {\n function HeaderRenderer(parent) {\n this.parent = parent;\n this.l10n = this.parent.localeObj;\n this.renderHeader();\n this.addEventListener();\n }\n HeaderRenderer.prototype.addEventListener = function () {\n this.parent.on(events.documentClick, this.closeHeaderPopup, this);\n };\n HeaderRenderer.prototype.removeEventListener = function () {\n this.parent.off(events.documentClick, this.closeHeaderPopup);\n };\n HeaderRenderer.prototype.closeHeaderPopup = function (e) {\n var closestEle = closest(e.event.target, '.e-date-range,.e-header-popup,.e-day,.e-selected');\n var closestPop = closest(e.event.target, '.e-hor-nav,.e-toolbar-pop');\n var contentWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (this.parent.isAdaptive) {\n if (!isNullOrUndefined(closestPop) && (closestPop.classList.contains('e-toolbar-pop') ||\n closestPop.classList.contains('e-hor-nav')) && !(closestPop.classList.contains('e-hor-nav') &&\n this.element.querySelector('.e-toolbar-pop').classList.contains(cls.POPUP_OPEN))) {\n addClass([contentWrap], cls.SCROLL_HIDDEN);\n }\n else {\n removeClass([contentWrap], cls.SCROLL_HIDDEN);\n var popupEle = this.element.querySelector('.e-toolbar-pop');\n if (!isNullOrUndefined(popupEle)) {\n var popupObj = popupEle.ej2_instances[0];\n if (popupObj && !(!isNullOrUndefined(closestPop) && closestPop.classList.contains('e-hor-nav') &&\n popupEle.classList.contains(cls.POPUP_OPEN))) {\n popupObj.hide();\n }\n }\n }\n }\n if (!isNullOrUndefined(closestEle)) {\n return;\n }\n this.hideHeaderPopup();\n };\n HeaderRenderer.prototype.hideHeaderPopup = function () {\n if (this.headerPopup) {\n this.headerPopup.hide();\n }\n };\n HeaderRenderer.prototype.renderHeader = function () {\n this.element = createElement('div', { className: cls.TOOLBAR_CONTAINER });\n var toolbarEle = createElement('div', { className: cls.HEADER_TOOLBAR });\n this.element.appendChild(toolbarEle);\n this.parent.element.insertBefore(this.element, this.parent.element.firstElementChild);\n this.renderToolbar();\n };\n HeaderRenderer.prototype.renderToolbar = function () {\n var _this = this;\n var items = (this.parent.toolbarItems && this.parent.toolbarItems.length > 0) ? this.getToolbarItems() : this.getItems();\n this.parent.trigger(events.actionBegin, { requestType: 'toolbarItemRendering', items: items }, function (args) {\n _this.toolbarObj = new Toolbar({\n items: args.items,\n overflowMode: 'Popup',\n clicked: _this.toolbarClickHandler.bind(_this),\n enableRtl: _this.parent.enableRtl,\n enableHtmlSanitizer: _this.parent.enableHtmlSanitizer,\n locale: _this.parent.locale\n });\n _this.toolbarObj.root = _this.parent.root ? _this.parent.root : _this.parent;\n _this.toolbarObj.appendTo(_this.parent.element.querySelector('.' + cls.HEADER_TOOLBAR));\n var prevNavEle = _this.toolbarObj.element.querySelector('.e-prev');\n if (prevNavEle) {\n prevNavEle.firstElementChild.setAttribute('title', _this.l10n.getConstant('previous'));\n }\n var nextNavEle = _this.toolbarObj.element.querySelector('.e-next');\n if (nextNavEle) {\n nextNavEle.firstElementChild.setAttribute('title', _this.l10n.getConstant('next'));\n }\n _this.updateAddIcon();\n _this.updateActiveView();\n _this.parent.trigger(events.actionComplete, { requestType: 'toolBarItemRendered', items: _this.toolbarObj.items });\n });\n };\n HeaderRenderer.prototype.updateItems = function () {\n var _this = this;\n if (this.toolbarObj) {\n var items = this.getItems();\n this.parent.trigger(events.actionBegin, { requestType: 'toolbarItemRendering', items: items }, function (args) {\n _this.toolbarObj.items = args.items;\n _this.toolbarObj.dataBind();\n _this.parent.trigger(events.actionComplete, { requestType: 'toolBarItemRendered', items: _this.toolbarObj.items });\n });\n }\n };\n HeaderRenderer.prototype.getPopUpRelativeElement = function () {\n if (this.parent.isAdaptive) {\n return this.toolbarObj.element;\n }\n return this.element.querySelector('.e-date-range');\n };\n HeaderRenderer.prototype.setDayOfWeek = function (index) {\n if (this.headerCalendar) {\n this.headerCalendar.firstDayOfWeek = index;\n this.headerCalendar.dataBind();\n }\n };\n HeaderRenderer.prototype.setCalendarDate = function (date) {\n if (this.headerCalendar) {\n this.headerCalendar.value = date;\n this.headerCalendar.dataBind();\n }\n };\n HeaderRenderer.prototype.setCalendarMinMaxDate = function () {\n if (this.headerCalendar) {\n this.headerCalendar.min = this.parent.minDate;\n this.headerCalendar.max = this.parent.maxDate;\n this.headerCalendar.dataBind();\n }\n };\n HeaderRenderer.prototype.getCalendarView = function () {\n if (['Month', 'MonthAgenda', 'TimelineMonth'].indexOf(this.parent.currentView) > -1) {\n return 'Year';\n }\n else if (['Year', 'TimelineYear'].indexOf(this.parent.currentView) > -1) {\n return 'Decade';\n }\n else {\n return 'Month';\n }\n };\n HeaderRenderer.prototype.setCalendarView = function () {\n if (this.headerCalendar) {\n var calendarView = this.getCalendarView();\n this.headerCalendar.depth = calendarView;\n this.headerCalendar.start = calendarView;\n this.headerCalendar.refresh();\n }\n };\n HeaderRenderer.prototype.updateActiveView = function () {\n var selEle = [].slice.call(this.toolbarObj.element.querySelectorAll('.e-views'));\n removeClass(selEle, ['e-active-view']);\n if (selEle.length > 0 && selEle[this.parent.viewIndex]) {\n addClass([selEle[this.parent.viewIndex]], ['e-active-view']);\n }\n };\n HeaderRenderer.prototype.updateDateRange = function (date) {\n var selEle = this.toolbarObj.element.querySelector('.e-date-range');\n if (!selEle) {\n return;\n }\n var textEle = selEle.querySelector('.e-tbar-btn-text');\n if (this.parent.activeViewOptions.dateRangeTemplate) {\n textEle.textContent = '';\n var args = {\n startDate: this.parent.activeView.getStartDate(),\n endDate: this.parent.activeView.getEndDate(), currentView: this.parent.currentView\n };\n var viewName = this.parent.activeViewOptions.dateRangeTemplateName;\n var templateId = this.parent.element.id + '_' + viewName + 'dateRangeTemplate';\n var dateTemplate = [].slice.call(this.parent.getDateRangeTemplate()(args, this.parent, 'dateRangeTemplate', templateId, false));\n append(dateTemplate, textEle);\n }\n else {\n var text = this.parent.activeView.getDateRangeText(date);\n selEle.firstElementChild.setAttribute('aria-label', text);\n textEle.textContent = text;\n }\n this.refresh();\n };\n HeaderRenderer.prototype.refresh = function () {\n if (this.toolbarObj) {\n this.toolbarObj.refreshOverflow();\n }\n };\n HeaderRenderer.prototype.updateAddIcon = function () {\n var addEle = this.toolbarObj.element.querySelector('.e-add');\n if (addEle) {\n if (!this.parent.eventSettings.allowAdding) {\n addClass([addEle], cls.HIDDEN_CLASS);\n }\n else {\n removeClass([addEle], cls.HIDDEN_CLASS);\n }\n }\n };\n HeaderRenderer.prototype.getDateRangeText = function () {\n var dateString = this.parent.globalize.formatDate(this.parent.selectedDate, {\n format: 'MMMM y', calendar: this.parent.getCalendarMode()\n });\n return util.capitalizeFirstWord(dateString, 'single');\n };\n HeaderRenderer.prototype.getItemModel = function (propItem) {\n var item = {};\n if (propItem.id) {\n item.id = propItem.id;\n }\n if (propItem.text) {\n item.text = propItem.text;\n }\n if (propItem.tooltipText) {\n item.tooltipText = propItem.tooltipText;\n }\n if (propItem.prefixIcon) {\n item.prefixIcon = propItem.prefixIcon;\n }\n if (propItem.cssClass) {\n item.cssClass = propItem.cssClass;\n }\n if (propItem.showTextOn !== 'Both') {\n item.showTextOn = propItem.showTextOn;\n }\n if (propItem.template) {\n item.template = propItem.template;\n }\n if (propItem.disabled) {\n item.disabled = propItem.disabled;\n }\n if (propItem.width !== 'auto') {\n item.width = propItem.width;\n }\n if (propItem.suffixIcon) {\n item.suffixIcon = propItem.suffixIcon;\n }\n if (propItem.align !== 'Left') {\n item.align = propItem.align;\n }\n if (propItem.overflow !== 'None') {\n item.overflow = propItem.overflow;\n }\n if (propItem.htmlAttributes) {\n item.htmlAttributes = propItem.htmlAttributes;\n }\n if (propItem.type !== 'Button') {\n item.type = propItem.type;\n }\n if (propItem.visible !== true) {\n item.visible = propItem.visible;\n }\n if (propItem.showAlwaysInPopup) {\n item.showAlwaysInPopup = propItem.showAlwaysInPopup;\n }\n if (propItem.tabIndex !== -1) {\n item.tabIndex = propItem.tabIndex;\n }\n return item;\n };\n HeaderRenderer.prototype.getToolbarItems = function () {\n var items = [];\n var propItem;\n for (var _i = 0, _a = this.parent.toolbarItems; _i < _a.length; _i++) {\n var item = _a[_i];\n propItem = this.getItemModel(item);\n var tbItem = void 0;\n if (item.name) {\n switch (item.name) {\n case 'Today':\n tbItem = {\n showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-day',\n text: this.l10n.getConstant('today'), cssClass: 'e-today', overflow: 'Show'\n };\n tbItem.align = propItem.align ? propItem.align : item.align;\n items.push(__assign({}, tbItem, propItem));\n break;\n case 'Previous':\n tbItem = {\n prefixIcon: 'e-icon-prev', tooltipText: 'Previous', overflow: 'Show',\n cssClass: 'e-prev', htmlAttributes: { 'role': 'navigation' }\n };\n tbItem.align = propItem.align ? propItem.align : item.align;\n items.push(__assign({}, tbItem, propItem));\n break;\n case 'Next':\n tbItem = {\n prefixIcon: 'e-icon-next', tooltipText: 'Next', overflow: 'Show',\n cssClass: 'e-next', htmlAttributes: { 'role': 'navigation' }\n };\n tbItem.align = propItem.align ? propItem.align : item.align;\n items.push(__assign({}, tbItem, propItem));\n break;\n case 'DateRangeText':\n tbItem = {\n text: this.getDateRangeText(), suffixIcon: 'e-icon-down-arrow', cssClass: 'e-date-range',\n overflow: 'Show',\n htmlAttributes: { 'aria-atomic': 'true', 'aria-live': 'assertive', 'role': 'navigation' }\n };\n tbItem.align = propItem.align ? propItem.align : item.align;\n items.push(__assign({}, tbItem, propItem));\n break;\n case 'NewEvent':\n tbItem = {\n showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-add',\n text: this.l10n.getConstant('newEvent'), cssClass: 'e-add', overflow: 'Show'\n };\n tbItem.align = propItem.align ? propItem.align : item.align;\n items.push(__assign({}, tbItem, propItem));\n break;\n case 'Views':\n if (this.parent.views.length > 1) {\n for (var _b = 0, _c = this.parent.views; _b < _c.length; _b++) {\n var view = _c[_b];\n tbItem = this.getItemObject(view);\n tbItem.align = propItem.align ? propItem.align : item.align;\n items.push(__assign({}, tbItem, propItem));\n }\n }\n break;\n case 'Custom':\n items.push(item);\n break;\n }\n }\n else {\n items.push(item);\n }\n }\n return items;\n };\n HeaderRenderer.prototype.getItems = function () {\n var items = [];\n items.push({\n align: 'Left', prefixIcon: 'e-icon-prev', tooltipText: 'Previous', overflow: 'Show',\n cssClass: 'e-prev'\n });\n items.push({\n align: 'Left', prefixIcon: 'e-icon-next', tooltipText: 'Next', overflow: 'Show',\n cssClass: 'e-next'\n });\n items.push({\n align: 'Left', text: this.getDateRangeText(), suffixIcon: 'e-icon-down-arrow', cssClass: 'e-date-range',\n overflow: 'Show',\n htmlAttributes: { 'aria-atomic': 'true', 'aria-live': 'assertive' }\n });\n if (this.parent.isAdaptive || this.parent.enableAdaptiveUI) {\n items.push({\n align: 'Right', showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-add',\n text: this.l10n.getConstant('newEvent'), cssClass: 'e-add', overflow: 'Show'\n });\n items.push({\n align: 'Right', showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-today',\n text: this.l10n.getConstant('today'), cssClass: 'e-today', overflow: 'Show'\n });\n }\n else {\n items.push({\n align: 'Right', showAlwaysInPopup: (this.parent.isAdaptive || this.parent.enableAdaptiveUI), prefixIcon: 'e-icon-day',\n text: this.l10n.getConstant('today'), cssClass: 'e-today', overflow: 'Show'\n });\n if (this.parent.views.length > 1) {\n items.push({ align: 'Right', type: 'Separator', cssClass: 'e-schedule-seperator' });\n }\n }\n if (this.parent.views.length > 1) {\n for (var _i = 0, _a = this.parent.views; _i < _a.length; _i++) {\n var item = _a[_i];\n items.push(this.getItemObject(item));\n }\n }\n return items;\n };\n HeaderRenderer.prototype.getItemObject = function (item) {\n var viewName;\n var displayName;\n if (typeof (item) === 'string') {\n viewName = item.toLowerCase();\n displayName = null;\n }\n else {\n viewName = item.option.toLowerCase();\n displayName = item.displayName;\n }\n var view;\n var orientationClass;\n var isItemInsidePopup = this.parent.isAdaptive || this.parent.enableAdaptiveUI;\n switch (viewName) {\n case 'day':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-day',\n text: displayName || this.l10n.getConstant('day'), cssClass: 'e-views e-day'\n };\n break;\n case 'week':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-week',\n text: displayName || this.l10n.getConstant('week'), cssClass: 'e-views e-week'\n };\n break;\n case 'workweek':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-workweek',\n text: displayName || this.l10n.getConstant('workWeek'), cssClass: 'e-views e-work-week'\n };\n break;\n case 'month':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-month',\n text: displayName || this.l10n.getConstant('month'), cssClass: 'e-views e-month'\n };\n break;\n case 'year':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-year',\n text: displayName || this.l10n.getConstant('year'), cssClass: 'e-views e-year'\n };\n break;\n case 'agenda':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-agenda',\n text: displayName || this.l10n.getConstant('agenda'), cssClass: 'e-views e-agenda'\n };\n break;\n case 'monthagenda':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-month-agenda',\n text: displayName || this.l10n.getConstant('monthAgenda'), cssClass: 'e-views e-month-agenda'\n };\n break;\n case 'timelineday':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-timeline-day',\n text: displayName || this.l10n.getConstant('timelineDay'), cssClass: 'e-views e-timeline-day'\n };\n break;\n case 'timelineweek':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-timeline-week',\n text: displayName || this.l10n.getConstant('timelineWeek'), cssClass: 'e-views e-timeline-week'\n };\n break;\n case 'timelineworkweek':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-timeline-workweek',\n text: displayName || this.l10n.getConstant('timelineWorkWeek'), cssClass: 'e-views e-timeline-work-week'\n };\n break;\n case 'timelinemonth':\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-timeline-month',\n text: displayName || this.l10n.getConstant('timelineMonth'), cssClass: 'e-views e-timeline-month'\n };\n break;\n case 'timelineyear':\n orientationClass = (item.orientation === 'Vertical') ? 'vertical' : 'horizontal';\n view = {\n align: 'Right', showAlwaysInPopup: isItemInsidePopup, prefixIcon: 'e-icon-timeline-year-' + orientationClass,\n text: displayName || this.l10n.getConstant('timelineYear'), cssClass: 'e-views e-timeline-year'\n };\n break;\n }\n return view;\n };\n HeaderRenderer.prototype.renderHeaderPopup = function () {\n var headerPopupEle = createElement('div', { className: cls.HEADER_POPUP_CLASS });\n var headerCalendarEle = createElement('div', { className: cls.HEADER_CALENDAR_CLASS });\n headerPopupEle.appendChild(headerCalendarEle);\n this.element.appendChild(headerPopupEle);\n this.headerPopup = new Popup(headerPopupEle, {\n actionOnScroll: 'hide',\n targetType: 'relative',\n relateTo: this.getPopUpRelativeElement(),\n position: { X: 'left', Y: 'bottom' },\n enableRtl: this.parent.enableRtl\n });\n var calendarView = this.getCalendarView();\n var isDisplayDate = this.parent.currentView === 'Month' &&\n !isNullOrUndefined(this.parent.activeViewOptions.displayDate) && !this.hasSelectedDate();\n this.headerCalendar = new Calendar({\n value: isDisplayDate ? this.parent.activeViewOptions.displayDate : this.parent.selectedDate,\n min: this.parent.minDate,\n max: this.parent.maxDate,\n firstDayOfWeek: this.parent.activeViewOptions.firstDayOfWeek,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n depth: calendarView,\n start: calendarView,\n calendarMode: this.parent.calendarMode,\n change: this.calendarChange.bind(this)\n });\n this.setCalendarTimezone();\n this.headerCalendar.appendTo(headerCalendarEle);\n this.headerPopup.hide();\n };\n HeaderRenderer.prototype.calendarChange = function (args) {\n if (args.value.getTime() !== this.parent.selectedDate.getTime()) {\n var calendarDate = util.resetTime(new Date(args.value));\n this.parent.changeDate(calendarDate);\n }\n this.headerPopup.hide();\n };\n HeaderRenderer.prototype.setCalendarTimezone = function () {\n if (this.headerCalendar) {\n this.headerCalendar.timezone = this.parent.timezone || this.parent.tzModule.getLocalTimezoneName();\n }\n };\n HeaderRenderer.prototype.calculateViewIndex = function (args) {\n var target = closest(args.originalEvent.target, '.e-views');\n var views = [].slice.call(this.element.querySelectorAll('.e-views'));\n return views.indexOf(target);\n };\n HeaderRenderer.prototype.toolbarClickHandler = function (args) {\n if (!args.item) {\n return;\n }\n var strClass = args.item.cssClass.replace('e-views ', '');\n var data;\n var isSameTime;\n var currentTime;\n switch (strClass) {\n case 'e-date-range':\n if (!this.headerPopup) {\n this.renderHeaderPopup();\n }\n if (this.headerPopup.element.classList.contains(cls.POPUP_OPEN)) {\n this.headerPopup.hide();\n }\n else {\n this.headerPopup.show();\n }\n break;\n case 'e-day':\n this.parent.changeView('Day', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-week':\n this.parent.changeView('Week', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-work-week':\n this.parent.changeView('WorkWeek', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-month':\n this.parent.changeView('Month', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-year':\n this.parent.changeView('Year', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-agenda':\n this.parent.changeView('Agenda', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-month-agenda':\n this.parent.changeView('MonthAgenda', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-timeline-day':\n this.parent.changeView('TimelineDay', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-timeline-week':\n this.parent.changeView('TimelineWeek', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-timeline-work-week':\n this.parent.changeView('TimelineWorkWeek', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-timeline-month':\n this.parent.changeView('TimelineMonth', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-timeline-year':\n this.parent.changeView('TimelineYear', args.originalEvent, undefined, this.calculateViewIndex(args));\n break;\n case 'e-today':\n currentTime = util.resetTime(this.parent.getCurrentTime());\n if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda' || !this.parent.isSelectedDate(currentTime) ||\n this.parent.currentView === 'Month' && this.parent.activeViewOptions.displayDate && !this.hasSelectedDate() &&\n util.resetTime(this.parent.activeViewOptions.displayDate) !== currentTime || this.parent.currentView === 'Month' &&\n this.parent.activeViewOptions.numberOfWeeks > 0 && !this.hasSelectedDate()\n && util.resetTime(util.firstDateOfMonth(this.parent.selectedDate)) !== currentTime) {\n this.parent.changeDate(currentTime, args.originalEvent);\n }\n break;\n case 'e-prev':\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('previous'), args.originalEvent);\n break;\n case 'e-next':\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('next'), args.originalEvent);\n break;\n case 'e-add':\n isSameTime = this.parent.activeCellsData.startTime.getTime() === this.parent.activeCellsData.endTime.getTime();\n if (this.parent.activeCellsData && !isSameTime) {\n data = this.parent.activeCellsData;\n }\n else {\n var interval = this.parent.activeViewOptions.timeScale.interval;\n var slotCount = this.parent.activeViewOptions.timeScale.slotCount;\n var msInterval = (interval * util.MS_PER_MINUTE) / slotCount;\n var startTime = new Date(this.parent.selectedDate.getTime());\n var currentTime_1 = this.parent.getCurrentTime();\n startTime.setHours(currentTime_1.getHours(), (Math.round(startTime.getMinutes() / msInterval) * msInterval), 0);\n var endTime = new Date(new Date(startTime.getTime()).setMilliseconds(startTime.getMilliseconds() + msInterval));\n data = { startTime: startTime, endTime: endTime, isAllDay: false };\n }\n this.parent.eventWindow.openEditor(extend(data, { cancel: false, event: args.originalEvent }), 'Add');\n break;\n }\n if (isNullOrUndefined(this.toolbarObj)) {\n return;\n }\n var toolbarPopUp = this.toolbarObj.element.querySelector('.e-toolbar-pop');\n if (toolbarPopUp && args.item.type !== 'Input') {\n toolbarPopUp.ej2_instances[0].hide({ name: 'SlideUp', duration: 100 });\n }\n };\n HeaderRenderer.prototype.hasSelectedDate = function () {\n var selectedTime = util.resetTime(this.parent.selectedDate).getTime();\n return selectedTime >= this.parent.activeView.getStartDate().getTime() &&\n selectedTime <= this.parent.activeView.getEndDate().getTime();\n };\n HeaderRenderer.prototype.getHeaderElement = function () {\n return this.toolbarObj.element;\n };\n HeaderRenderer.prototype.updateHeaderItems = function (classType) {\n var prevNavEle = this.toolbarObj.element.querySelector('.e-prev');\n var nextNavEle = this.toolbarObj.element.querySelector('.e-next');\n var dateRangeEle = this.toolbarObj.element.querySelector('.e-date-range');\n if (prevNavEle) {\n if (classType === 'add') {\n addClass([prevNavEle], cls.HIDDEN_CLASS);\n }\n else {\n removeClass([prevNavEle], cls.HIDDEN_CLASS);\n }\n }\n if (nextNavEle) {\n if (classType === 'add') {\n addClass([nextNavEle], cls.HIDDEN_CLASS);\n }\n else {\n removeClass([nextNavEle], cls.HIDDEN_CLASS);\n }\n }\n if (dateRangeEle) {\n if (classType === 'add') {\n addClass([dateRangeEle], cls.TEXT_ELLIPSIS);\n }\n else {\n removeClass([dateRangeEle], cls.TEXT_ELLIPSIS);\n }\n }\n };\n HeaderRenderer.prototype.previousNextIconHandler = function () {\n var dates = (this.parent.currentView === 'Agenda' ?\n [this.parent.getCurrentViewDates()[0]] : this.parent.getCurrentViewDates());\n var prevNavEle = this.toolbarObj.element.querySelector('.' + cls.PREVIOUS_DATE_CLASS);\n var nextNavEle = this.toolbarObj.element.querySelector('.' + cls.NEXT_DATE_CLASS);\n var firstDate = new Date(dates[0].getTime());\n var lastDate = new Date(dates[dates.length - 1].getTime());\n if (this.parent.currentView === 'WorkWeek' || this.parent.currentView === 'TimelineWorkWeek') {\n firstDate = util.getWeekFirstDate(util.resetTime(this.parent.selectedDate), this.parent.firstDayOfWeek);\n lastDate = util.addDays(firstDate, 7 * this.parent.activeViewOptions.interval);\n }\n else if (this.parent.currentView === 'Month') {\n var isCustomMonth = !isNullOrUndefined(this.parent.activeViewOptions.displayDate) ||\n this.parent.activeViewOptions.numberOfWeeks > 0;\n firstDate = isCustomMonth ? this.parent.activeView.getStartDate() : util.firstDateOfMonth(this.parent.selectedDate);\n lastDate = isCustomMonth ? this.parent.activeView.getEndDate() :\n util.lastDateOfMonth(util.addMonths(firstDate, this.parent.activeViewOptions.interval - 1));\n }\n if (!isNullOrUndefined(prevNavEle)) {\n this.toolbarObj.enableItems(prevNavEle, firstDate > util.resetTime(this.parent.minDate));\n }\n if (!isNullOrUndefined(nextNavEle)) {\n this.toolbarObj.enableItems(nextNavEle, lastDate < util.resetTime(this.parent.maxDate));\n }\n this.setCalendarMinMaxDate();\n };\n HeaderRenderer.prototype.getModuleName = function () {\n return 'headerbar';\n };\n HeaderRenderer.prototype.destroy = function () {\n if (this.headerPopup && !this.headerPopup.isDestroyed) {\n this.headerPopup.destroy();\n this.headerPopup = null;\n }\n if (this.headerCalendar && !this.headerCalendar.isDestroyed) {\n this.headerCalendar.destroy();\n this.headerCalendar = null;\n }\n if (this.toolbarObj && !this.toolbarObj.isDestroyed) {\n this.toolbarObj.destroy();\n this.removeEventListener();\n remove(this.element);\n this.toolbarObj = null;\n }\n this.element = null;\n this.parent = null;\n this.l10n = null;\n };\n return HeaderRenderer;\n}());\nexport { HeaderRenderer };\n","import { formatUnit } from '@syncfusion/ej2-base';\nimport { contentReady, uiUpdate, scrollUiUpdate } from '../base/constant';\n/**\n * `Scroll` module\n */\nvar Scroll = /** @class */ (function () {\n /**\n * Constructor for the scrolling.\n *\n * @param {Schedule} parent Accepts the Schedule instance\n */\n function Scroll(parent) {\n this.parent = parent;\n this.addEventListener();\n }\n /**\n * For internal use only - Get the module name.\n *\n * @returns {string} Returns the module name.\n * @private\n */\n Scroll.prototype.getModuleName = function () {\n return 'scroll';\n };\n /**\n * Internal method to set the element width\n *\n * @returns {void}\n * @private\n */\n Scroll.prototype.setWidth = function () {\n this.parent.element.style.width = formatUnit(this.parent.width);\n };\n /**\n * Internal method to set the element height\n *\n * @returns {void}\n * @private\n */\n Scroll.prototype.setHeight = function () {\n this.parent.element.style.height = formatUnit(this.parent.height);\n };\n /**\n * Internal method to bind events\n *\n * @returns {void}\n * @private\n */\n Scroll.prototype.addEventListener = function () {\n this.parent.on(contentReady, this.setDimensions, this);\n this.parent.on(uiUpdate, this.onPropertyChanged, this);\n };\n /**\n * Internal method to unbind events\n *\n * @returns {void}\n * @private\n */\n Scroll.prototype.removeEventListener = function () {\n this.parent.off(contentReady, this.setDimensions);\n this.parent.off(uiUpdate, this.onPropertyChanged);\n };\n /**\n * Internal method to set the dimensions\n *\n * @returns {void}\n * @private\n */\n Scroll.prototype.setDimensions = function () {\n this.setWidth();\n this.setHeight();\n var data = { cssProperties: this.parent.getCssProperties(), module: this.getModuleName() };\n this.parent.notify(scrollUiUpdate, data);\n };\n /**\n * Internal method to set the dimensions dynamically\n *\n * @returns {void}\n * @private\n */\n Scroll.prototype.onPropertyChanged = function () {\n this.setDimensions();\n };\n /**\n * Destroy the scroll module\n *\n * @returns {void}\n * @private\n */\n Scroll.prototype.destroy = function () {\n this.removeEventListener();\n };\n return Scroll;\n}());\nexport { Scroll };\n","import { addClass, removeClass, Touch, remove, EventHandler, Browser } from '@syncfusion/ej2-base';\nimport { closest, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\n/**\n * `touch` module is used to handle touch interactions.\n */\nvar ScheduleTouch = /** @class */ (function () {\n function ScheduleTouch(parent) {\n this.parent = parent;\n this.element = this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS);\n this.touchObj = new Touch(this.element, {\n scroll: this.scrollHandler.bind(this),\n swipe: this.swipeHandler.bind(this),\n tapHold: this.tapHoldHandler.bind(this),\n swipeSettings: { swipeThresholdDistance: 1 }\n });\n EventHandler.add(this.element, 'transitionend', this.onTransitionEnd, this);\n this.touchLeftDirection = this.parent.enableRtl ? 'Right' : 'Left';\n this.touchRightDirection = this.parent.enableRtl ? 'Left' : 'Right';\n }\n ScheduleTouch.prototype.scrollHandler = function (e) {\n if (this.parent.currentView === 'Agenda' || this.parent.uiStateValues.action || !this.parent.allowSwiping ||\n (e.originalEvent && e.originalEvent.target &&\n (e.originalEvent.target.classList.contains(cls.APPOINTMENT_CLASS) ||\n closest(e.originalEvent.target, '.' + cls.APPOINTMENT_CLASS)) && !this.parent.isAdaptive)) {\n return;\n }\n if (!this.timeStampStart) {\n this.timeStampStart = Date.now();\n }\n if (this.element.classList.contains(cls.TRANSLATE_CLASS)) {\n this.onTransitionEnd();\n }\n if (e.scrollDirection === 'Left' || e.scrollDirection === 'Right') {\n var args = { requestType: 'dateNavigate', cancel: false, event: e.originalEvent };\n this.parent.trigger(events.actionBegin, args);\n if (args.cancel) {\n return;\n }\n var scrollDiv = this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (scrollDiv && scrollDiv.scrollWidth > scrollDiv.clientWidth) {\n return;\n }\n else {\n this.isScrollTriggered = true;\n e.originalEvent.preventDefault();\n e.originalEvent.stopPropagation();\n }\n }\n if (e.scrollDirection === this.touchLeftDirection) {\n if (!this.nextPanel) {\n this.renderPanel(cls.NEXT_PANEL_CLASS, 'next');\n this.nextPanel = {\n element: this.parent.activeView.getPanel(),\n selectedDate: new Date(this.parent.selectedDate.getTime()),\n renderDates: this.parent.activeView.renderDates,\n colLevels: this.parent.activeView.colLevels\n };\n this.setDimensions(this.nextPanel.element);\n }\n var x = this.parent.enableRtl ? e.distanceX : -e.distanceX;\n this.element.style.transform = 'translatex(' + (this.getTranslateX(this.element) + x) + 'px)';\n }\n else if (e.scrollDirection === this.touchRightDirection) {\n var prevWidth = 0;\n if (!this.previousPanel) {\n this.renderPanel(cls.PREVIOUS_PANEL_CLASS, 'previous');\n this.previousPanel = {\n element: this.parent.activeView.getPanel(),\n selectedDate: new Date(this.parent.selectedDate.getTime()),\n renderDates: this.parent.activeView.renderDates,\n colLevels: this.parent.activeView.colLevels\n };\n this.setDimensions(this.previousPanel.element);\n prevWidth = this.previousPanel.element.offsetWidth;\n }\n var x = this.parent.enableRtl ? prevWidth - e.distanceX : -prevWidth + e.distanceX;\n this.element.style.transform = 'translatex(' + (this.getTranslateX(this.element) + x) + 'px)';\n }\n };\n ScheduleTouch.prototype.swipeHandler = function (e) {\n if (!this.isScrollTriggered || this.parent.uiStateValues.action || !this.parent.allowSwiping) {\n return;\n }\n this.isScrollTriggered = false;\n var swipeDate = e.swipeDirection === 'Left' ?\n this.parent.activeView.renderDates[0] : this.parent.activeView.renderDates.slice(-1)[0];\n if ((e.swipeDirection === 'Left' && swipeDate < this.parent.maxDate) ||\n (e.swipeDirection === 'Right' && swipeDate >= this.parent.minDate)) {\n var time = Date.now() - this.timeStampStart;\n var offsetDist = (e.distanceX * (Browser.isDevice ? 6 : 1.66));\n if (offsetDist > time || (e.distanceX > (this.parent.element.offsetWidth / 2))) {\n this.swapPanels(e.swipeDirection);\n if (offsetDist > time && (e.distanceX > (this.parent.element.offsetWidth / 2))) {\n this.element.style.transitionDuration = (((Browser.isDevice ? e.distanceX : offsetDist) / time) / 10) + 's';\n }\n this.confirmSwipe(e.swipeDirection);\n }\n else {\n this.cancelSwipe();\n }\n var args = { requestType: 'dateNavigate', cancel: false, event: e.originalEvent };\n this.parent.trigger(events.actionComplete, args);\n }\n else {\n this.cancelSwipe();\n }\n this.timeStampStart = null;\n };\n ScheduleTouch.prototype.tapHoldHandler = function (e) {\n var target = closest(e.originalEvent.target, '.' + cls.APPOINTMENT_CLASS);\n if (!isNullOrUndefined(target) && this.parent.isAdaptive) {\n this.parent.quickPopup.tapHoldEventPopup(e.originalEvent);\n return;\n }\n };\n ScheduleTouch.prototype.renderPanel = function (clsName, nextPrevType) {\n if (!this.currentPanel) {\n this.currentPanel = {\n element: this.parent.activeView.getPanel(),\n selectedDate: new Date(this.parent.selectedDate.getTime()),\n renderDates: this.parent.activeView.renderDates,\n colLevels: this.parent.activeView.colLevels\n };\n this.setDimensions(this.currentPanel.element);\n }\n else {\n this.parent.setProperties({ selectedDate: this.currentPanel.selectedDate }, true);\n }\n this.parent.setProperties({ selectedDate: this.parent.activeView.getNextPreviousDate(nextPrevType) }, true);\n if (this.parent.headerModule) {\n this.parent.headerModule.setCalendarDate(this.parent.selectedDate);\n }\n this.parent.activeView.getRenderDates();\n this.parent.activeView.renderLayout(clsName);\n };\n ScheduleTouch.prototype.swapPanels = function (direction) {\n if (direction === this.touchLeftDirection) {\n var temp = this.nextPanel;\n this.nextPanel = this.currentPanel;\n this.currentPanel = temp;\n }\n else {\n var temp = this.previousPanel;\n this.previousPanel = this.currentPanel;\n this.currentPanel = temp;\n }\n };\n ScheduleTouch.prototype.confirmSwipe = function (swipeDirection) {\n var _this = this;\n var previousDate = swipeDirection === this.touchLeftDirection ?\n this.nextPanel.selectedDate : this.previousPanel.selectedDate;\n var args = {\n action: 'date', cancel: false, previousDate: previousDate, currentDate: this.currentPanel.selectedDate\n };\n this.parent.trigger(events.navigating, args, function (navArgs) {\n if (navArgs.cancel) {\n _this.swapPanels(swipeDirection);\n _this.cancelSwipe();\n }\n else {\n _this.parent.activeView.setPanel(_this.currentPanel.element);\n _this.parent.setProperties({ selectedDate: _this.currentPanel.selectedDate }, true);\n var translateX = void 0;\n if (_this.parent.enableRtl) {\n translateX = swipeDirection === _this.touchLeftDirection ?\n (_this.previousPanel ? _this.previousPanel.element.offsetLeft : _this.currentPanel.element.offsetWidth) : 0;\n }\n else {\n translateX = swipeDirection === _this.touchLeftDirection ? -_this.currentPanel.element.offsetLeft : 0;\n }\n _this.parent.activeView.renderDates = _this.currentPanel.renderDates;\n _this.parent.activeView.colLevels = _this.currentPanel.colLevels;\n addClass([_this.element], cls.TRANSLATE_CLASS);\n _this.element.style.transform = 'translatex(' + translateX + 'px)';\n if (_this.parent.headerModule) {\n _this.parent.headerModule.updateDateRange();\n }\n _this.parent.renderTemplates();\n _this.parent.crudModule.refreshDataManager();\n }\n });\n };\n ScheduleTouch.prototype.cancelSwipe = function () {\n this.parent.activeView.setPanel(this.currentPanel.element);\n this.parent.setProperties({ selectedDate: this.currentPanel.selectedDate }, true);\n this.parent.activeView.renderDates = this.currentPanel.renderDates;\n this.parent.activeView.colLevels = this.currentPanel.colLevels;\n addClass([this.element], cls.TRANSLATE_CLASS);\n var prevWidth = this.previousPanel ? this.previousPanel.element.offsetWidth : 0;\n this.element.style.transform = 'translatex(' + (this.parent.enableRtl ? prevWidth : -this.currentPanel.element.offsetLeft) + 'px)';\n };\n ScheduleTouch.prototype.onTransitionEnd = function () {\n removeClass([this.element], cls.TRANSLATE_CLASS);\n this.element.style.transitionDuration = '';\n this.element.style.transform = '';\n if (this.previousPanel) {\n remove(this.previousPanel.element);\n this.previousPanel = null;\n removeClass([this.currentPanel.element], cls.PREVIOUS_PANEL_CLASS);\n addClass([this.currentPanel.element], cls.CURRENT_PANEL_CLASS);\n }\n if (this.nextPanel) {\n remove(this.nextPanel.element);\n this.nextPanel = null;\n removeClass([this.currentPanel.element], cls.NEXT_PANEL_CLASS);\n addClass([this.currentPanel.element], cls.CURRENT_PANEL_CLASS);\n }\n this.currentPanel = null;\n this.parent.activeView.getPanel().style.width = '';\n };\n ScheduleTouch.prototype.getTranslateX = function (element) {\n var style = window.getComputedStyle(element);\n return new WebKitCSSMatrix(style.webkitTransform).m41;\n };\n ScheduleTouch.prototype.setDimensions = function (element) {\n element.style.width = (this.parent.element.clientWidth) + 'px';\n };\n ScheduleTouch.prototype.resetValues = function () {\n this.currentPanel = null;\n this.previousPanel = null;\n this.nextPanel = null;\n this.timeStampStart = null;\n this.element.style.transform = '';\n this.element.style.transitionDuration = '';\n util.removeChildren(this.element);\n removeClass([this.element], cls.TRANSLATE_CLASS);\n };\n ScheduleTouch.prototype.destroy = function () {\n if (this.touchObj) {\n this.touchObj.destroy();\n this.touchObj = null;\n }\n EventHandler.remove(this.element, 'transitionend', this.onTransitionEnd);\n this.resetValues();\n };\n return ScheduleTouch;\n}());\nexport { ScheduleTouch };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { KeyboardEvents, closest, EventHandler, extend } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport * as event from '../base/constant';\nimport * as util from '../base/util';\nimport * as cls from '../base/css-constant';\nimport { cellSelect } from '../base/constant';\n/**\n * Keyboard interaction\n */\nvar KeyboardInteraction = /** @class */ (function () {\n function KeyboardInteraction(parent) {\n this.selectedCells = [];\n this.keyConfigs = {\n downArrow: 'downarrow',\n upArrow: 'uparrow',\n rightArrow: 'rightarrow',\n leftArrow: 'leftarrow',\n shiftDownArrow: 'shift+downarrow',\n shiftUpArrow: 'shift+uparrow',\n shiftRightArrow: 'shift+rightarrow',\n shiftLeftArrow: 'shift+leftarrow',\n ctrlLeftArrow: 'ctrl+leftarrow',\n ctrlRightArrow: 'ctrl+rightarrow',\n altOne: 'alt+1',\n altTwo: 'alt+2',\n altThree: 'alt+3',\n altFour: 'alt+4',\n altFive: 'alt+5',\n altSix: 'alt+6',\n altSeven: 'alt+7',\n altEight: 'alt+8',\n altNine: 'alt+9',\n enter: 'enter',\n escape: 'escape',\n delete: 'delete',\n backspace: 'backspace',\n home: 'home',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n tab: 'tab',\n shiftTab: 'shift+tab',\n ctrlShiftUpArrow: 'ctrl+shift+uparrow',\n ctrlShiftDownArrow: 'ctrl+shift+downarrow',\n ctrlShiftLeftArrow: 'ctrl+shift+leftarrow',\n ctrlShiftRightArrow: 'ctrl+shift+rightarrow'\n };\n this.parent = parent;\n this.parent.element.tabIndex = this.parent.element.tabIndex === -1 ? 0 : this.parent.element.tabIndex;\n this.keyboardModule = new KeyboardEvents(this.parent.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown'\n });\n this.addEventListener();\n }\n KeyboardInteraction.prototype.keyActionHandler = function (e) {\n switch (e.action) {\n case 'downArrow':\n case 'shiftDownArrow':\n this.processDown(e, e.shiftKey);\n break;\n case 'upArrow':\n case 'shiftUpArrow':\n this.processUp(e, e.shiftKey);\n break;\n case 'leftArrow':\n case 'shiftLeftArrow':\n this.processLeft(e, e.shiftKey);\n break;\n case 'rightArrow':\n case 'shiftRightArrow':\n this.processRight(e, e.shiftKey);\n break;\n case 'ctrlLeftArrow':\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('previous'), e);\n if (this.parent.headerModule) {\n this.parent.headerModule.element.querySelector('.e-prev button').focus();\n }\n break;\n case 'ctrlRightArrow':\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('next'), e);\n if (this.parent.headerModule) {\n this.parent.headerModule.element.querySelector('.e-next button').focus();\n }\n break;\n case 'altOne':\n case 'altTwo':\n case 'altThree':\n case 'altFour':\n case 'altFive':\n case 'altSix':\n case 'altSeven':\n case 'altEight':\n case 'altNine':\n this.processViewNavigation(e);\n break;\n case 'enter':\n this.processEnter(e);\n break;\n case 'home':\n this.focusFirstCell();\n break;\n case 'tab':\n case 'shiftTab':\n this.processTab(e, e.shiftKey);\n break;\n case 'delete':\n case 'backspace':\n this.processDelete(e);\n break;\n case 'ctrlShiftUpArrow':\n case 'ctrlShiftDownArrow':\n case 'ctrlShiftLeftArrow':\n case 'ctrlShiftRightArrow':\n this.processCtrlShiftNavigationArrows(e);\n break;\n case 'escape':\n this.processEscape(e);\n break;\n case 'fTwelve':\n if (this.parent.allowInline && this.parent.inlineModule) {\n e.preventDefault();\n this.processFTwelve(e);\n }\n break;\n }\n };\n KeyboardInteraction.prototype.processFTwelve = function (e) {\n var target = e.target;\n if (target.classList.contains(cls.WORK_CELLS_CLASS) || target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n this.parent.activeCellsData = this.getSelectedElements(target);\n var args = extend(this.parent.activeCellsData, { cancel: false, event: e });\n var inlineArgs = {\n element: args.element,\n groupIndex: args.groupIndex, type: 'Cell'\n };\n this.parent.notify(event.inlineClick, inlineArgs);\n }\n if (target.classList.contains(cls.APPOINTMENT_CLASS)) {\n target.click();\n return;\n }\n };\n KeyboardInteraction.prototype.addEventListener = function () {\n this.parent.on(event.cellMouseDown, this.onCellMouseDown, this);\n };\n KeyboardInteraction.prototype.removeEventListener = function () {\n this.parent.off(event.cellMouseDown, this.onCellMouseDown);\n };\n KeyboardInteraction.prototype.onCellMouseDown = function (e) {\n if (e.event.shiftKey) {\n return;\n }\n this.initialTarget = this.getClosestCell(e.event);\n if (this.parent.activeViewOptions.readonly || this.parent.currentView === 'MonthAgenda' || !this.initialTarget) {\n return;\n }\n if (e.event.target.classList.contains(cls.WORK_CELLS_CLASS) && e.event.which !== 3) {\n this.parent.removeSelectedClass();\n EventHandler.add(this.parent.getContentTable(), 'mousemove', this.onMouseSelection, this);\n EventHandler.add(this.parent.getContentTable(), 'mouseup', this.onMoveUp, this);\n }\n if (e.event.target.classList.contains(cls.ALLDAY_CELLS_CLASS) && e.event.which !== 3) {\n this.parent.removeSelectedClass();\n var allDayRow = this.parent.getAllDayRow();\n EventHandler.add(allDayRow, 'mousemove', this.onMouseSelection, this);\n EventHandler.add(allDayRow, 'mouseup', this.onMoveUp, this);\n }\n };\n KeyboardInteraction.prototype.onMouseSelection = function (e) {\n var appointments = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n addClass(appointments, 'e-allow-select');\n var selectionEdges = this.parent.boundaryValidation(e.pageY, e.pageX);\n if (selectionEdges.bottom || selectionEdges.top || selectionEdges.left || selectionEdges.right) {\n var parent_1 = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var yInBounds = parent_1.offsetHeight <= parent_1.scrollHeight && parent_1.scrollTop >= 0 &&\n parent_1.scrollTop + parent_1.offsetHeight <= parent_1.scrollHeight;\n var xInBounds = parent_1.offsetWidth <= parent_1.scrollWidth && parent_1.scrollLeft >= 0 &&\n parent_1.scrollLeft + parent_1.offsetWidth <= parent_1.scrollWidth;\n if (yInBounds && (selectionEdges.top || selectionEdges.bottom)) {\n parent_1.scrollTop += selectionEdges.top ? -e.target.offsetHeight : e.target.offsetHeight;\n }\n if (xInBounds && (selectionEdges.left || selectionEdges.right)) {\n parent_1.scrollLeft += selectionEdges.left ? -e.target.offsetWidth : e.target.offsetWidth;\n }\n }\n var target = this.getClosestCell(e);\n if (target) {\n this.selectCells(true, target);\n }\n };\n KeyboardInteraction.prototype.getClosestCell = function (e) {\n return closest(e.target, '.' + cls.WORK_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS);\n };\n KeyboardInteraction.prototype.onMoveUp = function (e) {\n var _this = this;\n var appointments = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n removeClass(appointments, 'e-allow-select');\n if (e.target.classList.contains(cls.WORK_CELLS_CLASS)) {\n EventHandler.remove(this.parent.getContentTable(), 'mousemove', this.onMouseSelection);\n EventHandler.remove(this.parent.getContentTable(), 'mouseup', this.onMoveUp);\n }\n if (e.target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n var allDayRow = this.parent.getAllDayRow();\n EventHandler.remove(allDayRow, 'mousemove', this.onMouseSelection);\n EventHandler.remove(allDayRow, 'mouseup', this.onMoveUp);\n }\n if (this.isPreventAction(e)) {\n return;\n }\n var queryStr = '.' + cls.WORK_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS + ',.' + cls.HEADER_CELLS_CLASS;\n var target = closest(e.target, queryStr);\n var selectedCells = this.parent.getSelectedCells();\n if (selectedCells.length > 0 && selectedCells.indexOf(target) === -1) {\n target = selectedCells[selectedCells.length - 1];\n }\n if (this.parent.currentView === 'TimelineYear' && target.classList.contains(cls.OTHERMONTH_CLASS)) {\n return;\n }\n this.parent.activeCellsData = this.getSelectedElements(target);\n var cellData = {};\n if (this.parent.eventWindow) {\n this.parent.eventWindow.convertToEventData(this.parent.activeCellsData, cellData);\n }\n var args = {\n data: cellData, element: this.parent.activeCellsData.element, event: e,\n requestType: cellSelect, showQuickPopup: false\n };\n this.parent.trigger(event.select, args, function (selectArgs) {\n var isPopupShow = selectArgs.showQuickPopup || _this.parent.quickInfoOnSelectionEnd;\n if (isPopupShow && selectedCells.length > 1) {\n var cellArgs = extend(_this.parent.activeCellsData, { cancel: false, event: e, name: 'cellClick' });\n _this.parent.notify(event.cellClick, cellArgs);\n }\n });\n };\n KeyboardInteraction.prototype.processEnter = function (e) {\n if ((this.parent.activeViewOptions.readonly && !e.target.classList.contains(cls.APPOINTMENT_CLASS))\n || this.isPreventAction(e)) {\n return;\n }\n if (this.parent.currentView === 'TimelineYear' && e.target.classList.contains(cls.OTHERMONTH_CLASS)) {\n return;\n }\n var target = e.target;\n if (closest(target, '.' + cls.POPUP_WRAPPER_CLASS)) {\n if (target.classList.contains(cls.QUICK_POPUP_EVENT_DETAILS_CLASS) ||\n target.classList.contains(cls.EVENT_CREATE_CLASS) ||\n target.classList.contains(cls.EDIT_EVENT_CLASS) ||\n target.classList.contains(cls.DELETE_EVENT_CLASS) ||\n target.classList.contains(cls.CLOSE_CLASS)) {\n target.click();\n e.preventDefault();\n }\n else if (target.classList.contains(cls.SUBJECT_CLASS)) {\n this.parent.element.querySelector('.' + cls.EVENT_CREATE_CLASS).click();\n e.preventDefault();\n }\n return;\n }\n if (target.classList.contains(cls.RESOURCE_CELLS_CLASS) && target.classList.contains(cls.RESOURCE_PARENT_CLASS)) {\n var resourceIcon = target.querySelector('.' + cls.RESOURCE_TREE_ICON_CLASS);\n if (resourceIcon) {\n resourceIcon.click();\n }\n return;\n }\n if (target.classList.contains(cls.WORK_CELLS_CLASS) || target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n this.parent.activeCellsData = this.getSelectedElements(target);\n var args = extend(this.parent.activeCellsData, { cancel: false, event: e });\n if (this.parent.allowInline) {\n var inlineArgs = {\n element: args.element,\n groupIndex: args.groupIndex, type: 'Cell'\n };\n this.parent.notify(event.inlineClick, inlineArgs);\n }\n else {\n if (this.parent.currentView === 'Year') {\n target.click();\n }\n else {\n this.parent.notify(event.cellClick, args);\n }\n }\n return;\n }\n if (target.classList.contains(cls.INLINE_SUBJECT_CLASS) && this.parent.inlineModule) {\n this.parent.inlineModule.inlineCrudActions(target);\n return;\n }\n if (target.classList.contains(cls.APPOINTMENT_CLASS) || target.classList.contains(cls.MORE_EVENT_CLOSE_CLASS) ||\n target.classList.contains(cls.ALLDAY_APPOINTMENT_SECTION_CLASS) || target.classList.contains(cls.MORE_INDICATOR_CLASS)) {\n target.click();\n return;\n }\n if (target.classList.contains(cls.MORE_EVENT_HEADER_DATE_CLASS)) {\n this.parent.setProperties({ selectedDate: this.parent.getDateFromElement(target) }, true);\n this.parent.changeView(this.parent.getNavigateView(), e);\n this.processEscape(e);\n return;\n }\n };\n KeyboardInteraction.prototype.getSelectedElements = function (target) {\n var cellDetails;\n if (this.selectedCells.length > 1 && target.classList.contains(cls.SELECTED_CELL_CLASS)) {\n var start = this.parent.getCellDetails(this.selectedCells[0]);\n var end = this.parent.getCellDetails(this.selectedCells.slice(-1)[0]);\n start.endTime = end.endTime;\n start.element = target;\n cellDetails = start;\n }\n else {\n cellDetails = this.parent.getCellDetails(target);\n }\n return cellDetails;\n };\n KeyboardInteraction.prototype.getCells = function (isInverseTable, start, end) {\n var tableEle = this.parent.getContentTable();\n var isTimelineYear = this.parent.currentView === 'TimelineYear';\n var query = isTimelineYear && !isInverseTable ? '.' + cls.WORK_CELLS_CLASS + ':not(.' + cls.OTHERMONTH_CLASS + ')' : 'td';\n var cells = [].slice.call(tableEle.querySelectorAll(query));\n var maxRow = tableEle.rows.length;\n var maxColumn = tableEle.rows[0].cells.length;\n if (start && start.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n var allDayRow = this.parent.getAllDayRow();\n cells = [].slice.call(allDayRow.cells);\n maxRow = 1;\n maxColumn = allDayRow.cells.length;\n }\n var startIndex = cells.indexOf(start);\n var endIndex = cells.indexOf(end);\n var inverseCells = [];\n if (isInverseTable) {\n for (var i = 0; i < maxColumn; i++) {\n for (var j = 0; j < maxRow; j++) {\n var cell = cells[maxColumn * j + i];\n if (isTimelineYear && cell.classList.contains(cls.OTHERMONTH_CLASS)) {\n continue;\n }\n inverseCells.push(cell);\n }\n }\n startIndex = inverseCells.indexOf(start);\n endIndex = inverseCells.indexOf(end);\n }\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n var sCells = isInverseTable ? inverseCells : cells;\n return sCells.slice(startIndex, endIndex + 1);\n };\n KeyboardInteraction.prototype.focusFirstCell = function () {\n if (this.parent.currentView === 'Agenda') {\n var focusCell = this.parent.getContentTable().querySelector('.' + cls.AGENDA_CELLS_CLASS);\n focusCell.setAttribute('tabindex', '0');\n focusCell.focus();\n return;\n }\n this.parent.eventBase.removeSelectedAppointmentClass();\n if (this.parent.activeView.isTimelineView() && this.parent.currentView !== 'TimelineYear') {\n var cell = this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS +\n ' tr:not(.' + cls.HIDDEN_CLASS + ') .' + cls.WORK_CELLS_CLASS + ':not(.' + cls.RESOURCE_GROUP_CELLS_CLASS + ')');\n this.selectCells(false, cell);\n }\n else if (this.parent.currentView.indexOf('Year') > -1) {\n var query = '.' + cls.WORK_CELLS_CLASS + ':not(.' + cls.OTHERMONTH_CLASS + ')' + ':not(.' + cls.RESOURCE_GROUP_CELLS_CLASS + ')';\n var isVerticalYear = this.parent.currentView === 'TimelineYear' && this.parent.activeViewOptions.orientation === 'Vertical';\n query += isVerticalYear ? '[data-date=\"' + this.parent.activeView.startDate().getTime() + '\"]' : '';\n this.selectCells(false, this.parent.element.querySelector(query));\n }\n else {\n this.selectCells(false, this.parent.getWorkCellElements()[0]);\n }\n };\n KeyboardInteraction.prototype.isInverseTableSelect = function () {\n return this.parent.activeView.isInverseTableSelect;\n };\n /**\n * Internal method to select cells\n *\n * @param {boolean} isMultiple Accepts to select multiple cells or not\n * @param {HTMLTableCellElement} targetCell Accepts the target cells\n * @returns {void}\n * @private\n */\n KeyboardInteraction.prototype.selectCells = function (isMultiple, targetCell) {\n var _this = this;\n this.parent.removeSelectedClass();\n var target = (targetCell instanceof Array) ? targetCell.slice(-1)[0] : targetCell;\n if (isMultiple) {\n var initialId_1;\n var views_1 = ['Day', 'Week', 'WorkWeek', 'TimelineDay', 'TimelineWeek', 'TimelineWorkWeek', 'TimelineMonth', 'TimelineYear'];\n var args = { element: targetCell, requestType: 'mousemove', allowMultipleRow: true };\n this.parent.inlineModule.removeInlineAppointmentElement();\n this.parent.trigger(event.select, args, function (selectArgs) {\n var allowMultipleRow = (!selectArgs.allowMultipleRow) || (!_this.parent.allowMultiRowSelection);\n if (allowMultipleRow) {\n var isTimelineYear = _this.parent.currentView === 'TimelineYear';\n if (isTimelineYear && _this.parent.activeViewOptions.orientation === 'Horizontal' || _this.parent.currentView === 'Month') {\n var isGroupYear = isTimelineYear && _this.parent.activeViewOptions.group.resources.length > 0;\n target = isGroupYear ? _this.initialTarget :\n _this.initialTarget.parentElement.children[target.cellIndex];\n }\n else if (views_1.indexOf(_this.parent.currentView) > -1) {\n target = target.parentElement.children[_this.initialTarget.cellIndex];\n }\n }\n var selectedCells = _this.getCells(_this.isInverseTableSelect(), _this.initialTarget, target);\n if (_this.parent.activeViewOptions.group.resources.length > 0) {\n initialId_1 = _this.initialTarget.getAttribute('data-group-index');\n var resourceSelectedCells = [];\n for (var _i = 0, selectedCells_1 = selectedCells; _i < selectedCells_1.length; _i++) {\n var cell = selectedCells_1[_i];\n if (cell.getAttribute('data-group-index') === initialId_1) {\n resourceSelectedCells.push(cell);\n }\n }\n selectedCells = resourceSelectedCells;\n }\n if (!_this.parent.allowMultiCellSelection) {\n selectedCells = [_this.initialTarget];\n }\n _this.selectedCells = selectedCells;\n if (selectedCells.length > 2 && !target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n var allDayCells = _this.getAllDayCells(selectedCells);\n if (_this.parent.activeViewOptions.group.resources.length > 0) {\n var resourceAllDayCells = [];\n for (var _a = 0, allDayCells_1 = allDayCells; _a < allDayCells_1.length; _a++) {\n var cell = allDayCells_1[_a];\n if (cell.getAttribute('data-group-index') === initialId_1) {\n resourceAllDayCells.push(cell);\n }\n }\n allDayCells = resourceAllDayCells;\n }\n selectedCells = selectedCells.concat(allDayCells);\n }\n if ((target.getAttribute('data-group-index') !== initialId_1) && _this.parent.activeViewOptions.group.resources.length > 0) {\n target = _this.selectedCells[_this.selectedCells.length - 1];\n }\n _this.parent.addSelectedClass(selectedCells, target);\n });\n }\n else {\n var args = {\n element: target, requestType: cellSelect\n };\n // activeCellsData is not reset on schedule property changed(group properties)\n // const cellData: Record = {};\n // const cellDetails: CellClickEventArgs = this.parent.getCellDetails(target);\n // if (this.parent.eventWindow && cellDetails) {\n // if (this.parent.activeCellsData.element !== cellDetails.element) {\n // this.parent.activeCellsData = cellDetails;\n // }\n // this.parent.eventWindow.convertToEventData(this.parent.activeCellsData as unknown as Record, cellData);\n // args.data = cellData;\n // }\n this.parent.trigger(event.select, args, function () {\n _this.initialTarget = target;\n _this.selectedCells = [target];\n _this.parent.addSelectedClass([target], target);\n });\n }\n };\n KeyboardInteraction.prototype.selectAppointment = function (isReverse, target) {\n var appointments = this.getAppointmentElements();\n if (appointments.length < 0) {\n return;\n }\n this.parent.eventBase.removeSelectedAppointmentClass();\n var nextAppEle;\n if (target.classList.contains(cls.APPOINTMENT_CLASS)) {\n var targetIndex = appointments.indexOf(target);\n nextAppEle = appointments[(isReverse ? targetIndex - 1 : targetIndex + 1)];\n }\n else {\n nextAppEle = isReverse ? appointments[appointments.length - 1] : appointments[0];\n }\n if (nextAppEle) {\n this.parent.eventBase.addSelectedAppointments([nextAppEle], true);\n nextAppEle.focus();\n addClass([nextAppEle], cls.AGENDA_SELECTED_CELL);\n }\n };\n KeyboardInteraction.prototype.selectAppointmentElementFromWorkCell = function (isReverse, target) {\n var _this = this;\n this.parent.eventBase.removeSelectedAppointmentClass();\n this.parent.removeSelectedClass();\n if (target.classList.contains(cls.WORK_CELLS_CLASS) || target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n var appointmentElements_1 = this.getUniqueAppointmentElements();\n var filteredElements_1 = [];\n var selectedDate_1 = this.parent.getDateFromElement(target).getTime();\n var selectedSeriesEvents = this.parent.eventsProcessed.filter(function (eventObject) {\n return (!isReverse ? (eventObject[_this.parent.eventFields.startTime].getTime() >= selectedDate_1) :\n (eventObject[_this.parent.eventFields.startTime].getTime() <= selectedDate_1));\n });\n selectedSeriesEvents.filter(function (event) {\n appointmentElements_1.filter(function (element) {\n if (JSON.stringify(event.Guid) === JSON.stringify(element.getAttribute('data-guid'))) {\n filteredElements_1.push(element);\n }\n });\n });\n if (filteredElements_1.length > 0) {\n var selectedElement = isReverse ? filteredElements_1[filteredElements_1.length - 1] : filteredElements_1[0];\n var focusElements = this.getAppointmentElementsByGuid(selectedElement.getAttribute('data-guid'));\n this.parent.eventBase.addSelectedAppointments(focusElements, true);\n (focusElements[focusElements.length - 1]).focus();\n }\n }\n };\n KeyboardInteraction.prototype.getAllDayCells = function (cells) {\n var allDayRow = this.parent.getAllDayRow();\n if (!allDayRow) {\n return [];\n }\n var startCell = cells[0];\n var endCell = cells[cells.length - 1];\n var start = this.parent.getCellDetails(startCell);\n var end = this.parent.getCellDetails(endCell);\n if (end.endTime.getTime() - start.startTime.getTime() >= util.MS_PER_DAY) {\n var allDayCells = [].slice.call(allDayRow.cells);\n return allDayCells.slice(startCell.cellIndex, endCell.cellIndex + 1);\n }\n return [];\n };\n KeyboardInteraction.prototype.getAppointmentElements = function () {\n return [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n };\n KeyboardInteraction.prototype.getAppointmentElementsByGuid = function (guid) {\n return [].slice.call(this.parent.element.querySelectorAll('div[data-guid=\"' + guid + '\"]'));\n };\n KeyboardInteraction.prototype.getUniqueAppointmentElements = function () {\n var appointments = this.getAppointmentElements();\n var appointmentElements = [];\n appointments.map(function (value) { return value.getAttribute('data-guid'); }).filter(function (value, index, self) {\n if (self.indexOf(value) === index) {\n appointmentElements.push(appointments[parseInt(index.toString(), 10)]);\n }\n });\n return appointmentElements;\n };\n KeyboardInteraction.prototype.getWorkCellFromAppointmentElement = function (target) {\n var selectedObject = this.parent.eventBase.getEventByGuid(target.getAttribute('data-guid'));\n return this.parent.eventBase.selectWorkCellByTime([selectedObject]);\n };\n KeyboardInteraction.prototype.processViewNavigation = function (e) {\n var index = parseInt(e.key, 10) - 1;\n if (index < this.parent.views.length) {\n var view = this.parent.viewCollections[parseInt(index.toString(), 10)].option;\n this.parent.changeView(view, e, undefined, index);\n if (this.parent.headerModule) {\n this.parent.headerModule.element.querySelector('.e-active-view button').focus();\n }\n }\n };\n KeyboardInteraction.prototype.cancelUpDownAction = function (isTimelineYear) {\n var isVerticalYear = isTimelineYear && this.parent.activeViewOptions.orientation === 'Vertical';\n var isGroup = this.parent.activeViewOptions.group.resources.length > 0;\n if (isVerticalYear && isGroup || isTimelineYear && this.initialTarget.classList.contains(cls.OTHERMONTH_CLASS)) {\n return true;\n }\n if (this.parent.activeView.isTimelineView() && !isTimelineYear || this.parent.currentView === 'MonthAgenda') {\n return true;\n }\n return false;\n };\n KeyboardInteraction.prototype.processUp = function (e, isMultiple) {\n var isTimelineYear = this.parent.currentView === 'TimelineYear';\n if (isMultiple && this.cancelUpDownAction(isTimelineYear)) {\n return;\n }\n var target = (e.target);\n var selectedElements = this.parent.getSelectedCells();\n var selectedEventElements = this.parent.eventBase.getSelectedAppointments();\n var moreEventWrapper = this.parent.element.querySelector('.' + cls.MORE_POPUP_WRAPPER_CLASS);\n var quickPopupWrapper = this.getQuickPopupElement();\n if (selectedElements.length > 0 && !e.target.classList.contains(cls.WORK_CELLS_CLASS)) {\n target = selectedElements[selectedElements.length - 1];\n }\n if (selectedEventElements.length > 0 && !moreEventWrapper.classList.contains(cls.POPUP_OPEN) &&\n !quickPopupWrapper.classList.contains(cls.POPUP_OPEN) &&\n ['Day', 'Week', 'WorkWeek', 'Month'].indexOf(this.parent.currentView) !== -1) {\n target = this.getWorkCellFromAppointmentElement(selectedEventElements[selectedEventElements.length - 1]);\n this.parent.eventBase.removeSelectedAppointmentClass();\n }\n if (!target) {\n return;\n }\n if (target.classList.contains(cls.WORK_CELLS_CLASS) && !this.parent.element.querySelector('.' + cls.POPUP_OPEN)) {\n var tableRows = this.parent.getTableRows();\n var curRowIndex = tableRows.indexOf(target.parentElement);\n var targetCell = void 0;\n if (isTimelineYear && isMultiple && this.parent.activeViewOptions.group.resources.length === 0) {\n targetCell = this.isInverseTableSelect() ? this.getVerticalUpDownCell(tableRows, target, curRowIndex, true) :\n this.getHorizontalUpDownCell(tableRows, target, curRowIndex, true);\n }\n if ((curRowIndex > 0 || targetCell) && curRowIndex < tableRows.length) {\n targetCell = targetCell ? targetCell : (tableRows[curRowIndex - 1]).cells[target.cellIndex];\n if (this.parent.currentView === 'Year' && targetCell.classList.contains(cls.OTHERMONTH_CLASS)) {\n if (this.parent.activeView.getStartDate().getTime() < +targetCell.getAttribute('data-date')) {\n targetCell = this.getYearUpDownCell(tableRows, curRowIndex - 1, target.cellIndex, true);\n }\n else {\n return;\n }\n }\n e.preventDefault();\n this.selectCells(isMultiple, targetCell);\n }\n }\n else if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {\n this.selectAppointment(true, target);\n }\n };\n KeyboardInteraction.prototype.processDown = function (e, isMultiple) {\n var isTimelineYear = this.parent.currentView === 'TimelineYear';\n if (isMultiple && this.cancelUpDownAction(isTimelineYear)) {\n return;\n }\n var target = (e.target);\n var selectedCells = this.parent.getSelectedCells();\n var selectedElements = this.parent.eventBase.getSelectedAppointments();\n var moreEventWrapper = this.parent.element.querySelector('.' + cls.MORE_POPUP_WRAPPER_CLASS);\n var quickPopupWrapper = this.getQuickPopupElement();\n if (selectedCells.length > 0 && !e.target.classList.contains(cls.WORK_CELLS_CLASS)) {\n target = selectedCells[selectedCells.length - 1];\n }\n if (selectedElements.length > 0 && !moreEventWrapper.classList.contains(cls.POPUP_OPEN) &&\n !quickPopupWrapper.classList.contains(cls.POPUP_OPEN) &&\n ['Day', 'Week', 'WorkWeek', 'Month'].indexOf(this.parent.currentView) !== -1) {\n target = this.getWorkCellFromAppointmentElement(selectedElements[selectedElements.length - 1]);\n this.parent.eventBase.removeSelectedAppointmentClass();\n }\n var tableRows = this.parent.getTableRows();\n if (!target) {\n return;\n }\n if (target.classList.contains(cls.WORK_CELLS_CLASS) && !this.parent.element.querySelector('.' + cls.POPUP_OPEN)) {\n var curRowIndex = tableRows.indexOf(target.parentElement);\n var targetCell = void 0;\n if (isTimelineYear && isMultiple && this.parent.activeViewOptions.group.resources.length === 0) {\n targetCell = this.isInverseTableSelect() ? this.getVerticalUpDownCell(tableRows, target, curRowIndex, false)\n : this.getHorizontalUpDownCell(tableRows, target, curRowIndex, false);\n }\n if (curRowIndex >= 0 && ((curRowIndex < tableRows.length - 1) || targetCell)) {\n targetCell = targetCell ? targetCell : (tableRows[curRowIndex + 1]).cells[target.cellIndex];\n if (this.parent.currentView === 'Year' && targetCell.classList.contains(cls.OTHERMONTH_CLASS)) {\n if (this.parent.activeView.getEndDate().getTime() > +targetCell.getAttribute('data-date')) {\n targetCell = this.getYearUpDownCell(tableRows, curRowIndex + 1, target.cellIndex, false);\n }\n else {\n return;\n }\n }\n e.preventDefault();\n this.selectCells(isMultiple, targetCell);\n }\n }\n else if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {\n this.selectAppointment(false, target);\n }\n };\n KeyboardInteraction.prototype.getYearUpDownCell = function (tableRows, rowIndex, cellIndex, isUp) {\n while (tableRows[parseInt(rowIndex.toString(), 10)] &&\n tableRows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)].classList.contains(cls.OTHERMONTH_CLASS)) {\n rowIndex = rowIndex + (isUp ? -1 : 1);\n }\n return tableRows[parseInt(rowIndex.toString(), 10)].cells[parseInt(cellIndex.toString(), 10)];\n };\n // eslint-disable-next-line max-len\n KeyboardInteraction.prototype.getHorizontalUpDownCell = function (tableRows, target, curRowIndex, isUp) {\n var row = tableRows[curRowIndex + (isUp ? -1 : 1)];\n var cell = row ? row.cells[target.cellIndex] : target;\n if (cell.classList.contains(cls.OTHERMONTH_CLASS)) {\n var workCell = row.querySelector('.' + cls.WORK_CELLS_CLASS + ':not(.' + cls.OTHERMONTH_CLASS + ')');\n var date = new Date(+workCell.getAttribute('data-date'));\n var query = '[data-date=\"' + new Date(date.getFullYear(), date.getMonth() + 1, 0).getTime() + '\"]';\n cell = cell.cellIndex < workCell.cellIndex ? workCell : row.querySelector(query);\n }\n return cell;\n };\n // eslint-disable-next-line max-len\n KeyboardInteraction.prototype.getVerticalUpDownCell = function (tableRows, target, curRowIndex, isUp) {\n var hasRow = isUp && curRowIndex > 0 || !isUp && curRowIndex < tableRows.length - 1;\n var targetCell = hasRow ? tableRows[curRowIndex + (isUp ? -1 : 1)].cells[target.cellIndex] : undefined;\n if (!targetCell || targetCell.classList.contains(cls.OTHERMONTH_CLASS)) {\n var column = tableRows[parseInt(curRowIndex.toString(), 10)].cells[target.cellIndex - (isUp ? 1 : -1)];\n if (column) {\n var dateAttr = +target.getAttribute('data-date') - (isUp ? util.MS_PER_DAY : -util.MS_PER_DAY);\n return this.parent.getContentTable().querySelector('.' + cls.WORK_CELLS_CLASS + '[data-date=\"' + dateAttr + '\"]');\n }\n targetCell = target;\n }\n return targetCell;\n };\n KeyboardInteraction.prototype.processLeftRight = function (target) {\n var tableEle = (this.parent.currentView === 'Year' ? target.closest('tbody') : this.parent.getContentTable());\n var curRowIndex = target.parentNode.sectionRowIndex;\n var key = {\n element: tableEle,\n rowIndex: curRowIndex,\n columnIndex: target.cellIndex,\n maxIndex: tableEle.rows[parseInt(curRowIndex.toString(), 10)].cells.length\n };\n return key;\n };\n KeyboardInteraction.prototype.getQuickPopupElement = function () {\n return (this.parent.isAdaptive ? document.body : this.parent.element).querySelector('.' + cls.POPUP_WRAPPER_CLASS);\n };\n KeyboardInteraction.prototype.isCancelLeftRightAction = function (e, isMultiple, isTimelineYear) {\n var prevent = this.parent.currentView === 'MonthAgenda' || isTimelineYear && this.initialTarget.classList.contains(cls.OTHERMONTH_CLASS);\n if (this.parent.currentView === 'Agenda' || (isMultiple && prevent)) {\n return true;\n }\n if (this.isPreventAction(e) && isMultiple) {\n return true;\n }\n var moreEventWrapper = this.parent.element.querySelector('.' + cls.MORE_POPUP_WRAPPER_CLASS);\n var quickPopupWrapper = this.getQuickPopupElement();\n if (moreEventWrapper.classList.contains(cls.POPUP_OPEN) || quickPopupWrapper.classList.contains(cls.POPUP_OPEN)) {\n return true;\n }\n return false;\n };\n KeyboardInteraction.prototype.processRight = function (e, isMultiple) {\n var isTimelineYear = this.parent.currentView === 'TimelineYear';\n if (this.isCancelLeftRightAction(e, isMultiple, isTimelineYear)) {\n return;\n }\n var selectedCells = this.parent.getSelectedCells();\n var targetCell;\n var selectedAppointments = this.parent.eventBase.getSelectedAppointments();\n var target = (e.target);\n if (selectedCells.length > 0 && !target.classList.contains(cls.WORK_CELLS_CLASS) &&\n !target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n target = selectedCells[selectedCells.length - 1];\n }\n if (selectedAppointments.length > 0) {\n target = this.getWorkCellFromAppointmentElement(selectedAppointments[selectedAppointments.length - 1]);\n this.parent.eventBase.removeSelectedAppointmentClass();\n if (!target) {\n return;\n }\n }\n if (target.classList.contains(cls.WORK_CELLS_CLASS) &&\n (e.target).classList.contains(cls.WORK_CELLS_CLASS)) {\n var key = this.processLeftRight(target);\n var targetDate = new Date(+target.getAttribute('data-date'));\n var isMonthEnd = this.parent.currentView === 'Year' && targetDate.getTime() === util.lastDateOfMonth(targetDate).getTime();\n if (key.columnIndex >= 0 && key.columnIndex < key.maxIndex - 1 && !isMonthEnd) {\n targetCell = this.calculateNextPrevDate(target, key.element.rows[key.rowIndex].cells[target.cellIndex + 1], 'right');\n if (isTimelineYear && isMultiple && targetCell.classList.contains(cls.OTHERMONTH_CLASS)) {\n targetCell = this.getTimelineYearTargetCell(key, target, true);\n }\n if (!isNullOrUndefined(targetCell)) {\n this.selectCells(isMultiple, targetCell);\n }\n }\n else if (key.columnIndex === key.maxIndex - 1 || isMonthEnd) {\n if (!this.isInverseTableSelect() && key.rowIndex < key.element.rows.length - 1 && !isMonthEnd) {\n targetCell = this.calculateNextPrevDate(target, key.element.rows[key.rowIndex + 1].cells[0], 'right');\n var changeTargetCell = isTimelineYear && isMultiple && targetCell.classList.contains(cls.OTHERMONTH_CLASS);\n targetCell = changeTargetCell ? this.getHorizontalLeftRightCell(key, target, true) : targetCell;\n if (!isNullOrUndefined(targetCell)) {\n this.selectCells(isMultiple, targetCell);\n }\n }\n else if (!isMultiple) {\n if (isMonthEnd && targetDate.getTime() !== this.parent.activeView.getEndDate().getTime()) {\n this.selectCells(isMultiple, this.parent.element.querySelector(':not(.' + cls.OTHERMONTH_CLASS + ')[data-date=\"' + (targetDate.getTime() + util.MS_PER_DAY) + '\"]'));\n return;\n }\n var rowIndex = this.isInverseTableSelect() ? key.rowIndex : 0;\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('next'), e);\n var tableEle = this.parent.getContentTable();\n var cell = isMonthEnd ? tableEle.rows[parseInt(rowIndex.toString(), 10)].querySelector('.' + cls.WORK_CELLS_CLASS + ':not(.' + cls.OTHERMONTH_CLASS + ')')\n : tableEle.rows[parseInt(rowIndex.toString(), 10)].cells[0];\n this.selectCells(false, cell);\n }\n }\n }\n else if (target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n var curColIndex = target.cellIndex;\n var allDayRow = this.parent.getAllDayRow();\n var maxColIndex = allDayRow.cells.length;\n if (curColIndex >= 0 && curColIndex < maxColIndex - 1) {\n this.selectCells(isMultiple, allDayRow.cells[curColIndex + 1]);\n }\n else if (curColIndex === maxColIndex - 1 && !isMultiple) {\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('next'), e);\n var allDayRow_1 = this.parent.getAllDayRow();\n this.selectCells(false, allDayRow_1.cells[0]);\n }\n }\n };\n KeyboardInteraction.prototype.processLeft = function (e, isMultiple) {\n var isTimelineYear = this.parent.currentView === 'TimelineYear';\n if (this.isCancelLeftRightAction(e, isMultiple, isTimelineYear)) {\n return;\n }\n var target = (e.target);\n var selectedCells = this.parent.getSelectedCells();\n var targetCell;\n if (selectedCells.length > 0 && !target.classList.contains(cls.WORK_CELLS_CLASS) &&\n !target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n target = selectedCells[selectedCells.length - 1];\n }\n var selectedElements = this.parent.eventBase.getSelectedAppointments();\n if (selectedElements.length > 0) {\n target = this.getWorkCellFromAppointmentElement(selectedElements[selectedElements.length - 1]);\n this.parent.eventBase.removeSelectedAppointmentClass();\n if (!target) {\n return;\n }\n }\n if ((e.target).classList.contains(cls.WORK_CELLS_CLASS) &&\n target.classList.contains(cls.WORK_CELLS_CLASS)) {\n var key = this.processLeftRight(target);\n var targetDate = new Date(+target.getAttribute('data-date'));\n var isMonthStart = this.parent.currentView === 'Year' && targetDate.getTime() === util.firstDateOfMonth(targetDate).getTime();\n if (key.columnIndex > 0 && key.columnIndex < key.maxIndex && !isMonthStart) {\n targetCell = this.calculateNextPrevDate(target, key.element.rows[key.rowIndex].cells[target.cellIndex - 1], 'left');\n if (isTimelineYear && isMultiple && targetCell.classList.contains(cls.OTHERMONTH_CLASS)) {\n targetCell = this.getTimelineYearTargetCell(key, target, false);\n }\n if (!isNullOrUndefined(targetCell)) {\n this.selectCells(isMultiple, targetCell);\n }\n }\n else if (key.columnIndex === 0 || isMonthStart) {\n if (!this.isInverseTableSelect() && key.rowIndex > 0) {\n targetCell = this.calculateNextPrevDate(target, key.element.rows[key.rowIndex - 1].cells[key.maxIndex - 1], 'left');\n var otherMonthCell = isTimelineYear && isMultiple && targetCell.classList.contains(cls.OTHERMONTH_CLASS);\n targetCell = otherMonthCell ? this.getHorizontalLeftRightCell(key, target, false) : targetCell;\n if (!isNullOrUndefined(targetCell)) {\n this.selectCells(isMultiple, targetCell);\n }\n }\n else if (!isMultiple) {\n if (isMonthStart && targetDate.getTime() !== this.parent.activeView.getStartDate().getTime()) {\n this.selectCells(isMultiple, this.parent.element.querySelector('[data-date=\"' + (targetDate.getTime() - util.MS_PER_DAY) + '\"]'));\n return;\n }\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('previous'), e);\n var tableEle = this.parent.getContentTable();\n var rowIndex = this.isInverseTableSelect() ? key.rowIndex : tableEle.rows.length - 1;\n var cell = tableEle.rows[parseInt(rowIndex.toString(), 10)].cells[key.maxIndex - 1];\n if (isMonthStart) {\n var tbody = this.parent.element.querySelectorAll('.' + cls.CONTENT_TABLE_CLASS + ' tbody');\n cell = tbody.item(tbody.length - 1).querySelector(':not(.' + cls.OTHERMONTH_CLASS + ')[data-date=\"' + this.parent.activeView.getEndDate().getTime() + '\"]');\n }\n this.selectCells(false, cell);\n }\n }\n }\n else if (target.classList.contains(cls.ALLDAY_CELLS_CLASS)) {\n var curColIndex = target.cellIndex;\n var allDayRow = this.parent.getAllDayRow();\n var maxColIndex = allDayRow.cells.length;\n if (curColIndex > 0 && curColIndex < maxColIndex) {\n this.selectCells(isMultiple, allDayRow.cells[curColIndex - 1]);\n }\n else if (curColIndex === 0 && !isMultiple) {\n this.parent.changeDate(this.parent.activeView.getNextPreviousDate('previous'), e);\n var allDayRow_2 = this.parent.getAllDayRow();\n this.selectCells(false, allDayRow_2.cells[maxColIndex - 1]);\n }\n }\n };\n KeyboardInteraction.prototype.getTimelineYearTargetCell = function (key, target, isRight) {\n return this.isInverseTableSelect() ? this.getVerticalLeftRightCell(target, isRight) :\n this.getHorizontalLeftRightCell(key, target, isRight);\n };\n KeyboardInteraction.prototype.getHorizontalLeftRightCell = function (key, target, isRight) {\n var row = key.element.rows[target.parentNode.sectionRowIndex + (isRight ? 1 : -1)];\n if (row) {\n var query = isRight ? '.' + cls.WORK_CELLS_CLASS + ':not(.' + cls.OTHERMONTH_CLASS + ')'\n : '[data-date=\"' + ((+target.getAttribute('data-date')) - util.MS_PER_DAY) + '\"]';\n return row.querySelector(query);\n }\n return target;\n };\n KeyboardInteraction.prototype.getVerticalLeftRightCell = function (target, isRight) {\n var date = new Date(+target.getAttribute('data-date'));\n var start = new Date(date.getFullYear(), date.getMonth() + (isRight ? 1 : -1), 1);\n var tableEle = this.parent.getContentTable();\n var targetCell = tableEle.querySelector('[data-date=\"' + start.getTime() + '\"]');\n if (targetCell.parentNode.sectionRowIndex > target.parentNode.sectionRowIndex) {\n return targetCell;\n }\n return tableEle.querySelector('[data-date=\"' + new Date(start.getFullYear(), start.getMonth() + 1, 0).getTime() + '\"]');\n };\n KeyboardInteraction.prototype.calculateNextPrevDate = function (currentCell, target, type) {\n var initialId = this.initialTarget.getAttribute('data-group-index');\n if (this.parent.activeViewOptions.group.resources.length > 0 && this.parent.currentView === 'Month') {\n if (currentCell && target && target.getAttribute('data-group-index') !== initialId) {\n var currentDate = this.parent.getDateFromElement(currentCell);\n var nextPrevDate = (type === 'right') ? new Date(currentDate.setDate(currentDate.getDate() + 1))\n : new Date(currentDate.setDate(currentDate.getDate() - 1));\n target = [].slice.call(this.parent.element.querySelectorAll('td[data-date=\"'\n + nextPrevDate.getTime().toString() + '\"]' + '[data-group-index=\"' + initialId + '\"]'))[0];\n }\n }\n return target;\n };\n KeyboardInteraction.prototype.getFocusableElements = function (container) {\n var queryString = 'a[href]:not([tabindex=\"-1\"]),input:not([disabled]):not([tabindex=\"-1\"]),' +\n 'textarea:not([disabled]):not([tabindex=\"-1\"]),button:not([disabled]):not([tabindex=\"-1\"]),' +\n 'select:not([disabled]):not([tabindex=\"-1\"]),[tabindex]:not([tabindex=\"-1\"]),[contentEditable=true]:not([tabindex=\"-1\"])';\n return [].slice.call(container.querySelectorAll(queryString));\n };\n KeyboardInteraction.prototype.processTabOnPopup = function (e, popupElement) {\n var _this = this;\n var focusableElements = this.getFocusableElements(popupElement);\n focusableElements = focusableElements.filter(function (element) {\n var footerEle = _this.parent.element.querySelector('.' + cls.POPUP_FOOTER_CLASS);\n if (footerEle && footerEle.offsetParent) {\n return !(element.classList.contains(cls.EDIT_CLASS) || element.classList.contains(cls.DELETE_CLASS));\n }\n else {\n return !(element.classList.contains(cls.EDIT_EVENT_CLASS) || element.classList.contains(cls.DELETE_EVENT_CLASS));\n }\n });\n var firstEle = focusableElements[0];\n var lastEle = focusableElements[focusableElements.length - 1];\n if (!isNullOrUndefined(lastEle) && document.activeElement === lastEle && !e.shiftKey) {\n e.preventDefault();\n firstEle.focus();\n }\n if (!isNullOrUndefined(firstEle) && document.activeElement === firstEle && e.shiftKey) {\n e.preventDefault();\n lastEle.focus();\n }\n };\n KeyboardInteraction.prototype.processTab = function (e, isReverse) {\n var target = e.target;\n if (target.classList.contains(cls.INLINE_SUBJECT_CLASS) && this.parent.inlineModule) {\n target = target.closest('.e-appointment');\n this.parent.inlineModule.inlineCrudActions(e.target);\n }\n if (this.parent.currentView === 'TimelineYear' && target.classList.contains(cls.OTHERMONTH_CLASS)) {\n if (target.classList.contains(cls.SELECTED_CELL_CLASS)) {\n this.parent.removeSelectedClass();\n }\n return;\n }\n var popupWrapper = closest(target, '.' + cls.POPUP_WRAPPER_CLASS + ',.' + cls.MORE_POPUP_WRAPPER_CLASS);\n if (popupWrapper && popupWrapper.classList.contains(cls.POPUP_OPEN)) {\n if (popupWrapper.classList.contains(cls.MORE_POPUP_WRAPPER_CLASS)) {\n this.parent.eventBase.removeSelectedAppointmentClass();\n }\n this.processTabOnPopup(e, popupWrapper);\n return;\n }\n if (target.classList.contains(cls.ROOT)) {\n this.parent.eventBase.removeSelectedAppointmentClass();\n return;\n }\n if (target.classList.contains(cls.RESOURCE_CELLS_CLASS) && this.parent.activeView.isTimelineView()\n && this.parent.activeViewOptions.group.resources.length > 0) {\n var index = parseInt(target.getAttribute('data-group-index'), 10);\n var appSelector = \".\" + cls.APPOINTMENT_CLASS + \"[data-group-index=\\\"\" + (isReverse ? index - 1 : index) + \"\\\"]\";\n var appElements = [].slice.call(this.parent.element.querySelectorAll(appSelector));\n if (appElements.length > 0) {\n this.parent.eventBase.removeSelectedAppointmentClass();\n var focusAppointment = isReverse ? appElements.slice(-1)[0] : appElements[0];\n this.parent.eventBase.addSelectedAppointments([focusAppointment], true);\n focusAppointment.focus();\n e.preventDefault();\n }\n else if (index + 1 === this.parent.resourceBase.lastResourceLevel.length) {\n this.parent.element.focus();\n e.preventDefault();\n }\n else if (this.parent.virtualScrollModule) {\n var virtual = this.parent.element.querySelector('.' + cls.VIRTUAL_TRACK_CLASS);\n var averageRowHeight = Math.round(virtual.offsetHeight / this.parent.resourceBase.expandedResources.length);\n this.parent.element.querySelector('.e-content-wrap').scrollTop = ((isReverse ? index - 1 : index + 1) * averageRowHeight);\n this.parent.virtualScrollModule.virtualScrolling();\n }\n else {\n this.setScrollPosition(index);\n }\n return;\n }\n if (target.classList.contains(cls.APPOINTMENT_CLASS)) {\n var appElements = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS));\n var isTimelineYear = this.parent.currentView === 'TimelineYear';\n var isTimeline = this.parent.activeView.isTimelineView() && !isTimelineYear;\n if ((isTimeline || isTimelineYear && this.parent.activeViewOptions.orientation === 'Vertical') && this.parent.activeViewOptions.group.resources.length > 0) {\n var index = parseInt(target.getAttribute('data-group-index'), 10);\n appElements = [].slice.call(this.parent.element.querySelectorAll(\".\" + cls.APPOINTMENT_CLASS + \"[data-group-index=\\\"\" + index + \"\\\"]\"));\n var resCellSelector = \".\" + cls.RESOURCE_CELLS_CLASS + \"[data-group-index=\\\"\" + (isReverse ? index : index + 1) + \"\\\"]\";\n var resourceCell = this.parent.element.querySelector(resCellSelector);\n if (resourceCell && (isReverse && target.getAttribute('data-guid') === appElements[0].getAttribute('data-guid') ||\n !isReverse && target.getAttribute('data-guid') === appElements.slice(-1)[0].getAttribute('data-guid'))) {\n this.parent.eventBase.removeSelectedAppointmentClass();\n if (this.parent.virtualScrollModule) {\n resourceCell.focus({ preventScroll: true });\n }\n else {\n resourceCell.focus();\n }\n if (this.parent.activeView.isTimelineView() && this.parent.activeViewOptions.group.resources.length > 0 &&\n isNullOrUndefined(this.parent.virtualScrollModule)) {\n this.setScrollPosition(index);\n }\n e.preventDefault();\n return;\n }\n }\n var selectedAppointments = this.parent.eventBase.getSelectedAppointments();\n if (selectedAppointments.length > 0) {\n target = selectedAppointments[selectedAppointments.length - 1];\n }\n this.parent.eventBase.removeSelectedAppointmentClass();\n if (!isReverse && target.getAttribute('data-guid') === appElements[appElements.length - 1].getAttribute('data-guid') ||\n isReverse && target.getAttribute('data-guid') === appElements[0].getAttribute('data-guid')) {\n return;\n }\n if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {\n this.selectAppointment(isReverse, target);\n e.preventDefault();\n }\n return;\n }\n var selectedCells = this.parent.getSelectedCells();\n if (selectedCells.length > 0 && !target.classList.contains(cls.APPOINTMENT_CLASS)) {\n target = selectedCells[selectedCells.length - 1];\n this.selectAppointmentElementFromWorkCell(isReverse, target);\n e.preventDefault();\n return;\n }\n if (target && !target.classList.contains(cls.RESOURCE_CELLS_CLASS) && this.parent.activeView.isTimelineView()\n && this.parent.activeViewOptions.group.resources.length > 0) {\n this.processTabOnResourceCells(target, isReverse);\n }\n };\n KeyboardInteraction.prototype.processDelete = function (e) {\n var activeEle = document.activeElement;\n if (this.parent.currentView === 'MonthAgenda') {\n var selectedEle = this.parent.eventBase.getSelectedEvents().element;\n activeEle = ((selectedEle && isNullOrUndefined(selectedEle.length)) ? selectedEle : selectedEle[0]);\n }\n if (activeEle && activeEle.classList.contains(cls.APPOINTMENT_CLASS)) {\n addClass([activeEle], cls.APPOINTMENT_BORDER);\n this.parent.activeEventData = this.parent.eventBase.getSelectedEvents();\n if (this.parent.activeViewOptions.readonly || activeEle.classList.contains(cls.READ_ONLY) ||\n !this.parent.eventSettings.allowDeleting) {\n return;\n }\n this.parent.quickPopup.deleteClick(e);\n }\n };\n KeyboardInteraction.prototype.processCtrlShiftNavigationArrows = function (e) {\n if (this.parent.activeViewOptions.group.resources.length > 0 && document.activeElement.classList.contains(cls.APPOINTMENT_CLASS)) {\n var groupIndex = parseInt(document.activeElement.getAttribute('data-group-index'), 10);\n var index = (e.action === 'ctrlShiftLeftArrow' || e.action === 'ctrlShiftUpArrow') ? groupIndex - 1 : groupIndex + 1;\n index = index < 0 ? 0 : index > this.parent.resourceBase.lastResourceLevel.length ?\n this.parent.resourceBase.lastResourceLevel.length : index;\n var eventEle = [];\n while (eventEle.length === 0 && index >= 0 && index <= this.parent.resourceBase.lastResourceLevel.length) {\n eventEle = [].slice.call(this.parent.element.querySelectorAll(\".\" + cls.APPOINTMENT_CLASS + \"[data-group-index=\\\"\" + index + \"\\\"]\"));\n index = (e.action === 'ctrlShiftLeftArrow' || e.action === 'ctrlShiftUpArrow') ? index - 1 : index + 1;\n }\n var nextAppEle = eventEle[0];\n if (nextAppEle) {\n this.parent.eventBase.removeSelectedAppointmentClass();\n this.parent.eventBase.addSelectedAppointments([nextAppEle], true);\n nextAppEle.focus();\n }\n }\n else if (this.parent.activeViewOptions.group.resources.length > 0 &&\n !document.activeElement.classList.contains(cls.APPOINTMENT_CLASS)) {\n var index = this.parent.resourceBase.renderedResources[0].groupIndex;\n var appSelector = \".\" + cls.APPOINTMENT_CLASS + \"[data-group-index=\\\"\" + index + \"\\\"]\";\n var appElements = [].slice.call(this.parent.element.querySelectorAll(appSelector));\n if (appElements.length > 0) {\n this.parent.eventBase.removeSelectedAppointmentClass();\n var focusAppointment = appElements[0];\n this.parent.eventBase.addSelectedAppointments([focusAppointment], true);\n focusAppointment.focus();\n e.preventDefault();\n }\n }\n };\n KeyboardInteraction.prototype.processEscape = function (event) {\n this.parent.quickPopup.onClosePopup(event);\n this.parent.quickPopup.morePopup.hide();\n if (this.parent.headerModule) {\n this.parent.headerModule.hideHeaderPopup();\n }\n if (this.parent.inlineModule) {\n this.parent.inlineModule.removeInlineAppointmentElement();\n }\n };\n KeyboardInteraction.prototype.isPreventAction = function (e) {\n var target = closest(e.target, '.' + cls.RESOURCE_GROUP_CELLS_CLASS);\n if (this.parent.activeView.isTimelineView() && !isNullOrUndefined(target)) {\n return true;\n }\n return false;\n };\n KeyboardInteraction.prototype.processTabOnResourceCells = function (target, isReverse) {\n var tabElements = [].slice.call(this.parent.element.querySelectorAll('[tabIndex=\"0\"]'));\n var currentTabIndex = tabElements.indexOf(target);\n var nextTabElement = !isReverse ? tabElements[currentTabIndex + 1] : tabElements[currentTabIndex - 1];\n if (nextTabElement && nextTabElement.classList.contains(cls.RESOURCE_CELLS_CLASS)) {\n var groupIndex = parseInt(nextTabElement.getAttribute('data-group-index'), 10);\n if (this.parent.virtualScrollModule) {\n var resColWrap_1 = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);\n var resCells = [].slice.call(this.parent.element.querySelectorAll('.' + cls.RESOURCE_CELLS_CLASS));\n resCells.forEach(function (element) {\n if (element.getBoundingClientRect().top < resColWrap_1.getBoundingClientRect().top) {\n element.setAttribute('tabindex', '-1');\n }\n });\n }\n else {\n this.setScrollPosition(groupIndex);\n }\n }\n };\n KeyboardInteraction.prototype.setScrollPosition = function (index) {\n var workCell = this.parent.element.querySelector(\".\" + cls.WORK_CELLS_CLASS + \"[data-group-index=\\\"\" + index + \"\\\"]\");\n if (workCell) {\n this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS).scrollTop = workCell.offsetTop;\n }\n };\n /**\n * Get module name.\n *\n * @returns {string} Returns the module name.\n */\n KeyboardInteraction.prototype.getModuleName = function () {\n return 'keyboard';\n };\n /**\n * To destroy the keyboard module.\n *\n * @returns {void}\n * @private\n */\n KeyboardInteraction.prototype.destroy = function () {\n this.removeEventListener();\n this.selectedCells = [];\n this.keyboardModule.destroy();\n };\n return KeyboardInteraction;\n}());\nexport { KeyboardInteraction };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Query, DataManager, Predicate } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined } from '@syncfusion/ej2-base';\n/**\n * data module is used to generate query and data source.\n *\n * @private\n */\nvar Data = /** @class */ (function () {\n /**\n * Constructor for data module\n *\n * @param {Schedule} parent Accepts the schedule element instance\n * @param {Object | DataManager} dataSource Accepts the datasource as JSON objects or DataManager\n * @param {Query} query Accepts the query to process the data\n * @private\n */\n function Data(parent, dataSource, query) {\n this.parent = parent;\n this.initDataManager(dataSource, query);\n }\n /**\n * The function used to initialize dataManager and query\n *\n * @param {Object | DataManager} dataSource Accepts the datasource as JSON objects or DataManager\n * @param {Query} query Accepts the query to process the data\n * @returns {void}\n * @private\n */\n Data.prototype.initDataManager = function (dataSource, query) {\n this.dataManager = dataSource instanceof DataManager ? dataSource : new DataManager(dataSource);\n this.query = query instanceof Query ? query : new Query();\n };\n /**\n * The function used to generate updated Query from schedule model\n *\n * @param {Date} startDate Accepts the start date\n * @param {Date} endDate Accepts the end date\n * @returns {void}\n * @private\n */\n Data.prototype.generateQuery = function (startDate, endDate) {\n var query = this.query.clone();\n if (this.parent && startDate && endDate) {\n if (this.parent.activeViewOptions && this.parent.activeViewOptions.enableLazyLoading &&\n !isNullOrUndefined(this.parent.activeViewOptions.group.resources) &&\n this.parent.activeViewOptions.group.resources.length > 0 && this.parent.resourceBase &&\n this.parent.resourceBase.resourceCollection.length > 0 && this.parent.resourceBase.renderedResources.length > 0) {\n var resIdCollection_1 = [];\n this.parent.resourceBase.resourceCollection.forEach(function () { return resIdCollection_1.push([]); });\n this.parent.resourceBase.renderedResources.forEach(function (resource) {\n resIdCollection_1.forEach(function (resId, index) {\n var groupId = resource.groupOrder[parseInt(index.toString(), 10)];\n if (groupId && resId.indexOf(groupId) < 0) {\n resId.push(groupId);\n }\n });\n });\n this.parent.resourceBase.resourceCollection.forEach(function (resource, index) {\n query.addParams(resource.field, resIdCollection_1[parseInt(index.toString(), 10)].toString());\n });\n }\n if (this.parent.timezone) {\n startDate = this.parent.tzModule.remove(new Date(+startDate.getTime()), this.parent.timezone);\n endDate = this.parent.tzModule.remove(new Date(+endDate.getTime()), this.parent.timezone);\n }\n if (this.parent.eventSettings.includeFiltersInQuery) {\n var dateQuery = this.getStartEndQuery(startDate, endDate);\n var recurrenceQuery = new Predicate(this.parent.eventFields.recurrenceRule, 'notequal', null).and(new Predicate(this.parent.eventFields.recurrenceRule, 'notequal', ''));\n return query.where(dateQuery.or(recurrenceQuery));\n }\n query.addParams('StartDate', startDate.toISOString());\n query.addParams('EndDate', endDate.toISOString());\n }\n return query;\n };\n /**\n * The function used to generate updated Query from schedule model\n *\n * @param {Date} startDate Accepts the start date\n * @param {Date} endDate Accepts the end date\n * @returns {void}\n * @private\n */\n Data.prototype.getStartEndQuery = function (startDate, endDate) {\n var fieldMapping = this.parent.eventFields;\n var dateQuery = new Predicate(fieldMapping.startTime, 'greaterthanorequal', startDate)\n .and(new Predicate(fieldMapping.endTime, 'greaterthanorequal', startDate))\n .and(new Predicate(fieldMapping.startTime, 'lessthan', endDate))\n .or(new Predicate(fieldMapping.startTime, 'lessthanorequal', startDate)\n .and(new Predicate(fieldMapping.endTime, 'greaterthan', startDate)));\n return dateQuery;\n };\n /**\n * The function used to get dataSource by executing given Query\n *\n * @param {Query} query - A Query that specifies to generate dataSource\n * @returns {void}\n * @private\n */\n Data.prototype.getData = function (query) {\n return this.dataManager.executeQuery(query);\n };\n /**\n * To destroy the crud module.\n *\n * @returns {void}\n * @private\n */\n Data.prototype.destroy = function () {\n this.dataManager = null;\n this.query = null;\n };\n return Data;\n}());\nexport { Data };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { addClass, createElement, closest, remove, removeClass, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { VerticalEvent } from '../event-renderer/vertical-view';\nimport { MonthEvent } from '../event-renderer/month';\nimport { TimelineEvent } from '../event-renderer/timeline-view';\nimport * as cls from '../base/css-constant';\nimport * as events from '../base/constant';\nimport * as util from '../base/util';\n/**\n * Inline Edit interactions\n */\nvar InlineEdit = /** @class */ (function () {\n function InlineEdit(parent) {\n this.parent = parent;\n this.parent.on(events.inlineClick, this.inlineEdit, this);\n }\n InlineEdit.prototype.inlineEdit = function (args) {\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide();\n }\n if (args.type === 'Cell') {\n var moreWrapper = this.parent.element.querySelector('.' + cls.MORE_POPUP_WRAPPER_CLASS);\n if (moreWrapper && moreWrapper.classList.contains(cls.POPUP_OPEN)) {\n this.parent.quickPopup.morePopup.hide();\n }\n this.removeInlineAppointmentElement();\n this.cellEdit(args);\n }\n else {\n if (this.parent.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS) !==\n args.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS)) {\n this.removeInlineAppointmentElement();\n }\n this.eventEdit(args);\n }\n };\n InlineEdit.prototype.cellEdit = function (args) {\n var saveObj = this.generateEventData();\n var cellIndex = args.element.cellIndex;\n var count = this.getEventDaysCount(saveObj);\n if (count > 1) {\n count = Math.round(count);\n count--;\n cellIndex = cellIndex - count;\n }\n var start = util.resetTime(new Date('' + saveObj[this.parent.eventFields.startTime])).getTime();\n var end = util.resetTime(new Date('' + saveObj[this.parent.eventFields.endTime])).getTime();\n var resIndex = args.groupIndex || 0;\n var isVertical = this.parent.currentView === 'Day' || this.parent.currentView === 'Week' || this.parent.currentView === 'WorkWeek';\n if (this.parent.activeViewOptions.timeScale.enable && isVertical) {\n var dayIndex = saveObj[this.parent.eventFields.startTime].getDay();\n this.createVerticalViewInline(saveObj, dayIndex, resIndex, cellIndex);\n }\n else if (this.parent.currentView === 'Month' || (!this.parent.activeViewOptions.timeScale.enable && isVertical)) {\n this.createMonthViewInline(saveObj, resIndex, start, end);\n }\n else {\n this.createTimelineViewInline(saveObj, start, end, resIndex);\n }\n var inlineSubject = this.parent.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS);\n if (inlineSubject) {\n inlineSubject.focus();\n }\n };\n InlineEdit.prototype.eventEdit = function (args) {\n var inlineSubject = args.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS);\n var subject;\n if (inlineSubject) {\n subject = inlineSubject.value;\n }\n else {\n var subEle = args.element.querySelector('.' + cls.SUBJECT_CLASS);\n if (!isNullOrUndefined(subEle)) {\n addClass([subEle], cls.DISABLE_CLASS);\n subject = subEle.innerText;\n }\n else {\n subject = args.data[this.parent.eventFields.subject];\n }\n inlineSubject = createElement('input', { className: cls.INLINE_SUBJECT_CLASS, attrs: { value: subject } });\n if (closest(args.element, '.' + cls.MORE_POPUP_WRAPPER_CLASS)) {\n args.element.insertBefore(inlineSubject, subEle);\n }\n else if (['Agenda', 'MonthAgenda'].indexOf(this.parent.currentView) > -1) {\n var subjectWrap = args.element.querySelector('.' + cls.SUBJECT_WRAP);\n if (isNullOrUndefined(subjectWrap)) {\n subjectWrap = createElement('div', { className: cls.SUBJECT_WRAP });\n args.element.prepend(subjectWrap);\n }\n subjectWrap.insertBefore(inlineSubject, subjectWrap.firstChild);\n }\n else {\n args.element.querySelector('.e-appointment-details').prepend(inlineSubject);\n }\n inlineSubject.focus();\n }\n inlineSubject.setSelectionRange(subject.length, subject.length);\n };\n InlineEdit.prototype.createVerticalViewInline = function (saveObj, dayIndex, resIndex, daysCount) {\n var _a;\n var count = this.getEventDaysCount(saveObj);\n var verticalEvent = new VerticalEvent(this.parent);\n verticalEvent.initializeValues();\n var index = verticalEvent.dateRender[parseInt(resIndex.toString(), 10)].map(function (date) { return date.getDay(); }).indexOf(dayIndex);\n if (count >= 1) {\n verticalEvent.allDayElement = [].slice.call(this.parent.element.querySelectorAll('.' + cls.ALLDAY_CELLS_CLASS));\n (_a = verticalEvent.slots).push.apply(_a, this.parent.activeView.renderDates.map(function (date) { return +date; }));\n var allDayElements = [].slice.call(this.parent.element.querySelectorAll('.' + cls.ALLDAY_APPOINTMENT_CLASS));\n var allDayLevel = 0;\n if (allDayElements.length > 0) {\n allDayLevel = Math.floor(this.parent.element.querySelector('.' + cls.ALLDAY_ROW_CLASS).getBoundingClientRect().height /\n allDayElements[0].offsetHeight) - 1;\n }\n verticalEvent.allDayLevel = allDayLevel;\n var appHeight = util.getElementHeightFromClass(this.parent.element.querySelector('.' + cls.ALLDAY_APPOINTMENT_WRAPPER_CLASS), cls.APPOINTMENT_CLASS);\n var cellTop = verticalEvent.allDayElement.length > 0 ? verticalEvent.allDayElement[0].offsetTop : 0;\n verticalEvent.renderAllDayEvents(saveObj, index, resIndex, daysCount, this.parent.allowInline, cellTop, appHeight);\n }\n else {\n verticalEvent.renderNormalEvents(saveObj, index, resIndex, daysCount, this.parent.allowInline);\n }\n };\n InlineEdit.prototype.createMonthViewInline = function (saveObj, index, start, end) {\n var count = this.getEventDaysCount(saveObj);\n var saveObject = this.parent.eventBase.cloneEventObject(saveObj, start, end, count, false, false);\n var monthEvent = new MonthEvent(this.parent);\n monthEvent.dateRender = this.parent.activeView.renderDates;\n monthEvent.inlineValue = this.parent.allowInline;\n var renderDates = this.parent.activeView.renderDates;\n var workDays = this.parent.activeViewOptions.workDays;\n var monthCellSelector = '.' + cls.WORK_CELLS_CLASS;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n monthCellSelector += '[data-group-index=\"' + index + '\"]';\n var resourceData = this.parent.resourceBase.lastResourceLevel[parseInt(index.toString(), 10)];\n renderDates = resourceData.renderDates;\n workDays = resourceData.workDays;\n }\n monthEvent.dateRender = renderDates;\n monthEvent.workCells = [].slice.call(this.parent.element.querySelectorAll(monthCellSelector));\n monthEvent.cellWidth = monthEvent.workCells[0].offsetWidth;\n monthEvent.cellHeight = monthEvent.workCells[0].offsetHeight;\n monthEvent.eventHeight =\n util.getElementHeightFromClass(this.parent.monthModule.element || monthEvent.element, cls.APPOINTMENT_CLASS);\n monthEvent.getSlotDates(workDays);\n var filteredDates = monthEvent.getRenderedDates(renderDates);\n var spannedEvents = monthEvent.splitEvent(saveObject, filteredDates || renderDates);\n for (var _i = 0, spannedEvents_1 = spannedEvents; _i < spannedEvents_1.length; _i++) {\n var eventData = spannedEvents_1[_i];\n monthEvent.renderEvents(eventData, index);\n }\n var inlineSubject = this.parent.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS);\n inlineSubject.focus();\n };\n InlineEdit.prototype.createTimelineViewInline = function (saveObj, start, end, resIndex) {\n var count = this.getEventDaysCount(saveObj);\n var saveObject = this.parent.eventBase.cloneEventObject(saveObj, start, end, count, false, false);\n var timelineView = new TimelineEvent(this.parent, this.parent.activeViewOptions.timeScale.enable ? 'hour' : 'day');\n timelineView.dateRender = this.parent.activeView.renderDates;\n timelineView.eventContainers = [].slice.call(this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CONTAINER_CLASS));\n var workCell = this.parent.element.querySelector('.' + cls.WORK_CELLS_CLASS);\n timelineView.inlineValue = this.parent.allowInline;\n timelineView.cellWidth = workCell.offsetWidth;\n timelineView.cellHeight = workCell.offsetHeight;\n var dayLength = this.parent.element.querySelectorAll('.' + cls.CONTENT_TABLE_CLASS + ' tbody tr').length === 0 ?\n 0 : this.parent.element.querySelectorAll('.' + cls.CONTENT_TABLE_CLASS + ' tbody tr')[0].children.length;\n timelineView.slotsPerDay = dayLength / timelineView.dateRender.length;\n timelineView.eventHeight = util.getElementHeightFromClass(timelineView.element, cls.APPOINTMENT_CLASS);\n timelineView.renderEvents(saveObject, resIndex);\n };\n InlineEdit.prototype.getEventDaysCount = function (saveObj) {\n var startDate = saveObj[this.parent.eventFields.startTime];\n var endDate = saveObj[this.parent.eventFields.endTime];\n var daysCount = Math.abs(endDate.getTime() - startDate.getTime()) / util.MS_PER_DAY;\n return daysCount;\n };\n InlineEdit.prototype.generateEventData = function (target) {\n var inlineElement = this.parent.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS);\n var subject = inlineElement ? inlineElement.value : target ? target.innerHTML : '';\n var saveObj = {};\n saveObj[this.parent.eventFields.id] = this.parent.eventBase.getEventMaxID();\n saveObj[this.parent.eventFields.subject] = subject;\n saveObj[this.parent.eventFields.startTime] = this.parent.activeCellsData.startTime;\n saveObj[this.parent.eventFields.endTime] = this.parent.activeCellsData.endTime;\n saveObj[this.parent.eventFields.isAllDay] = this.parent.activeCellsData.isAllDay;\n this.parent.eventWindow.setDefaultValueToObject(saveObj);\n if (this.parent.resourceBase) {\n this.parent.resourceBase.setResourceValues(saveObj, this.parent.activeCellsData.groupIndex);\n }\n return saveObj;\n };\n InlineEdit.prototype.documentClick = function () {\n var target = this.parent.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS);\n if (target && target.value !== '') {\n this.inlineCrudActions(target);\n }\n else {\n this.removeInlineAppointmentElement();\n }\n };\n InlineEdit.prototype.inlineCrudActions = function (target) {\n if (closest(target, '.' + cls.INLINE_APPOINTMENT_CLASS)) {\n var saveObj = this.generateEventData(target);\n this.parent.addEvent(saveObj);\n }\n else {\n var eventTarget = closest(target, '.' + cls.APPOINTMENT_CLASS);\n var eventDetails = this.parent.getEventDetails(eventTarget);\n eventDetails[this.parent.eventFields.subject] = target.value;\n var currentAction = void 0;\n if (eventDetails[this.parent.eventFields.id] === eventDetails[this.parent.eventFields.recurrenceID]) {\n currentAction = 'EditOccurrence';\n eventDetails[this.parent.eventFields.id] = this.parent.eventBase.getEventMaxID();\n }\n this.parent.saveEvent(eventDetails, currentAction);\n }\n this.removeInlineAppointmentElement();\n };\n InlineEdit.prototype.createInlineAppointmentElement = function (inlineData) {\n var inlineAppointmentElement = createElement('div', {\n className: cls.APPOINTMENT_CLASS + ' ' + cls.INLINE_APPOINTMENT_CLASS\n });\n var inlineDetails = createElement('div', { className: cls.APPOINTMENT_DETAILS });\n inlineAppointmentElement.appendChild(inlineDetails);\n var inline = createElement('input', { className: cls.INLINE_SUBJECT_CLASS });\n inlineDetails.appendChild(inline);\n if (inlineData) {\n this.parent.eventBase.applyResourceColor(inlineAppointmentElement, inlineData, 'backgroundColor');\n }\n return inlineAppointmentElement;\n };\n InlineEdit.prototype.removeInlineAppointmentElement = function () {\n var inlineAppointment = [].slice.call(this.parent.element.querySelectorAll('.' + cls.INLINE_APPOINTMENT_CLASS));\n if (inlineAppointment.length > 0) {\n inlineAppointment.forEach(function (node) { return remove(node); });\n }\n var inlineSubject = this.parent.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS);\n if (inlineSubject) {\n var appointmentSubject = closest(inlineSubject, '.' + cls.APPOINTMENT_CLASS);\n var subject = appointmentSubject.querySelector('.' + cls.SUBJECT_CLASS);\n if (!isNullOrUndefined(subject)) {\n removeClass([subject], cls.DISABLE_CLASS);\n }\n remove(inlineSubject);\n }\n };\n InlineEdit.prototype.destroy = function () {\n this.parent.off(events.inlineClick, this.inlineEdit);\n };\n return InlineEdit;\n}());\nexport { InlineEdit };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, Event, Collection, L10n, Complex, compile, createElement, animationMode } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, detach, attributes, prepend, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, ChildProperty, isBlazor } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, append, EventHandler, Draggable, extend } from '@syncfusion/ej2-base';\nimport { SanitizeHtmlHelper, Browser } from '@syncfusion/ej2-base';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Popup, PositionData, getZindexPartial } from '../popup/popup';\nimport { createResize, removeResize, setMinHeight, setMaxWidth, setMaxHeight } from '../common/resize';\nvar ButtonProps = /** @class */ (function (_super) {\n __extends(ButtonProps, _super);\n function ButtonProps() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], ButtonProps.prototype, \"isFlat\", void 0);\n __decorate([\n Property()\n ], ButtonProps.prototype, \"buttonModel\", void 0);\n __decorate([\n Property('Button')\n ], ButtonProps.prototype, \"type\", void 0);\n __decorate([\n Event()\n ], ButtonProps.prototype, \"click\", void 0);\n return ButtonProps;\n}(ChildProperty));\nexport { ButtonProps };\n/**\n * Configures the animation properties for both open and close the dialog.\n */\nvar AnimationSettings = /** @class */ (function (_super) {\n __extends(AnimationSettings, _super);\n function AnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Fade')\n ], AnimationSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], AnimationSettings.prototype, \"duration\", void 0);\n __decorate([\n Property(0)\n ], AnimationSettings.prototype, \"delay\", void 0);\n return AnimationSettings;\n}(ChildProperty));\nexport { AnimationSettings };\nvar ROOT = 'e-dialog';\nvar RTL = 'e-rtl';\nvar DLG_HEADER_CONTENT = 'e-dlg-header-content';\nvar DLG_HEADER = 'e-dlg-header';\nvar DLG_FOOTER_CONTENT = 'e-footer-content';\nvar MODAL_DLG = 'e-dlg-modal';\nvar DLG_CONTENT = 'e-dlg-content';\nvar DLG_CLOSE_ICON = 'e-icon-dlg-close';\nvar DLG_OVERLAY = 'e-dlg-overlay';\nvar DLG_TARGET = 'e-dlg-target';\nvar DLG_CONTAINER = 'e-dlg-container';\nvar SCROLL_DISABLED = 'e-scroll-disabled';\nvar DLG_PRIMARY_BUTTON = 'e-primary';\nvar ICON = 'e-icons';\nvar POPUP_ROOT = 'e-popup';\nvar DEVICE = 'e-device';\nvar FULLSCREEN = 'e-dlg-fullscreen';\nvar DLG_CLOSE_ICON_BTN = 'e-dlg-closeicon-btn';\nvar DLG_HIDE = 'e-popup-close';\nvar DLG_SHOW = 'e-popup-open';\nvar DLG_UTIL_DEFAULT_TITLE = 'Information';\nvar DLG_UTIL_ROOT = 'e-scroll-disabled';\nvar DLG_UTIL_ALERT = 'e-alert-dialog';\nvar DLG_UTIL_CONFIRM = 'e-confirm-dialog';\nvar DLG_RESIZABLE = 'e-dlg-resizable';\nvar DLG_RESTRICT_LEFT_VALUE = 'e-restrict-left';\nvar DLG_RESTRICT_WIDTH_VALUE = 'e-resize-viewport';\nvar DLG_REF_ELEMENT = 'e-dlg-ref-element';\nvar DLG_USER_ACTION_CLOSED = 'user action';\nvar DLG_CLOSE_ICON_CLOSED = 'close icon';\nvar DLG_ESCAPE_CLOSED = 'escape';\nvar DLG_OVERLAYCLICK_CLOSED = 'overlayClick';\nvar DLG_DRAG = 'e-draggable';\n/**\n * Represents the dialog component that displays the information and get input from the user.\n * Two types of dialog components are `Modal and Modeless (non-modal)` depending on its interaction with parent application.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Dialog = /** @class */ (function (_super) {\n __extends(Dialog, _super);\n /*\n * * Constructor for creating the widget\n *\n * @param\n * @param\n * @hidden\n */\n function Dialog(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.needsID = true;\n return _this;\n }\n /**\n *Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.render = function () {\n this.initialize();\n this.initRender();\n this.wireEvents();\n if (this.width === '100%') {\n this.element.style.width = '';\n }\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n if (this.enableResize) {\n this.setResize();\n if (this.animationSettings.effect === 'None') {\n this.getMinHeight();\n }\n }\n this.renderComplete();\n };\n Dialog.prototype.initializeValue = function () {\n this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n };\n /**\n *Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.preRender = function () {\n var _this = this;\n this.initializeValue();\n this.headerContent = null;\n this.allowMaxHeight = true;\n this.preventVisibility = true;\n this.clonedEle = this.element.cloneNode(true);\n this.closeIconClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_CLOSE_ICON_CLOSED;\n _this.hide(event);\n };\n this.dlgOverlayClickEventHandler = function (event) {\n _this.dlgClosedBy = DLG_OVERLAYCLICK_CLOSED;\n event.preventFocus = false;\n _this.trigger('overlayClick', event, function (overlayClickEventArgs) {\n if (!overlayClickEventArgs.preventFocus) {\n _this.focusContent();\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n };\n var localeText = { close: 'Close' };\n this.l10n = new L10n('dialog', localeText, this.locale);\n this.checkPositionData();\n if (isNullOrUndefined(this.target)) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.target = document.body;\n this.isProtectedOnChange = prevOnChange;\n }\n };\n Dialog.prototype.updatePersistData = function () {\n if (this.enablePersistence) {\n this.setProperties({ width: parseFloat(this.element.style.width), height: parseFloat(this.element.style.height),\n position: { X: parseFloat(this.dragObj.element.style.left), Y: parseFloat(this.dragObj.element.style.top) } }, true);\n }\n };\n Dialog.prototype.isNumberValue = function (value) {\n var isNumber = /^[-+]?\\d*\\.?\\d+$/.test(value);\n return isNumber;\n };\n Dialog.prototype.checkPositionData = function () {\n if (!isNullOrUndefined(this.position)) {\n if (!isNullOrUndefined(this.position.X) && (typeof (this.position.X) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.X);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.X = parseFloat(this.position.X);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n if (!isNullOrUndefined(this.position.Y) && (typeof (this.position.Y) !== 'number')) {\n var isNumber = this.isNumberValue(this.position.Y);\n if (isNumber) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.position.Y = parseFloat(this.position.Y);\n this.isProtectedOnChange = prevOnChange;\n }\n }\n }\n };\n Dialog.prototype.getEle = function (list, selector) {\n var element = undefined;\n for (var i = 0; i < list.length; i++) {\n if (list[i].classList.contains(selector)) {\n element = list[i];\n break;\n }\n }\n return element;\n };\n /* istanbul ignore next */\n Dialog.prototype.getMinHeight = function () {\n var computedHeaderHeight = '0px';\n var computedFooterHeight = '0px';\n if (!isNullOrUndefined(this.element.querySelector('.' + DLG_HEADER_CONTENT))) {\n computedHeaderHeight = getComputedStyle(this.headerContent).height;\n }\n var footerEle = this.getEle(this.element.children, DLG_FOOTER_CONTENT);\n if (!isNullOrUndefined(footerEle)) {\n computedFooterHeight = getComputedStyle(footerEle).height;\n }\n var headerHeight = parseInt(computedHeaderHeight.slice(0, computedHeaderHeight.indexOf('p')), 10);\n var footerHeight = parseInt(computedFooterHeight.slice(0, computedFooterHeight.indexOf('p')), 10);\n setMinHeight(headerHeight + 30 + (isNaN(footerHeight) ? 0 : footerHeight));\n return (headerHeight + 30 + footerHeight);\n };\n Dialog.prototype.onResizeStart = function (args, dialogObj) {\n dialogObj.trigger('resizeStart', args);\n return args.cancel;\n };\n Dialog.prototype.onResizing = function (args, dialogObj) {\n dialogObj.trigger('resizing', args);\n };\n Dialog.prototype.onResizeComplete = function (args, dialogObj) {\n dialogObj.trigger('resizeStop', args);\n this.updatePersistData();\n };\n Dialog.prototype.setResize = function () {\n if (this.enableResize) {\n if (this.isBlazorServerRender() && !isNullOrUndefined(this.element.querySelector('.e-icons.e-resize-handle'))) {\n return;\n }\n this.element.classList.add(DLG_RESIZABLE);\n var computedHeight = getComputedStyle(this.element).minHeight;\n var computedWidth = getComputedStyle(this.element).minWidth;\n var direction = '';\n for (var i = 0; i < this.resizeHandles.length; i++) {\n if (this.resizeHandles[i] === 'All') {\n direction = 'south north east west north-east north-west south-east south-west';\n break;\n }\n else {\n var directionValue = '';\n switch (this.resizeHandles[i].toString()) {\n case 'SouthEast':\n directionValue = 'south-east';\n break;\n case 'SouthWest':\n directionValue = 'south-west';\n break;\n case 'NorthEast':\n directionValue = 'north-east';\n break;\n case 'NorthWest':\n directionValue = 'north-west';\n break;\n default:\n directionValue = this.resizeHandles[i].toString();\n break;\n }\n direction += directionValue.toLocaleLowerCase() + ' ';\n }\n }\n if (this.enableRtl && direction.trim() === 'south-east') {\n direction = 'south-west';\n }\n else if (this.enableRtl && direction.trim() === 'south-west') {\n direction = 'south-east';\n }\n if (this.isModal && this.enableRtl) {\n this.element.classList.add(DLG_RESTRICT_LEFT_VALUE);\n }\n else if (this.isModal && this.target === document.body) {\n this.element.classList.add(DLG_RESTRICT_WIDTH_VALUE);\n }\n createResize({\n element: this.element,\n direction: direction,\n minHeight: parseInt(computedHeight.slice(0, computedWidth.indexOf('p')), 10),\n maxHeight: this.targetEle.clientHeight,\n minWidth: parseInt(computedWidth.slice(0, computedWidth.indexOf('p')), 10),\n maxWidth: this.targetEle.clientWidth,\n boundary: this.target === document.body ? null : this.targetEle,\n resizeBegin: this.onResizeStart.bind(this),\n resizeComplete: this.onResizeComplete.bind(this),\n resizing: this.onResizing.bind(this),\n proxy: this\n });\n this.wireWindowResizeEvent();\n }\n else {\n removeResize();\n this.unWireWindowResizeEvent();\n if (this.isModal) {\n this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n }\n else {\n this.element.classList.remove(DLG_RESTRICT_WIDTH_VALUE);\n }\n this.element.classList.remove(DLG_RESIZABLE);\n }\n };\n Dialog.prototype.getFocusElement = function (target) {\n var value = 'input,select,textarea,button:enabled,a,[contenteditable=\"true\"],[tabindex]';\n var items = target.querySelectorAll(value);\n return { element: items[items.length - 1] };\n };\n /* istanbul ignore next */\n Dialog.prototype.keyDown = function (event) {\n var _this = this;\n if (event.keyCode === 9) {\n if (this.isModal) {\n var buttonObj = void 0;\n if (!isNullOrUndefined(this.btnObj)) {\n buttonObj = this.btnObj[this.btnObj.length - 1];\n }\n if ((isNullOrUndefined(this.btnObj)) && (!isNullOrUndefined(this.ftrTemplateContent))) {\n buttonObj = this.getFocusElement(this.ftrTemplateContent);\n }\n if (isNullOrUndefined(this.btnObj) && isNullOrUndefined(this.ftrTemplateContent) && !isNullOrUndefined(this.contentEle)) {\n buttonObj = this.getFocusElement(this.contentEle);\n }\n if (!isNullOrUndefined(buttonObj) && document.activeElement === buttonObj.element && !event.shiftKey) {\n event.preventDefault();\n this.focusableElements(this.element).focus();\n }\n if (document.activeElement === this.focusableElements(this.element) && event.shiftKey) {\n event.preventDefault();\n if (!isNullOrUndefined(buttonObj)) {\n buttonObj.element.focus();\n }\n }\n }\n }\n var element = document.activeElement;\n var isTagName = (['input', 'textarea'].indexOf(element.tagName.toLowerCase()) > -1);\n var isContentEdit = false;\n if (!isTagName) {\n isContentEdit = element.hasAttribute('contenteditable') && element.getAttribute('contenteditable') === 'true';\n }\n if (event.keyCode === 27 && this.closeOnEscape) {\n this.dlgClosedBy = DLG_ESCAPE_CLOSED;\n var query = document.querySelector('.e-popup-open:not(.e-dialog)');\n // 'document.querySelector' is used to find the elements rendered based on body\n if (!(!isNullOrUndefined(query) && !query.classList.contains('e-toolbar-pop'))) {\n this.hide(event);\n }\n }\n if ((event.keyCode === 13 && !event.ctrlKey && element.tagName.toLowerCase() !== 'textarea' &&\n isTagName && !isNullOrUndefined(this.primaryButtonEle)) ||\n (event.keyCode === 13 && event.ctrlKey && (element.tagName.toLowerCase() === 'textarea' ||\n isContentEdit)) && !isNullOrUndefined(this.primaryButtonEle)) {\n var buttonIndex_1;\n var firstPrimary = this.buttons.some(function (data, index) {\n buttonIndex_1 = index;\n // eslint-disable-next-line\n var buttonModel = data.buttonModel;\n return !isNullOrUndefined(buttonModel) && buttonModel.isPrimary === true;\n });\n if (firstPrimary && typeof (this.buttons[buttonIndex_1].click) === 'function') {\n setTimeout(function () {\n _this.buttons[buttonIndex_1].click.call(_this, event);\n });\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initialize = function () {\n if (!isNullOrUndefined(this.target)) {\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n }\n if (!this.isBlazorServerRender()) {\n addClass([this.element], ROOT);\n }\n if (Browser.isDevice) {\n addClass([this.element], DEVICE);\n }\n if (!this.isBlazorServerRender()) {\n this.setCSSClass();\n }\n this.setMaxHeight();\n };\n /**\n * Initialize the rendering\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.initRender = function () {\n var _this = this;\n this.initialRender = true;\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { role: 'dialog' });\n }\n if (this.zIndex === 1000) {\n this.setzIndex(this.element, false);\n this.calculatezIndex = true;\n }\n else {\n this.calculatezIndex = false;\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.element.getElementsByClassName('e-dlg-header-content')[0];\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.contentEle)) {\n this.contentEle = this.element.querySelector('#' + this.element.id + '_dialog-content');\n }\n if (!this.isBlazorServerRender()) {\n this.setTargetContent();\n if (this.header !== '' && !isNullOrUndefined(this.header)) {\n this.setHeader();\n }\n this.renderCloseIcon();\n this.setContent();\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setFooterTemplate();\n }\n else if (!isNullOrUndefined(this.buttons[0].buttonModel)) {\n this.setButton();\n }\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n this.setButton();\n }\n }\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n if (!this.isBlazorServerRender()) {\n attributes(this.element, { 'aria-modal': (this.isModal ? 'true' : 'false') });\n if (this.isModal) {\n this.setIsModal();\n }\n }\n if (this.isBlazorServerRender() && isNullOrUndefined(this.dlgContainer)) {\n this.dlgContainer = this.element.parentElement;\n for (var i = 0, childNodes = this.dlgContainer.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains('e-dlg-overlay')) {\n this.dlgOverlay = childNodes[i];\n }\n }\n }\n if (this.element.classList.contains(DLG_UTIL_ALERT) !== true && this.element.classList.contains(DLG_UTIL_CONFIRM) !== true\n && !isNullOrUndefined(this.element.parentElement)) {\n var parentEle = this.isModal ? this.dlgContainer.parentElement : this.element.parentElement;\n this.refElement = this.createElement('div', { className: DLG_REF_ELEMENT });\n parentEle.insertBefore(this.refElement, (this.isModal ? this.dlgContainer : this.element));\n }\n if (!isNullOrUndefined(this.targetEle)) {\n // eslint-disable-next-line\n this.isModal ? this.targetEle.appendChild(this.dlgContainer) : this.targetEle.appendChild(this.element);\n }\n this.popupObj = new Popup(this.element, {\n height: this.height,\n width: this.width,\n zIndex: this.zIndex,\n relateTo: this.target,\n actionOnScroll: 'none',\n enableRtl: this.enableRtl,\n // eslint-disable-next-line\n open: function (event) {\n var eventArgs = {\n container: _this.isModal ? _this.dlgContainer : _this.element,\n element: _this.element,\n target: _this.target,\n preventFocus: false\n };\n if (_this.enableResize) {\n _this.resetResizeIcon();\n }\n _this.trigger('open', eventArgs, function (openEventArgs) {\n if (!openEventArgs.preventFocus) {\n _this.focusContent();\n }\n });\n },\n // eslint-disable-next-line\n close: function (event) {\n if (_this.isModal) {\n addClass([_this.dlgOverlay], 'e-fade');\n }\n _this.unBindEvent(_this.element);\n if (_this.isModal) {\n _this.dlgContainer.style.display = 'none';\n }\n _this.trigger('close', _this.closeArgs);\n var activeEle = document.activeElement;\n if (!isNullOrUndefined(activeEle) && !isNullOrUndefined((activeEle).blur)) {\n activeEle.blur();\n }\n if (!isNullOrUndefined(_this.storeActiveElement) && !isNullOrUndefined(_this.storeActiveElement.focus)) {\n _this.storeActiveElement.focus();\n }\n }\n });\n this.positionChange();\n this.setEnableRTL();\n if (!this.isBlazorServerRender()) {\n addClass([this.element], DLG_HIDE);\n if (this.isModal) {\n this.setOverlayZindex();\n }\n }\n if (this.visible) {\n this.show();\n if (this.isModal) {\n var targetType = this.getTargetContainer(this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n this.setPopupPosition();\n }\n }\n }\n }\n else {\n if (this.isModal) {\n this.dlgOverlay.style.display = 'none';\n }\n }\n this.initialRender = false;\n };\n Dialog.prototype.getTargetContainer = function (targetValue) {\n var targetElement = null;\n if (typeof targetValue === 'string') {\n if (targetValue.startsWith('#')) {\n targetElement = document.getElementById(targetValue.substring(1));\n }\n else if (targetValue.startsWith('.')) {\n var elements = document.getElementsByClassName(targetValue.substring(1));\n targetElement = elements.length > 0 ? elements[0] : null;\n }\n else {\n if (!(targetValue instanceof HTMLElement) && targetValue !== document.body) {\n targetElement = document.querySelector(targetValue);\n }\n }\n }\n else if (targetValue instanceof HTMLElement) {\n targetElement = targetValue;\n }\n return targetElement;\n };\n Dialog.prototype.resetResizeIcon = function () {\n var dialogConHeight = this.getMinHeight();\n if (this.targetEle.offsetHeight < dialogConHeight) {\n var className = this.enableRtl ? 'e-south-west' : 'e-south-east';\n var resizeIcon = this.element.querySelector('.' + className);\n if (!isNullOrUndefined(resizeIcon)) {\n resizeIcon.style.bottom = '-' + dialogConHeight.toString() + 'px';\n }\n }\n };\n Dialog.prototype.setOverlayZindex = function (zIndexValue) {\n var zIndex;\n if (isNullOrUndefined(zIndexValue)) {\n zIndex = parseInt(this.element.style.zIndex, 10) ? parseInt(this.element.style.zIndex, 10) : this.zIndex;\n }\n else {\n zIndex = zIndexValue;\n }\n this.dlgOverlay.style.zIndex = (zIndex - 1).toString();\n this.dlgContainer.style.zIndex = zIndex.toString();\n };\n Dialog.prototype.positionChange = function () {\n if (this.isModal) {\n if (!isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y))) {\n this.setPopupPosition();\n }\n else if ((!isNaN(parseFloat(this.position.X)) && isNaN(parseFloat(this.position.Y)))\n || (isNaN(parseFloat(this.position.X)) && !isNaN(parseFloat(this.position.Y)))) {\n this.setPopupPosition();\n }\n else {\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n this.dlgContainer.classList.add('e-dlg-' + this.position.X + '-' + this.position.Y);\n }\n }\n else {\n this.setPopupPosition();\n }\n };\n Dialog.prototype.setPopupPosition = function () {\n this.popupObj.setProperties({\n position: {\n X: this.position.X, Y: this.position.Y\n }\n });\n };\n Dialog.prototype.setAllowDragging = function () {\n var _this = this;\n var handleContent = '.' + DLG_HEADER_CONTENT;\n if (!this.element.classList.contains(DLG_DRAG)) {\n this.dragObj = new Draggable(this.element, {\n clone: false,\n isDragScroll: true,\n abort: '.e-dlg-closeicon-btn',\n handle: handleContent,\n dragStart: function (event) {\n _this.trigger('dragStart', event, function (dragEventArgs) {\n if (isBlazor()) {\n dragEventArgs.bindEvents(event.dragElement);\n }\n });\n },\n dragStop: function (event) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.position)) {\n _this.dlgContainer.classList.remove('e-dlg-' + _this.position.X + '-' + _this.position.Y);\n }\n // Reset the dialog position after drag completion.\n var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n _this.element.style.position = 'absolute';\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n _this.trigger('dragStop', event);\n _this.element.classList.remove(DLG_RESTRICT_LEFT_VALUE);\n _this.updatePersistData();\n },\n drag: function (event) {\n _this.trigger('drag', event);\n }\n });\n if (!isNullOrUndefined(this.targetEle)) {\n this.dragObj.dragArea = this.targetEle;\n }\n }\n };\n Dialog.prototype.setButton = function () {\n if (!this.isBlazorServerRender()) {\n this.buttonContent = [];\n this.btnObj = [];\n // eslint-disable-next-line\n var primaryBtnFlag = true;\n for (var i = 0; i < this.buttons.length; i++) {\n var buttonType = !isNullOrUndefined(this.buttons[i].type) ? this.buttons[i].type.toLowerCase() : 'button';\n var btn = this.createElement('button', { className: this.cssClass, attrs: { type: buttonType } });\n this.buttonContent.push(btn.outerHTML);\n }\n this.setFooterTemplate();\n }\n var footerBtn;\n for (var i = 0, childNodes = this.element.children; i < childNodes.length; i++) {\n if (childNodes[i].classList.contains(DLG_FOOTER_CONTENT)) {\n footerBtn = childNodes[i].querySelectorAll('button');\n }\n }\n for (var i = 0; i < this.buttons.length; i++) {\n if (!this.isBlazorServerRender()) {\n this.btnObj[i] = new Button(this.buttons[i].buttonModel);\n }\n if (this.isBlazorServerRender()) {\n this.ftrTemplateContent = this.element.querySelector('.' + DLG_FOOTER_CONTENT);\n }\n if (!isNullOrUndefined(this.ftrTemplateContent) && footerBtn.length > 0) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.add(footerBtn[i], 'click', this.buttons[i].click, this);\n }\n if (typeof (this.buttons[i].click) === 'object') {\n EventHandler.add(footerBtn[i], 'click', this.buttonClickHandler.bind(this, i), this);\n }\n }\n if (!this.isBlazorServerRender() && !isNullOrUndefined(this.ftrTemplateContent)) {\n this.btnObj[i].appendTo(this.ftrTemplateContent.children[i]);\n if (this.buttons[i].isFlat) {\n this.btnObj[i].element.classList.add('e-flat');\n }\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n }\n };\n Dialog.prototype.buttonClickHandler = function (index) {\n this.trigger('buttons[' + index + '].click', {});\n };\n Dialog.prototype.setContent = function () {\n this.contentEle = this.createElement('div', { className: DLG_CONTENT, id: this.element.id + '_dialog-content' });\n if (this.innerContentElement) {\n this.contentEle.appendChild(this.innerContentElement);\n }\n else if (!isNullOrUndefined(this.content) && this.content !== '' || !this.initialRender) {\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (typeof (this.content) === 'string' && !isBlazor()) {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n else if (this.content instanceof HTMLElement) {\n this.contentEle.appendChild(this.content);\n }\n else {\n this.setTemplate(this.content, this.contentEle, 'content');\n }\n }\n if (!isNullOrUndefined(this.headerContent)) {\n this.element.insertBefore(this.contentEle, this.element.children[1]);\n }\n else {\n this.element.insertBefore(this.contentEle, this.element.children[0]);\n }\n if (this.height === 'auto') {\n if (!this.isBlazorServerRender() && Browser.isIE && this.element.style.width === '' && !isNullOrUndefined(this.width)) {\n this.element.style.width = formatUnit(this.width);\n }\n this.setMaxHeight();\n }\n };\n Dialog.prototype.setTemplate = function (template, toElement, prop) {\n var templateFn;\n var templateProps;\n // eslint-disable-next-line\n var blazorContain = Object.keys(window);\n if (toElement.classList.contains(DLG_HEADER)) {\n templateProps = this.element.id + 'header';\n }\n else if (toElement.classList.contains(DLG_FOOTER_CONTENT)) {\n templateProps = this.element.id + 'footerTemplate';\n }\n else {\n templateProps = this.element.id + 'content';\n }\n var templateValue;\n if (!isNullOrUndefined(template.outerHTML)) {\n toElement.appendChild(template);\n }\n else if ((typeof template === 'string') || (typeof template !== 'string') || (isBlazor() && !this.isStringTemplate)) {\n if ((typeof template === 'string')) {\n template = this.sanitizeHelper(template);\n }\n if (this.isVue || typeof template !== 'string') {\n templateFn = compile(template);\n templateValue = template;\n }\n else {\n toElement.innerHTML = template;\n }\n }\n var fromElements = [];\n if (!isNullOrUndefined(templateFn)) {\n var isString = (isBlazor() &&\n !this.isStringTemplate && (templateValue).indexOf('
Blazor') === 0) ?\n this.isStringTemplate : true;\n for (var _i = 0, _a = templateFn({}, this, prop, templateProps, isString); _i < _a.length; _i++) {\n var item = _a[_i];\n fromElements.push(item);\n }\n append([].slice.call(fromElements), toElement);\n }\n };\n /*\n * @returns {void}\n * @hidden\n * @value\n */\n Dialog.prototype.sanitizeHelper = function (value) {\n if (this.enableHtmlSanitizer) {\n var dialogItem = SanitizeHtmlHelper.beforeSanitize();\n var beforeEvent = {\n cancel: false,\n helper: null\n };\n extend(dialogItem, dialogItem, beforeEvent);\n this.trigger('beforeSanitizeHtml', dialogItem);\n if (dialogItem.cancel && !isNullOrUndefined(dialogItem.helper)) {\n value = dialogItem.helper(value);\n }\n else if (!dialogItem.cancel) {\n value = SanitizeHtmlHelper.serializeValue(dialogItem, value);\n }\n }\n return value;\n };\n Dialog.prototype.setMaxHeight = function () {\n if (!this.allowMaxHeight) {\n return;\n }\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) && (this.targetEle.offsetHeight < window.innerHeight) ?\n (this.targetEle.offsetHeight - 20) + 'px' : (window.innerHeight - 20) + 'px';\n this.element.style.display = display;\n if (Browser.isIE && this.height === 'auto' && !isNullOrUndefined(this.contentEle)\n && this.element.offsetHeight < this.contentEle.offsetHeight) {\n this.element.style.height = 'inherit';\n }\n };\n Dialog.prototype.setEnableRTL = function () {\n if (!this.isBlazorServerRender()) {\n // eslint-disable-next-line\n this.enableRtl ? addClass([this.element], RTL) : removeClass([this.element], RTL);\n }\n if (!isNullOrUndefined(this.element.querySelector('.e-resize-handle'))) {\n removeResize();\n this.setResize();\n }\n };\n Dialog.prototype.setTargetContent = function () {\n var _this = this;\n if (isNullOrUndefined(this.content) || this.content === '') {\n var isContent = this.element.innerHTML.replace(/\\s|<(\\/?|\\/?)(!--!--)>/g, '') !== '';\n if (this.element.children.length > 0 || isContent) {\n this.innerContentElement = document.createDocumentFragment();\n [].slice.call(this.element.childNodes).forEach(function (el) {\n if (el.nodeType !== 8) {\n _this.innerContentElement.appendChild(el);\n }\n });\n }\n }\n };\n Dialog.prototype.setHeader = function () {\n if (this.headerEle) {\n this.headerEle.innerHTML = '';\n }\n else {\n this.headerEle = this.createElement('div', { id: this.element.id + '_title', className: DLG_HEADER });\n }\n this.createHeaderContent();\n this.headerContent.appendChild(this.headerEle);\n this.setTemplate(this.header, this.headerEle, 'header');\n attributes(this.element, { 'aria-labelledby': this.element.id + '_title' });\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n };\n Dialog.prototype.setFooterTemplate = function () {\n if (this.ftrTemplateContent) {\n this.ftrTemplateContent.innerHTML = '';\n }\n else {\n this.ftrTemplateContent = this.createElement('div', {\n className: DLG_FOOTER_CONTENT\n });\n }\n if (this.footerTemplate !== '' && !isNullOrUndefined(this.footerTemplate)) {\n this.setTemplate(this.footerTemplate, this.ftrTemplateContent, 'footerTemplate');\n }\n else {\n this.ftrTemplateContent.innerHTML = this.buttonContent.join('');\n }\n this.element.appendChild(this.ftrTemplateContent);\n };\n Dialog.prototype.createHeaderContent = function () {\n if (isNullOrUndefined(this.headerContent)) {\n this.headerContent = this.createElement('div', { id: this.element.id + '_dialog-header', className: DLG_HEADER_CONTENT });\n }\n };\n Dialog.prototype.renderCloseIcon = function () {\n if (this.showCloseIcon) {\n this.closeIcon = this.createElement('button', { className: DLG_CLOSE_ICON_BTN, attrs: { type: 'button' } });\n this.closeIconBtnObj = new Button({ cssClass: 'e-flat', iconCss: DLG_CLOSE_ICON + ' ' + ICON });\n this.closeIconTitle();\n if (!isNullOrUndefined(this.headerContent)) {\n prepend([this.closeIcon], this.headerContent);\n }\n else {\n this.createHeaderContent();\n prepend([this.closeIcon], this.headerContent);\n this.element.insertBefore(this.headerContent, this.element.children[0]);\n }\n this.closeIconBtnObj.appendTo(this.closeIcon);\n }\n };\n Dialog.prototype.closeIconTitle = function () {\n this.l10n.setLocale(this.locale);\n var closeIconTitle = this.l10n.getConstant('close');\n this.closeIcon.setAttribute('title', closeIconTitle);\n this.closeIcon.setAttribute('aria-label', closeIconTitle);\n };\n Dialog.prototype.setCSSClass = function (oldCSSClass) {\n if (oldCSSClass) {\n removeClass([this.element], oldCSSClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n removeClass([this.dlgContainer], oldCSSClass.split(' '));\n }\n }\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n if (this.isModal && !isNullOrUndefined(this.dlgContainer)) {\n addClass([this.dlgContainer], this.cssClass.split(' '));\n }\n }\n };\n Dialog.prototype.setIsModal = function () {\n this.dlgContainer = this.createElement('div', { className: DLG_CONTAINER });\n this.setCSSClass();\n this.element.classList.remove(DLG_SHOW);\n this.element.parentNode.insertBefore(this.dlgContainer, this.element);\n this.dlgContainer.appendChild(this.element);\n addClass([this.element], MODAL_DLG);\n this.dlgOverlay = this.createElement('div', { className: DLG_OVERLAY });\n this.dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.dlgContainer.appendChild(this.dlgOverlay);\n };\n Dialog.prototype.getValidFocusNode = function (items) {\n var node;\n for (var u = 0; u < items.length; u++) {\n node = items[u];\n if ((node.clientHeight > 0 || (node.tagName.toLowerCase() === 'a' && node.hasAttribute('href'))) && node.tabIndex > -1 &&\n !node.disabled && !this.disableElement(node, '[disabled],[aria-disabled=\"true\"],[type=\"hidden\"]')) {\n return node;\n }\n else {\n node = null;\n }\n }\n return node;\n };\n Dialog.prototype.focusableElements = function (content) {\n if (!isNullOrUndefined(content)) {\n var value = 'input,select,textarea,button,a,[contenteditable=\"true\"],[tabindex]';\n var items = content.querySelectorAll(value);\n return this.getValidFocusNode(items);\n }\n return null;\n };\n Dialog.prototype.getAutoFocusNode = function (container) {\n var node = container.querySelector('.' + DLG_CLOSE_ICON_BTN);\n var value = '[autofocus]';\n var items = container.querySelectorAll(value);\n var validNode = this.getValidFocusNode(items);\n if (isBlazor()) {\n this.primaryButtonEle = this.element.getElementsByClassName('e-primary')[0];\n }\n if (!isNullOrUndefined(validNode)) {\n node = validNode;\n }\n else {\n validNode = this.focusableElements(this.contentEle);\n if (!isNullOrUndefined(validNode)) {\n return node = validNode;\n }\n else if (!isNullOrUndefined(this.primaryButtonEle)) {\n return this.element.querySelector('.' + DLG_PRIMARY_BUTTON);\n }\n }\n return node;\n };\n Dialog.prototype.disableElement = function (element, t) {\n var elementMatch = element ? element.matches || element.webkitMatchesSelector || element.msGetRegionContent : null;\n if (elementMatch) {\n for (; element; element = element.parentNode) {\n if (element instanceof Element && elementMatch.call(element, t)) {\n /* istanbul ignore next */\n return element;\n }\n }\n }\n return null;\n };\n Dialog.prototype.focusContent = function () {\n var element = this.getAutoFocusNode(this.element);\n var node = !isNullOrUndefined(element) ? element : this.element;\n var userAgent = Browser.userAgent;\n if (userAgent.indexOf('MSIE ') > 0 || userAgent.indexOf('Trident/') > 0) {\n this.element.focus();\n }\n node.focus();\n this.unBindEvent(this.element);\n this.bindEvent(this.element);\n };\n Dialog.prototype.bindEvent = function (element) {\n EventHandler.add(element, 'keydown', this.keyDown, this);\n };\n Dialog.prototype.unBindEvent = function (element) {\n EventHandler.remove(element, 'keydown', this.keyDown);\n };\n Dialog.prototype.updateSanitizeContent = function () {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = this.sanitizeHelper(this.content);\n }\n };\n Dialog.prototype.isBlazorServerRender = function () {\n return isBlazor() && this.isServerRendered;\n };\n /**\n * Module required function\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getModuleName = function () {\n return 'dialog';\n };\n /**\n * Called internally if any of the property value changed\n *\n * @param {DialogModel} newProp - specifies the new property\n * @param {DialogModel} oldProp - specifies the old property\n * @private\n * @returns {void}\n */\n Dialog.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'content':\n if (!isNullOrUndefined(this.content) && this.content !== '') {\n if (this.isBlazorServerRender()) {\n this.contentEle = this.element.querySelector('.e-dlg-content');\n }\n if (!isNullOrUndefined(this.contentEle) && this.contentEle.getAttribute('role') !== 'dialog') {\n if (!this.isBlazorServerRender()) {\n this.contentEle.innerHTML = '';\n }\n if (typeof (this.content) === 'function') {\n this.clearTemplate(['content']);\n detach(this.contentEle);\n this.contentEle = null;\n this.setContent();\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-expressions\n typeof (this.content) === 'string' ? (this.isBlazorServerRender() && (this.contentEle.innerText === '')) ?\n this.contentEle.insertAdjacentHTML('beforeend', this.sanitizeHelper(this.content)) :\n this.updateSanitizeContent() : this.contentEle.appendChild(this.content);\n }\n this.setMaxHeight();\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-content'))) {\n this.setContent();\n }\n }\n }\n else if (!isNullOrUndefined(this.contentEle)) {\n detach(this.contentEle);\n this.contentEle = null;\n }\n break;\n case 'header':\n if (this.header === '' || isNullOrUndefined(this.header)) {\n if (this.headerEle) {\n detach(this.headerEle);\n this.headerEle = null;\n }\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-dlg-header-content'))) {\n this.setHeader();\n }\n }\n break;\n case 'footerTemplate':\n if (this.footerTemplate === '' || isNullOrUndefined(this.footerTemplate)) {\n if (!this.ftrTemplateContent) {\n return;\n }\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n this.buttons = [{}];\n }\n else {\n if (!this.isBlazorServerRender() ||\n isNullOrUndefined(this.element.querySelector('.e-footer-content'))) {\n this.setFooterTemplate();\n }\n this.buttons = [{}];\n }\n break;\n case 'showCloseIcon':\n if (this.element.getElementsByClassName(DLG_CLOSE_ICON).length > 0) {\n if (!this.showCloseIcon && (this.header === '' || isNullOrUndefined(this.header))) {\n detach(this.headerContent);\n this.headerContent = null;\n }\n else if (!this.showCloseIcon) {\n detach(this.closeIcon);\n }\n else {\n if (this.isBlazorServerRender()) {\n this.wireEvents();\n }\n }\n }\n else {\n if (!this.isBlazorServerRender()) {\n this.renderCloseIcon();\n }\n this.wireEvents();\n }\n break;\n case 'locale':\n if (this.showCloseIcon) {\n this.closeIconTitle();\n }\n break;\n case 'visible':\n // eslint-disable-next-line\n this.visible ? this.show() : this.hide();\n break;\n case 'isModal':\n this.updateIsModal();\n break;\n case 'height':\n setStyleAttribute(this.element, { 'height': formatUnit(newProp.height) });\n this.updatePersistData();\n break;\n case 'width':\n setStyleAttribute(this.element, { 'width': formatUnit(newProp.width) });\n this.updatePersistData();\n break;\n case 'zIndex':\n this.popupObj.zIndex = this.zIndex;\n if (this.isModal) {\n this.setOverlayZindex(this.zIndex);\n }\n if (this.element.style.zIndex !== this.zIndex.toString()) {\n this.calculatezIndex = false;\n }\n break;\n case 'cssClass':\n this.setCSSClass(oldProp.cssClass);\n break;\n case 'buttons': {\n var buttonCount = this.buttons.length;\n if (!isNullOrUndefined(this.ftrTemplateContent) && !this.isBlazorServerRender()) {\n detach(this.ftrTemplateContent);\n this.ftrTemplateContent = null;\n }\n for (var i = 0; i < buttonCount; i++) {\n if (!isNullOrUndefined(this.buttons[i].buttonModel)) {\n this.footerTemplate = '';\n this.setButton();\n }\n }\n break;\n }\n case 'allowDragging':\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n else {\n this.dragObj.destroy();\n }\n break;\n case 'target':\n this.setTarget(newProp.target);\n break;\n case 'position':\n this.checkPositionData();\n if (this.isModal) {\n var positionX = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.X) ? oldProp.position.X : this.position.X;\n var positionY = !isNullOrUndefined(oldProp.position) && !isNullOrUndefined(oldProp.position.Y) ? oldProp.position.Y : this.position.Y;\n if (this.dlgContainer.classList.contains('e-dlg-' + positionX + '-' + positionY)) {\n this.dlgContainer.classList.remove('e-dlg-' + positionX + '-' + positionY);\n }\n }\n this.positionChange();\n this.updatePersistData();\n break;\n case 'enableRtl':\n this.setEnableRTL();\n break;\n case 'enableResize':\n this.setResize();\n break;\n case 'minHeight':\n if (this.minHeight !== '') {\n this.element.style.minHeight = formatUnit(this.minHeight);\n }\n break;\n }\n }\n };\n Dialog.prototype.setTarget = function (target) {\n this.popupObj.relateTo = target;\n this.target = target;\n this.targetEle = ((typeof this.target) === 'string') ?\n document.querySelector(this.target) : this.target;\n if (this.dragObj) {\n this.dragObj.dragArea = this.targetEle;\n }\n this.setMaxHeight();\n if (this.isModal) {\n this.updateIsModal();\n }\n if (this.enableResize) {\n this.setResize();\n }\n };\n Dialog.prototype.updateIsModal = function () {\n this.element.setAttribute('aria-modal', this.isModal ? 'true' : 'false');\n if (this.isModal) {\n if (isNullOrUndefined(this.dlgOverlay)) {\n this.setIsModal();\n this.element.style.top = '0px';\n this.element.style.left = '0px';\n if (!isNullOrUndefined(this.targetEle)) {\n this.targetEle.appendChild(this.dlgContainer);\n }\n }\n }\n else {\n removeClass([this.element], MODAL_DLG);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n detach(this.dlgOverlay);\n while (this.dlgContainer.firstChild) {\n this.dlgContainer.parentElement.insertBefore(this.dlgContainer.firstChild, this.dlgContainer);\n }\n this.dlgContainer.parentElement.removeChild(this.dlgContainer);\n }\n if (this.visible) {\n this.show();\n }\n this.positionChange();\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n Dialog.prototype.setzIndex = function (zIndexElement, setPopupZindex) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n var currentzIndex = getZindexPartial(zIndexElement);\n this.zIndex = currentzIndex > this.zIndex ? currentzIndex : this.zIndex;\n this.isProtectedOnChange = prevOnChange;\n if (setPopupZindex) {\n this.popupObj.zIndex = this.zIndex;\n }\n };\n Dialog.prototype.windowResizeHandler = function () {\n setMaxWidth(this.targetEle.clientWidth);\n setMaxHeight(this.targetEle.clientHeight);\n this.setMaxHeight();\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.getPersistData = function () {\n return this.addOnPersist(['width', 'height', 'position']);\n };\n /**\n * To destroy the widget\n *\n * @returns {void}\n */\n Dialog.prototype.destroy = function () {\n if (this.isDestroyed) {\n return;\n }\n var classArray = [RTL, MODAL_DLG, DLG_RESIZABLE, DLG_RESTRICT_LEFT_VALUE, FULLSCREEN, DEVICE];\n var attrs = ['role', 'aria-modal', 'aria-labelledby', 'aria-describedby', 'aria-grabbed', 'tabindex', 'style'];\n removeClass([this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n if (!isNullOrUndefined(this.element) && this.element.classList.contains(FULLSCREEN)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n if (this.isModal) {\n removeClass([(!isNullOrUndefined(this.targetEle) ? this.targetEle : document.body)], SCROLL_DISABLED);\n }\n this.unWireEvents();\n if (!isNullOrUndefined(this.btnObj)) {\n for (var i = 0; i < this.btnObj.length; i++) {\n this.btnObj[i].destroy();\n }\n }\n if (!isNullOrUndefined(this.closeIconBtnObj)) {\n this.closeIconBtnObj.destroy();\n }\n if (!isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n if (!isNullOrUndefined(this.popupObj.element) && this.popupObj.element.classList.contains(POPUP_ROOT)) {\n this.popupObj.destroy();\n }\n removeClass([this.element], classArray);\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n removeClass([this.element], this.cssClass.split(' '));\n }\n if (!isNullOrUndefined(this.refElement) && !isNullOrUndefined(this.refElement.parentElement)) {\n this.refElement.parentElement.insertBefore((this.isModal ? this.dlgContainer : this.element), this.refElement);\n detach(this.refElement);\n this.refElement = undefined;\n }\n if (this.isModal && !this.isBlazorServerRender()) {\n detach(this.dlgOverlay);\n this.dlgContainer.parentNode.insertBefore(this.element, this.dlgContainer);\n detach(this.dlgContainer);\n }\n if (!this.isBlazorServerRender()) {\n this.element.innerHTML = this.clonedEle.innerHTML;\n }\n if (this.isBlazorServerRender()) {\n if (!isNullOrUndefined(this.element.children)) {\n for (var i = 0; i <= this.element.children.length; i++) {\n i = i - i;\n detach(this.element.children[i]);\n }\n }\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[i]);\n }\n this.ftrTemplateContent = null;\n this.headerContent = null;\n this.contentEle = null;\n if (!this.isBlazorServerRender()) {\n _super.prototype.destroy.call(this);\n }\n else {\n this.isDestroyed = true;\n }\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n };\n Dialog.prototype.wireWindowResizeEvent = function () {\n window.addEventListener('resize', this.windowResizeHandler.bind(this));\n };\n Dialog.prototype.unWireWindowResizeEvent = function () {\n window.removeEventListener('resize', this.windowResizeHandler.bind(this));\n };\n /**\n * Binding event to the element while widget creation\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.wireEvents = function () {\n if (this.isBlazorServerRender() && this.showCloseIcon) {\n this.closeIcon = this.element.getElementsByClassName('e-dlg-closeicon-btn')[0];\n }\n if (this.showCloseIcon) {\n EventHandler.add(this.closeIcon, 'click', this.closeIconClickEventHandler, this);\n }\n if (this.isModal && this.dlgOverlay) {\n EventHandler.add(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler, this);\n }\n };\n /**\n * Unbinding event to the element while widget destroy\n *\n * @returns {void}\n * @hidden\n */\n Dialog.prototype.unWireEvents = function () {\n if (this.showCloseIcon) {\n EventHandler.remove(this.closeIcon, 'click', this.closeIconClickEventHandler);\n }\n if (this.isModal) {\n EventHandler.remove(this.dlgOverlay, 'click', this.dlgOverlayClickEventHandler);\n }\n if (this.buttons.length > 0 && !isNullOrUndefined(this.buttons[0].buttonModel) && this.footerTemplate === '') {\n for (var i = 0; i < this.buttons.length; i++) {\n if (typeof (this.buttons[i].click) === 'function') {\n EventHandler.remove(this.ftrTemplateContent.children[i], 'click', this.buttons[i].click);\n }\n }\n }\n };\n /**\n * Refreshes the dialog's position when the user changes its header and footer height/width dynamically.\n *\n * @returns {void}\n */\n Dialog.prototype.refreshPosition = function () {\n this.popupObj.refreshPosition();\n if (this.element.classList.contains(MODAL_DLG)) {\n this.positionChange();\n }\n };\n /**\n * Returns the current width and height of the Dialog\n *\n * @returns {DialogDimension}- returns the dialog element Dimension.\n * @public\n */\n Dialog.prototype.getDimension = function () {\n var dialogWidth = this.element.offsetWidth;\n var dialogHeight = this.element.offsetHeight;\n return { width: dialogWidth, height: dialogHeight };\n };\n /**\n * Opens the dialog if it is in hidden state.\n * To open the dialog with full screen width, set the parameter to true.\n *\n * @param { boolean } isFullScreen - Enable the fullScreen Dialog.\n * @returns {void}\n */\n Dialog.prototype.show = function (isFullScreen) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (!this.element.classList.contains(DLG_SHOW) || (!isNullOrUndefined(isFullScreen))) {\n if (!isNullOrUndefined(isFullScreen)) {\n this.fullScreen(isFullScreen);\n }\n var eventArgs_1 = isBlazor() ? {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n maxHeight: this.element.style.maxHeight\n } : {\n cancel: false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n target: this.target,\n maxHeight: this.element.style.maxHeight\n };\n this.trigger('beforeOpen', eventArgs_1, function (beforeOpenArgs) {\n if (!beforeOpenArgs.cancel) {\n if (_this.element.style.maxHeight !== eventArgs_1.maxHeight) {\n _this.allowMaxHeight = false;\n _this.element.style.maxHeight = eventArgs_1.maxHeight;\n }\n _this.storeActiveElement = document.activeElement;\n _this.element.tabIndex = -1;\n if (_this.isModal && (!isNullOrUndefined(_this.dlgOverlay))) {\n _this.dlgOverlay.style.display = 'block';\n _this.dlgContainer.style.display = 'flex';\n removeClass([_this.dlgOverlay], 'e-fade');\n if (!isNullOrUndefined(_this.targetEle)) {\n if (_this.targetEle === document.body) {\n _this.dlgContainer.style.position = 'fixed';\n }\n else {\n _this.dlgContainer.style.position = 'absolute';\n }\n _this.dlgOverlay.style.position = 'absolute';\n var targetType = _this.getTargetContainer(_this.target);\n if (targetType instanceof Element) {\n var computedStyle = window.getComputedStyle(targetType);\n if (computedStyle.getPropertyValue('direction') === 'rtl') {\n _this.element.style.position = 'absolute';\n }\n else {\n _this.element.style.position = 'relative';\n }\n }\n else {\n _this.element.style.position = 'relative';\n }\n addClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n else {\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n var openAnimation = {\n name: (_this.animationSettings.effect === 'None' && animationMode === 'Enable') ? 'Zoom' + 'In' : _this.animationSettings.effect + 'In',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n var zIndexElement = (_this.isModal) ? _this.element.parentElement : _this.element;\n if (_this.calculatezIndex) {\n _this.setzIndex(zIndexElement, true);\n setStyleAttribute(_this.element, { 'zIndex': _this.zIndex });\n if (_this.isModal) {\n _this.setOverlayZindex(_this.zIndex);\n }\n }\n // eslint-disable-next-line\n (_this.animationSettings.effect === 'None' && animationMode === 'Enable') ? _this.popupObj.show(openAnimation) : ((_this.animationSettings.effect === 'None') ? _this.popupObj.show() : _this.popupObj.show(openAnimation));\n _this.dialogOpen = true;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = true;\n _this.preventVisibility = true;\n _this.isProtectedOnChange = prevOnChange;\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.renderReactTemplates();\n }\n };\n /**\n * Closes the dialog if it is in visible state.\n *\n * @param { Event } event - specifies the event\n * @returns {void}\n */\n Dialog.prototype.hide = function (event) {\n var _this = this;\n if (!this.element.classList.contains(ROOT)) {\n return;\n }\n if (this.preventVisibility) {\n var eventArgs = isBlazor() ? {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event\n } : {\n cancel: false,\n isInteracted: event ? true : false,\n element: this.element,\n target: this.target,\n container: this.isModal ? this.dlgContainer : this.element,\n event: event,\n closedBy: this.dlgClosedBy\n };\n this.closeArgs = eventArgs;\n this.trigger('beforeClose', eventArgs, function (beforeCloseArgs) {\n if (!beforeCloseArgs.cancel) {\n if (_this.isModal) {\n if (!isNullOrUndefined(_this.targetEle)) {\n removeClass([_this.targetEle], [DLG_TARGET, SCROLL_DISABLED]);\n }\n }\n if (document.body.classList.contains(DLG_TARGET) &&\n document.body.classList.contains(SCROLL_DISABLED)) {\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n }\n var closeAnimation = {\n name: (_this.animationSettings.effect === 'None' && animationMode === 'Enable') ? 'Zoom' + 'Out' : _this.animationSettings.effect + 'Out',\n duration: _this.animationSettings.duration,\n delay: _this.animationSettings.delay\n };\n // eslint-disable-next-line\n (_this.animationSettings.effect === 'None' && animationMode === 'Enable') ? _this.popupObj.hide(closeAnimation) : ((_this.animationSettings.effect === 'None') ? _this.popupObj.hide() : _this.popupObj.hide(closeAnimation));\n _this.dialogOpen = false;\n var prevOnChange = _this.isProtectedOnChange;\n _this.isProtectedOnChange = true;\n _this.visible = false;\n _this.preventVisibility = false;\n _this.isProtectedOnChange = prevOnChange;\n }\n _this.dlgClosedBy = DLG_USER_ACTION_CLOSED;\n });\n }\n };\n // eslint-disable-next-line\n /**\n * Specifies to view the Full screen Dialog.\n *\n * @returns {void}\n * @private\n */\n Dialog.prototype.fullScreen = function (args) {\n /* eslint-disable */\n var top = this.element.offsetTop;\n var left = this.element.offsetLeft;\n /* eslint-enable */\n if (args) {\n this.element.style.top = document.scrollingElement.scrollTop + 'px';\n addClass([this.element], FULLSCREEN);\n var display = this.element.style.display;\n this.element.style.display = 'none';\n this.element.style.maxHeight = (!isNullOrUndefined(this.target)) ?\n (this.targetEle.offsetHeight) + 'px' : (window.innerHeight) + 'px';\n this.element.style.display = display;\n addClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && !isNullOrUndefined(this.dragObj)) {\n this.dragObj.destroy();\n }\n }\n else {\n removeClass([this.element], FULLSCREEN);\n removeClass([document.body], [DLG_TARGET, SCROLL_DISABLED]);\n if (this.allowDragging && (!isNullOrUndefined(this.headerContent))) {\n this.setAllowDragging();\n }\n }\n return args;\n };\n /**\n * Returns the dialog button instances.\n * Based on that, you can dynamically change the button states.\n *\n * @param { number } index - Index of the button.\n * @returns {Button} - returns the button element\n */\n Dialog.prototype.getButtons = function (index) {\n if (!isNullOrUndefined(index)) {\n return this.btnObj[index];\n }\n return this.btnObj;\n };\n __decorate([\n Property('')\n ], Dialog.prototype, \"content\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"showCloseIcon\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"isModal\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"header\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"visible\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"enableResize\", void 0);\n __decorate([\n Property(['South-East'])\n ], Dialog.prototype, \"resizeHandles\", void 0);\n __decorate([\n Property('auto')\n ], Dialog.prototype, \"height\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"minHeight\", void 0);\n __decorate([\n Property('100%')\n ], Dialog.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"cssClass\", void 0);\n __decorate([\n Property(1000)\n ], Dialog.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], Dialog.prototype, \"target\", void 0);\n __decorate([\n Property('')\n ], Dialog.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], Dialog.prototype, \"allowDragging\", void 0);\n __decorate([\n Collection([{}], ButtonProps)\n ], Dialog.prototype, \"buttons\", void 0);\n __decorate([\n Property(true)\n ], Dialog.prototype, \"closeOnEscape\", void 0);\n __decorate([\n Complex({}, AnimationSettings)\n ], Dialog.prototype, \"animationSettings\", void 0);\n __decorate([\n Complex({ X: 'center', Y: 'center' }, PositionData)\n ], Dialog.prototype, \"position\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeSanitizeHtml\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"overlayClick\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Dialog.prototype, \"destroyed\", void 0);\n Dialog = __decorate([\n NotifyPropertyChanges\n ], Dialog);\n return Dialog;\n}(Component));\nexport { Dialog };\n/**\n * Base for creating Alert and Confirmation Dialog through util method.\n */\n// eslint-disable-next-line\nexport var DialogUtility;\n(function (DialogUtility) {\n /**\n * An alert dialog box is used to display warning like messages to the users.\n * ```\n * Eg : DialogUtility.alert('Alert message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {AlertDialogArgs} args - specifies the string\n * @returns {Dialog} - returns the dialog element.\n */\n function alert(args) {\n // eslint-disable-next-line\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_ALERT });\n document.body.appendChild(dialogElement);\n var alertDialogObj;\n var okButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n alertDialogObj = createDialog({ content: args,\n position: { X: 'center', Y: 'top' },\n isModal: true, header: DLG_UTIL_DEFAULT_TITLE,\n buttons: okButtonModel }, dialogElement);\n }\n else {\n alertDialogObj = createDialog(alertOptions(args), dialogElement);\n }\n alertDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(alertDialogObj);\n }\n alertDialogObj.destroy();\n if (alertDialogObj.element.classList.contains('e-dlg-modal')) {\n alertDialogObj.element.parentElement.remove();\n alertDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n alertDialogObj.element.remove();\n }\n };\n return alertDialogObj;\n }\n DialogUtility.alert = alert;\n /**\n * A confirm dialog displays a specified message along with ‘OK’ and ‘Cancel’ button.\n * ```\n * Eg : DialogUtility.confirm('Confirm dialog message');\n *\n * ```\n */\n /* istanbul ignore next */\n /**\n *\n * @param {ConfirmDialogArgs} args - specifies the args\n * @returns {Dialog} - returns te element\n */\n function confirm(args) {\n // eslint-disable-next-line\n var dialogComponent;\n var dialogElement = createElement('div', { 'className': DLG_UTIL_CONFIRM });\n document.body.appendChild(dialogElement);\n var confirmDialogObj;\n var okCancelButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }, {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n }];\n if (typeof (args) === 'string') {\n confirmDialogObj = createDialog({ position: { X: 'center', Y: 'top' }, content: args, isModal: true,\n header: DLG_UTIL_DEFAULT_TITLE, buttons: okCancelButtonModel\n }, dialogElement);\n }\n else {\n confirmDialogObj = createDialog(confirmOptions(args), dialogElement);\n }\n confirmDialogObj.close = function () {\n if (args && args.close) {\n args.close.apply(confirmDialogObj);\n }\n confirmDialogObj.destroy();\n if (confirmDialogObj.element.classList.contains('e-dlg-modal')) {\n confirmDialogObj.element.parentElement.remove();\n confirmDialogObj.target.classList.remove(DLG_UTIL_ROOT);\n }\n else {\n confirmDialogObj.element.remove();\n }\n };\n return confirmDialogObj;\n }\n DialogUtility.confirm = confirm;\n // eslint-disable-next-line\n function createDialog(options, element) {\n var dialogObject = new Dialog(options);\n dialogObject.appendTo(element);\n return dialogObject;\n }\n // eslint-disable-next-line\n function alertOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setAlertButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function confirmOptions(option) {\n var options = {};\n options.buttons = [];\n options = formOptions(options, option);\n options = setConfirmButtonModel(options, option);\n return options;\n }\n // eslint-disable-next-line\n function formOptions(options, option) {\n options.header = !isNullOrUndefined(option.title) ? option.title : null;\n options.content = !isNullOrUndefined(option.content) ? option.content : '';\n options.isModal = !isNullOrUndefined(option.isModal) ? option.isModal : true;\n options.showCloseIcon = !isNullOrUndefined(option.showCloseIcon) ? option.showCloseIcon : false;\n options.allowDragging = !isNullOrUndefined(option.isDraggable) ? option.isDraggable : false;\n options.closeOnEscape = !isNullOrUndefined(option.closeOnEscape) ? option.closeOnEscape : false;\n options.position = !isNullOrUndefined(option.position) ? option.position : { X: 'center', Y: 'top' };\n options.animationSettings = !isNullOrUndefined(option.animationSettings) ? option.animationSettings :\n { effect: 'Fade', duration: 400, delay: 0 };\n options.cssClass = !isNullOrUndefined(option.cssClass) ? option.cssClass : '';\n options.zIndex = !isNullOrUndefined(option.zIndex) ? option.zIndex : 1000;\n options.open = !isNullOrUndefined(option.open) ? option.open : null;\n options.width = !isNullOrUndefined(option.width) ? option.width : 'auto';\n options.height = !isNullOrUndefined(option.height) ? option.height : 'auto';\n return options;\n }\n // eslint-disable-next-line\n function setAlertButtonModel(options, option) {\n var alertButtonModel = [{\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n }];\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, alertButtonModel[0]);\n }\n else {\n options.buttons = alertButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function setConfirmButtonModel(options, option) {\n var okButtonModel = {\n buttonModel: { isPrimary: true, content: 'OK' },\n click: function () {\n this.hide();\n }\n };\n var cancelButtonModel = {\n buttonModel: { content: 'Cancel' },\n click: function () {\n this.hide();\n }\n };\n if (!isNullOrUndefined(option.okButton)) {\n options.buttons[0] = formButtonModel(options.buttons[0], option.okButton, okButtonModel);\n }\n else {\n options.buttons[0] = okButtonModel;\n }\n if (!isNullOrUndefined(option.cancelButton)) {\n options.buttons[1] = formButtonModel(options.buttons[1], option.cancelButton, cancelButtonModel);\n }\n else {\n options.buttons[1] = cancelButtonModel;\n }\n return options;\n }\n // eslint-disable-next-line\n function formButtonModel(buttonModel, option, buttonPropModel) {\n var buttonProps = buttonPropModel;\n if (!isNullOrUndefined(option.text)) {\n buttonProps.buttonModel.content = option.text;\n }\n if (!isNullOrUndefined(option.icon)) {\n buttonProps.buttonModel.iconCss = option.icon;\n }\n if (!isNullOrUndefined(option.cssClass)) {\n buttonProps.buttonModel.cssClass = option.cssClass;\n }\n if (!isNullOrUndefined(option.click)) {\n buttonProps.click = option.click;\n }\n if (!isNullOrUndefined(option.isFlat)) {\n buttonProps.isFlat = option.isFlat;\n }\n return buttonProps;\n }\n})(DialogUtility || (DialogUtility = {}));\n","/* eslint-disable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\nimport { createElement, attributes, addClass, removeClass, detach, classList } from '@syncfusion/ej2-base';\nimport { closest, formatUnit, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nvar CLASSNAMES = {\n RTL: 'e-rtl',\n DISABLE: 'e-disabled',\n INPUT: 'e-input',\n TEXTAREA: 'e-multi-line-input',\n INPUTGROUP: 'e-input-group',\n FLOATINPUT: 'e-float-input',\n FLOATLINE: 'e-float-line',\n FLOATTEXT: 'e-float-text',\n FLOATTEXTCONTENT: 'e-float-text-content',\n CLEARICON: 'e-clear-icon',\n CLEARICONHIDE: 'e-clear-icon-hide',\n LABELTOP: 'e-label-top',\n LABELBOTTOM: 'e-label-bottom',\n NOFLOATLABEL: 'e-no-float-label',\n INPUTCUSTOMTAG: 'e-input-custom-tag',\n FLOATCUSTOMTAG: 'e-float-custom-tag'\n};\n/**\n * Base for Input creation through util methods.\n */\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var Input;\n(function (Input) {\n var privateInputObj = {\n container: null,\n buttons: [],\n clearButton: null\n };\n var floatType;\n var isBindClearAction = true;\n /**\n * Create a wrapper to input element with multiple span elements and set the basic properties to input based components.\n * ```\n * E.g : Input.createInput({ element: element, floatLabelType : \"Auto\", properties: { placeholder: 'Search' } });\n * ```\n *\n */\n function createInput(args, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var inputObject = { container: null, buttons: [], clearButton: null };\n floatType = args.floatLabelType;\n isBindClearAction = args.bindClearAction;\n if (isNullOrUndefined(args.floatLabelType) || args.floatLabelType === 'Never') {\n inputObject.container = createInputContainer(args, CLASSNAMES.INPUTGROUP, CLASSNAMES.INPUTCUSTOMTAG, 'span', makeElement);\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n addClass([args.element], CLASSNAMES.INPUT);\n inputObject.container.appendChild(args.element);\n }\n else {\n createFloatingInput(args, inputObject, makeElement);\n }\n bindInitialEvent(args);\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.showClearButton) &&\n args.properties.showClearButton) {\n setClearButton(args.properties.showClearButton, args.element, inputObject, true, makeElement);\n inputObject.clearButton.setAttribute('role', 'button');\n if (inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n addClass([inputObject.container], CLASSNAMES.INPUTGROUP);\n }\n }\n if (!isNullOrUndefined(args.buttons)) {\n for (var i = 0; i < args.buttons.length; i++) {\n inputObject.buttons.push(appendSpan(args.buttons[i], inputObject.container, makeElement));\n }\n }\n if (!isNullOrUndefined(args.element) && args.element.tagName === 'TEXTAREA') {\n addClass([inputObject.container], CLASSNAMES.TEXTAREA);\n }\n validateInputType(inputObject.container, args.element);\n inputObject = setPropertyValue(args, inputObject);\n createSpanElement(inputObject.container, makeElement);\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n privateInputObj = inputObject;\n return inputObject;\n }\n Input.createInput = createInput;\n function bindInitialEvent(args) {\n checkInputValue(args.floatLabelType, args.element);\n args.element.addEventListener('focus', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.add('e-input-focus');\n }\n if (args.floatLabelType === 'Auto') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n });\n args.element.addEventListener('blur', function () {\n var parent = getParentNode(this);\n if (parent.classList.contains('e-input-group') || parent.classList.contains('e-outline')\n || parent.classList.contains('e-filled')) {\n parent.classList.remove('e-input-focus');\n }\n if (args.floatLabelType === 'Auto' && args.element.value === '') {\n setTimeout(function () {\n Input.calculateWidth(args.element, parent);\n }, 80);\n }\n });\n args.element.addEventListener('input', function () {\n checkInputValue(floatType, args.element);\n });\n }\n Input.bindInitialEvent = bindInitialEvent;\n function checkInputValue(floatLabelType, inputElement) {\n var inputValue = inputElement.value;\n var inputParent = inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputValue !== '' && !isNullOrUndefined(inputValue)) {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.add('e-valid-input');\n }\n else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.add('e-valid-input');\n }\n }\n else if (floatLabelType !== 'Always') {\n if (inputParent && inputParent.classList.contains('e-input-group')) {\n inputParent.classList.remove('e-valid-input');\n }\n else if (grandParent && grandParent.classList.contains('e-input-group')) {\n grandParent.classList.remove('e-valid-input');\n }\n }\n }\n function _focusFn() {\n var label = getParentNode(this).getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function _blurFn() {\n var parent = getParentNode(this);\n if ((parent.getElementsByTagName('textarea')[0]) ? parent.getElementsByTagName('textarea')[0].value === '' :\n parent.getElementsByTagName('input')[0].value === '') {\n var label = parent.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(label)) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function wireFloatingEvents(element) {\n element.addEventListener('focus', _focusFn);\n element.addEventListener('blur', _blurFn);\n }\n Input.wireFloatingEvents = wireFloatingEvents;\n function unwireFloatingEvents(element) {\n element.removeEventListener('focus', _focusFn);\n element.removeEventListener('blur', _blurFn);\n }\n function createFloatingInput(args, inputObject, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (args.floatLabelType === 'Auto') {\n wireFloatingEvents(args.element);\n }\n if (isNullOrUndefined(inputObject.container)) {\n inputObject.container = createInputContainer(args, CLASSNAMES.FLOATINPUT, CLASSNAMES.FLOATCUSTOMTAG, 'div', makeElement);\n inputObject.container.classList.add(CLASSNAMES.INPUTGROUP);\n if (args.element.parentNode) {\n args.element.parentNode.insertBefore(inputObject.container, args.element);\n }\n }\n else {\n if (!isNullOrUndefined(args.customTag)) {\n inputObject.container.classList.add(CLASSNAMES.FLOATCUSTOMTAG);\n }\n inputObject.container.classList.add(CLASSNAMES.FLOATINPUT);\n }\n var floatLinelement = makeElement('span', { className: CLASSNAMES.FLOATLINE });\n var floatLabelElement = makeElement('label', { className: CLASSNAMES.FLOATTEXT });\n if (!isNullOrUndefined(args.element.id) && args.element.id !== '') {\n floatLabelElement.id = 'label_' + args.element.id.replace(/ /g, '_');\n attributes(args.element, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(args.element.placeholder) && args.element.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.element.placeholder);\n args.element.removeAttribute('placeholder');\n }\n if (!isNullOrUndefined(args.properties) && !isNullOrUndefined(args.properties.placeholder) &&\n args.properties.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceHolder(args.properties.placeholder);\n }\n if (!floatLabelElement.innerText) {\n inputObject.container.classList.add(CLASSNAMES.NOFLOATLABEL);\n }\n if (inputObject.container.classList.contains('e-float-icon-left')) {\n var inputWrap = inputObject.container.querySelector('.e-input-in-wrap');\n inputWrap.appendChild(args.element);\n inputWrap.appendChild(floatLinelement);\n inputWrap.appendChild(floatLabelElement);\n }\n else {\n inputObject.container.appendChild(args.element);\n inputObject.container.appendChild(floatLinelement);\n inputObject.container.appendChild(floatLabelElement);\n }\n updateLabelState(args.element.value, floatLabelElement);\n if (args.floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([floatLabelElement], CLASSNAMES.LABELBOTTOM);\n }\n addClass([floatLabelElement], CLASSNAMES.LABELTOP);\n }\n if (args.floatLabelType === 'Auto') {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('input', function (event) {\n validateLabel(args.element, args.floatLabelType);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n args.element.addEventListener('blur', function (event) {\n validateLabel(args.element, args.floatLabelType);\n });\n }\n if (!isNullOrUndefined(args.element.getAttribute('id'))) {\n floatLabelElement.setAttribute('for', args.element.getAttribute('id'));\n }\n }\n function checkFloatLabelType(type, container) {\n if (type === 'Always' && container.classList.contains('e-outline')) {\n container.classList.add('e-valid-input');\n }\n }\n function setPropertyValue(args, inputObject) {\n if (!isNullOrUndefined(args.properties)) {\n for (var _i = 0, _a = Object.keys(args.properties); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'cssClass':\n setCssClass(args.properties.cssClass, [inputObject.container]);\n checkFloatLabelType(args.floatLabelType, inputObject.container);\n break;\n case 'enabled':\n setEnabled(args.properties.enabled, args.element, args.floatLabelType, inputObject.container);\n break;\n case 'enableRtl':\n setEnableRtl(args.properties.enableRtl, [inputObject.container]);\n break;\n case 'placeholder':\n setPlaceholder(args.properties.placeholder, args.element);\n break;\n case 'readonly':\n setReadonly(args.properties.readonly, args.element);\n break;\n }\n }\n }\n return inputObject;\n }\n function updateIconState(value, button, readonly) {\n if (!isNullOrUndefined(button)) {\n if (value && !readonly) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n function updateLabelState(value, label, element) {\n if (element === void 0) { element = null; }\n if (value) {\n addClass([label], CLASSNAMES.LABELTOP);\n if (label.classList.contains(CLASSNAMES.LABELBOTTOM)) {\n removeClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n else {\n var isNotFocused = element != null ? element !== document.activeElement : true;\n if (isNotFocused) {\n if (label.classList.contains(CLASSNAMES.LABELTOP)) {\n removeClass([label], CLASSNAMES.LABELTOP);\n }\n addClass([label], CLASSNAMES.LABELBOTTOM);\n }\n }\n }\n function getParentNode(element) {\n var parentNode = isNullOrUndefined(element.parentNode) ? element\n : element.parentNode;\n if (parentNode && parentNode.classList.contains('e-input-in-wrap')) {\n parentNode = parentNode.parentNode;\n }\n return parentNode;\n }\n /**\n * To create clear button.\n */\n function createClearButton(element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = makeElement('span', { className: CLASSNAMES.CLEARICON });\n var container = inputObject.container;\n if (!isNullOrUndefined(initial)) {\n container.appendChild(button);\n }\n else {\n var baseElement = inputObject.container.classList.contains(CLASSNAMES.FLOATINPUT) ?\n inputObject.container.querySelector('.' + CLASSNAMES.FLOATTEXT) : element;\n baseElement.insertAdjacentElement('afterend', button);\n }\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n wireClearBtnEvents(element, button, container);\n button.setAttribute('aria-label', 'close');\n return button;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n function wireClearBtnEvents(element, button, container) {\n if (isBindClearAction === undefined || isBindClearAction) {\n button.addEventListener('click', function (event) {\n if (!(element.classList.contains(CLASSNAMES.DISABLE) || element.readOnly)) {\n event.preventDefault();\n if (element !== document.activeElement) {\n element.focus();\n }\n element.value = '';\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n });\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('input', function (event) {\n updateIconState(element.value, button);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('focus', function (event) {\n updateIconState(element.value, button, element.readOnly);\n });\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n element.addEventListener('blur', function (event) {\n setTimeout(function () {\n if (!isNullOrUndefined(button)) {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n button = !isNullOrUndefined(element) && element.classList.contains('e-combobox') ? null : button;\n }\n }, 200);\n });\n }\n Input.wireClearBtnEvents = wireClearBtnEvents;\n function destroy() {\n privateInputObj = null;\n }\n Input.destroy = destroy;\n function validateLabel(element, floatLabelType) {\n var parent = getParentNode(element);\n if (parent.classList.contains(CLASSNAMES.FLOATINPUT) && floatLabelType === 'Auto') {\n var label = getParentNode(element).getElementsByClassName('e-float-text')[0];\n updateLabelState(element.value, label, element);\n }\n }\n /**\n * To create input box contianer.\n */\n function createInputContainer(args, className, tagClass, tag, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container;\n if (!isNullOrUndefined(args.customTag)) {\n container = makeElement(args.customTag, { className: className });\n container.classList.add(tagClass);\n }\n else {\n container = makeElement(tag, { className: className });\n }\n container.classList.add('e-control-wrapper');\n return container;\n }\n function encodePlaceHolder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanEle = document.createElement('span');\n spanEle.innerHTML = '';\n var hiddenInput = (spanEle.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n }\n /**\n * Sets the value to the input element.\n * ```\n * E.g : Input.setValue('content', element, \"Auto\", true );\n * ```\n *\n * @param {string} value - Specify the value of the input element.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the specified value is updated.\n * @param {string} floatLabelType - Specify the float label type of the input element.\n * @param {boolean} clearButton - Boolean value to specify whether the clear icon is enabled / disabled on the input.\n */\n function setValue(value, element, floatLabelType, clearButton) {\n element.value = value;\n if (floatLabelType === 'Auto' && value === '') {\n calculateWidth(element, element.parentElement);\n }\n if ((!isNullOrUndefined(floatLabelType)) && floatLabelType === 'Auto') {\n validateLabel(element, floatLabelType);\n }\n if (!isNullOrUndefined(clearButton) && clearButton) {\n var parentElement = getParentNode(element);\n if (!isNullOrUndefined(parentElement)) {\n var button = parentElement.getElementsByClassName(CLASSNAMES.CLEARICON)[0];\n if (!isNullOrUndefined(button)) {\n if (element.value && !isNullOrUndefined(parentElement) && parentElement.classList.contains('e-input-focus')) {\n removeClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n else {\n addClass([button], CLASSNAMES.CLEARICONHIDE);\n }\n }\n }\n }\n checkInputValue(floatLabelType, element);\n }\n Input.setValue = setValue;\n /**\n * Sets the single or multiple cssClass to wrapper of input element.\n * ```\n * E.g : Input.setCssClass('e-custom-class', [element]);\n * ```\n *\n * @param {string} cssClass - Css class names which are needed to add.\n * @param {Element[] | NodeList} elements - The elements which are needed to add / remove classes.\n * @param {string} oldClass\n * - Css class names which are needed to remove. If old classes are need to remove, can give this optional parameter.\n */\n function setCssClass(cssClass, elements, oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n removeClass(elements, oldClass.split(' '));\n }\n if (!isNullOrUndefined(cssClass) && cssClass !== '') {\n addClass(elements, cssClass.split(' '));\n }\n }\n Input.setCssClass = setCssClass;\n /**\n * Set the width to the placeholder when it overflows on the button such as spinbutton, clearbutton, icon etc\n * ```\n * E.g : Input.calculateWidth(element, container);\n * ```\n *\n * @param {any} element - Input element which is need to add.\n * @param {HTMLElement} container - The parent element which is need to get the label span to calculate width\n */\n function calculateWidth(element, container, moduleName) {\n var elementWidth = moduleName === 'multiselect' ? element : element.clientWidth - parseInt(getComputedStyle(element, null).getPropertyValue('padding-left'), 10);\n if (!isNullOrUndefined(container.getElementsByClassName('e-float-text-content')[0])) {\n if (container.getElementsByClassName('e-float-text-content')[0].classList.contains('e-float-text-overflow')) {\n container.getElementsByClassName('e-float-text-content')[0].classList.remove('e-float-text-overflow');\n }\n if (elementWidth < container.getElementsByClassName('e-float-text-content')[0].clientWidth || elementWidth === container.getElementsByClassName('e-float-text-content')[0].clientWidth) {\n container.getElementsByClassName('e-float-text-content')[0].classList.add('e-float-text-overflow');\n }\n }\n }\n Input.calculateWidth = calculateWidth;\n /**\n * Set the width to the wrapper of input element.\n * ```\n * E.g : Input.setWidth('200px', container);\n * ```\n *\n * @param {number | string} width - Width value which is need to add.\n * @param {HTMLElement} container - The element on which the width is need to add.\n */\n function setWidth(width, container) {\n if (typeof width === 'number') {\n container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n calculateWidth(container.firstChild, container);\n }\n Input.setWidth = setWidth;\n /**\n * Set the placeholder attribute to the input element.\n * ```\n * E.g : Input.setPlaceholder('Search here', element);\n * ```\n *\n * @param {string} placeholder - Placeholder value which is need to add.\n * @param {HTMLInputElement | HTMLTextAreaElement} element - The element on which the placeholder is need to add.\n */\n function setPlaceholder(placeholder, element) {\n placeholder = encodePlaceHolder(placeholder);\n var parentElement = getParentNode(element);\n if (parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = placeholder : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = placeholder;\n parentElement.classList.remove(CLASSNAMES.NOFLOATLABEL);\n element.removeAttribute('placeholder');\n }\n else {\n parentElement.classList.add(CLASSNAMES.NOFLOATLABEL);\n parentElement.getElementsByClassName('e-float-text-content')[0] ? parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].children[0].textContent = '' : parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n }\n else {\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n attributes(element, { 'placeholder': placeholder });\n }\n else {\n element.removeAttribute('placeholder');\n }\n }\n }\n Input.setPlaceholder = setPlaceholder;\n /**\n * Set the read only attribute to the input element\n * ```\n * E.g : Input.setReadonly(true, element);\n * ```\n *\n * @param {boolean} isReadonly\n * - Boolean value to specify whether to set read only. Setting \"True\" value enables read only.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - The element which is need to enable read only.\n */\n function setReadonly(isReadonly, element, floatLabelType) {\n if (isReadonly) {\n attributes(element, { readonly: '' });\n }\n else {\n element.removeAttribute('readonly');\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setReadonly = setReadonly;\n /**\n * Displays the element direction from right to left when its enabled.\n * ```\n * E.g : Input.setEnableRtl(true, [inputObj.container]);\n * ```\n *\n * @param {boolean} isRtl\n * - Boolean value to specify whether to set RTL. Setting \"True\" value enables the RTL mode.\n * @param {Element[] | NodeList} elements\n * - The elements that are needed to enable/disable RTL.\n */\n function setEnableRtl(isRtl, elements) {\n if (isRtl) {\n addClass(elements, CLASSNAMES.RTL);\n }\n else {\n removeClass(elements, CLASSNAMES.RTL);\n }\n }\n Input.setEnableRtl = setEnableRtl;\n /**\n * Enables or disables the given input element.\n * ```\n * E.g : Input.setEnabled(false, element);\n * ```\n *\n * @param {boolean} isEnable\n * - Boolean value to specify whether to enable or disable.\n * @param {HTMLInputElement | HTMLTextAreaElement} element\n * - Element to be enabled or disabled.\n */\n function setEnabled(isEnable, element, floatLabelType, inputContainer) {\n var disabledAttrs = { 'disabled': 'disabled', 'aria-disabled': 'true' };\n var considerWrapper = isNullOrUndefined(inputContainer) ? false : true;\n if (isEnable) {\n element.classList.remove(CLASSNAMES.DISABLE);\n removeAttributes(disabledAttrs, element);\n if (considerWrapper) {\n removeClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n else {\n element.classList.add(CLASSNAMES.DISABLE);\n addAttributes(disabledAttrs, element);\n if (considerWrapper) {\n addClass([inputContainer], CLASSNAMES.DISABLE);\n }\n }\n if (!isNullOrUndefined(floatLabelType)) {\n validateLabel(element, floatLabelType);\n }\n }\n Input.setEnabled = setEnabled;\n function setClearButton(isClear, element, inputObject, initial, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n if (isClear) {\n inputObject.clearButton = createClearButton(element, inputObject, initial, makeElement);\n }\n else {\n remove(inputObject.clearButton);\n inputObject.clearButton = null;\n }\n }\n Input.setClearButton = setClearButton;\n /**\n * Removing the multiple attributes from the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.removeAttributes({ 'disabled': 'disabled', 'aria-disabled': 'true' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which are need to removed from the element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be removed.\n */\n function removeAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.remove(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = '';\n }\n else {\n element.removeAttribute(key);\n }\n }\n }\n Input.removeAttributes = removeAttributes;\n /**\n * Adding the multiple attributes to the given element such as \"disabled\",\"id\" , etc.\n * ```\n * E.g : Input.addAttributes({ 'id': 'inputpopup' }, element);\n * ```\n *\n * @param {string} attrs\n * - Array of attributes which is added to element.\n * @param {HTMLInputElement | HTMLElement} element\n * - Element on which the attributes are needed to be added.\n */\n function addAttributes(attrs, element) {\n for (var _i = 0, _a = Object.keys(attrs); _i < _a.length; _i++) {\n var key = _a[_i];\n var parentElement = getParentNode(element);\n if (key === 'disabled') {\n element.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'disabled' && parentElement.classList.contains(CLASSNAMES.INPUTGROUP)) {\n parentElement.classList.add(CLASSNAMES.DISABLE);\n }\n if (key === 'placeholder' && parentElement.classList.contains(CLASSNAMES.FLOATINPUT)) {\n parentElement.getElementsByClassName(CLASSNAMES.FLOATTEXT)[0].textContent = attrs[\"\" + key];\n }\n else {\n element.setAttribute(key, attrs[\"\" + key]);\n }\n }\n }\n Input.addAttributes = addAttributes;\n function removeFloating(input) {\n var container = input.container;\n if (!isNullOrUndefined(container) && container.classList.contains(CLASSNAMES.FLOATINPUT)) {\n var inputEle = container.querySelector('textarea') ? container.querySelector('textarea') :\n container.querySelector('input');\n var placeholder = container.querySelector('.' + CLASSNAMES.FLOATTEXT).textContent;\n var clearButton = container.querySelector('.e-clear-icon') !== null;\n detach(container.querySelector('.' + CLASSNAMES.FLOATLINE));\n detach(container.querySelector('.' + CLASSNAMES.FLOATTEXT));\n classList(container, [CLASSNAMES.INPUTGROUP], [CLASSNAMES.FLOATINPUT]);\n unwireFloatingEvents(inputEle);\n attributes(inputEle, { 'placeholder': placeholder });\n inputEle.classList.add(CLASSNAMES.INPUT);\n if (!clearButton && inputEle.tagName === 'INPUT') {\n inputEle.removeAttribute('required');\n }\n }\n }\n Input.removeFloating = removeFloating;\n function addFloating(input, type, placeholder, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var container = closest(input, '.' + CLASSNAMES.INPUTGROUP);\n floatType = type;\n if (type !== 'Never') {\n var customTag = container.tagName;\n customTag = customTag !== 'DIV' && customTag !== 'SPAN' ? customTag : null;\n var args = { element: input, floatLabelType: type,\n customTag: customTag, properties: { placeholder: placeholder } };\n var iconEle = container.querySelector('.e-clear-icon');\n var inputObj = { container: container };\n input.classList.remove(CLASSNAMES.INPUT);\n createFloatingInput(args, inputObj, makeElement);\n createSpanElement(inputObj.container, makeElement);\n calculateWidth(args.element, inputObj.container);\n var isPrependIcon = container.classList.contains('e-float-icon-left');\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n var inputWrap = container.querySelector('.e-input-in-wrap');\n iconEle = inputWrap.querySelector('.e-input-group-icon');\n }\n else {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n if (isNullOrUndefined(iconEle)) {\n if (isPrependIcon) {\n iconEle = container.querySelector('.e-input-group-icon');\n }\n }\n else {\n var floatLine = container.querySelector('.' + CLASSNAMES.FLOATLINE);\n var floatText = container.querySelector('.' + CLASSNAMES.FLOATTEXT);\n var wrapper = isPrependIcon ? container.querySelector('.e-input-in-wrap') : container;\n wrapper.insertBefore(input, iconEle);\n wrapper.insertBefore(floatLine, iconEle);\n wrapper.insertBefore(floatText, iconEle);\n }\n }\n checkFloatLabelType(type, input.parentElement);\n }\n Input.addFloating = addFloating;\n /**\n * Create the span inside the label and add the label text into the span textcontent\n * ```\n * E.g : Input.createSpanElement(inputObject, makeElement);\n * ```\n *\n * @param {InputObject} inputObject\n * - Element which is need to get the label\n * @param {createElementParams} makeElement\n * - Element which is need to create the span\n */\n function createSpanElement(inputObject, makeElement) {\n if (inputObject.classList.contains('e-outline') && inputObject.getElementsByClassName('e-float-text')[0]) {\n var labelSpanElement = makeElement('span', { className: CLASSNAMES.FLOATTEXTCONTENT });\n labelSpanElement.innerHTML = inputObject.getElementsByClassName('e-float-text')[0].innerHTML;\n inputObject.getElementsByClassName('e-float-text')[0].innerHTML = '';\n inputObject.getElementsByClassName('e-float-text')[0].appendChild(labelSpanElement);\n }\n }\n Input.createSpanElement = createSpanElement;\n /**\n * Enable or Disable the ripple effect on the icons inside the Input. Ripple effect is only applicable for material theme.\n * ```\n * E.g : Input.setRipple(true, [inputObjects]);\n * ```\n *\n * @param {boolean} isRipple\n * - Boolean value to specify whether to enable the ripple effect.\n * @param {InputObject[]} inputObj\n * - Specify the collection of input objects.\n */\n function setRipple(isRipple, inputObj) {\n for (var i = 0; i < inputObj.length; i++) {\n _internalRipple(isRipple, inputObj[parseInt(i.toString())].container);\n }\n }\n Input.setRipple = setRipple;\n function _internalRipple(isRipple, container, button) {\n var argsButton = [];\n argsButton.push(button);\n var buttons = isNullOrUndefined(button) ?\n container.querySelectorAll('.e-input-group-icon') : argsButton;\n if (isRipple && buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].addEventListener('mousedown', _onMouseDownRipple, false);\n buttons[parseInt(index.toString())].addEventListener('mouseup', _onMouseUpRipple, false);\n }\n }\n else if (buttons.length > 0) {\n for (var index = 0; index < buttons.length; index++) {\n buttons[parseInt(index.toString())].removeEventListener('mousedown', _onMouseDownRipple, this);\n buttons[parseInt(index.toString())].removeEventListener('mouseup', _onMouseUpRipple, this);\n }\n }\n }\n function _onMouseRipple(container, button) {\n if (!container.classList.contains('e-disabled') && !container.querySelector('input').readOnly) {\n button.classList.add('e-input-btn-ripple');\n }\n }\n function _onMouseDownRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n var parentEle = this.parentElement;\n while (!parentEle.classList.contains('e-input-group')) {\n parentEle = parentEle.parentElement;\n }\n _onMouseRipple(parentEle, ele);\n }\n function _onMouseUpRipple() {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var ele = this;\n setTimeout(function () {\n ele.classList.remove('e-input-btn-ripple');\n }, 500);\n }\n function createIconEle(iconClass, makeElement) {\n var button = makeElement('span', { className: iconClass });\n button.classList.add('e-input-group-icon');\n return button;\n }\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.addIcon('append', 'e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} position - Specify the icon placement on the input.Possible values are append and prepend.\n * @param {string | string[]} icons - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} input - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function addIcon(position, icons, container, input, internalCreate) {\n /* eslint-enable @typescript-eslint/indent */\n var result = typeof (icons) === 'string' ? icons.split(',')\n : icons;\n if (position.toLowerCase() === 'append') {\n for (var _i = 0, result_1 = result; _i < result_1.length; _i++) {\n var icon = result_1[_i];\n appendSpan(icon, container, internalCreate);\n }\n }\n else {\n for (var _a = 0, result_2 = result; _a < result_2.length; _a++) {\n var icon = result_2[_a];\n prependSpan(icon, container, input, internalCreate);\n }\n }\n if (container.getElementsByClassName('e-input-group-icon')[0] && container.getElementsByClassName('e-float-text-overflow')[0]) {\n container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n }\n Input.addIcon = addIcon;\n /**\n * Creates a new span element with the given icons added and prepend it in input element.\n * ```\n * E.g : Input.prependSpan('e-icon-spin', inputObj.container, inputElement);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n * @param {HTMLElement} inputElement - The inputElement on which created span element is going to prepend.\n */\n /* eslint-disable @typescript-eslint/indent */\n function prependSpan(iconClass, container, inputElement, internalCreateElement) {\n /* eslint-enable @typescript-eslint/indent */\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n container.classList.add('e-float-icon-left');\n var innerWrapper = container.querySelector('.e-input-in-wrap');\n if (isNullOrUndefined(innerWrapper)) {\n innerWrapper = makeElement('span', { className: 'e-input-in-wrap' });\n inputElement.parentNode.insertBefore(innerWrapper, inputElement);\n var result = container.querySelectorAll(inputElement.tagName + ' ~ *');\n innerWrapper.appendChild(inputElement);\n for (var i = 0; i < result.length; i++) {\n var element = result[parseInt(i.toString())];\n var parentElement = innerWrapper.parentElement;\n if (!(element.classList.contains('e-float-line')) || (!(parentElement && parentElement.classList.contains('e-filled')) && parentElement)) {\n innerWrapper.appendChild(element);\n }\n }\n }\n innerWrapper.parentNode.insertBefore(button, innerWrapper);\n _internalRipple(true, container, button);\n return button;\n }\n Input.prependSpan = prependSpan;\n /**\n * Creates a new span element with the given icons added and append it in container element.\n * ```\n * E.g : Input.appendSpan('e-icon-spin', inputObj.container);\n * ```\n *\n * @param {string} iconClass - Icon classes which are need to add to the span element which is going to created.\n * Span element acts as icon or button element for input.\n * @param {HTMLElement} container - The container on which created span element is going to append.\n */\n function appendSpan(iconClass, container, internalCreateElement) {\n var makeElement = !isNullOrUndefined(internalCreateElement) ? internalCreateElement : createElement;\n var button = createIconEle(iconClass, makeElement);\n var wrap = (container.classList.contains('e-float-icon-left')) ? container.querySelector('.e-input-in-wrap') :\n container;\n wrap.appendChild(button);\n _internalRipple(true, container, button);\n return button;\n }\n Input.appendSpan = appendSpan;\n function validateInputType(containerElement, input) {\n if (input.type === 'hidden') {\n containerElement.classList.add('e-hidden');\n }\n else if (containerElement.classList.contains('e-hidden')) {\n containerElement.classList.remove('e-hidden');\n }\n }\n Input.validateInputType = validateInputType;\n})(Input || (Input = {}));\n/* eslint-enable valid-jsdoc, jsdoc/require-jsdoc, jsdoc/require-returns, jsdoc/require-param */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { selectAll, select, createElement, Base, detach } from '@syncfusion/ej2-base';\nimport { extend, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, Event, onIntlChange } from '@syncfusion/ej2-base';\nimport { Internationalization, L10n } from '@syncfusion/ej2-base';\n/**\n * global declarations\n */\n// eslint-disable-next-line @typescript-eslint/no-explicit-any\nexport var regex = {\n /* eslint-disable no-useless-escape */\n EMAIL: new RegExp('^[A-Za-z0-9._%+-]{1,}@[A-Za-z0-9._%+-]{1,}([.]{1}[a-zA-Z0-9]{2,}' +\n '|[.]{1}[a-zA-Z0-9]{2,4}[.]{1}[a-zA-Z0-9]{2,4})$'),\n /* eslint-disable-next-line security/detect-unsafe-regex */\n URL: /^(?:http(s)?:\\/\\/)?[\\w.-]+(?:\\.[\\w\\.-]+)+[\\w\\-\\._~:/?#[\\]@!\\$&'\\(\\)\\*\\+,;=.]+$/m,\n DATE_ISO: new RegExp('^([0-9]{4})-(0[1-9]|1[0-2])-(0[1-9]|[1-2][0-9]|3[0-1])$'),\n DIGITS: new RegExp('^[0-9]*$'),\n PHONE: new RegExp('^[+]?[0-9]{9,13}$'),\n CREDITCARD: new RegExp('^\\\\d{13,16}$')\n /* eslint-enable no-useless-escape */\n};\n/**\n * ErrorOption values\n *\n * @private\n */\nexport var ErrorOption;\n(function (ErrorOption) {\n /**\n * Defines the error message.\n */\n ErrorOption[ErrorOption[\"Message\"] = 0] = \"Message\";\n /**\n * Defines the error element type.\n */\n ErrorOption[ErrorOption[\"Label\"] = 1] = \"Label\";\n})(ErrorOption || (ErrorOption = {}));\n/**\n * FormValidator class enables you to validate the form fields based on your defined rules\n * ```html\n *
\n * \n * \n *
\n * \n * ```\n */\nvar FormValidator = /** @class */ (function (_super) {\n __extends(FormValidator, _super);\n /**\n * Initializes the FormValidator.\n *\n * @param {string | HTMLFormElement} element - Specifies the element to render as component.\n * @param {FormValidatorModel} options - Specifies the FormValidator model.\n * @private\n */\n function FormValidator(element, options) {\n var _this = _super.call(this, options, element) || this;\n _this.validated = [];\n _this.errorRules = [];\n _this.allowSubmit = false;\n _this.required = 'required';\n _this.infoElement = null;\n _this.inputElement = null;\n _this.selectQuery = 'input:not([type=reset]):not([type=button]), select, textarea';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.localyMessage = {};\n /**\n * Specifies the default messages for validation rules.\n *\n * @default { List of validation message }\n */\n _this.defaultMessages = {\n required: 'This field is required.',\n email: 'Please enter a valid email address.',\n url: 'Please enter a valid URL.',\n date: 'Please enter a valid date.',\n dateIso: 'Please enter a valid date ( ISO ).',\n creditcard: 'Please enter valid card number',\n number: 'Please enter a valid number.',\n digits: 'Please enter only digits.',\n maxLength: 'Please enter no more than {0} characters.',\n minLength: 'Please enter at least {0} characters.',\n rangeLength: 'Please enter a value between {0} and {1} characters long.',\n range: 'Please enter a value between {0} and {1}.',\n max: 'Please enter a value less than or equal to {0}.',\n min: 'Please enter a value greater than or equal to {0}.',\n regex: 'Please enter a correct value.',\n tel: 'Please enter a valid phone number.',\n pattern: 'Please enter a correct pattern value.',\n equalTo: 'Please enter the valid match text'\n };\n if (typeof _this.rules === 'undefined') {\n _this.rules = {};\n }\n _this.l10n = new L10n('formValidator', _this.defaultMessages, _this.locale);\n if (_this.locale) {\n _this.localeFunc();\n }\n onIntlChange.on('notifyExternalChange', _this.afterLocalization, _this);\n element = typeof element === 'string' ? select(element, document) : element;\n // Set novalidate to prevent default HTML5 form validation\n if (_this.element != null) {\n _this.element.setAttribute('novalidate', '');\n _this.inputElements = selectAll(_this.selectQuery, _this.element);\n _this.createHTML5Rules();\n _this.wireEvents();\n }\n else {\n return undefined;\n }\n return _this;\n }\n FormValidator_1 = FormValidator;\n /* eslint-enable @typescript-eslint/no-explicit-any */\n /**\n * Add validation rules to the corresponding input element based on `name` attribute.\n *\n * @param {string} name `name` of form field.\n * @param {Object} rules Validation rules for the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.addRules = function (name, rules) {\n if (name) {\n // eslint-disable-next-line no-prototype-builtins\n if (this.rules.hasOwnProperty(name)) {\n extend(this.rules[\"\" + name], rules, {});\n }\n else {\n this.rules[\"\" + name] = rules;\n }\n }\n };\n /**\n * Remove validation to the corresponding field based on name attribute.\n * When no parameter is passed, remove all the validations in the form.\n *\n * @param {string} name Input name attribute value.\n * @param {string[]} rules List of validation rules need to be remove from the corresponding element.\n * @returns {void}\n */\n FormValidator.prototype.removeRules = function (name, rules) {\n if (!name && !rules) {\n this.rules = {};\n }\n else if (this.rules[\"\" + name] && !rules) {\n delete this.rules[\"\" + name];\n }\n else if (!isNullOrUndefined(this.rules[\"\" + name] && rules)) {\n for (var i = 0; i < rules.length; i++) {\n delete this.rules[\"\" + name][rules[parseInt(i.toString())]];\n }\n }\n else {\n return;\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Validate the current form values using defined rules.\n * Returns `true` when the form is valid otherwise `false`\n *\n * @param {string} selected - Optional parameter to validate specified element.\n * @returns {boolean}\n */\n FormValidator.prototype.validate = function (selected) {\n var rules = Object.keys(this.rules);\n if (selected && rules.length) {\n this.validateRules(selected);\n //filter the selected element it don't have any valid input element\n return rules.indexOf(selected) !== -1 && this.errorRules.filter(function (data) {\n return data.name === selected;\n }).length === 0;\n }\n else {\n this.errorRules = [];\n for (var _i = 0, rules_1 = rules; _i < rules_1.length; _i++) {\n var name_1 = rules_1[_i];\n this.validateRules(name_1);\n }\n return this.errorRules.length === 0;\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Reset the value of all the fields in form.\n *\n * @returns {void}\n */\n FormValidator.prototype.reset = function () {\n this.element.reset();\n this.clearForm();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Get input element by name.\n *\n * @param {string} name - Input element name attribute value.\n * @returns {HTMLInputElement}\n */\n FormValidator.prototype.getInputElement = function (name) {\n this.inputElement = (select('[name=\"' + name + '\"]', this.element));\n return this.inputElement;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Destroy the form validator object and error elements.\n *\n * @returns {void}\n */\n FormValidator.prototype.destroy = function () {\n this.reset();\n this.unwireEvents();\n this.rules = {};\n var elements = selectAll('.' + this.errorClass + ', .' + this.validClass, this.element);\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var element = elements_1[_i];\n detach(element);\n }\n _super.prototype.destroy.call(this);\n this.infoElement = null;\n onIntlChange.off('notifyExternalChange', this.afterLocalization);\n };\n /**\n * @param {FormValidatorModel} newProp - Returns the dynamic property value of the component.\n * @param {FormValidatorModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n FormValidator.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'locale':\n this.localeFunc();\n break;\n }\n }\n };\n /**\n * @private\n * @returns {void}\n */\n FormValidator.prototype.localeFunc = function () {\n for (var _i = 0, _a = Object.keys(this.defaultMessages); _i < _a.length; _i++) {\n var key = _a[_i];\n this.l10n.setLocale(this.locale);\n var value = this.l10n.getConstant(key);\n this.localyMessage[\"\" + key] = value;\n }\n };\n /**\n * @private\n * @returns {string} - Returns the component name.\n */\n FormValidator.prototype.getModuleName = function () {\n return 'formvalidator';\n };\n /**\n * @param {any} args - Specifies the culture name.\n * @private\n */\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/explicit-module-boundary-types\n FormValidator.prototype.afterLocalization = function (args) {\n this.locale = args.locale;\n this.localeFunc();\n };\n /**\n * Allows you to refresh the form validator base events to the elements inside the form.\n *\n * @returns {void}\n */\n FormValidator.prototype.refresh = function () {\n this.unwireEvents();\n this.inputElements = selectAll(this.selectQuery, this.element);\n this.wireEvents();\n };\n FormValidator.prototype.clearForm = function () {\n this.errorRules = [];\n this.validated = [];\n var elements = selectAll(this.selectQuery, this.element);\n for (var _i = 0, elements_2 = elements; _i < elements_2.length; _i++) {\n var element = elements_2[_i];\n var input = element;\n input.removeAttribute('aria-invalid');\n var inputParent = input.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (input.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.remove(this.errorClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.errorClass);\n }\n else {\n input.classList.remove(this.errorClass);\n }\n if (input.name.length > 0) {\n this.getInputElement(input.name);\n this.getErrorElement(input.name);\n this.hideMessage(input.name);\n }\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (input.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.remove(this.validClass);\n }\n else {\n input.classList.remove(this.validClass);\n }\n }\n };\n FormValidator.prototype.createHTML5Rules = function () {\n var defRules = ['required', 'validateHidden', 'regex', 'rangeLength', 'maxLength', 'minLength', 'dateIso', 'digits',\n 'pattern', 'data-val-required', 'type', 'data-validation', 'min', 'max', 'range', 'equalTo', 'data-val-minlength-min',\n 'data-val-equalto-other', 'data-val-maxlength-max', 'data-val-range-min', 'data-val-regex-pattern', 'data-val-length-max',\n 'data-val-creditcard', 'data-val-phone'];\n var acceptedTypes = ['hidden', 'email', 'url', 'date', 'number', 'tel'];\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n // Default attribute rules\n var allRule = {};\n for (var _b = 0, defRules_1 = defRules; _b < defRules_1.length; _b++) {\n var rule = defRules_1[_b];\n if (input.getAttribute(rule) !== null) {\n switch (rule) {\n case 'required':\n this.defRule(input, allRule, rule, input.required);\n break;\n case 'data-validation':\n rule = input.getAttribute(rule);\n this.defRule(input, allRule, rule, true);\n break;\n case 'type':\n if (acceptedTypes.indexOf(input.type) !== -1) {\n this.defRule(input, allRule, input.type, true);\n }\n break;\n case 'rangeLength':\n case 'range':\n this.defRule(input, allRule, rule, JSON.parse(input.getAttribute(rule)));\n break;\n case 'equalTo':\n {\n var id = input.getAttribute(rule);\n this.defRule(input, allRule, rule, id);\n }\n break;\n default:\n if (input.getAttribute('data-val') === 'true') {\n this.annotationRule(input, allRule, rule, input.getAttribute(rule));\n }\n else {\n this.defRule(input, allRule, rule, input.getAttribute(rule));\n }\n }\n }\n }\n //adding pattern type validation\n if (Object.keys(allRule).length !== 0) {\n this.addRules(input.name, allRule);\n }\n }\n };\n FormValidator.prototype.annotationRule = function (input, ruleCon, ruleName, value) {\n var annotationRule = ruleName.split('-');\n var rulesList = ['required', 'creditcard', 'phone', 'maxlength', 'minlength', 'range', 'regex', 'equalto'];\n var ruleFirstName = annotationRule[annotationRule.length - 1];\n var ruleSecondName = annotationRule[annotationRule.length - 2];\n if (rulesList.indexOf(ruleFirstName) !== -1) {\n switch (ruleFirstName) {\n case 'required':\n this.defRule(input, ruleCon, 'required', value);\n break;\n case 'creditcard':\n this.defRule(input, ruleCon, 'creditcard', value);\n break;\n case 'phone':\n this.defRule(input, ruleCon, 'tel', value);\n break;\n }\n }\n else if (rulesList.indexOf(ruleSecondName) !== -1) {\n switch (ruleSecondName) {\n case 'maxlength':\n this.defRule(input, ruleCon, 'maxLength', value);\n break;\n case 'minlength':\n this.defRule(input, ruleCon, 'minLength', value);\n break;\n case 'range':\n {\n var minvalue = input.getAttribute('data-val-range-min');\n var maxvalue = input.getAttribute('data-val-range-max');\n this.defRule(input, ruleCon, 'range', [minvalue, maxvalue]);\n }\n break;\n case 'equalto':\n {\n var id = input.getAttribute(ruleName).split('.');\n this.defRule(input, ruleCon, 'equalTo', id[id.length - 1]);\n }\n break;\n case 'regex':\n this.defRule(input, ruleCon, 'regex', value);\n break;\n }\n }\n };\n FormValidator.prototype.defRule = function (input, ruleCon, ruleName, value) {\n var message = input.getAttribute('data-' + ruleName + '-message');\n var annotationMessage = input.getAttribute('data-val-' + ruleName);\n var customMessage;\n if (this.rules[input.name] && ruleName !== 'validateHidden' && ruleName !== 'hidden') {\n this.getInputElement(input.name);\n customMessage = this.getErrorMessage(this.rules[input.name][\"\" + ruleName], ruleName);\n }\n if (message) {\n value = [value, message];\n }\n else if (annotationMessage) {\n value = [value, annotationMessage];\n }\n else if (customMessage) {\n value = [value, customMessage];\n }\n ruleCon[\"\" + ruleName] = value;\n };\n // Wire events to the form elements\n FormValidator.prototype.wireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n if (FormValidator_1.isCheckable(input)) {\n EventHandler.add(input, 'click', this.clickHandler, this);\n }\n else if (input.tagName === 'SELECT') {\n EventHandler.add(input, 'change', this.changeHandler, this);\n }\n else {\n EventHandler.add(input, 'focusout', this.focusOutHandler, this);\n EventHandler.add(input, 'keyup', this.keyUpHandler, this);\n }\n }\n EventHandler.add(this.element, 'submit', this.submitHandler, this);\n EventHandler.add(this.element, 'reset', this.resetHandler, this);\n };\n // UnWire events to the form elements\n FormValidator.prototype.unwireEvents = function () {\n for (var _i = 0, _a = (this.inputElements); _i < _a.length; _i++) {\n var input = _a[_i];\n EventHandler.clearEvents(input);\n }\n EventHandler.remove(this.element, 'submit', this.submitHandler);\n EventHandler.remove(this.element, 'reset', this.resetHandler);\n };\n // Handle input element focusout event\n FormValidator.prototype.focusOutHandler = function (e) {\n this.trigger('focusout', e);\n //FormValidator.triggerCallback(this.focusout, e);\n var element = e.target;\n if (this.rules[element.name]) {\n if (this.rules[element.name][this.required] || element.value.length > 0) {\n this.validate(element.name);\n }\n else if (this.validated.indexOf(element.name) === -1) {\n this.validated.push(element.name);\n }\n }\n };\n // Handle input element keyup event\n FormValidator.prototype.keyUpHandler = function (e) {\n this.trigger('keyup', e);\n var element = e.target;\n // List of keys need to prevent while validation\n var excludeKeys = [16, 17, 18, 20, 35, 36, 37, 38, 39, 40, 45, 144, 225];\n if (e.which === 9 && (!this.rules[element.name] || (this.rules[element.name] && !this.rules[element.name][this.required]))) {\n return;\n }\n if (this.validated.indexOf(element.name) !== -1 && this.rules[element.name] && excludeKeys.indexOf(e.which) === -1) {\n this.validate(element.name);\n }\n };\n // Handle input click event\n FormValidator.prototype.clickHandler = function (e) {\n this.trigger('click', e);\n var element = e.target;\n // If element type is not submit allow validation\n if (element.type !== 'submit') {\n this.validate(element.name);\n }\n else if (element.getAttribute('formnovalidate') !== null) {\n // Prevent form validation, if submit button has formnovalidate attribute\n this.allowSubmit = true;\n }\n };\n // Handle input change event\n FormValidator.prototype.changeHandler = function (e) {\n this.trigger('change', e);\n var element = e.target;\n this.validate(element.name);\n };\n // Handle form submit event\n FormValidator.prototype.submitHandler = function (e) {\n this.trigger('submit', e);\n //FormValidator.triggerCallback(this.submit, e);\n // Prevent form submit if validation failed\n if (!this.allowSubmit && !this.validate()) {\n e.preventDefault();\n }\n else {\n this.allowSubmit = false;\n }\n };\n // Handle form reset\n FormValidator.prototype.resetHandler = function () {\n this.clearForm();\n };\n // Validate each rule based on input element name\n FormValidator.prototype.validateRules = function (name) {\n if (!this.rules[\"\" + name]) {\n return;\n }\n var rules = Object.keys(this.rules[\"\" + name]);\n var hiddenType = false;\n var validateHiddenType = false;\n var vhPos = rules.indexOf('validateHidden');\n var hPos = rules.indexOf('hidden');\n this.getInputElement(name);\n if (hPos !== -1) {\n hiddenType = true;\n }\n if (vhPos !== -1) {\n validateHiddenType = true;\n }\n if (!hiddenType || (hiddenType && validateHiddenType)) {\n if (vhPos !== -1) {\n rules.splice(vhPos, 1);\n }\n if (hPos !== -1) {\n rules.splice((hPos - 1), 1);\n }\n this.getErrorElement(name);\n for (var _i = 0, rules_2 = rules; _i < rules_2.length; _i++) {\n var rule = rules_2[_i];\n var errorMessage = this.getErrorMessage(this.rules[\"\" + name][\"\" + rule], rule);\n var errorRule = { name: name, message: errorMessage };\n var eventArgs = {\n inputName: name,\n element: this.inputElement,\n message: errorMessage\n };\n if (!this.isValid(name, rule) && !this.inputElement.classList.contains(this.ignore)) {\n this.removeErrorRules(name);\n this.errorRules.push(errorRule);\n // Set aria attributes to invalid elements\n this.inputElement.setAttribute('aria-invalid', 'true');\n this.inputElement.setAttribute('aria-describedby', this.inputElement.id + '-info');\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n if (!this.infoElement) {\n this.createErrorElement(name, errorRule.message, this.inputElement);\n }\n else {\n this.showMessage(errorRule);\n }\n eventArgs.errorElement = this.infoElement;\n eventArgs.status = 'failure';\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.errorClass);\n inputParent.classList.remove(this.validClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.errorClass);\n grandParent.classList.remove(this.validClass);\n }\n else {\n this.inputElement.classList.add(this.errorClass);\n this.inputElement.classList.remove(this.validClass);\n }\n this.optionalValidationStatus(name, eventArgs);\n this.trigger('validationComplete', eventArgs);\n // Set aria-required to required rule elements\n if (rule === 'required') {\n this.inputElement.setAttribute('aria-required', 'true');\n }\n break;\n }\n else {\n this.hideMessage(name);\n eventArgs.status = 'success';\n this.trigger('validationComplete', eventArgs);\n }\n }\n }\n else {\n return;\n }\n };\n // Update the optional validation status\n FormValidator.prototype.optionalValidationStatus = function (name, refer) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n refer.status = '';\n this.hideMessage(name);\n }\n };\n // Check the input element whether it's value satisfy the validation rule or not\n FormValidator.prototype.isValid = function (name, rule) {\n var params = this.rules[\"\" + name][\"\" + rule];\n var param = (params instanceof Array && typeof params[1] === 'string') ? params[0] : params;\n var currentRule = this.rules[\"\" + name][\"\" + rule];\n var args = { value: this.inputElement.value, param: param, element: this.inputElement, formElement: this.element };\n this.trigger('validationBegin', args);\n if (!args.param && rule === 'required') {\n return true;\n }\n if (currentRule && typeof currentRule[0] === 'function') {\n var fn = currentRule[0];\n return fn.call(this, { element: this.inputElement, value: this.inputElement.value });\n }\n else if (FormValidator_1.isCheckable(this.inputElement)) {\n if (rule !== 'required') {\n return true;\n }\n return selectAll('input[name=\"' + name + '\"]:checked', this.element).length > 0;\n }\n else {\n return FormValidator_1.checkValidator[\"\" + rule](args);\n }\n };\n // Return default error message or custom error message\n FormValidator.prototype.getErrorMessage = function (ruleValue, rule) {\n var message = this.inputElement.getAttribute('data-' + rule + '-message') ?\n this.inputElement.getAttribute('data-' + rule + '-message') :\n (ruleValue instanceof Array && typeof ruleValue[1] === 'string') ? ruleValue[1] :\n (Object.keys(this.localyMessage).length !== 0) ? this.localyMessage[\"\" + rule] : this.defaultMessages[\"\" + rule];\n var formats = message.match(/{(\\d)}/g);\n if (!isNullOrUndefined(formats)) {\n for (var i = 0; i < formats.length; i++) {\n var value = ruleValue instanceof Array ? ruleValue[parseInt(i.toString())] : ruleValue;\n message = message.replace(formats[parseInt(i.toString())], value);\n }\n }\n return message;\n };\n // Create error element based on name and error message\n FormValidator.prototype.createErrorElement = function (name, message, input) {\n var errorElement = createElement(this.errorElement, {\n className: this.errorClass,\n innerHTML: message,\n attrs: { for: name }\n });\n // Create message design if errorOption is message\n if (this.errorOption === ErrorOption.Message) {\n errorElement.classList.remove(this.errorClass);\n errorElement.classList.add('e-message');\n errorElement = createElement(this.errorContainer, { className: this.errorClass, innerHTML: errorElement.outerHTML });\n }\n errorElement.id = this.inputElement.name + '-info';\n // Append error message into MVC error message element\n if (this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]')) {\n this.element.querySelector('[data-valmsg-for=\"' + input.id + '\"]').appendChild(errorElement);\n }\n else if (input.hasAttribute('data-msg-containerid') === true) {\n // Append error message into custom div element\n var containerId = input.getAttribute('data-msg-containerid');\n var divElement = select('#' + containerId, this.element);\n divElement.appendChild(errorElement);\n }\n else if (this.customPlacement != null) {\n // Call custom placement function if customPlacement is not null\n this.customPlacement.call(this, this.inputElement, errorElement);\n }\n else {\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper')) {\n grandParent.insertBefore(errorElement, inputParent.nextSibling);\n }\n else if (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper')) {\n grandParent.parentElement.insertBefore(errorElement, grandParent.nextSibling);\n }\n else {\n inputParent.insertBefore(errorElement, this.inputElement.nextSibling);\n }\n }\n errorElement.style.display = 'block';\n this.getErrorElement(name);\n this.validated.push(name);\n this.checkRequired(name);\n };\n // Get error element by name\n FormValidator.prototype.getErrorElement = function (name) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass, this.inputElement.parentElement);\n if (!this.infoElement) {\n this.infoElement = select(this.errorElement + '.' + this.errorClass + '[for=\"' + name + '\"]', this.element);\n }\n return this.infoElement;\n };\n // Remove existing rule from errorRules object\n FormValidator.prototype.removeErrorRules = function (name) {\n for (var i = 0; i < this.errorRules.length; i++) {\n var rule = this.errorRules[parseInt(i.toString())];\n if (rule.name === name) {\n this.errorRules.splice(i, 1);\n }\n }\n };\n // Show error message to the input element\n FormValidator.prototype.showMessage = function (errorRule) {\n this.infoElement.style.display = 'block';\n this.infoElement.innerHTML = errorRule.message;\n this.checkRequired(errorRule.name);\n };\n // Hide error message based on input name\n FormValidator.prototype.hideMessage = function (name) {\n if (this.infoElement) {\n this.infoElement.style.display = 'none';\n this.removeErrorRules(name);\n var inputParent = this.inputElement.parentElement;\n var grandParent = inputParent.parentElement;\n if (inputParent.classList.contains('e-control-wrapper') || inputParent.classList.contains('e-wrapper') || (this.inputElement.classList.contains('e-input') && inputParent.classList.contains('e-input-group'))) {\n inputParent.classList.add(this.validClass);\n inputParent.classList.remove(this.errorClass);\n }\n else if ((grandParent != null) && (grandParent.classList.contains('e-control-wrapper') || grandParent.classList.contains('e-wrapper'))) {\n grandParent.classList.add(this.validClass);\n grandParent.classList.remove(this.errorClass);\n }\n else {\n this.inputElement.classList.add(this.validClass);\n this.inputElement.classList.remove(this.errorClass);\n }\n this.inputElement.setAttribute('aria-invalid', 'false');\n }\n };\n // Check whether the input element have required rule and its value is not empty\n FormValidator.prototype.checkRequired = function (name) {\n if (!this.rules[\"\" + name][this.required] && !this.inputElement.value.length && !isNullOrUndefined(this.infoElement)) {\n this.infoElement.innerHTML = this.inputElement.value;\n this.infoElement.setAttribute('aria-invalid', 'false');\n this.hideMessage(name);\n }\n };\n // Return boolean result if the input have chekcable or submit types\n FormValidator.isCheckable = function (input) {\n var inputType = input.getAttribute('type');\n return inputType && (inputType === 'checkbox' || inputType === 'radio' || inputType === 'submit');\n };\n var FormValidator_1;\n // List of function to validate the rules\n FormValidator.checkValidator = {\n required: function (option) {\n return !isNaN(Date.parse(option.value)) ? !isNaN(new Date(option.value).getTime()) : option.value.toString().length > 0;\n },\n email: function (option) {\n return regex.EMAIL.test(option.value);\n },\n url: function (option) {\n return regex.URL.test(option.value);\n },\n dateIso: function (option) {\n return regex.DATE_ISO.test(option.value);\n },\n tel: function (option) {\n return regex.PHONE.test(option.value);\n },\n creditcard: function (option) {\n return regex.CREDITCARD.test(option.value);\n },\n number: function (option) {\n return !isNaN(Number(option.value)) && option.value.indexOf(' ') === -1;\n },\n digits: function (option) {\n return regex.DIGITS.test(option.value);\n },\n maxLength: function (option) {\n return option.value.length <= option.param;\n },\n minLength: function (option) {\n return option.value.length >= option.param;\n },\n rangeLength: function (option) {\n var param = option.param;\n return option.value.length >= param[0] && option.value.length <= param[1];\n },\n range: function (option) {\n var param = option.param;\n return !isNaN(Number(option.value)) && Number(option.value) >= param[0] && Number(option.value) <= param[1];\n },\n date: function (option) {\n if (!isNullOrUndefined(option.param) && (typeof (option.param) === 'string' && option.param !== '')) {\n var globalize = new Internationalization;\n var dateOptions = { format: option.param.toString(), type: 'dateTime', skeleton: 'yMd' };\n var dateValue = globalize.parseDate(option.value, dateOptions);\n return (!isNullOrUndefined(dateValue) && dateValue instanceof Date && !isNaN(+dateValue));\n }\n else {\n return !isNaN(new Date(option.value).getTime());\n }\n },\n max: function (option) {\n if (!isNaN(Number(option.value))) {\n // Maximum rule validation for number\n return +option.value <= option.param;\n }\n // Maximum rule validation for date\n return new Date(option.value).getTime() <= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n },\n min: function (option) {\n if (!isNaN(Number(option.value))) {\n // Minimum rule validation for number\n return +option.value >= option.param;\n }\n else if ((option.value).indexOf(',') !== -1) {\n var uNum = (option.value).replace(/,/g, '');\n return parseFloat(uNum) >= option.param;\n }\n else {\n // Minimum rule validation for date\n return new Date(option.value).getTime() >= new Date(JSON.parse(JSON.stringify(option.param))).getTime();\n }\n },\n regex: function (option) {\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp(option.param).test(option.value);\n },\n equalTo: function (option) {\n var compareTo = option.formElement.querySelector('#' + option.param);\n option.param = compareTo.value;\n return option.param === option.value;\n }\n };\n __decorate([\n Property('')\n ], FormValidator.prototype, \"locale\", void 0);\n __decorate([\n Property('e-hidden')\n ], FormValidator.prototype, \"ignore\", void 0);\n __decorate([\n Property()\n ], FormValidator.prototype, \"rules\", void 0);\n __decorate([\n Property('e-error')\n ], FormValidator.prototype, \"errorClass\", void 0);\n __decorate([\n Property('e-valid')\n ], FormValidator.prototype, \"validClass\", void 0);\n __decorate([\n Property('label')\n ], FormValidator.prototype, \"errorElement\", void 0);\n __decorate([\n Property('div')\n ], FormValidator.prototype, \"errorContainer\", void 0);\n __decorate([\n Property(ErrorOption.Label)\n ], FormValidator.prototype, \"errorOption\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"focusout\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"keyup\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"click\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"submit\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationBegin\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"validationComplete\", void 0);\n __decorate([\n Event()\n ], FormValidator.prototype, \"customPlacement\", void 0);\n FormValidator = FormValidator_1 = __decorate([\n NotifyPropertyChanges\n ], FormValidator);\n return FormValidator;\n}(Base));\nexport { FormValidator };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createElement, isNullOrUndefined, remove } from '@syncfusion/ej2-base';\nimport { FormValidator } from '@syncfusion/ej2-inputs';\nimport * as cls from '../base/css-constant';\n/**\n * Appointment window field validation\n */\nvar FieldValidator = /** @class */ (function () {\n function FieldValidator() {\n }\n FieldValidator.prototype.renderFormValidator = function (form, rules, element, locale) {\n var _this = this;\n this.element = element;\n this.formObj = new FormValidator(form, {\n locale: locale,\n customPlacement: function (inputElement, error) {\n _this.errorPlacement(inputElement, error);\n },\n rules: rules,\n validationComplete: function (args) {\n _this.validationComplete(args);\n },\n focusout: function (args) {\n _this.focusOut(args);\n }\n });\n };\n FieldValidator.prototype.focusOut = function (args) {\n var target = args.relatedTarget;\n if (target && (target.classList.contains('e-dlg-closeicon-btn') || target.classList.contains('e-close')\n || target.classList.contains(cls.ALLDAY_CELLS_CLASS) || target.classList.contains(cls.HEADER_CELLS_CLASS)\n || target.classList.contains(cls.QUICK_POPUP_EVENT_DETAILS_CLASS) || target.classList.contains(cls.WORK_CELLS_CLASS)\n || target.classList.contains(cls.EVENT_WINDOW_CANCEL_BUTTON_CLASS))) {\n this.ignoreError = true;\n }\n else {\n this.ignoreError = false;\n }\n };\n FieldValidator.prototype.validationComplete = function (args) {\n var elem = this.element.querySelector('#' + args.inputName + '_Error');\n if (elem) {\n elem.style.display = (args.status === 'failure') ? '' : 'none';\n }\n };\n FieldValidator.prototype.errorPlacement = function (inputElement, error) {\n var id = error.getAttribute('for');\n var elem = this.element.querySelector('#' + id + '_Error');\n if (!elem && !this.ignoreError) {\n this.createTooltip(inputElement, error, id, '');\n }\n if (!isNullOrUndefined(elem)) {\n elem.querySelector('.e-error').innerHTML = error.innerHTML;\n }\n };\n FieldValidator.prototype.createTooltip = function (element, error, name, display) {\n var dlgContent;\n var client;\n var inputClient = element.getBoundingClientRect();\n if (this.element.classList.contains(cls.POPUP_WRAPPER_CLASS)) {\n dlgContent = this.element;\n client = this.element.getBoundingClientRect();\n }\n else {\n dlgContent = this.element.querySelector('.e-schedule-dialog .e-dlg-content');\n client = dlgContent.getBoundingClientRect();\n }\n var div = createElement('div', {\n className: 'e-tooltip-wrap e-popup ' + cls.ERROR_VALIDATION_CLASS,\n id: name + '_Error',\n styles: 'display:' + display + ';top:' +\n (inputClient.bottom - client.top + dlgContent.scrollTop + 9) + 'px;left:' +\n (inputClient.left - client.left + dlgContent.scrollLeft + inputClient.width / 2) + 'px;'\n });\n var content = createElement('div', { className: 'e-tip-content' });\n content.appendChild(error);\n var arrow = createElement('div', { className: 'e-arrow-tip e-tip-top' });\n arrow.appendChild(createElement('div', { className: 'e-arrow-tip-outer e-tip-top' }));\n arrow.appendChild(createElement('div', { className: 'e-arrow-tip-inner e-tip-top' }));\n div.appendChild(content);\n div.appendChild(arrow);\n dlgContent.appendChild(div);\n div.style.left = (parseInt(div.style.left, 10) - div.offsetWidth / 2) + 'px';\n };\n FieldValidator.prototype.destroyToolTip = function () {\n if (this.element) {\n var elements = [].slice.call(this.element.querySelectorAll('.' + cls.ERROR_VALIDATION_CLASS));\n for (var _i = 0, elements_1 = elements; _i < elements_1.length; _i++) {\n var elem = elements_1[_i];\n remove(elem);\n }\n }\n if (this.formObj && this.formObj.element) {\n this.formObj.reset();\n }\n };\n FieldValidator.prototype.destroy = function () {\n if (this.formObj && this.formObj.element && !this.formObj.isDestroyed) {\n this.formObj.destroy();\n }\n this.formObj = null;\n this.element = null;\n };\n return FieldValidator;\n}());\nexport { FieldValidator };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { closest, EventHandler, isNullOrUndefined, formatUnit, append } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, createElement, remove, extend } from '@syncfusion/ej2-base';\nimport { Dialog, Popup, isCollide } from '@syncfusion/ej2-popups';\nimport { Button } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { FieldValidator } from './form-validator';\nimport * as event from '../base/constant';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\nvar EVENT_FIELD = 'e-field';\n/**\n * Quick Popups interactions\n */\nvar QuickPopups = /** @class */ (function () {\n function QuickPopups(parent) {\n this.isMultipleEventSelect = false;\n this.isCrudAction = false;\n this.parent = parent;\n this.l10n = this.parent.localeObj;\n this.fieldValidator = new FieldValidator();\n this.render();\n this.addEventListener();\n }\n QuickPopups.prototype.render = function () {\n this.renderQuickPopup();\n this.renderMorePopup();\n this.renderQuickDialog();\n };\n QuickPopups.prototype.renderQuickPopup = function () {\n var quickPopupWrapper = createElement('div', { className: cls.POPUP_WRAPPER_CLASS + ' e-popup-close', attrs: { role: 'dialog' } });\n if (this.parent.isAdaptive) {\n document.body.appendChild(quickPopupWrapper);\n addClass([quickPopupWrapper], cls.DEVICE_CLASS);\n }\n else {\n this.parent.element.appendChild(quickPopupWrapper);\n }\n this.quickPopup = new Popup(quickPopupWrapper, {\n targetType: (this.parent.isAdaptive ? 'container' : 'relative'),\n enableRtl: this.parent.enableRtl,\n open: this.quickPopupOpen.bind(this),\n close: this.quickPopupClose.bind(this),\n hideAnimation: (this.parent.isAdaptive ? { name: 'ZoomOut' } : { name: 'FadeOut', duration: 150 }),\n showAnimation: (this.parent.isAdaptive ? { name: 'ZoomIn' } : { name: 'FadeIn', duration: 150 }),\n collision: (this.parent.isAdaptive ? { X: 'fit', Y: 'fit' } :\n (this.parent.enableRtl ? { X: 'flip', Y: 'fit' } : { X: 'none', Y: 'fit' })),\n position: (this.parent.isAdaptive || this.parent.enableRtl ? { X: 'left', Y: 'top' } : { X: 'right', Y: 'top' }),\n viewPortElement: (this.parent.isAdaptive ? document.body : this.parent.element),\n zIndex: (this.parent.isAdaptive ? 1004 : 3)\n });\n };\n QuickPopups.prototype.renderMorePopup = function () {\n var moreEventPopup = \"
\" +\n (\"
\") +\n (\"
\") +\n (\"
\");\n var moreEventWrapper = createElement('div', {\n className: cls.MORE_POPUP_WRAPPER_CLASS + ' e-popup-close',\n innerHTML: moreEventPopup\n });\n if (this.parent.isAdaptive) {\n document.body.appendChild(moreEventWrapper);\n addClass([moreEventWrapper], cls.DEVICE_CLASS);\n }\n else {\n this.parent.element.appendChild(moreEventWrapper);\n }\n this.morePopup = new Popup(moreEventWrapper, {\n targetType: (this.parent.isAdaptive ? 'container' : 'relative'),\n enableRtl: this.parent.enableRtl,\n hideAnimation: { name: 'ZoomOut', duration: 300 },\n showAnimation: { name: 'ZoomIn', duration: 300 },\n open: this.morePopupOpen.bind(this),\n close: this.morePopupClose.bind(this),\n collision: (this.parent.isAdaptive ? { X: 'fit', Y: 'fit' } :\n (this.parent.enableRtl ? { X: 'flip', Y: 'fit' } : { X: 'flip', Y: 'flip' })),\n viewPortElement: (this.parent.isAdaptive ? document.body : this.parent.element),\n zIndex: (this.parent.isAdaptive ? 1002 : 2)\n });\n var closeButton = this.morePopup.element.querySelector('.' + cls.MORE_EVENT_CLOSE_CLASS);\n this.renderButton('e-round', cls.ICON + ' ' + cls.CLOSE_ICON_CLASS, false, closeButton, this.closeClick);\n EventHandler.add(this.morePopup.element.querySelector('.' + cls.MORE_EVENT_HEADER_DATE_CLASS), 'click', this.navigationClick, this);\n };\n QuickPopups.prototype.renderQuickDialog = function () {\n var buttonModel = [\n { buttonModel: { cssClass: 'e-quick-alertok e-flat', isPrimary: true }, click: this.dialogButtonClick.bind(this) },\n { buttonModel: { cssClass: 'e-quick-alertcancel e-flat', isPrimary: false }, click: this.dialogButtonClick.bind(this) },\n {\n buttonModel: { cssClass: 'e-quick-dialog-cancel e-disable e-flat', isPrimary: false },\n click: this.dialogButtonClick.bind(this)\n }\n ];\n if (this.parent.eventSettings.editFollowingEvents) {\n var followingSeriesButton = {\n buttonModel: { cssClass: 'e-quick-alertfollowing e-flat', isPrimary: false }, click: this.dialogButtonClick.bind(this)\n };\n buttonModel.splice(1, 0, followingSeriesButton);\n }\n this.quickDialog = new Dialog({\n animationSettings: { effect: 'Zoom' },\n buttons: buttonModel,\n cssClass: cls.QUICK_DIALOG_CLASS,\n closeOnEscape: true,\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n beforeClose: this.beforeQuickDialogClose.bind(this),\n isModal: true,\n position: { X: 'center', Y: 'center' },\n showCloseIcon: true,\n target: document.body,\n visible: false,\n width: 'auto'\n });\n var dialogElement = createElement('div', { id: this.parent.element.id + 'QuickDialog' });\n this.parent.element.appendChild(dialogElement);\n this.quickDialog.appendTo(dialogElement);\n var okButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n if (okButton) {\n okButton.setAttribute('aria-label', this.l10n.getConstant('occurrence'));\n okButton.setAttribute('aria-label', okButton.innerHTML);\n }\n var cancelButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n if (cancelButton) {\n cancelButton.setAttribute('aria-label', this.l10n.getConstant('series'));\n cancelButton.setAttribute('aria-label', cancelButton.innerHTML);\n }\n if (this.quickDialog.element.querySelector('.e-dlg-closeicon-btn')) {\n this.quickDialog.element.querySelector('.e-dlg-closeicon-btn').setAttribute('title', this.l10n.getConstant('close'));\n }\n };\n // eslint-disable-next-line max-len\n QuickPopups.prototype.renderButton = function (className, iconName, isDisabled, element, clickEvent) {\n var buttonObj = new Button({\n cssClass: className,\n disabled: isDisabled,\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n iconCss: iconName\n });\n buttonObj.appendTo(element);\n EventHandler.add(element, 'click', clickEvent, this);\n removeClass([element], cls.ICON);\n };\n QuickPopups.prototype.quickDialogClass = function (action) {\n var classList = [\n cls.QUICK_DIALOG_OCCURRENCE_CLASS, cls.QUICK_DIALOG_SERIES_CLASS, cls.QUICK_DIALOG_DELETE_CLASS,\n cls.QUICK_DIALOG_CANCEL_CLASS, cls.QUICK_DIALOG_ALERT_BTN_CLASS, cls.DISABLE_CLASS\n ];\n var okButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n var cancelButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n var followingEventButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_FOLLOWING);\n removeClass([okButton, cancelButton], classList);\n addClass([this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_CANCEL_CLASS)], cls.DISABLE_CLASS);\n if (this.parent.eventSettings.editFollowingEvents) {\n addClass([followingEventButton], cls.DISABLE_CLASS);\n removeClass([this.quickDialog.element], cls.FOLLOWING_EVENTS_DIALOG);\n }\n switch (action) {\n case 'Recurrence':\n addClass([okButton], cls.QUICK_DIALOG_OCCURRENCE_CLASS);\n addClass([cancelButton], cls.QUICK_DIALOG_SERIES_CLASS);\n if (this.parent.eventSettings.editFollowingEvents) {\n removeClass([followingEventButton], cls.DISABLE_CLASS);\n addClass([this.quickDialog.element], cls.FOLLOWING_EVENTS_DIALOG);\n addClass([followingEventButton], cls.QUICK_DIALOG_FOLLOWING_EVENTS_CLASS);\n }\n break;\n case 'Delete':\n addClass([okButton], cls.QUICK_DIALOG_DELETE_CLASS);\n addClass([cancelButton], cls.QUICK_DIALOG_CANCEL_CLASS);\n break;\n case 'Alert':\n addClass([okButton], [cls.QUICK_DIALOG_ALERT_OK, cls.QUICK_DIALOG_ALERT_BTN_CLASS]);\n addClass([cancelButton], [cls.QUICK_DIALOG_ALERT_CANCEL, cls.DISABLE_CLASS]);\n break;\n }\n };\n QuickPopups.prototype.applyFormValidation = function () {\n var form = this.quickPopup.element.querySelector('.' + cls.FORM_CLASS);\n var rules = {};\n rules[this.parent.eventSettings.fields.subject.name] = this.parent.eventSettings.fields.subject.validation;\n this.fieldValidator.renderFormValidator(form, rules, this.quickPopup.element, this.parent.locale);\n };\n QuickPopups.prototype.openRecurrenceAlert = function () {\n var editDeleteOnly = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n if (editDeleteOnly) {\n editDeleteOnly.innerHTML = this.l10n.getConstant(this.parent.currentAction === 'Delete' ? 'deleteEvent' : 'editEvent');\n editDeleteOnly.setAttribute('aria-label', editDeleteOnly.innerHTML);\n }\n var editFollowingEventsOnly = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_FOLLOWING);\n if (editFollowingEventsOnly) {\n editFollowingEventsOnly.innerHTML = this.l10n.getConstant('editFollowingEvent');\n editFollowingEventsOnly.setAttribute('aria-label', editFollowingEventsOnly.innerHTML);\n }\n var editDeleteSeries = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n if (editDeleteSeries) {\n editDeleteSeries.innerHTML = this.l10n.getConstant(this.parent.currentAction === 'Delete' ? 'deleteSeries' : 'editSeries');\n editDeleteSeries.setAttribute('aria-label', editDeleteSeries.innerHTML);\n }\n this.quickDialog.content = this.l10n.getConstant('editContent');\n this.quickDialog.header = this.l10n.getConstant(this.parent.currentAction === 'Delete' ? 'deleteTitle' : 'editTitle');\n this.quickDialogClass('Recurrence');\n this.showQuickDialog('RecurrenceAlert');\n };\n QuickPopups.prototype.openRecurrenceValidationAlert = function (type) {\n this.quickDialogClass('Alert');\n var okButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n okButton.innerHTML = this.l10n.getConstant('ok');\n okButton.setAttribute('aria-label', okButton.innerHTML);\n var cancelButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n cancelButton.innerHTML = this.l10n.getConstant('cancel');\n cancelButton.setAttribute('aria-label', cancelButton.innerHTML);\n this.quickDialog.header = this.l10n.getConstant('alert');\n var dialogCancel;\n switch (type) {\n case 'wrongPattern':\n addClass([cancelButton], cls.DISABLE_CLASS);\n this.quickDialog.content = this.l10n.getConstant('wrongPattern');\n break;\n case 'createError':\n addClass([cancelButton], cls.DISABLE_CLASS);\n this.quickDialog.content = this.l10n.getConstant('createError');\n break;\n case 'sameDayAlert':\n addClass([cancelButton], cls.DISABLE_CLASS);\n this.quickDialog.content = this.l10n.getConstant('sameDayAlert');\n break;\n case 'seriesChangeAlert':\n dialogCancel = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_CANCEL_CLASS);\n removeClass([cancelButton, dialogCancel], cls.DISABLE_CLASS);\n this.quickDialog.content = this.l10n.getConstant('seriesChangeAlert');\n okButton.innerHTML = this.l10n.getConstant('yes');\n cancelButton.innerHTML = this.l10n.getConstant('no');\n dialogCancel.innerHTML = this.l10n.getConstant('cancel');\n break;\n case 'occurrenceAlert':\n addClass([cancelButton], cls.DISABLE_CLASS);\n this.quickDialog.content = this.l10n.getConstant('occurenceAlert');\n break;\n }\n if ((!this.parent.enableRecurrenceValidation && type === 'wrongPattern') || this.parent.enableRecurrenceValidation) {\n this.showQuickDialog('RecurrenceValidationAlert');\n }\n };\n QuickPopups.prototype.openDeleteAlert = function () {\n if (this.parent.activeViewOptions.readonly) {\n return;\n }\n var okButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n if (okButton) {\n okButton.innerHTML = this.l10n.getConstant('delete');\n okButton.setAttribute('aria-label', okButton.innerHTML);\n }\n var cancelButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n if (cancelButton) {\n cancelButton.innerHTML = this.l10n.getConstant('cancel');\n cancelButton.setAttribute('aria-label', cancelButton.innerHTML);\n }\n this.quickDialog.content = (this.parent.activeEventData.event.length > 1) ?\n this.l10n.getConstant('deleteMultipleContent') : this.l10n.getConstant('deleteContent');\n this.quickDialog.header = (this.parent.activeEventData.event.length > 1) ?\n this.l10n.getConstant('deleteMultipleEvent') : this.l10n.getConstant('deleteEvent');\n this.quickDialogClass('Delete');\n this.showQuickDialog('DeleteAlert');\n };\n QuickPopups.prototype.openValidationError = function (type, eventData) {\n this.quickDialog.header = this.l10n.getConstant('alert');\n this.quickDialog.content = this.l10n.getConstant(type);\n var okButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_OK);\n if (okButton) {\n okButton.innerHTML = this.l10n.getConstant('ok');\n okButton.setAttribute('aria-label', okButton.innerHTML);\n }\n var cancelButton = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n if (cancelButton) {\n cancelButton.innerHTML = this.l10n.getConstant('cancel');\n okButton.setAttribute('aria-label', cancelButton.innerHTML);\n }\n this.quickDialogClass('Alert');\n this.showQuickDialog('ValidationAlert', eventData);\n };\n QuickPopups.prototype.showQuickDialog = function (popupType, eventData) {\n var _this = this;\n this.quickDialog.dataBind();\n var eventProp = {\n type: popupType, cancel: false, element: this.quickDialog.element,\n data: extend({}, (eventData || this.parent.activeEventData.event), null, true)\n };\n this.parent.trigger(event.popupOpen, eventProp, function (popupArgs) {\n if (!popupArgs.cancel) {\n _this.quickDialog.show();\n }\n });\n };\n QuickPopups.prototype.createMoreEventList = function (eventCollection, groupOrder, groupIndex) {\n var _this = this;\n var fields = this.parent.eventFields;\n var moreEventContentEle = createElement('div', { className: cls.MORE_EVENT_CONTENT_CLASS });\n var moreEventWrapperEle = createElement('div', { className: cls.MORE_EVENT_WRAPPER_CLASS });\n if (eventCollection.length === 0) {\n moreEventWrapperEle = createElement('div', {\n className: cls.MORE_EVENT_CONTENT_CLASS,\n innerHTML: this.l10n.getConstant('emptyContainer')\n });\n }\n else {\n var _loop_1 = function (eventData) {\n var eventText = (eventData[fields.subject] || this_1.parent.eventSettings.fields.subject.default\n || this_1.parent.localeObj.getConstant('addTitle'));\n var appointmentElement = createElement('div', {\n className: cls.APPOINTMENT_CLASS,\n attrs: {\n 'data-id': '' + eventData[fields.id],\n 'data-guid': eventData.Guid, 'role': 'button', 'tabindex': '0',\n 'aria-disabled': this_1.parent.eventBase.getReadonlyAttribute(eventData),\n 'aria-label': this_1.parent.getAnnouncementString(eventData)\n }\n });\n if (eventData[fields.isReadonly]) {\n addClass([appointmentElement], 'e-read-only');\n }\n var templateElement = void 0;\n if (!isNullOrUndefined(this_1.parent.activeViewOptions.eventTemplate)) {\n var tempId = this_1.parent.element.id + '_' + this_1.parent.activeViewOptions.eventTemplateName + 'eventTemplate';\n templateElement = this_1.parent.getAppointmentTemplate()(eventData, this_1.parent, 'eventTemplate', tempId, false);\n append(templateElement, appointmentElement);\n }\n else {\n appointmentElement.appendChild(createElement('div', { className: cls.SUBJECT_CLASS }));\n this_1.parent.sanitize(eventText, appointmentElement.firstElementChild);\n }\n if (!isNullOrUndefined(groupIndex)) {\n appointmentElement.setAttribute('data-group-index', groupIndex);\n }\n if (!isNullOrUndefined(eventData[fields.recurrenceRule])) {\n var iconClass = (eventData[fields.id] === eventData[fields.recurrenceID]) ?\n cls.EVENT_RECURRENCE_ICON_CLASS : cls.EVENT_RECURRENCE_EDIT_ICON_CLASS;\n appointmentElement.appendChild(createElement('div', { className: cls.ICON + ' ' + iconClass }));\n }\n var args = {\n data: extend({}, eventData, null, true),\n element: appointmentElement, cancel: false\n };\n this_1.parent.trigger(event.eventRendered, args, function (eventArgs) {\n if (!eventArgs.cancel) {\n moreEventWrapperEle.appendChild(appointmentElement);\n var isPreventCrud = _this.parent.isAdaptive || _this.parent.currentView === 'Year';\n _this.parent.eventBase.wireAppointmentEvents(appointmentElement, eventData, isPreventCrud);\n _this.parent.eventBase.applyResourceColor(appointmentElement, eventData, 'backgroundColor', groupOrder);\n }\n });\n };\n var this_1 = this;\n for (var _i = 0, eventCollection_1 = eventCollection; _i < eventCollection_1.length; _i++) {\n var eventData = eventCollection_1[_i];\n _loop_1(eventData);\n }\n }\n moreEventContentEle.appendChild(moreEventWrapperEle);\n return moreEventContentEle;\n };\n QuickPopups.prototype.tapHoldEventPopup = function (e) {\n var target = closest(e.target, '.' + cls.APPOINTMENT_CLASS);\n this.isMultipleEventSelect = false;\n this.parent.selectedElements = [];\n this.isMultipleEventSelect = true;\n this.parent.eventBase.getSelectedEventElements(target);\n this.parent.activeEventData = this.parent.eventBase.getSelectedEvents();\n var guid = target.getAttribute('data-guid');\n var eventObj = this.parent.eventBase.getEventByGuid(guid);\n if (isNullOrUndefined(eventObj)) {\n return;\n }\n var eventTitle = (eventObj[this.parent.eventFields.subject] || this.l10n.getConstant('noTitle'));\n var eventTemplate = \"
\" +\n (\"\") +\n (\"
\" + eventTitle + \"
\") +\n (\"\") +\n (\"
\");\n this.quickPopup.element.innerHTML = eventTemplate;\n var closeIcon = this.quickPopup.element.querySelector('.' + cls.CLOSE_CLASS);\n this.renderButton('e-flat e-round e-small', cls.ICON + ' ' + cls.CLOSE_ICON_CLASS, false, closeIcon, this.closeClick);\n var readonly = this.parent.activeViewOptions.readonly || eventObj[this.parent.eventFields.isReadonly];\n var editAction = !this.parent.eventSettings.allowEditing || readonly;\n var deleteAction = !this.parent.eventSettings.allowDeleting || readonly;\n var editIcon = this.quickPopup.element.querySelector('.' + cls.EDIT_CLASS);\n if (editIcon) {\n this.renderButton('e-flat e-round e-small', cls.ICON + ' ' + cls.EDIT_ICON_CLASS, editAction, editIcon, this.editClick);\n }\n var deleteIcon = this.quickPopup.element.querySelector('.' + cls.DELETE_CLASS);\n if (deleteIcon) {\n this.renderButton('e-flat e-round e-small', cls.ICON + ' ' + cls.DELETE_ICON_CLASS, deleteAction, deleteIcon, this.deleteClick);\n }\n this.beforeQuickPopupOpen(target, this.parent.eventBase.getPageCoordinates(e));\n };\n QuickPopups.prototype.isCellBlocked = function (args) {\n var tempObj = {};\n tempObj[this.parent.eventFields.startTime] = this.parent.activeCellsData.startTime;\n tempObj[this.parent.eventFields.endTime] = this.parent.activeCellsData.endTime;\n tempObj[this.parent.eventFields.isAllDay] = this.parent.activeCellsData.isAllDay;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n var targetCell = args.element instanceof Array ? args.element[0] : args.element;\n var groupIndex = parseInt(targetCell.getAttribute('data-group-index'), 10);\n this.parent.resourceBase.setResourceValues(tempObj, isNaN(groupIndex) ? null : groupIndex);\n }\n return this.parent.eventBase.isBlockRange(tempObj);\n };\n QuickPopups.prototype.cellClick = function (args) {\n var date = new Date(args.startTime.getTime());\n if (!this.parent.showQuickInfo || !this.parent.eventSettings.allowAdding ||\n this.parent.currentView === 'MonthAgenda' || this.isCellBlocked(args) ||\n !this.parent.isMinMaxDate(new Date(date.setHours(0, 0, 0, 0)))) {\n this.quickPopupHide();\n return;\n }\n var targetEle = !isNullOrUndefined(args.event) ? args.event.target : args.element;\n if (this.parent.isAdaptive) {\n this.quickPopupHide();\n var newEventClone = this.parent.element.querySelector('.' + cls.NEW_EVENT_CLASS);\n if (isNullOrUndefined(newEventClone)) {\n newEventClone = createElement('div', {\n className: cls.NEW_EVENT_CLASS,\n innerHTML: \"
+ \" + this.l10n.getConstant('newEvent') + \"
\"\n });\n }\n var targetCell = closest(targetEle, '.' + cls.WORK_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS);\n if (targetCell) {\n targetCell.appendChild(newEventClone);\n }\n return;\n }\n var target = closest(targetEle, '.' + cls.WORK_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS + ',.' +\n cls.HEADER_CELLS_CLASS);\n if (isNullOrUndefined(target) || targetEle.classList.contains(cls.MORE_INDICATOR_CLASS)) {\n return;\n }\n var isSameTarget = this.quickPopup.relateTo === target;\n if (isSameTarget && this.quickPopup.element.classList.contains(cls.POPUP_OPEN)) {\n var subjectElement_1 = this.quickPopup.element.querySelector('.' + cls.SUBJECT_CLASS);\n if (subjectElement_1) {\n subjectElement_1.focus();\n }\n return;\n }\n else if (this.quickPopup.element) {\n this.destroyPopupButtons('quickPopup');\n }\n var temp = {};\n temp[this.parent.eventFields.startTime] = this.parent.activeCellsData.startTime;\n temp[this.parent.eventFields.endTime] = this.parent.activeCellsData.endTime;\n temp[this.parent.eventFields.isAllDay] = this.parent.activeCellsData.isAllDay;\n var quickCellPopup = createElement('div', { className: cls.CELL_POPUP_CLASS });\n quickCellPopup.appendChild(this.getPopupHeader('Cell', temp));\n quickCellPopup.appendChild(this.getPopupContent('Cell', args, temp));\n quickCellPopup.appendChild(this.getPopupFooter('Cell', temp));\n this.quickPopup.element.setAttribute('aria-label', this.l10n.getConstant('newEvent'));\n var subjectElement = quickCellPopup.querySelector('.' + cls.SUBJECT_CLASS);\n if (subjectElement) {\n Input.createInput({ element: subjectElement, properties: { placeholder: this.l10n.getConstant('addTitle') } });\n }\n if (!isNullOrUndefined(this.parent.eventSettings.fields.subject.default)) {\n subjectElement.value = this.parent.eventSettings.fields.subject.default;\n }\n var closeIcon = quickCellPopup.querySelector('.' + cls.CLOSE_CLASS);\n if (closeIcon) {\n this.renderButton('e-flat e-round e-small', cls.ICON + ' ' + cls.CLOSE_ICON_CLASS, false, closeIcon, this.popupClose);\n }\n var moreButton = quickCellPopup.querySelector('.' + cls.QUICK_POPUP_EVENT_DETAILS_CLASS);\n if (moreButton) {\n this.renderButton('e-flat', '', false, moreButton, this.detailsClick);\n }\n var saveButton = quickCellPopup.querySelector('.' + cls.EVENT_CREATE_CLASS);\n if (saveButton) {\n this.renderButton('e-flat e-primary', '', this.parent.activeViewOptions.readonly, saveButton, this.saveClick);\n }\n if (this.morePopup) {\n this.morePopup.hide();\n }\n this.quickPopup.content = quickCellPopup;\n this.quickPopup.relateTo = target;\n this.quickPopup.dataBind();\n this.beforeQuickPopupOpen(target, this.parent.eventBase.getPageCoordinates(args.event));\n };\n QuickPopups.prototype.isSameEventClick = function (events) {\n var isSameTarget = this.quickPopup.relateTo === closest(events.element, '.' + cls.APPOINTMENT_CLASS);\n if (isSameTarget && this.quickPopup.element.classList.contains(cls.POPUP_OPEN)) {\n var editIcon = this.quickPopup.element.querySelector('.' + cls.EDIT_CLASS);\n if (editIcon) {\n editIcon.focus();\n }\n if (!this.parent.isAdaptive) {\n var editButton = this.quickPopup.element.querySelector('.' + cls.EDIT_EVENT_CLASS);\n if (editButton) {\n editButton.focus();\n }\n }\n return true;\n }\n return false;\n };\n QuickPopups.prototype.isQuickTemplate = function (type) {\n return this.parent.quickInfoTemplates.templateType === 'Both' || this.parent.quickInfoTemplates.templateType === type;\n };\n QuickPopups.prototype.eventClick = function (events) {\n if (this.parent.eventTooltip) {\n this.parent.eventTooltip.close();\n }\n if (!this.parent.showQuickInfo) {\n return;\n }\n if (this.parent.isAdaptive && this.isMultipleEventSelect) {\n this.updateTapHoldEventPopup(closest(events.element, '.' + cls.APPOINTMENT_CLASS));\n }\n else {\n var isSameTarget = this.isSameEventClick(events);\n this.parent.selectedElements = [];\n if (isSameTarget) {\n return;\n }\n else if (this.quickPopup.element) {\n this.destroyPopupButtons('quickPopup');\n }\n var eventData = events.event;\n var quickEventPopup = createElement('div', { className: cls.EVENT_POPUP_CLASS });\n quickEventPopup.appendChild(this.getPopupHeader('Event', eventData));\n quickEventPopup.appendChild(this.getPopupContent('Event', events, eventData));\n quickEventPopup.appendChild(this.getPopupFooter('Event', eventData));\n this.quickPopup.element.setAttribute('aria-label', this.l10n.getConstant('editEvent'));\n var readonly = this.parent.activeViewOptions.readonly || eventData[this.parent.eventFields.isReadonly];\n var editAction = !this.parent.eventSettings.allowEditing || readonly;\n var deleteAction = !this.parent.eventSettings.allowDeleting || readonly;\n var editIcon = quickEventPopup.querySelector('.' + cls.EDIT_CLASS);\n var buttonClass = 'e-flat e-round e-small';\n if (editIcon) {\n this.renderButton(buttonClass, cls.ICON + ' ' + cls.EDIT_ICON_CLASS, editAction, editIcon, this.editClick);\n }\n var deleteIcon = quickEventPopup.querySelector('.' + cls.DELETE_CLASS);\n if (deleteIcon) {\n this.renderButton(buttonClass, cls.ICON + ' ' + cls.DELETE_ICON_CLASS, deleteAction, deleteIcon, this.deleteClick);\n }\n var closeIcon = quickEventPopup.querySelector('.' + cls.CLOSE_CLASS);\n if (closeIcon) {\n this.renderButton(buttonClass, cls.ICON + ' ' + cls.CLOSE_ICON_CLASS, false, closeIcon, this.popupClose);\n }\n var editButton = quickEventPopup.querySelector('.' + cls.EDIT_EVENT_CLASS);\n if (editButton) {\n this.renderButton('e-flat e-primary', '', editAction, editButton, this.editClick);\n }\n var deleteButton = quickEventPopup.querySelector('.' + cls.DELETE_EVENT_CLASS);\n if (deleteButton) {\n this.renderButton('e-flat', '', deleteAction, deleteButton, this.deleteClick);\n }\n if (this.morePopup && !closest(events.element, '.' + cls.MORE_EVENT_WRAPPER_CLASS)) {\n this.morePopup.hide();\n }\n this.quickPopup.content = quickEventPopup;\n this.quickPopup.relateTo = this.parent.isAdaptive ? document.body :\n closest(events.element, '.' + cls.APPOINTMENT_CLASS);\n this.quickPopup.dataBind();\n this.beforeQuickPopupOpen(events.element, this.parent.eventBase.getPageCoordinates(events.originalEvent));\n }\n };\n QuickPopups.prototype.getPopupHeader = function (headerType, headerData) {\n var headerTemplate = createElement('div', { className: cls.POPUP_HEADER_CLASS });\n if (this.isQuickTemplate(headerType) && this.parent.quickInfoTemplates.header) {\n var headerArgs = extend({}, headerData, { elementType: headerType.toLowerCase() }, true);\n var templateId = this.parent.element.id;\n var headerTemp = [].slice.call(this.parent.getQuickInfoTemplatesHeader()(headerArgs, this.parent, 'header', templateId + '_headerTemplate', false));\n append([].slice.call(headerTemp), headerTemplate);\n }\n else {\n var header = void 0;\n var args = void 0;\n switch (headerType) {\n case 'Cell':\n header = \"
\");\n break;\n case 'Event':\n args = this.getFormattedString(headerData);\n header = \"
\" +\n (\"\") +\n (\"\") +\n (\"
\") +\n (\"
\");\n break;\n }\n var templateWrapper = createElement('div', { innerHTML: header });\n if (headerType === 'Event') {\n var subjectText = templateWrapper.querySelector('.' + cls.SUBJECT_CLASS);\n this.parent.sanitize(args.eventSubject, subjectText);\n }\n append([].slice.call(templateWrapper.childNodes), headerTemplate);\n }\n return headerTemplate;\n };\n QuickPopups.prototype.getPopupContent = function (type, args, data) {\n var contentTemplate = createElement('div', { className: cls.POPUP_CONTENT_CLASS });\n if (this.isQuickTemplate(type) && this.parent.quickInfoTemplates.content) {\n var contentArgs = extend({}, data, { elementType: type.toLowerCase() }, true);\n var templateId = this.parent.element.id;\n var contentTemp = [].slice.call(this.parent.getQuickInfoTemplatesContent()(contentArgs, this.parent, 'content', templateId + '_contentTemplate', false));\n append([].slice.call(contentTemp), contentTemplate);\n }\n else {\n var content = void 0;\n var cellDetails = void 0;\n var argsData = void 0;\n var resourceText = this.getResourceText(args, type.toLowerCase());\n switch (type) {\n case 'Cell':\n cellDetails = this.getFormattedString(data);\n content = \"
\") +\n (\"
\" + cellDetails.details + \"
\") +\n ((this.parent.activeViewOptions.group.resources.length > 0 ? \"
\" +\n (\"
\") : '') + \"
\");\n break;\n case 'Event':\n argsData = this.getFormattedString(data);\n content = '
' + argsData.details + '
';\n if (data[this.parent.eventFields.recurrenceRule]) {\n content += '
' +\n this.getRecurrenceSummary(data) + '
';\n }\n content += '
';\n if (data[this.parent.eventFields.location]) {\n content += '
';\n }\n if (data[this.parent.eventFields.startTimezone] || data[this.parent.eventFields.endTimezone]) {\n content += '
' +\n this.getTimezone(data) + '
';\n }\n if (data[this.parent.eventFields.description]) {\n content += '
';\n }\n if (this.parent.resourceCollection.length > 0) {\n content += '
';\n }\n break;\n }\n var templateWrapper = createElement('div', { innerHTML: content });\n if (data[this.parent.eventFields.location]) {\n var locationDetails = templateWrapper.querySelector('.' + cls.LOCATION_DETAILS_CLASS);\n if (!isNullOrUndefined(locationDetails)) {\n this.parent.sanitize(data[this.parent.eventFields.location], locationDetails);\n }\n }\n if (data[this.parent.eventFields.description]) {\n var descriptionDetails = templateWrapper.querySelector('.' + cls.DESCRIPTION_DETAILS_CLASS);\n if (!isNullOrUndefined(descriptionDetails)) {\n this.parent.sanitize(data[this.parent.eventFields.description], descriptionDetails);\n }\n }\n if (resourceText) {\n var resourceDetails = templateWrapper.querySelector('.' + cls.RESOURCE_DETAILS_CLASS);\n if (!isNullOrUndefined(resourceDetails)) {\n this.parent.sanitize(resourceText, resourceDetails);\n }\n }\n append([].slice.call(templateWrapper.childNodes), contentTemplate);\n }\n return contentTemplate;\n };\n QuickPopups.prototype.getPopupFooter = function (footerType, footerData) {\n var footerTemplate = createElement('div', { className: cls.POPUP_FOOTER_CLASS });\n if (this.isQuickTemplate(footerType) && this.parent.quickInfoTemplates.footer) {\n var footerArgs = extend({}, footerData, { elementType: footerType.toLowerCase() }, true);\n var templateId = this.parent.element.id;\n var footerTemp = [].slice.call(this.parent.getQuickInfoTemplatesFooter()(footerArgs, this.parent, 'footer', templateId + '_footerTemplate', false));\n append([].slice.call(footerTemp), footerTemplate);\n }\n else {\n var footer = void 0;\n switch (footerType) {\n case 'Cell':\n footer = \"\") +\n (\"\");\n break;\n case 'Event':\n footer = \"\" + (this.parent.isAdaptive ? '' : \"\") +\n (\"\"));\n break;\n }\n var templateWrapper = createElement('div', { innerHTML: footer });\n append([].slice.call(templateWrapper.childNodes), footerTemplate);\n }\n return footerTemplate;\n };\n QuickPopups.prototype.getResourceText = function (args, type) {\n if (this.parent.resourceCollection.length === 0) {\n return null;\n }\n var resourceValue = '';\n if (this.parent.activeViewOptions.group.resources.length === 0) {\n var resourceCollection_1 = this.parent.resourceBase.resourceCollection.slice(-1)[0];\n var resourceData = resourceCollection_1.dataSource;\n if (type === 'event') {\n var eventData = args.event;\n var _loop_2 = function (data) {\n var resourceId = eventData[resourceCollection_1.field];\n if (resourceId instanceof Array) {\n if (resourceId.indexOf(data[resourceCollection_1.idField]) > -1) {\n var id_1 = resourceId[resourceId.indexOf(data[resourceCollection_1.idField])];\n var resource = resourceData.filter(function (e) {\n return e[resourceCollection_1.idField] === id_1;\n })[0];\n resourceValue += (resourceValue === '') ? resource[resourceCollection_1.textField] :\n ', ' + resource[resourceCollection_1.textField];\n }\n }\n else if (data[resourceCollection_1.idField] === resourceId) {\n resourceValue = data[resourceCollection_1.textField].toString();\n }\n };\n for (var _i = 0, resourceData_1 = resourceData; _i < resourceData_1.length; _i++) {\n var data = resourceData_1[_i];\n _loop_2(data);\n }\n }\n else {\n resourceValue = resourceData[0][resourceCollection_1.textField].toString();\n }\n }\n else {\n if (type === 'event') {\n var eventData = args.event;\n var resourceData = void 0;\n var lastResource_1;\n for (var i = this.parent.resourceBase.resourceCollection.length - 1; i >= 0; i--) {\n resourceData = eventData[this.parent.resourceBase.resourceCollection[parseInt(i.toString(), 10)].field];\n if (!isNullOrUndefined(resourceData)) {\n lastResource_1 = this.parent.resourceBase.resourceCollection[parseInt(i.toString(), 10)];\n break;\n }\n }\n if (!Array.isArray(resourceData)) {\n resourceData = [resourceData];\n }\n var resNames_1 = [];\n var lastResourceData_1 = lastResource_1.dataSource;\n resourceData.forEach(function (value) {\n var text;\n var i = util.findIndexInData(lastResourceData_1, lastResource_1.idField, value);\n if (i > -1) {\n text = lastResourceData_1[parseInt(i.toString(), 10)][lastResource_1.textField];\n }\n if (text) {\n resNames_1.push(text);\n }\n });\n resourceValue = resNames_1.join(', ');\n }\n else {\n var argsData = args;\n var groupIndex = !isNullOrUndefined(argsData.groupIndex) ? argsData.groupIndex : 0;\n var resourceDetails = this.parent.resourceBase.lastResourceLevel[parseInt(groupIndex.toString(), 10)];\n resourceValue = resourceDetails.resourceData[resourceDetails.resource.textField];\n }\n }\n return resourceValue;\n };\n QuickPopups.prototype.getFormattedString = function (eventData) {\n var fields = this.parent.eventFields;\n var eventSubject = (eventData[fields.subject] || this.l10n.getConstant('noTitle'));\n var startDate = eventData[fields.startTime];\n var endDate = eventData[fields.endTime];\n var startDateDetails = this.getDateFormat(startDate, 'long');\n var endDateDetails = (eventData[fields.isAllDay] && endDate.getHours() === 0 && endDate.getMinutes() === 0) ?\n this.getDateFormat(util.addDays(new Date(endDate.getTime()), -1), 'long') :\n this.getDateFormat(endDate, 'long');\n var startTimeDetail = this.parent.getTimeString(startDate);\n var endTimeDetail = this.parent.getTimeString(endDate);\n var details = '';\n var spanLength = endDate.getDate() !== startDate.getDate() &&\n (endDate.getTime() - startDate.getTime()) / (60 * 60 * 1000) < 24 ? 1 : 0;\n if (eventData[fields.isAllDay]) {\n details = startDateDetails + ' (' + this.l10n.getConstant('allDay') + ')';\n if (((util.getUniversalTime(endDate) - util.getUniversalTime(startDate)) / util.MS_PER_DAY) > 1) {\n details += ' - ' + endDateDetails + ' (' + this.l10n.getConstant('allDay') + ')';\n }\n }\n else if ((((util.getUniversalTime(endDate) - util.getUniversalTime(startDate)) / util.MS_PER_DAY) >= 1) || spanLength > 0) {\n details = startDateDetails + ' (' + startTimeDetail + ')' + ' - ' + endDateDetails + ' (' + endTimeDetail + ')';\n }\n else {\n details = startDateDetails + ' (' + (startTimeDetail + ' - ' + endTimeDetail) + ')';\n }\n return { eventSubject: eventSubject, details: details };\n };\n QuickPopups.prototype.moreEventClick = function (data, endDate, groupIndex) {\n var _this = this;\n this.quickPopupHide(true);\n var moreEventContentEle = this.morePopup.element.querySelector('.' + cls.MORE_EVENT_CONTENT_CLASS);\n if (moreEventContentEle) {\n remove(moreEventContentEle);\n }\n var selectedDate = ((data.date).getTime()).toString();\n var target = closest(data.element, '.' + cls.MORE_INDICATOR_CLASS + ',.' + cls.WORK_CELLS_CLASS);\n var day = this.parent.globalize.formatDate(data.date, { format: 'E', calendar: this.parent.getCalendarMode() });\n this.morePopup.element.querySelector('.' + cls.MORE_EVENT_HEADER_DAY_CLASS).innerHTML = util.capitalizeFirstWord(day, 'single');\n var dateElement = this.morePopup.element.querySelector('.' + cls.MORE_EVENT_HEADER_DATE_CLASS);\n dateElement.innerHTML = this.getDateFormat(data.date, 'd');\n dateElement.setAttribute('data-date', selectedDate);\n dateElement.setAttribute('data-end-date', endDate.getTime().toString());\n var groupOrder;\n if (!isNullOrUndefined(groupIndex)) {\n dateElement.setAttribute('data-group-index', groupIndex);\n groupOrder = this.parent.resourceBase.lastResourceLevel[parseInt(groupIndex, 10)].groupOrder;\n }\n var moreEventElements = this.createMoreEventList(data.event, groupOrder, groupIndex);\n this.morePopup.element.querySelector('.' + cls.MORE_EVENT_POPUP_CLASS).appendChild(moreEventElements);\n removeClass(this.morePopup.element.querySelector('.' + cls.MORE_EVENT_DATE_HEADER_CLASS).childNodes, cls.CURRENTDATE_CLASS);\n if (util.resetTime(data.date).getTime() === util.resetTime(this.parent.getCurrentTime()).getTime()) {\n addClass(this.morePopup.element.querySelector('.' + cls.MORE_EVENT_DATE_HEADER_CLASS).childNodes, cls.CURRENTDATE_CLASS);\n }\n if (!this.parent.isAdaptive) {\n if (this.parent.currentView.indexOf('Timeline') !== -1) {\n var gIndex = target.getAttribute('data-group-index');\n var startDate = new Date(parseInt(target.getAttribute('data-start-date'), 10));\n startDate.setHours(startDate.getHours(), startDate.getMinutes(), 0);\n var tdDate = startDate.getTime().toString();\n if (isNullOrUndefined(gIndex)) {\n this.morePopup.relateTo = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS +\n ' tbody tr td[data-date=\"' + tdDate + '\"]');\n }\n else {\n this.morePopup.relateTo = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS +\n ' tbody tr td[data-group-index=\"' + gIndex + '\"][data-date=\"' + tdDate + '\"]');\n if (isNullOrUndefined(this.morePopup.relateTo)) {\n var workCells = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CONTENT_WRAP_CLASS +\n ' tbody tr td[data-group-index=\"' + gIndex + '\"]'));\n for (var i = 0; i < workCells.length; i++) {\n var date = workCells[parseInt(i.toString(), 10)].getAttribute('data-date');\n if (date < tdDate) {\n this.morePopup.relateTo = workCells[parseInt(i.toString(), 10)];\n }\n }\n }\n }\n }\n else {\n this.morePopup.relateTo = closest(target, '.' + cls.WORK_CELLS_CLASS);\n }\n }\n this.parent.renderTemplates(function () {\n var eventProp = {\n type: 'EventContainer', cancel: false,\n element: _this.morePopup.element, data: data\n };\n _this.parent.trigger(event.popupOpen, eventProp, function (popupArgs) {\n if (!popupArgs.cancel) {\n _this.morePopup.show();\n }\n });\n });\n };\n QuickPopups.prototype.saveClick = function (event) {\n this.applyFormValidation();\n this.dialogEvent = event;\n this.isCrudAction = true;\n this.quickPopupHide();\n };\n QuickPopups.prototype.detailsClick = function (event) {\n var subjectEle = this.quickPopup.element.querySelector('.' + cls.SUBJECT_CLASS);\n if (subjectEle && subjectEle.value !== '') {\n extend(this.parent.activeCellsData, { subject: subjectEle.value });\n }\n this.dialogEvent = event;\n this.isCrudAction = false;\n this.fieldValidator.destroyToolTip();\n this.quickPopupHide();\n this.parent.eventWindow.openEditor(this.parent.activeCellsData, 'Add');\n };\n QuickPopups.prototype.editClick = function (event) {\n this.dialogEvent = event;\n this.quickPopupHide(true);\n var data = this.parent.activeEventData.event;\n this.parent.currentAction = 'EditSeries';\n if (!isNullOrUndefined(data[this.parent.eventFields.recurrenceRule])) {\n this.parent.currentAction = 'EditOccurrence';\n this.openRecurrenceAlert();\n }\n else {\n this.parent.eventWindow.openEditor(data, this.parent.currentAction);\n }\n };\n QuickPopups.prototype.deleteClick = function (event) {\n this.dialogEvent = event;\n this.quickPopupHide(true);\n this.parent.currentAction = 'Delete';\n if (this.parent.activeEventData.event[this.parent.eventFields.recurrenceRule]) {\n this.openRecurrenceAlert();\n }\n else {\n this.openDeleteAlert();\n }\n };\n QuickPopups.prototype.updateMoreEventContent = function () {\n if (this.morePopup.element.classList.contains('e-popup-close')) {\n return;\n }\n var moreEventContentEle = this.morePopup.element.querySelector('.' + cls.MORE_EVENT_CONTENT_CLASS);\n if (moreEventContentEle) {\n remove(moreEventContentEle);\n }\n var dateElement = this.morePopup.element.querySelector('.' + cls.MORE_EVENT_HEADER_DATE_CLASS);\n var startDate = new Date(parseInt(dateElement.getAttribute('data-date'), 10));\n var endDate = new Date(parseInt(dateElement.getAttribute('data-end-date'), 10));\n var groupIndex = dateElement.getAttribute('data-group-index');\n var data;\n var groupOrder;\n if (!isNullOrUndefined(groupIndex)) {\n data = this.parent.resourceBase.lastResourceLevel[parseInt(groupIndex, 10)];\n groupOrder = data.groupOrder;\n }\n var events = this.parent.eventBase.filterEvents(startDate, endDate, this.parent.eventsProcessed, data);\n var moreElement = this.createMoreEventList(events, groupOrder, groupIndex);\n this.morePopup.element.querySelector('.' + cls.MORE_EVENT_POPUP_CLASS).appendChild(moreElement);\n };\n QuickPopups.prototype.closeClick = function (event) {\n this.dialogEvent = event;\n if (this.parent.currentView === 'Year' && this.parent.activeCellsData && this.parent.activeCellsData.element) {\n this.parent.selectCell(this.parent.activeCellsData.element);\n }\n this.quickPopupHide();\n this.morePopup.hide();\n };\n QuickPopups.prototype.dialogButtonClick = function (event) {\n this.dialogEvent = event;\n this.quickDialog.hide();\n var target = event.target;\n var cancelBtn = this.quickDialog.element.querySelector('.' + cls.QUICK_DIALOG_ALERT_CANCEL);\n var eventData = this.parent.activeEventData.event;\n if (target.classList.contains(cls.QUICK_DIALOG_OCCURRENCE_CLASS)) {\n this.parent.currentAction = (this.parent.currentAction === 'Delete') ? 'DeleteOccurrence' : 'EditOccurrence';\n switch (this.parent.currentAction) {\n case 'EditOccurrence':\n this.parent.eventWindow.openEditor(eventData, this.parent.currentAction);\n break;\n case 'DeleteOccurrence':\n this.parent.crudModule.deleteEvent(eventData, this.parent.currentAction);\n break;\n }\n }\n else if (target.classList.contains(cls.QUICK_DIALOG_FOLLOWING_EVENTS_CLASS)) {\n this.parent.currentAction = (this.parent.currentAction === 'Delete') ? 'DeleteFollowingEvents' : 'EditFollowingEvents';\n switch (this.parent.currentAction) {\n case 'EditFollowingEvents':\n this.parent.eventWindow.openEditor(eventData, this.parent.currentAction);\n break;\n case 'DeleteFollowingEvents':\n this.parent.crudModule.deleteEvent(eventData, this.parent.currentAction);\n break;\n }\n }\n else if (target.classList.contains(cls.QUICK_DIALOG_SERIES_CLASS)) {\n this.parent.currentAction = (this.parent.currentAction === 'Delete') ? 'DeleteSeries' : 'EditSeries';\n switch (this.parent.currentAction) {\n case 'EditSeries':\n this.parent.eventWindow.openEditor(this.parent.eventBase.getParentEvent(eventData, true), this.parent.currentAction);\n break;\n case 'DeleteSeries':\n this.parent.crudModule.deleteEvent(eventData, this.parent.currentAction);\n break;\n }\n }\n else if (target.classList.contains(cls.QUICK_DIALOG_DELETE_CLASS)) {\n this.parent.crudModule.deleteEvent(eventData, this.parent.currentAction);\n }\n else if (!cancelBtn.classList.contains(cls.DISABLE_CLASS) && (target.classList.contains(cls.QUICK_DIALOG_ALERT_OK) ||\n (target.classList.contains(cls.QUICK_DIALOG_ALERT_CANCEL) && !cancelBtn.classList.contains(cls.QUICK_DIALOG_CANCEL_CLASS)))) {\n this.parent.uiStateValues.isIgnoreOccurrence = target.classList.contains(cls.QUICK_DIALOG_ALERT_CANCEL);\n this.parent.eventWindow.eventSave(event, this.l10n.getConstant('ok'));\n }\n };\n QuickPopups.prototype.updateTapHoldEventPopup = function (target) {\n var selectedElements = this.parent.eventBase.getSelectedEventElements(target);\n this.parent.activeEventData = this.parent.eventBase.getSelectedEvents();\n if (selectedElements.length > 0) {\n var eventObj = this.parent.eventBase.getEventByGuid(selectedElements[0].getAttribute('data-guid'));\n var titleContent = (selectedElements.length === 1) ?\n (eventObj[this.parent.eventFields.subject] || this.l10n.getConstant('noTitle')) :\n '(' + selectedElements.length + ')' + ' ' + this.l10n.getConstant('selectedItems');\n this.quickPopup.element.querySelector('.' + cls.SUBJECT_CLASS).innerHTML = titleContent;\n if (selectedElements.length > 1) {\n addClass([this.quickPopup.element.querySelector('.' + cls.EDIT_ICON_CLASS)], cls.HIDDEN_CLASS);\n }\n else {\n removeClass([this.quickPopup.element.querySelector('.' + cls.EDIT_ICON_CLASS)], cls.HIDDEN_CLASS);\n }\n }\n else {\n this.parent.selectedElements = [];\n this.quickPopupHide();\n }\n };\n QuickPopups.prototype.getTimezone = function (event) {\n var zoneDetails = '';\n zoneDetails += event[this.parent.eventFields.startTimezone] || '';\n zoneDetails += zoneDetails === '' ? '' : ' - ';\n zoneDetails += event[this.parent.eventFields.endTimezone] || '';\n return zoneDetails;\n };\n QuickPopups.prototype.getRecurrenceSummary = function (event) {\n var recurrenceEditor = this.parent.eventWindow.getRecurrenceEditorInstance();\n if (recurrenceEditor) {\n var ruleSummary = recurrenceEditor.getRuleSummary(event[this.parent.eventFields.recurrenceRule]);\n return ruleSummary.charAt(0).toUpperCase() + ruleSummary.slice(1);\n }\n return '';\n };\n QuickPopups.prototype.getDateFormat = function (date, skeletonString) {\n return util.capitalizeFirstWord(this.parent.globalize.formatDate(date, { skeleton: skeletonString, calendar: this.parent.getCalendarMode() }), 'single');\n };\n QuickPopups.prototype.getDataFromTarget = function (target) {\n if (target.classList.contains(cls.APPOINTMENT_CLASS)) {\n return this.parent.activeEventData.event;\n }\n // Deprecated cells data in quick popups\n var eventObj = {\n startTime: this.parent.activeCellsData.startTime,\n endTime: this.parent.activeCellsData.endTime,\n isAllDay: this.parent.activeCellsData.isAllDay,\n groupIndex: this.parent.activeCellsData.groupIndex\n };\n var cellsData = this.parent.activeCellsData;\n this.parent.eventWindow.convertToEventData(cellsData, eventObj);\n return eventObj;\n };\n QuickPopups.prototype.beforeQuickDialogClose = function (e) {\n var _this = this;\n var args = {\n event: e.event || this.dialogEvent,\n type: (isNullOrUndefined(this.parent.activeEventData.event)) ? 'ValidationAlert' :\n !isNullOrUndefined(this.parent.activeEventData.event[this.parent.eventFields.recurrenceRule])\n ? 'RecurrenceAlert' : 'DeleteAlert', cancel: false, data: this.parent.activeEventData.event,\n element: this.quickDialog.element\n };\n this.parent.trigger(event.popupClose, args, function (popupCloseArgs) {\n if (!popupCloseArgs.cancel) {\n _this.parent.eventBase.focusElement(true);\n }\n });\n };\n QuickPopups.prototype.beforeQuickPopupOpen = function (target, originalEvent) {\n var _this = this;\n this.parent.renderTemplates(function () {\n var isEventPopup = _this.quickPopup.element.querySelector('.' + cls.EVENT_POPUP_CLASS);\n var popupType = _this.parent.isAdaptive ? isEventPopup ? 'ViewEventInfo' : 'EditEventInfo' : 'QuickInfo';\n var eventProp = {\n type: popupType, cancel: false, data: extend({}, _this.getDataFromTarget(target), null, true),\n target: target, element: _this.quickPopup.element\n };\n _this.parent.trigger(event.popupOpen, eventProp, function (popupArgs) {\n if (popupArgs.cancel) {\n _this.quickPopupHide();\n _this.destroyPopupButtons('quickPopup');\n if (popupArgs.element.classList.contains(cls.POPUP_OPEN)) {\n _this.quickPopupClose();\n }\n util.removeChildren(_this.quickPopup.element);\n _this.isMultipleEventSelect = false;\n }\n else {\n var display = _this.quickPopup.element.style.display;\n _this.quickPopup.element.style.display = 'block';\n if (_this.parent.isAdaptive) {\n _this.quickPopup.element.removeAttribute('style');\n _this.quickPopup.element.style.display = 'block';\n _this.quickPopup.element.style.height = formatUnit((popupType === 'EditEventInfo') ? 65 : window.innerHeight);\n }\n else {\n var isVirtualScroll = _this.parent.virtualScrollModule && _this.parent.virtualScrollModule.isHorizontalScroll\n && !isNullOrUndefined(closest(target, '.' + cls.CONTENT_TABLE_CLASS));\n var conTable = _this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS + ' table');\n _this.quickPopup.offsetX = isVirtualScroll && !_this.parent.enableRtl ? (util.getTranslateX(conTable) + 10) : 10;\n _this.quickPopup.offsetY = _this.parent.virtualScrollModule && !_this.parent.virtualScrollModule.isHorizontalScroll ?\n _this.quickPopup.offsetY : 0;\n _this.quickPopup.collision = { X: _this.parent.enableRtl ? 'flip' : 'none', Y: 'fit' };\n _this.quickPopup.position = { X: _this.parent.enableRtl ? 'left' : 'right', Y: _this.parent.enableRtl ? 'bottom' : 'top' };\n _this.quickPopup.dataBind();\n _this.quickPopup.refreshPosition(null, true);\n var collide = isCollide(_this.quickPopup.element, _this.parent.element);\n if (collide.indexOf(_this.parent.enableRtl ? 'left' : 'right') > -1) {\n _this.quickPopup.offsetX = -target.offsetWidth - 10 - _this.quickPopup.element.offsetWidth;\n if (isVirtualScroll && !_this.parent.enableRtl) {\n _this.quickPopup.offsetX = util.getTranslateX(conTable) + _this.quickPopup.offsetX;\n }\n _this.quickPopup.dataBind();\n _this.quickPopup.refreshPosition(null, true);\n var leftCollide = isCollide(_this.quickPopup.element, _this.parent.element);\n if (leftCollide.indexOf('left') > -1) {\n _this.quickPopup.position = { X: 'center', Y: 'center' };\n _this.quickPopup.collision = { X: 'fit', Y: 'fit' };\n _this.quickPopup.offsetX = -(_this.quickPopup.element.offsetWidth / 2);\n _this.quickPopup.dataBind();\n }\n }\n if (_this.parent.virtualScrollModule && !_this.parent.virtualScrollModule.isHorizontalScroll && (collide.indexOf('top') > -1 || collide.indexOf('bottom') > -1)) {\n var translateY = util.getTranslateY(conTable);\n _this.quickPopup.offsetY = translateY;\n _this.quickPopup.dataBind();\n _this.quickPopup.refreshPosition(null, true);\n }\n if (_this.quickPopup.position.X === 'center' && _this.quickPopup.position.Y === 'center' && !isNullOrUndefined(originalEvent) &&\n originalEvent.clientX && originalEvent.clientY) {\n var clientX = originalEvent.clientX;\n var clientY = originalEvent.clientY;\n var targetRect = target.getBoundingClientRect();\n var offsetY = originalEvent.offsetY || Math.ceil(clientY - targetRect.y);\n var previousOffset = _this.quickPopup.offsetY;\n var collision = isCollide(_this.quickPopup.element, target);\n var popupRect = _this.quickPopup.element.getBoundingClientRect();\n var targetEle = document.elementFromPoint(clientX, clientY);\n if (collision.indexOf('top') > -1 || collision.indexOf('bottom') > -1 || closest(targetEle, '.' + cls.POPUP_WRAPPER_CLASS)) {\n if (popupRect.top <= clientY &&\n clientY <= popupRect.top + popupRect.height) {\n _this.quickPopup.offsetY = previousOffset - popupRect.height - 10;\n _this.quickPopup.dataBind();\n collision = isCollide(_this.quickPopup.element, _this.parent.element);\n if (collision.indexOf('top') > -1) {\n _this.quickPopup.offsetY = previousOffset + offsetY + 10;\n _this.quickPopup.dataBind();\n }\n }\n else if (isCollide(_this.quickPopup.element, _this.parent.element).indexOf('bottom') > -1) {\n _this.quickPopup.offsetY =\n previousOffset - offsetY - Math.ceil(popupRect.height) - 10;\n _this.quickPopup.dataBind();\n }\n }\n }\n }\n if (isEventPopup) {\n _this.applyEventColor();\n }\n _this.quickPopup.element.style.display = display;\n _this.quickPopup.dataBind();\n _this.quickPopup.show();\n }\n });\n });\n };\n QuickPopups.prototype.applyEventColor = function () {\n var colorField = '';\n if (this.parent.currentView === 'Agenda' || this.parent.currentView === 'MonthAgenda') {\n colorField = this.parent.enableRtl ? 'border-right-color' : 'border-left-color';\n }\n else {\n colorField = 'background-color';\n }\n var color = this.parent.activeEventData.element.style[colorField];\n if (color === '') {\n return;\n }\n var colorEle = this.quickPopup.element.querySelector('.' + cls.POPUP_HEADER_CLASS);\n var footerEle = this.quickPopup.element.querySelector('.' + cls.POPUP_FOOTER_CLASS);\n if (footerEle && footerEle.offsetParent) {\n colorEle = this.quickPopup.element.querySelector('.' + cls.SUBJECT_CLASS);\n if (colorEle) {\n colorEle.style.borderLeftColor = color;\n color = \"rgba(\" + color.match(/\\d+/g).join() + \",0.3)\";\n }\n }\n if (colorEle) {\n colorEle.style.backgroundColor = color;\n }\n };\n QuickPopups.prototype.quickPopupOpen = function () {\n if (this.parent.isAdaptive) {\n this.quickPopup.element.style.top = '0px';\n return;\n }\n if (this.quickPopup.element.querySelector('.' + cls.CELL_POPUP_CLASS)) {\n var subjectElement = this.quickPopup.element.querySelector('.' + cls.SUBJECT_CLASS);\n if (subjectElement) {\n subjectElement.focus();\n }\n }\n else {\n var editElement = this.quickPopup.element.querySelector('.' + cls.EDIT_EVENT_CLASS);\n if (editElement) {\n editElement.focus();\n }\n var editIcon = this.quickPopup.element.querySelector('.' + cls.EDIT_CLASS);\n if (editIcon) {\n editIcon.focus();\n }\n }\n };\n QuickPopups.prototype.quickPopupClose = function () {\n this.parent.eventBase.focusElement();\n this.quickPopup.relateTo = '.' + cls.WORK_CELLS_CLASS;\n this.fieldValidator.destroyToolTip();\n if (this.quickPopup.element.querySelectorAll('.e-formvalidator').length) {\n this.fieldValidator.destroy();\n }\n this.destroyPopupButtons('quickPopup');\n util.removeChildren(this.quickPopup.element);\n };\n QuickPopups.prototype.morePopupOpen = function () {\n if (this.parent.isAdaptive) {\n this.morePopup.element.style.top = '0px';\n this.morePopup.element.style.left = '0px';\n this.morePopup.element.style.height = formatUnit(window.innerHeight);\n return;\n }\n this.morePopup.element.querySelector('.' + cls.MORE_EVENT_HEADER_DATE_CLASS).focus();\n this.morePopup.refreshPosition();\n };\n QuickPopups.prototype.morePopupClose = function () {\n var moreWrapper = this.parent.element.querySelector('.' + cls.MORE_EVENT_WRAPPER_CLASS);\n if (moreWrapper) {\n remove(moreWrapper);\n }\n };\n QuickPopups.prototype.popupClose = function (event) {\n this.dialogEvent = event;\n this.isCrudAction = false;\n this.quickPopupHide(true);\n };\n QuickPopups.prototype.quickPopupHide = function (hideAnimation) {\n var _this = this;\n if (!this.quickPopup.element.classList.contains(cls.POPUP_OPEN)) {\n return;\n }\n var isCellPopup = this.quickPopup.element.querySelector('.' + cls.CELL_POPUP_CLASS);\n var popupData;\n if (isCellPopup) {\n var formvalidator = this.quickPopup.element.querySelector('.e-formvalidator');\n if (this.isCrudAction && formvalidator &&\n !formvalidator.ej2_instances[0].validate()) {\n return;\n }\n var fields = this.parent.eventFields;\n var saveObj = this.parent.eventWindow.getObjectFromFormData(cls.POPUP_WRAPPER_CLASS);\n this.parent.eventWindow.setDefaultValueToObject(saveObj);\n saveObj[fields.id] = this.parent.eventBase.getEventMaxID();\n saveObj[fields.startTime] = this.parent.activeCellsData.startTime;\n saveObj[fields.endTime] = this.parent.activeCellsData.endTime;\n saveObj[fields.isAllDay] = this.parent.activeCellsData.isAllDay;\n if (this.parent.resourceBase) {\n this.parent.resourceBase.setResourceValues(saveObj);\n }\n popupData = saveObj;\n }\n else {\n popupData = this.parent.activeEventData.event;\n }\n var isEventPopup = this.quickPopup.element.querySelector('.' + cls.EVENT_POPUP_CLASS);\n var args = {\n event: this.dialogEvent,\n type: this.parent.isAdaptive ? isEventPopup ? 'ViewEventInfo' : 'EditEventInfo' : 'QuickInfo',\n cancel: false, data: popupData, element: this.quickPopup.element,\n target: (isCellPopup ? this.parent.activeCellsData.element : this.parent.activeEventData.element)\n };\n this.parent.trigger(event.popupClose, args, function (popupCloseArgs) {\n if (!popupCloseArgs.cancel) {\n if (_this.quickPopup.element.classList.contains('e-popup-open')) {\n if (isCellPopup && _this.isCrudAction) {\n _this.parent.currentAction = 'Add';\n _this.parent.crudModule.addEvent(popupCloseArgs.data);\n }\n if (hideAnimation) {\n var animation = _this.quickPopup.hideAnimation;\n _this.quickPopup.hideAnimation = null;\n _this.quickPopup.hide();\n _this.quickPopup.hideAnimation = animation;\n }\n else {\n _this.quickPopup.hide();\n }\n _this.isMultipleEventSelect = false;\n _this.isCrudAction = false;\n }\n }\n });\n };\n QuickPopups.prototype.navigationClick = function (e) {\n var navigateEle = closest(e.target, '.' + cls.NAVIGATE_CLASS);\n if (!isNullOrUndefined(navigateEle)) {\n var date = this.parent.getDateFromElement(e.currentTarget);\n if (!isNullOrUndefined(date)) {\n this.closeClick(e);\n this.parent.setProperties({ selectedDate: date }, true);\n this.parent.changeView(this.parent.getNavigateView(), e);\n }\n }\n };\n QuickPopups.prototype.documentClick = function (e) {\n var target = e.event.target;\n var classNames = '.' + cls.POPUP_WRAPPER_CLASS + ',.' + cls.HEADER_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS +\n ',.' + cls.WORK_CELLS_CLASS + ',.' + cls.APPOINTMENT_CLASS + ',.e-popup';\n var popupWrap = this.parent.element.querySelector('.' + cls.POPUP_WRAPPER_CLASS);\n if ((popupWrap && popupWrap.childElementCount > 0 && !closest(target, classNames)) || !closest(target, classNames)) {\n this.quickPopupHide();\n this.parent.removeNewEventElement();\n }\n var tar = this.parent.element.querySelector('.' + cls.INLINE_SUBJECT_CLASS);\n if (tar && tar !== target && this.parent.allowInline) {\n this.parent.inlineModule.documentClick();\n }\n if (closest(target, '.' + cls.APPOINTMENT_CLASS + ',.' + cls.HEADER_CELLS_CLASS)) {\n this.parent.removeNewEventElement();\n }\n if (!closest(target, '.' + cls.MORE_POPUP_WRAPPER_CLASS) && (target.classList &&\n !target.classList.contains(cls.MORE_INDICATOR_CLASS))\n && (!closest(target, '.' + cls.POPUP_OPEN)) && !closest(target, '.' + cls.WORK_CELLS_CLASS)) {\n this.morePopup.hide();\n }\n };\n QuickPopups.prototype.onClosePopup = function (event) {\n if (!isNullOrUndefined(event)) {\n this.dialogEvent = event;\n }\n this.quickPopupHide();\n if (isNullOrUndefined(event) || (!isNullOrUndefined(event) && event.action !== 'escape') ||\n (this.parent.inlineModule && this.parent.element.querySelector('.' + cls.INLINE_APPOINTMENT_CLASS))) {\n this.parent.eventBase.focusElement();\n }\n };\n QuickPopups.prototype.addEventListener = function () {\n this.parent.on(event.cellClick, this.cellClick, this);\n this.parent.on(event.eventClick, this.eventClick, this);\n this.parent.on(event.documentClick, this.documentClick, this);\n this.parent.on(event.dataReady, this.updateMoreEventContent, this);\n };\n QuickPopups.prototype.removeEventListener = function () {\n this.parent.off(event.cellClick, this.cellClick);\n this.parent.off(event.eventClick, this.eventClick);\n this.parent.off(event.documentClick, this.documentClick);\n this.parent.off(event.dataReady, this.updateMoreEventContent);\n };\n QuickPopups.prototype.destroyPopupButtons = function (popupName) {\n var popup = popupName === 'quickPopup' ? this.quickPopup : this.morePopup;\n var buttonCollections = [].slice.call(popup.element.querySelectorAll('.e-control.e-btn'));\n for (var _i = 0, buttonCollections_1 = buttonCollections; _i < buttonCollections_1.length; _i++) {\n var button = buttonCollections_1[_i];\n var instance = button.ej2_instances[0];\n if (instance) {\n instance.destroy();\n }\n }\n };\n QuickPopups.prototype.refreshQuickDialog = function () {\n this.destroyQuickDialog();\n this.renderQuickDialog();\n };\n QuickPopups.prototype.refreshQuickPopup = function () {\n this.destroyQuickPopup();\n this.renderQuickPopup();\n };\n QuickPopups.prototype.refreshMorePopup = function () {\n this.destroyMorePopup();\n this.renderMorePopup();\n };\n QuickPopups.prototype.destroyQuickDialog = function () {\n if (this.quickDialog.element) {\n this.quickDialog.destroy();\n remove(this.quickDialog.element);\n this.quickDialog = null;\n }\n };\n QuickPopups.prototype.destroyQuickPopup = function () {\n if (this.quickPopup.element) {\n this.destroyPopupButtons('quickPopup');\n this.quickPopup.destroy();\n remove(this.quickPopup.element);\n this.quickPopup = null;\n }\n };\n QuickPopups.prototype.destroyMorePopup = function () {\n if (this.morePopup.element) {\n this.destroyPopupButtons('morePopup');\n this.morePopup.destroy();\n remove(this.morePopup.element);\n this.morePopup = null;\n }\n };\n QuickPopups.prototype.destroy = function () {\n if (this.quickPopup.element.querySelectorAll('.e-formvalidator').length) {\n this.fieldValidator.destroy();\n }\n this.removeEventListener();\n this.destroyQuickPopup();\n this.destroyMorePopup();\n this.destroyQuickDialog();\n this.dialogEvent = null;\n this.parent = null;\n this.l10n = null;\n this.isCrudAction = null;\n this.fieldValidator = null;\n this.isMultipleEventSelect = null;\n };\n return QuickPopups;\n}());\nexport { QuickPopups };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, ChildProperty, Event, append, compile } from '@syncfusion/ej2-base';\nimport { EventHandler, Touch, Browser, Animation as PopupAnimation, animationMode } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getUniqueID, formatUnit, select, selectAll } from '@syncfusion/ej2-base';\nimport { attributes, closest, removeClass, addClass, remove } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, Complex, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { Popup } from '../popup/popup';\nimport { calculatePosition } from '../common/position';\nimport { isCollide, fit } from '../common/collision';\nvar TOUCHEND_HIDE_DELAY = 1500;\nvar TAPHOLD_THRESHOLD = 500;\nvar SHOW_POINTER_TIP_GAP = 0;\nvar HIDE_POINTER_TIP_GAP = 8;\nvar MOUSE_TRAIL_GAP = 2;\nvar POINTER_ADJUST = 2;\nvar ROOT = 'e-tooltip';\nvar RTL = 'e-rtl';\nvar DEVICE = 'e-bigger';\nvar ICON = 'e-icons';\nvar CLOSE = 'e-tooltip-close';\nvar TOOLTIP_WRAP = 'e-tooltip-wrap';\nvar CONTENT = 'e-tip-content';\nvar ARROW_TIP = 'e-arrow-tip';\nvar ARROW_TIP_OUTER = 'e-arrow-tip-outer';\nvar ARROW_TIP_INNER = 'e-arrow-tip-inner';\nvar TIP_BOTTOM = 'e-tip-bottom';\nvar TIP_TOP = 'e-tip-top';\nvar TIP_LEFT = 'e-tip-left';\nvar TIP_RIGHT = 'e-tip-right';\nvar POPUP_ROOT = 'e-popup';\nvar POPUP_OPEN = 'e-popup-open';\nvar POPUP_CLOSE = 'e-popup-close';\nvar POPUP_LIB = 'e-lib';\nvar HIDE_POPUP = 'e-hidden';\nvar POPUP_CONTAINER = 'e-tooltip-popup-container';\nvar Animation = /** @class */ (function (_super) {\n __extends(Animation, _super);\n function Animation() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property({ effect: 'FadeIn', duration: 150, delay: 0 })\n ], Animation.prototype, \"open\", void 0);\n __decorate([\n Property({ effect: 'FadeOut', duration: 150, delay: 0 })\n ], Animation.prototype, \"close\", void 0);\n return Animation;\n}(ChildProperty));\nexport { Animation };\n/**\n * Represents the Tooltip component that displays a piece of information about the target element on mouse hover.\n * ```html\n *
Show Tooltip
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Tooltip = /** @class */ (function (_super) {\n __extends(Tooltip, _super);\n /* eslint-enable */\n /**\n * Constructor for creating the Tooltip Component\n *\n * @param {TooltipModel} options - specifies the options for the constructor\n * @param {string| HTMLElement} element - specifies the element for the constructor\n *\n */\n function Tooltip(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.mouseMoveEvent = null;\n _this.mouseMoveTarget = null;\n _this.containerElement = null;\n _this.isBodyContainer = true;\n return _this;\n }\n Tooltip.prototype.initialize = function () {\n this.formatPosition();\n addClass([this.element], ROOT);\n };\n Tooltip.prototype.formatPosition = function () {\n var _a, _b;\n if (this.position.indexOf('Top') === 0 || this.position.indexOf('Bottom') === 0) {\n _a = this.position.split(/(?=[A-Z])/), this.tooltipPositionY = _a[0], this.tooltipPositionX = _a[1];\n }\n else {\n _b = this.position.split(/(?=[A-Z])/), this.tooltipPositionX = _b[0], this.tooltipPositionY = _b[1];\n }\n };\n Tooltip.prototype.renderArrow = function () {\n this.setTipClass(this.position);\n var tip = this.createElement('div', { className: ARROW_TIP + ' ' + this.tipClass });\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_OUTER + ' ' + this.tipClass }));\n tip.appendChild(this.createElement('div', { className: ARROW_TIP_INNER + ' ' + this.tipClass }));\n this.tooltipEle.appendChild(tip);\n };\n Tooltip.prototype.setTipClass = function (position) {\n if (position.indexOf('Right') === 0) {\n this.tipClass = TIP_LEFT;\n }\n else if (position.indexOf('Bottom') === 0) {\n this.tipClass = TIP_TOP;\n }\n else if (position.indexOf('Left') === 0) {\n this.tipClass = TIP_RIGHT;\n }\n else {\n this.tipClass = TIP_BOTTOM;\n }\n };\n Tooltip.prototype.renderPopup = function (target) {\n var elePos = this.mouseTrail ? { top: 0, left: 0 } : this.getTooltipPosition(target);\n this.tooltipEle.classList.remove(POPUP_LIB);\n this.popupObj = new Popup(this.tooltipEle, {\n height: this.height,\n width: this.width,\n position: { X: elePos.left, Y: elePos.top },\n enableRtl: this.enableRtl,\n open: this.openPopupHandler.bind(this),\n close: this.closePopupHandler.bind(this)\n });\n };\n Tooltip.prototype.getScalingFactor = function (target) {\n if (!target) {\n return { x: 1, y: 1 };\n }\n var scalingFactors = { x: 1, y: 1 };\n var elementsWithTransform = target.closest('[style*=\"transform: scale\"]');\n if (elementsWithTransform && elementsWithTransform != this.tooltipEle && elementsWithTransform.contains(this.tooltipEle)) {\n var computedStyle = window.getComputedStyle(elementsWithTransform);\n var transformValue = computedStyle.getPropertyValue(\"transform\");\n var matrixValues = transformValue.match(/matrix\\(([^)]+)\\)/)[1].split(\",\").map(parseFloat);\n scalingFactors.x = matrixValues[0];\n scalingFactors.y = matrixValues[3];\n }\n return scalingFactors;\n };\n Tooltip.prototype.getTooltipPosition = function (target) {\n this.tooltipEle.style.display = 'block';\n var parentWithZoomStyle = this.element.closest('[style*=\"zoom\"]');\n if (parentWithZoomStyle) {\n if (!parentWithZoomStyle.contains(this.tooltipEle)) {\n this.tooltipEle.style.zoom = getComputedStyle(parentWithZoomStyle).zoom;\n }\n }\n var pos = calculatePosition(target, this.tooltipPositionX, this.tooltipPositionY, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var collisionPosition = this.calculateElementPosition(pos, offsetPos);\n var collisionLeft = collisionPosition[0];\n var collisionTop = collisionPosition[1];\n var elePos = this.collisionFlipFit(target, collisionLeft, collisionTop);\n elePos.left = elePos.left / scalingFactors.x;\n elePos.top = elePos.top / scalingFactors.y;\n this.tooltipEle.style.display = '';\n return elePos;\n };\n Tooltip.prototype.windowResize = function () {\n this.reposition(this.findTarget());\n };\n Tooltip.prototype.reposition = function (target) {\n if (this.popupObj && target) {\n var elePos = this.getTooltipPosition(target);\n this.popupObj.position = { X: elePos.left, Y: elePos.top };\n this.popupObj.dataBind();\n }\n };\n Tooltip.prototype.openPopupHandler = function () {\n if (!this.mouseTrail && this.needTemplateReposition()) {\n this.reposition(this.findTarget());\n }\n this.trigger('afterOpen', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.closePopupHandler = function () {\n if (this.isReact && !(this.opensOn === 'Click' && typeof (this.content) === 'function')) {\n this.clearTemplate(['content']);\n }\n this.clear();\n this.trigger('afterClose', this.tooltipEventArgs);\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.calculateTooltipOffset = function (position, xScalingFactor, yScalingFactor) {\n if (xScalingFactor === void 0) { xScalingFactor = 1; }\n if (yScalingFactor === void 0) { yScalingFactor = 1; }\n var pos = { top: 0, left: 0 };\n var tipWidth, tipHeight, tooltipEleWidth, tooltipEleHeight, arrowEle;\n var tipAdjust, tipHeightAdjust, tipWidthAdjust;\n if (xScalingFactor != 1 || yScalingFactor != 1) {\n var tooltipEleRect = this.tooltipEle.getBoundingClientRect();\n var arrowEleRect = void 0;\n tooltipEleWidth = Math.round(tooltipEleRect.width);\n tooltipEleHeight = Math.round(tooltipEleRect.height);\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (arrowEle) {\n arrowEleRect = arrowEle.getBoundingClientRect();\n }\n tipWidth = arrowEle ? Math.round(arrowEleRect.width) : 0;\n tipHeight = arrowEle ? Math.round(arrowEleRect.height) : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (tooltipEleHeight - (this.tooltipEle.clientHeight * yScalingFactor));\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (tooltipEleWidth - (this.tooltipEle.clientWidth * xScalingFactor));\n }\n else {\n tooltipEleWidth = this.tooltipEle.offsetWidth;\n tooltipEleHeight = this.tooltipEle.offsetHeight;\n arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n tipWidth = arrowEle ? arrowEle.offsetWidth : 0;\n tipHeight = arrowEle ? arrowEle.offsetHeight : 0;\n tipAdjust = (this.showTipPointer ? SHOW_POINTER_TIP_GAP : HIDE_POINTER_TIP_GAP);\n tipHeightAdjust = (tipHeight / 2) + POINTER_ADJUST + (this.tooltipEle.offsetHeight - this.tooltipEle.clientHeight);\n tipWidthAdjust = (tipWidth / 2) + POINTER_ADJUST + (this.tooltipEle.offsetWidth - this.tooltipEle.clientWidth);\n }\n if (this.mouseTrail) {\n tipAdjust += MOUSE_TRAIL_GAP;\n }\n switch (position) {\n case 'RightTop':\n pos.left += tipWidth + tipAdjust;\n pos.top -= tooltipEleHeight - tipHeightAdjust;\n break;\n case 'RightCenter':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'RightBottom':\n pos.left += tipWidth + tipAdjust;\n pos.top -= (tipHeightAdjust);\n break;\n case 'BottomRight':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n case 'BottomCenter':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n case 'BottomLeft':\n pos.top += (tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'LeftBottom':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tipHeightAdjust);\n break;\n case 'LeftCenter':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight / 2);\n break;\n case 'LeftTop':\n pos.left -= (tipWidth + tooltipEleWidth + tipAdjust);\n pos.top -= (tooltipEleHeight - tipHeightAdjust);\n break;\n case 'TopLeft':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth - tipWidthAdjust);\n break;\n case 'TopRight':\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tipWidthAdjust);\n break;\n default:\n pos.top -= (tooltipEleHeight + tipHeight + tipAdjust);\n pos.left -= (tooltipEleWidth / 2);\n break;\n }\n pos.left += this.offsetX;\n pos.top += this.offsetY;\n return pos;\n };\n Tooltip.prototype.updateTipPosition = function (position) {\n var selEle = selectAll('.' + ARROW_TIP + ',.' + ARROW_TIP_OUTER + ',.' + ARROW_TIP_INNER, this.tooltipEle);\n var removeList = [TIP_BOTTOM, TIP_TOP, TIP_LEFT, TIP_RIGHT];\n removeClass(selEle, removeList);\n this.setTipClass(position);\n addClass(selEle, this.tipClass);\n };\n Tooltip.prototype.adjustArrow = function (target, position, tooltipPositionX, tooltipPositionY) {\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer === false || arrowEle === null) {\n return;\n }\n this.updateTipPosition(position);\n var leftValue;\n var topValue;\n this.tooltipEle.style.display = 'block';\n var tooltipWidth = this.tooltipEle.clientWidth;\n var tooltipHeight = this.tooltipEle.clientHeight;\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n var tipWidth = arrowEle.offsetWidth;\n var tipHeight = arrowEle.offsetHeight;\n this.tooltipEle.style.display = '';\n if (this.tipClass === TIP_BOTTOM || this.tipClass === TIP_TOP) {\n if (this.tipClass === TIP_BOTTOM) {\n topValue = '99.9%';\n // Arrow icon aligned -2px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 2) + 'px';\n }\n else {\n topValue = -(tipHeight - 1) + 'px';\n // Arrow icon aligned -6px height from ArrowOuterTip div\n arrowInnerELe.style.top = '-' + (tipHeight - 6) + 'px';\n }\n if (target) {\n var tipPosExclude = tooltipPositionX !== 'Center' || (tooltipWidth > target.offsetWidth) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionX === 'Left') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n leftValue = (tooltipWidth - tipWidth - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionX === 'Right') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n leftValue = POINTER_ADJUST + 'px';\n }\n else if ((tipPosExclude) && (this.tipPointerPosition === 'End' || this.tipPointerPosition === 'Start')) {\n leftValue = (this.tipPointerPosition === 'End') ? ((target.offsetWidth + ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2)) - (tipWidth / 2)) - POINTER_ADJUST + 'px'\n : ((this.tooltipEle.offsetWidth - target.offsetWidth) / 2) - (tipWidth / 2) + POINTER_ADJUST + 'px';\n }\n else {\n leftValue = ((tooltipWidth / 2) - (tipWidth / 2)) + 'px';\n }\n }\n }\n else {\n if (this.tipClass === TIP_RIGHT) {\n leftValue = '99.9%';\n // Arrow icon aligned -2px left from ArrowOuterTip div\n arrowInnerELe.style.left = '-' + (tipWidth - 2) + 'px';\n }\n else {\n leftValue = -(tipWidth - 1) + 'px';\n // Arrow icon aligned -2px from ArrowOuterTip width\n arrowInnerELe.style.left = (-(tipWidth) + (tipWidth - 2)) + 'px';\n }\n var tipPosExclude = tooltipPositionY !== 'Center' || (tooltipHeight > target.offsetHeight) || this.mouseTrail;\n if ((tipPosExclude && tooltipPositionY === 'Top') || (!tipPosExclude && this.tipPointerPosition === 'End')) {\n topValue = (tooltipHeight - tipHeight - POINTER_ADJUST) + 'px';\n }\n else if ((tipPosExclude && tooltipPositionY === 'Bottom') || (!tipPosExclude && this.tipPointerPosition === 'Start')) {\n topValue = POINTER_ADJUST + 'px';\n }\n else {\n topValue = ((tooltipHeight / 2) - (tipHeight / 2)) + 'px';\n }\n }\n arrowEle.style.top = topValue;\n arrowEle.style.left = leftValue;\n };\n Tooltip.prototype.renderContent = function (target) {\n var tooltipContent = select('.' + CONTENT, this.tooltipEle);\n if (this.cssClass) {\n addClass([this.tooltipEle], this.cssClass.split(' '));\n }\n if (target && !isNullOrUndefined(target.getAttribute('title'))) {\n target.setAttribute('data-content', target.getAttribute('title'));\n target.removeAttribute('title');\n }\n if (!isNullOrUndefined(this.content)) {\n tooltipContent.innerHTML = '';\n if (this.content instanceof HTMLElement) {\n tooltipContent.appendChild(this.content);\n }\n else if (typeof this.content === 'string') {\n if (this.enableHtmlSanitizer) {\n this.setProperties({ content: SanitizeHtmlHelper.sanitize(this.content) }, true);\n }\n if (this.enableHtmlParse) {\n var tempFunction = compile(this.content);\n var tempArr = tempFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent, this.root);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n }\n else {\n tooltipContent['textContent'] = this.content;\n }\n }\n else {\n var templateFunction = compile(this.content);\n var tempArr = templateFunction({}, this, 'content', this.element.id + 'content', undefined, undefined, tooltipContent);\n if (tempArr) {\n append(tempArr, tooltipContent);\n }\n this.renderReactTemplates();\n }\n }\n else {\n if (target && !isNullOrUndefined(target.getAttribute('data-content'))) {\n tooltipContent.innerHTML = target.getAttribute('data-content');\n }\n }\n };\n Tooltip.prototype.renderCloseIcon = function () {\n if (!this.isSticky) {\n var existingCloseIcon = this.tooltipEle.querySelector('.' + ICON + '.' + CLOSE);\n if (existingCloseIcon) {\n remove(existingCloseIcon);\n }\n return;\n }\n var tipClose = this.createElement('div', { className: ICON + ' ' + CLOSE });\n this.tooltipEle.appendChild(tipClose);\n EventHandler.add(tipClose, Browser.touchStartEvent, this.onStickyClose, this);\n };\n Tooltip.prototype.addDescribedBy = function (target, id) {\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n if (describedby.indexOf(id) < 0) {\n describedby.push(id);\n }\n attributes(target, { 'aria-describedby': describedby.join(' ').trim(), 'data-tooltip-id': id });\n };\n Tooltip.prototype.removeDescribedBy = function (target) {\n var id = target.getAttribute('data-tooltip-id');\n var describedby = (target.getAttribute('aria-describedby') || '').split(/\\s+/);\n var index = describedby.indexOf(id);\n if (index !== -1) {\n describedby.splice(index, 1);\n }\n target.removeAttribute('data-tooltip-id');\n var orgdescribedby = describedby.join(' ').trim();\n if (orgdescribedby) {\n target.setAttribute('aria-describedby', orgdescribedby);\n }\n else {\n target.removeAttribute('aria-describedby');\n }\n };\n Tooltip.prototype.tapHoldHandler = function (evt) {\n clearTimeout(this.autoCloseTimer);\n this.targetHover(evt.originalEvent);\n };\n Tooltip.prototype.touchEndHandler = function (e) {\n var _this = this;\n if (this.isSticky) {\n return;\n }\n var close = function () {\n _this.close();\n };\n this.autoCloseTimer = setTimeout(close, TOUCHEND_HIDE_DELAY);\n };\n Tooltip.prototype.targetClick = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target)) {\n return;\n }\n if (target.getAttribute('data-tooltip-id') === null) {\n this.targetHover(e);\n }\n else if (!this.isSticky) {\n this.hideTooltip(this.animation.close, e, target);\n }\n };\n Tooltip.prototype.targetHover = function (e) {\n var target;\n if (this.target) {\n target = closest(e.target, this.target);\n }\n else {\n target = this.element;\n }\n if (isNullOrUndefined(target) || (target.getAttribute('data-tooltip-id') !== null && this.closeDelay === 0)) {\n return;\n }\n var targetList = [].slice.call(selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document));\n for (var _i = 0, targetList_1 = targetList; _i < targetList_1.length; _i++) {\n var target_1 = targetList_1[_i];\n this.restoreElement(target_1);\n }\n this.showTooltip(target, this.animation.open, e);\n };\n Tooltip.prototype.mouseMoveBeforeOpen = function (e) {\n this.mouseMoveEvent = e;\n };\n Tooltip.prototype.mouseMoveBeforeRemove = function () {\n if (this.mouseMoveTarget) {\n EventHandler.remove(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen);\n }\n };\n Tooltip.prototype.showTooltip = function (target, showAnimation, e) {\n var _this = this;\n clearTimeout(this.showTimer);\n clearTimeout(this.hideTimer);\n if (this.openDelay && this.mouseTrail) {\n this.mouseMoveBeforeRemove();\n this.mouseMoveTarget = target;\n EventHandler.add(this.mouseMoveTarget, 'mousemove touchstart', this.mouseMoveBeforeOpen, this);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n var observeCallback = function (beforeRenderArgs) {\n _this.beforeRenderCallback(beforeRenderArgs, target, e, showAnimation);\n };\n this.trigger('beforeRender', this.tooltipEventArgs, observeCallback.bind(this));\n };\n Tooltip.prototype.beforeRenderCallback = function (beforeRenderArgs, target, e, showAnimation) {\n if (beforeRenderArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n }\n else {\n this.isHidden = false;\n if (isNullOrUndefined(this.tooltipEle)) {\n this.ctrlId = this.element.getAttribute('id') ?\n getUniqueID(this.element.getAttribute('id')) : getUniqueID('tooltip');\n this.tooltipEle = this.createElement('div', {\n className: TOOLTIP_WRAP + ' ' + POPUP_ROOT + ' ' + POPUP_LIB, attrs: {\n role: 'tooltip', 'aria-hidden': 'false', 'id': this.ctrlId + '_content'\n }, styles: 'width:' +\n formatUnit(this.width) + ';height:' + formatUnit(this.height) + ';position:absolute;'\n });\n this.tooltipBeforeRender(target, this);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n else {\n if (target) {\n this.adjustArrow(target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n this.addDescribedBy(target, this.ctrlId + '_content');\n this.renderContent(target);\n PopupAnimation.stop(this.tooltipEle);\n this.reposition(target);\n this.tooltipAfterRender(target, e, showAnimation, this);\n }\n }\n }\n };\n Tooltip.prototype.appendContainer = function (ctrlObj) {\n if (typeof this.container == 'string') {\n if (this.container === 'body') {\n this.containerElement = document.body;\n }\n else {\n this.isBodyContainer = false;\n this.containerElement = select(this.container, document);\n }\n }\n else if (this.container instanceof HTMLElement) {\n this.containerElement = this.container;\n this.isBodyContainer = this.containerElement.tagName === 'BODY';\n }\n if (!this.isBodyContainer) {\n addClass([this.containerElement], POPUP_CONTAINER);\n }\n this.containerElement.appendChild(ctrlObj.tooltipEle);\n };\n Tooltip.prototype.tooltipBeforeRender = function (target, ctrlObj) {\n if (target) {\n if (Browser.isDevice) {\n addClass([ctrlObj.tooltipEle], DEVICE);\n }\n if (ctrlObj.width !== 'auto') {\n ctrlObj.tooltipEle.style.maxWidth = formatUnit(ctrlObj.width);\n }\n ctrlObj.tooltipEle.appendChild(ctrlObj.createElement('div', { className: CONTENT }));\n this.appendContainer(ctrlObj);\n removeClass([ctrlObj.tooltipEle], HIDE_POPUP);\n ctrlObj.addDescribedBy(target, ctrlObj.ctrlId + '_content');\n ctrlObj.renderContent(target);\n addClass([ctrlObj.tooltipEle], POPUP_OPEN);\n if (ctrlObj.showTipPointer) {\n ctrlObj.renderArrow();\n }\n ctrlObj.renderCloseIcon();\n ctrlObj.renderPopup(target);\n ctrlObj.adjustArrow(target, ctrlObj.position, ctrlObj.tooltipPositionX, ctrlObj.tooltipPositionY);\n PopupAnimation.stop(ctrlObj.tooltipEle);\n ctrlObj.reposition(target);\n }\n };\n Tooltip.prototype.tooltipAfterRender = function (target, e, showAnimation, ctrlObj) {\n if (target) {\n removeClass([ctrlObj.tooltipEle], POPUP_OPEN);\n addClass([ctrlObj.tooltipEle], POPUP_CLOSE);\n ctrlObj.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: ctrlObj.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n if (ctrlObj.needTemplateReposition() && !ctrlObj.mouseTrail) {\n ctrlObj.tooltipEle.style.display = 'none';\n }\n var observeCallback = function (observedArgs) {\n ctrlObj.beforeOpenCallback(observedArgs, target, showAnimation, e);\n };\n ctrlObj.trigger('beforeOpen', ctrlObj.tooltipEventArgs, observeCallback.bind(ctrlObj));\n }\n };\n Tooltip.prototype.beforeOpenCallback = function (observedArgs, target, showAnimation, e) {\n var _this = this;\n if (observedArgs.cancel) {\n this.isHidden = true;\n this.clear();\n this.mouseMoveBeforeRemove();\n this.restoreElement(target);\n }\n else {\n var openAnimation_1 = {\n name: (showAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeIn' : this.animation.open.effect,\n duration: showAnimation.duration,\n delay: showAnimation.delay,\n timingFunction: 'easeOut'\n };\n if (showAnimation.effect === 'None') {\n openAnimation_1 = undefined;\n }\n if (this.openDelay > 0) {\n var show = function () {\n if (_this.mouseTrail) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', _this.onMouseMove, _this);\n }\n if (_this.popupObj) {\n _this.popupObj.show(openAnimation_1, target);\n if (_this.mouseMoveEvent && _this.mouseTrail) {\n _this.onMouseMove(_this.mouseMoveEvent);\n }\n }\n };\n this.showTimer = setTimeout(show, this.openDelay);\n }\n else {\n if (this.popupObj) {\n this.popupObj.show(openAnimation_1, target);\n }\n }\n }\n if (e) {\n this.wireMouseEvents(e, target);\n }\n };\n Tooltip.prototype.needTemplateReposition = function () {\n // eslint-disable-next-line\n var tooltip = this;\n return !isNullOrUndefined(tooltip.viewContainerRef)\n && typeof tooltip.viewContainerRef !== 'string';\n };\n Tooltip.prototype.checkCollision = function (target, x, y) {\n var elePos = {\n left: x, top: y, position: this.position,\n horizontal: this.tooltipPositionX, vertical: this.tooltipPositionY\n };\n var affectedPos = isCollide(this.tooltipEle, this.checkCollideTarget(), x, y);\n if (affectedPos.length > 0) {\n elePos.horizontal = affectedPos.indexOf('left') >= 0 ? 'Right' : affectedPos.indexOf('right') >= 0 ? 'Left' :\n this.tooltipPositionX;\n elePos.vertical = affectedPos.indexOf('top') >= 0 ? 'Bottom' : affectedPos.indexOf('bottom') >= 0 ? 'Top' :\n this.tooltipPositionY;\n }\n return elePos;\n };\n Tooltip.prototype.calculateElementPosition = function (pos, offsetPos) {\n return [this.isBodyContainer ? pos.left + offsetPos.left :\n (pos.left - this.containerElement.offsetLeft) + offsetPos.left + window.pageXOffset + this.containerElement.scrollLeft,\n this.isBodyContainer ? pos.top + offsetPos.top :\n (pos.top - this.containerElement.offsetTop) + offsetPos.top + window.pageYOffset + this.containerElement.scrollTop];\n };\n Tooltip.prototype.collisionFlipFit = function (target, x, y) {\n var elePos = this.checkCollision(target, x, y);\n var newpos = elePos.position;\n if (this.tooltipPositionY !== elePos.vertical) {\n newpos = ((this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + this.tooltipPositionX : this.tooltipPositionX + elePos.vertical);\n }\n if (this.tooltipPositionX !== elePos.horizontal) {\n if (newpos.indexOf('Left') === 0) {\n elePos.vertical = (newpos === 'LeftTop' || newpos === 'LeftCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Left');\n }\n if (newpos.indexOf('Right') === 0) {\n elePos.vertical = (newpos === 'RightTop' || newpos === 'RightCenter') ? 'Top' : 'Bottom';\n newpos = (elePos.vertical + 'Right');\n }\n elePos.horizontal = this.tooltipPositionX;\n }\n this.tooltipEventArgs = {\n type: null, cancel: false, target: target, event: null,\n element: this.tooltipEle, collidedPosition: newpos\n };\n this.trigger('beforeCollision', this.tooltipEventArgs);\n if (this.tooltipEventArgs.cancel) {\n newpos = this.position;\n }\n else {\n var elePosVertical = elePos.vertical;\n var elePosHorizontal = elePos.horizontal;\n if (elePos.position !== newpos) {\n var pos = calculatePosition(target, elePosHorizontal, elePosVertical, !this.isBodyContainer, this.isBodyContainer ? null : this.containerElement.getBoundingClientRect());\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n var scalingFactors = this.getScalingFactor(target);\n var offsetPos = this.calculateTooltipOffset(newpos, scalingFactors.x, scalingFactors.y);\n offsetPos.top -= this.getOffSetPosition('TopBottom', newpos, this.offsetY);\n offsetPos.left -= this.getOffSetPosition('RightLeft', newpos, this.offsetX);\n elePos.position = newpos;\n var elePosition = this.calculateElementPosition(pos, offsetPos);\n elePos.left = elePosition[0];\n elePos.top = elePosition[1];\n }\n else {\n this.adjustArrow(target, newpos, elePosHorizontal, elePosVertical);\n }\n }\n var eleOffset = { left: elePos.left, top: elePos.top };\n var position = this.isBodyContainer ?\n fit(this.tooltipEle, this.checkCollideTarget(), { X: true, Y: this.windowCollision }, eleOffset) : eleOffset;\n this.tooltipEle.style.display = 'block';\n var arrowEle = select('.' + ARROW_TIP, this.tooltipEle);\n if (this.showTipPointer && arrowEle != null && (newpos.indexOf('Bottom') === 0 || newpos.indexOf('Top') === 0)) {\n var arrowleft = parseInt(arrowEle.style.left, 10) - (position.left - elePos.left);\n if (arrowleft < 0) {\n arrowleft = 0;\n }\n else if ((arrowleft + arrowEle.offsetWidth) > this.tooltipEle.clientWidth) {\n arrowleft = this.tooltipEle.clientWidth - arrowEle.offsetWidth;\n }\n arrowEle.style.left = arrowleft.toString() + 'px';\n }\n this.tooltipEle.style.display = '';\n eleOffset.left = position.left;\n eleOffset.top = position.top;\n return eleOffset;\n };\n Tooltip.prototype.getOffSetPosition = function (positionString, newPos, offsetType) {\n return ((positionString.indexOf(this.position.split(/(?=[A-Z])/)[0]) !== -1) &&\n (positionString.indexOf(newPos.split(/(?=[A-Z])/)[0]) !== -1)) ? (2 * offsetType) : 0;\n };\n Tooltip.prototype.checkCollideTarget = function () {\n return !this.windowCollision && this.target ? this.element : null;\n };\n Tooltip.prototype.hideTooltip = function (hideAnimation, e, targetElement) {\n var _this = this;\n if (this.closeDelay > 0) {\n clearTimeout(this.hideTimer);\n clearTimeout(this.showTimer);\n var hide = function () {\n if (_this.closeDelay && _this.tooltipEle && _this.isTooltipOpen) {\n return;\n }\n _this.tooltipHide(hideAnimation, e, targetElement);\n };\n this.hideTimer = setTimeout(hide, this.closeDelay);\n }\n else {\n this.tooltipHide(hideAnimation, e, targetElement);\n }\n };\n Tooltip.prototype.tooltipHide = function (hideAnimation, e, targetElement) {\n var _this = this;\n var target;\n if (e) {\n target = this.target ? (targetElement || e.target) : this.element;\n }\n else {\n target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n }\n this.tooltipEventArgs = {\n type: e ? e.type : null, cancel: false, target: target, event: e ? e : null,\n element: this.tooltipEle, isInteracted: !isNullOrUndefined(e)\n };\n // this line commented for close the tooltip popup element even the target element destroyed in a page.\n //if (isNullOrUndefined(target)) { return; }\n this.trigger('beforeClose', this.tooltipEventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.mouseMoveBeforeRemove();\n _this.popupHide(hideAnimation, target);\n }\n else {\n _this.isHidden = false;\n }\n });\n this.tooltipEventArgs = null;\n };\n Tooltip.prototype.popupHide = function (hideAnimation, target) {\n if (target) {\n this.restoreElement(target);\n }\n this.isHidden = true;\n var closeAnimation = {\n name: (hideAnimation.effect === 'None' && animationMode === 'Enable') ? 'FadeOut' : this.animation.close.effect,\n duration: hideAnimation.duration,\n delay: hideAnimation.delay,\n timingFunction: 'easeIn'\n };\n if (hideAnimation.effect === 'None') {\n closeAnimation = undefined;\n }\n if (this.popupObj) {\n this.popupObj.hide(closeAnimation);\n }\n };\n Tooltip.prototype.restoreElement = function (target) {\n this.unwireMouseEvents(target);\n if (!isNullOrUndefined(target.getAttribute('data-content'))) {\n target.setAttribute('title', target.getAttribute('data-content'));\n target.removeAttribute('data-content');\n }\n this.removeDescribedBy(target);\n };\n Tooltip.prototype.clear = function () {\n if (this.tooltipEle) {\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n }\n if (this.isHidden) {\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n this.tooltipEle = null;\n this.popupObj = null;\n }\n };\n Tooltip.prototype.tooltipHover = function (e) {\n if (this.tooltipEle) {\n this.isTooltipOpen = true;\n }\n };\n Tooltip.prototype.tooltipMouseOut = function (e) {\n this.isTooltipOpen = false;\n this.hideTooltip(this.animation.close, e, this.findTarget());\n };\n Tooltip.prototype.onMouseOut = function (e) {\n var enteredElement = e.relatedTarget;\n // don't close the tooltip only if it is tooltip content element\n if (enteredElement && !this.mouseTrail) {\n var checkForTooltipElement = closest(enteredElement, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT);\n if (checkForTooltipElement) {\n EventHandler.add(checkForTooltipElement, 'mouseleave', this.tooltipElementMouseOut, this);\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n if (this.closeDelay === 0) {\n this.clear();\n }\n }\n }\n else {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n this.clear();\n }\n };\n Tooltip.prototype.tooltipElementMouseOut = function (e) {\n this.hideTooltip(this.animation.close, e, this.findTarget());\n EventHandler.remove(this.element, 'mouseleave', this.tooltipElementMouseOut);\n this.clear();\n };\n Tooltip.prototype.onStickyClose = function (e) {\n this.close();\n };\n Tooltip.prototype.onMouseMove = function (event) {\n var eventPageX = 0;\n var eventPageY = 0;\n if (event.type.indexOf('touch') > -1) {\n event.preventDefault();\n eventPageX = event.touches[0].pageX;\n eventPageY = event.touches[0].pageY;\n }\n else {\n eventPageX = event.pageX;\n eventPageY = event.pageY;\n }\n PopupAnimation.stop(this.tooltipEle);\n removeClass([this.tooltipEle], POPUP_CLOSE);\n addClass([this.tooltipEle], POPUP_OPEN);\n this.adjustArrow(event.target, this.position, this.tooltipPositionX, this.tooltipPositionY);\n var scalingFactors = this.getScalingFactor(event.target);\n var pos = this.calculateTooltipOffset(this.position, scalingFactors.x, scalingFactors.y);\n var x = eventPageX + pos.left + this.offsetX;\n var y = eventPageY + pos.top + this.offsetY;\n var elePos = this.checkCollision(event.target, x, y);\n if (this.tooltipPositionX !== elePos.horizontal || this.tooltipPositionY !== elePos.vertical) {\n var newpos = (this.position.indexOf('Bottom') === 0 || this.position.indexOf('Top') === 0) ?\n elePos.vertical + elePos.horizontal : elePos.horizontal + elePos.vertical;\n elePos.position = newpos;\n this.adjustArrow(event.target, elePos.position, elePos.horizontal, elePos.vertical);\n var colpos = this.calculateTooltipOffset(elePos.position, scalingFactors.x, scalingFactors.y);\n elePos.left = eventPageX + colpos.left - this.offsetX;\n elePos.top = eventPageY + colpos.top - this.offsetY;\n }\n this.tooltipEle.style.left = elePos.left + 'px';\n this.tooltipEle.style.top = elePos.top + 'px';\n };\n Tooltip.prototype.keyDown = function (event) {\n if (this.tooltipEle && event.keyCode === 27) {\n this.close();\n }\n };\n Tooltip.prototype.touchEnd = function (e) {\n if (this.tooltipEle && closest(e.target, '.' + ROOT) === null && !this.isSticky) {\n this.close();\n }\n };\n Tooltip.prototype.scrollHandler = function (e) {\n if (this.tooltipEle && !this.isSticky) {\n if (!(closest(e.target, \".\" + TOOLTIP_WRAP + \".\" + POPUP_LIB + \".\" + POPUP_ROOT))) {\n this.close();\n }\n }\n };\n /**\n * Core method that initializes the control rendering.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.render = function () {\n this.initialize();\n this.wireEvents(this.opensOn);\n this.renderComplete();\n };\n /**\n * Initializes the values of private members.\n *\n * @private\n * @returns {void}\n */\n Tooltip.prototype.preRender = function () {\n this.tipClass = TIP_BOTTOM;\n this.tooltipPositionX = 'Center';\n this.tooltipPositionY = 'Top';\n this.isHidden = true;\n };\n /**\n * Binding events to the Tooltip element.\n *\n * @hidden\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.wireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_1 = triggerList; _i < triggerList_1.length; _i++) {\n var opensOn = triggerList_1[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.wireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.add(this.element, Browser.touchStartEvent, this.targetClick, this);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n this.touchModule = new Touch(this.element, {\n tapHoldThreshold: TAPHOLD_THRESHOLD,\n tapHold: this.tapHoldHandler.bind(this)\n });\n EventHandler.add(this.element, Browser.touchEndEvent, this.touchEndHandler, this);\n }\n else {\n EventHandler.add(this.element, 'mouseover', this.targetHover, this);\n }\n }\n }\n EventHandler.add(document, 'touchend', this.touchEnd, this);\n EventHandler.add(document, 'scroll wheel', this.scrollHandler, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(document, 'keydown', this.keyDown, this);\n };\n Tooltip.prototype.getTriggerList = function (trigger) {\n if (trigger === 'Auto') {\n trigger = (Browser.isDevice) ? 'Hover' : 'Hover Focus';\n }\n return trigger.split(' ');\n };\n Tooltip.prototype.wireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n this.targetsList = targetList;\n for (var _i = 0, targetList_2 = targetList; _i < targetList_2.length; _i++) {\n var target = targetList_2[_i];\n EventHandler.add(target, 'focus', this.targetHover, this);\n }\n }\n else {\n EventHandler.add(this.element, 'focusin', this.targetHover, this);\n }\n };\n Tooltip.prototype.wireMouseEvents = function (e, target) {\n if (this.tooltipEle) {\n if (!this.isSticky) {\n if (e.type === 'focus') {\n EventHandler.add(target, 'blur', this.onMouseOut, this);\n }\n if (e.type === 'focusin') {\n EventHandler.add(target, 'focusout', this.onMouseOut, this);\n }\n if (e.type === 'mouseover') {\n EventHandler.add(target, 'mouseleave', this.onMouseOut, this);\n }\n if (this.closeDelay) {\n EventHandler.add(this.tooltipEle, 'mouseenter', this.tooltipHover, this);\n EventHandler.add(this.tooltipEle, 'mouseleave', this.tooltipMouseOut, this);\n }\n }\n if (this.mouseTrail && this.openDelay === 0) {\n EventHandler.add(target, 'mousemove touchstart mouseenter', this.onMouseMove, this);\n }\n }\n };\n /**\n * Unbinding events from the element on widget destroy.\n *\n * @hidden\n *\n * @param {string} trigger - specify the trigger string to the function\n * @returns {void}\n *\n */\n Tooltip.prototype.unwireEvents = function (trigger) {\n var triggerList = this.getTriggerList(trigger);\n for (var _i = 0, triggerList_2 = triggerList; _i < triggerList_2.length; _i++) {\n var opensOn = triggerList_2[_i];\n if (opensOn === 'Custom') {\n return;\n }\n if (opensOn === 'Focus') {\n this.unwireFocusEvents();\n }\n if (opensOn === 'Click') {\n EventHandler.remove(this.element, Browser.touchStartEvent, this.targetClick);\n }\n if (opensOn === 'Hover') {\n if (Browser.isDevice) {\n if (this.touchModule) {\n this.touchModule.destroy();\n }\n EventHandler.remove(this.element, Browser.touchEndEvent, this.touchEndHandler);\n }\n else {\n EventHandler.remove(this.element, 'mouseover', this.targetHover);\n }\n }\n }\n EventHandler.remove(document, 'touchend', this.touchEnd);\n EventHandler.remove(document, 'scroll wheel', this.scrollHandler);\n EventHandler.remove(window, 'resize', this.windowResize);\n EventHandler.remove(document, 'keydown', this.keyDown);\n };\n Tooltip.prototype.unwireFocusEvents = function () {\n if (!isNullOrUndefined(this.target)) {\n var targetList = [].slice.call(selectAll(this.target, this.element));\n for (var _i = 0, targetList_3 = targetList; _i < targetList_3.length; _i++) {\n var target = targetList_3[_i];\n EventHandler.remove(target, 'focus', this.targetHover);\n }\n }\n else {\n EventHandler.remove(this.element, 'focusin', this.targetHover);\n }\n };\n Tooltip.prototype.unwireMouseEvents = function (target) {\n if (!this.isSticky) {\n var triggerList = this.getTriggerList(this.opensOn);\n for (var _i = 0, triggerList_3 = triggerList; _i < triggerList_3.length; _i++) {\n var opensOn = triggerList_3[_i];\n if (opensOn === 'Focus') {\n EventHandler.remove(target, 'blur', this.onMouseOut);\n EventHandler.remove(target, 'focusout', this.onMouseOut);\n }\n if (opensOn === 'Hover' && !Browser.isDevice) {\n EventHandler.remove(target, 'mouseleave', this.onMouseOut);\n }\n }\n if (this.closeDelay) {\n EventHandler.remove(target, 'mouseenter', this.tooltipHover);\n EventHandler.remove(target, 'mouseleave', this.tooltipMouseOut);\n }\n }\n if (this.mouseTrail) {\n EventHandler.remove(target, 'mousemove touchstart mouseenter', this.onMouseMove);\n }\n };\n Tooltip.prototype.findTarget = function () {\n var target = select('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', document);\n return target;\n };\n /**\n * Core method to return the component name.\n *\n * @private\n *\n * @returns {string} - this method returns module name.\n */\n Tooltip.prototype.getModuleName = function () {\n return 'tooltip';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @private\n *\n * @returns {string} - this method returns persisted data.\n */\n Tooltip.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @private\n *\n * @param {TooltipModel} newProp - this param gives new property values to the method\n * @param {TooltipModel} oldProp - this param gives old property values to the method\n * @returns {void}\n *\n */\n Tooltip.prototype.onPropertyChanged = function (newProp, oldProp) {\n var targetElement = this.findTarget();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.width = this.tooltipEle.style.maxWidth = formatUnit(newProp.width);\n this.reposition(targetElement);\n }\n break;\n case 'height':\n if (this.tooltipEle && targetElement) {\n this.tooltipEle.style.height = formatUnit(newProp.height);\n this.reposition(targetElement);\n }\n break;\n case 'content':\n if (this.tooltipEle) {\n this.renderContent();\n }\n break;\n case 'opensOn':\n this.unwireEvents(oldProp.opensOn);\n this.wireEvents(newProp.opensOn);\n break;\n case 'position':\n this.formatPosition();\n if (this.tooltipEle && targetElement) {\n var arrowInnerELe = select('.' + ARROW_TIP_INNER, this.tooltipEle);\n if (arrowInnerELe) {\n arrowInnerELe.style.top = arrowInnerELe.style.left = null;\n }\n this.reposition(targetElement);\n }\n break;\n case 'tipPointerPosition':\n if (this.tooltipEle && targetElement) {\n this.reposition(targetElement);\n }\n break;\n case 'offsetX':\n if (this.tooltipEle) {\n var x = newProp.offsetX - oldProp.offsetX;\n this.tooltipEle.style.left = (parseInt(this.tooltipEle.style.left, 10) + (x)).toString() + 'px';\n }\n break;\n case 'offsetY':\n if (this.tooltipEle) {\n var y = newProp.offsetY - oldProp.offsetY;\n this.tooltipEle.style.top = (parseInt(this.tooltipEle.style.top, 10) + (y)).toString() + 'px';\n }\n break;\n case 'cssClass':\n if (this.tooltipEle) {\n if (oldProp.cssClass) {\n removeClass([this.tooltipEle], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.tooltipEle], newProp.cssClass.split(' '));\n }\n }\n break;\n case 'enableRtl':\n if (this.tooltipEle) {\n if (this.enableRtl) {\n addClass([this.tooltipEle], RTL);\n }\n else {\n removeClass([this.tooltipEle], RTL);\n }\n }\n break;\n case 'isSticky':\n if (this.tooltipEle && targetElement) {\n this.renderCloseIcon();\n this.reposition(targetElement);\n }\n break;\n case 'container':\n if (!isNullOrUndefined(this.containerElement)) {\n removeClass([this.containerElement], POPUP_CONTAINER);\n }\n this.container = newProp.container;\n if (this.tooltipEle && targetElement) {\n this.appendContainer(this);\n this.reposition(targetElement);\n }\n }\n }\n };\n /**\n * It is used to show the Tooltip on the specified target with specific animation settings.\n *\n * @param {HTMLElement} element - Target element where the Tooltip is to be displayed. (It is an optional parameter)\n * @param {TooltipAnimationSettings} animation - Sets the specific animation, while showing the Tooltip on the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.open = function (element, animation) {\n if (isNullOrUndefined(animation)) {\n animation = this.animation.open;\n }\n if (isNullOrUndefined(element)) {\n element = this.element;\n }\n if (element.style.display === 'none') {\n return;\n }\n this.showTooltip(element, animation);\n };\n /**\n * It is used to hide the Tooltip with specific animation effect.\n *\n * @param {TooltipAnimationSettings} animation - Sets the specific animation when hiding Tooltip from the screen. (It is an optional parameter)\n * @returns {void}\n */\n Tooltip.prototype.close = function (animation) {\n if (!animation) {\n animation = this.animation.close;\n }\n this.hideTooltip(animation);\n };\n /**\n * It is used to refresh the Tooltip content and its position.\n *\n * @param {HTMLElement} target - Target element where the Tooltip content or position needs to be refreshed.\n * @returns {void}\n */\n Tooltip.prototype.refresh = function (target) {\n if (this.tooltipEle) {\n this.renderContent(target);\n }\n if (this.popupObj && target) {\n this.reposition(target);\n }\n if (!isNullOrUndefined(this.targetsList) && !isNullOrUndefined(this.target)) {\n var target_2 = selectAll(this.target, this.element);\n if (target_2.length !== this.targetsList.length) {\n this.unwireEvents(this.opensOn);\n this.wireEvents(this.opensOn);\n }\n }\n };\n /**\n * It is used to destroy the Tooltip component.\n * @method destroy\n * @returns {void}\n * @memberof Tooltip\n */\n Tooltip.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n if (this.tooltipEle) {\n remove(this.tooltipEle);\n }\n if (this.popupObj) {\n this.popupObj.destroy();\n }\n removeClass([this.element], ROOT);\n this.unwireEvents(this.opensOn);\n this.unwireMouseEvents(this.element);\n this.tooltipEle = null;\n this.popupObj = null;\n var currentTarget = selectAll('[data-tooltip-id= \"' + this.ctrlId + '_content\"]', this.element);\n for (var _i = 0, currentTarget_1 = currentTarget; _i < currentTarget_1.length; _i++) {\n var target = currentTarget_1[_i];\n this.restoreElement(target);\n }\n };\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Tooltip.prototype, \"height\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"content\", void 0);\n __decorate([\n Property('body')\n ], Tooltip.prototype, \"container\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"target\", void 0);\n __decorate([\n Property('TopCenter')\n ], Tooltip.prototype, \"position\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetX\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"offsetY\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"showTipPointer\", void 0);\n __decorate([\n Property(true)\n ], Tooltip.prototype, \"enableHtmlParse\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"windowCollision\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"tipPointerPosition\", void 0);\n __decorate([\n Property('Auto')\n ], Tooltip.prototype, \"opensOn\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"mouseTrail\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"isSticky\", void 0);\n __decorate([\n Complex({}, Animation)\n ], Tooltip.prototype, \"animation\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"openDelay\", void 0);\n __decorate([\n Property(0)\n ], Tooltip.prototype, \"closeDelay\", void 0);\n __decorate([\n Property()\n ], Tooltip.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], Tooltip.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property('')\n ], Tooltip.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeRender\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterOpen\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"afterClose\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"beforeCollision\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Tooltip.prototype, \"destroyed\", void 0);\n Tooltip = __decorate([\n NotifyPropertyChanges\n ], Tooltip);\n return Tooltip;\n}(Component));\nexport { Tooltip };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { isNullOrUndefined, append, createElement, addClass, initializeCSPTemplate, removeClass } from '@syncfusion/ej2-base';\nimport { Tooltip } from '@syncfusion/ej2-popups';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\n/**\n * Tooltip for Schedule\n */\nvar EventTooltip = /** @class */ (function () {\n function EventTooltip(parent) {\n this.parent = parent;\n this.tooltipObj = new Tooltip({\n animation: { close: { effect: 'FadeOut' } },\n content: 'No title',\n position: 'BottomRight',\n offsetY: 10,\n mouseTrail: this.parent.isAdaptive ? false : true,\n showTipPointer: false,\n cssClass: this.parent.cssClass + ' ' + cls.EVENT_TOOLTIP_ROOT_CLASS,\n target: this.getTargets(),\n beforeRender: this.onBeforeRender.bind(this),\n beforeClose: this.onTooltipClose.bind(this),\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer\n });\n this.tooltipObj.appendTo(this.parent.element);\n }\n EventTooltip.prototype.getTargets = function () {\n var targets = [];\n if (this.parent.activeViewOptions.group.headerTooltipTemplate) {\n targets.push('.' + cls.RESOURCE_CELLS_CLASS);\n }\n if (this.parent.eventSettings.enableTooltip) {\n targets.push('.' + cls.APPOINTMENT_CLASS);\n }\n return targets.join(',');\n };\n EventTooltip.prototype.onBeforeRender = function (args) {\n if (!isNullOrUndefined(args.target.getAttribute('data-tooltip-id'))) {\n return;\n }\n if (args.target.classList.contains(cls.RESOURCE_CELLS_CLASS) && this.parent.activeViewOptions.group.resources.length > 0) {\n var resCollection = void 0;\n if (this.parent.activeView.isTimelineView()) {\n var index = parseInt(args.target.getAttribute('data-group-index'), 10);\n resCollection = this.parent.resourceBase.lastResourceLevel[parseInt(index.toString(), 10)];\n }\n else {\n var rowIndex = args.target.parentNode.sectionRowIndex;\n var cellIndex = args.target.cellIndex;\n resCollection =\n this.parent.activeView.getColumnLevels()[parseInt(rowIndex.toString(), 10)][parseInt(cellIndex.toString(), 10)];\n }\n var data = {\n resource: resCollection.resource,\n resourceData: resCollection.resourceData\n };\n var contentContainer = createElement('div');\n var templateId = this.parent.element.id + '_headerTooltipTemplate';\n var tooltipTemplate = [].slice.call(this.parent.getHeaderTooltipTemplate()(data, this.parent, 'headerTooltipTemplate', templateId, false));\n append(tooltipTemplate, contentContainer);\n this.setContent(contentContainer);\n this.parent.renderTemplates();\n return;\n }\n var record = this.parent.eventBase.getEventByGuid(args.target.getAttribute('data-guid'));\n if (isNullOrUndefined(record)) {\n return;\n }\n if (!isNullOrUndefined(this.parent.eventSettings.tooltipTemplate)) {\n var contentContainer = createElement('div');\n var templateId = this.parent.element.id + '_tooltipTemplate';\n var tooltipTemplate = [].slice.call(this.parent.getEventTooltipTemplate()(record, this.parent, 'tooltipTemplate', templateId, false));\n append(tooltipTemplate, contentContainer);\n this.setContent(contentContainer);\n }\n else {\n var globalize = this.parent.globalize;\n var fields = this.parent.eventFields;\n var eventStart = new Date('' + record[fields.startTime]);\n var eventEnd = new Date('' + record[fields.endTime]);\n eventEnd = (eventEnd.getHours() === 0 && eventEnd.getMinutes() === 0) ? new Date(eventEnd.setMilliseconds(-1000)) : eventEnd;\n var startDate = util.resetTime(new Date('' + eventStart));\n var endDate = util.resetTime(new Date('' + eventEnd));\n var tooltipSubject = (record[fields.subject] || this.parent.eventSettings.fields.subject.default\n || this.parent.localeObj.getConstant('addTitle'));\n var tooltipLocation = !isNullOrUndefined(record[fields.location]) ? record[fields.location] : '';\n var startMonthDate = '';\n var startMonthYearDate = '';\n var endMonthYearDate = '';\n startMonthDate = globalize.formatDate(eventStart, {\n type: 'date', skeleton: 'MMMd', calendar: this.parent.getCalendarMode()\n });\n startMonthYearDate = globalize.formatDate(eventStart, {\n type: 'date', skeleton: 'medium', calendar: this.parent.getCalendarMode()\n });\n endMonthYearDate = globalize.formatDate(eventEnd, {\n type: 'date', skeleton: 'medium', calendar: this.parent.getCalendarMode()\n });\n startMonthDate = util.capitalizeFirstWord(startMonthDate, 'single');\n startMonthYearDate = util.capitalizeFirstWord(startMonthYearDate, 'single');\n endMonthYearDate = util.capitalizeFirstWord(endMonthYearDate, 'single');\n var startTime = this.parent.getTimeString(eventStart);\n var endTime = this.parent.getTimeString(eventEnd);\n var tooltipDetails = void 0;\n if (startDate.getTime() === endDate.getTime()) {\n tooltipDetails =\n globalize.formatDate(eventStart, {\n type: 'date', skeleton: 'long', calendar: this.parent.getCalendarMode()\n });\n tooltipDetails = util.capitalizeFirstWord(tooltipDetails, 'single');\n }\n else {\n tooltipDetails = (startDate.getFullYear() === endDate.getFullYear()) ? (startMonthDate + ' - ' + endMonthYearDate) :\n (startMonthYearDate + ' - ' + endMonthYearDate);\n }\n var tooltipTime = (record[fields.isAllDay]) ? this.parent.localeObj.getConstant('allDay') :\n (startTime + ' - ' + endTime);\n var content_1 = '
' + tooltipSubject + '
' +\n '
' + tooltipLocation + '
' +\n '
' + tooltipDetails + '
' +\n '
' + tooltipTime + '
';\n var contentTemp = function () {\n return content_1;\n };\n this.setContent(initializeCSPTemplate(contentTemp));\n }\n this.parent.renderTemplates();\n };\n EventTooltip.prototype.onTooltipClose = function (args) {\n if (args.element) {\n removeClass([args.element], cls.POPUP_OPEN);\n addClass([args.element], cls.POPUP_CLOSE);\n }\n this.parent.resetTemplates(['tooltipTemplate', 'headerTooltipTemplate']);\n };\n EventTooltip.prototype.setContent = function (content) {\n this.tooltipObj.setProperties({ content: content }, true);\n };\n EventTooltip.prototype.close = function () {\n this.tooltipObj.close();\n };\n EventTooltip.prototype.destroy = function () {\n this.tooltipObj.destroy();\n addClass([this.parent.element], 'e-control');\n this.tooltipObj = null;\n this.parent = null;\n };\n return EventTooltip;\n}());\nexport { EventTooltip };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, NotifyPropertyChanges, Property, setValue } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, isNullOrUndefined, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { addClass, detach, getUniqueID, isRippleEnabled, removeClass, rippleEffect, closest } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler, setHiddenInput } from './../common/common';\nvar CHECK = 'e-check';\nvar DISABLED = 'e-checkbox-disabled';\nvar FRAME = 'e-frame';\nvar INDETERMINATE = 'e-stop';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RIPPLECHECK = 'e-ripple-check';\nvar RIPPLEINDETERMINATE = 'e-ripple-stop';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-checkbox-wrapper';\nvar containerAttr = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The CheckBox is a graphical user interface element that allows you to select one or more options from the choices.\n * It contains checked, unchecked, and indeterminate states.\n * ```html\n * \n * \n * ```\n */\nvar CheckBox = /** @class */ (function (_super) {\n __extends(CheckBox, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {CheckBoxModel} options - Specifies checkbox model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function CheckBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n _this.isMouseClick = false;\n _this.clickTriggered = false;\n _this.validCheck = true;\n return _this;\n }\n CheckBox.prototype.changeState = function (state, isInitialize) {\n var ariaState;\n var rippleSpan;\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n if (isRippleEnabled) {\n rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n }\n if (state === 'check') {\n if (frameSpan) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLEINDETERMINATE);\n rippleSpan.classList.add(RIPPLECHECK);\n }\n ariaState = 'true';\n this.element.checked = true;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = false;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else if (state === 'uncheck') {\n if (frameSpan) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n }\n if (rippleSpan) {\n removeClass([rippleSpan], [RIPPLECHECK, RIPPLEINDETERMINATE]);\n }\n ariaState = 'false';\n this.element.checked = false;\n if ((this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) && this.validCheck && !isInitialize) {\n this.element.checked = true;\n this.validCheck = false;\n }\n else if (this.element.required || closest(this.element, 'form') && closest(this.element, 'form').classList.contains('e-formvalidator')) {\n this.validCheck = true;\n }\n }\n else {\n if (frameSpan) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n }\n if (rippleSpan) {\n rippleSpan.classList.remove(RIPPLECHECK);\n rippleSpan.classList.add(RIPPLEINDETERMINATE);\n }\n ariaState = 'mixed';\n this.element.indeterminate = true;\n this.indeterminate = true;\n }\n };\n CheckBox.prototype.clickHandler = function (event) {\n if (event.target.tagName === 'INPUT' && this.clickTriggered) {\n if (this.isVue) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n this.clickTriggered = false;\n return;\n }\n if (event.target.tagName === 'SPAN' || event.target.tagName === 'LABEL') {\n this.clickTriggered = true;\n }\n if (this.isMouseClick) {\n this.focusOutHandler();\n this.isMouseClick = false;\n }\n if (this.indeterminate) {\n this.changeState(this.checked ? 'check' : 'uncheck');\n this.indeterminate = false;\n this.element.indeterminate = false;\n }\n else if (this.checked) {\n this.changeState('uncheck');\n this.checked = false;\n }\n else {\n this.changeState('check');\n this.checked = true;\n }\n var changeEventArgs = { checked: this.updateVueArrayModel(false), event: event };\n this.trigger('change', changeEventArgs);\n event.stopPropagation();\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n CheckBox.prototype.destroy = function () {\n var _this = this;\n var wrapper = this.getWrapper();\n _super.prototype.destroy.call(this);\n if (this.wrapper) {\n wrapper = this.wrapper;\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (this.getWrapper() && wrapper.parentNode) {\n wrapper.parentNode.insertBefore(this.element, wrapper);\n }\n detach(wrapper);\n this.element.checked = false;\n if (this.indeterminate) {\n this.element.indeterminate = false;\n }\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['class'].forEach(function (key) {\n wrapper.removeAttribute(key);\n });\n wrapper.innerHTML = '';\n this.element = wrapper;\n if (this.refreshing) {\n ['e-control', 'e-checkbox', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n CheckBox.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n CheckBox.prototype.focusOutHandler = function () {\n var wrapper = this.getWrapper();\n if (wrapper) {\n wrapper.classList.remove('e-focus');\n }\n this.isFocused = false;\n };\n /**\n * Gets the module name.\n *\n * @private\n * @returns {string} - Module Name\n */\n CheckBox.prototype.getModuleName = function () {\n return 'checkbox';\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n CheckBox.prototype.getPersistData = function () {\n return this.addOnPersist(['checked', 'indeterminate']);\n };\n CheckBox.prototype.getWrapper = function () {\n if (this.element && this.element.parentElement) {\n return this.element.parentElement.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.getLabel = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n CheckBox.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n if (this.value) {\n this.element.setAttribute('value', this.value);\n if (this.isVue && typeof this.value === 'boolean' && this.value === true) {\n this.setProperties({ 'checked': true }, true);\n }\n }\n if (this.checked) {\n this.changeState('check', true);\n }\n if (this.indeterminate) {\n this.changeState();\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n CheckBox.prototype.initWrapper = function () {\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', {\n className: WRAPPER\n });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n var frameSpan = this.createElement('span', { className: 'e-icons ' + FRAME });\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n wrapper.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n wrapper.appendChild(label);\n label.appendChild(this.element);\n setHiddenInput(this, label);\n label.appendChild(frameSpan);\n if (isRippleEnabled) {\n var rippleSpan = this.createElement('span', { className: RIPPLE });\n if (this.labelPosition === 'Before') {\n label.appendChild(rippleSpan);\n }\n else {\n label.insertBefore(rippleSpan, frameSpan);\n }\n rippleEffect(rippleSpan, { duration: 400, isCenterRipple: true });\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n CheckBox.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getWrapper().classList.add('e-focus');\n }\n };\n CheckBox.prototype.labelMouseDownHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n CheckBox.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n CheckBox.prototype.labelMouseUpHandler = function (e) {\n this.isMouseClick = true;\n var rippleSpan = this.getWrapper().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = 0; i < rippleElem.length - 1; i++) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {CheckBoxModel} newProp - Specifies new Properties\n * @param {CheckBoxModel} oldProp - Specifies old Properties\n *\n * @returns {void}\n */\n CheckBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrapper = this.getWrapper();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n this.indeterminate = false;\n this.element.indeterminate = false;\n this.changeState(newProp.checked ? 'check' : 'uncheck');\n break;\n case 'indeterminate':\n if (newProp.indeterminate) {\n this.changeState();\n }\n else {\n this.element.indeterminate = false;\n this.changeState(this.checked ? 'check' : 'uncheck');\n }\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.wrapper = this.getWrapper();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n wrapper.classList.remove(DISABLED);\n wrapper.setAttribute('aria-disabled', 'false');\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrapper], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrapper], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n wrapper.classList.add(RTL);\n }\n else {\n wrapper.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition': {\n var label = wrapper.getElementsByClassName(LABEL)[0];\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n detach(label);\n if (newProp.labelPosition === 'After') {\n labelWrap.appendChild(label);\n }\n else {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n break;\n }\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n if (this.isVue && typeof newProp.value === 'object') {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToWrapper();\n break;\n }\n }\n };\n /**\n * Initialize Angular, React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.preRender = function () {\n var element = this.element;\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-CHECKBOX', 'checkbox', element, WRAPPER, 'checkbox');\n this.element = element;\n if (this.element.getAttribute('type') !== 'checkbox') {\n this.element.setAttribute('type', 'checkbox');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n };\n /**\n * Initialize the control rendering.\n *\n * @private\n * @returns {void}\n */\n CheckBox.prototype.render = function () {\n this.initWrapper();\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.updateHtmlAttributeToWrapper();\n this.updateVueArrayModel(true);\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n CheckBox.prototype.setDisabled = function () {\n var wrapper = this.getWrapper();\n this.element.disabled = true;\n wrapper.classList.add(DISABLED);\n wrapper.setAttribute('aria-disabled', 'true');\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n CheckBox.prototype.setText = function (text) {\n var wrapper = this.getWrapper();\n if (!wrapper) {\n return;\n }\n var label = wrapper.getElementsByClassName(LABEL)[0];\n if (label) {\n label.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n label = this.createElement('span', { className: LABEL, innerHTML: text });\n var labelWrap = wrapper.getElementsByTagName('label')[0];\n if (this.labelPosition === 'Before') {\n labelWrap.insertBefore(label, wrapper.getElementsByClassName(FRAME)[0]);\n }\n else {\n labelWrap.appendChild(label);\n }\n }\n };\n CheckBox.prototype.changeHandler = function (e) {\n e.stopPropagation();\n };\n CheckBox.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n this.element.checked = this.initialCheckedValue;\n };\n CheckBox.prototype.unWireEvents = function () {\n var wrapper = this.wrapper;\n EventHandler.remove(wrapper, 'click', this.clickHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.remove(label, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(label, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(label, 'mouseleave', this.labelMouseLeaveHandler);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.remove(formElem, 'reset', this.formResetHandler);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.remove(this.element, 'change', this.changeHandler);\n }\n };\n CheckBox.prototype.wireEvents = function () {\n var wrapper = this.getWrapper();\n EventHandler.add(wrapper, 'click', this.clickHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var label = wrapper.getElementsByTagName('label')[0];\n EventHandler.add(label, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(label, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(label, 'mouseleave', this.labelMouseLeaveHandler, this);\n var formElem = closest(this.element, 'form');\n if (formElem) {\n EventHandler.add(formElem, 'reset', this.formResetHandler, this);\n }\n if (this.tagName === 'EJS-CHECKBOX') {\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n }\n };\n CheckBox.prototype.updateVueArrayModel = function (init) {\n if (this.isVue && typeof this.value === 'object') {\n var value = this.element.value;\n if (value && this.value) {\n if (init) {\n for (var i = 0; i < this.value.length; i++) {\n if (value === this.value[i]) {\n this.changeState('check');\n this.setProperties({ 'checked': true }, true);\n }\n }\n }\n else {\n var index = this.value.indexOf(value);\n if (this.checked) {\n if (index < 0) {\n this.value.push(value);\n }\n }\n else {\n if (index > -1) {\n this.value.splice(index, 1);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n return this.value;\n }\n }\n }\n return this.validCheck ? this.element.checked : !this.element.checked;\n };\n CheckBox.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.getWrapper();\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].split(' '));\n }\n else if (key === 'title') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'style') {\n var frameSpan = this.getWrapper().getElementsByClassName(FRAME)[0];\n frameSpan.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else if (key === 'disabled') {\n if (this.htmlAttributes[\"\" + key] === 'true') {\n this.setDisabled();\n }\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n /**\n * Click the CheckBox element\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to CheckBox\n * its native method\n *\n * @public\n * @returns {void}\n */\n CheckBox.prototype.focusIn = function () {\n this.element.focus();\n };\n __decorate([\n Event()\n ], CheckBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], CheckBox.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"disabled\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"indeterminate\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], CheckBox.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], CheckBox.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], CheckBox.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], CheckBox.prototype, \"htmlAttributes\", void 0);\n CheckBox = __decorate([\n NotifyPropertyChanges\n ], CheckBox);\n return CheckBox;\n}(Component));\nexport { CheckBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, addClass, append, Property, Event, L10n, compile } from '@syncfusion/ej2-base';\nimport { setStyleAttribute, extend, removeClass, prepend, isNullOrUndefined, detach, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, rippleEffect, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { DataManager, Query, DataUtil } from '@syncfusion/ej2-data';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { select, selectAll } from '@syncfusion/ej2-base';\nvar FieldSettings = /** @class */ (function (_super) {\n __extends(FieldSettings, _super);\n function FieldSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldSettings.prototype, \"text\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"value\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"groupBy\", void 0);\n __decorate([\n Property()\n ], FieldSettings.prototype, \"htmlAttributes\", void 0);\n return FieldSettings;\n}(ChildProperty));\nexport { FieldSettings };\nexport var dropDownBaseClasses = {\n root: 'e-dropdownbase',\n rtl: 'e-rtl',\n content: 'e-content',\n selected: 'e-active',\n hover: 'e-hover',\n noData: 'e-nodata',\n fixedHead: 'e-fixed-head',\n focus: 'e-item-focus',\n li: 'e-list-item',\n group: 'e-list-group-item',\n disabled: 'e-disabled',\n grouping: 'e-dd-group'\n};\nvar ITEMTEMPLATE_PROPERTY = 'ItemTemplate';\nvar DISPLAYTEMPLATE_PROPERTY = 'DisplayTemplate';\nvar SPINNERTEMPLATE_PROPERTY = 'SpinnerTemplate';\nvar VALUETEMPLATE_PROPERTY = 'ValueTemplate';\nvar GROUPTEMPLATE_PROPERTY = 'GroupTemplate';\nvar HEADERTEMPLATE_PROPERTY = 'HeaderTemplate';\nvar FOOTERTEMPLATE_PROPERTY = 'FooterTemplate';\nvar NORECORDSTEMPLATE_PROPERTY = 'NoRecordsTemplate';\nvar ACTIONFAILURETEMPLATE_PROPERTY = 'ActionFailureTemplate';\nvar HIDE_GROUPLIST = 'e-hide-group-header';\n/**\n * DropDownBase component will generate the list items based on given data and act as base class to drop-down related components\n */\nvar DropDownBase = /** @class */ (function (_super) {\n __extends(DropDownBase, _super);\n /**\n * * Constructor for DropDownBase class\n *\n * @param {DropDownBaseModel} options - Specifies the DropDownBase model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownBase(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isPreventChange = false;\n _this.isDynamicDataChange = false;\n _this.addedNewItem = false;\n _this.isAddNewItemTemplate = false;\n _this.isRequesting = false;\n _this.isVirtualizationEnabled = false;\n _this.isAllowFiltering = false;\n _this.virtualizedItemsCount = 0;\n _this.totalItemCount = 0;\n _this.dataCount = 0;\n _this.isRemoteDataUpdated = false;\n _this.isIncrementalRequest = false;\n _this.itemCount = 10;\n return _this;\n }\n DropDownBase.prototype.getPropObject = function (prop, newProp, oldProp) {\n var newProperty = new Object();\n var oldProperty = new Object();\n var propName = function (prop) {\n return prop;\n };\n newProperty[propName(prop)] = newProp[propName(prop)];\n oldProperty[propName(prop)] = oldProp[propName(prop)];\n var data = new Object();\n data.newProperty = newProperty;\n data.oldProperty = oldProperty;\n return data;\n };\n DropDownBase.prototype.getValueByText = function (text, ignoreCase, ignoreAccent) {\n var value = null;\n if (!isNullOrUndefined(this.listData)) {\n if (ignoreCase) {\n value = this.checkValueCase(text, true, ignoreAccent);\n }\n else {\n value = this.checkValueCase(text, false, ignoreAccent);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkValueCase = function (text, ignoreCase, ignoreAccent, isTextByValue) {\n var _this = this;\n var value = null;\n if (isTextByValue) {\n value = text;\n }\n var dataSource = this.listData;\n var fields = this.fields;\n var type = this.typeOfData(dataSource).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, dataSource_1 = dataSource; _i < dataSource_1.length; _i++) {\n var item = dataSource_1[_i];\n if (!isNullOrUndefined(item)) {\n if (ignoreAccent) {\n value = this.checkingAccent(String(item), text, ignoreCase);\n }\n else {\n if (ignoreCase) {\n if (this.checkIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase, isTextByValue);\n }\n }\n }\n }\n }\n }\n else {\n if (ignoreCase) {\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && _this.checkIgnoreCase(getValue(fields.text, item).toString(), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n else {\n if (isTextByValue) {\n var compareValue_1 = null;\n compareValue_1 = value;\n dataSource.filter(function (item) {\n var itemValue = getValue(fields.value, item);\n if (!isNullOrUndefined(itemValue) && !isNullOrUndefined(value) && itemValue.toString() === compareValue_1.toString()) {\n value = getValue(fields.text, item);\n }\n });\n }\n else {\n dataSource.filter(function (item) {\n if (_this.checkNonIgnoreCase(getValue(fields.text, item), text)) {\n value = getValue(fields.value, item);\n }\n });\n }\n }\n }\n return value;\n };\n DropDownBase.prototype.checkingAccent = function (item, text, ignoreCase) {\n var dataItem = DataUtil.ignoreDiacritics(String(item));\n var textItem = DataUtil.ignoreDiacritics(text.toString());\n var value = null;\n if (ignoreCase) {\n if (this.checkIgnoreCase(dataItem, textItem)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n else {\n if (this.checkNonIgnoreCase(String(item), text)) {\n value = this.getItemValue(String(item), text, ignoreCase);\n }\n }\n return value;\n };\n DropDownBase.prototype.checkIgnoreCase = function (item, text) {\n return String(item).toLowerCase() === text.toString().toLowerCase() ? true : false;\n };\n DropDownBase.prototype.checkNonIgnoreCase = function (item, text) {\n return String(item) === text.toString() ? true : false;\n };\n DropDownBase.prototype.getItemValue = function (dataItem, typedText, ignoreCase, isTextByValue) {\n var value = null;\n var dataSource = this.listData;\n var type = this.typeOfData(dataSource).typeof;\n if (isTextByValue) {\n value = dataItem.toString();\n }\n else {\n if (ignoreCase) {\n value = type === 'string' ? String(dataItem) : this.getFormattedValue(String(dataItem));\n }\n else {\n value = type === 'string' ? typedText : this.getFormattedValue(typedText);\n }\n }\n return value;\n };\n DropDownBase.prototype.templateCompiler = function (baseTemplate) {\n var checkTemplate = false;\n if (typeof baseTemplate !== 'function' && baseTemplate) {\n try {\n checkTemplate = (selectAll(baseTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownBase.prototype.l10nUpdate = function (actionFailure) {\n var ele = this.getModuleName() === 'listbox' ? this.ulElement : this.list;\n if (this.noRecordsTemplate !== 'No records found' || this.actionFailureTemplate !== 'Request failed') {\n var template = actionFailure ? this.actionFailureTemplate : this.noRecordsTemplate;\n var compiledString = void 0;\n var templateId = actionFailure ? this.actionFailureTemplateId : this.noRecordsTemplateId;\n ele.innerHTML = '';\n var tempaltecheck = this.templateCompiler(template);\n if (typeof template !== 'function' && tempaltecheck) {\n compiledString = compile(select(template, document).innerHTML.trim());\n }\n else {\n compiledString = compile(template);\n }\n var templateName = actionFailure ? 'actionFailureTemplate' : 'noRecordsTemplate';\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var noDataElement = void 0;\n if ((this.isReact) && typeof template === 'function') {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null);\n }\n else {\n noDataElement = compiledString({}, this, templateName, templateId, this.isStringTemplate, null, ele);\n }\n if (noDataElement && noDataElement.length > 0) {\n for (var i = 0; i < noDataElement.length; i++) {\n if (this.getModuleName() === 'listbox' && templateName === 'noRecordsTemplate') {\n if (noDataElement[i].nodeName === '#text') {\n var liElem = this.createElement('li');\n liElem.textContent = noDataElement[i].textContent;\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n ele.appendChild(liElem);\n }\n else {\n noDataElement[i].classList.add('e-list-nr-template');\n ele.appendChild(noDataElement[i]);\n }\n }\n else {\n if (noDataElement[i] instanceof HTMLElement) {\n ele.appendChild(noDataElement[i]);\n }\n }\n }\n }\n this.renderReactTemplates();\n }\n else {\n var l10nLocale = { noRecordsTemplate: 'No records found', actionFailureTemplate: 'Request failed' };\n var componentLocale = new L10n(this.getLocaleName(), {}, this.locale);\n if (componentLocale.getConstant('actionFailureTemplate') !== '' || componentLocale.getConstant('noRecordsTemplate') !== '') {\n this.l10n = componentLocale;\n }\n else {\n this.l10n = new L10n(this.getModuleName() === 'listbox' ? 'listbox' :\n this.getModuleName() === 'mention' ? 'mention' : 'dropdowns', l10nLocale, this.locale);\n }\n var content = actionFailure ?\n this.l10n.getConstant('actionFailureTemplate') : this.l10n.getConstant('noRecordsTemplate');\n if (this.getModuleName() === 'listbox') {\n var liElem = this.createElement('li');\n liElem.textContent = content;\n ele.appendChild(liElem);\n liElem.classList.add('e-list-nrt');\n liElem.setAttribute('role', 'option');\n }\n else {\n if (!isNullOrUndefined(ele)) {\n ele.innerHTML = content;\n }\n }\n }\n };\n DropDownBase.prototype.getLocaleName = function () {\n return 'drop-down-base';\n };\n DropDownBase.prototype.getTextByValue = function (value) {\n var text = this.checkValueCase(value, false, false, true);\n return text;\n };\n DropDownBase.prototype.getFormattedValue = function (value) {\n if (this.listData && this.listData.length) {\n var item = void 0;\n if (this.properties.allowCustomValue && this.properties.value && this.properties.value instanceof Array && this.properties.value.length > 0) {\n item = this.typeOfData(this.properties.value);\n }\n else {\n item = this.typeOfData(this.listData);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'number'\n || item.typeof === 'number') {\n return parseFloat(value);\n }\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), item.item) === 'boolean'\n || item.typeof === 'boolean') {\n return ((value === 'true') || ('' + value === 'true'));\n }\n }\n return value;\n };\n /**\n * Sets RTL to dropdownbase wrapper\n *\n * @returns {void}\n */\n DropDownBase.prototype.setEnableRtl = function () {\n if (!isNullOrUndefined(this.enableRtlElements)) {\n if (this.list) {\n this.enableRtlElements.push(this.list);\n }\n if (this.enableRtl) {\n addClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n else {\n removeClass(this.enableRtlElements, dropDownBaseClasses.rtl);\n }\n }\n };\n /**\n * Initialize the Component.\n *\n * @returns {void}\n */\n DropDownBase.prototype.initialize = function (e) {\n this.bindEvent = true;\n this.actionFailureTemplateId = \"\" + this.element.id + ACTIONFAILURETEMPLATE_PROPERTY;\n if (this.element.tagName === 'UL') {\n var jsonElement = ListBase.createJsonFromElement(this.element);\n this.setProperties({ fields: { text: 'text', value: 'text' } }, true);\n this.resetList(jsonElement, this.fields);\n }\n else if (this.element.tagName === 'SELECT') {\n var dataSource = this.dataSource instanceof Array ? (this.dataSource.length > 0 ? true : false)\n : !isNullOrUndefined(this.dataSource) ? true : false;\n if (!dataSource) {\n this.renderItemsBySelect();\n }\n else if (this.isDynamicDataChange) {\n this.setListData(this.dataSource, this.fields, this.query);\n }\n }\n else {\n this.setListData(this.dataSource, this.fields, this.query, e);\n }\n };\n /**\n * Get the properties to be maintained in persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownBase.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @param {string} value - Specifies the attribute values to add on the input element.\n * @returns {void}\n */\n DropDownBase.prototype.updateDataAttribute = function (value) {\n var invalidAttr = ['class', 'style', 'id', 'type', 'aria-expanded', 'aria-autocomplete', 'aria-readonly'];\n var attr = {};\n for (var a = 0; a < this.element.attributes.length; a++) {\n if (invalidAttr.indexOf(this.element.attributes[a].name) === -1 &&\n !(this.getModuleName() === 'dropdownlist' && this.element.attributes[a].name === 'readonly')) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n extend(attr, value, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n };\n DropDownBase.prototype.renderItemsBySelect = function () {\n var element = this.element;\n var fields = { value: 'value', text: 'text' };\n var jsonElement = [];\n var group = element.querySelectorAll('select>optgroup');\n var option = element.querySelectorAll('select>option');\n this.getJSONfromOption(jsonElement, option, fields);\n if (group.length) {\n for (var i = 0; i < group.length; i++) {\n var item = group[i];\n var optionGroup = {};\n optionGroup[fields.text] = item.label;\n optionGroup.isHeader = true;\n var child = item.querySelectorAll('option');\n jsonElement.push(optionGroup);\n this.getJSONfromOption(jsonElement, child, fields);\n }\n element.querySelectorAll('select>option');\n }\n this.updateFields(fields.text, fields.value, this.fields.groupBy, this.fields.htmlAttributes, this.fields.iconCss);\n this.resetList(jsonElement, fields);\n };\n DropDownBase.prototype.updateFields = function (text, value, groupBy, htmlAttributes, iconCss) {\n var field = {\n 'fields': {\n text: text,\n value: value,\n groupBy: !isNullOrUndefined(groupBy) ? groupBy : this.fields && this.fields.groupBy,\n htmlAttributes: !isNullOrUndefined(htmlAttributes) ? htmlAttributes : this.fields && this.fields.htmlAttributes,\n iconCss: !isNullOrUndefined(iconCss) ? iconCss : this.fields && this.fields.iconCss\n }\n };\n this.setProperties(field, true);\n };\n DropDownBase.prototype.getJSONfromOption = function (items, options, fields) {\n for (var _i = 0, options_1 = options; _i < options_1.length; _i++) {\n var option = options_1[_i];\n var json = {};\n json[fields.text] = option.innerText;\n json[fields.value] = !isNullOrUndefined(option.getAttribute(fields.value)) ?\n option.getAttribute(fields.value) : option.innerText;\n items.push(json);\n }\n };\n /**\n * Execute before render the list items\n *\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.preRender = function () {\n // there is no event handler\n this.scrollTimer = -1;\n this.enableRtlElements = [];\n this.isRequested = false;\n this.isDataFetched = false;\n this.itemTemplateId = \"\" + this.element.id + ITEMTEMPLATE_PROPERTY;\n this.displayTemplateId = \"\" + this.element.id + DISPLAYTEMPLATE_PROPERTY;\n this.spinnerTemplateId = \"\" + this.element.id + SPINNERTEMPLATE_PROPERTY;\n this.valueTemplateId = \"\" + this.element.id + VALUETEMPLATE_PROPERTY;\n this.groupTemplateId = \"\" + this.element.id + GROUPTEMPLATE_PROPERTY;\n this.headerTemplateId = \"\" + this.element.id + HEADERTEMPLATE_PROPERTY;\n this.footerTemplateId = \"\" + this.element.id + FOOTERTEMPLATE_PROPERTY;\n this.noRecordsTemplateId = \"\" + this.element.id + NORECORDSTEMPLATE_PROPERTY;\n };\n /**\n * Creates the list items of DropDownBase component.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.setListData = function (dataSource, fields, query, event) {\n var _this = this;\n fields = fields ? fields : this.fields;\n var ulElement;\n this.isActive = true;\n var eventArgs = { cancel: false, data: dataSource, query: query };\n this.isPreventChange = this.isAngular && this.preventChange ? true : this.isPreventChange;\n if (!this.isRequesting) {\n this.trigger('actionBegin', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.isRequesting = true;\n _this.showSpinner();\n if (dataSource instanceof DataManager && !_this.virtualGroupDataSource) {\n _this.isRequested = true;\n if (_this.isDataFetched) {\n _this.emptyDataRequest(fields);\n return;\n }\n eventArgs.data.executeQuery(_this.getQuery(eventArgs.query)).then(function (e) {\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', e, function (e) {\n if (!_this.virtualGroupDataSource && _this.isVirtualizationEnabled) {\n _this.isRemoteDataUpdated = true;\n if ((_this.getModuleName() === 'combobox' && _this.isAllowFiltering && _this.isVirtualizationEnabled && e.result)) {\n e.result = e.result.result;\n }\n if (e.result.length > 0) {\n var dataSource_2 = e.result;\n if (_this.isVirtualizationEnabled && _this.fields.groupBy) {\n var data = new DataManager(dataSource_2).executeLocal(new Query().group(_this.fields.groupBy));\n _this.virtualGroupDataSource = data.records;\n }\n else {\n _this.virtualGroupDataSource = dataSource_2;\n _this.hideSpinner();\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.setListData(dataSource_2, fields, query, event);\n return;\n }\n }\n _this.hideSpinner();\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.updatePopupState();\n return;\n }\n if (!e.cancel) {\n _this.isRequesting = false;\n var listItems = e.result;\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(listItems, fields);\n return;\n }\n if (listItems.length === 0) {\n _this.isDataFetched = true;\n }\n _this.dataCount = e.count;\n _this.totalItemCount = e.count;\n ulElement = _this.renderItems(listItems, fields);\n _this.onActionComplete(ulElement, listItems, e);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.isRequested = false;\n _this.bindChildItems(listItems, ulElement, fields, e);\n }\n });\n }).catch(function (e) {\n _this.isRequested = false;\n _this.isRequesting = false;\n _this.onActionFailure(e);\n _this.hideSpinner();\n });\n }\n else {\n _this.isRequesting = false;\n var listItems = void 0;\n if (_this.isVirtualizationEnabled && !_this.virtualGroupDataSource && _this.fields.groupBy) {\n var data = new DataManager(_this.dataSource).executeLocal(new Query().group(_this.fields.groupBy));\n _this.virtualGroupDataSource = data.records;\n }\n var dataManager = _this.isVirtualizationEnabled && _this.virtualGroupDataSource ? new DataManager(_this.virtualGroupDataSource) : new DataManager(eventArgs.data);\n listItems = (_this.getQuery(eventArgs.query)).executeLocal(dataManager);\n if (_this.isVirtualizationEnabled && _this.getModuleName() === 'autocomplete' && (listItems.count != 0 && listItems.count < (_this.itemCount * 2))) {\n var newQuery = _this.getQuery(eventArgs.query);\n if (newQuery) {\n for (var queryElements = 0; queryElements < newQuery.queries.length; queryElements++) {\n if (newQuery.queries[queryElements].fn === 'onTake') {\n newQuery.queries[queryElements].e.nos = listItems.count;\n listItems = (newQuery).executeLocal(dataManager);\n break;\n }\n }\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.dataCount = listItems.count;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.totalItemCount = listItems.count;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n listItems = _this.isVirtualizationEnabled ? listItems.result : listItems;\n var localDataArgs = { cancel: false, result: listItems };\n _this.isPreventChange = _this.isAngular && _this.preventChange ? true : _this.isPreventChange;\n _this.trigger('actionComplete', localDataArgs, function (localDataArgs) {\n if (_this.isIncrementalRequest) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n return;\n }\n if (!localDataArgs.cancel) {\n ulElement = _this.renderItems(localDataArgs.result, fields);\n _this.onActionComplete(ulElement, localDataArgs.result, event);\n if (_this.groupTemplate) {\n _this.renderGroupTemplate(ulElement);\n }\n _this.bindChildItems(localDataArgs.result, ulElement, fields);\n setTimeout(function () {\n if (_this.getModuleName() === 'multiselect' && _this.itemTemplate != null && (ulElement.childElementCount > 0 && (ulElement.children[0].childElementCount > 0 || (_this.fields.groupBy && ulElement.children[1] && ulElement.children[1].childElementCount > 0)))) {\n _this.updateDataList();\n }\n });\n }\n });\n }\n }\n });\n }\n };\n DropDownBase.prototype.updatePopupState = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.updateRemoteData = function () {\n this.setListData(this.dataSource, this.fields, this.query);\n };\n DropDownBase.prototype.bindChildItems = function (listItems, ulElement, fields, e) {\n var _this = this;\n if (listItems.length >= 100 && this.getModuleName() === 'autocomplete') {\n setTimeout(function () {\n var childNode = _this.remainingItems(_this.sortedData, fields);\n append(childNode, ulElement);\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.updateListValues();\n _this.raiseDataBound(listItems, e);\n }, 0);\n }\n else {\n this.raiseDataBound(listItems, e);\n }\n };\n DropDownBase.prototype.updateListValues = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.findListElement = function (list, findNode, attribute, value) {\n var liElement = null;\n if (list) {\n var listArr = [].slice.call(list.querySelectorAll(findNode));\n for (var index = 0; index < listArr.length; index++) {\n if (listArr[index].getAttribute(attribute) === (value + '')) {\n liElement = listArr[index];\n break;\n }\n }\n }\n return liElement;\n };\n DropDownBase.prototype.raiseDataBound = function (listItems, e) {\n this.hideSpinner();\n var dataBoundEventArgs = {\n items: listItems,\n e: e\n };\n this.trigger('dataBound', dataBoundEventArgs);\n };\n DropDownBase.prototype.remainingItems = function (dataSource, fields) {\n var spliceData = new DataManager(dataSource).executeLocal(new Query().skip(100));\n if (this.itemTemplate) {\n var listElements = this.templateListItem(spliceData, fields);\n return [].slice.call(listElements.childNodes);\n }\n var type = this.typeOfData(spliceData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n return ListBase.createListItemFromArray(this.createElement, spliceData, true, this.listOption(spliceData, fields), this);\n }\n return ListBase.createListItemFromJson(this.createElement, spliceData, this.listOption(spliceData, fields), 1, true, this);\n };\n DropDownBase.prototype.emptyDataRequest = function (fields) {\n var listItems = [];\n this.onActionComplete(this.renderItems(listItems, fields), listItems);\n this.isRequested = false;\n this.hideSpinner();\n };\n DropDownBase.prototype.showSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.hideSpinner = function () {\n // Used this method in component side.\n };\n DropDownBase.prototype.onActionFailure = function (e) {\n this.liCollections = [];\n this.trigger('actionFailure', e);\n this.l10nUpdate(true);\n if (!isNullOrUndefined(this.list)) {\n addClass([this.list], dropDownBaseClasses.noData);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.onActionComplete = function (ulElement, list, e) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n this.listData = list;\n if (this.isVirtualizationEnabled) {\n this.notify(\"setGeneratedData\", {\n module: \"VirtualScroll\",\n });\n }\n if (this.getModuleName() !== 'listbox') {\n ulElement.setAttribute('tabindex', '0');\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['itemTemplate', 'groupTemplate', 'actionFailureTemplate', 'noRecordsTemplate']);\n }\n if (!this.isVirtualizationEnabled) {\n this.fixedHeaderElement = isNullOrUndefined(this.fixedHeaderElement) ? this.fixedHeaderElement : null;\n }\n if (this.getModuleName() === 'multiselect' && this.properties.allowCustomValue && this.fields.groupBy) {\n for (var i = 0; i < ulElement.childElementCount; i++) {\n if (ulElement.children[i].classList.contains('e-list-group-item')) {\n if (isNullOrUndefined(ulElement.children[i].innerHTML) || ulElement.children[i].innerHTML == \"\") {\n addClass([ulElement.children[i]], HIDE_GROUPLIST);\n }\n }\n }\n }\n if (!isNullOrUndefined(this.list)) {\n if (!this.isVirtualizationEnabled) {\n this.list.innerHTML = '';\n this.list.appendChild(ulElement);\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.postRender(this.list, list, this.bindEvent);\n }\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n DropDownBase.prototype.postRender = function (listElement, list, bindEvent) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n var focusItem = listElement.querySelector('.' + dropDownBaseClasses.li);\n var selectedItem = listElement.querySelector('.' + dropDownBaseClasses.selected);\n if (focusItem && !selectedItem) {\n focusItem.classList.add(dropDownBaseClasses.focus);\n }\n if (list.length <= 0) {\n this.l10nUpdate();\n addClass([listElement], dropDownBaseClasses.noData);\n }\n else {\n listElement.classList.remove(dropDownBaseClasses.noData);\n }\n };\n /**\n * Get the query to do the data operation before list item generation.\n *\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {Query} Returns the query to do the data query operation.\n */\n DropDownBase.prototype.getQuery = function (query) {\n return query ? query : this.query ? this.query : new Query();\n };\n DropDownBase.prototype.updateVirtualizationProperties = function (itemCount, filtering) {\n this.isVirtualizationEnabled = true;\n this.virtualizedItemsCount = itemCount;\n this.isAllowFiltering = filtering;\n };\n /**\n * To render the template content for group header element.\n *\n * @param {HTMLElement} listEle - Specifies the group list elements.\n * @returns {void}\n */\n DropDownBase.prototype.renderGroupTemplate = function (listEle) {\n if (this.fields.groupBy !== null && this.dataSource || this.element.querySelector('.' + dropDownBaseClasses.group)) {\n var dataSource = this.dataSource;\n var option = { groupTemplateID: this.groupTemplateId, isStringTemplate: this.isStringTemplate };\n var headerItems = listEle.querySelectorAll('.' + dropDownBaseClasses.group);\n var groupcheck = this.templateCompiler(this.groupTemplate);\n if (typeof this.groupTemplate !== 'function' && groupcheck) {\n var groupValue = select(this.groupTemplate, document).innerHTML.trim();\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(groupValue, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var tempHeaders = ListBase.renderGroupTemplate(this.groupTemplate, dataSource, this.fields.properties, headerItems, option, this);\n //EJ2-55168- Group checkbox is not working with group template\n if (this.isGroupChecking) {\n for (var i = 0; i < tempHeaders.length; i++) {\n this.notify('addItem', { module: 'CheckBoxSelection', item: tempHeaders[i] });\n }\n }\n }\n this.renderReactTemplates();\n }\n };\n /**\n * To create the ul li list items\n *\n * @param {object []} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the ul li list items.\n */\n DropDownBase.prototype.createListItems = function (dataSource, fields) {\n if (dataSource && fields.groupBy || this.element.querySelector('optgroup')) {\n if (fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n addClass([this.list], dropDownBaseClasses.grouping);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n var options = this.listOption(dataSource, fields);\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n this.sortedData = dataSource;\n return ListBase.createList(this.createElement, (this.getModuleName() === 'autocomplete') ? spliceData : dataSource, options, true, this);\n };\n DropDownBase.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldValues = !isNullOrUndefined(fields.properties) ?\n fields.properties : fields;\n var options = (fields.text !== null || fields.value !== null) ? {\n fields: fieldValues,\n showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n return extend({}, options, fields, true);\n };\n DropDownBase.prototype.setFloatingHeader = function (e) {\n if (!isNullOrUndefined(this.list) && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (isNullOrUndefined(this.fixedHeaderElement)) {\n this.fixedHeaderElement = this.createElement('div', { className: dropDownBaseClasses.fixedHead });\n if (!isNullOrUndefined(this.list) && !this.list.querySelector('li').classList.contains(dropDownBaseClasses.group)) {\n this.fixedHeaderElement.style.display = 'none';\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && !isNullOrUndefined(this.list)) {\n prepend([this.fixedHeaderElement], this.list);\n }\n this.setFixedHeader();\n }\n if (!isNullOrUndefined(this.fixedHeaderElement) && this.fixedHeaderElement.style.zIndex === '0') {\n this.setFixedHeader();\n }\n this.scrollStop(e);\n }\n };\n DropDownBase.prototype.scrollStop = function (e, isDownkey) {\n var target = !isNullOrUndefined(e) ? e.target : this.list;\n var liHeight = parseInt(getComputedStyle(this.getValidLi(), null).getPropertyValue('height'), 10);\n var topIndex = Math.round(target.scrollTop / liHeight);\n var liCollections = this.list.querySelectorAll('li' + ':not(.e-hide-listitem)');\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var count = 0;\n var isCount = false;\n for (var i = topIndex; i > -1; i--) {\n var index = this.isVirtualizationEnabled ? i + virtualListCount : i;\n if (this.isVirtualizationEnabled) {\n var groupListLength = this.list.querySelectorAll('.e-list-group-item').length;\n var loadedGroupList = 0;\n if (isCount) {\n count++;\n }\n if (this.updateGroupHeader(index, liCollections, target)) {\n loadedGroupList++;\n if (count >= this.getPageCount()) {\n break;\n }\n if (groupListLength <= loadedGroupList) {\n break;\n }\n }\n if (isDownkey) {\n if ((!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.selected) && this.getModuleName() !== 'autocomplete') || (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.focus) && this.getModuleName() === 'autocomplete')) {\n count++;\n isCount = true;\n }\n }\n }\n else {\n if (this.updateGroupHeader(index, liCollections, target)) {\n break;\n }\n }\n }\n };\n DropDownBase.prototype.getPageCount = function (returnExactCount) {\n var liHeight = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n var pageCount = Math.round(this.list.getBoundingClientRect().height / parseInt(liHeight, 10));\n return returnExactCount ? pageCount : Math.round(pageCount);\n };\n DropDownBase.prototype.updateGroupHeader = function (index, liCollections, target) {\n if (!isNullOrUndefined(liCollections[index]) && liCollections[index].classList.contains(dropDownBaseClasses.group)) {\n this.updateGroupFixedHeader(liCollections[index], target);\n return true;\n }\n else {\n this.fixedHeaderElement.style.display = 'none';\n this.fixedHeaderElement.style.top = 'none';\n return false;\n }\n };\n DropDownBase.prototype.updateGroupFixedHeader = function (element, target) {\n this.fixedHeaderElement.innerHTML = element.innerHTML;\n this.fixedHeaderElement.style.top = target.scrollTop + 'px';\n this.fixedHeaderElement.style.display = 'block';\n };\n DropDownBase.prototype.getValidLi = function () {\n return this.liCollections[0];\n };\n /**\n * To render the list items\n *\n * @param {object[]} listData - Specifies the list of array of data.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @returns {HTMLElement} Return the list items.\n */\n DropDownBase.prototype.renderItems = function (listData, fields) {\n var ulElement;\n if (this.itemTemplate && listData) {\n var dataSource = listData;\n if (dataSource && fields.groupBy) {\n if (this.sortOrder !== 'None') {\n dataSource = this.getSortedDataSource(dataSource);\n }\n dataSource = ListBase.groupDataSource(dataSource, fields.properties, this.sortOrder);\n }\n else {\n dataSource = this.getSortedDataSource(dataSource);\n }\n this.sortedData = dataSource;\n var spliceData = (dataSource.length > 100) ?\n new DataManager(dataSource).executeLocal(new Query().take(100))\n : dataSource;\n ulElement = this.templateListItem((this.getModuleName() === 'autocomplete') ? spliceData : dataSource, fields);\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && this.getModuleName() === 'autocomplete')) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n else {\n ulElement = this.createListItems(listData, fields);\n if (this.isIncrementalRequest) {\n this.incrementalLiCollections = ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n this.incrementalUlElement = ulElement;\n this.incrementalListData = listData;\n return ulElement;\n }\n if (this.isVirtualizationEnabled) {\n var oldUlElement = this.list.querySelector('.e-list-parent');\n var virtualUlElement = this.list.querySelector('.e-virtual-ddl-content');\n if ((listData.length >= this.virtualizedItemsCount && oldUlElement && virtualUlElement) || (oldUlElement && virtualUlElement && this.isAllowFiltering) || (oldUlElement && virtualUlElement && this.getModuleName() === 'autocomplete')) {\n virtualUlElement.replaceChild(ulElement, oldUlElement);\n this.updateListElements(listData);\n }\n else if ((!virtualUlElement)) {\n this.list.innerHTML = '';\n this.createVirtualContent();\n this.list.querySelector('.e-virtual-ddl-content').appendChild(ulElement);\n this.updateListElements(listData);\n }\n }\n }\n return ulElement;\n };\n DropDownBase.prototype.createVirtualContent = function () {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n }));\n }\n };\n DropDownBase.prototype.updateListElements = function (listData) {\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.listData = listData;\n this.postRender(this.list, listData, this.bindEvent);\n };\n DropDownBase.prototype.templateListItem = function (dataSource, fields) {\n var option = this.listOption(dataSource, fields);\n option.templateID = this.itemTemplateId;\n option.isStringTemplate = this.isStringTemplate;\n var itemcheck = this.templateCompiler(this.itemTemplate);\n if (typeof this.itemTemplate !== 'function' && itemcheck) {\n var itemValue = select(this.itemTemplate, document).innerHTML.trim();\n return ListBase.renderContentTemplate(this.createElement, itemValue, dataSource, fields.properties, option, this);\n }\n else {\n return ListBase.renderContentTemplate(this.createElement, this.itemTemplate, dataSource, fields.properties, option, this);\n }\n };\n DropDownBase.prototype.typeOfData = function (items) {\n var item = { typeof: null, item: null };\n for (var i = 0; (!isNullOrUndefined(items) && i < items.length); i++) {\n if (!isNullOrUndefined(items[i])) {\n var listDataType = typeof (items[i]) === 'string' ||\n typeof (items[i]) === 'number' || typeof (items[i]) === 'boolean';\n var isNullData = listDataType ? isNullOrUndefined(items[i]) :\n isNullOrUndefined(getValue((this.fields.value ? this.fields.value : 'value'), items[i]));\n if (!isNullData) {\n return item = { typeof: typeof items[i], item: items[i] };\n }\n }\n }\n return item;\n };\n DropDownBase.prototype.setFixedHeader = function () {\n if (!isNullOrUndefined(this.list)) {\n this.list.parentElement.style.display = 'block';\n }\n var borderWidth = 0;\n if (this.list && this.list.parentElement) {\n borderWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-width'), 10);\n /*Shorthand property not working in Firefox for getComputedStyle method.\n Refer bug report https://bugzilla.mozilla.org/show_bug.cgi?id=137688\n Refer alternate solution https://stackoverflow.com/a/41696234/9133493*/\n if (isNaN(borderWidth)) {\n var borderTopWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-top-width'), 10);\n var borderBottomWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-bottom-width'), 10);\n var borderLeftWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-left-width'), 10);\n var borderRightWidth = parseInt(document.defaultView.getComputedStyle(this.list.parentElement, null).getPropertyValue('border-right-width'), 10);\n borderWidth = (borderTopWidth + borderBottomWidth + borderLeftWidth + borderRightWidth);\n }\n }\n if (!isNullOrUndefined(this.liCollections)) {\n var liWidth = this.getValidLi().offsetWidth - borderWidth;\n this.fixedHeaderElement.style.width = liWidth.toString() + 'px';\n }\n setStyleAttribute(this.fixedHeaderElement, { zIndex: 10 });\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group + ':not(.e-hide-listitem)');\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n };\n DropDownBase.prototype.getSortedDataSource = function (dataSource) {\n if (dataSource && this.sortOrder !== 'None') {\n var textField = this.fields.text ? this.fields.text : 'text';\n if (this.typeOfData(dataSource).typeof === 'string' || this.typeOfData(dataSource).typeof === 'number'\n || this.typeOfData(dataSource).typeof === 'boolean') {\n textField = '';\n }\n dataSource = ListBase.getDataSource(dataSource, ListBase.addSorting(this.sortOrder, textField));\n }\n return dataSource;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValue = function (value) {\n var index;\n var listItems = this.getItems();\n for (var i = 0; i < listItems.length; i++) {\n if (!isNullOrUndefined(value) && listItems[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * Return the index of item which matched with given value in data source\n *\n * @param {string | number | boolean} value - Specifies given value.\n * @returns {number} Returns the index of the item.\n */\n DropDownBase.prototype.getIndexByValueFilter = function (value) {\n var index;\n var listItems = this.renderItems(this.selectData, this.fields);\n for (var i = 0; i < listItems.children.length; i++) {\n if (!isNullOrUndefined(value) && listItems.children[i].getAttribute('data-value') === value.toString()) {\n index = i;\n break;\n }\n }\n return index;\n };\n /**\n * To dispatch the event manually\n *\n * @param {HTMLElement} element - Specifies the element to dispatch the event.\n * @param {string} type - Specifies the name of the event.\n * @returns {void}\n */\n DropDownBase.prototype.dispatchEvent = function (element, type) {\n var evt = document.createEvent('HTMLEvents');\n evt.initEvent(type, false, true);\n if (element) {\n element.dispatchEvent(evt);\n }\n };\n /**\n * To set the current fields\n *\n * @returns {void}\n */\n DropDownBase.prototype.setFields = function () {\n if (this.fields.value && !this.fields.text) {\n this.updateFields(this.fields.value, this.fields.value);\n }\n else if (!this.fields.value && this.fields.text) {\n this.updateFields(this.fields.text, this.fields.text);\n }\n else if (!this.fields.value && !this.fields.text) {\n this.updateFields('text', 'text');\n }\n };\n /**\n * reset the items list.\n *\n * @param {Object[] | string[] | number[] | DataManager | boolean[]} dataSource - Specifies the data to generate the list.\n * @param {FieldSettingsModel} fields - Maps the columns of the data table and binds the data to the component.\n * @param {Query} query - Accepts the external Query that execute along with data processing.\n * @returns {void}\n */\n DropDownBase.prototype.resetList = function (dataSource, fields, query, e) {\n if (this.list) {\n if ((this.element.tagName === 'SELECT' && this.element.options.length > 0)\n || (this.element.tagName === 'UL' && this.element.childNodes.length > 0)) {\n var data = dataSource instanceof Array ? (dataSource.length > 0)\n : !isNullOrUndefined(dataSource);\n if (!data && this.selectData && this.selectData.length > 0) {\n dataSource = this.selectData;\n }\n }\n dataSource = this.getModuleName() === 'combobox' && this.selectData && dataSource instanceof Array && dataSource.length < this.selectData.length && this.addedNewItem ? this.selectData : dataSource;\n this.addedNewItem = false;\n this.setListData(dataSource, fields, query, e);\n }\n };\n DropDownBase.prototype.updateSelectElementData = function (isFiltering) {\n if ((isFiltering || this.isVirtualizationEnabled) && isNullOrUndefined(this.selectData) && this.listData && this.listData.length > 0) {\n this.selectData = this.listData;\n }\n };\n DropDownBase.prototype.updateSelection = function () {\n // This is for after added the item, need to update the selected index values.\n };\n DropDownBase.prototype.renderList = function () {\n // This is for render the list items.\n this.render();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateDataSource = function (props) {\n this.resetList(this.dataSource);\n this.totalItemCount = this.dataSource instanceof DataManager ? this.dataSource.dataSource.json.length : 0;\n };\n DropDownBase.prototype.setUpdateInitial = function (props, newProp) {\n this.isDataFetched = false;\n var updateData = {};\n for (var j = 0; props.length > j; j++) {\n if (newProp[props[j]] && props[j] === 'fields') {\n this.setFields();\n updateData[props[j]] = newProp[props[j]];\n }\n else if (newProp[props[j]]) {\n updateData[props[j]] = newProp[props[j]];\n }\n }\n if (Object.keys(updateData).length > 0) {\n if (Object.keys(updateData).indexOf('dataSource') === -1) {\n updateData.dataSource = this.dataSource;\n }\n this.updateDataSource(updateData);\n }\n };\n /**\n * When property value changes happened, then onPropertyChanged method will execute the respective changes in this component.\n *\n * @param {DropDownBaseModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownBaseModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.getModuleName() === 'dropdownbase') {\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n this.setUpdateInitial(['sortOrder', 'itemTemplate'], newProp);\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'sortOrder':\n case 'dataSource':\n case 'itemTemplate':\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'groupTemplate':\n this.renderGroupTemplate(this.list);\n if (this.ulElement && this.fixedHeaderElement) {\n var firstLi = this.ulElement.querySelector('.' + dropDownBaseClasses.group);\n this.fixedHeaderElement.innerHTML = firstLi.innerHTML;\n }\n break;\n case 'locale':\n if (this.list && (!isNullOrUndefined(this.liCollections) && this.liCollections.length === 0)) {\n this.l10nUpdate();\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n }\n }\n };\n /**\n * Build and render the component\n *\n * @param {boolean} isEmptyData - Specifies the component to initialize with list data or not.\n * @private\n * @returns {void}\n */\n DropDownBase.prototype.render = function (e, isEmptyData) {\n if (this.getModuleName() === 'listbox') {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content, attrs: { 'tabindex': '0' } });\n }\n else {\n this.list = this.createElement('div', { className: dropDownBaseClasses.content });\n }\n this.list.classList.add(dropDownBaseClasses.root);\n this.setFields();\n var rippleModel = { duration: 300, selector: '.' + dropDownBaseClasses.li };\n this.rippleFun = rippleEffect(this.list, rippleModel);\n var group = this.element.querySelector('select>optgroup');\n if ((this.fields.groupBy || !isNullOrUndefined(group)) && !this.isGroupChecking) {\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (this.getModuleName() === 'dropdownbase') {\n if (this.element.getAttribute('tabindex')) {\n this.list.setAttribute('tabindex', this.element.getAttribute('tabindex'));\n }\n removeClass([this.element], dropDownBaseClasses.root);\n this.element.style.display = 'none';\n var wrapperElement = this.createElement('div');\n this.element.parentElement.insertBefore(wrapperElement, this.element);\n wrapperElement.appendChild(this.element);\n wrapperElement.appendChild(this.list);\n }\n this.setEnableRtl();\n if (!isEmptyData) {\n this.initialize(e);\n }\n };\n DropDownBase.prototype.removeScrollEvent = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownBase.prototype.getModuleName = function () {\n return 'dropdownbase';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownBase.prototype.getItems = function () {\n return this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Adds a new item to the popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n\n */\n DropDownBase.prototype.addItem = function (items, itemIndex) {\n if (!this.list || (this.list.textContent === this.noRecordsTemplate && this.getModuleName() !== 'listbox')) {\n this.renderList();\n }\n if (this.sortOrder !== 'None' && isNullOrUndefined(itemIndex)) {\n var newList = [].slice.call(this.listData);\n newList.push(items);\n newList = this.getSortedDataSource(newList);\n if (this.fields.groupBy) {\n newList = ListBase.groupDataSource(newList, this.fields.properties, this.sortOrder);\n itemIndex = newList.indexOf(items);\n }\n else {\n itemIndex = newList.indexOf(items);\n }\n }\n var itemsCount = this.getItems().length;\n var selectedItemValue = this.list.querySelector('.' + dropDownBaseClasses.selected);\n items = (items instanceof Array ? items : [items]);\n var index;\n index = (isNullOrUndefined(itemIndex) || itemIndex < 0 || itemIndex > itemsCount - 1) ? itemsCount : itemIndex;\n var fields = this.fields;\n if (items && fields.groupBy) {\n items = ListBase.groupDataSource(items, fields.properties);\n }\n var liCollections = [];\n for (var i = 0; i < items.length; i++) {\n var item = items[i];\n var isHeader = item.isHeader;\n var li = this.createElement('li', { className: isHeader ? dropDownBaseClasses.group : dropDownBaseClasses.li, id: 'option-add-' + i });\n var itemText = item instanceof Object ? getValue(fields.text, item) : item;\n if (isHeader) {\n li.innerText = itemText;\n }\n if (this.itemTemplate && !isHeader) {\n var itemCheck = this.templateCompiler(this.itemTemplate);\n var compiledString = typeof this.itemTemplate !== 'function' &&\n itemCheck ? compile(select(this.itemTemplate, document).innerHTML.trim()) : compile(this.itemTemplate);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var addItemTemplate = compiledString(item, this, 'itemTemplate', this.itemTemplateId, this.isStringTemplate, null, li);\n if (addItemTemplate) {\n append(addItemTemplate, li);\n }\n }\n else if (!isHeader) {\n li.appendChild(document.createTextNode(itemText));\n }\n li.setAttribute('data-value', item instanceof Object ? getValue(fields.value, item) : item);\n li.setAttribute('role', 'option');\n this.notify('addItem', { module: 'CheckBoxSelection', item: li });\n liCollections.push(li);\n this.listData.push(item);\n if (this.sortOrder === 'None' && isNullOrUndefined(itemIndex) && index === 0) {\n index = null;\n }\n this.updateActionCompleteData(li, item, index);\n //Listbox event\n this.trigger('beforeItemRender', { element: li, item: item });\n }\n if (itemsCount === 0 && isNullOrUndefined(this.list.querySelector('ul'))) {\n if (!isNullOrUndefined(this.list)) {\n this.list.innerHTML = '';\n this.list.classList.remove(dropDownBaseClasses.noData);\n this.isAddNewItemTemplate = true;\n if (!isNullOrUndefined(this.ulElement)) {\n this.list.appendChild(this.ulElement);\n }\n }\n this.liCollections = liCollections;\n if (!isNullOrUndefined(liCollections) && !isNullOrUndefined(this.ulElement)) {\n append(liCollections, this.ulElement);\n }\n this.updateAddItemList(this.list, itemsCount);\n }\n else {\n if (this.getModuleName() === 'listbox' && itemsCount === 0) {\n this.ulElement.innerHTML = '';\n }\n var attr = [];\n for (var i = 0; i < items.length; i++) {\n var listGroupItem = this.ulElement.querySelectorAll('.e-list-group-item');\n for (var j = 0; j < listGroupItem.length; j++) {\n attr[j] = listGroupItem[j].innerText;\n }\n if (attr.indexOf(liCollections[i].innerText) > -1 && fields.groupBy) {\n for (var j = 0; j < listGroupItem.length; j++) {\n if (attr[j] === liCollections[i].innerText) {\n if (this.sortOrder === 'None') {\n this.ulElement.insertBefore(liCollections[i + 1], listGroupItem[j + 1]);\n }\n else {\n this.ulElement.insertBefore(liCollections[i + 1], this.ulElement.childNodes[itemIndex]);\n }\n i = i + 1;\n break;\n }\n }\n }\n else {\n if (this.liCollections[index]) {\n this.liCollections[index].parentNode.insertBefore(liCollections[i], this.liCollections[index]);\n }\n else {\n this.ulElement.appendChild(liCollections[i]);\n }\n }\n var tempLi = [].slice.call(this.liCollections);\n tempLi.splice(index, 0, liCollections[i]);\n this.liCollections = tempLi;\n index += 1;\n if (this.getModuleName() === 'multiselect') {\n this.updateDataList();\n }\n }\n }\n if (this.getModuleName() === 'listbox' && this.isReact) {\n this.renderReactTemplates();\n }\n if (selectedItemValue || itemIndex === 0) {\n this.updateSelection();\n }\n this.addedNewItem = true;\n };\n DropDownBase.prototype.validationAttribute = function (target, hidden) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n hidden.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (!target.getAttribute(attributes[i])) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n hidden.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n DropDownBase.prototype.setZIndex = function () {\n // this is for component wise\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateActionCompleteData = function (li, item, index) {\n // this is for ComboBox custom value\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownBase.prototype.updateAddItemList = function (list, itemCount) {\n // this is for multiselect add item\n };\n DropDownBase.prototype.updateDataList = function () {\n // this is for multiselect update list items\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownBase.prototype.getDataByValue = function (value) {\n if (!isNullOrUndefined(this.listData)) {\n var type = this.typeOfData(this.listData).typeof;\n if (type === 'string' || type === 'number' || type === 'boolean') {\n for (var _i = 0, _a = this.listData; _i < _a.length; _i++) {\n var item = _a[_i];\n if (!isNullOrUndefined(item) && item === value) {\n return item;\n }\n }\n }\n else {\n for (var _b = 0, _c = this.listData; _b < _c.length; _b++) {\n var item = _c[_b];\n if (!isNullOrUndefined(item) && getValue((this.fields.value ? this.fields.value : 'value'), item) === value) {\n return item;\n }\n }\n }\n }\n return null;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownBase.prototype.destroy = function () {\n if (document.body.contains(this.list)) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n if (!isNullOrUndefined(this.rippleFun)) {\n this.rippleFun();\n }\n detach(this.list);\n }\n this.liCollections = null;\n this.ulElement = null;\n this.list = null;\n this.enableRtlElements = null;\n this.rippleFun = null;\n _super.prototype.destroy.call(this);\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], DropDownBase.prototype, \"fields\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], DropDownBase.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], DropDownBase.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], DropDownBase.prototype, \"sortOrder\", void 0);\n __decorate([\n Property([])\n ], DropDownBase.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], DropDownBase.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], DropDownBase.prototype, \"filterType\", void 0);\n __decorate([\n Property(true)\n ], DropDownBase.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(1000)\n ], DropDownBase.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DropDownBase.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], DropDownBase.prototype, \"locale\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DropDownBase.prototype, \"destroyed\", void 0);\n DropDownBase = __decorate([\n NotifyPropertyChanges\n ], DropDownBase);\n return DropDownBase;\n}(Component));\nexport { DropDownBase };\n","/**\n * IncrementalSearch module file\n */\nvar queryString = '';\nvar prevString = '';\nvar tempQueryString = '';\nvar matches = [];\nvar activeClass = 'e-active';\nvar prevElementId = '';\n/**\n * Search and focus the list item based on key code matches with list text content\n *\n * @param { number } keyCode - Specifies the key code which pressed on keyboard events.\n * @param { HTMLElement[]} items - Specifies an array of HTMLElement, from which matches find has done.\n * @param { number } selectedIndex - Specifies the selected item in list item, so that search will happen\n * after selected item otherwise it will do from initial.\n * @param { boolean } ignoreCase - Specifies the case consideration when search has done.\n * @param {string} elementId - Specifies the list element ID.\n * @returns {Element} Returns list item based on key code matches with list text content.\n */\nexport function incrementalSearch(keyCode, items, selectedIndex, ignoreCase, elementId, queryStringUpdated, currentValue, isVirtual, refresh) {\n if (!queryStringUpdated || queryString === '') {\n if (tempQueryString != '') {\n queryString = tempQueryString + String.fromCharCode(keyCode);\n tempQueryString = '';\n }\n else {\n queryString += String.fromCharCode(keyCode);\n }\n }\n else if (queryString == prevString) {\n tempQueryString = String.fromCharCode(keyCode);\n }\n if (isVirtual) {\n setTimeout(function () {\n tempQueryString = '';\n }, 700);\n setTimeout(function () {\n queryString = '';\n }, 3000);\n }\n else {\n setTimeout(function () {\n queryString = '';\n }, 1000);\n }\n var index;\n queryString = ignoreCase ? queryString.toLowerCase() : queryString;\n if (prevElementId === elementId && prevString === queryString && !refresh) {\n for (var i = 0; i < matches.length; i++) {\n if (matches[i].classList.contains(activeClass)) {\n index = i;\n break;\n }\n if (currentValue && matches[i].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i;\n break;\n }\n }\n index = index + 1;\n if (isVirtual) {\n return matches[index] && matches.length - 1 != index ? matches[index] : matches[matches.length];\n }\n return matches[index] ? matches[index] : matches[0];\n }\n else {\n var listItems = items;\n var strLength = queryString.length;\n var text = void 0;\n var item = void 0;\n selectedIndex = selectedIndex ? selectedIndex + 1 : 0;\n var i = selectedIndex;\n matches = [];\n do {\n if (i === listItems.length) {\n i = -1;\n }\n if (i === -1) {\n index = 0;\n }\n else {\n index = i;\n }\n item = listItems[index];\n text = ignoreCase ? item.innerText.toLowerCase() : item.innerText;\n if (text.substr(0, strLength) === queryString) {\n matches.push(listItems[index]);\n }\n i++;\n } while (i !== selectedIndex);\n prevString = queryString;\n prevElementId = elementId;\n if (isVirtual) {\n var indexUpdated = false;\n for (var i_1 = 0; i_1 < matches.length; i_1++) {\n if (currentValue && matches[i_1].textContent.toLowerCase() === currentValue.toLowerCase()) {\n index = i_1;\n indexUpdated = true;\n break;\n }\n }\n if (currentValue && indexUpdated) {\n index = index + 1;\n }\n return matches[index] ? matches[index] : matches[0];\n }\n return matches[0];\n }\n}\n/**\n * Search the list item based on given input value matches with search type.\n *\n * @param {string} inputVal - Specifies the given input value.\n * @param {HTMLElement[]} items - Specifies the list items.\n * @param {SearchType} searchType - Specifies the filter type.\n * @param {boolean} ignoreCase - Specifies the case sensitive option for search operation.\n * @returns {Element | number} Returns the search matched items.\n */\nexport function Search(inputVal, items, searchType, ignoreCase, dataSource, fields, type) {\n var listItems = items;\n ignoreCase = ignoreCase !== undefined && ignoreCase !== null ? ignoreCase : true;\n var itemData = { item: null, index: null };\n if (inputVal && inputVal.length) {\n var strLength = inputVal.length;\n var queryStr = ignoreCase ? inputVal.toLocaleLowerCase() : inputVal;\n queryStr = escapeCharRegExp(queryStr);\n var _loop_1 = function (i, itemsData) {\n var item = itemsData[i];\n var text = void 0;\n var filterValue;\n if (items && dataSource) {\n var checkField_1 = item;\n var fieldValue_1 = fields.text.split('.');\n dataSource.filter(function (data) {\n Array.prototype.slice.call(fieldValue_1).forEach(function (value) {\n /* eslint-disable security/detect-object-injection */\n if (type === 'object' && (!data.isHeader && checkField_1.textContent.toString().indexOf(data[value]) !== -1) && checkField_1.getAttribute('data-value') === data[fields.value].toString() || type === 'string' && checkField_1.textContent.toString().indexOf(data) !== -1) {\n filterValue = type === 'object' ? data[value] : data;\n }\n });\n });\n }\n text = dataSource && filterValue ? (ignoreCase ? filterValue.toString().toLocaleLowerCase() : filterValue).replace(/^\\s+|\\s+$/g, '') : (ignoreCase ? item.textContent.toLocaleLowerCase() : item.textContent).replace(/^\\s+|\\s+$/g, '');\n /* eslint-disable security/detect-non-literal-regexp */\n if ((searchType === 'Equal' && text === queryStr) || (searchType === 'StartsWith' && text.substr(0, strLength) === queryStr) || (searchType === 'EndsWith' && text.substr(text.length - queryStr.length) === queryStr) || (searchType === 'Contains' && new RegExp(queryStr, \"g\").test(text))) {\n itemData.item = item;\n itemData.index = i;\n return { value: { item: item, index: i } };\n }\n };\n for (var i = 0, itemsData = listItems; i < itemsData.length; i++) {\n var state_1 = _loop_1(i, itemsData);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n return itemData;\n /* eslint-enable security/detect-non-literal-regexp */\n }\n return itemData;\n}\n/* eslint-enable security/detect-object-injection */\nexport function escapeCharRegExp(value) {\n return value.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\$&');\n}\nexport function resetIncrementalSearchValues(elementId) {\n if (prevElementId === elementId) {\n prevElementId = '';\n prevString = '';\n queryString = '';\n matches = [];\n }\n}\n","/**\n * FloatLable Moduel\n * Specifies whether to display the floating label above the input element.\n */\nimport { removeClass, addClass, detach } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, createElement, getUniqueID } from '@syncfusion/ej2-base';\nvar FLOATLINE = 'e-float-line';\nvar FLOATTEXT = 'e-float-text';\nvar LABELTOP = 'e-label-top';\nvar LABELBOTTOM = 'e-label-bottom';\n/* eslint-disable valid-jsdoc */\n/**\n * Function to create Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLElement} element - The given html element.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function createFloatLabel(overAllWrapper, searchWrapper, element, inputElement, value, floatLabelType, placeholder) {\n var floatLinelement = createElement('span', { className: FLOATLINE });\n var floatLabelElement = createElement('label', { className: FLOATTEXT });\n var id = element.getAttribute('id') ? element.getAttribute('id') : getUniqueID('ej2_multiselect');\n element.id = id;\n if (!isNullOrUndefined(element.id) && element.id !== '') {\n floatLabelElement.id = 'label_' + element.id.replace(/ /g, '_');\n attributes(inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n if (!isNullOrUndefined(inputElement.placeholder) && inputElement.placeholder !== '') {\n floatLabelElement.innerText = encodePlaceholder(inputElement.placeholder);\n inputElement.removeAttribute('placeholder');\n }\n floatLabelElement.innerText = encodePlaceholder(placeholder);\n searchWrapper.appendChild(floatLinelement);\n searchWrapper.appendChild(floatLabelElement);\n overAllWrapper.classList.add('e-float-input');\n updateFloatLabelState(value, floatLabelElement);\n if (floatLabelType === 'Always') {\n if (floatLabelElement.classList.contains(LABELBOTTOM)) {\n removeClass([floatLabelElement], LABELBOTTOM);\n }\n addClass([floatLabelElement], LABELTOP);\n }\n}\n/**\n * Function to update status of the Float Label element.\n *\n * @param {string[] | number[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLElement} label - Float label element.\n */\nexport function updateFloatLabelState(value, label) {\n if (value && value.length > 0) {\n addClass([label], LABELTOP);\n removeClass([label], LABELBOTTOM);\n }\n else {\n removeClass([label], LABELTOP);\n addClass([label], LABELBOTTOM);\n }\n}\n/**\n * Function to remove Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {HTMLElement} searchWrapper - Search wrapper of multiselect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function removeFloating(overAllWrapper, componentWrapper, searchWrapper, inputElement, value, floatLabelType, placeholder) {\n var placeholderElement = componentWrapper.querySelector('.' + FLOATTEXT);\n var floatLine = componentWrapper.querySelector('.' + FLOATLINE);\n var placeholderText;\n if (!isNullOrUndefined(placeholderElement)) {\n placeholderText = placeholderElement.innerText;\n detach(searchWrapper.querySelector('.' + FLOATTEXT));\n setPlaceHolder(value, inputElement, placeholderText);\n if (!isNullOrUndefined(floatLine)) {\n detach(searchWrapper.querySelector('.' + FLOATLINE));\n }\n }\n else {\n placeholderText = (placeholder !== null) ? placeholder : '';\n setPlaceHolder(value, inputElement, placeholderText);\n }\n overAllWrapper.classList.remove('e-float-input');\n}\n/**\n * Function to set the placeholder to the element.\n *\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {HTMLInputElement} inputElement - Specify the input wrapper.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function setPlaceHolder(value, inputElement, placeholder) {\n if (value && value.length) {\n inputElement.placeholder = '';\n }\n else {\n inputElement.placeholder = placeholder;\n }\n}\n/**\n * Function for focusing the Float Element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n */\nexport function floatLabelFocus(overAllWrapper, componentWrapper) {\n overAllWrapper.classList.add('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (!isNullOrUndefined(label)) {\n addClass([label], LABELTOP);\n if (label.classList.contains(LABELBOTTOM)) {\n removeClass([label], LABELBOTTOM);\n }\n }\n}\n/* eslint-disable @typescript-eslint/no-unused-vars */\n/**\n * Function to focus the Float Label element.\n *\n * @param {HTMLDivElement} overAllWrapper - Overall wrapper of multiselect.\n * @param {HTMLDivElement} componentWrapper - Wrapper element of multiselect.\n * @param {number[] | string[] | boolean[]} value - Value of the MultiSelect.\n * @param {FloatLabelType} floatLabelType - Specify the FloatLabel Type.\n * @param {string} placeholder - Specify the PlaceHolder text.\n */\nexport function floatLabelBlur(overAllWrapper, componentWrapper, value, floatLabelType, placeholder) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n overAllWrapper.classList.remove('e-input-focus');\n var label = componentWrapper.querySelector('.' + FLOATTEXT);\n if (value && value.length <= 0 && floatLabelType === 'Auto' && !isNullOrUndefined(label)) {\n if (label.classList.contains(LABELTOP)) {\n removeClass([label], LABELTOP);\n }\n addClass([label], LABELBOTTOM);\n }\n}\nexport function encodePlaceholder(placeholder) {\n var result = '';\n if (!isNullOrUndefined(placeholder) && placeholder !== '') {\n var spanElement = document.createElement('span');\n spanElement.innerHTML = '';\n var hiddenInput = (spanElement.children[0]);\n result = hiddenInput.placeholder;\n }\n return result;\n}\n/* eslint-enable valid-jsdoc */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { FieldSettings } from '../drop-down-base/drop-down-base';\nimport { Popup, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { attributes, setValue, getValue } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges, extend } from '@syncfusion/ej2-base';\nimport { EventHandler, Property, Event, compile, L10n } from '@syncfusion/ej2-base';\nimport { Animation, Browser, prepend, Complex } from '@syncfusion/ej2-base';\nimport { Search } from '../common/incremental-search';\nimport { append, addClass, removeClass, closest, detach, remove, select, selectAll } from '@syncfusion/ej2-base';\nimport { getUniqueID, formatUnit, isNullOrUndefined, isUndefined } from '@syncfusion/ej2-base';\nimport { DataManager, Query, Predicate, JsonAdaptor } from '@syncfusion/ej2-data';\nimport { createFloatLabel, removeFloating, floatLabelFocus, floatLabelBlur, encodePlaceholder } from './float-label';\nvar FOCUS = 'e-input-focus';\nvar DISABLED = 'e-disabled';\nvar OVER_ALL_WRAPPER = 'e-multiselect e-input-group e-control-wrapper';\nvar ELEMENT_WRAPPER = 'e-multi-select-wrapper';\nvar ELEMENT_MOBILE_WRAPPER = 'e-mob-wrapper';\nvar HIDE_LIST = 'e-hide-listitem';\nvar DELIMITER_VIEW = 'e-delim-view';\nvar CHIP_WRAPPER = 'e-chips-collection';\nvar CHIP = 'e-chips';\nvar CHIP_CONTENT = 'e-chipcontent';\nvar CHIP_CLOSE = 'e-chips-close';\nvar CHIP_SELECTED = 'e-chip-selected';\nvar SEARCHBOX_WRAPPER = 'e-searcher';\nvar DELIMITER_VIEW_WRAPPER = 'e-delimiter';\nvar ZERO_SIZE = 'e-zero-size';\nvar REMAIN_WRAPPER = 'e-remain';\nvar CLOSEICON_CLASS = 'e-chips-close e-close-hooker';\nvar DELIMITER_WRAPPER = 'e-delim-values';\nvar POPUP_WRAPPER = 'e-ddl e-popup e-multi-select-list-wrapper';\nvar INPUT_ELEMENT = 'e-dropdownbase';\nvar RTL_CLASS = 'e-rtl';\nvar CLOSE_ICON_HIDE = 'e-close-icon-hide';\nvar MOBILE_CHIP = 'e-mob-chip';\nvar FOOTER = 'e-ddl-footer';\nvar HEADER = 'e-ddl-header';\nvar DISABLE_ICON = 'e-ddl-disable-icon';\nvar SPINNER_CLASS = 'e-ms-spinner-icon';\nvar HIDDEN_ELEMENT = 'e-multi-hidden';\nvar destroy = 'destroy';\nvar dropdownIcon = 'e-input-group-icon e-ddl-icon';\nvar iconAnimation = 'e-icon-anim';\nvar TOTAL_COUNT_WRAPPER = 'e-delim-total';\nvar BOX_ELEMENT = 'e-multiselect-box';\nvar FILTERPARENT = 'e-filter-parent';\nvar CUSTOM_WIDTH = 'e-search-custom-width';\nvar FILTERINPUT = 'e-input-filter';\n/**\n * The Multiselect allows the user to pick a more than one value from list of predefined values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar MultiSelect = /** @class */ (function (_super) {\n __extends(MultiSelect, _super);\n /**\n * Constructor for creating the DropDownList widget.\n *\n * @param {MultiSelectModel} option - Specifies the MultiSelect model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function MultiSelect(option, element) {\n var _this = _super.call(this, option, element) || this;\n _this.clearIconWidth = 0;\n _this.previousFilterText = '';\n _this.isValidKey = false;\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n _this.resetMainList = null;\n _this.resetFilteredData = false;\n _this.scrollFocusStatus = false;\n _this.keyDownStatus = false;\n return _this;\n }\n MultiSelect.prototype.enableRTL = function (state) {\n if (state) {\n this.overAllWrapper.classList.add(RTL_CLASS);\n }\n else {\n this.overAllWrapper.classList.remove(RTL_CLASS);\n }\n if (this.popupObj) {\n this.popupObj.enableRtl = state;\n this.popupObj.dataBind();\n }\n };\n MultiSelect.prototype.requiredModules = function () {\n var modules = [];\n if (this.mode === 'CheckBox') {\n this.isGroupChecking = this.enableGroupCheckBox;\n if (this.enableGroupCheckBox) {\n var prevOnChange = this.isProtectedOnChange;\n this.isProtectedOnChange = true;\n this.enableSelectionOrder = false;\n this.isProtectedOnChange = prevOnChange;\n }\n this.allowCustomValue = false;\n this.hideSelectedItem = false;\n this.closePopupOnSelect = false;\n modules.push({\n member: 'CheckBoxSelection',\n args: [this]\n });\n }\n return modules;\n };\n MultiSelect.prototype.updateHTMLAttribute = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n switch (htmlAttr) {\n case 'class': {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.overAllWrapper], updatedClassValue.split(' '));\n addClass([this.popupWrapper], updatedClassValue.split(' '));\n }\n break;\n }\n case 'disabled':\n this.enable(false);\n break;\n case 'placeholder':\n if (!this.placeholder) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n this.setProperties({ placeholder: this.inputElement.placeholder }, true);\n this.refreshPlaceHolder();\n }\n break;\n default: {\n var defaultAttr = ['id'];\n var validateAttr = ['name', 'required', 'aria-required', 'form'];\n var containerAttr = ['title', 'role', 'style', 'class'];\n if (defaultAttr.indexOf(htmlAttr) > -1) {\n this.element.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr.indexOf('data') === 0 || validateAttr.indexOf(htmlAttr) > -1) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (containerAttr.indexOf(htmlAttr) > -1) {\n this.overAllWrapper.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr !== 'size' && !isNullOrUndefined(this.inputElement)) {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n break;\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateReadonly = function (state) {\n if (!isNullOrUndefined(this.inputElement)) {\n if (state || this.mode === 'CheckBox') {\n this.inputElement.setAttribute('readonly', 'true');\n }\n else {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n MultiSelect.prototype.updateClearButton = function (state) {\n if (state) {\n if (this.overAllClear.parentNode) {\n this.overAllClear.style.display = '';\n }\n else {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n this.componentWrapper.classList.remove(CLOSE_ICON_HIDE);\n }\n else {\n this.overAllClear.style.display = 'none';\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n };\n MultiSelect.prototype.updateCssClass = function () {\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n var updatedCssClassValues = this.cssClass;\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n if (updatedCssClassValues !== '') {\n addClass([this.overAllWrapper], updatedCssClassValues.split(' '));\n addClass([this.popupWrapper], updatedCssClassValues.split(' '));\n }\n }\n };\n MultiSelect.prototype.updateOldPropCssClass = function (oldClass) {\n if (!isNullOrUndefined(oldClass) && oldClass !== '') {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n if (oldClass !== '') {\n removeClass([this.overAllWrapper], oldClass.split(' '));\n removeClass([this.popupWrapper], oldClass.split(' '));\n }\n }\n };\n MultiSelect.prototype.onPopupShown = function (e) {\n var _this = this;\n if (Browser.isDevice && (this.mode === 'CheckBox' && this.allowFiltering)) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n window.onpopstate = function () {\n proxy_1.hidePopup();\n proxy_1.inputElement.focus();\n };\n history.pushState({}, '');\n }\n var animModel = { name: 'FadeIn', duration: 100 };\n var eventArgs = { popup: this.popupObj, event: e, cancel: false, animation: animModel };\n this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n _this.focusAtFirstListItem();\n if (_this.popupObj) {\n document.body.appendChild(_this.popupObj.element);\n }\n if (_this.mode === 'CheckBox' && _this.enableGroupCheckBox && !isNullOrUndefined(_this.fields.groupBy)) {\n _this.updateListItems(_this.list.querySelectorAll('li.e-list-item'), _this.mainList.querySelectorAll('li.e-list-item'));\n }\n if (_this.mode === 'CheckBox' || _this.showDropDownIcon) {\n addClass([_this.overAllWrapper], [iconAnimation]);\n }\n _this.refreshPopup();\n _this.renderReactTemplates();\n if (_this.popupObj) {\n _this.popupObj.show(eventArgs.animation, (_this.zIndex === 1000) ? _this.element : null);\n }\n attributes(_this.inputElement, { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n _this.updateAriaActiveDescendant();\n if (_this.isFirstClick) {\n _this.loadTemplate();\n }\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.add(_this.popupObj.element, 'click', _this.clickHandler, _this);\n }\n }\n });\n };\n MultiSelect.prototype.updateListItems = function (listItems, mainListItems) {\n for (var i = 0; i < listItems.length; i++) {\n this.findGroupStart(listItems[i]);\n this.findGroupStart(mainListItems[i]);\n }\n this.deselectHeader();\n };\n MultiSelect.prototype.loadTemplate = function () {\n this.refreshListItems(null);\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n };\n MultiSelect.prototype.setScrollPosition = function () {\n if (((!this.hideSelectedItem && this.mode !== 'CheckBox') || (this.mode === 'CheckBox' && !this.enableSelectionOrder)) &&\n (!isNullOrUndefined(this.value) && (this.value.length > 0))) {\n var valueEle = this.findListElement((this.hideSelectedItem ? this.ulElement : this.list), 'li', 'data-value', this.value[this.value.length - 1]);\n if (!isNullOrUndefined(valueEle)) {\n this.scrollBottom(valueEle);\n }\n }\n };\n MultiSelect.prototype.focusAtFirstListItem = function () {\n if (this.ulElement && this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li)) {\n var element = void 0;\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n return;\n }\n else {\n element = this.ulElement.querySelector('li.'\n + dropDownBaseClasses.li + ':not(.'\n + HIDE_LIST + ')');\n }\n if (element !== null) {\n this.removeFocus();\n this.addListFocus(element);\n }\n }\n };\n MultiSelect.prototype.focusAtLastListItem = function (data) {\n var activeElement;\n if (data) {\n activeElement = Search(data, this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n if (this.value && this.value.length) {\n Search(this.value[this.value.length - 1], this.liCollections, 'StartsWith', this.ignoreCase);\n }\n else {\n activeElement = null;\n }\n }\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.scrollBottom(activeElement.item, activeElement.index);\n }\n };\n MultiSelect.prototype.getAriaAttributes = function () {\n var ariaAttributes = {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false'\n };\n return ariaAttributes;\n };\n MultiSelect.prototype.updateListARIA = function () {\n if (!isNullOrUndefined(this.ulElement)) {\n attributes(this.ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false', 'aria-label': 'list' });\n }\n var disableStatus = !isNullOrUndefined(this.inputElement) && (this.inputElement.disabled) ? true : false;\n if (!this.isPopupOpen() && !isNullOrUndefined(this.inputElement)) {\n attributes(this.inputElement, this.getAriaAttributes());\n }\n if (disableStatus) {\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n }\n this.ensureAriaDisabled((disableStatus) ? 'true' : 'false');\n };\n MultiSelect.prototype.ensureAriaDisabled = function (status) {\n if (this.htmlAttributes && this.htmlAttributes['aria-disabled']) {\n var attr = this.htmlAttributes;\n extend(attr, { 'aria-disabled': status }, attr);\n this.setProperties({ htmlAttributes: attr }, true);\n }\n };\n MultiSelect.prototype.removelastSelection = function (e) {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var value = elements[elements.length - 1].getAttribute('data-value');\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n var customValue = this.getFormattedValue(value);\n if (this.allowCustomValue && (value !== 'false' && customValue === false || (!isNullOrUndefined(customValue) &&\n customValue.toString() === 'NaN'))) {\n customValue = value;\n }\n this.removeValue(customValue, e);\n this.removeChipSelection();\n this.updateDelimeter(this.delimiterChar, e);\n this.makeTextBoxEmpty();\n if (this.mainList && this.listData) {\n this.refreshSelection();\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n this.renderPopup();\n this.onPopupShown();\n };\n MultiSelect.prototype.targetElement = function () {\n this.targetInputElement = this.inputElement;\n if (this.mode === 'CheckBox' && this.allowFiltering) {\n this.notify('targetElement', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n return this.targetInputElement.value;\n };\n MultiSelect.prototype.getForQuery = function (valuecheck) {\n var predicate;\n var field = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n for (var i = 0; i < valuecheck.length; i++) {\n if (i === 0) {\n predicate = new Predicate(field, 'equal', valuecheck[i]);\n }\n else {\n predicate = predicate.or(field, 'equal', valuecheck[i]);\n }\n }\n if (this.dataSource instanceof DataManager && this.dataSource.adaptor instanceof JsonAdaptor) {\n return new Query().where(predicate);\n }\n else {\n return this.getQuery(this.query).clone().where(predicate);\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.updateSelectElementData(this.allowFiltering);\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy = this;\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', proxy.value[i]);\n if (!checkEle && !(this.dataSource instanceof DataManager)) {\n this.value.splice(i, 1);\n i -= 1;\n }\n }\n }\n var valuecheck = [];\n if (!isNullOrUndefined(this.value)) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n this.updateActionList(ulElement, list, e);\n }\n if (this.dataSource instanceof DataManager && this.mode === 'CheckBox' && this.allowFiltering) {\n this.removeFocus();\n }\n };\n /* eslint-disable @typescript-eslint/no-unused-vars */\n MultiSelect.prototype.updateActionList = function (ulElement, list, e, isUpdated) {\n /* eslint-enable @typescript-eslint/no-unused-vars */\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n if (!this.mainList && !this.mainData) {\n this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.mainData = list;\n this.mainListCollection = this.liCollections;\n }\n else if (isNullOrUndefined(this.mainData) || this.mainData.length === 0) {\n this.mainData = list;\n }\n if ((this.remoteCustomValue || list.length <= 0) && this.allowCustomValue && this.inputFocus && this.allowFiltering &&\n this.inputElement.value && this.inputElement.value !== '') {\n this.checkForCustomValue(this.tempQuery, this.fields);\n return;\n }\n if (this.value && this.value.length && ((this.mode !== 'CheckBox' && !isNullOrUndefined(this.inputElement) && this.inputElement.value.trim() !== '') ||\n this.mode === 'CheckBox' || ((this.keyCode === 8 || this.keyCode === 46) && this.allowFiltering &&\n this.allowCustomValue && this.dataSource instanceof DataManager && this.inputElement.value === ''))) {\n this.refreshSelection();\n }\n this.updateListARIA();\n this.unwireListEvents();\n this.wireListEvents();\n if (!isNullOrUndefined(this.setInitialValue)) {\n this.setInitialValue();\n }\n if (!isNullOrUndefined(this.selectAllAction)) {\n this.selectAllAction();\n }\n if (this.setDynValue) {\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n this.initialValueUpdate();\n this.initialUpdate();\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, this.value, null);\n }\n }\n this.renderPopup();\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.onPopupShown(e);\n }\n };\n MultiSelect.prototype.refreshSelection = function () {\n var value;\n var element;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.list, 'li', 'data-value', value);\n if (element) {\n addClass([element], className);\n if (this.hideSelectedItem && element.previousSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group)\n && (!element.nextElementSibling ||\n element.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n addClass([element.previousElementSibling], className);\n }\n if (this.hideSelectedItem && this.fields.groupBy && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n this.hideGroupItem(value);\n }\n if (this.hideSelectedItem && element.classList.contains(dropDownBaseClasses.focus)) {\n removeClass([element], dropDownBaseClasses.focus);\n var listEle = element.parentElement.querySelectorAll('.' +\n dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n if (listEle.length > 0) {\n addClass([listEle[0]], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n //EJ2-57588 - for this task, we prevent the ul element cloning ( this.ulElement = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n if (!(this.list && this.list.querySelectorAll('.' + dropDownBaseClasses.li).length > 0)) {\n this.l10nUpdate();\n addClass([this.list], dropDownBaseClasses.noData);\n }\n }\n }\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaValue = element.getElementsByClassName('e-check').length;\n if (ariaValue === 0) {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n li: element,\n e: null\n };\n this.notify('updatelist', args);\n }\n }\n }\n }\n }\n this.checkSelectAll();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.hideGroupItem = function (value) {\n var element;\n var element1;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n element1 = element = this.findListElement(this.ulElement, 'li', 'data-value', value);\n var i = 0;\n var j = 0;\n var temp = true;\n var temp1 = true;\n do {\n if (element && element.previousElementSibling\n && (!element.previousElementSibling.classList.contains(HIDE_LIST) &&\n element.previousElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp = false;\n }\n if (!temp || !element || (element.previousElementSibling\n && element.previousElementSibling.classList.contains(dropDownBaseClasses.group))) {\n i = 10;\n }\n else {\n element = element.previousElementSibling;\n }\n if (element1 && element1.nextElementSibling\n && (!element1.nextElementSibling.classList.contains(HIDE_LIST) &&\n element1.nextElementSibling.classList.contains(dropDownBaseClasses.li))) {\n temp1 = false;\n }\n if (!temp1 || !element1 || (element1.nextElementSibling\n && element1.nextElementSibling.classList.contains(dropDownBaseClasses.group))) {\n j = 10;\n }\n else {\n element1 = element1.nextElementSibling;\n }\n } while (i < 10 || j < 10);\n if (temp && temp1 && !element.previousElementSibling.classList.contains(HIDE_LIST)) {\n addClass([element.previousElementSibling], className);\n }\n else if (temp && temp1 && element.previousElementSibling.classList.contains(HIDE_LIST)) {\n removeClass([element.previousElementSibling], className);\n }\n };\n MultiSelect.prototype.getValidLi = function () {\n var liElement = this.ulElement.querySelector('li.' + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')');\n return (!isNullOrUndefined(liElement) ? liElement : this.liCollections[0]);\n };\n MultiSelect.prototype.checkSelectAll = function () {\n var groupItemLength = this.list.querySelectorAll('li.e-list-group-item.e-active').length;\n var listItem = this.list.querySelectorAll('li.e-list-item');\n var searchCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.li).length;\n var searchActiveCount = this.list.querySelectorAll('li.' + dropDownBaseClasses.selected).length;\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n searchActiveCount = searchActiveCount - groupItemLength;\n }\n if ((searchCount === searchActiveCount || searchActiveCount === this.maximumSelectionLength)\n && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'check' });\n }\n else if ((searchCount !== searchActiveCount) && (this.mode === 'CheckBox' && this.showSelectAll)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.enableGroupCheckBox && this.fields.groupBy && !this.enableSelectionOrder) {\n for (var i = 0; i < listItem.length; i++) {\n this.findGroupStart(listItem[i]);\n }\n this.deselectHeader();\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.openClick = function (e) {\n if (!this.openOnClick && this.mode !== 'CheckBox') {\n if (this.targetElement() !== '') {\n this.showPopup();\n }\n else {\n this.hidePopup(e);\n }\n }\n else if (!this.openOnClick && this.mode === 'CheckBox' && !this.isPopupOpen()) {\n this.showPopup();\n }\n };\n MultiSelect.prototype.keyUp = function (e) {\n if (this.mode === 'CheckBox' && !this.openOnClick) {\n var char = String.fromCharCode(e.keyCode);\n var isWordCharacter = char.match(/\\w/);\n if (!isNullOrUndefined(isWordCharacter)) {\n this.isValidKey = true;\n }\n }\n this.isValidKey = (this.isPopupOpen() && e.keyCode === 8) || this.isValidKey;\n this.isValidKey = e.ctrlKey && e.keyCode === 86 ? false : this.isValidKey;\n if (this.isValidKey) {\n this.isValidKey = false;\n this.expandTextbox();\n this.showOverAllClear();\n switch (e.keyCode) {\n default:\n // For filtering works in mobile firefox\n this.search(e);\n }\n }\n };\n /**\n * To filter the multiselect data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n */\n MultiSelect.prototype.filter = function (dataSource, query, fields) {\n this.isFiltered = true;\n this.remoteFilterAction = true;\n this.dataUpdater(dataSource, query, fields);\n };\n MultiSelect.prototype.getQuery = function (query) {\n var filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n if (this.isFiltered) {\n return filterQuery;\n }\n if (this.filterAction) {\n if (this.targetElement() !== null) {\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = this.fields;\n filterQuery.where(!isNullOrUndefined(fields.text) ? fields.text : '', this.filterType, this.targetElement(), this.ignoreCase, this.ignoreAccent);\n }\n }\n return filterQuery;\n }\n else {\n return query ? query : this.query ? this.query : new Query();\n }\n };\n MultiSelect.prototype.dataUpdater = function (dataSource, query, fields) {\n this.isDataFetched = false;\n if (this.targetElement().trim() === '') {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n if (this.backCommand) {\n this.remoteCustomValue = false;\n if (this.allowCustomValue && list.querySelectorAll('li').length == 0 && this.mainData.length > 0) {\n this.mainData = [];\n }\n this.onActionComplete(list, this.mainData);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n if (this.keyCode !== 8) {\n this.focusAtFirstListItem();\n }\n this.notify('reOrder', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', e: this });\n }\n }\n else {\n this.resetList(dataSource, fields, query);\n if (this.allowCustomValue) {\n if (!(dataSource instanceof DataManager)) {\n this.checkForCustomValue(query, fields);\n }\n else {\n this.remoteCustomValue = true;\n this.tempQuery = query;\n }\n }\n }\n this.refreshPopup();\n if (this.mode === 'CheckBox') {\n this.removeFocus();\n }\n };\n MultiSelect.prototype.checkForCustomValue = function (query, fields) {\n var dataChecks = !this.getValueByText(this.inputElement.value, this.ignoreCase);\n if (this.allowCustomValue && dataChecks) {\n var value = this.inputElement.value;\n var field = fields ? fields : this.fields;\n var customData = (!isNullOrUndefined(this.mainData) && this.mainData.length > 0) ?\n this.mainData[0] : this.mainData;\n if (typeof (customData) !== 'string' && typeof (customData) !== 'number' && typeof (customData) !== 'boolean') {\n var dataItem = {};\n setValue(field.text, value, dataItem);\n if (typeof getValue((this.fields.value ? this.fields.value : 'value'), customData)\n === 'number') {\n setValue(field.value, Math.random(), dataItem);\n }\n else {\n setValue(field.value, value, dataItem);\n }\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, dataItem);\n this.resetList(tempData, field, query);\n }\n else {\n var tempData = JSON.parse(JSON.stringify(this.listData));\n tempData.splice(0, 0, this.inputElement.value);\n tempData[0] = (typeof customData === 'number' && !isNaN(parseFloat(tempData[0]))) ?\n parseFloat(tempData[0]) : tempData[0];\n tempData[0] = (typeof customData === 'boolean') ?\n (tempData[0] === 'true' ? true : (tempData[0] === 'false' ? false : tempData[0])) : tempData[0];\n this.resetList(tempData, field);\n }\n }\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.getNgDirective = function () {\n return 'EJS-MULTISELECT';\n };\n MultiSelect.prototype.wrapperClick = function (e) {\n this.setDynValue = false;\n if (!this.enabled) {\n return;\n }\n if (e.target === this.overAllClear) {\n e.preventDefault();\n return;\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n if (!this.readonly) {\n if (e.target && e.target.classList.toString().indexOf(CHIP_CLOSE) !== -1) {\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n return;\n }\n if (!this.isPopupOpen() &&\n (this.openOnClick || (this.showDropDownIcon && e.target && e.target.className === dropdownIcon))) {\n this.showPopup(e);\n }\n else {\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.showOverAllClear();\n this.inputFocus = true;\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n }\n }\n if (!(this.targetElement() && this.targetElement() !== '')) {\n e.preventDefault();\n }\n };\n MultiSelect.prototype.enable = function (state) {\n if (state) {\n this.overAllWrapper.classList.remove(DISABLED);\n this.inputElement.removeAttribute('disabled');\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.ensureAriaDisabled('false');\n }\n else {\n this.overAllWrapper.classList.add(DISABLED);\n this.inputElement.setAttribute('disabled', 'true');\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.ensureAriaDisabled('true');\n }\n if (this.enabled !== state) {\n this.enabled = state;\n }\n this.hidePopup();\n };\n MultiSelect.prototype.onBlurHandler = function (eve, isDocClickFromCheck) {\n var target;\n if (!isNullOrUndefined(eve)) {\n target = eve.relatedTarget;\n }\n if (this.popupObj && document.body.contains(this.popupObj.element) && this.popupObj.element.contains(target)) {\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n else if ((this.floatLabelType === 'Auto' &&\n ((this.overAllWrapper.classList.contains('e-outline')) || (this.overAllWrapper.classList.contains('e-filled'))))) {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n return;\n }\n if (this.floatLabelType === 'Auto' && (this.overAllWrapper.classList.contains('e-outline')) && this.mode === 'CheckBox' &&\n ((isNullOrUndefined(this.value)) || this.value.length === 0)) {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n if (this.mode === 'CheckBox' && Browser.isIE && !isNullOrUndefined(eve) && !isDocClickFromCheck) {\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n return;\n }\n if (this.scrollFocusStatus) {\n if (!isNullOrUndefined(eve)) {\n eve.preventDefault();\n }\n this.inputElement.focus();\n this.scrollFocusStatus = false;\n return;\n }\n this.inputFocus = false;\n this.overAllWrapper.classList.remove(FOCUS);\n if (this.addTagOnBlur) {\n var dataChecks = this.getValueByText(this.inputElement.value, this.ignoreCase, this.ignoreAccent);\n var listLiElement = this.findListElement(this.list, 'li', 'data-value', dataChecks);\n var className = this.hideSelectedItem ? HIDE_LIST : dropDownBaseClasses.selected;\n var allowChipAddition = (listLiElement && !listLiElement.classList.contains(className)) ? true : false;\n if (allowChipAddition) {\n this.updateListSelection(listLiElement, eve);\n if (this.mode === 'Delimiter') {\n this.updateDelimeter(this.delimiterChar);\n }\n }\n }\n this.updateDataList();\n if (this.resetMainList) {\n this.mainList = this.resetMainList;\n this.resetMainList = null;\n }\n this.refreshListItems(null);\n if (this.mode !== 'Box' && this.mode !== 'CheckBox') {\n this.updateDelimView();\n }\n if (this.changeOnBlur) {\n this.updateValueState(eve, this.value, this.tempValues);\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n this.overAllClear.style.display = 'none';\n if (this.isPopupOpen()) {\n this.hidePopup(eve);\n }\n this.makeTextBoxEmpty();\n this.trigger('blur');\n this.focused = true;\n if (Browser.isDevice && this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.removeChipFocus();\n }\n this.removeChipSelection();\n this.refreshInputHight();\n floatLabelBlur(this.overAllWrapper, this.componentWrapper, this.value, this.floatLabelType, this.placeholder);\n this.refreshPlaceHolder();\n if ((this.allowFiltering || (this.enableSelectionOrder === true && this.mode === 'CheckBox'))\n && !isNullOrUndefined(this.mainList)) {\n this.ulElement = this.mainList;\n }\n this.checkPlaceholderSize();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n };\n MultiSelect.prototype.calculateWidth = function () {\n var elementWidth;\n if (this.overAllWrapper) {\n if (!this.showDropDownIcon || this.overAllWrapper.querySelector('.' + 'e-label-top')) {\n elementWidth = this.overAllWrapper.clientWidth - 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight));\n }\n else {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(getComputedStyle(this.dropIcon).marginRight);\n elementWidth = this.overAllWrapper.clientWidth - (downIconWidth + 2 * (parseInt(getComputedStyle(this.inputElement).paddingRight)));\n }\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(elementWidth, this.overAllWrapper, this.getModuleName());\n }\n }\n };\n MultiSelect.prototype.checkPlaceholderSize = function () {\n if (this.showDropDownIcon) {\n var downIconWidth = this.dropIcon.offsetWidth +\n parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n this.setPlaceholderSize(downIconWidth);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.setPlaceholderSize(this.showDropDownIcon ? this.dropIcon.offsetWidth : 0);\n }\n }\n };\n MultiSelect.prototype.setPlaceholderSize = function (downIconWidth) {\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n if (this.dropIcon.offsetWidth !== 0) {\n this.searchWrapper.style.width = ('calc(100% - ' + (downIconWidth + 10)) + 'px';\n }\n else {\n addClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n }\n else if (!isNullOrUndefined(this.value)) {\n this.searchWrapper.removeAttribute('style');\n removeClass([this.searchWrapper], CUSTOM_WIDTH);\n }\n };\n MultiSelect.prototype.refreshInputHight = function () {\n if (!isNullOrUndefined(this.searchWrapper)) {\n if ((!this.value || !this.value.length) && (isNullOrUndefined(this.text) || this.text === '')) {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n else {\n this.searchWrapper.classList.add(ZERO_SIZE);\n }\n }\n };\n MultiSelect.prototype.validateValues = function (newValue, oldValue) {\n return JSON.stringify(newValue.slice().sort()) !== JSON.stringify(oldValue.slice().sort());\n };\n MultiSelect.prototype.updateValueState = function (event, newVal, oldVal) {\n var newValue = newVal ? newVal : [];\n var oldValue = oldVal ? oldVal : [];\n if (this.initStatus && this.validateValues(newValue, oldValue)) {\n var eventArgs = {\n e: event,\n oldValue: oldVal,\n value: newVal,\n isInteracted: event ? true : false,\n element: this.element,\n event: event\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.updateTempValue();\n if (!this.changeOnBlur) {\n this.dispatchEvent(this.hiddenElement, 'change');\n }\n }\n };\n MultiSelect.prototype.updateTempValue = function () {\n if (!this.value) {\n this.tempValues = this.value;\n }\n else {\n this.tempValues = this.value.slice();\n }\n };\n MultiSelect.prototype.updateAriaActiveDescendant = function () {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.inputElement, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n };\n MultiSelect.prototype.getPagingCount = function () {\n var height = this.list.classList.contains(dropDownBaseClasses.noData) ? null :\n getComputedStyle(this.getItems()[0], null).getPropertyValue('height');\n return Math.round(this.list.offsetHeight / parseInt(height, 10));\n };\n MultiSelect.prototype.pageUpSelection = function (steps) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps >= 0 ? collection[steps + 1] : collection[0];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.pageDownSelection = function (steps) {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var list = this.getItems();\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n var previousItem = steps <= collection.length ? collection[steps - 1] : collection[collection.length - 1];\n this.addListFocus(previousItem);\n this.scrollBottom(previousItem, this.getIndexByValue(previousItem.getAttribute('data-value')));\n };\n MultiSelect.prototype.getItems = function () {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n return this.ulElement && this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li).length > 0 ?\n this.ulElement.querySelectorAll('.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')') : [];\n };\n MultiSelect.prototype.focusInHandler = function (e) {\n var _this = this;\n if (this.enabled) {\n this.showOverAllClear();\n this.inputFocus = true;\n if (this.value && this.value.length) {\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n if (this.mode !== 'CheckBox') {\n this.viewWrapper.style.display = 'none';\n }\n }\n if (this.mode !== 'CheckBox') {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n this.checkPlaceholderSize();\n if (this.focused) {\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n this.focused = false;\n }\n if (!this.overAllWrapper.classList.contains(FOCUS)) {\n this.overAllWrapper.classList.add(FOCUS);\n }\n floatLabelFocus(this.overAllWrapper, this.componentWrapper);\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n setTimeout(function () {\n _this.calculateWidth();\n }, 150);\n return true;\n }\n else {\n return false;\n }\n };\n MultiSelect.prototype.showDelimWrapper = function () {\n if (this.mode === 'CheckBox') {\n this.viewWrapper.style.display = '';\n }\n else {\n this.delimiterWrapper.style.display = '';\n }\n this.componentWrapper.classList.add(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.hideDelimWrapper = function () {\n this.delimiterWrapper.style.display = 'none';\n this.componentWrapper.classList.remove(DELIMITER_VIEW_WRAPPER);\n };\n MultiSelect.prototype.expandTextbox = function () {\n var size = 5;\n if (this.placeholder) {\n size = size > this.inputElement.placeholder.length ? size : this.inputElement.placeholder.length;\n }\n if (this.inputElement.value.length > size) {\n this.inputElement.size = this.inputElement.value.length;\n }\n else {\n this.inputElement.size = size;\n }\n };\n MultiSelect.prototype.isPopupOpen = function () {\n return ((this.popupWrapper !== null) && (this.popupWrapper.parentElement !== null));\n };\n MultiSelect.prototype.refreshPopup = function () {\n if (this.popupObj && this.mobFilter) {\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n this.popupObj.refreshPosition(this.overAllWrapper);\n this.popupObj.resolveCollision();\n }\n };\n MultiSelect.prototype.checkTextLength = function () {\n return this.targetElement().length < 1;\n };\n MultiSelect.prototype.popupKeyActions = function (e) {\n switch (e.keyCode) {\n case 38:\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n e.preventDefault();\n break;\n case 40:\n if (!this.isPopupOpen()) {\n this.showPopup(e);\n e.preventDefault();\n }\n break;\n }\n };\n MultiSelect.prototype.updateAriaAttribute = function () {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(focusedItem)) {\n this.inputElement.setAttribute('aria-activedescendant', focusedItem.id);\n if (this.allowFiltering) {\n var filterInput = this.popupWrapper.querySelector('.' + FILTERINPUT);\n filterInput && filterInput.setAttribute('aria-activedescendant', focusedItem.id);\n }\n else if (this.mode == \"CheckBox\") {\n this.overAllWrapper.setAttribute('aria-activedescendant', focusedItem.id);\n }\n }\n };\n MultiSelect.prototype.homeNavigation = function (isHome) {\n this.removeFocus();\n var scrollEle = this.ulElement.querySelectorAll('li.' + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (scrollEle.length > 0) {\n var element = scrollEle[(isHome) ? 0 : (scrollEle.length - 1)];\n element.classList.add(dropDownBaseClasses.focus);\n this.scrollBottom(element);\n this.updateAriaActiveDescendant();\n }\n };\n MultiSelect.prototype.onKeyDown = function (e) {\n if (this.readonly || !this.enabled && this.mode !== 'CheckBox') {\n return;\n }\n this.keyCode = e.keyCode;\n this.keyDownStatus = true;\n if (e.keyCode > 111 && e.keyCode < 124) {\n return;\n }\n if (e.altKey) {\n this.popupKeyActions(e);\n return;\n }\n else if (this.isPopupOpen()) {\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n var activeIndex = void 0;\n switch (e.keyCode) {\n case 36:\n case 35:\n this.homeNavigation((e.keyCode === 36) ? true : false);\n break;\n case 33:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageUpSelection(activeIndex - this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 34:\n e.preventDefault();\n if (focusedItem) {\n this.getIndexByValue(focusedItem.getAttribute('data-value'));\n this.pageDownSelection(activeIndex + this.getPagingCount());\n this.updateAriaAttribute();\n }\n return;\n case 38:\n this.arrowUp(e);\n break;\n case 40:\n this.arrowDown(e);\n break;\n case 27:\n e.preventDefault();\n this.hidePopup(e);\n if (this.mode === 'CheckBox') {\n this.inputElement.focus();\n }\n return;\n case 13:\n e.preventDefault();\n if (this.mode !== 'CheckBox') {\n this.selectByKey(e);\n }\n this.checkPlaceholderSize();\n return;\n case 32:\n this.spaceKeySelection(e);\n return;\n case 9:\n e.preventDefault();\n this.hidePopup(e);\n this.inputElement.focus();\n this.overAllWrapper.classList.add(FOCUS);\n }\n }\n else {\n switch (e.keyCode) {\n case 13:\n case 9:\n case 16:\n case 17:\n case 20:\n return;\n case 40:\n if (this.openOnClick) {\n this.showPopup();\n }\n break;\n case 27:\n e.preventDefault();\n this.escapeAction();\n return;\n }\n }\n if (this.checkTextLength()) {\n this.keyNavigation(e);\n }\n if (this.mode === 'CheckBox' && this.enableSelectionOrder) {\n if (this.allowFiltering) {\n this.previousFilterText = this.targetElement();\n }\n this.checkBackCommand(e);\n }\n this.expandTextbox();\n if (!(this.mode === 'CheckBox' && this.showSelectAll)) {\n this.refreshPopup();\n }\n };\n MultiSelect.prototype.arrowDown = function (e) {\n e.preventDefault();\n this.moveByList(1);\n this.keyAction = true;\n if (document.activeElement.classList.contains(FILTERINPUT)\n || (this.mode === 'CheckBox' && !this.allowFiltering && document.activeElement !== this.list)) {\n EventHandler.add(this.list, 'keydown', this.onKeyDown, this);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.arrowUp = function (e) {\n e.preventDefault();\n this.keyAction = true;\n var list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n list = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var focuseElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n this.focusFirstListItem = !isNullOrUndefined(this.liCollections[0]) ? this.liCollections[0].classList.contains('e-item-focus') : false;\n var index = Array.prototype.slice.call(list).indexOf(focuseElem);\n if (index <= 0 && (this.mode === 'CheckBox' && this.allowFiltering)) {\n this.keyAction = false;\n this.notify('inputFocus', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'focus' });\n }\n this.moveByList(-1);\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.spaceKeySelection = function (e) {\n if (this.mode === 'CheckBox') {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (!isNullOrUndefined(li) || (selectAllParent && selectAllParent.classList.contains('e-item-focus'))) {\n e.preventDefault();\n this.keyAction = true;\n }\n this.selectByKey(e);\n if (this.keyAction) {\n var li_1 = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n if (!isNullOrUndefined(li_1) && selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n li_1.classList.remove('e-item-focus');\n }\n }\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.checkBackCommand = function (e) {\n if (e.keyCode === 8 && this.allowFiltering ? this.targetElement() !== this.previousFilterText : this.targetElement() === '') {\n this.backCommand = false;\n }\n else {\n this.backCommand = true;\n }\n };\n MultiSelect.prototype.keyNavigation = function (e) {\n if ((this.mode !== 'Delimiter' && this.mode !== 'CheckBox') && this.value && this.value.length) {\n switch (e.keyCode) {\n case 37: //left arrow\n e.preventDefault();\n this.moveBy(-1, e);\n break;\n case 39: //right arrow\n e.preventDefault();\n this.moveBy(1, e);\n break;\n case 8:\n this.removelastSelection(e);\n break;\n case 46: //del\n this.removeSelectedChip(e);\n break;\n }\n }\n else if (e.keyCode === 8 && this.mode === 'Delimiter') {\n if (this.value && this.value.length) {\n e.preventDefault();\n var temp = this.value[this.value.length - 1];\n this.removeValue(temp, e);\n this.updateDelimeter(this.delimiterChar, e);\n this.focusAtLastListItem(temp);\n }\n }\n };\n MultiSelect.prototype.selectByKey = function (e) {\n this.removeChipSelection();\n this.selectListByKey(e);\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n };\n MultiSelect.prototype.escapeAction = function () {\n var temp = this.tempValues ? this.tempValues.slice() : [];\n if (this.value && this.validateValues(this.value, temp)) {\n if (this.mode !== 'CheckBox') {\n this.value = temp;\n this.initialValueUpdate();\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.chipCollectionWrapper.style.display = '';\n }\n else {\n this.showDelimWrapper();\n }\n this.refreshPlaceHolder();\n if (this.value.length) {\n this.showOverAllClear();\n }\n else {\n this.hideOverAllClear();\n }\n }\n this.makeTextBoxEmpty();\n };\n MultiSelect.prototype.scrollBottom = function (selectedLI, activeIndex) {\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextBottom > currentOffset) {\n this.list.scrollTop = nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = nextOffset;\n }\n };\n MultiSelect.prototype.scrollTop = function (selectedLI, activeIndex) {\n var nextOffset = selectedLI.offsetTop - this.list.scrollTop;\n nextOffset = this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLI.offsetTop + selectedLI.offsetHeight - this.list.scrollTop);\n if (activeIndex === 0) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0) {\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = selectedLI.offsetTop - (this.fields.groupBy && !isUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n };\n MultiSelect.prototype.selectListByKey = function (e) {\n var li = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var limit = this.value && this.value.length ? this.value.length : 0;\n var target;\n if (li !== null) {\n e.preventDefault();\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (this.isValidLI(li) && limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.addListFocus(li);\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n this.updateDelimeter(this.delimiterChar, e);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n if (this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n target = li.firstElementChild.lastElementChild;\n this.findGroupStart(target);\n this.deselectHeader();\n }\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.makeTextBoxEmpty();\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(li.textContent);\n }\n if (!this.changeOnBlur) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.refreshPopup();\n }\n else {\n if (!this.isValidLI(li) && limit < this.maximumSelectionLength) {\n target = li.firstElementChild.lastElementChild;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e, li);\n }\n else {\n this.selectAllItem(true, e, li);\n }\n }\n }\n this.refreshSelection();\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n }\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (selectAllParent && selectAllParent.classList.contains('e-item-focus')) {\n var selectAllCheckBox = selectAllParent.childNodes[0];\n if (!selectAllCheckBox.classList.contains('e-check')) {\n selectAllCheckBox.classList.add('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(true, e, li);\n }\n else {\n selectAllCheckBox.classList.remove('e-check');\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'check',\n name: 'checkSelectAll'\n };\n this.notify('checkSelectAll', args);\n this.selectAllItem(false, e, li);\n }\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshListItems = function (data) {\n if ((this.allowFiltering || (this.mode === 'CheckBox' && this.enableSelectionOrder === true)\n || this.allowCustomValue) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n this.focusAtLastListItem(data);\n if (this.value && this.value.length) {\n this.refreshSelection();\n }\n }\n else if (!isNullOrUndefined(this.fields.groupBy) && this.value && this.value.length) {\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.removeSelectedChip = function (e) {\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n var temp;\n if (selectedElem !== null) {\n if (!isNullOrUndefined(this.value)) {\n this.tempValues = this.value.slice();\n }\n temp = selectedElem.nextElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n this.removeValue(selectedElem.getAttribute('data-value'), e);\n this.makeTextBoxEmpty();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n this.checkPlaceholderSize();\n };\n MultiSelect.prototype.moveByTop = function (state) {\n var elements = this.list.querySelectorAll('li.' + dropDownBaseClasses.li);\n var index;\n if (elements.length > 1) {\n this.removeFocus();\n index = state ? 0 : (elements.length - 1);\n this.addListFocus(elements[index]);\n this.scrollBottom(elements[index], index);\n }\n this.updateAriaAttribute();\n };\n MultiSelect.prototype.clickHandler = function (e) {\n var targetElement = e.target;\n var filterInputClassName = targetElement.className;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if ((filterInputClassName === 'e-input-filter e-input' || filterInputClassName === 'e-input-group e-control-wrapper e-input-focus') && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n };\n MultiSelect.prototype.moveByList = function (position) {\n if (this.list) {\n var elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n elements = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ',li.' + dropDownBaseClasses.group\n + ':not(.' + HIDE_LIST + ')' + ':not(.e-reorder-hide)');\n }\n var selectedElem = this.list.querySelector('li.' + dropDownBaseClasses.focus);\n var temp = -1;\n var selectAllParent = document.getElementsByClassName('e-selectall-parent')[0];\n if (this.mode === 'CheckBox' && this.showSelectAll && position == 1 && !isNullOrUndefined(selectAllParent) && !selectAllParent.classList.contains('e-item-focus') && this.list.getElementsByClassName('e-item-focus').length == 0 && this.liCollections.length > 1) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (!selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n else if (elements.length) {\n if (this.mode === 'CheckBox' && this.showSelectAll && !isNullOrUndefined(selectAllParent && position == -1)) {\n if (!this.focusFirstListItem && selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.remove('e-item-focus');\n }\n else if (this.focusFirstListItem && !selectAllParent.classList.contains('e-item-focus')) {\n selectAllParent.classList.add('e-item-focus');\n }\n }\n for (var index = 0; index < elements.length; index++) {\n if (elements[index] === selectedElem) {\n temp = index;\n break;\n }\n }\n if (position > 0) {\n if (temp < (elements.length - 1)) {\n this.removeFocus();\n this.addListFocus(elements[++temp]);\n this.updateCheck(elements[temp]);\n this.scrollBottom(elements[temp], temp);\n }\n }\n else {\n if (temp > 0) {\n this.removeFocus();\n this.addListFocus(elements[--temp]);\n this.updateCheck(elements[temp]);\n this.scrollTop(elements[temp], temp);\n }\n }\n }\n }\n };\n MultiSelect.prototype.updateCheck = function (element) {\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox &&\n !isNullOrUndefined(this.fields.groupBy)) {\n var checkElement = element.firstElementChild.lastElementChild;\n if (checkElement.classList.contains('e-check')) {\n element.classList.add('e-active');\n }\n else {\n element.classList.remove('e-active');\n }\n }\n };\n MultiSelect.prototype.moveBy = function (position, e) {\n var temp;\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP);\n var selectedElem = this.chipCollectionWrapper.querySelector('span.' + CHIP_SELECTED);\n if (selectedElem === null) {\n if (position < 0) {\n this.addChipSelection(elements[elements.length - 1], e);\n }\n }\n else {\n if (position < 0) {\n temp = selectedElem.previousElementSibling;\n if (temp !== null) {\n this.removeChipSelection();\n this.addChipSelection(temp, e);\n }\n }\n else {\n temp = selectedElem.nextElementSibling;\n this.removeChipSelection();\n if (temp !== null) {\n this.addChipSelection(temp, e);\n }\n }\n }\n };\n MultiSelect.prototype.chipClick = function (e) {\n if (this.enabled) {\n var elem = closest(e.target, '.' + CHIP);\n this.removeChipSelection();\n this.addChipSelection(elem, e);\n }\n };\n MultiSelect.prototype.removeChipSelection = function () {\n if (this.chipCollectionWrapper) {\n this.removeChipFocus();\n }\n };\n MultiSelect.prototype.addChipSelection = function (element, e) {\n addClass([element], CHIP_SELECTED);\n this.trigger('chipSelection', e);\n };\n MultiSelect.prototype.onChipRemove = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n if (this.enabled && !this.readonly) {\n var element = e.target.parentElement;\n var customVal = element.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n if (this.isPopupOpen() && this.mode !== 'CheckBox') {\n this.hidePopup(e);\n }\n if (!this.inputFocus) {\n this.inputElement.focus();\n }\n this.removeValue(value, e);\n if (isNullOrUndefined(this.findListElement(this.list, 'li', 'data-value', value)) && this.mainList && this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.updateDelimeter(this.delimiterChar, e);\n if (this.placeholder && this.floatLabelType === 'Never') {\n this.makeTextBoxEmpty();\n this.checkPlaceholderSize();\n }\n else {\n this.inputElement.value = '';\n }\n e.preventDefault();\n }\n };\n MultiSelect.prototype.makeTextBoxEmpty = function () {\n this.inputElement.value = '';\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.refreshPlaceHolder = function () {\n if (this.placeholder && this.floatLabelType === 'Never') {\n if ((this.value && this.value.length) || (!isNullOrUndefined(this.text) && this.text !== '')) {\n this.inputElement.placeholder = '';\n }\n else {\n this.inputElement.placeholder = encodePlaceholder(this.placeholder);\n }\n }\n else {\n this.setFloatLabelType();\n }\n this.expandTextbox();\n };\n MultiSelect.prototype.removeAllItems = function (value, eve, isClearAll, element, mainElement) {\n var index = this.value.indexOf(value);\n var removeVal = this.value.slice(0);\n removeVal.splice(index, 1);\n this.setProperties({ value: [].concat([], removeVal) }, true);\n element.setAttribute('aria-selected', 'false');\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n removeClass([element], className);\n this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox', li: element,\n e: this, index: index\n });\n this.invokeCheckboxSelection(element, eve, isClearAll);\n this.updateMainList(true, value, mainElement);\n this.updateChipStatus();\n };\n MultiSelect.prototype.invokeCheckboxSelection = function (element, eve, isClearAll) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: eve });\n this.updateAriaActiveDescendant();\n if ((this.value && this.value.length !== this.mainData.length)\n && (this.mode === 'CheckBox' && this.showSelectAll && !(this.isSelectAll || isClearAll))) {\n this.notify('checkSelectAll', {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n value: 'uncheck'\n });\n }\n };\n MultiSelect.prototype.removeValue = function (value, eve, length, isClearAll) {\n var _this = this;\n var index = this.value.indexOf(this.getFormattedValue(value));\n if (index === -1 && this.allowCustomValue && !isNullOrUndefined(value)) {\n index = this.value.indexOf(value.toString());\n }\n var targetEle = eve && eve.target;\n isClearAll = (isClearAll || targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (index !== -1) {\n var element_1 = this.findListElement(this.list, 'li', 'data-value', value);\n var val_1 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element_1,\n itemData: val_1,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('removing', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n _this.removeIndex++;\n }\n else {\n var removeVal = _this.value.slice(0);\n removeVal.splice(index, 1);\n _this.setProperties({ value: [].concat([], removeVal) }, true);\n if (element_1 !== null) {\n var hideElement = _this.findListElement(_this.mainList, 'li', 'data-value', value);\n element_1.setAttribute('aria-selected', 'false');\n removeClass([element_1], className);\n if (hideElement) {\n hideElement.setAttribute('aria-selected', 'false');\n removeClass([element_1, hideElement], className);\n }\n _this.notify('activeList', {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox', li: element_1,\n e: _this, index: index\n });\n _this.invokeCheckboxSelection(element_1, eve, isClearAll);\n }\n if (_this.hideSelectedItem && _this.fields.groupBy && element_1) {\n _this.hideGroupItem(value);\n }\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox' &&\n _this.isPopupOpen()) {\n _super.prototype.scrollStop.call(_this);\n }\n _this.updateMainList(true, value);\n _this.removeChip(value);\n _this.updateChipStatus();\n var limit = _this.value && _this.value.length ? _this.value.length : 0;\n if (limit < _this.maximumSelectionLength) {\n var collection = _this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n _this.trigger('removed', eventArgs);\n var targetEle_1 = eve && eve.currentTarget;\n var isSelectAll = (targetEle_1 && targetEle_1.classList.contains('e-selectall-parent')) ? true : null;\n if (!_this.changeOnBlur && !isClearAll && (eve && length && !isSelectAll)) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n if (length) {\n _this.selectAllEventData.push(val_1);\n _this.selectAllEventEle.push(element_1);\n }\n if (length === 1) {\n if (!_this.changeOnBlur) {\n _this.updateValueState(eve, _this.value, _this.tempValues);\n }\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: false\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n _this.selectAllEventEle = [];\n }\n if (isClearAll && (length === 1 || length === null)) {\n _this.clearAllCallback(eve, isClearAll);\n }\n }\n });\n }\n };\n MultiSelect.prototype.updateMainList = function (state, value, mainElement) {\n if (this.allowFiltering || this.mode === 'CheckBox') {\n var element2 = mainElement ? mainElement :\n this.findListElement(this.mainList, 'li', 'data-value', value);\n if (element2) {\n if (state) {\n element2.setAttribute('aria-selected', 'false');\n removeClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n removeClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n else {\n element2.setAttribute('aria-selected', 'true');\n addClass([element2], this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected);\n if (this.mode === 'CheckBox') {\n addClass([element2.firstElementChild.lastElementChild], 'e-check');\n }\n }\n }\n }\n };\n MultiSelect.prototype.removeChip = function (value) {\n if (this.chipCollectionWrapper) {\n var element = this.findListElement(this.chipCollectionWrapper, 'span', 'data-value', value);\n if (element) {\n remove(element);\n }\n }\n };\n MultiSelect.prototype.setWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.overAllWrapper.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.overAllWrapper.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n MultiSelect.prototype.updateChipStatus = function () {\n if (this.value && this.value.length) {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n (this.chipCollectionWrapper.style.display = '');\n }\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n this.showOverAllClear();\n }\n else {\n if (!isNullOrUndefined(this.chipCollectionWrapper)) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.delimiterWrapper)) {\n (this.delimiterWrapper.style.display = 'none');\n }\n this.hideOverAllClear();\n }\n };\n MultiSelect.prototype.addValue = function (value, text, eve) {\n if (!this.value) {\n this.value = [];\n }\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.removeFocus();\n if (element) {\n this.addListFocus(element);\n this.addListSelection(element);\n }\n if (this.mode !== 'Delimiter' && this.mode !== 'CheckBox') {\n this.addChip(text, value, eve);\n }\n if (this.hideSelectedItem && this.fields.groupBy) {\n this.hideGroupItem(value);\n }\n this.updateChipStatus();\n this.checkMaxSelection();\n };\n MultiSelect.prototype.checkMaxSelection = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit === this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.dispatchSelect = function (value, eve, element, isNotTrigger, length) {\n var _this = this;\n var list = this.listData;\n if (this.initStatus && !isNotTrigger) {\n var val_2 = this.getDataByValue(value);\n var eventArgs = {\n e: eve,\n item: element,\n itemData: val_2,\n isInteracted: eve ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (length) {\n _this.selectAllEventData.push(val_2);\n _this.selectAllEventEle.push(element);\n }\n if (length === 1) {\n var args = {\n event: eve,\n items: _this.selectAllEventEle,\n itemData: _this.selectAllEventData,\n isInteracted: eve ? true : false,\n isChecked: true\n };\n _this.trigger('selectedAll', args);\n _this.selectAllEventData = [];\n }\n if (_this.allowCustomValue && _this.isServerRendered && _this.listData !== list) {\n _this.listData = list;\n }\n _this.updateListSelectEventCallback(value, element, eve);\n if (_this.hideSelectedItem && _this.fixedHeaderElement && _this.fields.groupBy && _this.mode !== 'CheckBox') {\n _super.prototype.scrollStop.call(_this);\n }\n }\n });\n }\n };\n MultiSelect.prototype.addChip = function (text, value, e) {\n if (this.chipCollectionWrapper) {\n this.getChip(text, value, e);\n }\n };\n MultiSelect.prototype.removeChipFocus = function () {\n var elements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP + '.' + CHIP_SELECTED);\n removeClass(elements, CHIP_SELECTED);\n if (Browser.isDevice) {\n var closeElements = this.chipCollectionWrapper.querySelectorAll('span.' + CHIP_CLOSE.split(' ')[0]);\n for (var index = 0; index < closeElements.length; index++) {\n closeElements[index].style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.onMobileChipInteraction = function (e) {\n var chipElem = closest(e.target, '.' + CHIP);\n var chipClose = chipElem.querySelector('span.' + CHIP_CLOSE.split(' ')[0]);\n if (this.enabled && !this.readonly) {\n if (!chipElem.classList.contains(CHIP_SELECTED)) {\n this.removeChipFocus();\n chipClose.style.display = '';\n chipElem.classList.add(CHIP_SELECTED);\n }\n this.refreshPopup();\n e.preventDefault();\n }\n };\n MultiSelect.prototype.multiCompiler = function (multiselectTemplate) {\n var checkTemplate = false;\n if (typeof multiselectTemplate !== 'function' && multiselectTemplate) {\n try {\n checkTemplate = (selectAll(multiselectTemplate, document).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n MultiSelect.prototype.encodeHtmlEntities = function (input) {\n return input.replace(/[\\u00A0-\\u9999<>&]/g, function (match) {\n return \"&#\" + match.charCodeAt(0) + \";\";\n });\n };\n MultiSelect.prototype.getChip = function (data, value, e) {\n var _this = this;\n var itemData = { text: value, value: value };\n var chip = this.createElement('span', {\n className: CHIP,\n attrs: { 'data-value': value, 'title': data }\n });\n var compiledString;\n var chipContent = this.createElement('span', { className: CHIP_CONTENT });\n var chipClose = this.createElement('span', { className: CHIP_CLOSE });\n if (this.mainData) {\n itemData = this.getDataByValue(value);\n }\n if (this.valueTemplate && !isNullOrUndefined(itemData)) {\n var valuecheck = this.multiCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(select(this.valueTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line\n var valueCompTemp = compiledString(itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, chipContent);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, chipContent);\n }\n this.renderReactTemplates();\n }\n else if (this.enableHtmlSanitizer) {\n chipContent.innerText = data;\n }\n else {\n chipContent.innerHTML = this.encodeHtmlEntities(data);\n }\n chip.appendChild(chipContent);\n var eventArgs = {\n isInteracted: e ? true : false,\n itemData: itemData,\n e: e,\n setClass: function (classes) {\n addClass([chip], classes);\n },\n cancel: false\n };\n this.isPreventChange = this.isAngular && this.preventChange;\n this.trigger('tagging', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (Browser.isDevice) {\n chip.classList.add(MOBILE_CHIP);\n append([chipClose], chip);\n chipClose.style.display = 'none';\n EventHandler.add(chip, 'click', _this.onMobileChipInteraction, _this);\n }\n else {\n EventHandler.add(chip, 'mousedown', _this.chipClick, _this);\n if (_this.showClearButton) {\n chip.appendChild(chipClose);\n }\n }\n EventHandler.add(chipClose, 'mousedown', _this.onChipRemove, _this);\n _this.chipCollectionWrapper.appendChild(chip);\n if (!_this.changeOnBlur && e) {\n _this.updateValueState(e, _this.value, _this.tempValues);\n }\n }\n });\n };\n MultiSelect.prototype.calcPopupWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = (this.componentWrapper.offsetWidth) * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n MultiSelect.prototype.mouseIn = function () {\n if (this.enabled && !this.readonly) {\n this.showOverAllClear();\n }\n };\n MultiSelect.prototype.mouseOut = function () {\n if (!this.inputFocus) {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.listOption = function (dataSource, fields) {\n var iconCss = isNullOrUndefined(fields.iconCss) ? false : true;\n var fieldProperty = isNullOrUndefined(fields.properties) ? fields :\n fields.properties;\n this.listCurrentOptions = (fields.text !== null || fields.value !== null) ? {\n fields: fieldProperty, showIcon: iconCss, ariaAttributes: { groupItemRole: 'presentation' }\n } : { fields: { value: 'text' } };\n extend(this.listCurrentOptions, this.listCurrentOptions, fields, true);\n if (this.mode === 'CheckBox') {\n this.notify('listoption', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', dataSource: dataSource, fieldProperty: fieldProperty });\n }\n return this.listCurrentOptions;\n };\n MultiSelect.prototype.renderPopup = function () {\n var _this = this;\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n if (!this.popupObj) {\n if (!isNullOrUndefined(this.popupWrapper)) {\n document.body.appendChild(this.popupWrapper);\n var checkboxFilter = this.popupWrapper.querySelector('.' + FILTERPARENT);\n if (this.mode === 'CheckBox' && !this.allowFiltering && checkboxFilter && this.filterParent) {\n checkboxFilter.remove();\n this.filterParent = null;\n }\n var overAllHeight = parseInt(this.popupHeight, 10);\n this.popupWrapper.style.visibility = 'hidden';\n if (this.headerTemplate) {\n this.setHeaderTemplate();\n overAllHeight -= this.header.offsetHeight;\n }\n append([this.list], this.popupWrapper);\n if (this.footerTemplate) {\n this.setFooterTemplate();\n overAllHeight -= this.footer.offsetHeight;\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight -= this.selectAllHeight;\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll && (!this.headerTemplate && !this.footerTemplate)) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n }\n else if (this.mode === 'CheckBox' && !this.showSelectAll) {\n this.notify('selectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n overAllHeight = parseInt(this.popupHeight, 10);\n if (this.headerTemplate && this.header) {\n overAllHeight -= this.header.offsetHeight;\n }\n if (this.footerTemplate && this.footer) {\n overAllHeight -= this.footer.offsetHeight;\n }\n }\n if (this.mode === 'CheckBox') {\n var args = {\n module: 'CheckBoxSelection',\n enable: this.mode === 'CheckBox',\n popupElement: this.popupWrapper\n };\n if (this.allowFiltering) {\n this.notify('searchBox', args);\n overAllHeight -= this.searchBoxHeight;\n }\n addClass([this.popupWrapper], 'e-checkbox');\n }\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.calcPopupWidth(), targetType: 'relative',\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n relateTo: this.overAllWrapper,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: 1,\n enableRtl: this.enableRtl, zIndex: this.zIndex,\n close: function () {\n if (_this.popupObj.element.parentElement) {\n _this.popupObj.unwireScrollEvents();\n // For restrict the page scrolling in safari browser\n var checkboxFilterInput = _this.popupWrapper.querySelector('.' + FILTERINPUT);\n if (_this.mode === 'CheckBox' && checkboxFilterInput && document.activeElement === checkboxFilterInput) {\n checkboxFilterInput.blur();\n }\n detach(_this.popupObj.element);\n }\n },\n open: function () {\n _this.popupObj.resolveCollision();\n if (!_this.isFirstClick) {\n var ulElement = _this.list.querySelector('ul');\n if (ulElement) {\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.mainList = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n }\n }\n _this.isFirstClick = true;\n }\n _this.popupObj.wireScrollEvents();\n if (!(_this.mode !== 'CheckBox' && (_this.allowFiltering || _this.allowCustomValue) &&\n _this.targetElement().trim() !== '')) {\n _this.loadTemplate();\n }\n _this.setScrollPosition();\n if (_this.allowFiltering) {\n _this.notify('inputFocus', {\n module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'focus'\n });\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n if (this.mode === 'CheckBox' && Browser.isDevice && this.allowFiltering) {\n this.notify('deviceSearchBox', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox' });\n }\n this.popupObj.close();\n this.popupWrapper.style.visibility = '';\n }\n }\n };\n MultiSelect.prototype.setHeaderTemplate = function () {\n var compiledString;\n if (this.header) {\n this.header.remove();\n }\n this.header = this.createElement('div');\n addClass([this.header], HEADER);\n var headercheck = this.multiCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (elements && elements.length > 0) {\n append(elements, this.header);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n prepend([this.header], this.popupWrapper);\n }\n else {\n append([this.header], this.popupWrapper);\n }\n EventHandler.add(this.header, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.setFooterTemplate = function () {\n var compiledString;\n if (this.footer) {\n this.footer.remove();\n }\n this.footer = this.createElement('div');\n addClass([this.footer], FOOTER);\n var footercheck = this.multiCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line\n var elements = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (elements && elements.length > 0) {\n append(elements, this.footer);\n }\n append([this.footer], this.popupWrapper);\n EventHandler.add(this.footer, 'mousedown', this.onListMouseDown, this);\n };\n MultiSelect.prototype.clearAll = function (e) {\n if (this.enabled && !this.readonly) {\n var temp = void 0;\n if (this.value && this.value.length > 0) {\n var liElement = this.list && this.list.querySelectorAll('li.e-list-item');\n if (liElement && liElement.length > 0) {\n this.selectAllItems(false, e);\n }\n else {\n this.removeIndex = 0;\n for (temp = this.value[this.removeIndex]; this.removeIndex < this.value.length; temp = this.value[this.removeIndex]) {\n this.removeValue(temp, e, null, true);\n }\n }\n this.selectedElementID = null;\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n else {\n this.clearAllCallback(e);\n }\n }\n };\n MultiSelect.prototype.clearAllCallback = function (e, isClearAll) {\n var tempValues = this.value ? this.value.slice() : [];\n if (this.mainList && this.listData && ((this.allowFiltering && this.mode !== 'CheckBox') || this.allowCustomValue)) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.focusAtFirstListItem();\n this.updateDelimeter(this.delimiterChar, e);\n if (this.mode !== 'Box' && (!this.inputFocus || this.mode === 'CheckBox')) {\n this.updateDelimView();\n }\n if (this.inputElement.value !== '') {\n this.makeTextBoxEmpty();\n this.search(null);\n }\n this.checkPlaceholderSize();\n if (this.isPopupOpen()) {\n this.refreshPopup();\n }\n if (!this.inputFocus) {\n if (this.changeOnBlur) {\n this.updateValueState(e, this.value, tempValues);\n }\n if (this.mode !== 'CheckBox') {\n this.inputElement.focus();\n }\n }\n if (this.mode === 'CheckBox') {\n this.refreshPlaceHolder();\n this.refreshInputHight();\n if (this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n }\n if (!this.changeOnBlur && isClearAll && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.updateValueState(e, this.value, this.tempValues);\n }\n if (this.mode === 'CheckBox' && this.enableGroupCheckBox && !isNullOrUndefined(this.fields.groupBy)) {\n this.updateListItems(this.list.querySelectorAll('li.e-list-item'), this.mainList.querySelectorAll('li.e-list-item'));\n }\n e.preventDefault();\n };\n MultiSelect.prototype.windowResize = function () {\n this.refreshPopup();\n if ((!this.inputFocus || this.mode === 'CheckBox') && this.viewWrapper && this.viewWrapper.parentElement) {\n this.updateDelimView();\n }\n };\n MultiSelect.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var textVal = (this.element.tagName === this.getNgDirective()) ?\n null : this.element.getAttribute('data-initial-value');\n this.text = textVal;\n }\n };\n MultiSelect.prototype.wireEvent = function () {\n EventHandler.add(this.componentWrapper, 'mousedown', this.wrapperClick, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n EventHandler.add(this.inputElement, 'focus', this.focusInHandler, this);\n EventHandler.add(this.inputElement, 'keydown', this.onKeyDown, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyUp, this);\n if (this.mode !== 'CheckBox') {\n EventHandler.add(this.inputElement, 'input', this.onInput, this);\n }\n EventHandler.add(this.inputElement, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.componentWrapper, 'mouseover', this.mouseIn, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n EventHandler.add(this.componentWrapper, 'mouseout', this.mouseOut, this);\n EventHandler.add(this.overAllClear, 'mouseup', this.clearAll, this);\n EventHandler.add(this.inputElement, 'paste', this.pasteHandler, this);\n };\n MultiSelect.prototype.onInput = function (e) {\n if (this.keyDownStatus) {\n this.isValidKey = true;\n }\n else {\n this.isValidKey = false;\n }\n this.keyDownStatus = false;\n // For Filtering works in mobile firefox\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.search(e);\n }\n };\n MultiSelect.prototype.pasteHandler = function (event) {\n var _this = this;\n setTimeout(function () {\n _this.expandTextbox();\n _this.search(event);\n });\n };\n MultiSelect.prototype.search = function (e) {\n var _this = this;\n this.resetFilteredData = true;\n if (!isNullOrUndefined(e)) {\n this.keyCode = e.keyCode;\n }\n if (!this.isPopupOpen() && this.openOnClick) {\n this.showPopup(e);\n }\n this.openClick(e);\n if (this.checkTextLength() && !this.allowFiltering && !isNullOrUndefined(e) && (e.keyCode !== 8)) {\n this.focusAtFirstListItem();\n }\n else {\n var text = this.targetElement();\n if (this.allowFiltering) {\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.targetElement(),\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isFiltered = true;\n _this.remoteFilterAction = true;\n _this.dataUpdater(dataSource, query, fields);\n },\n event: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!_this.isFiltered && !eventArgs.preventDefaultAction) {\n _this.filterAction = true;\n _this.dataUpdater(_this.dataSource, null, _this.fields);\n }\n }\n });\n }\n else if (this.allowCustomValue) {\n var query = new Query();\n query = (text !== '') ? query.where(this.fields.text, 'startswith', text, this.ignoreCase, this.ignoreAccent) : query;\n this.dataUpdater(this.mainData, query, this.fields);\n }\n else {\n var liCollections = this.list.querySelectorAll('li.' + dropDownBaseClasses.li + ':not(.e-hide-listitem)');\n var activeElement = Search(this.targetElement(), liCollections, 'StartsWith', this.ignoreCase);\n if (activeElement && activeElement.item !== null) {\n this.addListFocus(activeElement.item);\n this.list.scrollTop =\n activeElement.item.offsetHeight * activeElement.index;\n }\n else if (this.targetElement() !== '') {\n this.removeFocus();\n }\n else {\n this.focusAtFirstListItem();\n }\n }\n }\n };\n MultiSelect.prototype.preRender = function () {\n if (this.allowFiltering === null) {\n this.allowFiltering = (this.mode === 'CheckBox') ? true : false;\n }\n this.initializeData();\n this.updateDataAttribute(this.htmlAttributes);\n _super.prototype.preRender.call(this);\n };\n MultiSelect.prototype.getLocaleName = function () {\n return 'multi-select';\n };\n MultiSelect.prototype.initializeData = function () {\n this.mainListCollection = [];\n this.beforePopupOpen = false;\n this.filterAction = false;\n this.remoteFilterAction = false;\n this.isFirstClick = false;\n this.mobFilter = true;\n this.isFiltered = false;\n this.focused = true;\n this.initial = true;\n this.backCommand = true;\n };\n MultiSelect.prototype.updateData = function (delimiterChar, e) {\n var data = '';\n var delim = this.mode === 'Delimiter' || this.mode === 'CheckBox';\n var text = [];\n var temp;\n var tempData = this.listData;\n this.listData = this.mainData;\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.value)) {\n var valueLength = this.value.length;\n var hiddenElementContent = '';\n for (var index = 0; index < valueLength; index++) {\n var valueItem = this.value[index];\n var listValue = this.findListElement((!isNullOrUndefined(this.mainList) ? this.mainList : this.ulElement), 'li', 'data-value', valueItem);\n if (isNullOrUndefined(listValue) && !this.allowCustomValue) {\n this.value.splice(index, 1);\n index -= 1;\n valueLength -= 1;\n }\n else {\n if (this.listData) {\n temp = this.getTextByValue(valueItem);\n }\n else {\n temp = valueItem;\n }\n data += temp + delimiterChar + ' ';\n text.push(temp);\n }\n hiddenElementContent += \"\";\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = hiddenElementContent;\n }\n }\n this.setProperties({ text: text.toString() }, true);\n if (delim) {\n this.updateWrapperText(this.delimiterWrapper, data);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n }\n var targetEle = e && e.target;\n var isClearAll = (targetEle && targetEle.classList.contains('e-close-hooker')) ? true : null;\n if (!this.changeOnBlur && ((e && !isClearAll)) || this.isSelectAll) {\n this.isSelectAll = false;\n this.updateValueState(e, this.value, this.tempValues);\n }\n this.listData = tempData;\n this.addValidInputClass();\n };\n MultiSelect.prototype.initialTextUpdate = function () {\n if (!isNullOrUndefined(this.text)) {\n var textArr = this.text.split(this.delimiterChar);\n var textVal = [];\n for (var index = 0; textArr.length > index; index++) {\n var val = this.getValueByText(textArr[index]);\n if (!isNullOrUndefined(val)) {\n textVal.push(val);\n }\n else if (this.allowCustomValue) {\n textVal.push(textArr[index]);\n }\n }\n if (textVal && textVal.length) {\n this.setProperties({ value: textVal }, true);\n }\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n MultiSelect.prototype.renderList = function (isEmptyData) {\n if (!isEmptyData && this.allowCustomValue && this.list && (this.list.textContent === this.noRecordsTemplate\n || this.list.querySelector('.e-ul') && this.list.querySelector('.e-ul').childElementCount === 0)) {\n isEmptyData = true;\n }\n _super.prototype.render.call(this, null, isEmptyData);\n this.unwireListEvents();\n this.wireListEvents();\n };\n MultiSelect.prototype.initialValueUpdate = function () {\n if (this.list) {\n var text = void 0;\n var element = void 0;\n var value = void 0;\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.innerHTML = '';\n }\n this.removeListSelection();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n value = this.value[index];\n element = this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n text = this.getTextByValue(value);\n if ((element && (element.getAttribute('aria-selected') !== 'true')) ||\n (element && (element.getAttribute('aria-selected') === 'true' && this.hideSelectedItem) &&\n (this.mode === 'Box' || this.mode === 'Default'))) {\n this.addChip(text, value);\n this.addListSelection(element);\n }\n else if (value && this.allowCustomValue) {\n var indexItem = this.listData.length;\n var newValue = {};\n setValue(this.fields.text, value, newValue);\n setValue(this.fields.value, value, newValue);\n var noDataEle = this.popupWrapper.querySelector('.' + dropDownBaseClasses.noData);\n this.addItem(newValue, indexItem);\n element = element ? element : this.findListElement(this.hideSelectedItem ? this.ulElement : this.list, 'li', 'data-value', value);\n if (this.popupWrapper.contains(noDataEle)) {\n this.list.setAttribute('style', noDataEle.getAttribute('style'));\n this.popupWrapper.replaceChild(this.list, noDataEle);\n this.wireListEvents();\n }\n this.addChip(text, value);\n this.addListSelection(element);\n }\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.changeOnBlur) {\n this.updateValueState(null, this.value, this.tempValues);\n }\n this.updateDelimeter(this.delimiterChar);\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar);\n }\n if (this.mode === 'CheckBox' && this.showSelectAll && (isNullOrUndefined(this.value) || !this.value.length)) {\n this.notify('checkSelectAll', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', value: 'uncheck' });\n }\n if (this.mode === 'Box' || (this.mode === 'Default' && this.inputFocus)) {\n this.chipCollectionWrapper.style.display = '';\n }\n else if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.showDelimWrapper();\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateActionCompleteData = function (li, item) {\n if (this.value && this.value.indexOf(li.getAttribute('data-value')) > -1) {\n this.mainList = this.ulElement;\n if (this.hideSelectedItem) {\n addClass([li], HIDE_LIST);\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateAddItemList = function (list, itemCount) {\n if (this.popupObj && this.popupObj.element && this.popupObj.element.querySelector('.' + dropDownBaseClasses.noData) && list) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n remove(this.popupWrapper.querySelector('.e-content'));\n this.popupObj = null;\n this.renderPopup();\n }\n else if (this.allowCustomValue) {\n this.list = list;\n this.mainList = this.ulElement = list.querySelector('ul');\n }\n };\n MultiSelect.prototype.updateDataList = function () {\n if (this.mainList && this.ulElement && !(this.isFiltered || this.filterAction || this.targetElement().trim())) {\n var isDynamicGroupItemUpdate = this.mainList.childElementCount < this.ulElement.childElementCount;\n var isReactTemplateUpdate = ((this.ulElement.childElementCount > 0 && this.ulElement.children[0].childElementCount > 0) && (this.mainList.children[0] && (this.mainList.children[0].childElementCount < this.ulElement.children[0].childElementCount)));\n var isAngularTemplateUpdate = this.itemTemplate && this.ulElement.childElementCount > 0 && !(this.ulElement.childElementCount < this.mainList.childElementCount) && (this.ulElement.children[0].childElementCount > 0 || (this.fields.groupBy && this.ulElement.children[1] && this.ulElement.children[1].childElementCount > 0));\n if (isDynamicGroupItemUpdate || isReactTemplateUpdate || isAngularTemplateUpdate) {\n //EJ2-57748 - for this task, we prevent the ul element cloning ( this.mainList = this.ulElement.cloneNode ? this.ulElement.cloneNode(true) : this.ulElement;)\n this.mainList = this.ulElement;\n }\n }\n };\n MultiSelect.prototype.isValidLI = function (li) {\n return (li && !li.classList.contains(dropDownBaseClasses.disabled) && !li.classList.contains(dropDownBaseClasses.group) &&\n li.classList.contains(dropDownBaseClasses.li));\n };\n MultiSelect.prototype.updateListSelection = function (li, e, length) {\n var customVal = li.getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n if (this.allowCustomValue && ((customVal !== 'false' && value === false) ||\n (!isNullOrUndefined(value) && value.toString() === 'NaN'))) {\n value = customVal;\n }\n this.removeHover();\n if (!this.value || this.value.indexOf(value) === -1) {\n this.dispatchSelect(value, e, li, (li.getAttribute('aria-selected') === 'true'), length);\n }\n else {\n this.removeValue(value, e, length);\n }\n };\n MultiSelect.prototype.updateListSelectEventCallback = function (value, li, e) {\n var _this = this;\n var text = this.getTextByValue(value);\n if ((this.allowCustomValue || this.allowFiltering) && !this.findListElement(this.mainList, 'li', 'data-value', value)) {\n var temp_1 = li.cloneNode(true);\n var fieldValue = this.fields.value ? this.fields.value : 'value';\n if (this.allowCustomValue && this.mainData.length && typeof getValue(fieldValue, this.mainData[0]) === 'number') {\n value = !isNaN(parseFloat(value.toString())) ? parseFloat(value.toString()) : value;\n }\n var data_1 = this.getDataByValue(value);\n var eventArgs = {\n newData: data_1,\n cancel: false\n };\n this.trigger('customValueSelection', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n append([temp_1], _this.mainList);\n _this.mainData.push(data_1);\n _this.remoteCustomValue = false;\n _this.addValue(value, text, e);\n }\n });\n }\n else {\n this.remoteCustomValue = false;\n this.addValue(value, text, e);\n }\n };\n MultiSelect.prototype.removeListSelection = function () {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n var selectedItems = this.list.querySelectorAll('.' + className);\n var temp = selectedItems.length;\n if (selectedItems && selectedItems.length) {\n removeClass(selectedItems, className);\n while (temp > 0) {\n selectedItems[temp - 1].setAttribute('aria-selected', 'false');\n temp--;\n }\n }\n if (!isNullOrUndefined(this.mainList)) {\n var selectItems = this.mainList.querySelectorAll('.' + className);\n var temp1 = selectItems.length;\n if (selectItems && selectItems.length) {\n removeClass(selectItems, className);\n while (temp1 > 0) {\n selectItems[temp1 - 1].setAttribute('aria-selected', 'false');\n if (this.mode === 'CheckBox') {\n if (selectedItems && (selectedItems.length > (temp1 - 1))) {\n removeClass([selectedItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n removeClass([selectItems[temp1 - 1].firstElementChild.lastElementChild], 'e-check');\n }\n temp1--;\n }\n }\n }\n };\n MultiSelect.prototype.removeHover = function () {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n };\n MultiSelect.prototype.removeFocus = function () {\n if (this.list && this.mainList) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.focus);\n var mainlist = this.mainList.querySelectorAll('.' + dropDownBaseClasses.focus);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.focus);\n removeClass(mainlist, dropDownBaseClasses.focus);\n }\n }\n };\n MultiSelect.prototype.addListHover = function (li) {\n if (this.enabled && this.isValidLI(li)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n else {\n if ((li !== null && li.classList.contains('e-list-group-item')) && this.enableGroupCheckBox && this.mode === 'CheckBox'\n && !isNullOrUndefined(this.fields.groupBy)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n }\n };\n MultiSelect.prototype.addListFocus = function (element) {\n if (this.enabled && this.isValidLI(element)) {\n this.removeFocus();\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n else {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n addClass([element], dropDownBaseClasses.focus);\n this.updateAriaActiveDescendant();\n }\n }\n };\n MultiSelect.prototype.addListSelection = function (element, mainElement) {\n var className = this.hideSelectedItem ?\n HIDE_LIST :\n dropDownBaseClasses.selected;\n if (this.isValidLI(element) && !element.classList.contains(dropDownBaseClasses.hover)) {\n addClass([element], className);\n this.updateMainList(false, element.getAttribute('data-value'), mainElement);\n element.setAttribute('aria-selected', 'true');\n if (this.mode === 'CheckBox' && element.classList.contains('e-active')) {\n var ariaCheck = element.getElementsByClassName('e-check').length;\n if (ariaCheck === 0) {\n this.notify('updatelist', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n }\n }\n this.notify('activeList', { module: 'CheckBoxSelection', enable: this.mode === 'CheckBox', li: element, e: this });\n if (this.chipCollectionWrapper) {\n this.removeChipSelection();\n }\n this.selectedElementID = element.id;\n }\n };\n MultiSelect.prototype.updateDelimeter = function (delimChar, e) {\n this.updateData(delimChar, e);\n };\n MultiSelect.prototype.onMouseClick = function (e) {\n var _this = this;\n this.keyCode = null;\n this.scrollFocusStatus = false;\n var target = e.target;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n var headerLi = closest(target, '.' + dropDownBaseClasses.group);\n if (headerLi && this.enableGroupCheckBox && this.mode === 'CheckBox' && this.fields.groupBy) {\n target = target.classList.contains('e-list-group-item') ? target.firstElementChild.lastElementChild\n : e.target;\n if (target.classList.contains('e-check')) {\n this.selectAllItem(false, e);\n target.classList.remove('e-check');\n target.classList.remove('e-stop');\n closest(target, '.' + 'e-list-group-item').classList.remove('e-active');\n target.setAttribute('aria-selected', 'false');\n }\n else {\n this.selectAllItem(true, e);\n target.classList.remove('e-stop');\n target.classList.add('e-check');\n closest(target, '.' + 'e-list-group-item').classList.add('e-active');\n target.setAttribute('aria-selected', 'true');\n }\n this.refreshSelection();\n this.checkSelectAll();\n }\n else {\n if (this.isValidLI(li)) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (li.classList.contains('e-active')) {\n limit = limit - 1;\n }\n if (limit < this.maximumSelectionLength) {\n this.updateListSelection(li, e);\n this.checkPlaceholderSize();\n this.addListFocus(li);\n if ((this.allowCustomValue || this.allowFiltering) && this.mainList && this.listData) {\n if (this.mode !== 'CheckBox') {\n this.focusAtLastListItem(li.getAttribute('data-value'));\n this.refreshSelection();\n }\n }\n else {\n this.makeTextBoxEmpty();\n }\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (this.value && this.value.length > 50) {\n setTimeout(function () {\n _this.updateDelimeter(_this.delimiterChar, e);\n }, 0);\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, e);\n }\n this.checkSelectAll();\n this.refreshPopup();\n if (this.hideSelectedItem) {\n this.focusAtFirstListItem();\n }\n if (this.closePopupOnSelect) {\n this.hidePopup(e);\n }\n else {\n e.preventDefault();\n }\n this.makeTextBoxEmpty();\n this.findGroupStart(target);\n if (this.mode !== 'CheckBox') {\n this.refreshListItems(isNullOrUndefined(li) ? null : li.textContent);\n }\n }\n else {\n e.preventDefault();\n }\n this.refreshPlaceHolder();\n this.deselectHeader();\n }\n };\n MultiSelect.prototype.findGroupStart = function (target) {\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var count = 0;\n var liChecked = 0;\n var liUnchecked = 0;\n var groupValues = void 0;\n if (this.itemTemplate && !target.getElementsByClassName('e-frame').length) {\n while (!target.getElementsByClassName('e-frame').length) {\n target = target.parentElement;\n }\n }\n if (target.classList.contains('e-frame')) {\n target = target.parentElement.parentElement;\n }\n groupValues = this.findGroupAttrtibutes(target, liChecked, liUnchecked, count, 0);\n groupValues = this.findGroupAttrtibutes(target, groupValues[0], groupValues[1], groupValues[2], 1);\n while (!target.classList.contains('e-list-group-item')) {\n if (target.classList.contains('e-list-icon')) {\n target = target.parentElement;\n }\n target = target.previousElementSibling;\n if (target == null) {\n break;\n }\n }\n this.updateCheckBox(target, groupValues[0], groupValues[1], groupValues[2]);\n }\n };\n MultiSelect.prototype.findGroupAttrtibutes = function (listElement, checked, unChecked, count, position) {\n while (!listElement.classList.contains('e-list-group-item')) {\n if (listElement.classList.contains('e-list-icon')) {\n listElement = listElement.parentElement;\n }\n if (listElement.getElementsByClassName('e-frame')[0].classList.contains('e-check') &&\n listElement.classList.contains('e-list-item')) {\n checked++;\n }\n else if (listElement.classList.contains('e-list-item')) {\n unChecked++;\n }\n count++;\n listElement = position ? listElement.nextElementSibling : listElement.previousElementSibling;\n if (listElement == null) {\n break;\n }\n }\n return [checked, unChecked, count];\n };\n MultiSelect.prototype.updateCheckBox = function (groupHeader, checked, unChecked, count) {\n if (groupHeader === null) {\n return;\n }\n var checkBoxElement = groupHeader.getElementsByClassName('e-frame')[0];\n if (count === checked) {\n checkBoxElement.classList.remove('e-stop');\n checkBoxElement.classList.add('e-check');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'true');\n }\n else if (count === unChecked) {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.remove('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.remove('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n else if (this.maximumSelectionLength === checked - 1) {\n checkBoxElement.classList.remove('e-stop');\n groupHeader.setAttribute('aria-selected', 'true');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n checkBoxElement.classList.add('e-check');\n }\n else {\n checkBoxElement.classList.remove('e-check');\n checkBoxElement.classList.add('e-stop');\n closest(checkBoxElement, '.' + 'e-list-group-item').classList.add('e-active');\n groupHeader.setAttribute('aria-selected', 'false');\n }\n };\n MultiSelect.prototype.deselectHeader = function () {\n var limit = this.value && this.value.length ? this.value.length : 0;\n var collection = this.list.querySelectorAll('li.e-list-group-item:not(.e-active)');\n if (limit < this.maximumSelectionLength) {\n removeClass(collection, 'e-disable');\n }\n if (limit === this.maximumSelectionLength) {\n addClass(collection, 'e-disable');\n }\n };\n MultiSelect.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n if (currentLi === null && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)\n && this.enableGroupCheckBox) {\n currentLi = closest(e.target, '.' + dropDownBaseClasses.group);\n }\n this.addListHover(currentLi);\n };\n MultiSelect.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n MultiSelect.prototype.onListMouseDown = function (e) {\n e.preventDefault();\n this.scrollFocusStatus = true;\n };\n MultiSelect.prototype.onDocumentClick = function (e) {\n if (this.mode !== 'CheckBox') {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) &&\n !this.overAllWrapper.contains(e.target)) {\n this.scrollFocusStatus = false;\n }\n else {\n this.scrollFocusStatus = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement);\n }\n }\n };\n MultiSelect.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(document, 'mousedown', this.onDocumentClick, this);\n EventHandler.add(this.list, 'mousedown', this.onListMouseDown, this);\n EventHandler.add(this.list, 'mouseup', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n MultiSelect.prototype.unwireListEvents = function () {\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n if (this.list) {\n EventHandler.remove(this.list, 'mousedown', this.onListMouseDown);\n EventHandler.remove(this.list, 'mouseup', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n MultiSelect.prototype.hideOverAllClear = function () {\n if (!this.value || !this.value.length || this.inputElement.value === '') {\n this.overAllClear.style.display = 'none';\n }\n };\n MultiSelect.prototype.showOverAllClear = function () {\n if (((this.value && this.value.length) || this.inputElement.value !== '') && this.showClearButton && this.readonly !== true) {\n this.overAllClear.style.display = '';\n }\n else {\n this.overAllClear.style.display = 'none';\n }\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement && this.enabled) {\n this.inputElement.blur();\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n var filterClear = this.filterParent && this.filterParent.querySelector('.e-clear-icon.e-icons');\n if (this.overAllClear.style.display !== 'none' || filterClear) {\n this.spinnerElement = filterClear ? filterClear : this.overAllClear;\n }\n else {\n this.spinnerElement = this.createElement('span', { className: CLOSEICON_CLASS + ' ' + SPINNER_CLASS });\n this.componentWrapper.appendChild(this.spinnerElement);\n }\n createSpinner({ target: this.spinnerElement, width: Browser.isDevice ? '16px' : '14px' }, this.createElement);\n addClass([this.spinnerElement], DISABLE_ICON);\n showSpinner(this.spinnerElement);\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], DISABLE_ICON);\n if (this.spinnerElement.classList.contains(SPINNER_CLASS)) {\n detach(this.spinnerElement);\n }\n else {\n this.spinnerElement.innerHTML = '';\n }\n this.spinnerElement = null;\n }\n };\n MultiSelect.prototype.updateWrapperText = function (wrapperType, wrapperData) {\n if (this.valueTemplate || !this.enableHtmlSanitizer) {\n wrapperType.innerHTML = this.encodeHtmlEntities(wrapperData);\n }\n else {\n wrapperType.innerText = wrapperData;\n }\n };\n MultiSelect.prototype.updateDelimView = function () {\n if (this.delimiterWrapper) {\n this.hideDelimWrapper();\n }\n if (this.chipCollectionWrapper) {\n this.chipCollectionWrapper.style.display = 'none';\n }\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.style.display = '';\n this.viewWrapper.style.width = '';\n this.viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n if (this.value && this.value.length) {\n var data = '';\n var temp = void 0;\n var tempData = void 0;\n var tempIndex = 1;\n var wrapperleng = void 0;\n var remaining = void 0;\n var downIconWidth = 0;\n var overAllContainer = void 0;\n this.updateWrapperText(this.viewWrapper, data);\n var l10nLocale = {\n noRecordsTemplate: 'No records found',\n actionFailureTemplate: 'Request failed',\n overflowCountTemplate: '+${count} more..',\n totalCountTemplate: '${count} selected'\n };\n var l10n = new L10n(this.getLocaleName(), l10nLocale, this.locale);\n if (l10n.getConstant('actionFailureTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n if (l10n.getConstant('noRecordsTemplate') === '') {\n l10n = new L10n('dropdowns', l10nLocale, this.locale);\n }\n var remainContent = l10n.getConstant('overflowCountTemplate');\n var totalContent = l10n.getConstant('totalCountTemplate');\n var raminElement = this.createElement('span', {\n className: REMAIN_WRAPPER\n });\n var remainCompildTemp = remainContent.replace('${count}', this.value.length.toString());\n raminElement.innerText = remainCompildTemp;\n this.viewWrapper.appendChild(raminElement);\n this.renderReactTemplates();\n var remainSize = raminElement.offsetWidth;\n remove(raminElement);\n if (this.showDropDownIcon) {\n downIconWidth = this.dropIcon.offsetWidth + parseInt(window.getComputedStyle(this.dropIcon).marginRight, 10);\n }\n this.checkClearIconWidth();\n if (!isNullOrUndefined(this.value)) {\n for (var index = 0; !isNullOrUndefined(this.value[index]); index++) {\n data += (index === 0) ? '' : this.delimiterChar + ' ';\n temp = this.getOverflowVal(index);\n data += temp;\n temp = this.viewWrapper.innerHTML;\n this.updateWrapperText(this.viewWrapper, data);\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n if ((wrapperleng + downIconWidth + this.clearIconWidth) > overAllContainer) {\n if (tempData !== undefined && tempData !== '') {\n temp = tempData;\n index = tempIndex + 1;\n }\n this.updateWrapperText(this.viewWrapper, temp);\n remaining = this.value.length - index;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n while (((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) > overAllContainer) && wrapperleng !== 0\n && this.viewWrapper.innerHTML !== '') {\n var textArr = [];\n this.viewWrapper.innerHTML = textArr.join(this.delimiterChar);\n remaining = this.value.length;\n wrapperleng = this.viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n }\n break;\n }\n else if ((wrapperleng + remainSize + downIconWidth + this.clearIconWidth) <= overAllContainer) {\n tempData = data;\n tempIndex = index;\n }\n else if (index === 0) {\n tempData = '';\n tempIndex = -1;\n }\n }\n }\n if (remaining > 0) {\n var totalWidth = overAllContainer - downIconWidth - this.clearIconWidth;\n this.viewWrapper.appendChild(this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth));\n this.updateRemainWidth(this.viewWrapper, totalWidth);\n this.updateRemainingText(raminElement, downIconWidth, remaining, remainContent, totalContent);\n }\n }\n else {\n if (!isNullOrUndefined(this.viewWrapper)) {\n this.viewWrapper.innerHTML = '';\n this.viewWrapper.style.display = 'none';\n }\n }\n };\n MultiSelect.prototype.checkClearIconWidth = function () {\n if (this.showClearButton) {\n this.clearIconWidth = this.overAllClear.offsetWidth;\n }\n };\n MultiSelect.prototype.updateRemainWidth = function (viewWrapper, totalWidth) {\n if (viewWrapper.classList.contains(TOTAL_COUNT_WRAPPER) && totalWidth < (viewWrapper.offsetWidth +\n parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10)\n + parseInt(window.getComputedStyle(viewWrapper).paddingLeft, 10))) {\n viewWrapper.style.width = totalWidth + 'px';\n }\n };\n MultiSelect.prototype.updateRemainTemplate = function (raminElement, viewWrapper, remaining, remainContent, totalContent, totalWidth) {\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3 && viewWrapper.firstChild.nodeValue === '') {\n viewWrapper.removeChild(viewWrapper.firstChild);\n }\n raminElement.innerHTML = '';\n var remainTemp = remainContent.replace('${count}', remaining.toString());\n var totalTemp = totalContent.replace('${count}', remaining.toString());\n raminElement.innerText = (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) ? remainTemp : totalTemp;\n if (viewWrapper.firstChild && viewWrapper.firstChild.nodeType === 3) {\n viewWrapper.classList.remove(TOTAL_COUNT_WRAPPER);\n }\n else {\n viewWrapper.classList.add(TOTAL_COUNT_WRAPPER);\n this.updateRemainWidth(viewWrapper, totalWidth);\n }\n return raminElement;\n };\n MultiSelect.prototype.updateRemainingText = function (raminElement, downIconWidth, remaining, remainContent, totalContent) {\n var overAllContainer = this.componentWrapper.offsetWidth -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingLeft, 10) -\n parseInt(window.getComputedStyle(this.componentWrapper).paddingRight, 10);\n var wrapperleng = this.viewWrapper.offsetWidth + parseInt(window.getComputedStyle(this.viewWrapper).paddingRight, 10);\n if (((wrapperleng + downIconWidth) >= overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n while (((wrapperleng + downIconWidth) > overAllContainer) && wrapperleng !== 0 && this.viewWrapper.firstChild &&\n this.viewWrapper.firstChild.nodeType === 3) {\n var textArr = this.viewWrapper.firstChild.nodeValue.split(this.delimiterChar);\n textArr.pop();\n this.viewWrapper.firstChild.nodeValue = textArr.join(this.delimiterChar);\n if (this.viewWrapper.firstChild.nodeValue === '') {\n this.viewWrapper.removeChild(this.viewWrapper.firstChild);\n }\n remaining++;\n wrapperleng = this.viewWrapper.offsetWidth;\n }\n var totalWidth = overAllContainer - downIconWidth;\n this.updateRemainTemplate(raminElement, this.viewWrapper, remaining, remainContent, totalContent, totalWidth);\n }\n };\n MultiSelect.prototype.getOverflowVal = function (index) {\n var temp;\n if (this.mainData && this.mainData.length) {\n if (this.mode === 'CheckBox') {\n var newTemp = this.listData;\n this.listData = this.mainData;\n temp = this.getTextByValue(this.value[index]);\n this.listData = newTemp;\n }\n else {\n temp = this.getTextByValue(this.value[index]);\n }\n }\n else {\n temp = this.value[index];\n }\n return temp;\n };\n MultiSelect.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mousedown', this.wrapperClick);\n }\n EventHandler.remove(window, 'resize', this.windowResize);\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'focus', this.focusInHandler);\n EventHandler.remove(this.inputElement, 'keydown', this.onKeyDown);\n if (this.mode !== 'CheckBox') {\n EventHandler.remove(this.inputElement, 'input', this.onInput);\n }\n EventHandler.remove(this.inputElement, 'keyup', this.keyUp);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.onBlurHandler);\n }\n if (!isNullOrUndefined(this.componentWrapper)) {\n EventHandler.remove(this.componentWrapper, 'mouseover', this.mouseIn);\n EventHandler.remove(this.componentWrapper, 'mouseout', this.mouseOut);\n }\n if (!isNullOrUndefined(this.overAllClear)) {\n EventHandler.remove(this.overAllClear, 'mousedown', this.clearAll);\n }\n if (!isNullOrUndefined(this.inputElement)) {\n EventHandler.remove(this.inputElement, 'paste', this.pasteHandler);\n }\n };\n MultiSelect.prototype.selectAllItem = function (state, event, list) {\n var li;\n if (!isNullOrUndefined(this.list)) {\n li = this.list.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.value && this.value.length && event && event.target\n && closest(event.target, '.e-close-hooker') && this.allowFiltering) {\n li = this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)');\n }\n if (this.enableGroupCheckBox && this.mode === 'CheckBox' && !isNullOrUndefined(this.fields.groupBy)) {\n var target = (event ? (this.groupTemplate ? closest(event.target, '.e-list-group-item') : event.target) : null);\n target = (event && event.keyCode === 32) ? list : target;\n target = (target && target.classList.contains('e-frame')) ? target.parentElement.parentElement : target;\n if (target && target.classList.contains('e-list-group-item')) {\n var listElement = target.nextElementSibling;\n if (isNullOrUndefined(listElement)) {\n return;\n }\n while (listElement.classList.contains('e-list-item')) {\n if (state) {\n if (!listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n var selectionLimit = this.value && this.value.length ? this.value.length : 0;\n if (listElement.classList.contains('e-active')) {\n selectionLimit -= 1;\n }\n if (selectionLimit < this.maximumSelectionLength) {\n this.updateListSelection(listElement, event);\n }\n }\n }\n else {\n if (listElement.firstElementChild.lastElementChild.classList.contains('e-check')) {\n this.updateListSelection(listElement, event);\n }\n }\n listElement = listElement.nextElementSibling;\n if (listElement == null) {\n break;\n }\n }\n if (target.classList.contains('e-list-group-item')) {\n var focusedElement = this.list.getElementsByClassName('e-item-focus')[0];\n if (focusedElement) {\n focusedElement.classList.remove('e-item-focus');\n }\n if (state) {\n target.classList.add('e-active');\n }\n else {\n target.classList.remove('e-active');\n }\n target.classList.add('e-item-focus');\n this.updateAriaActiveDescendant();\n }\n this.textboxValueUpdate();\n this.checkPlaceholderSize();\n if (!this.changeOnBlur && event) {\n this.updateValueState(event, this.value, this.tempValues);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n }\n else {\n this.updateValue(event, li, state);\n }\n this.addValidInputClass();\n };\n MultiSelect.prototype.updateValue = function (event, li, state) {\n var _this = this;\n var length = li.length;\n var beforeSelectArgs = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state,\n preventSelectEvent: false\n };\n this.trigger('beforeSelectAll', beforeSelectArgs);\n if (li && li.length) {\n var index_1 = 0;\n var count_1 = 0;\n if (this.enableGroupCheckBox) {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : li.length;\n }\n else {\n count_1 = state ? this.maximumSelectionLength - (this.value ? this.value.length : 0) : this.maximumSelectionLength;\n }\n if (!beforeSelectArgs.preventSelectEvent) {\n while (index_1 < length && index_1 <= 50 && index_1 < count_1) {\n this.updateListSelection(li[index_1], event, length - index_1);\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n if (length > 50) {\n setTimeout(function () {\n while (index_1 < length && index_1 < count_1) {\n _this.updateListSelection(li[index_1], event, length - index_1);\n if (_this.enableGroupCheckBox) {\n _this.findGroupStart(li[index_1]);\n }\n index_1++;\n }\n _this.updatedataValueItems(event);\n if (!_this.changeOnBlur) {\n _this.updateValueState(event, _this.value, _this.tempValues);\n _this.isSelectAll = _this.isSelectAll ? !_this.isSelectAll : _this.isSelectAll;\n }\n _this.updateHiddenElement();\n }, 0);\n }\n }\n else {\n for (var i = 0; i < li.length && i < count_1; i++) {\n this.removeHover();\n var customVal = li[i].getAttribute('data-value');\n var value = this.getFormattedValue(customVal);\n var mainElement = this.mainList ? this.mainList.querySelectorAll(state ?\n 'li.e-list-item:not([aria-selected=\"true\"]):not(.e-reorder-hide)' :\n 'li.e-list-item[aria-selected=\"true\"]:not(.e-reorder-hide)')[i] : null;\n if (state) {\n this.value = !this.value ? [] : this.value;\n if (this.value.indexOf(value) < 0) {\n this.setProperties({ value: [].concat([], this.value, [value]) }, true);\n }\n this.removeFocus();\n this.addListSelection(li[i], mainElement);\n this.updateChipStatus();\n this.checkMaxSelection();\n }\n else {\n this.removeAllItems(value, event, false, li[i], mainElement);\n }\n if (this.enableGroupCheckBox) {\n this.findGroupStart(li[i]);\n }\n }\n if (!state) {\n var limit = this.value && this.value.length ? this.value.length : 0;\n if (limit < this.maximumSelectionLength) {\n var collection = this.list.querySelectorAll('li.'\n + dropDownBaseClasses.li + ':not(.e-active)');\n removeClass(collection, 'e-disable');\n }\n }\n var args = {\n event: event,\n items: state ? li : [],\n itemData: state ? this.listData : [],\n isInteracted: event ? true : false,\n isChecked: state\n };\n this.trigger('selectedAll', args);\n }\n }\n this.updatedataValueItems(event);\n this.checkPlaceholderSize();\n if (length <= 50 && !beforeSelectArgs.preventSelectEvent) {\n if (!this.changeOnBlur) {\n this.updateValueState(event, this.value, this.tempValues);\n this.isSelectAll = this.isSelectAll ? !this.isSelectAll : this.isSelectAll;\n }\n this.updateHiddenElement();\n }\n };\n MultiSelect.prototype.updateHiddenElement = function () {\n var _this = this;\n var hiddenValue = '';\n var wrapperText = '';\n var data = '';\n var text = [];\n if (this.mode === 'CheckBox') {\n this.value.map(function (value, index) {\n hiddenValue += '';\n if (_this.listData) {\n data = _this.getTextByValue(value);\n }\n else {\n data = value;\n }\n wrapperText += data + _this.delimiterChar + ' ';\n text.push(data);\n });\n this.hiddenElement.innerHTML = hiddenValue;\n this.updateWrapperText(this.delimiterWrapper, wrapperText);\n this.delimiterWrapper.setAttribute('id', getUniqueID('delim_val'));\n this.inputElement.setAttribute('aria-labelledby', this.delimiterWrapper.id);\n this.setProperties({ text: text.toString() }, true);\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n };\n MultiSelect.prototype.updatedataValueItems = function (event) {\n this.deselectHeader();\n this.textboxValueUpdate(event);\n };\n MultiSelect.prototype.textboxValueUpdate = function (event) {\n var isRemoveAll = event && event.target && (closest(event.target, '.e-selectall-parent')\n || closest(event.target, '.e-close-hooker'));\n if (this.mode !== 'Box' && !this.isPopupOpen() && !(this.mode === 'CheckBox' && (this.isSelectAll || isRemoveAll))) {\n this.updateDelimView();\n }\n else {\n this.searchWrapper.classList.remove(ZERO_SIZE);\n }\n if (this.mode === 'CheckBox') {\n this.updateDelimView();\n if (!(isRemoveAll || this.isSelectAll)) {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshInputHight();\n }\n else {\n this.updateDelimeter(this.delimiterChar, event);\n }\n this.refreshPlaceHolder();\n };\n MultiSelect.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n MultiSelect.prototype.updateDataSource = function (prop) {\n if (isNullOrUndefined(this.list)) {\n this.renderPopup();\n }\n else {\n this.resetList(this.dataSource);\n }\n if (this.value && this.value.length) {\n this.setProperties({ 'value': this.value });\n this.refreshSelection();\n }\n };\n MultiSelect.prototype.onLoadSelect = function () {\n this.setDynValue = true;\n this.renderPopup();\n };\n MultiSelect.prototype.selectAllItems = function (state, event) {\n var _this = this;\n if (isNullOrUndefined(this.list)) {\n this.selectAllAction = function () {\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n var args = {\n module: 'CheckBoxSelection',\n enable: _this.mode === 'CheckBox',\n value: state ? 'check' : 'uncheck'\n };\n _this.notify('checkSelectAll', args);\n }\n _this.selectAllItem(state, event);\n _this.selectAllAction = null;\n };\n _super.prototype.render.call(this);\n }\n else {\n this.selectAllAction = null;\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n var args = {\n value: state ? 'check' : 'uncheck',\n enable: this.mode === 'CheckBox',\n module: 'CheckBoxSelection'\n };\n this.notify('checkSelectAll', args);\n }\n this.selectAllItem(state, event);\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n MultiSelect.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n /**\n * Dynamically change the value of properties.\n *\n * @param {MultiSelectModel} newProp - Returns the dynamic property value of the component.\n * @param {MultiSelectModel} oldProp - Returns the previous property value of the component.\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))\n || newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n if (this.resetFilteredData) {\n // The filtered data is not being reset in the component after the user focuses out.\n this.resetMainList = !this.resetMainList ? this.mainList : this.resetMainList;\n this.resetFilteredData = false;\n }\n this.mainList = null;\n this.mainData = null;\n this.isFirstClick = false;\n this.isDynamicDataChange = true;\n }\n if (this.getModuleName() === 'multiselect') {\n this.filterAction = false;\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'query':\n case 'dataSource':\n if (this.mode === 'CheckBox' && this.showSelectAll) {\n if (!isNullOrUndefined(this.popupObj)) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttribute();\n break;\n case 'showClearButton':\n this.updateClearButton(newProp.showClearButton);\n break;\n case 'text':\n this.updateVal(this.value, this.value, 'text');\n break;\n case 'value':\n this.updateVal(this.value, oldProp.value, 'value');\n this.addValidInputClass();\n if (!this.closePopupOnSelect && this.isPopupOpen()) {\n this.refreshPopup();\n }\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n break;\n case 'width':\n this.setWidth(newProp.width);\n this.popupObj.setProperties({ width: this.calcPopupWidth() });\n break;\n case 'placeholder':\n this.refreshPlaceHolder();\n break;\n case 'filterBarPlaceholder':\n if (this.allowFiltering) {\n this.notify('filterBarPlaceholder', { filterBarPlaceholder: newProp.filterBarPlaceholder });\n }\n break;\n case 'delimiterChar':\n if (this.mode !== 'Box') {\n this.updateDelimView();\n }\n this.updateData(newProp.delimiterChar);\n break;\n case 'cssClass':\n this.updateOldPropCssClass(oldProp.cssClass);\n this.updateCssClass();\n this.calculateWidth();\n break;\n case 'enableRtl':\n this.enableRTL(newProp.enableRtl);\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n case 'readonly':\n this.updateReadonly(newProp.readonly);\n this.hidePopup();\n break;\n case 'enabled':\n this.hidePopup();\n this.enable(newProp.enabled);\n break;\n case 'showSelectAll':\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n break;\n case 'showDropDownIcon':\n this.dropDownIcon();\n break;\n case 'floatLabelType':\n this.setFloatLabelType();\n this.addValidInputClass();\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n break;\n case 'enableSelectionOrder':\n break;\n case 'selectAllText':\n this.notify('selectAllText', false);\n break;\n case 'popupHeight':\n if (this.popupObj) {\n var overAllHeight = parseInt(this.popupHeight, 10);\n if (this.popupHeight !== 'auto') {\n this.list.style.maxHeight = formatUnit(overAllHeight);\n this.popupWrapper.style.maxHeight = formatUnit(this.popupHeight);\n }\n else {\n this.list.style.maxHeight = formatUnit(this.popupHeight);\n }\n }\n break;\n case 'headerTemplate':\n case 'footerTemplate':\n this.reInitializePoup();\n break;\n case 'allowFiltering':\n if (this.mode === 'CheckBox' && this.popupObj) {\n this.reInitializePoup();\n }\n this.updateSelectElementData(this.allowFiltering);\n break;\n case 'fields':\n if (isNullOrUndefined(this.fields.groupBy)) {\n this.removeScrollEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var msProps = this.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this, msProps.newProperty, msProps.oldProperty);\n }\n break;\n }\n }\n };\n MultiSelect.prototype.reInitializePoup = function () {\n if (this.popupObj) {\n this.popupObj.destroy();\n this.popupObj = null;\n }\n this.renderPopup();\n };\n MultiSelect.prototype.presentItemValue = function (ulElement) {\n var valuecheck = [];\n for (var i = 0; i < this.value.length; i++) {\n var checkEle = this.findListElement(((this.allowFiltering && !isNullOrUndefined(this.mainList)) ? this.mainList : ulElement), 'li', 'data-value', this.value[i]);\n if (!checkEle) {\n valuecheck.push(this.value[i]);\n }\n }\n return valuecheck;\n };\n ;\n MultiSelect.prototype.addNonPresentItems = function (valuecheck, ulElement, list, event) {\n var _this = this;\n this.dataSource.executeQuery(this.getForQuery(valuecheck)).then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n }\n _this.updateActionList(ulElement, list, event);\n });\n };\n ;\n MultiSelect.prototype.updateVal = function (newProp, oldProp, prop) {\n if (!this.list) {\n this.onLoadSelect();\n }\n else if ((this.dataSource instanceof DataManager) && (!this.listData || !(this.mainList && this.mainData))) {\n this.onLoadSelect();\n }\n else {\n var valuecheck = [];\n if (!isNullOrUndefined(this.value) && !this.allowCustomValue) {\n valuecheck = this.presentItemValue(this.ulElement);\n }\n if (prop == 'value' && valuecheck.length > 0 && this.dataSource instanceof DataManager && !isNullOrUndefined(this.value)\n && this.listData != null) {\n this.mainData = null;\n this.setDynValue = true;\n this.addNonPresentItems(valuecheck, this.ulElement, this.listData);\n }\n else {\n if (prop === 'text') {\n this.initialTextUpdate();\n newProp = this.value;\n }\n if (isNullOrUndefined(this.value) || this.value.length === 0) {\n this.tempValues = oldProp;\n }\n // eslint-disable-next-line\n if (this.allowCustomValue && (this.mode === 'Default' || this.mode === 'Box') && this.isReact && this.inputFocus\n && this.isPopupOpen() && this.mainData !== this.listData) {\n var list = this.mainList.cloneNode ? this.mainList.cloneNode(true) : this.mainList;\n this.onActionComplete(list, this.mainData);\n }\n this.initialValueUpdate();\n if (this.mode !== 'Box' && !this.inputFocus) {\n this.updateDelimView();\n }\n if (!this.inputFocus) {\n this.refreshInputHight();\n }\n this.refreshPlaceHolder();\n if (this.mode !== 'CheckBox' && this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n this.checkPlaceholderSize();\n }\n }\n if (!this.changeOnBlur) {\n this.updateValueState(null, newProp, oldProp);\n }\n };\n /**\n * Adds a new item to the multiselect popup list. By default, new item appends to the list as the last item,\n * but you can insert based on the index parameter.\n *\n * @param { Object[] } items - Specifies an array of JSON data or a JSON data.\n * @param { number } itemIndex - Specifies the index to place the newly added item in the popup list.\n * @returns {void}\n */\n MultiSelect.prototype.addItem = function (items, itemIndex) {\n _super.prototype.addItem.call(this, items, itemIndex);\n };\n /**\n * Hides the popup, if the popup in a open state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.hidePopup = function (e) {\n var _this = this;\n var delay = 100;\n if (this.isPopupOpen()) {\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var eventArgs = { popup: this.popupObj, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (_this.fields.groupBy && _this.mode !== 'CheckBox' && _this.fixedHeaderElement) {\n remove(_this.fixedHeaderElement);\n _this.fixedHeaderElement = null;\n }\n _this.beforePopupOpen = false;\n _this.overAllWrapper.classList.remove(iconAnimation);\n _this.popupObj.hide(new Animation(eventArgs.animation));\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-activedescendant');\n if (_this.allowFiltering) {\n _this.notify('inputFocus', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox', value: 'clear' });\n }\n _this.popupObj.hide();\n removeClass([document.body, _this.popupObj.element], 'e-popup-full-page');\n EventHandler.remove(_this.list, 'keydown', _this.onKeyDown);\n if (_this.mode === 'CheckBox' && _this.showSelectAll) {\n EventHandler.remove(_this.popupObj.element, 'click', _this.clickHandler);\n }\n }\n });\n }\n };\n /**\n * Shows the popup, if the popup in a closed state.\n *\n * @returns {void}\n */\n MultiSelect.prototype.showPopup = function (e) {\n var _this = this;\n if (!this.enabled) {\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n if (!_this.ulElement) {\n _this.beforePopupOpen = true;\n _super.prototype.render.call(_this, e);\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n return;\n }\n if (_this.mode === 'CheckBox' && Browser.isDevice && _this.allowFiltering) {\n _this.notify('popupFullScreen', { module: 'CheckBoxSelection', enable: _this.mode === 'CheckBox' });\n }\n var mainLiLength = _this.ulElement.querySelectorAll('li.' + 'e-list-item').length;\n var liLength = _this.ulElement.querySelectorAll('li.'\n + dropDownBaseClasses.li + '.' + HIDE_LIST).length;\n if (mainLiLength > 0 && (mainLiLength === liLength) && (liLength === _this.mainData.length) && !(_this.targetElement() !== '' && _this.allowCustomValue)) {\n _this.beforePopupOpen = false;\n return;\n }\n _this.onPopupShown(e);\n }\n });\n };\n /**\n * Based on the state parameter, entire list item will be selected/deselected.\n * parameter\n * `true` - Selects entire list items.\n * `false` - Un Selects entire list items.\n *\n * @param {boolean} state - if it’s true then Selects the entire list items. If it’s false the Unselects entire list items.\n * @returns {void}\n */\n MultiSelect.prototype.selectAll = function (state) {\n this.isSelectAll = true;\n this.selectAllItems(state);\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n MultiSelect.prototype.getModuleName = function () {\n return 'multiselect';\n };\n /**\n * Allows you to clear the selected values from the Multiselect component.\n *\n * @returns {void}\n */\n MultiSelect.prototype.clear = function () {\n var _this = this;\n this.selectAll(false);\n if (this.value && this.value.length) {\n setTimeout(function () {\n _this.setProperties({ value: null }, true);\n }, 0);\n }\n else {\n this.setProperties({ value: null }, true);\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n MultiSelect.prototype.render = function () {\n if (!isNullOrUndefined(this.value)) {\n // eslint-disable-next-line\n this.value = this.value.slice();\n }\n this.setDynValue = this.initStatus = false;\n this.isSelectAll = false;\n this.selectAllEventEle = [];\n this.searchWrapper = this.createElement('span', { className: SEARCHBOX_WRAPPER + ' ' + ((this.mode === 'Box') ? BOX_ELEMENT : '') });\n this.viewWrapper = this.createElement('span', { className: DELIMITER_VIEW + ' ' + DELIMITER_WRAPPER, styles: 'display:none;' });\n this.overAllClear = this.createElement('span', {\n className: CLOSEICON_CLASS, styles: 'display:none;'\n });\n this.componentWrapper = this.createElement('div', { className: ELEMENT_WRAPPER });\n this.overAllWrapper = this.createElement('div', { className: OVER_ALL_WRAPPER });\n if (this.mode === 'CheckBox') {\n addClass([this.overAllWrapper], 'e-checkbox');\n }\n if (Browser.isDevice) {\n this.componentWrapper.classList.add(ELEMENT_MOBILE_WRAPPER);\n }\n this.setWidth(this.width);\n this.overAllWrapper.appendChild(this.componentWrapper);\n this.popupWrapper = this.createElement('div', { id: this.element.id + '_popup', className: POPUP_WRAPPER });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (this.mode === 'Delimiter' || this.mode === 'CheckBox') {\n this.delimiterWrapper = this.createElement('span', { className: DELIMITER_WRAPPER, styles: 'display:none' });\n this.componentWrapper.appendChild(this.delimiterWrapper);\n }\n else {\n this.chipCollectionWrapper = this.createElement('span', {\n className: CHIP_WRAPPER,\n styles: 'display:none'\n });\n if (this.mode === 'Default') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_default'));\n }\n else if (this.mode === 'Box') {\n this.chipCollectionWrapper.setAttribute('id', getUniqueID('chip_box'));\n }\n this.componentWrapper.appendChild(this.chipCollectionWrapper);\n }\n if (this.mode !== 'Box') {\n this.componentWrapper.appendChild(this.viewWrapper);\n }\n this.componentWrapper.appendChild(this.searchWrapper);\n if (this.showClearButton && !Browser.isDevice) {\n this.componentWrapper.appendChild(this.overAllClear);\n }\n else {\n this.componentWrapper.classList.add(CLOSE_ICON_HIDE);\n }\n this.dropDownIcon();\n this.inputElement = this.createElement('input', {\n className: INPUT_ELEMENT,\n attrs: {\n spellcheck: 'false',\n type: 'text',\n autocomplete: 'off',\n tabindex: '0',\n role: 'combobox'\n }\n });\n if (this.mode === 'Default' || this.mode === 'Box') {\n this.inputElement.setAttribute('aria-labelledby', this.chipCollectionWrapper.id);\n }\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.overAllWrapper);\n this.searchWrapper.appendChild(this.inputElement);\n }\n else {\n this.element.parentElement.insertBefore(this.overAllWrapper, this.element);\n this.searchWrapper.appendChild(this.inputElement);\n this.searchWrapper.appendChild(this.element);\n this.element.removeAttribute('tabindex');\n }\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n else if (this.floatLabelType === 'Never') {\n this.refreshPlaceHolder();\n }\n this.addValidInputClass();\n this.element.style.opacity = '';\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'class': HIDDEN_ELEMENT, 'tabindex': '-1', 'multiple': '' }\n });\n this.componentWrapper.appendChild(this.hiddenElement);\n this.validationAttribute(this.element, this.hiddenElement);\n if (this.mode !== 'CheckBox') {\n this.hideOverAllClear();\n }\n if (!isNullOrUndefined(closest(this.element, \"fieldset\")) && closest(this.element, \"fieldset\").disabled) {\n this.enabled = false;\n }\n this.wireEvent();\n this.enable(this.enabled);\n this.enableRTL(this.enableRtl);\n this.checkInitialValue();\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n Input.createSpanElement(this.overAllWrapper, this.createElement);\n this.calculateWidth();\n if (!isNullOrUndefined(this.overAllWrapper) && !isNullOrUndefined(this.overAllWrapper.getElementsByClassName('e-ddl-icon')[0] && this.overAllWrapper.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never')) {\n this.overAllWrapper.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.renderComplete();\n };\n MultiSelect.prototype.checkInitialValue = function () {\n var _this = this;\n var isData = this.dataSource instanceof Array ? (this.dataSource.length > 0)\n : !isNullOrUndefined(this.dataSource);\n if (!(this.value && this.value.length) &&\n isNullOrUndefined(this.text) &&\n !isData &&\n this.element.tagName === 'SELECT' &&\n this.element.options.length > 0) {\n var optionsElement = this.element.options;\n var valueCol = [];\n var textCol = '';\n for (var index = 0, optionsLen = optionsElement.length; index < optionsLen; index++) {\n var opt = optionsElement[index];\n if (!isNullOrUndefined(opt.getAttribute('selected'))) {\n if (opt.getAttribute('value')) {\n valueCol.push(opt.getAttribute('value'));\n }\n else {\n textCol += (opt.text + this.delimiterChar);\n }\n }\n }\n if (valueCol.length > 0) {\n this.setProperties({ value: valueCol }, true);\n }\n else if (textCol !== '') {\n this.setProperties({ text: textCol }, true);\n }\n if (valueCol.length > 0 || textCol !== '') {\n this.refreshInputHight();\n this.refreshPlaceHolder();\n }\n }\n if ((this.value && this.value.length) || !isNullOrUndefined(this.text)) {\n if (!this.list) {\n _super.prototype.render.call(this);\n }\n }\n if (!isNullOrUndefined(this.text) && (isNullOrUndefined(this.value) || this.value.length === 0)) {\n this.initialTextUpdate();\n }\n if (this.value && this.value.length) {\n if (!(this.dataSource instanceof DataManager)) {\n this.initialValueUpdate();\n this.initialUpdate();\n }\n else {\n this.setInitialValue = function () {\n _this.initStatus = false;\n _this.initialValueUpdate();\n _this.initialUpdate();\n _this.setInitialValue = null;\n _this.initStatus = true;\n };\n }\n this.updateTempValue();\n }\n else {\n this.initialUpdate();\n }\n this.initStatus = true;\n this.checkAutoFocus();\n if (!isNullOrUndefined(this.text)) {\n this.element.setAttribute('data-initial-value', this.text);\n }\n };\n MultiSelect.prototype.checkAutoFocus = function () {\n if (this.element.hasAttribute('autofocus')) {\n this.inputElement.focus();\n }\n };\n MultiSelect.prototype.setFloatLabelType = function () {\n removeFloating(this.overAllWrapper, this.componentWrapper, this.searchWrapper, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n if (this.floatLabelType !== 'Never') {\n createFloatLabel(this.overAllWrapper, this.searchWrapper, this.element, this.inputElement, this.value, this.floatLabelType, this.placeholder);\n }\n };\n MultiSelect.prototype.addValidInputClass = function () {\n if (!isNullOrUndefined(this.overAllWrapper)) {\n if ((!isNullOrUndefined(this.value) && this.value.length) || this.floatLabelType === 'Always') {\n addClass([this.overAllWrapper], 'e-valid-input');\n }\n else {\n removeClass([this.overAllWrapper], 'e-valid-input');\n }\n }\n };\n MultiSelect.prototype.dropDownIcon = function () {\n if (this.showDropDownIcon) {\n this.dropIcon = this.createElement('span', { className: dropdownIcon });\n this.componentWrapper.appendChild(this.dropIcon);\n addClass([this.componentWrapper], ['e-down-icon']);\n }\n else {\n if (!isNullOrUndefined(this.dropIcon)) {\n this.dropIcon.parentElement.removeChild(this.dropIcon);\n removeClass([this.componentWrapper], ['e-down-icon']);\n }\n }\n };\n MultiSelect.prototype.initialUpdate = function () {\n if (this.mode !== 'Box' && !(this.setDynValue && this.mode === 'Default' && this.inputFocus)) {\n this.updateDelimView();\n }\n this.updateCssClass();\n this.updateHTMLAttribute();\n this.updateReadonly(this.readonly);\n this.refreshInputHight();\n this.checkPlaceholderSize();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n MultiSelect.prototype.destroy = function () {\n // eslint-disable-next-line\n if (this.isReact) {\n this.clearTemplate();\n }\n if (this.popupObj) {\n this.popupObj.hide();\n }\n this.notify(destroy, {});\n this.unwireListEvents();\n this.unWireEvent();\n this.list = null;\n this.popupObj = null;\n this.mainList = null;\n this.mainData = null;\n this.filterParent = null;\n this.ulElement = null;\n this.mainListCollection = null;\n _super.prototype.destroy.call(this);\n var temp = ['readonly', 'aria-disabled', 'placeholder'];\n var length = temp.length;\n if (!isNullOrUndefined(this.inputElement)) {\n while (length > 0) {\n this.inputElement.removeAttribute(temp[length - 1]);\n length--;\n }\n }\n if (!isNullOrUndefined(this.element)) {\n this.element.removeAttribute('data-initial-value');\n this.element.style.display = 'block';\n }\n if (this.overAllWrapper && this.overAllWrapper.parentElement) {\n if (this.overAllWrapper.parentElement.tagName === this.getNgDirective()) {\n remove(this.overAllWrapper);\n }\n else {\n this.overAllWrapper.parentElement.insertBefore(this.element, this.overAllWrapper);\n remove(this.overAllWrapper);\n }\n }\n this.componentWrapper = null;\n this.overAllClear = null;\n this.overAllWrapper = null;\n this.hiddenElement = null;\n this.searchWrapper = null;\n this.viewWrapper = null;\n this.chipCollectionWrapper = null;\n this.targetInputElement = null;\n this.popupWrapper = null;\n this.inputElement = null;\n this.delimiterWrapper = null;\n this.popupObj = null;\n this.popupWrapper = null;\n this.liCollections = null;\n this.header = null;\n this.mainList = null;\n this.mainListCollection = null;\n this.footer = null;\n this.selectAllEventEle = null;\n };\n __decorate([\n Complex({ text: null, value: null, iconCss: null, groupBy: null }, FieldSettings)\n ], MultiSelect.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"groupTemplate\", void 0);\n __decorate([\n Property('No records found')\n ], MultiSelect.prototype, \"noRecordsTemplate\", void 0);\n __decorate([\n Property('Request failed')\n ], MultiSelect.prototype, \"actionFailureTemplate\", void 0);\n __decorate([\n Property('None')\n ], MultiSelect.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property([])\n ], MultiSelect.prototype, \"dataSource\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"query\", void 0);\n __decorate([\n Property('StartsWith')\n ], MultiSelect.prototype, \"filterType\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"ignoreAccent\", void 0);\n __decorate([\n Property()\n ], MultiSelect.prototype, \"locale\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"enableGroupCheckBox\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"width\", void 0);\n __decorate([\n Property('300px')\n ], MultiSelect.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], MultiSelect.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], MultiSelect.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"itemTemplate\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"changeOnBlur\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"allowCustomValue\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(1000)\n ], MultiSelect.prototype, \"maximumSelectionLength\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], MultiSelect.prototype, \"value\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"hideSelectedItem\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"closePopupOnSelect\", void 0);\n __decorate([\n Property('Default')\n ], MultiSelect.prototype, \"mode\", void 0);\n __decorate([\n Property(',')\n ], MultiSelect.prototype, \"delimiterChar\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"ignoreCase\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showDropDownIcon\", void 0);\n __decorate([\n Property('Never')\n ], MultiSelect.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"showSelectAll\", void 0);\n __decorate([\n Property('Select All')\n ], MultiSelect.prototype, \"selectAllText\", void 0);\n __decorate([\n Property('Unselect All')\n ], MultiSelect.prototype, \"unSelectAllText\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"enableSelectionOrder\", void 0);\n __decorate([\n Property(true)\n ], MultiSelect.prototype, \"openOnClick\", void 0);\n __decorate([\n Property(false)\n ], MultiSelect.prototype, \"addTagOnBlur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removing\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"removed\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeSelectAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"selectedAll\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"chipSelection\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"tagging\", void 0);\n __decorate([\n Event()\n ], MultiSelect.prototype, \"customValueSelection\", void 0);\n MultiSelect = __decorate([\n NotifyPropertyChanges\n ], MultiSelect);\n return MultiSelect;\n}(DropDownBase));\nexport { MultiSelect };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, getUniqueID, formatUnit, NotifyPropertyChanges, Property, attributes, removeClass, addClass } from '@syncfusion/ej2-base';\nvar cssClassName = {\n TEXTSHAPE: 'e-skeleton-text',\n CIRCLESHAPE: 'e-skeleton-circle',\n SQUARESHAPE: 'e-skeleton-square',\n RECTANGLESHAPE: 'e-skeleton-rectangle',\n WAVEEFFECT: 'e-shimmer-wave',\n PULSEEFFECT: 'e-shimmer-pulse',\n FADEEFFECT: 'e-shimmer-fade',\n VISIBLENONE: 'e-visible-none'\n};\n/**\n * Defines the shape of Skeleton.\n */\nexport var SkeletonType;\n(function (SkeletonType) {\n /**\n * Defines the skeleton shape as text.\n */\n SkeletonType[\"Text\"] = \"Text\";\n /**\n * Defines the skeleton shape as circle.\n */\n SkeletonType[\"Circle\"] = \"Circle\";\n /**\n * Defines the skeleton shape as square.\n */\n SkeletonType[\"Square\"] = \"Square\";\n /**\n * Defines the skeleton shape as rectangle.\n */\n SkeletonType[\"Rectangle\"] = \"Rectangle\";\n})(SkeletonType || (SkeletonType = {}));\n/**\n * Defines the animation effect of Skeleton.\n */\nexport var ShimmerEffect;\n(function (ShimmerEffect) {\n /**\n * Defines the animation as shimmer wave effect.\n */\n ShimmerEffect[\"Wave\"] = \"Wave\";\n /**\n * Defines the animation as fade effect.\n */\n ShimmerEffect[\"Fade\"] = \"Fade\";\n /**\n * Defines the animation as pulse effect.\n */\n ShimmerEffect[\"Pulse\"] = \"Pulse\";\n /**\n * Defines the animation as no effect.\n */\n ShimmerEffect[\"None\"] = \"None\";\n})(ShimmerEffect || (ShimmerEffect = {}));\n/**\n * The Shimmer is a placeholder that animates a shimmer effect to let users know that the page’s content is loading at the moment.\n * In other terms, it simulates the layout of page content while loading the actual content.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Skeleton = /** @class */ (function (_super) {\n __extends(Skeleton, _super);\n /**\n * Constructor for creating Skeleton component.\n *\n * @param {SkeletonModel} options - Defines the model of Skeleton class.\n * @param {HTMLElement} element - Defines the target HTML element.\n */\n function Skeleton(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Get component module name.\n *\n * @returns {string} - Module name\n * @private\n */\n Skeleton.prototype.getModuleName = function () {\n return 'skeleton';\n };\n Skeleton.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n Skeleton.prototype.preRender = function () {\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n this.updateCssClass();\n attributes(this.element, { role: 'alert', 'aria-busy': 'true', 'aria-live': 'polite', 'aria-label': this.label });\n };\n /**\n * Method for initialize the component rendering.\n *\n * @returns {void}\n * @private\n */\n Skeleton.prototype.render = function () {\n this.initialize();\n };\n Skeleton.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n case 'height':\n this.updateDimension();\n break;\n case 'shape':\n this.updateShape();\n break;\n case 'shimmerEffect':\n this.updateEffect();\n break;\n case 'visible':\n this.updateVisibility();\n break;\n case 'label':\n this.element.setAttribute('aria-label', this.label);\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n this.updateCssClass();\n break;\n }\n }\n };\n /**\n * Method to destroys the Skeleton component.\n *\n * @returns {void}\n */\n Skeleton.prototype.destroy = function () {\n _super.prototype.destroy.call(this);\n var attrs = ['role', 'aria-live', 'aria-busy', 'aria-label'];\n var cssClass = [];\n if (this.cssClass) {\n cssClass = cssClass.concat(this.cssClass.split(' '));\n }\n for (var i = 0; i < attrs.length; i++) {\n this.element.removeAttribute(attrs[parseInt(i.toString(), 10)]);\n }\n cssClass = cssClass.concat(this.element.classList.value.match(/(e-skeleton-[^\\s]+)/g));\n cssClass = cssClass.concat(this.element.classList.value.match(/(e-shimmer-[^\\s]+)/g));\n removeClass([this.element], cssClass);\n };\n Skeleton.prototype.initialize = function () {\n this.updateShape();\n this.updateEffect();\n this.updateVisibility();\n };\n Skeleton.prototype.updateShape = function () {\n var shapeCss = cssClassName[this.shape.toUpperCase() + 'SHAPE'];\n var removeCss = this.element.classList.value.match(/(e-skeleton-[^\\s]+)/g);\n this.updateDimension();\n if (removeCss) {\n removeClass([this.element], removeCss);\n }\n addClass([this.element], [shapeCss]);\n };\n Skeleton.prototype.updateDimension = function () {\n var width = (!this.width && (['Text', 'Rectangle'].indexOf(this.shape) > -1)) ? '100%' : formatUnit(this.width);\n var height = ['Circle', 'Square'].indexOf(this.shape) > -1 ? width : formatUnit(this.height);\n this.element.style.width = width;\n this.element.style.height = height;\n };\n Skeleton.prototype.updateEffect = function () {\n var removeCss = this.element.classList.value.match(/(e-shimmer-[^\\s]+)/g);\n if (removeCss) {\n removeClass([this.element], removeCss);\n }\n addClass([this.element], [cssClassName[this.shimmerEffect.toUpperCase() + 'EFFECT']]);\n };\n Skeleton.prototype.updateVisibility = function () {\n this.element.classList[this.visible ? 'remove' : 'add'](cssClassName.VISIBLENONE);\n };\n Skeleton.prototype.updateCssClass = function () {\n if (this.cssClass) {\n addClass([this.element], this.cssClass.split(' '));\n }\n };\n __decorate([\n Property('')\n ], Skeleton.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], Skeleton.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], Skeleton.prototype, \"visible\", void 0);\n __decorate([\n Property('Text')\n ], Skeleton.prototype, \"shape\", void 0);\n __decorate([\n Property('Wave')\n ], Skeleton.prototype, \"shimmerEffect\", void 0);\n __decorate([\n Property('Loading...')\n ], Skeleton.prototype, \"label\", void 0);\n __decorate([\n Property('')\n ], Skeleton.prototype, \"cssClass\", void 0);\n Skeleton = __decorate([\n NotifyPropertyChanges\n ], Skeleton);\n return Skeleton;\n}(Component));\nexport { Skeleton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Browser } from '@syncfusion/ej2-base';\nimport { cldrData, L10n, Component, getDefaultDateObject, rippleEffect, Event } from '@syncfusion/ej2-base';\nimport { remove, addClass, detach, removeClass, closest, append, attributes, setStyleAttribute } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, formatUnit, getValue, extend, getUniqueID, ChildProperty } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { ListBase } from '@syncfusion/ej2-lists';\nvar WRAPPERCLASS = 'e-time-wrapper';\nvar POPUP = 'e-popup';\nvar ERROR = 'e-error';\nvar POPUPDIMENSION = '240px';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar ROOT = 'e-timepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar CONTENT = 'e-content';\nvar SELECTED = 'e-active';\nvar HOVER = 'e-hover';\nvar NAVIGATION = 'e-navigation';\nvar DISABLED = 'e-disabled';\nvar ICONANIMATION = 'e-icon-anim';\nvar TIMEICON = 'e-time-icon';\nvar CLEARICON = 'e-clear-icon';\nvar FOCUS = 'e-input-focus';\nvar LISTCLASS = 'e-list-item';\nvar HALFPOSITION = 2;\nvar ANIMATIONDURATION = 50;\nvar OVERFLOW = 'e-time-overflow';\nvar OFFSETVAL = 4;\nvar EDITABLE = 'e-non-edit';\nvar wrapperAttributes = ['title', 'class', 'style'];\n// eslint-disable-next-line @typescript-eslint/no-namespace\nexport var TimePickerBase;\n(function (TimePickerBase) {\n // eslint-disable-next-line max-len, jsdoc/require-jsdoc\n function createListItems(createdEl, min, max, globalize, timeFormat, step) {\n var formatOptions;\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: timeFormat, type: 'time' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: timeFormat, type: 'time', calendar: 'islamic' };\n }\n var start;\n var interval = step * 60000;\n var listItems = [];\n var timeCollections = [];\n start = +(min.setMilliseconds(0));\n var end = +(max.setMilliseconds(0));\n while (end >= start) {\n timeCollections.push(start);\n listItems.push(globalize.formatDate(new Date(start), { format: timeFormat, type: 'time' }));\n start += interval;\n }\n var listTag = ListBase.createList(createdEl, listItems, null, true);\n return { collection: timeCollections, list: listTag };\n }\n TimePickerBase.createListItems = createListItems;\n})(TimePickerBase || (TimePickerBase = {}));\nvar TimeMaskPlaceholder = /** @class */ (function (_super) {\n __extends(TimeMaskPlaceholder, _super);\n function TimeMaskPlaceholder() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('day')\n ], TimeMaskPlaceholder.prototype, \"day\", void 0);\n __decorate([\n Property('month')\n ], TimeMaskPlaceholder.prototype, \"month\", void 0);\n __decorate([\n Property('year')\n ], TimeMaskPlaceholder.prototype, \"year\", void 0);\n __decorate([\n Property('day of the week')\n ], TimeMaskPlaceholder.prototype, \"dayOfTheWeek\", void 0);\n __decorate([\n Property('hour')\n ], TimeMaskPlaceholder.prototype, \"hour\", void 0);\n __decorate([\n Property('minute')\n ], TimeMaskPlaceholder.prototype, \"minute\", void 0);\n __decorate([\n Property('second')\n ], TimeMaskPlaceholder.prototype, \"second\", void 0);\n return TimeMaskPlaceholder;\n}(ChildProperty));\nexport { TimeMaskPlaceholder };\n/**\n * TimePicker is an intuitive interface component which provides an options to select a time value\n * from popup list or to set a desired time value.\n * ```\n * \n * \n * ```\n */\nvar TimePicker = /** @class */ (function (_super) {\n __extends(TimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {TimePickerModel} options - Specifies the TimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function TimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.liCollections = [];\n _this.timeCollections = [];\n _this.disableItemCollection = [];\n _this.invalidValueString = null;\n _this.isAngular = false;\n _this.preventChange = false;\n _this.maskedDateValue = '';\n _this.moduleName = _this.getModuleName();\n _this.timeOptions = options;\n return _this;\n }\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n TimePicker.prototype.preRender = function () {\n this.keyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.angularTag = null;\n this.formElement = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n this.angularTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n this.openPopupEventArgs = {\n appendTo: document.body\n };\n };\n // element creation\n TimePicker.prototype.render = function () {\n this.initialize();\n this.createInputElement();\n this.updateHtmlAttributeToWrapper();\n this.setTimeAllowEdit();\n this.setEnable();\n this.validateInterval();\n this.bindEvents();\n this.validateDisable();\n this.setTimeZone();\n this.setValue(this.getFormattedValue(this.value));\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.anchor = this.inputElement;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputEleValue = this.getDateObject(this.inputElement.value);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n };\n TimePicker.prototype.setTimeZone = function () {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = this.serverTimezoneOffset;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n }\n };\n TimePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n TimePicker.prototype.setTimeAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.clearIconState();\n };\n TimePicker.prototype.clearIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n else {\n addClass([this.inputWrapper.container], [EDITABLE]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [EDITABLE]);\n }\n };\n TimePicker.prototype.validateDisable = function () {\n this.setMinMax(this.initMin, this.initMax);\n if (!isNullOrUndefined(this.value)) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupWrapper = this.popupObj = null;\n }\n if ((!isNaN(+this.value) && this.value !== null)) {\n if (!this.valueIsDisable(this.value)) {\n //disable value given in value property so reset the date based on current date\n if (this.strictMode) {\n this.resetState();\n }\n this.initValue = null;\n this.initMax = this.getDateObject(this.initMax);\n this.initMin = this.getDateObject(this.initMin);\n this.timeCollections = this.liCollections = [];\n this.setMinMax(this.initMin, this.initMax);\n }\n }\n };\n TimePicker.prototype.validationAttribute = function (target, input) {\n var name = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n input.setAttribute('name', name);\n target.removeAttribute('name');\n var attributes = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attributes.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attributes[i]))) {\n continue;\n }\n var attr = target.getAttribute(attributes[i]);\n input.setAttribute(attributes[i], attr);\n target.removeAttribute(attributes[i]);\n }\n };\n TimePicker.prototype.initialize = function () {\n this.globalize = new Internationalization(this.locale);\n this.defaultCulture = new Internationalization('en');\n this.checkTimeFormat();\n this.checkInvalidValue(this.value);\n // persist the value property.\n this.setProperties({ value: this.checkDateValue(new Date(this.checkInValue(this.value))) }, true);\n this.setProperties({ min: this.checkDateValue(new Date(this.checkInValue(this.min))) }, true);\n this.setProperties({ max: this.checkDateValue(new Date(this.checkInValue(this.max))) }, true);\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(this.scrollTo))) }, true);\n if (this.angularTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.checkAttributes(false); //check the input element attributes\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('timepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n this.initValue = this.checkDateValue(this.value);\n this.initMin = this.checkDateValue(this.min);\n this.initMax = this.checkDateValue(this.max);\n this.isNavigate = this.isPreventBlur = this.isTextSelected = false;\n this.activeIndex = this.valueWithMinutes = this.prevDate = null;\n if (!isNullOrUndefined(this.element.getAttribute('id'))) {\n if (this.angularTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n //for angular case\n this.element.id = getUniqueID('ej2_timepicker');\n if (this.angularTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('name'))) {\n attributes(this.inputElement, { 'name': this.element.id });\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.checkTimeFormat = function () {\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (!isNullOrUndefined(this.format.skeleton) && this.format.skeleton !== '') {\n var skeletonString = this.format.skeleton;\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: skeletonString });\n }\n else {\n this.formatString = this.globalize.getDatePattern({ type: 'time', skeleton: 'short' });\n }\n }\n else {\n this.formatString = null;\n }\n };\n TimePicker.prototype.checkDateValue = function (value) {\n return (!isNullOrUndefined(value) && value instanceof Date && !isNaN(+value)) ? value : null;\n };\n TimePicker.prototype.createInputElement = function () {\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassesValue = this.cssClass;\n var isBindClearAction = this.enableMask ? false : true;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassesValue = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n bindClearAction: isBindClearAction,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassesValue,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [' e-input-group-icon e-time-icon e-icons']\n }, this.createElement);\n this.inputWrapper.container.style.width = this.setWidth(this.width);\n attributes(this.inputElement, {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'false', 'aria-invalid': 'false'\n });\n if (!this.isNullOrEmpty(this.inputStyle)) {\n Input.addAttributes({ 'style': this.inputStyle }, this.inputElement);\n }\n addClass([this.inputWrapper.container], WRAPPERCLASS);\n };\n TimePicker.prototype.getCldrDateTimeFormat = function () {\n var culture = new Internationalization(this.locale);\n var cldrTime;\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.cldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.checkInvalidValue = function (value) {\n var isInvalid = false;\n if (typeof value !== 'object' && !isNullOrUndefined(value)) {\n var valueString = value;\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n var valueExpression = null;\n var valueExp = null;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n else if (typeof value === 'string') {\n if (!(/^[a-zA-Z0-9- ]*$/).test(value)) {\n valueExpression = this.setCurrentDate(this.getDateObject(value));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n }));\n if (isNullOrUndefined(valueExpression)) {\n valueExpression = this.checkDateValue(this.globalize.parseDate(valueString, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n }));\n }\n }\n }\n }\n valueExp = this.globalize.parseDate(valueString, {\n format: this.getCldrDateTimeFormat(), type: 'datetime'\n });\n valueExpression = (!isNullOrUndefined(valueExp) && valueExp instanceof Date && !isNaN(+valueExp)) ? valueExp : null;\n if (isNullOrUndefined(valueExpression) && valueString.replace(/\\s/g, '').length) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || ((/^[a-zA-Z0-9- ]*$/).test(value)) || isNaN(+new Date('' + valueString))) {\n isInvalid = true;\n }\n else {\n valueExpression = new Date('' + valueString);\n }\n }\n if (isInvalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n this.initValue = null;\n }\n else {\n this.setProperties({ value: valueExpression }, true);\n this.initValue = this.value;\n }\n }\n };\n TimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.cldrFormat = function (type) {\n var cldrDateTimeString;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTimeString = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTimeString = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTimeString;\n };\n // destroy function\n TimePicker.prototype.destroy = function () {\n this.hide();\n this.unBindEvents();\n var ariaAttribute = {\n 'aria-autocomplete': 'list', 'tabindex': '0',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-disabled': 'true', 'aria-invalid': 'false'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n if (this.angularTag === null) {\n this.inputWrapper.container.parentElement.appendChild(this.inputElement);\n }\n if (!isNullOrUndefined(this.cloneElement.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n this.ensureInputAttribute();\n this.enableElement([this.inputElement]);\n this.inputElement.classList.remove('e-input');\n if (isNullOrUndefined(this.cloneElement.getAttribute('disabled'))) {\n Input.setEnabled(true, this.inputElement, this.floatLabelType);\n }\n }\n if (this.inputWrapper.container) {\n detach(this.inputWrapper.container);\n }\n this.inputWrapper = this.popupWrapper = this.cloneElement = undefined;\n this.liCollections = this.timeCollections = this.disableItemCollection = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n _super.prototype.destroy.call(this);\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n this.rippleFn = null;\n this.openPopupEventArgs = null;\n this.selectedElement = null;\n this.listTag = null;\n this.liCollections = null;\n };\n TimePicker.prototype.ensureInputAttribute = function () {\n var propertyList = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n propertyList[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < propertyList.length; i++) {\n if (!isNullOrUndefined(this.cloneElement.getAttribute(propertyList[i]))) {\n this.inputElement.setAttribute(propertyList[i], this.cloneElement.getAttribute(propertyList[i]));\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = this.cloneElement.getAttribute(propertyList[i]);\n }\n }\n else {\n this.inputElement.removeAttribute(propertyList[i]);\n if (propertyList[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n }\n }\n };\n //popup creation\n TimePicker.prototype.popupCreation = function () {\n this.popupWrapper = this.createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_popup', 'style': 'visibility:hidden' }\n });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.generateList();\n append([this.listWrapper], this.popupWrapper);\n }\n this.addSelection();\n this.renderPopup();\n detach(this.popupWrapper);\n };\n TimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.popupWrapper.getBoundingClientRect().height;\n return popupHeight > height ? height : popupHeight;\n };\n TimePicker.prototype.generateList = function () {\n this.createListItems();\n this.wireListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n TimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n this.popupObj = new Popup(this.popupWrapper, {\n width: this.setPopupWidth(this.width),\n zIndex: this.zIndex,\n targetType: 'relative',\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n enableRtl: this.enableRtl,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n offsetY: OFFSETVAL,\n open: function () {\n _this.popupWrapper.style.visibility = 'visible';\n addClass([_this.inputWrapper.buttons[0]], SELECTED);\n }, close: function () {\n removeClass([_this.inputWrapper.buttons[0]], SELECTED);\n _this.unWireListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObj.element);\n _this.popupObj.destroy();\n _this.popupWrapper.innerHTML = '';\n _this.listWrapper = _this.popupWrapper = _this.listTag = undefined;\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (!Browser.isDevice) {\n this.popupObj.collision = { X: 'none', Y: 'flip' };\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObj.element.style.maxHeight = \"100%\";\n this.popupObj.element.style.width = \"100%\";\n }\n else {\n this.popupObj.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.timePopupCloseHandler, this);\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n this.popupWrapper.insertBefore(modelHeader, this.popupWrapper.firstElementChild);\n }\n };\n TimePicker.prototype.timePopupCloseHandler = function (e) {\n this.hide();\n };\n //util function\n TimePicker.prototype.getFormattedValue = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { skeleton: 'medium', type: 'time' });\n }\n };\n TimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = !this.isNullOrEmpty(this.initValue);\n if (this.checkDateValue(dateValue)) {\n var date = value ? this.initValue.getDate() : DAY;\n var month = value ? this.initValue.getMonth() : MONTH;\n var year = value ? this.initValue.getFullYear() : YEAR;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds());\n }\n }\n return null;\n };\n TimePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassesValue = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassesValue !== '') {\n addClass([this.inputWrapper.container], updatedClassesValue.split(' '));\n }\n }\n else if (key === 'style') {\n var timeStyle = this.inputWrapper.container.getAttribute(key);\n timeStyle = !isNullOrUndefined(timeStyle) ? (timeStyle + this.htmlAttributes[\"\" + key]) :\n this.htmlAttributes[\"\" + key];\n this.inputWrapper.container.setAttribute(key, timeStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n };\n TimePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (wrapperAttributes.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n TimePicker.prototype.updateCssClass = function (cssClassNew, cssClassOld) {\n if (!isNullOrUndefined(cssClassOld)) {\n cssClassOld = (cssClassOld.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(cssClassNew)) {\n cssClassNew = (cssClassNew.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(cssClassNew, [this.inputWrapper.container], cssClassOld);\n if (this.popupWrapper) {\n Input.setCssClass(cssClassNew, [this.popupWrapper], cssClassOld);\n }\n };\n TimePicker.prototype.removeErrorClass = function () {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n };\n TimePicker.prototype.checkErrorState = function (val) {\n var value = this.getDateObject(val);\n if ((this.validateState(value) && !this.invalidValueString) ||\n (this.enableMask && this.inputElement.value === this.maskedDateValue)) {\n this.removeErrorClass();\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n };\n TimePicker.prototype.validateInterval = function () {\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.enableElement([this.inputWrapper.buttons[0]]);\n }\n else {\n this.disableTimeIcon();\n }\n };\n TimePicker.prototype.disableTimeIcon = function () {\n this.disableElement([this.inputWrapper.buttons[0]]);\n this.hide();\n };\n TimePicker.prototype.disableElement = function (element) {\n addClass(element, DISABLED);\n };\n TimePicker.prototype.enableElement = function (element) {\n removeClass(element, DISABLED);\n };\n TimePicker.prototype.selectInputText = function () {\n this.inputElement.setSelectionRange(0, (this.inputElement).value.length);\n };\n TimePicker.prototype.setCursorToEnd = function () {\n this.inputElement.setSelectionRange((this.inputElement).value.length, (this.inputElement).value.length);\n };\n TimePicker.prototype.getMeridianText = function () {\n var meridian;\n if (this.locale === 'en' || this.locale === 'en-US') {\n meridian = getValue('dayPeriods.format.wide', getDefaultDateObject());\n }\n else {\n var gregorianFormat = '.dates.calendars.gregorian.dayPeriods.format.abbreviated';\n var mainVal = 'main.';\n meridian = getValue(mainVal + '' + this.locale + gregorianFormat, cldrData);\n }\n return meridian;\n };\n TimePicker.prototype.getCursorSelection = function () {\n var input = (this.inputElement);\n var start = 0;\n var end = 0;\n if (!isNaN(input.selectionStart)) {\n start = input.selectionStart;\n end = input.selectionEnd;\n }\n return { start: Math.abs(start), end: Math.abs(end) };\n };\n TimePicker.prototype.getActiveElement = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n return this.popupWrapper.querySelectorAll('.' + SELECTED);\n }\n else {\n return null;\n }\n };\n TimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n TimePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n width = (width.match(/px|%|em/)) ? width : formatUnit(width);\n }\n else {\n width = '100%';\n }\n return width;\n };\n TimePicker.prototype.setPopupWidth = function (width) {\n width = this.setWidth(width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n TimePicker.prototype.setScrollPosition = function () {\n var element = this.selectedElement;\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else if (this.popupWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n TimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextEle = element.nextElementSibling;\n var height = nextEle ? nextEle.offsetTop : element.offsetTop;\n var liHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n this.popupWrapper.scrollTop = nextEle ? (height - (listHeight / HALFPOSITION + liHeight / HALFPOSITION)) : height;\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.setScrollTo = function () {\n var element;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.popupWrapper.scrollTop = 0;\n }\n };\n TimePicker.prototype.getText = function () {\n return (isNullOrUndefined(this.checkDateValue(this.value))) ? '' : this.getValue(this.value);\n };\n TimePicker.prototype.getValue = function (value) {\n return (isNullOrUndefined(this.checkDateValue(value))) ? null : this.globalize.formatDate(value, {\n format: this.cldrTimeFormat(), type: 'time'\n });\n };\n TimePicker.prototype.cldrDateFormat = function () {\n var cldrDate;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDate = (getValue('dateFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDate = (this.getCultureDateObject(cldrData, '' + this.locale));\n }\n return cldrDate;\n };\n TimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.formatString)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n TimePicker.prototype.dateToNumeric = function () {\n var cldrTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.medium', getDefaultDateObject()));\n }\n else {\n cldrTime = (getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.medium', cldrData));\n }\n return cldrTime;\n };\n TimePicker.prototype.getExactDateTime = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n else {\n return this.globalize.formatDate(value, { format: this.dateToNumeric(), type: 'time' });\n }\n };\n TimePicker.prototype.setValue = function (value) {\n var time = this.checkValue(value);\n if (!this.strictMode && !this.validateState(time)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n if (this.isNullOrEmpty(time)) {\n this.initValue = null;\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.initValue = this.compareFormatChange(time);\n }\n }\n this.updateInput(true, this.initValue);\n };\n TimePicker.prototype.compareFormatChange = function (value) {\n if (isNullOrUndefined(value)) {\n return null;\n }\n return (value !== this.getText()) ? this.getDateObject(value) : this.getDateObject(this.value);\n };\n TimePicker.prototype.updatePlaceHolder = function () {\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n };\n //event related functions\n TimePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n TimePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n this.interopAdaptor.invokeMethodAsync('OnTimeIconClick');\n };\n TimePicker.prototype.popupHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n e.preventDefault();\n if (this.isPopupOpen()) {\n this.closePopup(0, e);\n }\n else {\n this.inputElement.focus();\n this.show(e);\n }\n };\n TimePicker.prototype.mouseDownHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.readonly) {\n this.inputElement.setSelectionRange(0, 0);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n }\n };\n TimePicker.prototype.mouseUpHandler = function (event) {\n if (!this.readonly) {\n event.preventDefault();\n if (this.enableMask) {\n event.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n return;\n }\n else {\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n var curPos = this.getCursorSelection();\n if (!(curPos.start === 0 && curPos.end === this.inputElement.value.length)) {\n if (this.inputElement.value.length > 0) {\n this.cursorDetails = this.focusSelection();\n }\n this.inputElement.setSelectionRange(this.cursorDetails.start, this.cursorDetails.end);\n }\n }\n }\n };\n TimePicker.prototype.focusSelection = function () {\n var regex = new RegExp('^[a-zA-Z0-9]+$');\n var split = this.inputElement.value.split('');\n split.push(' ');\n var curPos = this.getCursorSelection();\n var start = 0;\n var end = 0;\n var isSeparator = false;\n if (!this.isTextSelected) {\n for (var i = 0; i < split.length; i++) {\n if (!regex.test(split[i])) {\n end = i;\n isSeparator = true;\n }\n if (isSeparator) {\n if (curPos.start >= start && curPos.end <= end) {\n // eslint-disable-next-line no-self-assign\n end = end;\n this.isTextSelected = true;\n break;\n }\n else {\n start = i + 1;\n isSeparator = false;\n }\n }\n }\n }\n else {\n start = curPos.start;\n end = curPos.end;\n this.isTextSelected = false;\n }\n return { start: start, end: end };\n };\n TimePicker.prototype.inputHandler = function (event) {\n if (!this.readonly && this.enabled) {\n if (!((event.action == 'right' || event.action == 'left' || event.action == 'tab') || ((event.action == 'home' || event.action == 'end' || event.action == 'up' || event.action == 'down') && !this.isPopupOpen() && !this.enableMask))) {\n event.preventDefault();\n }\n switch (event.action) {\n case 'home':\n case 'end':\n case 'up':\n case 'down':\n if (!this.isPopupOpen()) {\n this.popupCreation();\n this.popupObj.destroy();\n this.popupObj = this.popupWrapper = null;\n }\n if (this.enableMask && !this.readonly && !this.isPopupOpen()) {\n event.preventDefault();\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: event\n });\n }\n if (this.isPopupOpen()) {\n this.keyHandler(event);\n }\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.updateValue(this.valueWithMinutes, event);\n }\n else {\n this.updateValue(this.inputElement.value, event);\n }\n this.hide();\n this.isNavigate = false;\n if (this.isPopupOpen()) {\n event.stopPropagation();\n }\n break;\n case 'open':\n this.show(event);\n break;\n case 'escape':\n this.updateInputValue(this.objToString(this.value));\n if (this.enableMask) {\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.previousState(this.value);\n this.hide();\n break;\n case 'close':\n this.hide();\n break;\n case 'right':\n case 'left':\n case 'tab':\n case 'shiftTab':\n if (!this.isPopupOpen() && this.enableMask && !this.readonly) {\n if ((this.inputElement.selectionStart === 0 && this.inputElement.selectionEnd === this.inputElement.value.length) ||\n (this.inputElement.selectionEnd !== this.inputElement.value.length && event.action === 'tab') ||\n (this.inputElement.selectionStart !== 0 && event.action === 'shiftTab') || (event.action === 'left' || event.action === 'right')) {\n event.preventDefault();\n }\n this.notify('keyDownHandler', { module: 'MaskedDateTime',\n e: event\n });\n }\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n TimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n this.setSelection(li, event);\n if (li && li.classList.contains(LISTCLASS)) {\n this.hide();\n }\n };\n TimePicker.prototype.closePopup = function (delay, e) {\n var _this = this;\n if (this.isPopupOpen() && this.popupWrapper) {\n var args = {\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n name: 'open'\n };\n removeClass([document.body], OVERFLOW);\n this.trigger('close', args, function (args) {\n if (!args.cancel) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: delay ? delay : 0\n };\n _this.popupObj.hide(new Animation(animModel));\n removeClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'false' });\n _this.inputElement.removeAttribute('aria-owns');\n _this.inputElement.removeAttribute('aria-controls');\n _this.inputElement.removeAttribute('aria-activedescendant');\n EventHandler.remove(document, 'mousedown touchstart', _this.documentClickHandler);\n }\n if (Browser.isDevice && _this.modal) {\n _this.modal.style.display = 'none';\n _this.modal.outerHTML = '';\n _this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(_this.mobileTimePopupWrap)) {\n _this.mobileTimePopupWrap.remove();\n _this.mobileTimePopupWrap = null;\n }\n }\n if (Browser.isDevice && _this.allowEdit && !_this.readonly) {\n _this.inputElement.removeAttribute('readonly');\n }\n });\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n };\n TimePicker.prototype.disposeServerPopup = function () {\n if (this.popupWrapper) {\n this.popupWrapper.style.visibility = 'hidden';\n this.popupWrapper.style.top = '-9999px';\n this.popupWrapper.style.left = '-9999px';\n this.popupWrapper.style.width = '0px';\n this.popupWrapper.style.height = '0px';\n }\n };\n TimePicker.prototype.checkValueChange = function (event, isNavigation) {\n if (!this.strictMode && !this.validateState(this.valueWithMinutes)) {\n if (this.checkDateValue(this.valueWithMinutes) === null) {\n this.initValue = this.valueWithMinutes = null;\n }\n this.setProperties({ value: this.compareFormatChange(this.inputElement.value) }, true);\n this.initValue = this.valueWithMinutes = this.compareFormatChange(this.inputElement.value);\n this.prevValue = this.inputElement.value;\n if (+this.prevDate !== +this.value) {\n this.changeEvent(event);\n }\n }\n else {\n if (!isNavigation) {\n if ((this.prevValue !== this.inputElement.value) || isNullOrUndefined(this.checkDateValue(this.value))) {\n this.valueProcess(event, this.compareFormatChange(this.inputElement.value));\n }\n }\n else {\n var value = this.getDateObject(new Date(this.timeCollections[this.activeIndex]));\n if (+this.prevDate !== +value) {\n this.valueProcess(event, value);\n }\n }\n }\n };\n TimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setHover(currentLi, HOVER);\n };\n TimePicker.prototype.setHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeHover(className);\n addClass([li], className);\n if (className === NAVIGATION) {\n li.setAttribute('aria-selected', 'true');\n }\n }\n };\n TimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li)) {\n this.checkValue(li.getAttribute('data-value'));\n if (this.enableMask) {\n this.createMask();\n }\n this.selectedElement = li;\n this.activeIndex = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.checkValueChange(event, true);\n }\n };\n TimePicker.prototype.onMouseLeave = function () {\n this.removeHover(HOVER);\n };\n TimePicker.prototype.scrollHandler = function () {\n if (this.getModuleName() === 'timepicker' && Browser.isDevice) {\n return;\n }\n else {\n this.hide();\n }\n };\n TimePicker.prototype.setMinMax = function (minVal, maxVal) {\n if (isNullOrUndefined(this.checkDateValue(minVal))) {\n this.initMin = this.getDateObject('12:00:00 AM');\n }\n if (isNullOrUndefined(this.checkDateValue(maxVal))) {\n this.initMax = this.getDateObject('11:59:59 PM');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n TimePicker.prototype.validateMinMax = function (dateVal, minVal, maxVal) {\n var value = dateVal instanceof Date ? dateVal : this.getDateObject(dateVal);\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n dateVal = this.strictOperation(this.initMin, this.initMax, dateVal, value);\n }\n else if (+(this.createDateObj(this.getFormattedValue(this.initMin))) >\n +(this.createDateObj(this.getFormattedValue(this.initMax)))) {\n this.disableTimeIcon();\n }\n if (this.strictMode) {\n dateVal = this.valueIsDisable(dateVal) ? dateVal : null;\n }\n this.checkErrorState(dateVal);\n return dateVal;\n };\n TimePicker.prototype.valueIsDisable = function (value) {\n if (this.disableItemCollection.length > 0) {\n if (this.disableItemCollection.length === this.timeCollections.length) {\n return false;\n }\n var time = value instanceof Date ? this.objToString(value) : value;\n for (var index = 0; index < this.disableItemCollection.length; index++) {\n if (time === this.disableItemCollection[index]) {\n return false;\n }\n }\n }\n return true;\n };\n TimePicker.prototype.validateState = function (val) {\n if (!this.strictMode) {\n if (this.valueIsDisable(val)) {\n var value = typeof val === 'string' ? this.setCurrentDate(this.getDateObject(val)) :\n this.setCurrentDate(this.getDateObject(val));\n var maxValue = this.setCurrentDate(this.getDateObject(this.initMax));\n var minValue = this.setCurrentDate(this.getDateObject(this.initMin));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n if ((+(value) > +(maxValue)) || (+(value) < +(minValue))) {\n return false;\n }\n }\n else {\n if ((+(maxValue) < +(minValue)) || this.inputElement.value !== '') {\n return false;\n }\n }\n }\n else {\n return false;\n }\n }\n return true;\n };\n TimePicker.prototype.strictOperation = function (minimum, maximum, dateVal, val) {\n var maxValue = this.createDateObj(this.getFormattedValue(maximum));\n var minValue = this.createDateObj(this.getFormattedValue(minimum));\n var value = this.createDateObj(this.getFormattedValue(val));\n if (this.strictMode) {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n this.initValue = this.getDateObject(maxValue);\n this.updateInputValue(this.getValue(this.initValue));\n if (this.enableMask) {\n this.createMask();\n }\n return this.inputElement.value;\n }\n else if (+minValue >= +value) {\n return this.getDateObject(minValue);\n }\n else if (+value >= +maxValue || +minValue === +maxValue) {\n return this.getDateObject(maxValue);\n }\n }\n else {\n if (+minValue > +maxValue) {\n this.disableTimeIcon();\n if (!isNaN(+this.createDateObj(dateVal))) {\n return dateVal;\n }\n }\n }\n return dateVal;\n };\n TimePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.popupHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n EventHandler.add(this.inputElement, 'input', this.inputEventHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyConfigure = extend(this.keyConfigure, this.keyConfigs);\n this.inputEvent = new KeyboardEvents(this.inputWrapper.container, {\n keyAction: this.inputHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n if (this.showClearButton && this.inputElement) {\n EventHandler.add(this.inputElement, 'mousedown', this.mouseDownHandler, this);\n }\n }\n };\n TimePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n TimePicker.prototype.formResetHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var timeValue = this.inputElement.getAttribute('value');\n var val = this.checkDateValue(this.inputEleValue);\n if (this.element.tagName === 'EJS-TIMEPICKER') {\n val = null;\n timeValue = '';\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: val }, true);\n this.prevDate = this.value;\n this.valueWithMinutes = this.value;\n this.initValue = this.value;\n if (this.inputElement) {\n this.updateInputValue(timeValue);\n if (this.enableMask) {\n if (!timeValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n this.createMask();\n }\n this.checkErrorState(timeValue);\n this.prevValue = this.inputElement.value;\n }\n }\n };\n TimePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n TimePicker.prototype.inputEventHandler = function () {\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n TimePicker.prototype.unBindEvents = function () {\n if (this.inputWrapper) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.popupHandler);\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'input', this.inputEventHandler);\n if (this.inputEvent) {\n this.inputEvent.destroy();\n }\n EventHandler.remove(this.inputElement, 'mousedown touchstart', this.mouseDownHandler);\n if (this.showClearButton && !isNullOrUndefined(this.inputWrapper) && !isNullOrUndefined(this.inputWrapper.clearButton)) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.clearHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n TimePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.clearHandler, this);\n }\n };\n TimePicker.prototype.raiseClearedEvent = function (e) {\n var clearedArgs = {\n event: e\n };\n this.trigger('cleared', clearedArgs);\n };\n TimePicker.prototype.clearHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n if (!isNullOrUndefined(this.value)) {\n this.clear(e);\n }\n else {\n this.resetState();\n this.raiseClearedEvent(e);\n }\n if (this.popupWrapper) {\n this.popupWrapper.scrollTop = 0;\n }\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n TimePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.initValue = null;\n this.resetState();\n this.raiseClearedEvent(event);\n this.changeEvent(event);\n };\n TimePicker.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.zIndex = this.zIndex;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['step', 'disabled', 'readonly', 'style', 'name', 'value', 'min', 'max', 'placeholder'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'style':\n this.inputStyle = this.inputElement.getAttribute(prop);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.timeOptions) || (this.timeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.initValue = value;\n this.updateInput(false, this.initValue);\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n TimePicker.prototype.setCurrentDate = function (value) {\n if (isNullOrUndefined(this.checkDateValue(value))) {\n return null;\n }\n return new Date(YEAR, MONTH, DAY, value.getHours(), value.getMinutes(), value.getSeconds());\n };\n TimePicker.prototype.getTextFormat = function () {\n var time = 0;\n if (this.cldrTimeFormat().split(' ')[0] === 'a' || this.cldrTimeFormat().indexOf('a') === 0) {\n time = 1;\n }\n else if (this.cldrTimeFormat().indexOf('a') < 0) {\n var strArray = this.cldrTimeFormat().split(' ');\n for (var i = 0; i < strArray.length; i++) {\n if (strArray[i].toLowerCase().indexOf('h') >= 0) {\n time = i;\n break;\n }\n }\n }\n return time;\n };\n TimePicker.prototype.updateValue = function (value, event) {\n var val;\n if (this.isNullOrEmpty(value)) {\n this.resetState();\n }\n else {\n val = this.checkValue(value);\n if (this.strictMode) {\n // this case set previous value to the text box when set invalid date\n var inputVal = (val === null && value.trim().length > 0) ?\n this.previousState(this.prevDate) : this.inputElement.value;\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n if (!inputVal) {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(val) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(val) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n }\n this.checkValueChange(event, typeof value === 'string' ? false : true);\n };\n TimePicker.prototype.previousState = function (date) {\n var value = this.getDateObject(date);\n for (var i = 0; i < this.timeCollections.length; i++) {\n if (+value === this.timeCollections[i]) {\n this.activeIndex = i;\n this.selectedElement = this.liCollections[i];\n this.valueWithMinutes = new Date(this.timeCollections[i]);\n break;\n }\n }\n return this.prevValue;\n };\n TimePicker.prototype.resetState = function () {\n this.removeSelection();\n Input.setValue('', this.inputElement, this.floatLabelType, false);\n this.valueWithMinutes = this.activeIndex = null;\n if (!this.strictMode) {\n this.checkErrorState(null);\n }\n };\n TimePicker.prototype.objToString = function (val) {\n if (isNullOrUndefined(this.checkDateValue(val))) {\n return null;\n }\n else {\n return this.globalize.formatDate(val, { format: this.cldrTimeFormat(), type: 'time' });\n }\n };\n TimePicker.prototype.checkValue = function (value) {\n if (!this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.validateValue(date, value);\n }\n this.resetState();\n return this.valueWithMinutes = null;\n };\n TimePicker.prototype.validateValue = function (date, value) {\n var time;\n var val = this.validateMinMax(value, this.min, this.max);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== this.getFormattedValue(this.value)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = this.objToString(this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = this.objToString(this.valueWithMinutes);\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n var value_1 = val.trim().length > 0 ? val : '';\n this.updateInputValue(value_1);\n if (this.enableMask) {\n if (!value_1) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n else {\n this.updateInputValue(time);\n if (this.enableMask) {\n if (time === '') {\n this.updateInputValue(this.maskedDateValue);\n }\n if (isNullOrUndefined(time) && value !== this.maskedDateValue) {\n this.createMask();\n }\n if (isNullOrUndefined(time) && value === this.maskedDateValue) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n }\n return time;\n };\n TimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n TimePicker.prototype.findNextElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var timeVal = null;\n var count = this.liCollections.length;\n var collections = this.timeCollections;\n if (!isNullOrUndefined(this.checkDateValue(value)) || !isNullOrUndefined(this.activeIndex)) {\n if (event.action === 'home') {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(collections.length - 1, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < count; i++) {\n if (+value < this.timeCollections[i]) {\n var index = this.validLiElement(i);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === count - 1) {\n var index = this.validLiElement(0);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n else {\n for (var i = count - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n var index = this.validLiElement(i, true);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n else if (i === 0) {\n var index = this.validLiElement(count - 1);\n timeVal = +(this.createDateObj(new Date(this.timeCollections[index])));\n this.activeIndex = index;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(isNullOrUndefined(timeVal) ? null : new Date(timeVal));\n }\n else {\n this.selectNextItem(event);\n }\n };\n TimePicker.prototype.selectNextItem = function (event) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n };\n TimePicker.prototype.elementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value))) {\n this.checkValue(value);\n }\n };\n TimePicker.prototype.validLiElement = function (index, backward) {\n var elementIndex = null;\n var items = isNullOrUndefined(this.popupWrapper) ? this.liCollections :\n this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n var isCheck = true;\n if (items.length) {\n if (backward) {\n for (var i = index; i >= 0; i--) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === 0) {\n if (isCheck) {\n index = i = items.length;\n isCheck = false;\n }\n }\n }\n }\n else {\n for (var i = index; i <= items.length - 1; i++) {\n if (!items[i].classList.contains(DISABLED)) {\n elementIndex = i;\n break;\n }\n else if (i === items.length - 1) {\n if (isCheck) {\n index = i = -1;\n isCheck = false;\n }\n }\n }\n }\n }\n return elementIndex;\n };\n TimePicker.prototype.keyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0 || !isNullOrUndefined(this.inputWrapper)\n && this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n return;\n }\n var count = this.timeCollections.length;\n if (isNullOrUndefined(this.getActiveElement()) || this.getActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n var index = this.validLiElement(0, event.action === 'down' ? false : true);\n this.activeIndex = index;\n this.selectedElement = this.liCollections[index];\n this.elementValue(new Date(this.timeCollections[index]));\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n this.findNextElement(event);\n }\n }\n else {\n var nextItem = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (count) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (count - 1) : this.activeIndex;\n this.activeIndex = index = this.validLiElement(this.activeIndex, (event.keyCode === 40 || event.keyCode === 39) ?\n false : true);\n nextItem = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n var index = this.validLiElement(0);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n else if (event.action === 'end') {\n var index = this.validLiElement(count - 1, true);\n this.activeIndex = index;\n nextItem = this.timeCollections[index];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.elementValue(new Date(nextItem));\n }\n this.isNavigate = true;\n this.setHover(this.selectedElement, NAVIGATION);\n this.setActiveDescendant();\n if (this.enableMask) {\n this.selectInputText();\n }\n if (this.isPopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setScrollPosition();\n }\n };\n TimePicker.prototype.getCultureTimeObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.timeFormats.short', ld);\n };\n TimePicker.prototype.getCultureDateObject = function (ld, c) {\n return getValue('main.' + c + '.dates.calendars.gregorian.dateFormats.short', ld);\n };\n TimePicker.prototype.wireListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n TimePicker.prototype.unWireListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n if (!Browser.isDevice) {\n EventHandler.remove(this.listWrapper, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.listWrapper, 'mouseout', this.onMouseLeave);\n }\n }\n };\n TimePicker.prototype.valueProcess = function (event, value) {\n var result = (isNullOrUndefined(this.checkDateValue(value))) ? null : value;\n if (+this.prevDate !== +result) {\n this.initValue = result;\n this.changeEvent(event);\n }\n };\n TimePicker.prototype.changeEvent = function (e) {\n this.addSelection();\n this.updateInput(true, this.initValue);\n var eventArgs = {\n event: (e || null),\n value: this.value,\n text: (this.inputElement).value,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n eventArgs.value = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n this.prevDate = this.valueWithMinutes || this.getDateObject(this.inputElement.value);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n this.invalidValueString = null;\n this.checkErrorState(this.value);\n };\n TimePicker.prototype.updateInput = function (isUpdate, date) {\n if (isUpdate) {\n this.prevValue = this.getValue(date);\n }\n this.prevDate = this.valueWithMinutes = date;\n if ((typeof date !== 'number') || (this.value && +new Date(+this.value).setMilliseconds(0)) !== +date) {\n this.setProperties({ value: date }, true);\n if (this.enableMask && this.value) {\n this.createMask();\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.checkErrorState(this.invalidValueString);\n this.updateInputValue(this.invalidValueString);\n }\n this.clearIconState();\n };\n TimePicker.prototype.setActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n TimePicker.prototype.removeSelection = function () {\n this.removeHover(HOVER);\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + SELECTED);\n if (items.length) {\n removeClass(items, SELECTED);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.removeHover = function (className) {\n var hoveredItem = this.getHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n if (className === NAVIGATION) {\n hoveredItem[0].removeAttribute('aria-selected');\n }\n }\n };\n TimePicker.prototype.getHoverItem = function (className) {\n var hoveredItem;\n if (!isNullOrUndefined(this.popupWrapper)) {\n hoveredItem = this.popupWrapper.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n TimePicker.prototype.setActiveClass = function () {\n if (!isNullOrUndefined(this.popupWrapper)) {\n var items = this.popupWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if ((this.timeCollections[i] === +this.getDateObject(this.valueWithMinutes))) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n };\n TimePicker.prototype.addSelection = function () {\n this.selectedElement = null;\n this.removeSelection();\n this.setActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], SELECTED);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n TimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n TimePicker.prototype.createDateObj = function (val) {\n var formatStr = null;\n var today = this.globalize.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n var value = null;\n if (typeof val === 'string') {\n if (val.toUpperCase().indexOf('AM') > -1 || val.toUpperCase().indexOf('PM') > -1) {\n today = this.defaultCulture.formatDate(new Date(), { format: formatStr, skeleton: 'short', type: 'date' });\n value = isNaN(+new Date(today + ' ' + val)) ? null : new Date(new Date(today + ' ' + val).setMilliseconds(0));\n if (isNullOrUndefined(value)) {\n value = this.timeParse(today, val);\n }\n }\n else {\n value = this.timeParse(today, val);\n }\n }\n else if (val instanceof Date) {\n value = val;\n }\n return value;\n };\n TimePicker.prototype.timeParse = function (today, val) {\n var value;\n value = this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.cldrTimeFormat(), type: 'datetime'\n });\n value = isNullOrUndefined(value) ? this.globalize.parseDate(today + ' ' + val, {\n format: this.cldrDateFormat() + ' ' + this.dateToNumeric(), type: 'datetime'\n }) : value;\n value = isNullOrUndefined(value) ? value : new Date(value.setMilliseconds(0));\n return value;\n };\n TimePicker.prototype.createListItems = function () {\n var _this = this;\n this.listWrapper = this.createElement('div', { className: CONTENT, attrs: { 'tabindex': '-1' } });\n var start;\n var interval = this.step * 60000;\n var listItems = [];\n this.timeCollections = [];\n this.disableItemCollection = [];\n start = +(this.getDateObject(this.initMin).setMilliseconds(0));\n var end = +(this.getDateObject(this.initMax).setMilliseconds(0));\n while (end >= start) {\n this.timeCollections.push(start);\n listItems.push(this.globalize.formatDate(new Date(start), { format: this.cldrTimeFormat(), type: 'time' }));\n start += interval;\n }\n var listBaseOptions = {\n itemCreated: function (args) {\n var eventArgs = {\n element: args.item,\n text: args.text, value: _this.getDateObject(args.text), isDisabled: false\n };\n _this.trigger('itemRender', eventArgs, function (eventArgs) {\n if (eventArgs.isDisabled) {\n eventArgs.element.classList.add(DISABLED);\n }\n if (eventArgs.element.classList.contains(DISABLED)) {\n _this.disableItemCollection.push(eventArgs.element.getAttribute('data-value'));\n }\n });\n }\n };\n this.listTag = ListBase.createList(this.createElement, listItems, listBaseOptions, true);\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options', 'tabindex': '0' });\n append([this.listTag], this.listWrapper);\n };\n TimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + this.popupObj.element.id + '\"]')) && target !== this.inputElement\n && target !== (this.inputWrapper && this.inputWrapper.buttons[0]) &&\n target !== (this.inputWrapper && this.inputWrapper.clearButton) &&\n target !== (this.inputWrapper && this.inputWrapper.container)\n && (!target.classList.contains('e-dlg-overlay'))) {\n if (this.isPopupOpen()) {\n this.hide();\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.inputElement)\n && (target === this.popupWrapper);\n }\n }\n };\n TimePicker.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n TimePicker.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement, this.floatLabelType);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'false' });\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hide();\n addClass([this.inputWrapper.container], DISABLED);\n attributes(this.inputElement, { 'aria-disabled': 'true' });\n this.inputElement.tabIndex = -1;\n }\n };\n TimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.initMin = this.checkDateValue(new Date(this.checkInValue(date.min)));\n this.setProperties({ min: this.initMin }, true);\n }\n else {\n this.initMax = this.checkDateValue(new Date(this.checkInValue(date.max)));\n this.setProperties({ max: this.initMax }, true);\n }\n if (this.inputElement.value === '') {\n this.validateMinMax(this.value, this.min, this.max);\n }\n else {\n this.checkValue(this.inputElement.value);\n }\n this.checkValueChange(null, false);\n };\n TimePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isPreventBlur && this.isPopupOpen()) {\n this.inputElement.focus();\n return;\n }\n this.closePopup(0, e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n if (this.getText() !== this.inputElement.value) {\n this.updateValue((this.inputElement).value, e);\n }\n else if (this.inputElement.value.trim().length === 0) {\n this.resetState();\n }\n this.cursorDetails = null;\n this.isNavigate = false;\n if (this.inputElement.value === '') {\n this.invalidValueString = null;\n }\n };\n /**\n * Focuses out the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [FOCUS]);\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n };\n TimePicker.prototype.isPopupOpen = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + ROOT)) {\n return true;\n }\n return false;\n };\n TimePicker.prototype.inputFocusHandler = function () {\n if (!this.enabled) {\n return;\n }\n var focusArguments = {\n model: this\n };\n if (!this.readonly && !Browser.isDevice && !this.enableMask) {\n this.selectInputText();\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n this.trigger('focus', focusArguments);\n this.clearIconState();\n if (this.openOnFocus) {\n this.show();\n }\n };\n /**\n * Focused the TimePicker textbox element.\n *\n * @returns {void}\n */\n TimePicker.prototype.focusIn = function () {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n }\n };\n /**\n * Hides the TimePicker popup.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.hide = function () {\n this.closePopup(100, null);\n this.clearIconState();\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup to show the list items.\n *\n * @returns {void}\n\n */\n TimePicker.prototype.show = function (event) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupWrapper) {\n return;\n }\n else {\n this.popupCreation();\n if (Browser.isDevice && this.listWrapper) {\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n document.body.appendChild(this.modal);\n }\n if (Browser.isDevice) {\n this.mobileTimePopupWrap = this.createElement('div', { className: 'e-timepicker-mob-popup-wrap' });\n document.body.appendChild(this.mobileTimePopupWrap);\n }\n this.openPopupEventArgs = {\n popup: this.popupObj || null,\n cancel: false,\n event: event || null,\n name: 'open',\n appendTo: Browser.isDevice ? this.mobileTimePopupWrap : document.body\n };\n var eventArgs = this.openPopupEventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.openPopupEventArgs = eventArgs;\n if (!_this.openPopupEventArgs.cancel && !_this.inputWrapper.buttons[0].classList.contains(DISABLED)) {\n _this.openPopupEventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupAlignment(_this.openPopupEventArgs);\n _this.setScrollPosition();\n if (!Browser.isDevice) {\n _this.inputElement.focus();\n }\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION\n };\n _this.popupObj.refreshPosition(_this.anchor);\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n _this.setActiveDescendant();\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n attributes(_this.inputElement, { 'aria-controls': _this.inputElement.id });\n addClass([_this.inputWrapper.container], FOCUS);\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n _this.setOverlayIndex(_this.mobileTimePopupWrap, _this.popupObj.element, _this.modal, Browser.isDevice);\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.listTag = undefined;\n _this.liCollections = _this.timeCollections = _this.disableItemCollection = [];\n _this.popupObj = null;\n }\n });\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobileTimePopupWrap.appendChild(dlgOverlay);\n }\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n TimePicker.prototype.setOverlayIndex = function (popupWrapper, timePopupElement, modal, isDevice) {\n if (isDevice && !isNullOrUndefined(timePopupElement) && !isNullOrUndefined(modal) && !isNullOrUndefined(popupWrapper)) {\n var index = parseInt(timePopupElement.style.zIndex, 10) ? parseInt(timePopupElement.style.zIndex, 10) : 1000;\n modal.style.zIndex = (index - 1).toString();\n popupWrapper.style.zIndex = index.toString();\n }\n };\n TimePicker.prototype.formatValues = function (type) {\n var value;\n if (typeof type === 'number') {\n value = formatUnit(type);\n }\n else if (typeof type === 'string') {\n value = (type.match(/px|%|em/)) ? type : isNaN(parseInt(type, 10)) ? type : formatUnit(type);\n }\n return value;\n };\n TimePicker.prototype.popupAlignment = function (args) {\n args.popup.position.X = this.formatValues(args.popup.position.X);\n args.popup.position.Y = this.formatValues(args.popup.position.Y);\n if (!isNaN(parseFloat(args.popup.position.X)) || !isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.targetType = 'container';\n }\n if (!isNaN(parseFloat(args.popup.position.X))) {\n this.popupObj.offsetX = parseFloat(args.popup.position.X);\n }\n if (!isNaN(parseFloat(args.popup.position.Y))) {\n this.popupObj.offsetY = parseFloat(args.popup.position.Y);\n }\n if (!Browser.isDevice) {\n switch (args.popup.position.X) {\n case 'left':\n break;\n case 'right':\n args.popup.offsetX = this.containerStyle.width;\n break;\n case 'center':\n args.popup.offsetX = -(this.containerStyle.width / 2);\n break;\n }\n switch (args.popup.position.Y) {\n case 'top':\n break;\n case 'bottom':\n break;\n case 'center':\n args.popup.offsetY = -(this.containerStyle.height / 2);\n break;\n }\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.inputWrapper.container;\n this.anchor = this.inputElement;\n this.popupObj.targetType = 'relative';\n }\n }\n else {\n if (args.popup.position.X === 'center' && args.popup.position.Y === 'center') {\n this.popupObj.relateTo = this.anchor = document.body;\n this.popupObj.offsetY = 0;\n this.popupObj.targetType = 'container';\n this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained upon browser refresh.\n *\n * @returns {string}\n */\n TimePicker.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * To get component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n TimePicker.prototype.getModuleName = function () {\n return 'timepicker';\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {TimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {TimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n TimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement, this.floatLabelType);\n if (this.readonly) {\n this.hide();\n }\n this.setTimeAllowEdit();\n break;\n case 'enabled':\n this.setProperties({ enabled: newProp.enabled }, true);\n this.setEnable();\n break;\n case 'allowEdit':\n this.setTimeAllowEdit();\n break;\n case 'enableRtl':\n this.setProperties({ enableRtl: newProp.enableRtl }, true);\n this.setEnableRtl();\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n this.setZIndex();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n break;\n case 'locale':\n this.setProperties({ locale: newProp.locale }, true);\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.timeOptions && this.timeOptions.placeholder == null) {\n this.updatePlaceHolder();\n }\n this.setValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'width':\n setStyleAttribute(this.inputWrapper.container, { 'width': this.setWidth(newProp.width) });\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkTimeFormat();\n this.setValue(this.value);\n if (this.enableMask) {\n this.createMask();\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'value':\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n if (!this.invalidValueString) {\n if (typeof newProp.value === 'string') {\n this.setProperties({ value: this.checkDateValue(new Date(newProp.value)) }, true);\n newProp.value = this.value;\n }\n else {\n if ((newProp.value && +new Date(+newProp.value).setMilliseconds(0)) !== +this.value) {\n newProp.value = this.checkDateValue(new Date('' + newProp.value));\n }\n }\n this.initValue = newProp.value;\n newProp.value = this.compareFormatChange(this.checkValue(newProp.value));\n }\n else {\n this.updateInputValue(this.invalidValueString);\n this.checkErrorState(this.invalidValueString);\n }\n if (this.enableMask && isNullOrUndefined(newProp.value)) {\n this.updateInputValue(this.maskedDateValue);\n this.checkErrorState(this.maskedDateValue);\n }\n this.checkValueChange(null, false);\n if (this.isPopupOpen()) {\n this.setScrollPosition();\n }\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n if (newProp.strictMode) {\n this.checkErrorState(null);\n }\n this.setProperties({ strictMode: newProp.strictMode }, true);\n this.checkValue((this.inputElement).value);\n this.checkValueChange(null, false);\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo)))) {\n if (this.popupWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkInValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n }\n }\n };\n TimePicker.prototype.checkInValue = function (inValue) {\n if (inValue instanceof Date) {\n return (inValue.toUTCString());\n }\n else {\n return ('' + inValue);\n }\n };\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property({})\n ], TimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('Never')\n ], TimePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(1000)\n ], TimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(30)\n ], TimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(true)\n ], TimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], TimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], TimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Property(null)\n ], TimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"itemRender\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], TimePicker.prototype, \"focus\", void 0);\n TimePicker = __decorate([\n NotifyPropertyChanges\n ], TimePicker);\n return TimePicker;\n}(Component));\nexport { TimePicker };\n/* eslint-enable @typescript-eslint/no-explicit-any */\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Event, compile, KeyboardEvents, append, select } from '@syncfusion/ej2-base';\nimport { attributes, isNullOrUndefined, getUniqueID, formatUnit, isUndefined, getValue } from '@syncfusion/ej2-base';\nimport { Animation, Browser, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, prepend, detach, classList } from '@syncfusion/ej2-base';\nimport { Popup, isCollide, createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { incrementalSearch, resetIncrementalSearchValues } from '../common/incremental-search';\nimport { DropDownBase, dropDownBaseClasses } from '../drop-down-base/drop-down-base';\nimport { DataManager, Query, Predicate } from '@syncfusion/ej2-data';\nimport { Skeleton } from '@syncfusion/ej2-notifications';\n[];\n// don't use space in classnames\nexport var dropDownListClasses = {\n root: 'e-dropdownlist',\n hover: dropDownBaseClasses.hover,\n selected: dropDownBaseClasses.selected,\n rtl: dropDownBaseClasses.rtl,\n li: dropDownBaseClasses.li,\n disable: dropDownBaseClasses.disabled,\n base: dropDownBaseClasses.root,\n focus: dropDownBaseClasses.focus,\n content: dropDownBaseClasses.content,\n input: 'e-input-group',\n inputFocus: 'e-input-focus',\n icon: 'e-input-group-icon e-ddl-icon',\n iconAnimation: 'e-icon-anim',\n value: 'e-input-value',\n device: 'e-ddl-device',\n backIcon: 'e-input-group-icon e-back-icon e-icons',\n filterBarClearIcon: 'e-input-group-icon e-clear-icon e-icons',\n filterInput: 'e-input-filter',\n filterParent: 'e-filter-parent',\n mobileFilter: 'e-ddl-device-filter',\n footer: 'e-ddl-footer',\n header: 'e-ddl-header',\n clearIcon: 'e-clear-icon',\n clearIconHide: 'e-clear-icon-hide',\n popupFullScreen: 'e-popup-full-page',\n disableIcon: 'e-ddl-disable-icon',\n hiddenElement: 'e-ddl-hidden',\n virtualList: 'e-list-item e-virtual-list',\n};\nvar inputObject = {\n container: null,\n buttons: []\n};\n/**\n * The DropDownList component contains a list of predefined values from which you can\n * choose a single value.\n * ```html\n * \n * ```\n * ```typescript\n * let dropDownListObj:DropDownList = new DropDownList();\n * dropDownListObj.appendTo(\"#list\");\n * ```\n */\nvar DropDownList = /** @class */ (function (_super) {\n __extends(DropDownList, _super);\n /**\n * * Constructor for creating the DropDownList component.\n *\n * @param {DropDownListModel} options - Specifies the DropDownList model.\n * @param {string | HTMLElement} element - Specifies the element to render as component.\n * @private\n */\n function DropDownList(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.skeletonCount = 32;\n _this.isListSearched = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.virtualListHeight = 0;\n _this.isVirtualScrolling = false;\n _this.isPreventScrollAction = false;\n _this.scrollPreStartIndex = 0;\n _this.isScrollActionTriggered = false;\n _this.previousStartIndex = 0;\n _this.isMouseScrollAction = false;\n _this.isKeyBoardAction = false;\n _this.isUpwardScrolling = false;\n _this.startIndex = 0;\n _this.currentPageNumber = 0;\n _this.pageCount = 0;\n _this.isPreventKeyAction = false;\n _this.generatedDataObject = {};\n _this.incrementalQueryString = '';\n _this.incrementalEndIndex = 0;\n _this.incrementalStartIndex = 0;\n _this.incrementalPreQueryString = '';\n _this.isTouched = false;\n _this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.selectedValueInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n _this.IsScrollerAtEnd = function () {\n return this.list && this.list.scrollTop + this.list.clientHeight >= this.list.scrollHeight;\n };\n return _this;\n }\n /**\n * Initialize the event handler.\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.preRender = function () {\n this.valueTempElement = null;\n this.element.style.opacity = '0';\n this.initializeData();\n _super.prototype.preRender.call(this);\n this.activeIndex = this.index;\n this.queryString = '';\n };\n DropDownList.prototype.initializeData = function () {\n this.isPopupOpen = false;\n this.isDocumentClick = false;\n this.isInteracted = false;\n this.isFilterFocus = false;\n this.beforePopupOpen = false;\n this.initial = true;\n this.initRemoteRender = false;\n this.isNotSearchList = false;\n this.isTyped = false;\n this.isSelected = false;\n this.preventFocus = false;\n this.preventAutoFill = false;\n this.isValidKey = false;\n this.typedString = '';\n this.isEscapeKey = false;\n this.isPreventBlur = false;\n this.isTabKey = false;\n this.actionCompleteData = { isUpdated: false };\n this.actionData = { isUpdated: false };\n this.prevSelectPoints = {};\n this.isSelectCustom = false;\n this.isDropDownClick = false;\n this.preventAltUp = false;\n this.isCustomFilter = false;\n this.isSecondClick = false;\n this.previousValue = null;\n this.keyConfigure = {\n tab: 'tab',\n enter: '13',\n escape: '27',\n end: '35',\n home: '36',\n down: '40',\n up: '38',\n pageUp: '33',\n pageDown: '34',\n open: 'alt+40',\n close: 'shift+tab',\n hide: 'alt+38',\n space: '32'\n };\n this.viewPortInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount,\n };\n };\n DropDownList.prototype.setZIndex = function () {\n if (this.popupObj) {\n this.popupObj.setProperties({ 'zIndex': this.zIndex });\n }\n };\n DropDownList.prototype.requiredModules = function () {\n var modules = [];\n if (this.enableVirtualization) {\n modules.push({ args: [this], member: 'VirtualScroll' });\n }\n return modules;\n };\n DropDownList.prototype.renderList = function (e, isEmptyData) {\n _super.prototype.render.call(this, e, isEmptyData);\n if (!(this.dataSource instanceof DataManager)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n this.unWireListEvents();\n this.wireListEvents();\n };\n DropDownList.prototype.floatLabelChange = function () {\n if (this.getModuleName() === 'dropdownlist' && this.floatLabelType === 'Auto') {\n var floatElement = this.inputWrapper.container.querySelector('.e-float-text');\n if (this.inputElement.value !== '' || this.isInteracted) {\n classList(floatElement, ['e-label-top'], ['e-label-bottom']);\n }\n else {\n classList(floatElement, ['e-label-bottom'], ['e-label-top']);\n }\n }\n };\n DropDownList.prototype.resetHandler = function (e) {\n e.preventDefault();\n this.clearAll(e);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n this.virtualListInfo = null;\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n }\n };\n DropDownList.prototype.resetFocusElement = function () {\n this.removeHover();\n this.removeSelection();\n this.removeFocus();\n this.list.scrollTop = 0;\n if (this.getModuleName() !== 'autocomplete' && !isNullOrUndefined(this.ulElement)) {\n var li = this.ulElement.querySelector('.' + dropDownListClasses.li);\n if (this.enableVirtualization) {\n li = this.liCollections[this.skeletonCount];\n }\n if (li) {\n li.classList.add(dropDownListClasses.focus);\n }\n }\n };\n DropDownList.prototype.clearAll = function (e, properties) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (isNullOrUndefined(properties) || (!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.isActive = true;\n this.resetSelection(properties);\n }\n var dataItem = this.getItemData();\n if (this.previousValue === dataItem.value) {\n return;\n }\n this.onChangeEvent(e);\n this.checkAndResetCache();\n if (this.enableVirtualization) {\n this.updateInitialData();\n }\n };\n DropDownList.prototype.resetSelection = function (properties) {\n if (this.list) {\n if ((!isNullOrUndefined(properties) &&\n (isNullOrUndefined(properties.dataSource) ||\n (!(properties.dataSource instanceof DataManager) && properties.dataSource.length === 0)))) {\n this.selectedLI = null;\n this.actionCompleteData.isUpdated = false;\n this.actionCompleteData.ulElement = null;\n this.actionCompleteData.list = null;\n this.resetList(properties.dataSource);\n }\n else {\n if (this.allowFiltering && this.getModuleName() !== 'autocomplete'\n && !isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list) &&\n this.actionCompleteData.list.length > 0) {\n this.onActionComplete(this.actionCompleteData.ulElement.cloneNode(true), this.actionCompleteData.list);\n }\n this.resetFocusElement();\n }\n }\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n }\n if (!isNullOrUndefined(this.inputElement)) {\n this.inputElement.value = '';\n }\n this.value = null;\n this.itemData = null;\n this.text = null;\n this.index = null;\n this.activeIndex = null;\n this.item = null;\n this.queryString = '';\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n this.setSelection(null, null);\n this.isSelectCustom = false;\n this.updateIconState();\n this.cloneElements();\n };\n DropDownList.prototype.setHTMLAttributes = function () {\n if (Object.keys(this.htmlAttributes).length) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var htmlAttr = _a[_i];\n if (htmlAttr === 'class') {\n var updatedClassValue = (this.htmlAttributes[\"\" + htmlAttr].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValue !== '') {\n addClass([this.inputWrapper.container], updatedClassValue.split(' '));\n }\n }\n else if (htmlAttr === 'disabled' && this.htmlAttributes[\"\" + htmlAttr] === 'disabled') {\n this.enabled = false;\n this.setEnable();\n }\n else if (htmlAttr === 'readonly' && !isNullOrUndefined(this.htmlAttributes[\"\" + htmlAttr])) {\n this.readonly = true;\n this.dataBind();\n }\n else if (htmlAttr === 'style') {\n this.inputWrapper.container.setAttribute('style', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (htmlAttr === 'aria-label') {\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (this.getModuleName() === 'dropdownlist') {\n this.inputWrapper.container.setAttribute('aria-label', this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n var defaultAttr = ['title', 'id', 'placeholder',\n 'role', 'autocomplete', 'autocapitalize', 'spellcheck', 'minlength', 'maxlength'];\n var validateAttr = ['name', 'required'];\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n defaultAttr.push('tabindex');\n }\n if (validateAttr.indexOf(htmlAttr) > -1 || htmlAttr.indexOf('data') === 0) {\n this.hiddenElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n else if (defaultAttr.indexOf(htmlAttr) > -1) {\n if (htmlAttr === 'placeholder') {\n Input.setPlaceholder(this.htmlAttributes[\"\" + htmlAttr], this.inputElement);\n }\n else {\n this.inputElement.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n else {\n this.inputWrapper.container.setAttribute(htmlAttr, this.htmlAttributes[\"\" + htmlAttr]);\n }\n }\n }\n }\n if (this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') {\n this.inputWrapper.container.removeAttribute('tabindex');\n }\n };\n DropDownList.prototype.getAriaAttributes = function () {\n return {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'aria-expanded': 'false',\n 'aria-live': 'polite',\n 'aria-labelledby': this.hiddenElement.id\n };\n };\n DropDownList.prototype.setEnableRtl = function () {\n Input.setEnableRtl(this.enableRtl, [this.inputElement.parentElement]);\n if (this.popupObj) {\n this.popupObj.enableRtl = this.enableRtl;\n this.popupObj.dataBind();\n }\n };\n DropDownList.prototype.setEnable = function () {\n Input.setEnabled(this.enabled, this.inputElement);\n if (this.enabled) {\n removeClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.hidePopup();\n addClass([this.inputWrapper.container], dropDownListClasses.disable);\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.targetElement().tabIndex = -1;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted data of the component.\n */\n DropDownList.prototype.getPersistData = function () {\n return this.addOnPersist(['value']);\n };\n DropDownList.prototype.getLocaleName = function () {\n return 'drop-down-list';\n };\n DropDownList.prototype.preventTabIndex = function (element) {\n if (this.getModuleName() === 'dropdownlist') {\n element.tabIndex = -1;\n }\n };\n DropDownList.prototype.targetElement = function () {\n return !isNullOrUndefined(this.inputWrapper) ? this.inputWrapper.container : null;\n };\n DropDownList.prototype.getNgDirective = function () {\n return 'EJS-DROPDOWNLIST';\n };\n DropDownList.prototype.getElementByText = function (text) {\n return this.getElementByValue(this.getValueByText(text));\n };\n DropDownList.prototype.getElementByValue = function (value) {\n var item;\n var listItems = this.getItems();\n for (var _i = 0, listItems_1 = listItems; _i < listItems_1.length; _i++) {\n var liItem = listItems_1[_i];\n if (this.getFormattedValue(liItem.getAttribute('data-value')) === value) {\n item = liItem;\n break;\n }\n }\n return item;\n };\n DropDownList.prototype.initValue = function () {\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.itemCount;\n this.renderList();\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n else {\n this.updateValues();\n }\n };\n DropDownList.prototype.updateValues = function () {\n this.selectedValueInfo = this.viewPortInfo;\n if (!isNullOrUndefined(this.value)) {\n this.setSelection(this.getElementByValue(this.value), null);\n }\n else if (this.text && isNullOrUndefined(this.value)) {\n var element = this.getElementByText(this.text);\n if (isNullOrUndefined(element)) {\n this.setProperties({ text: null });\n return;\n }\n else {\n this.setSelection(element, null);\n }\n }\n else {\n this.setSelection(this.liCollections[this.activeIndex], null);\n }\n this.setHiddenValue();\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DropDownList.prototype.onBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n var target = e.relatedTarget;\n var currentTarget = e.target;\n var isPreventBlur = this.isPreventBlur;\n this.isPreventBlur = false;\n //IE 11 - issue\n if (isPreventBlur && !this.isDocumentClick && this.isPopupOpen && (!isNullOrUndefined(currentTarget) ||\n !this.isFilterLayout() && isNullOrUndefined(target))) {\n if (this.getModuleName() === 'dropdownlist' && this.allowFiltering && this.isPopupOpen) {\n this.filterInput.focus();\n }\n else {\n this.targetElement().focus();\n }\n return;\n }\n if (this.isDocumentClick || (!isNullOrUndefined(this.popupObj)\n && document.body.contains(this.popupObj.element) &&\n this.popupObj.element.classList.contains(dropDownListClasses.mobileFilter))) {\n if (!this.beforePopupOpen) {\n this.isDocumentClick = false;\n }\n return;\n }\n if (((this.getModuleName() === 'dropdownlist' && !this.isFilterFocus && target !== this.inputElement)\n && (document.activeElement !== target || (document.activeElement === target &&\n currentTarget.classList.contains(dropDownListClasses.inputFocus)))) ||\n (isNullOrUndefined(target) && this.getModuleName() === 'dropdownlist' && this.allowFiltering &&\n currentTarget !== this.inputWrapper.container) || this.getModuleName() !== 'dropdownlist' &&\n !this.inputWrapper.container.contains(target) || this.isTabKey) {\n this.isDocumentClick = this.isPopupOpen ? true : false;\n this.focusOutAction(e);\n this.isTabKey = false;\n }\n if (this.isRequested && !this.isPopupOpen && !this.isPreventBlur) {\n this.isActive = false;\n this.beforePopupOpen = false;\n }\n };\n DropDownList.prototype.focusOutAction = function (e) {\n this.isInteracted = false;\n this.focusOut(e);\n this.onFocusOut();\n };\n DropDownList.prototype.onFocusOut = function () {\n if (!this.enabled) {\n return;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(null);\n }\n this.floatLabelChange();\n this.dispatchEvent(this.hiddenElement, 'change');\n if (this.getModuleName() === 'dropdownlist' && this.element.tagName !== 'INPUT') {\n this.dispatchEvent(this.inputElement, 'blur');\n }\n if (this.inputWrapper.clearButton) {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n this.trigger('blur');\n };\n DropDownList.prototype.onFocus = function (e) {\n if (!this.isInteracted) {\n this.isInteracted = true;\n var args = { isInteracted: e ? true : false, event: e };\n this.trigger('focus', args);\n }\n this.updateIconState();\n };\n DropDownList.prototype.resetValueHandler = function (e) {\n var formElement = closest(this.inputElement, 'form');\n if (formElement && e.target === formElement) {\n var val = (this.element.tagName === this.getNgDirective()) ? null : this.inputElement.getAttribute('value');\n this.text = val;\n }\n };\n DropDownList.prototype.wireEvent = function () {\n EventHandler.add(this.inputWrapper.container, 'mousedown', this.dropDownClick, this);\n EventHandler.add(this.inputWrapper.container, 'focus', this.focusIn, this);\n EventHandler.add(this.inputWrapper.container, 'keypress', this.onSearch, this);\n EventHandler.add(window, 'resize', this.windowResize, this);\n this.bindCommonEvent();\n };\n DropDownList.prototype.bindCommonEvent = function () {\n EventHandler.add(this.targetElement(), 'blur', this.onBlurHandler, this);\n var formElement = closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.add(formElement, 'reset', this.resetValueHandler, this);\n }\n if (!Browser.isDevice) {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.keyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n else {\n this.keyboardModule = new KeyboardEvents(this.targetElement(), {\n keyAction: this.mobileKeyActionHandler.bind(this), keyConfigs: this.keyConfigure, eventName: 'keydown'\n });\n }\n this.bindClearEvent();\n };\n DropDownList.prototype.windowResize = function () {\n if (this.isPopupOpen) {\n this.popupObj.refreshPosition(this.inputWrapper.container);\n }\n };\n DropDownList.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown', this.resetHandler, this);\n }\n };\n DropDownList.prototype.unBindCommonEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper) && this.targetElement()) {\n EventHandler.remove(this.targetElement(), 'blur', this.onBlurHandler);\n }\n var formElement = this.inputElement && closest(this.inputElement, 'form');\n if (formElement) {\n EventHandler.remove(formElement, 'reset', this.resetValueHandler);\n }\n if (!Browser.isDevice) {\n this.keyboardModule.destroy();\n }\n if (this.showClearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown', this.resetHandler);\n }\n };\n DropDownList.prototype.updateIconState = function () {\n if (this.showClearButton) {\n if (this.inputElement.value !== '' && !this.readonly) {\n removeClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n else {\n addClass([this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n };\n /**\n * Event binding for list\n *\n * @returns {void}\n */\n DropDownList.prototype.wireListEvents = function () {\n if (!isNullOrUndefined(this.list)) {\n EventHandler.add(this.list, 'click', this.onMouseClick, this);\n EventHandler.add(this.list, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.list, 'mouseout', this.onMouseLeave, this);\n }\n };\n DropDownList.prototype.onSearch = function (e) {\n if (e.charCode !== 32 && e.charCode !== 13) {\n if (this.list === undefined) {\n this.renderList();\n }\n this.searchKeyEvent = e;\n this.onServerIncrementalSearch(e);\n }\n };\n DropDownList.prototype.onServerIncrementalSearch = function (e) {\n if (!this.isRequested && !isNullOrUndefined(this.list) &&\n !isNullOrUndefined(this.list.querySelector('li')) && this.enabled && !this.readonly) {\n this.incrementalSearch(e);\n }\n };\n DropDownList.prototype.onMouseClick = function (e) {\n var target = e.target;\n this.keyboardEvent = null;\n var li = closest(target, '.' + dropDownBaseClasses.li);\n if (!this.isValidLI(li)) {\n return;\n }\n this.setSelection(li, e);\n if (Browser.isDevice && this.isFilterLayout()) {\n history.back();\n }\n else {\n var delay = 100;\n this.closePopup(delay, e);\n }\n };\n DropDownList.prototype.onMouseOver = function (e) {\n var currentLi = closest(e.target, '.' + dropDownBaseClasses.li);\n this.setHover(currentLi);\n };\n DropDownList.prototype.setHover = function (li) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.hover)) {\n this.removeHover();\n addClass([li], dropDownBaseClasses.hover);\n }\n };\n DropDownList.prototype.onMouseLeave = function () {\n this.removeHover();\n };\n DropDownList.prototype.removeHover = function () {\n if (this.list) {\n var hoveredItem = this.list.querySelectorAll('.' + dropDownBaseClasses.hover);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, dropDownBaseClasses.hover);\n }\n }\n };\n DropDownList.prototype.isValidLI = function (li) {\n return (li && li.hasAttribute('role') && li.getAttribute('role') === 'option');\n };\n DropDownList.prototype.updateIncrementalInfo = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.isIncrementalRequest = true;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isIncrementalRequest = false;\n };\n DropDownList.prototype.updateIncrementalView = function (startIndex, endIndex) {\n this.viewPortInfo.startIndex = startIndex;\n this.viewPortInfo.endIndex = endIndex;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n };\n DropDownList.prototype.updateIncrementalItemIndex = function (startIndex, endIndex) {\n this.incrementalStartIndex = startIndex;\n this.incrementalEndIndex = endIndex;\n };\n DropDownList.prototype.incrementalSearch = function (e) {\n if (this.liCollections.length > 0) {\n if (this.enableVirtualization) {\n var updatingincrementalindex = false;\n var queryStringUpdated = false;\n var activeElement = this.ulElement.getElementsByClassName('e-active')[0];\n var currentValue = activeElement ? activeElement.textContent : null;\n if (this.incrementalQueryString == '') {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else if (String.fromCharCode(e.charCode).toLocaleLowerCase() == this.incrementalPreQueryString.toLocaleLowerCase()) {\n queryStringUpdated = true;\n }\n else {\n this.incrementalQueryString = String.fromCharCode(e.charCode);\n }\n if ((this.viewPortInfo.endIndex >= this.incrementalEndIndex && this.incrementalEndIndex <= this.totalItemCount) || this.incrementalEndIndex == 0) {\n updatingincrementalindex = true;\n this.incrementalStartIndex = this.incrementalEndIndex;\n if (this.incrementalEndIndex == 0) {\n this.incrementalEndIndex = 100 > this.totalItemCount ? this.totalItemCount : 100;\n }\n else {\n this.incrementalEndIndex = this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100;\n }\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n }\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n var li = incrementalSearch(e.charCode, this.incrementalLiCollections, this.activeIndex, true, this.element.id, queryStringUpdated, currentValue, true);\n while (isNullOrUndefined(li) && this.incrementalEndIndex < this.totalItemCount) {\n this.updateIncrementalItemIndex(this.incrementalEndIndex, this.incrementalEndIndex + 100 > this.totalItemCount ? this.totalItemCount : this.incrementalEndIndex + 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n if (!isNullOrUndefined(li)) {\n break;\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n break;\n }\n }\n if (isNullOrUndefined(li) && this.incrementalEndIndex >= this.totalItemCount) {\n this.updateIncrementalItemIndex(0, 100 > this.totalItemCount ? this.totalItemCount : 100);\n this.updateIncrementalInfo(this.incrementalStartIndex, this.incrementalEndIndex);\n updatingincrementalindex = true;\n if (this.viewPortInfo.startIndex !== 0 || updatingincrementalindex) {\n this.updateIncrementalView(0, this.itemCount);\n }\n li = incrementalSearch(e.charCode, this.incrementalLiCollections, 0, true, this.element.id, queryStringUpdated, currentValue, true, true);\n }\n var index = li && this.getIndexByValue(li.getAttribute('data-value'));\n if (!index) {\n for (var i = 0; i < this.incrementalLiCollections.length; i++) {\n if (!isNullOrUndefined(li) && !isNullOrUndefined(li.getAttribute('data-value')) && this.incrementalLiCollections[i].getAttribute('data-value') === li.getAttribute('data-value').toString()) {\n index = i;\n index = this.incrementalStartIndex + index;\n break;\n }\n }\n }\n else {\n index = index - this.skeletonCount;\n }\n if (index) {\n if ((!(this.viewPortInfo.startIndex >= index)) || (!(index >= this.viewPortInfo.endIndex))) {\n var startIndex = index - ((this.itemCount / 2) - 2) > 0 ? index - ((this.itemCount / 2) - 2) : 0;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n }\n if (!isNullOrUndefined(li)) {\n var index_1 = this.getIndexByValue(li.getAttribute('data-value')) - this.skeletonCount;\n if (index_1 > this.itemCount / 2) {\n var startIndex = this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) < this.totalItemCount ? this.viewPortInfo.startIndex + ((this.itemCount / 2) - 2) : this.totalItemCount;\n var endIndex = this.viewPortInfo.startIndex + this.itemCount > this.totalItemCount ? this.totalItemCount : this.viewPortInfo.startIndex + this.itemCount;\n this.updateIncrementalView(startIndex, endIndex);\n }\n li = this.getElementByValue(li.getAttribute('data-value'));\n this.setSelection(li, e);\n this.setScrollPosition();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n if (this.enableVirtualization && !this.fields.groupBy) {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n this.incrementalPreQueryString = this.incrementalQueryString;\n }\n else {\n this.updateIncrementalView(0, this.itemCount);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n this.list.scrollTop = 0;\n }\n }\n else {\n var li = incrementalSearch(e.charCode, this.liCollections, this.activeIndex, true, this.element.id);\n if (!isNullOrUndefined(li)) {\n this.setSelection(li, e);\n this.setScrollPosition();\n }\n }\n }\n };\n /**\n * Hides the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.hideSpinner = function () {\n if (!isNullOrUndefined(this.spinnerElement)) {\n hideSpinner(this.spinnerElement);\n removeClass([this.spinnerElement], dropDownListClasses.disableIcon);\n this.spinnerElement.innerHTML = '';\n this.spinnerElement = null;\n }\n };\n /**\n * Shows the spinner loader.\n *\n * @returns {void}\n */\n DropDownList.prototype.showSpinner = function () {\n if (isNullOrUndefined(this.spinnerElement)) {\n this.spinnerElement = Browser.isDevice && !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[1] ||\n !isNullOrUndefined(this.filterInputObj) && this.filterInputObj.buttons[0] || this.inputWrapper.buttons[0];\n addClass([this.spinnerElement], dropDownListClasses.disableIcon);\n createSpinner({\n target: this.spinnerElement,\n width: Browser.isDevice ? '16px' : '14px'\n }, this.createElement);\n showSpinner(this.spinnerElement);\n }\n };\n DropDownList.prototype.keyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.keyboardEvent = e;\n if (this.isPreventKeyAction && this.enableVirtualization) {\n e.preventDefault();\n }\n var preventAction = e.action === 'pageUp' || e.action === 'pageDown';\n var preventHomeEnd = this.getModuleName() !== 'dropdownlist' && (e.action === 'home' || e.action === 'end');\n this.isEscapeKey = e.action === 'escape';\n this.isTabKey = !this.isPopupOpen && e.action === 'tab';\n var isNavigation = (e.action === 'down' || e.action === 'up' || e.action === 'pageUp' || e.action === 'pageDown'\n || e.action === 'home' || e.action === 'end');\n if ((this.isEditTextBox() || preventAction || preventHomeEnd) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n var isTabAction = e.action === 'tab' || e.action === 'close';\n if (isNullOrUndefined(this.list) && !this.isRequested && !isTabAction && e.action !== 'escape') {\n this.searchKeyEvent = e;\n this.renderList(e);\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n isNavigation && this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if ((isTabAction && this.getModuleName() !== 'autocomplete') && this.isPopupOpen\n || e.action === 'escape') {\n e.preventDefault();\n }\n this.isSelected = e.action === 'escape' ? false : this.isSelected;\n this.isTyped = (isNavigation || e.action === 'escape') ? false : this.isTyped;\n switch (e.action) {\n case 'down':\n case 'up':\n this.updateUpDownAction(e);\n break;\n case 'pageUp':\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'pageDown':\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e);\n break;\n case 'space':\n if (this.getModuleName() === 'dropdownlist') {\n if (!this.beforePopupOpen) {\n this.showPopup();\n }\n }\n break;\n case 'open':\n this.showPopup(e);\n break;\n case 'hide':\n this.preventAltUp = this.isPopupOpen;\n this.hidePopup(e);\n this.focusDropDown(e);\n break;\n case 'enter':\n this.selectCurrentItem(e);\n break;\n case 'tab':\n this.selectCurrentValueOnTab(e);\n break;\n case 'escape':\n case 'close':\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n break;\n }\n }\n };\n DropDownList.prototype.updateUpDownAction = function (e, isVirtualKeyAction) {\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_1 = this.getItemData().value;\n if (isNullOrUndefined(value_1)) {\n value_1 = 'null';\n }\n var filterIndex = this.getIndexByValue(value_1);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n var focusEle = this.list.querySelector('.' + dropDownListClasses.focus);\n if (this.isSelectFocusItem(focusEle) && !isVirtualKeyAction) {\n this.setSelection(focusEle, e);\n if (this.enableVirtualization && !this.fields.groupBy && this.getModuleName() !== 'combobox') {\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n this.list.scrollTop = selectedLiOffsetTop - (this.list.querySelectorAll('.e-virtual-list').length * this.selectedLI.offsetHeight);\n }\n }\n else if (!isNullOrUndefined(this.liCollections)) {\n var virtualIndex = this.activeIndex;\n var index = e.action === 'down' ? this.activeIndex + 1 : this.activeIndex - 1;\n index = isVirtualKeyAction ? virtualIndex : index;\n var startIndex = 0;\n if (this.getModuleName() === 'autocomplete') {\n startIndex = e.action === 'down' && isNullOrUndefined(this.activeIndex) ? 0 : this.liCollections.length - 1;\n index = index < 0 ? this.liCollections.length - 1 : index === this.liCollections.length ? 0 : index;\n }\n var nextItem = void 0;\n if (this.getModuleName() !== 'autocomplete' || this.getModuleName() === 'autocomplete' && this.isPopupOpen) {\n if (!this.enableVirtualization) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[startIndex]\n : this.liCollections[index];\n }\n else {\n if (!isVirtualKeyAction) {\n nextItem = isNullOrUndefined(this.activeIndex) ? this.liCollections[this.skeletonCount]\n : this.liCollections[index];\n nextItem = !isNullOrUndefined(nextItem) && !nextItem.classList.contains('e-virtual-list') ? nextItem : null;\n }\n else {\n if (this.getModuleName() === 'autocomplete') {\n var value = this.getFormattedValue(this.selectedLI.getAttribute('data-value'));\n nextItem = this.getElementByValue(value);\n }\n else {\n nextItem = this.getElementByValue(this.getItemData().value);\n }\n }\n }\n }\n if (!isNullOrUndefined(nextItem)) {\n this.setSelection(nextItem, e);\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.getModuleName() !== 'autocomplete' && ((this.viewPortInfo.endIndex !== this.totalItemCount && e.action === 'down') || (this.viewPortInfo.startIndex !== 0 && e.action === 'up'))) {\n if (e.action === 'down') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex + this.itemCount) < (this.totalItemCount - this.itemCount) ? this.viewPortInfo.startIndex + this.itemCount : this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value_2 = this.liCollections[0].getAttribute('data-value') !== \"null\" ? this.getFormattedValue(this.liCollections[0].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value_2);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n else if (e.action === 'up') {\n this.viewPortInfo.startIndex = (this.viewPortInfo.startIndex - this.itemCount) > 0 ? this.viewPortInfo.startIndex - this.itemCount : 0;\n this.viewPortInfo.endIndex = this.viewPortInfo.startIndex + this.itemCount;\n this.updateVirtualItemIndex();\n this.isCustomFilter = this.getModuleName() === 'combobox' ? true : this.isCustomFilter;\n this.resetList(this.dataSource, this.fields, this.query);\n this.isCustomFilter = this.getModuleName() === 'combobox' ? false : this.isCustomFilter;\n var value_3 = this.liCollections[this.liCollections.length - 1].getAttribute('data-value') !== \"null\" ? this.getFormattedValue(this.liCollections[this.liCollections.length - 1].getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value_3);\n if (selectedData) {\n this.itemData = selectedData;\n }\n }\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n this.ulElement = this.list.querySelector('ul');\n this.handleVirtualKeyboardActions(e, this.pageCount);\n }\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var value_4 = this.getItemData().value;\n var filterIndex = this.getIndexByValueFilter(value_4);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n e.preventDefault();\n };\n DropDownList.prototype.updateVirtualItemIndex = function () {\n this.virtualItemStartIndex = this.viewPortInfo.startIndex;\n this.virtualItemEndIndex = this.viewPortInfo.endIndex;\n this.virtualListInfo = this.viewPortInfo;\n };\n DropDownList.prototype.updateHomeEndAction = function (e, isVirtualKeyAction) {\n if (this.getModuleName() === 'dropdownlist') {\n var findLi = 0;\n if (e.action === 'home') {\n findLi = 0;\n if (this.enableVirtualization && this.isPopupOpen) {\n findLi = this.skeletonCount;\n }\n else if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.startIndex !== 0) {\n this.viewPortInfo.startIndex = 0;\n this.viewPortInfo.endIndex = this.itemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n }\n else {\n if (this.enableVirtualization && !this.isPopupOpen && this.viewPortInfo.endIndex !== this.totalItemCount) {\n this.viewPortInfo.startIndex = this.totalItemCount - this.itemCount;\n this.viewPortInfo.endIndex = this.totalItemCount;\n this.updateVirtualItemIndex();\n this.resetList(this.dataSource, this.fields, this.query);\n }\n findLi = this.getItems().length - 1;\n }\n e.preventDefault();\n if (this.activeIndex === findLi) {\n if (isVirtualKeyAction) {\n this.setSelection(this.liCollections[findLi], e);\n }\n return;\n }\n this.setSelection(this.liCollections[findLi], e);\n }\n };\n DropDownList.prototype.selectCurrentValueOnTab = function (e) {\n if (this.getModuleName() === 'autocomplete') {\n this.selectCurrentItem(e);\n }\n else {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n }\n };\n DropDownList.prototype.mobileKeyActionHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if ((this.isEditTextBox()) && !this.isPopupOpen) {\n return;\n }\n if (!this.readonly) {\n if (this.list === undefined && !this.isRequested) {\n this.searchKeyEvent = e;\n this.renderList();\n }\n if (isNullOrUndefined(this.list) || (!isNullOrUndefined(this.liCollections) &&\n this.liCollections.length === 0) || this.isRequested) {\n return;\n }\n if (e.action === 'enter') {\n this.selectCurrentItem(e);\n }\n }\n };\n DropDownList.prototype.handleVirtualKeyboardActions = function (e, pageCount) {\n switch (e.action) {\n case 'down':\n case 'up':\n if (this.itemData != null || this.getModuleName() === 'autocomplete') {\n this.updateUpDownAction(e, true);\n }\n break;\n case 'pageUp':\n var count = (pageCount * 2) - 4;\n this.activeIndex = Math.round(count);\n this.pageUpSelection(this.activeIndex - this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'pageDown':\n this.activeIndex = 1;\n this.pageDownSelection(this.activeIndex + this.getPageCount(), e, true);\n e.preventDefault();\n break;\n case 'home':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n case 'end':\n this.isMouseScrollAction = true;\n this.updateHomeEndAction(e, true);\n break;\n }\n this.keyboardEvent = null;\n };\n DropDownList.prototype.selectCurrentItem = function (e) {\n if (this.isPopupOpen) {\n var li = this.list.querySelector('.' + dropDownListClasses.focus);\n if (li) {\n this.setSelection(li, e);\n this.isTyped = false;\n }\n if (this.isSelected) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n this.hidePopup(e);\n this.focusDropDown(e);\n }\n else {\n this.showPopup();\n }\n };\n DropDownList.prototype.isSelectFocusItem = function (element) {\n return !isNullOrUndefined(element);\n };\n DropDownList.prototype.pageUpSelection = function (steps, event, isVirtualKeyAction) {\n var previousItem = steps >= 0 ? this.liCollections[steps + 1] : this.liCollections[0];\n if ((this.enableVirtualization && this.activeIndex == null) || isVirtualKeyAction) {\n previousItem = steps >= 0 ? this.liCollections[steps + this.skeletonCount + 1] : this.liCollections[0];\n }\n if (!isNullOrUndefined(previousItem) && previousItem.classList.contains('e-virtual-list')) {\n previousItem = this.liCollections[this.skeletonCount];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.PageUpDownSelection = function (previousItem, event) {\n if (this.enableVirtualization) {\n if (!isNullOrUndefined(previousItem) && ((this.getModuleName() !== 'autocomplete' && !previousItem.classList.contains('e-active')) || (this.getModuleName() === 'autocomplete' && !previousItem.classList.contains('e-item-focus')))) {\n this.setSelection(previousItem, event);\n }\n }\n else {\n this.setSelection(previousItem, event);\n }\n };\n DropDownList.prototype.pageDownSelection = function (steps, event, isVirtualKeyAction) {\n var list = this.getItems();\n var previousItem = steps <= list.length ? this.liCollections[steps - 1] : this.liCollections[list.length - 1];\n if ((this.enableVirtualization && this.activeIndex == null) || isVirtualKeyAction) {\n previousItem = steps <= list.length ? this.liCollections[steps + this.skeletonCount - 1] : this.liCollections[list.length - 1];\n }\n this.PageUpDownSelection(previousItem, event);\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.filterInput, { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n }\n };\n DropDownList.prototype.unWireEvent = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.container, 'mousedown', this.dropDownClick);\n EventHandler.remove(this.inputWrapper.container, 'keypress', this.onSearch);\n EventHandler.remove(this.inputWrapper.container, 'focus', this.focusIn);\n EventHandler.remove(window, 'resize', this.windowResize);\n }\n this.unBindCommonEvent();\n };\n /**\n * Event un binding for list items.\n *\n * @returns {void}\n */\n DropDownList.prototype.unWireListEvents = function () {\n if (this.list) {\n EventHandler.remove(this.list, 'click', this.onMouseClick);\n EventHandler.remove(this.list, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.list, 'mouseout', this.onMouseLeave);\n }\n };\n DropDownList.prototype.checkSelector = function (id) {\n return '[id=\"' + id.replace(/(:|\\.|\\[|\\]|,|=|@|\\\\|\\/|#)/g, '\\\\$1') + '\"]';\n };\n DropDownList.prototype.onDocumentClick = function (e) {\n var target = e.target;\n if (!(!isNullOrUndefined(this.popupObj) && closest(target, this.checkSelector(this.popupObj.element.id))) &&\n !isNullOrUndefined(this.inputWrapper) && !this.inputWrapper.container.contains(e.target)) {\n if (this.inputWrapper.container.classList.contains(dropDownListClasses.inputFocus) || this.isPopupOpen) {\n this.isDocumentClick = true;\n var isActive = this.isRequested;\n this.hidePopup(e);\n this.isInteracted = false;\n if (!isActive) {\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n }\n }\n else if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput)\n && !(this.getModuleName() === 'combobox' &&\n !this.allowFiltering && Browser.isDevice && target === this.inputWrapper.buttons[0])) {\n this.isPreventBlur = (Browser.isIE || Browser.info.name === 'edge') && (document.activeElement === this.targetElement() ||\n document.activeElement === this.filterInput);\n e.preventDefault();\n }\n };\n DropDownList.prototype.activeStateChange = function () {\n if (this.isDocumentClick) {\n this.hidePopup();\n this.onFocusOut();\n this.inputWrapper.container.classList.remove(dropDownListClasses.inputFocus);\n }\n };\n DropDownList.prototype.focusDropDown = function (e) {\n if (!this.initial && this.isFilterLayout()) {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.dropDownClick = function (e) {\n if (e.which === 3 || e.button === 2) {\n return;\n }\n this.keyboardEvent = null;\n if (this.targetElement().classList.contains(dropDownListClasses.disable) || this.inputWrapper.clearButton === e.target) {\n return;\n }\n var target = e.target;\n if (target !== this.inputElement && !(this.allowFiltering && target === this.filterInput) && this.getModuleName() !== 'combobox') {\n e.preventDefault();\n }\n if (!this.readonly) {\n if (this.isPopupOpen) {\n this.hidePopup(e);\n if (this.isFilterLayout()) {\n this.focusDropDown(e);\n }\n }\n else {\n this.focusIn(e);\n this.floatLabelChange();\n this.queryString = this.inputElement.value.trim() === '' ? null : this.inputElement.value;\n this.isDropDownClick = true;\n this.showPopup(e);\n }\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_1 = this;\n // eslint-disable-next-line max-len\n var duration = (this.element.tagName === this.getNgDirective() && this.itemTemplate) ? 500 : 100;\n if (!this.isSecondClick) {\n setTimeout(function () {\n proxy_1.cloneElements();\n proxy_1.isSecondClick = true;\n }, duration);\n }\n }\n else {\n this.focusIn(e);\n }\n };\n DropDownList.prototype.cloneElements = function () {\n if (this.list) {\n var ulElement = this.list.querySelector('ul');\n if (ulElement) {\n ulElement = ulElement.cloneNode ? ulElement.cloneNode(true) : ulElement;\n this.actionCompleteData.ulElement = ulElement;\n }\n }\n };\n DropDownList.prototype.updateSelectedItem = function (li, e, preventSelect, isSelection) {\n var _this = this;\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n var value = li.getAttribute('data-value') !== \"null\" ? this.getFormattedValue(li.getAttribute('data-value')) : null;\n var selectedData = this.getDataByValue(value);\n if (!this.initial && !preventSelect && !isNullOrUndefined(e)) {\n var items = this.detachChanges(selectedData);\n this.isSelected = true;\n var eventArgs = {\n e: e,\n item: li,\n itemData: items,\n isInteracted: e ? true : false,\n cancel: false\n };\n this.trigger('select', eventArgs, function (eventArgs) {\n if (eventArgs.cancel) {\n li.classList.remove(dropDownBaseClasses.selected);\n }\n else {\n _this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n _this.setSelectOptions(li, e);\n }\n }\n });\n }\n else {\n this.selectEventCallback(li, e, preventSelect, selectedData, value);\n if (isSelection) {\n this.setSelectOptions(li, e);\n }\n }\n };\n DropDownList.prototype.selectEventCallback = function (li, e, preventSelect, selectedData, value) {\n this.previousItemData = (!isNullOrUndefined(this.itemData)) ? this.itemData : null;\n if (this.itemData != selectedData) {\n this.previousValue = (!isNullOrUndefined(this.itemData)) ? typeof this.itemData == \"object\" ? this.checkFieldValue(this.itemData, this.fields.value.split('.')) : this.itemData : null;\n }\n this.item = li;\n this.itemData = selectedData;\n var focusedItem = this.list.querySelector('.' + dropDownBaseClasses.focus);\n if (focusedItem) {\n removeClass([focusedItem], dropDownBaseClasses.focus);\n }\n li.setAttribute('aria-selected', 'true');\n if (isNullOrUndefined(value)) {\n value = 'null';\n }\n if (this.allowFiltering && !this.enableVirtualization && this.getModuleName() !== 'autocomplete') {\n var filterIndex = this.getIndexByValueFilter(value);\n if (!isNullOrUndefined(filterIndex)) {\n this.activeIndex = filterIndex;\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n }\n else {\n this.activeIndex = this.getIndexByValue(value);\n }\n };\n DropDownList.prototype.activeItem = function (li) {\n if (this.isValidLI(li) && !li.classList.contains(dropDownBaseClasses.selected)) {\n this.removeSelection();\n li.classList.add(dropDownBaseClasses.selected);\n this.removeHover();\n li.setAttribute('aria-selected', 'true');\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.setValue = function (e) {\n var dataItem = this.getItemData();\n if (dataItem.value === null) {\n Input.setValue(null, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dataItem.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n else if (!isNullOrUndefined(this.valueTempElement) && this.inputElement.previousSibling === this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n }\n if (!isNullOrUndefined(dataItem.value) && !this.enableVirtualization && this.allowFiltering) {\n this.activeIndex = this.getIndexByValueFilter(dataItem.value);\n }\n var clearIcon = dropDownListClasses.clearIcon;\n var isFilterElement = this.isFiltering() && this.filterInput && (this.getModuleName() === 'combobox');\n var clearElement = isFilterElement && this.filterInput.parentElement.querySelector('.' + clearIcon);\n if (this.isFiltering() && clearElement) {\n clearElement.style.removeProperty('visibility');\n }\n if (this.previousValue === dataItem.value) {\n this.isSelected = false;\n return true;\n }\n else {\n this.isSelected = !this.initial ? true : false;\n this.isSelectCustom = false;\n if (this.getModuleName() === 'dropdownlist') {\n this.updateIconState();\n }\n return false;\n }\n };\n DropDownList.prototype.setSelection = function (li, e) {\n var _this = this;\n if (this.isValidLI(li) && (!li.classList.contains(dropDownBaseClasses.selected) || (this.isPopupOpen && this.isSelected\n && li.classList.contains(dropDownBaseClasses.selected)))) {\n this.updateSelectedItem(li, e, false, true);\n }\n else {\n this.setSelectOptions(li, e);\n if (this.enableVirtualization) {\n var fields = (this.fields.value) ? this.fields.value : '';\n if (this.dataSource instanceof DataManager) {\n this.dataSource.executeQuery(new Query().where(new Predicate(fields, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.itemData = e.result[0];\n var dataItem = _this.getItemData();\n if ((_this.value === dataItem.value && _this.text !== dataItem.text) || (_this.value !== dataItem.value && _this.text === dataItem.text)) {\n _this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n }\n }\n });\n }\n else {\n var getItem = new DataManager(this.dataSource).executeLocal(new Query().where(new Predicate(fields, 'equal', this.value)));\n if (getItem && getItem.length > 0) {\n this.itemData = getItem[0];\n var dataItem = this.getItemData();\n if ((this.value === dataItem.value && this.text !== dataItem.text) || (this.value !== dataItem.value && this.text === dataItem.text)) {\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n }\n }\n }\n }\n }\n };\n DropDownList.prototype.setSelectOptions = function (li, e) {\n if (this.list) {\n this.removeHover();\n }\n this.previousSelectedLI = (!isNullOrUndefined(this.selectedLI)) ? this.selectedLI : null;\n this.selectedLI = li;\n if (this.setValue(e)) {\n return;\n }\n if ((!this.isPopupOpen && !isNullOrUndefined(li)) || (this.isPopupOpen && !isNullOrUndefined(e) &&\n (e.type !== 'keydown' || e.type === 'keydown' && e.action === 'enter'))) {\n this.isSelectCustom = false;\n this.onChangeEvent(e);\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.selectedLI) && this.itemData !== null && (!e || e.type !== 'click')) {\n this.setScrollPosition(e);\n }\n if (Browser.info.name !== 'mozilla') {\n if (this.targetElement()) {\n attributes(this.targetElement(), { 'aria-describedby': this.inputElement.id !== '' ? this.inputElement.id : this.element.id });\n this.targetElement().removeAttribute('aria-live');\n }\n }\n if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (this.isPopupOpen && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n };\n DropDownList.prototype.dropdownCompiler = function (dropdownTemplate) {\n var checkTemplate = false;\n if (typeof dropdownTemplate !== 'function' && dropdownTemplate) {\n try {\n checkTemplate = (document.querySelectorAll(dropdownTemplate).length) ? true : false;\n }\n catch (exception) {\n checkTemplate = false;\n }\n }\n return checkTemplate;\n };\n DropDownList.prototype.setValueTemplate = function () {\n var compiledString;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate(['valueTemplate']);\n if (this.valueTempElement) {\n detach(this.valueTempElement);\n this.inputElement.style.display = 'block';\n this.valueTempElement = null;\n }\n }\n if (!this.valueTempElement) {\n this.valueTempElement = this.createElement('span', { className: dropDownListClasses.value });\n this.inputElement.parentElement.insertBefore(this.valueTempElement, this.inputElement);\n this.inputElement.style.display = 'none';\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!this.isReact) {\n this.valueTempElement.innerHTML = '';\n }\n var valuecheck = this.dropdownCompiler(this.valueTemplate);\n if (typeof this.valueTemplate !== 'function' && valuecheck) {\n compiledString = compile(document.querySelector(this.valueTemplate).innerHTML.trim());\n }\n else {\n compiledString = compile(this.valueTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var valueCompTemp = compiledString(this.itemData, this, 'valueTemplate', this.valueTemplateId, this.isStringTemplate, null, this.valueTempElement);\n if (valueCompTemp && valueCompTemp.length > 0) {\n append(valueCompTemp, this.valueTempElement);\n }\n this.renderReactTemplates();\n };\n DropDownList.prototype.removeSelection = function () {\n if (this.list) {\n var selectedItems = this.list.querySelectorAll('.' + dropDownBaseClasses.selected);\n if (selectedItems.length) {\n removeClass(selectedItems, dropDownBaseClasses.selected);\n selectedItems[0].removeAttribute('aria-selected');\n }\n }\n };\n DropDownList.prototype.getItemData = function () {\n var fields = this.fields;\n var dataItem = null;\n dataItem = this.itemData;\n var dataValue;\n var dataText;\n if (!isNullOrUndefined(dataItem)) {\n dataValue = getValue(fields.value, dataItem);\n dataText = getValue(fields.text, dataItem);\n }\n var value = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataValue : dataItem);\n var text = (!isNullOrUndefined(dataItem) &&\n !isUndefined(dataValue) ? dataText : dataItem);\n return { value: value, text: text };\n };\n /**\n * To trigger the change event for list.\n *\n * @param {MouseEvent | KeyboardEvent | TouchEvent} eve - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onChangeEvent = function (eve) {\n var dataItem = this.getItemData();\n var index = this.isSelectCustom ? null : this.activeIndex;\n this.setProperties({ 'index': index, 'text': dataItem.text, 'value': dataItem.value }, true);\n this.detachChangeEvent(eve);\n };\n DropDownList.prototype.detachChanges = function (value) {\n var items;\n if (typeof value === 'string' ||\n typeof value === 'boolean' ||\n typeof value === 'number') {\n items = Object.defineProperties({}, {\n value: {\n value: value,\n enumerable: true\n },\n text: {\n value: value,\n enumerable: true\n }\n });\n }\n else {\n items = value;\n }\n return items;\n };\n DropDownList.prototype.detachChangeEvent = function (eve) {\n this.isSelected = false;\n this.previousValue = this.value;\n this.activeIndex = this.index;\n this.typedString = !isNullOrUndefined(this.text) ? this.text : '';\n if (!this.initial) {\n var items = this.detachChanges(this.itemData);\n var preItems = void 0;\n if (typeof this.previousItemData === 'string' ||\n typeof this.previousItemData === 'boolean' ||\n typeof this.previousItemData === 'number') {\n preItems = Object.defineProperties({}, {\n value: {\n value: this.previousItemData,\n enumerable: true\n },\n text: {\n value: this.previousItemData,\n enumerable: true\n }\n });\n }\n else {\n preItems = this.previousItemData;\n }\n this.setHiddenValue();\n var eventArgs = {\n e: eve,\n item: this.item,\n itemData: items,\n previousItem: this.previousSelectedLI,\n previousItemData: preItems,\n isInteracted: eve ? true : false,\n value: this.value,\n element: this.element,\n event: eve\n };\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', eventArgs);\n }\n }\n if ((isNullOrUndefined(this.value) || this.value === '') && this.floatLabelType !== 'Always') {\n removeClass([this.inputWrapper.container], 'e-valid-input');\n }\n };\n DropDownList.prototype.setHiddenValue = function () {\n if (!isNullOrUndefined(this.value)) {\n if (this.hiddenElement.querySelector('option')) {\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.textContent = this.text;\n selectedElement.setAttribute('value', this.value.toString());\n }\n else {\n if (!isNullOrUndefined(this.hiddenElement)) {\n this.hiddenElement.innerHTML = '';\n var selectedElement = this.hiddenElement.querySelector('option');\n selectedElement.setAttribute('value', this.value.toString());\n }\n }\n }\n else {\n this.hiddenElement.innerHTML = '';\n }\n };\n /**\n * Filter bar implementation\n *\n * @param {KeyboardEventArgs} e - Specifies the event arguments.\n * @returns {void}\n */\n DropDownList.prototype.onFilterUp = function (e) {\n if (!(e.ctrlKey && e.keyCode === 86) && (this.isValidKey || e.keyCode === 40 || e.keyCode === 38)) {\n this.isValidKey = false;\n switch (e.keyCode) {\n case 38: //up arrow\n case 40: //down arrow\n if (this.getModuleName() === 'autocomplete' && !this.isPopupOpen && !this.preventAltUp && !this.isRequested) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else {\n this.preventAutoFill = false;\n }\n this.preventAltUp = false;\n if (this.getModuleName() === 'autocomplete' && !isNullOrUndefined(this.ulElement) && !isNullOrUndefined(this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(this.targetElement(), { 'aria-activedescendant': this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n e.preventDefault();\n break;\n case 46: //delete\n case 8: //backspace\n this.typedString = this.filterInput.value;\n if (!this.isPopupOpen && this.typedString !== '' || this.isPopupOpen && this.queryString.length > 0) {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '' && this.queryString === '' && this.getModuleName() !== 'autocomplete') {\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n else if (this.typedString === '') {\n if (this.list) {\n this.resetFocusElement();\n }\n this.activeIndex = null;\n if (this.getModuleName() !== 'dropdownlist') {\n this.preventAutoFill = true;\n this.searchLists(e);\n if (this.getModuleName() === 'autocomplete') {\n this.hidePopup();\n }\n }\n }\n e.preventDefault();\n break;\n default:\n this.typedString = this.filterInput.value;\n this.preventAutoFill = false;\n this.searchLists(e);\n if ((this.enableVirtualization && this.getModuleName() !== 'autocomplete') || (this.getModuleName() === 'autocomplete' && !(this.dataSource instanceof DataManager)) || (this.getModuleName() === 'autocomplete' && (this.dataSource instanceof DataManager) && this.totalItemCount != 0)) {\n this.getFilteringSkeletonCount();\n }\n break;\n }\n }\n else {\n this.isValidKey = false;\n }\n };\n DropDownList.prototype.getFilteringSkeletonCount = function () {\n var difference = this.dataCount - this.viewPortInfo.endIndex;\n var currentSkeletonCount = this.skeletonCount;\n this.getSkeletonCount(true);\n this.skeletonCount = this.dataCount > this.itemCount * 2 ? this.skeletonCount : difference > this.skeletonCount ? this.skeletonCount : difference > 0 ? difference : 0;\n var skeletonUpdated = true;\n if (this.getModuleName() === 'autocomplete' && (this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2))) {\n this.skeletonCount = 0;\n skeletonUpdated = false;\n }\n if (!this.list.classList.contains(dropDownBaseClasses.noData)) {\n var isSkeletonCountChange = currentSkeletonCount !== this.skeletonCount;\n if (currentSkeletonCount !== this.skeletonCount && skeletonUpdated) {\n this.UpdateSkeleton(true, Math.abs(currentSkeletonCount - this.skeletonCount));\n }\n else {\n this.UpdateSkeleton();\n }\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n if ((this.list.getElementsByClassName('e-virtual-ddl').length > 0)) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.list.getElementsByClassName('e-virtual-ddl-content').length > 0) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownList.prototype.getSkeletonCount = function (retainSkeleton) {\n this.virtualListHeight = this.listHeight != null ? parseInt(this.listHeight, 10) : this.virtualListHeight;\n var actualCount = this.virtualListHeight > 0 ? Math.floor(this.virtualListHeight / this.listItemHeight) : 0;\n this.skeletonCount = actualCount * 2 < this.itemCount ? this.itemCount : actualCount * 2;\n this.itemCount = retainSkeleton ? this.itemCount : this.skeletonCount;\n this.skeletonCount = Math.floor(this.skeletonCount / 2) + 2;\n };\n DropDownList.prototype.onFilterDown = function (e) {\n switch (e.keyCode) {\n case 13: //enter\n break;\n case 40: //down arrow\n case 38: //up arrow\n this.queryString = this.filterInput.value;\n e.preventDefault();\n break;\n case 9: //tab\n if (this.isPopupOpen && this.getModuleName() !== 'autocomplete') {\n e.preventDefault();\n }\n break;\n default:\n this.prevSelectPoints = this.getSelectionPoints();\n this.queryString = this.filterInput.value;\n break;\n }\n };\n DropDownList.prototype.removeFillSelection = function () {\n if (this.isInteracted) {\n var selection = this.getSelectionPoints();\n this.inputElement.setSelectionRange(selection.end, selection.end);\n }\n };\n DropDownList.prototype.getQuery = function (query) {\n var filterQuery;\n if (!this.isCustomFilter && this.allowFiltering && this.filterInput) {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n var filterType = this.typedString === '' ? 'contains' : this.filterType;\n var dataType = this.typeOfData(this.dataSource).typeof;\n if (!(this.dataSource instanceof DataManager) && dataType === 'string' || dataType === 'number') {\n filterQuery.where('', filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n else {\n var fields = (this.fields.text) ? this.fields.text : '';\n filterQuery.where(fields, filterType, this.typedString, this.ignoreCase, this.ignoreAccent);\n }\n }\n else {\n filterQuery = query ? query.clone() : this.query ? this.query.clone() : new Query();\n }\n if (this.enableVirtualization && (this.viewPortInfo.endIndex != 0) && (!(this.dataSource instanceof DataManager) || (this.dataSource instanceof DataManager && this.virtualGroupDataSource))) {\n var takeValue = this.getTakeValue();\n var alreadySkipAdded = false;\n if (filterQuery) {\n for (var queryElements = 0; queryElements < filterQuery.queries.length; queryElements++) {\n if (filterQuery.queries[queryElements].fn === 'onSkip') {\n alreadySkipAdded = true;\n break;\n }\n }\n }\n if (this.allowFiltering || !this.isPopupOpen || !alreadySkipAdded) {\n filterQuery.skip(this.virtualItemStartIndex);\n }\n if (this.isIncrementalRequest) {\n filterQuery.take(this.incrementalEndIndex);\n }\n else {\n filterQuery.take(takeValue);\n }\n filterQuery.requiresCount();\n }\n return filterQuery;\n };\n DropDownList.prototype.getSelectionPoints = function () {\n var input = this.inputElement;\n return { start: Math.abs(input.selectionStart), end: Math.abs(input.selectionEnd) };\n };\n DropDownList.prototype.searchLists = function (e) {\n var _this = this;\n this.isTyped = true;\n this.activeIndex = null;\n this.isListSearched = true;\n if (this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon)) {\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n clearElement.style.visibility = this.filterInput.value === '' ? 'hidden' : 'visible';\n }\n this.isDataFetched = false;\n if (this.isFiltering()) {\n this.checkAndResetCache();\n var eventArgs_1 = {\n preventDefaultAction: false,\n text: this.filterInput.value,\n updateData: function (dataSource, query, fields) {\n if (eventArgs_1.cancel) {\n return;\n }\n _this.isCustomFilter = true;\n _this.filteringAction(dataSource, query, fields);\n },\n baseEventArgs: e,\n cancel: false\n };\n this.trigger('filtering', eventArgs_1, function (eventArgs) {\n if (!eventArgs.cancel && !_this.isCustomFilter && !eventArgs.preventDefaultAction) {\n _this.filteringAction(_this.dataSource, null, _this.fields);\n }\n });\n }\n };\n /**\n * To filter the data from given data source by using query\n *\n * @param {Object[] | DataManager } dataSource - Set the data source to filter.\n * @param {Query} query - Specify the query to filter the data.\n * @param {FieldSettingsModel} fields - Specify the fields to map the column in the data table.\n * @returns {void}\n\n */\n DropDownList.prototype.filter = function (dataSource, query, fields) {\n this.isCustomFilter = true;\n this.filteringAction(dataSource, query, fields);\n };\n DropDownList.prototype.filteringAction = function (dataSource, query, fields) {\n if (!isNullOrUndefined(this.filterInput)) {\n this.beforePopupOpen = (!this.isPopupOpen && this.getModuleName() === 'combobox' && this.filterInput.value === '') ?\n false : true;\n var isNoData = this.list.classList.contains(dropDownBaseClasses.noData);\n if (this.filterInput.value.trim() === '' && !this.itemTemplate) {\n this.actionCompleteData.isUpdated = false;\n this.isTyped = false;\n if (!isNullOrUndefined(this.actionCompleteData.ulElement) && !isNullOrUndefined(this.actionCompleteData.list)) {\n if (this.enableVirtualization) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n this.resetList(dataSource, fields, query);\n if (isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list);\n }\n this.isTyped = true;\n if (!isNullOrUndefined(this.itemData) && this.getModuleName() === 'dropdownlist') {\n this.focusIndexItem();\n this.setScrollPosition();\n }\n this.isNotSearchList = true;\n }\n else {\n this.isNotSearchList = false;\n query = (this.filterInput.value.trim() === '') ? null : query;\n if (this.enableVirtualization && this.isFiltering() && this.isTyped) {\n this.isPreventScrollAction = true;\n this.list.scrollTop = 0;\n this.previousStartIndex = 0;\n this.virtualListInfo = null;\n }\n this.resetList(dataSource, fields, query);\n if (this.enableVirtualization && isNoData && !this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!this.list.querySelector('.e-virtual-ddl-content')) {\n this.list.appendChild(this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: this.getTransformValues()\n })).appendChild(this.list.querySelector('.e-list-parent'));\n }\n if (!this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = this.createElement('div', {\n id: this.element.id + '_popup', className: 'e-virtual-ddl', styles: this.GetVirtualTrackHeight()\n });\n document.getElementsByClassName('e-popup')[0].querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n }\n }\n if (this.enableVirtualization) {\n this.getFilteringSkeletonCount();\n }\n this.renderReactTemplates();\n }\n };\n DropDownList.prototype.setSearchBox = function (popupElement) {\n if (this.isFiltering()) {\n var parentElement = popupElement.querySelector('.' + dropDownListClasses.filterParent) ?\n popupElement.querySelector('.' + dropDownListClasses.filterParent) : this.createElement('span', {\n className: dropDownListClasses.filterParent\n });\n this.filterInput = this.createElement('input', {\n attrs: { type: 'text' },\n className: dropDownListClasses.filterInput\n });\n this.element.parentNode.insertBefore(this.filterInput, this.element);\n var backIcon = false;\n if (Browser.isDevice) {\n backIcon = true;\n }\n this.filterInputObj = Input.createInput({\n element: this.filterInput,\n buttons: backIcon ?\n [dropDownListClasses.backIcon, dropDownListClasses.filterBarClearIcon] : [dropDownListClasses.filterBarClearIcon],\n properties: { placeholder: this.filterBarPlaceholder }\n }, this.createElement);\n if (!isNullOrUndefined(this.cssClass)) {\n if (this.cssClass.split(' ').indexOf('e-outline') !== -1) {\n addClass([this.filterInputObj.container], 'e-outline');\n }\n else if (this.cssClass.split(' ').indexOf('e-filled') !== -1) {\n addClass([this.filterInputObj.container], 'e-filled');\n }\n }\n append([this.filterInputObj.container], parentElement);\n prepend([parentElement], popupElement);\n attributes(this.filterInput, {\n 'aria-disabled': 'false',\n 'role': 'combobox',\n 'autocomplete': 'off',\n 'autocapitalize': 'off',\n 'spellcheck': 'false'\n });\n this.clearIconElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n if (!Browser.isDevice && this.clearIconElement) {\n EventHandler.add(this.clearIconElement, 'click', this.clearText, this);\n this.clearIconElement.style.visibility = 'hidden';\n }\n if (!Browser.isDevice) {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n else {\n this.searchKeyModule = new KeyboardEvents(this.filterInput, {\n keyAction: this.mobileKeyActionHandler.bind(this),\n keyConfigs: this.keyConfigure,\n eventName: 'keydown'\n });\n }\n EventHandler.add(this.filterInput, 'input', this.onInput, this);\n EventHandler.add(this.filterInput, 'keyup', this.onFilterUp, this);\n EventHandler.add(this.filterInput, 'keydown', this.onFilterDown, this);\n EventHandler.add(this.filterInput, 'blur', this.onBlurHandler, this);\n EventHandler.add(this.filterInput, 'paste', this.pasteHandler, this);\n return this.filterInputObj;\n }\n else {\n return inputObject;\n }\n };\n DropDownList.prototype.onInput = function (e) {\n this.isValidKey = true;\n if (this.getModuleName() === 'combobox') {\n this.updateIconState();\n }\n // For filtering works in mobile firefox.\n if (Browser.isDevice && Browser.info.name === 'mozilla') {\n this.typedString = this.filterInput.value;\n this.preventAutoFill = true;\n this.searchLists(e);\n }\n };\n DropDownList.prototype.pasteHandler = function (e) {\n var _this = this;\n setTimeout(function () {\n _this.typedString = _this.filterInput.value;\n _this.searchLists(e);\n });\n };\n DropDownList.prototype.onActionFailure = function (e) {\n _super.prototype.onActionFailure.call(this, e);\n if (this.beforePopupOpen) {\n this.renderPopup();\n }\n };\n DropDownList.prototype.UpdateSkeleton = function (isSkeletonCountChange, skeletonCount) {\n var isContainSkeleton = this.list.querySelector('.e-virtual-ddl-content');\n var isContainVirtualList = this.list.querySelector('.e-virtual-list');\n if (isContainSkeleton && (!isContainVirtualList || isSkeletonCountChange) && this.enableVirtualization) {\n var totalSkeletonCount = isSkeletonCountChange ? skeletonCount : this.skeletonCount;\n for (var i = 0; i < totalSkeletonCount; i++) {\n var liElement = this.createElement('li', { className: dropDownListClasses.virtualList, styles: 'overflow: inherit' });\n if (this.enableVirtualization && this.itemTemplate) {\n liElement.style.height = this.listItemHeight + 'px';\n }\n var skeleton = new Skeleton({\n shape: \"Text\",\n height: \"10px\",\n width: \"95%\",\n cssClass: \"e-skeleton-text\",\n });\n skeleton.appendTo(this.createElement('div'));\n liElement.appendChild(skeleton.element);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n isContainSkeleton.firstChild.insertBefore(liElement, isContainSkeleton.firstChild.children[0]);\n }\n }\n };\n DropDownList.prototype.getTakeValue = function () {\n return this.allowFiltering && this.getModuleName() === 'dropdownlist' && Browser.isDevice ? Math.round(window.outerHeight / this.listItemHeight) : this.itemCount;\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DropDownList.prototype.onActionComplete = function (ulElement, list, e, isUpdated) {\n var _this = this;\n if (this.dataSource instanceof DataManager && !isNullOrUndefined(e) && !this.virtualGroupDataSource) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = e.count;\n }\n if (this.isNotSearchList && !this.enableVirtualization) {\n this.isNotSearchList = false;\n return;\n }\n var tempItemCount = this.itemCount;\n if (this.isActive || !isNullOrUndefined(ulElement)) {\n var selectedItem = this.selectedLI ? this.selectedLI.cloneNode(true) : null;\n _super.prototype.onActionComplete.call(this, ulElement, list, e);\n this.skeletonCount = this.totalItemCount != 0 && this.totalItemCount < (this.itemCount * 2) ? 0 : this.skeletonCount;\n this.updateSelectElementData(this.allowFiltering);\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent) && this.searchKeyEvent.type === 'keydown') {\n this.isRequested = false;\n this.keyActionHandler(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (this.isRequested && !isNullOrUndefined(this.searchKeyEvent)) {\n this.incrementalSearch(this.searchKeyEvent);\n this.searchKeyEvent = null;\n }\n if (!this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n if (!isNullOrUndefined(ulElement)) {\n attributes(ulElement, { 'id': this.element.id + '_options', 'role': 'listbox', 'aria-hidden': 'false', 'aria-label': 'listbox' });\n }\n if (this.initRemoteRender) {\n this.initial = true;\n this.activeIndex = this.index;\n this.initRemoteRender = false;\n if (this.value && this.dataSource instanceof DataManager) {\n var checkField_1 = isNullOrUndefined(this.fields.value) ? this.fields.text : this.fields.value;\n var fieldValue_1 = this.fields.value.split('.');\n var checkVal = list.some(function (x) {\n return isNullOrUndefined(x[checkField_1]) && fieldValue_1.length > 1 ?\n _this.checkFieldValue(x, fieldValue_1) === _this.value : x[checkField_1] === _this.value;\n });\n if (!checkVal) {\n this.dataSource.executeQuery(this.getQuery(this.query).where(new Predicate(checkField_1, 'equal', this.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, list.length);\n _this.updateValues();\n }\n else {\n _this.updateValues();\n }\n });\n }\n else {\n this.updateValues();\n }\n }\n else {\n this.updateValues();\n }\n this.initial = false;\n }\n else if (this.getModuleName() === 'autocomplete' && this.value) {\n this.setInputValue();\n }\n if (this.getModuleName() !== 'autocomplete' && this.isFiltering() && !this.isTyped) {\n if (!this.actionCompleteData.isUpdated || ((!this.isCustomFilter\n && !this.isFilterFocus) || (isNullOrUndefined(this.itemData) && this.allowFiltering)\n && ((this.dataSource instanceof DataManager)\n || (!isNullOrUndefined(this.dataSource) && !isNullOrUndefined(this.dataSource.length) &&\n this.dataSource.length !== 0)))) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.updateActionCompleteDataValues(ulElement, list);\n }, 0);\n }\n else {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if ((this.allowCustom || (this.allowFiltering && !this.isValueInList(list, this.value) && this.dataSource instanceof DataManager)) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n else if ((this.allowCustom || (this.allowFiltering && this.isValueInList(list, this.value))) && !this.enableVirtualization) {\n this.addNewItem(list, selectedItem);\n }\n if (!isNullOrUndefined(this.itemData) || (isNullOrUndefined(this.itemData) && this.enableVirtualization)) {\n this.focusIndexItem();\n }\n if (this.enableVirtualization) {\n this.updateActionCompleteDataValues(ulElement, list);\n }\n }\n else if (this.enableVirtualization && this.getModuleName() !== 'autocomplete' && !this.isFiltering()) {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n }\n else if (this.enableVirtualization && this.getModuleName() === 'autocomplete') {\n this.activeIndex = this.skeletonCount;\n }\n if (this.beforePopupOpen) {\n this.renderPopup(e);\n if (this.enableVirtualization) {\n if (!this.list.querySelector('.e-virtual-list')) {\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n }\n }\n if (this.enableVirtualization && tempItemCount != this.itemCount) {\n this.resetList(this.dataSource, this.fields);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.isValueInList = function (list, valueToFind) {\n if (Array.isArray(list)) {\n for (var i = 0; i < list.length; i++) {\n if (list[i] === valueToFind) {\n return true;\n }\n }\n }\n else if (typeof list === 'object' && list !== null) {\n for (var key in list) {\n if (Object.prototype.hasOwnProperty.call(list, key) && list[key] === valueToFind) {\n return true;\n }\n }\n }\n return false;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.checkFieldValue = function (list, fieldValue) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var checkField = list;\n fieldValue.forEach(function (value) {\n checkField = checkField[value];\n });\n return checkField;\n };\n DropDownList.prototype.updateActionCompleteDataValues = function (ulElement, list) {\n this.actionCompleteData = { ulElement: ulElement.cloneNode(true), list: list, isUpdated: true };\n if (this.actionData.list !== this.actionCompleteData.list && this.actionCompleteData.ulElement && this.actionCompleteData.list) {\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.addNewItem = function (listData, newElement) {\n var _this = this;\n if (!isNullOrUndefined(this.itemData) && !isNullOrUndefined(newElement)) {\n var value_5 = this.getItemData().value;\n var isExist = listData.some(function (data) {\n return (((typeof data === 'string' || typeof data === 'number') && data === value_5) ||\n (getValue(_this.fields.value, data) === value_5));\n });\n if (!isExist) {\n this.addItem(this.itemData);\n }\n }\n };\n DropDownList.prototype.updateActionCompleteData = function (li, item, index) {\n var _this = this;\n if (this.getModuleName() !== 'autocomplete' && this.actionCompleteData.ulElement) {\n if (this.itemTemplate && this.element.tagName === 'EJS-COMBOBOX' && this.allowFiltering) {\n setTimeout(function () {\n _this.actionCompleteDataUpdate(li, item, index);\n }, 0);\n }\n else {\n this.actionCompleteDataUpdate(li, item, index);\n }\n }\n };\n DropDownList.prototype.actionCompleteDataUpdate = function (li, item, index) {\n if (index !== null) {\n this.actionCompleteData.ulElement.\n insertBefore(li.cloneNode(true), this.actionCompleteData.ulElement.childNodes[index]);\n }\n else {\n this.actionCompleteData.ulElement.appendChild(li.cloneNode(true));\n }\n if (this.isFiltering() && this.actionCompleteData.list.indexOf(item) < 0) {\n this.actionCompleteData.list.push(item);\n }\n };\n DropDownList.prototype.focusIndexItem = function () {\n var value = this.getItemData().value;\n this.activeIndex = this.getIndexByValue(value);\n var element = this.findListElement(this.list, 'li', 'data-value', value);\n this.selectedLI = element;\n this.activeItem(element);\n if (!(this.enableVirtualization && isNullOrUndefined(element))) {\n this.removeFocus();\n }\n };\n DropDownList.prototype.updateSelection = function () {\n var selectedItem = this.list.querySelector('.' + dropDownBaseClasses.selected);\n if (selectedItem) {\n this.setProperties({ 'index': this.getIndexByValue(selectedItem.getAttribute('data-value')) });\n this.activeIndex = this.index;\n }\n else {\n this.removeFocus();\n this.list.querySelector('.' + dropDownBaseClasses.li).classList.add(dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.updateSelectionList = function () {\n var selectedItem = this.list && this.list.querySelector('.' + 'e-active');\n if (!selectedItem && !isNullOrUndefined(this.value)) {\n var findEle = this.findListElement(this.list, 'li', 'data-value', this.value);\n if (findEle) {\n findEle.classList.add('e-active');\n }\n }\n };\n DropDownList.prototype.checkAndResetCache = function () {\n if (this.enableVirtualization) {\n this.generatedDataObject = {};\n this.virtualItemStartIndex = this.virtualItemEndIndex = 0;\n this.viewPortInfo = { currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: this.itemCount, };\n this.selectedValueInfo = null;\n }\n };\n DropDownList.prototype.removeFocus = function () {\n var highlightedItem = this.list.querySelectorAll('.' + dropDownListClasses.focus);\n if (highlightedItem && highlightedItem.length) {\n removeClass(highlightedItem, dropDownListClasses.focus);\n }\n };\n DropDownList.prototype.getTransformValues = function () {\n var translateY = this.viewPortInfo.startIndex * this.listItemHeight;\n translateY = translateY - (this.skeletonCount * this.listItemHeight);\n translateY = this.viewPortInfo.startIndex === 0 && this.listData && this.listData.length === 0 ? 0 : translateY;\n var styleText = \"transform: translate(0px, \" + translateY + \"px);\";\n return styleText;\n };\n DropDownList.prototype.GetVirtualTrackHeight = function () {\n var height = this.totalItemCount === this.viewPortInfo.endIndex ? this.totalItemCount * this.listItemHeight - this.itemCount * this.listItemHeight : this.totalItemCount * this.listItemHeight;\n var heightDimension = \"height: \" + (height - this.itemCount * this.listItemHeight) + \"px;\";\n if (this.getModuleName() === 'autocomplete' && this.skeletonCount === 0) {\n return \"height: 0px;\";\n }\n return heightDimension;\n };\n DropDownList.prototype.renderPopup = function (e) {\n var _this = this;\n if (this.popupObj && document.body.contains(this.popupObj.element)) {\n this.refreshPopup();\n return;\n }\n var args = { cancel: false };\n this.trigger('beforeOpen', args, function (args) {\n if (!args.cancel) {\n var popupEle = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-ddl e-popup ' + (_this.cssClass !== null ? _this.cssClass : '')\n });\n popupEle.setAttribute('aria-label', _this.element.id);\n popupEle.setAttribute('role', 'dialog');\n var searchBox = _this.setSearchBox(popupEle);\n _this.listHeight = formatUnit(_this.popupHeight);\n if (_this.headerTemplate) {\n _this.setHeaderTemplate(popupEle);\n }\n append([_this.list], popupEle);\n if (_this.footerTemplate) {\n _this.setFooterTemplate(popupEle);\n }\n document.body.appendChild(popupEle);\n if (_this.enableVirtualization && _this.itemTemplate) {\n var listitems = popupEle.querySelectorAll('li.e-list-item:not(.e-virtual-list)');\n _this.listItemHeight = listitems.length > 0 ? Math.ceil(listitems[0].getBoundingClientRect().height) : 0;\n }\n if (_this.enableVirtualization && !_this.list.classList.contains(dropDownBaseClasses.noData)) {\n if (!_this.list.querySelector('.e-virtual-ddl-content')) {\n _this.list.appendChild(_this.createElement('div', {\n className: 'e-virtual-ddl-content',\n styles: _this.getTransformValues()\n })).appendChild(_this.list.querySelector('.e-list-parent'));\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = _this.getTransformValues();\n }\n _this.UpdateSkeleton();\n _this.liCollections = _this.list.querySelectorAll('.' + dropDownBaseClasses.li);\n _this.virtualItemCount = _this.itemCount;\n if (!_this.list.querySelector('.e-virtual-ddl')) {\n var virualElement = _this.createElement('div', {\n id: _this.element.id + '_popup', className: 'e-virtual-ddl', styles: _this.GetVirtualTrackHeight()\n });\n popupEle.querySelector('.e-dropdownbase').appendChild(virualElement);\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.list.getElementsByClassName('e-virtual-ddl')[0].style = _this.GetVirtualTrackHeight();\n }\n }\n popupEle.style.visibility = 'hidden';\n if (_this.popupHeight !== 'auto') {\n _this.searchBoxHeight = 0;\n if (!isNullOrUndefined(searchBox.container) && _this.getModuleName() !== 'combobox' && _this.getModuleName() !== 'autocomplete') {\n _this.searchBoxHeight = (searchBox.container.parentElement).getBoundingClientRect().height;\n _this.listHeight = (parseInt(_this.listHeight, 10) - (_this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.headerTemplate) {\n _this.header = _this.header ? _this.header : popupEle.querySelector('.e-ddl-header');\n var height = Math.round(_this.header.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n if (_this.footerTemplate) {\n _this.footer = _this.footer ? _this.footer : popupEle.querySelector('.e-ddl-footer');\n var height = Math.round(_this.footer.getBoundingClientRect().height);\n _this.listHeight = (parseInt(_this.listHeight, 10) - (height + _this.searchBoxHeight)).toString() + 'px';\n }\n _this.list.style.maxHeight = (parseInt(_this.listHeight, 10) - 2).toString() + 'px'; // due to box-sizing property\n popupEle.style.maxHeight = formatUnit(_this.popupHeight);\n }\n else {\n popupEle.style.height = 'auto';\n }\n var offsetValue = 0;\n var left = void 0;\n _this.isPreventScrollAction = true;\n if (!isNullOrUndefined(_this.selectedLI) && (!isNullOrUndefined(_this.activeIndex) && _this.activeIndex >= 0)) {\n _this.setScrollPosition();\n }\n else if (_this.enableVirtualization) {\n _this.setScrollPosition();\n }\n else {\n _this.list.scrollTop = 0;\n }\n if (Browser.isDevice && (!_this.allowFiltering && (_this.getModuleName() === 'dropdownlist' ||\n (_this.isDropDownClick && _this.getModuleName() === 'combobox')))) {\n offsetValue = _this.getOffsetValue(popupEle);\n var firstItem = _this.isEmptyList() ? _this.list : _this.liCollections[0];\n if (!isNullOrUndefined(_this.inputElement)) {\n left = -(parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(_this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(_this.inputElement.parentElement).borderLeftWidth, 10));\n }\n }\n _this.createPopup(popupEle, offsetValue, left);\n _this.popupContentElement = _this.popupObj.element.querySelector('.e-content');\n _this.getFocusElement();\n _this.checkCollision(popupEle);\n if (Browser.isDevice) {\n _this.popupObj.element.classList.add(dropDownListClasses.device);\n if (_this.getModuleName() === 'dropdownlist' || (_this.getModuleName() === 'combobox'\n && !_this.allowFiltering && _this.isDropDownClick)) {\n _this.popupObj.collision = { X: 'fit', Y: 'fit' };\n }\n if (_this.isFilterLayout()) {\n _this.popupObj.element.classList.add(dropDownListClasses.mobileFilter);\n _this.popupObj.position = { X: 0, Y: 0 };\n _this.popupObj.dataBind();\n attributes(_this.popupObj.element, { style: 'left:0px;right:0px;top:0px;bottom:0px;' });\n addClass([document.body, _this.popupObj.element], dropDownListClasses.popupFullScreen);\n _this.setSearchBoxPosition();\n _this.backIconElement = searchBox.container.querySelector('.e-back-icon');\n _this.clearIconElement = searchBox.container.querySelector('.' + dropDownListClasses.clearIcon);\n EventHandler.add(_this.backIconElement, 'click', _this.clickOnBackIcon, _this);\n EventHandler.add(_this.clearIconElement, 'click', _this.clearText, _this);\n }\n }\n popupEle.style.visibility = 'visible';\n addClass([popupEle], 'e-popup-close');\n var scrollParentElements = _this.popupObj.getScrollableParent(_this.inputWrapper.container);\n for (var _i = 0, scrollParentElements_1 = scrollParentElements; _i < scrollParentElements_1.length; _i++) {\n var element = scrollParentElements_1[_i];\n EventHandler.add(element, 'scroll', _this.scrollHandler, _this);\n }\n if (!isNullOrUndefined(_this.list)) {\n _this.unWireListEvents();\n _this.wireListEvents();\n }\n _this.selectedElementID = _this.selectedLI ? _this.selectedLI.id : null;\n if (_this.enableVirtualization) {\n _this.notify(\"bindScrollEvent\", {\n module: \"VirtualScroll\",\n component: _this.getModuleName(),\n enable: _this.enableVirtualization,\n });\n setTimeout(function () {\n if (_this.value || _this.list.querySelector('.e-active')) {\n _this.updateSelectionList();\n if (_this.selectedValueInfo && _this.viewPortInfo && _this.viewPortInfo.offsets.top) {\n _this.list.scrollTop = _this.viewPortInfo.offsets.top;\n }\n else {\n _this.scrollBottom(true, true);\n }\n }\n }, 5);\n }\n attributes(_this.targetElement(), { 'aria-expanded': 'true', 'aria-owns': _this.element.id + '_popup', 'aria-controls': _this.element.id });\n _this.inputElement.setAttribute('aria-expanded', 'true');\n _this.inputElement.setAttribute('aria-controls', _this.element.id);\n var inputParent = _this.isFiltering() ? _this.filterInput.parentElement : _this.inputWrapper.container;\n addClass([inputParent], [dropDownListClasses.inputFocus]);\n var animModel = { name: 'FadeIn', duration: 100 };\n _this.beforePopupOpen = true;\n var popupInstance = _this.popupObj;\n var eventArgs = { popup: popupInstance, event: e, cancel: false, animation: animModel };\n _this.trigger('open', eventArgs, function (eventArgs) {\n if (!eventArgs.cancel) {\n if (!isNullOrUndefined(_this.inputWrapper)) {\n addClass([_this.inputWrapper.container], [dropDownListClasses.iconAnimation]);\n }\n _this.renderReactTemplates();\n if (!isNullOrUndefined(_this.popupObj)) {\n _this.popupObj.show(new Animation(eventArgs.animation), (_this.zIndex === 1000) ? _this.element : null);\n }\n }\n else {\n _this.beforePopupOpen = false;\n _this.destroyPopup();\n }\n });\n }\n else {\n _this.beforePopupOpen = false;\n }\n });\n };\n DropDownList.prototype.checkCollision = function (popupEle) {\n if (!Browser.isDevice || (Browser.isDevice && !(this.getModuleName() === 'dropdownlist' || this.isDropDownClick))) {\n var collision = isCollide(popupEle);\n if (collision.length > 0) {\n popupEle.style.marginTop = -parseInt(getComputedStyle(popupEle).marginTop, 10) + 'px';\n }\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.getOffsetValue = function (popupEle) {\n var popupStyles = getComputedStyle(popupEle);\n var borderTop = parseInt(popupStyles.borderTopWidth, 10);\n var borderBottom = parseInt(popupStyles.borderBottomWidth, 10);\n return this.setPopupPosition(borderTop + borderBottom);\n };\n DropDownList.prototype.createPopup = function (element, offsetValue, left) {\n var _this = this;\n this.popupObj = new Popup(element, {\n width: this.setWidth(), targetType: 'relative',\n relateTo: this.inputWrapper.container,\n collision: this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }, offsetY: offsetValue,\n enableRtl: this.enableRtl, offsetX: left,\n position: this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' },\n zIndex: this.zIndex,\n close: function () {\n if (!_this.isDocumentClick) {\n _this.focusDropDown();\n }\n // eslint-disable-next-line\n if (_this.isReact) {\n _this.clearTemplate(['headerTemplate', 'footerTemplate']);\n }\n _this.isNotSearchList = false;\n _this.isDocumentClick = false;\n _this.destroyPopup();\n if (_this.isFiltering() && _this.actionCompleteData.list && _this.actionCompleteData.list[0]) {\n _this.isActive = true;\n if (_this.enableVirtualization) {\n _this.onActionComplete(_this.ulElement, _this.listData, null, true);\n }\n else {\n _this.onActionComplete(_this.actionCompleteData.ulElement, _this.actionCompleteData.list, null, true);\n }\n }\n },\n open: function () {\n EventHandler.add(document, 'mousedown', _this.onDocumentClick, _this);\n _this.isPopupOpen = true;\n var actionList = _this.actionCompleteData && _this.actionCompleteData.ulElement &&\n _this.actionCompleteData.ulElement.querySelector('li');\n var ulElement = _this.list.querySelector('ul li');\n if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-item-focus')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-item-focus')[0].id });\n }\n else if (!isNullOrUndefined(_this.ulElement) && !isNullOrUndefined(_this.ulElement.getElementsByClassName('e-active')[0])) {\n attributes(_this.targetElement(), { 'aria-activedescendant': _this.ulElement.getElementsByClassName('e-active')[0].id });\n }\n if (_this.isFiltering() && _this.itemTemplate && (_this.element.tagName === _this.getNgDirective()) &&\n (actionList && ulElement && actionList.textContent !== ulElement.textContent) &&\n _this.element.tagName !== 'EJS-COMBOBOX') {\n _this.cloneElements();\n }\n if (_this.isFilterLayout()) {\n removeClass([_this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n _this.isFilterFocus = true;\n _this.filterInput.focus();\n if (_this.inputWrapper.clearButton) {\n addClass([_this.inputWrapper.clearButton], dropDownListClasses.clearIconHide);\n }\n }\n _this.activeStateChange();\n },\n targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hidePopup();\n }\n }\n });\n };\n DropDownList.prototype.isEmptyList = function () {\n return !isNullOrUndefined(this.liCollections) && this.liCollections.length === 0;\n };\n DropDownList.prototype.getFocusElement = function () {\n // combo-box used this method\n };\n DropDownList.prototype.isFilterLayout = function () {\n return this.getModuleName() === 'dropdownlist' && this.allowFiltering;\n };\n DropDownList.prototype.scrollHandler = function () {\n if (Browser.isDevice && ((this.getModuleName() === 'dropdownlist' &&\n !this.isFilterLayout()) || (this.getModuleName() === 'combobox' && !this.allowFiltering && this.isDropDownClick))) {\n this.hidePopup();\n }\n };\n DropDownList.prototype.setSearchBoxPosition = function () {\n var searchBoxHeight = this.filterInput.parentElement.getBoundingClientRect().height;\n this.popupObj.element.style.maxHeight = '100%';\n this.popupObj.element.style.width = '100%';\n this.list.style.maxHeight = (window.innerHeight - searchBoxHeight) + 'px';\n this.list.style.height = (window.innerHeight - searchBoxHeight) + 'px';\n var clearElement = this.filterInput.parentElement.querySelector('.' + dropDownListClasses.clearIcon);\n detach(this.filterInput);\n clearElement.parentElement.insertBefore(this.filterInput, clearElement);\n };\n DropDownList.prototype.setPopupPosition = function (border) {\n var offsetValue;\n var popupOffset = border;\n var selectedLI = this.list.querySelector('.' + dropDownListClasses.focus) || this.selectedLI;\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n var lastItem = this.isEmptyList() ? this.list : this.liCollections[this.getItems().length - 1];\n var liHeight = firstItem.getBoundingClientRect().height;\n this.listItemHeight = liHeight;\n var listHeight = this.list.offsetHeight / 2;\n var height = isNullOrUndefined(selectedLI) ? firstItem.offsetTop : selectedLI.offsetTop;\n var lastItemOffsetValue = lastItem.offsetTop;\n if (lastItemOffsetValue - listHeight < height && !isNullOrUndefined(this.liCollections) &&\n this.liCollections.length > 0 && !isNullOrUndefined(selectedLI)) {\n var count = this.list.offsetHeight / liHeight;\n var paddingBottom = parseInt(getComputedStyle(this.list).paddingBottom, 10);\n offsetValue = (count - (this.liCollections.length - this.activeIndex)) * liHeight - popupOffset + paddingBottom;\n this.list.scrollTop = selectedLI.offsetTop;\n }\n else if (height > listHeight && !this.enableVirtualization) {\n offsetValue = listHeight - liHeight / 2;\n this.list.scrollTop = height - listHeight + liHeight / 2;\n }\n else {\n offsetValue = height;\n }\n var inputHeight = this.inputWrapper.container.offsetHeight;\n offsetValue = offsetValue + liHeight + popupOffset - ((liHeight - inputHeight) / 2);\n return -offsetValue;\n };\n DropDownList.prototype.setWidth = function () {\n var width = formatUnit(this.popupWidth);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.inputWrapper.container.offsetWidth * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n if (Browser.isDevice && (!this.allowFiltering && (this.getModuleName() === 'dropdownlist' ||\n (this.isDropDownClick && this.getModuleName() === 'combobox')))) {\n var firstItem = this.isEmptyList() ? this.list : this.liCollections[0];\n width = (parseInt(width, 10) + (parseInt(getComputedStyle(firstItem).textIndent, 10) -\n parseInt(getComputedStyle(this.inputElement).paddingLeft, 10) +\n parseInt(getComputedStyle(this.inputElement.parentElement).borderLeftWidth, 10)) * 2) + 'px';\n }\n return width;\n };\n DropDownList.prototype.scrollBottom = function (isInitial, isInitialSelection, keyAction) {\n var _this = this;\n if (isInitialSelection === void 0) { isInitialSelection = false; }\n if (keyAction === void 0) { keyAction = null; }\n if (isNullOrUndefined(this.selectedLI) && this.enableVirtualization) {\n this.selectedLI = this.list.querySelector('.' + dropDownBaseClasses.li);\n if (!isNullOrUndefined(this.selectedLI) && this.selectedLI.classList.contains('e-virtual-list')) {\n this.selectedLI = this.liCollections[this.skeletonCount];\n }\n }\n if (!isNullOrUndefined(this.selectedLI)) {\n this.isUpwardScrolling = false;\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var lastElementValue = this.list.querySelector('li:last-of-type') ? this.list.querySelector('li:last-of-type').getAttribute('data-value') : null;\n var selectedLiOffsetTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var currentOffset = this.list.offsetHeight;\n var nextBottom = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop;\n var nextOffset = this.list.scrollTop + nextBottom - currentOffset;\n var isScrollerCHanged = false;\n var isScrollTopChanged = false;\n nextOffset = isInitial ? nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10) * 2 : nextOffset + parseInt(getComputedStyle(this.list).paddingTop, 10);\n var boxRange = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop;\n boxRange = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n boxRange - this.fixedHeaderElement.offsetHeight : boxRange;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n isScrollerCHanged = this.isKeyBoardAction;\n }\n else if (nextBottom > currentOffset || !(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageDown\" ? this.getPageCount() - 2 : 1;\n if (!this.enableVirtualization || this.isKeyBoardAction || isInitialSelection) {\n if (this.isKeyBoardAction && this.enableVirtualization && lastElementValue && currentElementValue === lastElementValue && keyAction != \"end\" && !this.isVirtualScrolling) {\n this.isPreventKeyAction = true;\n if (this.enableVirtualization && this.itemTemplate) {\n this.list.scrollTop += nextOffset;\n }\n else {\n this.list.scrollTop += this.selectedLI.offsetHeight * liCount;\n }\n this.isPreventKeyAction = this.IsScrollerAtEnd() ? false : this.isPreventKeyAction;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"end\") {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n this.list.scrollTop = this.list.scrollHeight;\n }\n else {\n if (keyAction == \"pageDown\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n nextOffset = nextOffset + (this.selectedLI.offsetHeight * liCount);\n }\n this.list.scrollTop = nextOffset;\n }\n }\n else {\n this.list.scrollTop = this.virtualListInfo && this.virtualListInfo.startIndex ? this.virtualListInfo.startIndex * this.listItemHeight : 0;\n }\n isScrollerCHanged = this.isKeyBoardAction;\n isScrollTopChanged = true;\n }\n this.isKeyBoardAction = isScrollerCHanged;\n if (this.enableVirtualization && this.fields.groupBy && this.fixedHeaderElement && (keyAction == \"down\")) {\n setTimeout(function () {\n _this.scrollStop(null, true);\n }, 100);\n }\n }\n };\n DropDownList.prototype.scrollTop = function (keyAction) {\n if (keyAction === void 0) { keyAction = null; }\n if (!isNullOrUndefined(this.selectedLI)) {\n var virtualListCount = this.list.querySelectorAll('.e-virtual-list').length;\n var selectedLiOffsetTop = (this.virtualListInfo && this.virtualListInfo.startIndex) ? this.selectedLI.offsetTop + (this.virtualListInfo.startIndex * this.selectedLI.offsetHeight) : this.selectedLI.offsetTop;\n var nextOffset = selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) - this.list.scrollTop;\n var firstElementValue = this.list.querySelector('li.e-list-item:not(.e-virtual-list)') ? this.list.querySelector('li.e-list-item:not(.e-virtual-list)').getAttribute('data-value') : null;\n nextOffset = this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n nextOffset - this.fixedHeaderElement.offsetHeight : nextOffset;\n var boxRange = (selectedLiOffsetTop - (virtualListCount * this.selectedLI.offsetHeight) + this.selectedLI.offsetHeight - this.list.scrollTop);\n var isPageUpKeyAction = this.enableVirtualization && this.getModuleName() === 'autocomplete' && nextOffset <= 0;\n if (this.activeIndex === 0 && !this.enableVirtualization) {\n this.list.scrollTop = 0;\n }\n else if (nextOffset < 0 || isPageUpKeyAction) {\n var currentElementValue = this.selectedLI ? this.selectedLI.getAttribute('data-value') : null;\n var liCount = keyAction == \"pageUp\" ? this.getPageCount() - 2 : 1;\n if (this.enableVirtualization && this.isKeyBoardAction && firstElementValue && currentElementValue === firstElementValue && keyAction != \"home\" && !this.isVirtualScrolling) {\n this.isUpwardScrolling = true;\n this.isPreventKeyAction = true;\n this.list.scrollTop -= this.selectedLI.offsetHeight * liCount;\n this.isPreventKeyAction = this.list.scrollTop != 0 ? this.isPreventKeyAction : false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n }\n else if (this.enableVirtualization && keyAction == \"home\") {\n this.isPreventScrollAction = false;\n this.isPreventKeyAction = true;\n this.isKeyBoardAction = false;\n this.list.scrollTo(0, 0);\n }\n else {\n if (keyAction == \"pageUp\" && this.enableVirtualization && !this.isVirtualScrolling) {\n this.isPreventKeyAction = false;\n this.isKeyBoardAction = false;\n this.isPreventScrollAction = false;\n nextOffset = nextOffset - (this.selectedLI.offsetHeight * liCount);\n }\n this.list.scrollTop = this.list.scrollTop + nextOffset;\n }\n }\n else if (!(boxRange > 0 && this.list.offsetHeight > boxRange)) {\n this.list.scrollTop = this.selectedLI.offsetTop - (this.fields.groupBy && !isNullOrUndefined(this.fixedHeaderElement) ?\n this.fixedHeaderElement.offsetHeight : 0);\n }\n }\n };\n DropDownList.prototype.isEditTextBox = function () {\n return false;\n };\n DropDownList.prototype.isFiltering = function () {\n return this.allowFiltering;\n };\n DropDownList.prototype.isPopupButton = function () {\n return true;\n };\n DropDownList.prototype.setScrollPosition = function (e) {\n this.isPreventScrollAction = true;\n if (!isNullOrUndefined(e)) {\n switch (e.action) {\n case 'pageDown':\n case 'down':\n case 'end':\n this.isKeyBoardAction = true;\n this.scrollBottom(false, false, e.action);\n break;\n default:\n this.isKeyBoardAction = e.action == 'up' || e.action == 'pageUp' || e.action == 'open';\n this.scrollTop(e.action);\n break;\n }\n }\n else {\n this.scrollBottom(true);\n }\n this.isKeyBoardAction = false;\n };\n DropDownList.prototype.clearText = function () {\n this.filterInput.value = this.typedString = '';\n this.searchLists(null);\n if (this.enableVirtualization) {\n this.list.scrollTop = 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n this.getSkeletonCount();\n this.UpdateSkeleton();\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n }\n };\n DropDownList.prototype.setEleWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n DropDownList.prototype.closePopup = function (delay, e) {\n var _this = this;\n var isFilterValue = !isNullOrUndefined(this.filterInput) && !isNullOrUndefined(this.filterInput.value) && this.filterInput.value !== '';\n var typedString = this.getModuleName() === 'combobox' ? this.typedString : null;\n this.isTyped = false;\n if (!(this.popupObj && document.body.contains(this.popupObj.element) && this.beforePopupOpen)) {\n return;\n }\n this.keyboardEvent = null;\n EventHandler.remove(document, 'mousedown', this.onDocumentClick);\n this.isActive = false;\n this.filterInputObj = null;\n this.isDropDownClick = false;\n this.preventAutoFill = false;\n var scrollableParentElements = this.popupObj.getScrollableParent(this.inputWrapper.container);\n for (var _i = 0, scrollableParentElements_1 = scrollableParentElements; _i < scrollableParentElements_1.length; _i++) {\n var element = scrollableParentElements_1[_i];\n EventHandler.remove(element, 'scroll', this.scrollHandler);\n }\n if (Browser.isDevice && this.isFilterLayout()) {\n removeClass([document.body, this.popupObj.element], dropDownListClasses.popupFullScreen);\n }\n if (this.isFilterLayout()) {\n if (!Browser.isDevice) {\n this.searchKeyModule.destroy();\n if (this.clearIconElement) {\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n }\n if (this.backIconElement) {\n EventHandler.remove(this.backIconElement, 'click', this.clickOnBackIcon);\n EventHandler.remove(this.clearIconElement, 'click', this.clearText);\n }\n if (!isNullOrUndefined(this.filterInput)) {\n EventHandler.remove(this.filterInput, 'input', this.onInput);\n EventHandler.remove(this.filterInput, 'keyup', this.onFilterUp);\n EventHandler.remove(this.filterInput, 'keydown', this.onFilterDown);\n EventHandler.remove(this.filterInput, 'blur', this.onBlurHandler);\n EventHandler.remove(this.filterInput, 'paste', this.pasteHandler);\n }\n if (this.allowFiltering && this.getModuleName() === 'dropdownlist') {\n this.filterInput.removeAttribute('aria-activedescendant');\n }\n this.filterInput = null;\n }\n attributes(this.targetElement(), { 'aria-expanded': 'false' });\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.targetElement().removeAttribute('aria-owns');\n this.targetElement().removeAttribute('aria-activedescendant');\n this.inputWrapper.container.classList.remove(dropDownListClasses.iconAnimation);\n if (this.isFiltering()) {\n this.actionCompleteData.isUpdated = false;\n }\n if (this.enableVirtualization) {\n if ((this.value == null || this.isTyped)) {\n this.viewPortInfo.endIndex = this.viewPortInfo && this.viewPortInfo.endIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n if (this.getModuleName() === 'autocomplete' || (this.getModuleName() === 'dropdownlist' && !isNullOrUndefined(this.typedString) && this.typedString != \"\") || (this.getModuleName() === 'combobox' && this.allowFiltering && !isNullOrUndefined(this.typedString) && this.typedString != \"\")) {\n this.checkAndResetCache();\n }\n }\n else if (this.getModuleName() === 'autocomplete') {\n this.checkAndResetCache();\n }\n if ((this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox') && !(this.skeletonCount == 0)) {\n this.getSkeletonCount(true);\n }\n }\n this.beforePopupOpen = false;\n var animModel = {\n name: 'FadeOut',\n duration: 100,\n delay: delay ? delay : 0\n };\n var popupInstance = this.popupObj;\n var eventArgs = { popup: popupInstance, cancel: false, animation: animModel, event: e || null };\n this.trigger('close', eventArgs, function (eventArgs) {\n if (!isNullOrUndefined(_this.popupObj) &&\n !isNullOrUndefined(_this.popupObj.element.querySelector('.e-fixed-head'))) {\n var fixedHeader = _this.popupObj.element.querySelector('.e-fixed-head');\n fixedHeader.parentNode.removeChild(fixedHeader);\n _this.fixedHeaderElement = null;\n }\n if (!eventArgs.cancel) {\n if (_this.getModuleName() === 'autocomplete') {\n _this.rippleFun();\n }\n if (_this.isPopupOpen) {\n _this.popupObj.hide(new Animation(eventArgs.animation));\n }\n else {\n _this.destroyPopup();\n }\n }\n });\n if (this.isReact && this.isFiltering() && this.itemTemplate != null) {\n this.actionCompleteData.ulElement = this.ulElement.cloneNode(true);\n }\n var dataSourceCount;\n if (this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ? this.virtualGroupDataSource.length : 0;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n dataSourceCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n if (this.enableVirtualization && this.isFiltering() && this.value != null && isFilterValue && this.totalItemCount !== dataSourceCount) {\n this.updateInitialData();\n this.checkAndResetCache();\n }\n };\n DropDownList.prototype.updateInitialData = function () {\n var currentData = this.selectData;\n var ulElement = this.renderItems(currentData, this.fields);\n this.list.scrollTop = 0;\n this.virtualListInfo = {\n currentPageNumber: null,\n direction: null,\n sentinelInfo: {},\n offsets: {},\n startIndex: 0,\n endIndex: 0,\n };\n if (this.getModuleName() === 'combobox') {\n this.typedString = \"\";\n }\n this.previousStartIndex = 0;\n this.previousEndIndex = 0;\n if (this.dataSource instanceof DataManager) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.virtualGroupDataSource && this.virtualGroupDataSource.length ? this.virtualGroupDataSource.length : 0;\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.totalItemCount = this.dataCount = this.dataSource && this.dataSource.length ? this.dataSource.length : 0;\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl')[0].style = this.GetVirtualTrackHeight();\n }\n if (this.getModuleName() !== 'autocomplete' && this.totalItemCount != 0 && this.totalItemCount > (this.itemCount * 2)) {\n this.getSkeletonCount();\n }\n this.UpdateSkeleton();\n this.listData = currentData;\n this.updateActionCompleteDataValues(ulElement, currentData);\n this.liCollections = this.list.querySelectorAll('.e-list-item');\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.list.getElementsByClassName('e-virtual-ddl-content')[0]) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.list.getElementsByClassName('e-virtual-ddl-content')[0].style = this.getTransformValues();\n }\n };\n DropDownList.prototype.destroyPopup = function () {\n this.isPopupOpen = false;\n this.isFilterFocus = false;\n if (this.popupObj) {\n this.popupObj.destroy();\n detach(this.popupObj.element);\n }\n };\n DropDownList.prototype.clickOnBackIcon = function () {\n this.hidePopup();\n this.focusIn();\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n DropDownList.prototype.render = function () {\n this.preselectedIndex = !isNullOrUndefined(this.index) ? this.index : null;\n if (this.element.tagName === 'INPUT') {\n this.inputElement = this.element;\n if (isNullOrUndefined(this.inputElement.getAttribute('role'))) {\n this.inputElement.setAttribute('role', 'combobox');\n }\n if (isNullOrUndefined(this.inputElement.getAttribute('type'))) {\n this.inputElement.setAttribute('type', 'text');\n }\n this.inputElement.setAttribute('aria-expanded', 'false');\n }\n else {\n this.inputElement = this.createElement('input', { attrs: { role: 'combobox', type: 'text' } });\n if (this.element.tagName !== this.getNgDirective()) {\n this.element.style.display = 'none';\n }\n this.element.parentElement.insertBefore(this.inputElement, this.element);\n this.preventTabIndex(this.inputElement);\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n buttons: this.isPopupButton() ? [dropDownListClasses.icon] : null,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.getModuleName() === 'dropdownlist' ? true : this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n }\n }, this.createElement);\n if (this.element.tagName === this.getNgDirective()) {\n this.element.appendChild(this.inputWrapper.container);\n }\n else {\n this.inputElement.parentElement.insertBefore(this.element, this.inputElement);\n }\n this.hiddenElement = this.createElement('select', {\n attrs: { 'aria-hidden': 'true', 'aria-label': this.getModuleName(), 'tabindex': '-1', 'class': dropDownListClasses.hiddenElement }\n });\n prepend([this.hiddenElement], this.inputWrapper.container);\n this.validationAttribute(this.element, this.hiddenElement);\n this.setReadOnly();\n this.setFields();\n this.inputWrapper.container.style.width = formatUnit(this.width);\n this.inputWrapper.container.classList.add('e-ddl');\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0] && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-content')[0].classList.add('e-icon');\n }\n this.wireEvent();\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n var id = this.element.getAttribute('id') ? this.element.getAttribute('id') : getUniqueID('ej2_dropdownlist');\n this.element.id = id;\n this.hiddenElement.id = id + '_hidden';\n this.targetElement().setAttribute('tabindex', this.tabIndex);\n if ((this.getModuleName() === 'autocomplete' || this.getModuleName() === 'combobox') && !this.readonly) {\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n }\n else if (this.getModuleName() === 'dropdownlist') {\n attributes(this.targetElement(), { 'aria-label': this.getModuleName() });\n this.inputElement.setAttribute('aria-label', this.getModuleName());\n this.inputElement.setAttribute('aria-expanded', 'false');\n this.inputElement.setAttribute('aria-controls', this.element.id + '_popups');\n }\n attributes(this.targetElement(), this.getAriaAttributes());\n this.updateDataAttribute(this.htmlAttributes);\n this.setHTMLAttributes();\n if (this.targetElement() === this.inputElement) {\n this.inputElement.removeAttribute('aria-labelledby');\n }\n if (this.value !== null || this.activeIndex !== null || this.text !== null) {\n if (this.enableVirtualization) {\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n }\n this.initValue();\n this.selectedValueInfo = this.viewPortInfo;\n if (this.enableVirtualization) {\n this.activeIndex = this.activeIndex + this.skeletonCount;\n }\n }\n else if (this.element.tagName === 'SELECT' && this.element.options[0]) {\n var selectElement = this.element;\n this.value = selectElement.options[selectElement.selectedIndex].value;\n this.text = isNullOrUndefined(this.value) ? null : selectElement.options[selectElement.selectedIndex].textContent;\n this.initValue();\n }\n this.setEnabled();\n this.preventTabIndex(this.element);\n if (!this.enabled) {\n this.targetElement().tabIndex = -1;\n }\n this.initial = false;\n this.element.style.opacity = '';\n this.inputElement.onselect = function (e) {\n e.stopImmediatePropagation();\n };\n this.inputElement.onchange = function (e) {\n e.stopImmediatePropagation();\n };\n if (this.element.hasAttribute('autofocus')) {\n this.focusIn();\n }\n if (!isNullOrUndefined(this.text)) {\n this.inputElement.setAttribute('value', this.text);\n }\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n var floatLabelElement = this.inputWrapper.container.getElementsByClassName('e-float-text')[0];\n if (!isNullOrUndefined(this.element.id) && this.element.id !== '' && !isNullOrUndefined(floatLabelElement)) {\n floatLabelElement.id = 'label_' + this.element.id.replace(/ /g, '_');\n attributes(this.inputElement, { 'aria-labelledby': floatLabelElement.id });\n }\n this.renderComplete();\n this.listItemHeight = this.getListHeight();\n this.getSkeletonCount();\n if (this.enableVirtualization) {\n this.updateVirtualizationProperties(this.itemCount, this.allowFiltering);\n }\n this.viewPortInfo.startIndex = this.virtualItemStartIndex = 0;\n this.viewPortInfo.endIndex = this.virtualItemEndIndex = this.viewPortInfo.startIndex > 0 ? this.viewPortInfo.endIndex : this.itemCount;\n };\n DropDownList.prototype.getListHeight = function () {\n var listParent = this.createElement('div', {\n className: 'e-dropdownbase'\n });\n var item = this.createElement('li', {\n className: 'e-list-item'\n });\n var listParentHeight = formatUnit(this.popupHeight);\n listParent.style.height = (parseInt(listParentHeight, 10)).toString() + 'px';\n listParent.appendChild(item);\n document.body.appendChild(listParent);\n this.virtualListHeight = listParent.getBoundingClientRect().height;\n var listItemHeight = Math.ceil(item.getBoundingClientRect().height);\n listParent.remove();\n return listItemHeight;\n };\n DropDownList.prototype.setFooterTemplate = function (popupEle) {\n var compiledString;\n if (this.footer) {\n if (this.isReact && typeof this.footerTemplate === 'function') {\n this.clearTemplate(['footerTemplate']);\n }\n else {\n this.footer.innerHTML = '';\n }\n }\n else {\n this.footer = this.createElement('div');\n addClass([this.footer], dropDownListClasses.footer);\n }\n var footercheck = this.dropdownCompiler(this.footerTemplate);\n if (typeof this.footerTemplate !== 'function' && footercheck) {\n compiledString = compile(select(this.footerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.footerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var footerCompTemp = compiledString({}, this, 'footerTemplate', this.footerTemplateId, this.isStringTemplate, null, this.footer);\n if (footerCompTemp && footerCompTemp.length > 0) {\n append(footerCompTemp, this.footer);\n }\n append([this.footer], popupEle);\n };\n DropDownList.prototype.setHeaderTemplate = function (popupEle) {\n var compiledString;\n if (this.header) {\n this.header.innerHTML = '';\n }\n else {\n this.header = this.createElement('div');\n addClass([this.header], dropDownListClasses.header);\n }\n var headercheck = this.dropdownCompiler(this.headerTemplate);\n if (typeof this.headerTemplate !== 'function' && headercheck) {\n compiledString = compile(select(this.headerTemplate, document).innerHTML.trim());\n }\n else {\n compiledString = compile(this.headerTemplate);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var headerCompTemp = compiledString({}, this, 'headerTemplate', this.headerTemplateId, this.isStringTemplate, null, this.header);\n if (headerCompTemp && headerCompTemp.length) {\n append(headerCompTemp, this.header);\n }\n var contentEle = popupEle.querySelector('div.e-content');\n popupEle.insertBefore(this.header, contentEle);\n };\n /**\n * Sets the enabled state to DropDownBase.\n *\n * @returns {void}\n */\n DropDownList.prototype.setEnabled = function () {\n this.element.setAttribute('aria-disabled', (this.enabled) ? 'false' : 'true');\n };\n DropDownList.prototype.setOldText = function (text) {\n this.text = text;\n };\n DropDownList.prototype.setOldValue = function (value) {\n this.value = value;\n };\n DropDownList.prototype.refreshPopup = function () {\n if (!isNullOrUndefined(this.popupObj) && document.body.contains(this.popupObj.element) &&\n ((this.allowFiltering && !(Browser.isDevice && this.isFilterLayout())) || this.getModuleName() === 'autocomplete')) {\n removeClass([this.popupObj.element], 'e-popup-close');\n this.popupObj.refreshPosition(this.inputWrapper.container);\n this.popupObj.resolveCollision();\n }\n };\n DropDownList.prototype.checkData = function (newProp) {\n if (newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource)) && this.itemTemplate && this.allowFiltering &&\n !(this.isListSearched && (newProp.dataSource instanceof DataManager))) {\n this.list = null;\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n }\n this.isListSearched = false;\n var isChangeValue = Object.keys(newProp).indexOf('value') !== -1 && isNullOrUndefined(newProp.value);\n var isChangeText = Object.keys(newProp).indexOf('text') !== -1 && isNullOrUndefined(newProp.text);\n if (this.getModuleName() !== 'autocomplete' && this.allowFiltering && (isChangeValue || isChangeText)) {\n this.itemData = null;\n }\n if (this.allowFiltering && newProp.dataSource && !isNullOrUndefined(Object.keys(newProp.dataSource))) {\n this.actionCompleteData = { ulElement: null, list: null, isUpdated: false };\n this.actionData = this.actionCompleteData;\n }\n else if (this.allowFiltering && newProp.query && !isNullOrUndefined(Object.keys(newProp.query))) {\n this.actionCompleteData = this.getModuleName() === 'combobox' ?\n { ulElement: null, list: null, isUpdated: false } : this.actionCompleteData;\n this.actionData = this.actionCompleteData;\n }\n };\n DropDownList.prototype.updateDataSource = function (props) {\n if (this.inputElement.value !== '' || (!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0)))) {\n this.clearAll(null, props);\n }\n if ((this.fields.groupBy && props.fields) && !this.isGroupChecking && this.list) {\n EventHandler.remove(this.list, 'scroll', this.setFloatingHeader);\n EventHandler.add(this.list, 'scroll', this.setFloatingHeader, this);\n }\n if (!(!isNullOrUndefined(props) && (isNullOrUndefined(props.dataSource)\n || (!(props.dataSource instanceof DataManager) && props.dataSource.length === 0))) || !(Array.isArray(props.dataSource) && props.dataSource.length === 0)) {\n this.typedString = '';\n this.resetList(this.dataSource);\n }\n if (!this.isCustomFilter && !this.isFilterFocus && document.activeElement !== this.filterInput) {\n this.checkCustomValue();\n }\n };\n DropDownList.prototype.checkCustomValue = function () {\n this.itemData = this.getDataByValue(this.value);\n var dataItem = this.getItemData();\n this.setProperties({ 'text': dataItem.text, 'value': dataItem.value });\n };\n DropDownList.prototype.updateInputFields = function () {\n if (this.getModuleName() === 'dropdownlist') {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n };\n /**\n * Dynamically change the value of properties.\n *\n * @private\n * @param {DropDownListModel} newProp - Returns the dynamic property value of the component.\n * @param {DropDownListModel} oldProp - Returns the previous previous value of the component.\n * @returns {void}\n */\n DropDownList.prototype.onPropertyChanged = function (newProp, oldProp) {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (!isNullOrUndefined(newProp.dataSource) && !this.isTouched && (isNullOrUndefined(newProp.value) && isNullOrUndefined(newProp.index)) && !isNullOrUndefined(this.preselectedIndex)) {\n newProp.index = this.preselectedIndex;\n }\n if (!isNullOrUndefined(newProp.value) || !isNullOrUndefined(newProp.index)) {\n this.isTouched = true;\n }\n if (this.getModuleName() === 'dropdownlist') {\n this.checkData(newProp);\n this.setUpdateInitial(['fields', 'query', 'dataSource'], newProp);\n }\n var _loop_1 = function (prop) {\n switch (prop) {\n case 'query':\n case 'dataSource':\n this_1.getSkeletonCount();\n this_1.checkAndResetCache();\n break;\n case 'htmlAttributes':\n this_1.setHTMLAttributes();\n break;\n case 'width':\n this_1.setEleWidth(newProp.width);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this_1.inputElement);\n break;\n case 'filterBarPlaceholder':\n if (this_1.filterInput) {\n Input.setPlaceholder(newProp.filterBarPlaceholder, this_1.filterInput);\n }\n break;\n case 'readonly':\n if (this_1.getModuleName() !== 'dropdownlist') {\n Input.setReadonly(newProp.readonly, this_1.inputElement);\n }\n this_1.setReadOnly();\n break;\n case 'cssClass':\n this_1.setCssClass(newProp.cssClass, oldProp.cssClass);\n Input.calculateWidth(this_1.inputElement, this_1.inputWrapper.container);\n break;\n case 'enableRtl':\n this_1.setEnableRtl();\n break;\n case 'enabled':\n this_1.setEnable();\n break;\n case 'text':\n if (newProp.text === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var li = this_1.getElementByText(newProp.text);\n if (!this_1.checkValidLi(li)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.text, oldProp.text, 'text');\n }\n else if (newProp.text && this_1.dataSource instanceof DataManager) {\n var listLength_1 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.text) ? this_1.fields.value : this_1.fields.text;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.text)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_1);\n _this.updateValues();\n }\n else {\n _this.setOldText(oldProp.text);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldText(oldProp.text);\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'value':\n if (newProp.value === null) {\n this_1.clearAll();\n break;\n }\n if (this_1.enableVirtualization) {\n this_1.updateValues();\n this_1.updateInputFields();\n this_1.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n break;\n }\n this_1.notify('beforeValueChange', { newProp: newProp }); // gird component value type change\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender) {\n var item = this_1.getElementByValue(newProp.value);\n if (!this_1.checkValidLi(item)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.value, oldProp.value, 'value');\n }\n else if (newProp.value && this_1.dataSource instanceof DataManager) {\n var listLength_2 = this_1.getItems().length;\n var checkField = isNullOrUndefined(this_1.fields.value) ? this_1.fields.text : this_1.fields.value;\n this_1.typedString = '';\n this_1.dataSource.executeQuery(this_1.getQuery(this_1.query).where(new Predicate(checkField, 'equal', newProp.value)))\n .then(function (e) {\n if (e.result.length > 0) {\n _this.addItem(e.result, listLength_2);\n _this.updateValues();\n }\n else {\n _this.setOldValue(oldProp.value);\n }\n });\n }\n else if (this_1.getModuleName() === 'autocomplete') {\n this_1.setInputValue(newProp, oldProp);\n }\n else {\n this_1.setOldValue(oldProp.value);\n }\n }\n this_1.updateInputFields();\n this_1.preventChange = this_1.isAngular && this_1.preventChange ? !this_1.preventChange : this_1.preventChange;\n }\n break;\n case 'index':\n if (newProp.index === null) {\n this_1.clearAll();\n break;\n }\n if (!this_1.list) {\n if (this_1.dataSource instanceof DataManager) {\n this_1.initRemoteRender = true;\n }\n this_1.renderList();\n }\n if (!this_1.initRemoteRender && this_1.liCollections) {\n var element = this_1.liCollections[newProp.index];\n if (!this_1.checkValidLi(element)) {\n if (this_1.liCollections && this_1.liCollections.length === 100 &&\n this_1.getModuleName() === 'autocomplete' && this_1.listData.length > 100) {\n this_1.setSelectionData(newProp.index, oldProp.index, 'index');\n }\n else {\n this_1.index = oldProp.index;\n }\n }\n this_1.updateInputFields();\n }\n break;\n case 'footerTemplate':\n if (this_1.popupObj) {\n this_1.setFooterTemplate(this_1.popupObj.element);\n }\n break;\n case 'headerTemplate':\n if (this_1.popupObj) {\n this_1.setHeaderTemplate(this_1.popupObj.element);\n }\n break;\n case 'valueTemplate':\n if (!isNullOrUndefined(this_1.itemData) && this_1.valueTemplate !== null) {\n this_1.setValueTemplate();\n }\n break;\n case 'allowFiltering':\n if (this_1.allowFiltering) {\n this_1.actionCompleteData = {\n ulElement: this_1.ulElement,\n list: this_1.listData, isUpdated: true\n };\n this_1.actionData = this_1.actionCompleteData;\n this_1.updateSelectElementData(this_1.allowFiltering);\n }\n break;\n case 'floatLabelType':\n Input.removeFloating(this_1.inputWrapper);\n Input.addFloating(this_1.inputElement, newProp.floatLabelType, this_1.placeholder, this_1.createElement);\n if (!isNullOrUndefined(this_1.inputWrapper.buttons[0]) && this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0] && this_1.floatLabelType !== 'Never') {\n this_1.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'showClearButton':\n if (!this_1.inputWrapper.clearButton) {\n Input.setClearButton(newProp.showClearButton, this_1.inputElement, this_1.inputWrapper, null, this_1.createElement);\n this_1.bindClearEvent();\n }\n break;\n default:\n {\n // eslint-disable-next-line max-len\n var ddlProps = this_1.getPropObject(prop, newProp, oldProp);\n _super.prototype.onPropertyChanged.call(this_1, ddlProps.newProperty, ddlProps.oldProperty);\n }\n break;\n }\n };\n var this_1 = this;\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n _loop_1(prop);\n }\n };\n DropDownList.prototype.checkValidLi = function (element) {\n if (this.isValidLI(element)) {\n this.setSelection(element, null);\n return true;\n }\n return false;\n };\n DropDownList.prototype.setSelectionData = function (newProp, oldProp, prop) {\n var _this = this;\n var li;\n this.updateListValues = function () {\n if (prop === 'text') {\n li = _this.getElementByText(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldText(oldProp);\n }\n }\n else if (prop === 'value') {\n li = _this.getElementByValue(newProp);\n if (!_this.checkValidLi(li)) {\n _this.setOldValue(oldProp);\n }\n }\n else if (prop === 'index') {\n li = _this.liCollections[newProp];\n if (!_this.checkValidLi(li)) {\n _this.index = oldProp;\n }\n }\n };\n };\n DropDownList.prototype.updatePopupState = function () {\n if (this.beforePopupOpen) {\n this.beforePopupOpen = false;\n this.showPopup();\n }\n };\n DropDownList.prototype.setReadOnly = function () {\n if (this.readonly) {\n addClass([this.inputWrapper.container], ['e-readonly']);\n }\n else {\n removeClass([this.inputWrapper.container], ['e-readonly']);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n DropDownList.prototype.setInputValue = function (newProp, oldProp) {\n };\n DropDownList.prototype.setCssClass = function (newClass, oldClass) {\n if (!isNullOrUndefined(oldClass)) {\n oldClass = (oldClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newClass)) {\n newClass = (newClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newClass, [this.inputWrapper.container], oldClass);\n if (this.popupObj) {\n Input.setCssClass(newClass, [this.popupObj.element], oldClass);\n }\n };\n /**\n * Return the module name of this component.\n *\n * @private\n * @returns {string} Return the module name of this component.\n */\n DropDownList.prototype.getModuleName = function () {\n return 'dropdownlist';\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Opens the popup that displays the list of items.\n *\n * @returns {void}\n */\n DropDownList.prototype.showPopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (this.isReact && this.getModuleName() === 'combobox' && this.itemTemplate && this.isCustomFilter && this.isAddNewItemTemplate) {\n this.renderList();\n this.isAddNewItemTemplate = false;\n }\n if (this.isFiltering() && this.dataSource instanceof DataManager && (this.actionData.list !== this.actionCompleteData.list) &&\n this.actionData.list && this.actionData.ulElement) {\n this.actionCompleteData = this.actionData;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n if (this.beforePopupOpen) {\n this.refreshPopup();\n return;\n }\n this.beforePopupOpen = true;\n if (this.isFiltering() && !this.isActive && this.actionCompleteData.list && this.actionCompleteData.list[0]) {\n this.isActive = true;\n this.onActionComplete(this.actionCompleteData.ulElement, this.actionCompleteData.list, null, true);\n }\n else if (isNullOrUndefined(this.list) || !isUndefined(this.list) && (this.list.classList.contains(dropDownBaseClasses.noData) ||\n this.list.querySelectorAll('.' + dropDownBaseClasses.li).length <= 0)) {\n this.renderList(e);\n }\n if (this.enableVirtualization && this.listData && this.listData.length) {\n if (!isNullOrUndefined(this.value) && (this.getModuleName() === 'dropdownlist' || this.getModuleName() === 'combobox')) {\n this.removeHover();\n }\n if (!this.beforePopupOpen) {\n this.notify(\"setCurrentViewDataAsync\", {\n module: \"VirtualScroll\",\n });\n }\n }\n if (this.beforePopupOpen) {\n this.invokeRenderPopup(e);\n }\n if (this.enableVirtualization && !this.allowFiltering && this.selectedValueInfo != null && this.selectedValueInfo.startIndex > 0 && this.value != null) {\n this.notify(\"dataProcessAsync\", {\n module: \"VirtualScroll\",\n isOpen: true,\n });\n }\n };\n DropDownList.prototype.invokeRenderPopup = function (e) {\n if (Browser.isDevice && this.isFilterLayout()) {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var proxy_2 = this;\n window.onpopstate = function () {\n proxy_2.hidePopup();\n };\n history.pushState({}, '');\n }\n if (!isNullOrUndefined(this.list) && (!isNullOrUndefined(this.list.children[0]) ||\n this.list.classList.contains(dropDownBaseClasses.noData))) {\n this.renderPopup(e);\n }\n };\n DropDownList.prototype.renderHightSearch = function () {\n // update high light search\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Hides the popup if it is in an open state.\n *\n * @returns {void}\n */\n DropDownList.prototype.hidePopup = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (this.isEscapeKey && this.getModuleName() === 'dropdownlist') {\n if (!isNullOrUndefined(this.inputElement)) {\n Input.setValue(this.text, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.isEscapeKey = false;\n if (!isNullOrUndefined(this.index)) {\n var element = this.findListElement(this.ulElement, 'li', 'data-value', this.value);\n this.selectedLI = this.liCollections[this.index] || element;\n if (this.selectedLI) {\n this.updateSelectedItem(this.selectedLI, null, true);\n if (this.valueTemplate && this.itemData !== null) {\n this.setValueTemplate();\n }\n }\n }\n else {\n this.resetSelection();\n }\n }\n this.closePopup(0, e);\n var dataItem = this.getItemData();\n var isSelectVal = !isNullOrUndefined(this.selectedLI);\n if (isSelectVal && this.enableVirtualization && this.selectedLI.classList) {\n isSelectVal = this.selectedLI.classList.contains('e-active');\n }\n if (this.inputElement && this.inputElement.value.trim() === '' && !this.isInteracted && (this.isSelectCustom ||\n isSelectVal && this.inputElement.value !== dataItem.text)) {\n this.isSelectCustom = false;\n this.clearAll(e);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Sets the focus on the component for interaction.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusIn = function (e) {\n if (!this.enabled) {\n return;\n }\n if (this.targetElement().classList.contains(dropDownListClasses.disable)) {\n return;\n }\n var isFocused = false;\n if (this.preventFocus && Browser.isDevice) {\n this.inputWrapper.container.tabIndex = 1;\n this.inputWrapper.container.focus();\n this.preventFocus = false;\n isFocused = true;\n }\n if (!isFocused) {\n this.targetElement().focus();\n }\n addClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n this.onFocus(e);\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Moves the focus from the component if the component is already focused.\n *\n * @returns {void}\n */\n DropDownList.prototype.focusOut = function (e) {\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n if (!this.enabled) {\n return;\n }\n if (!this.enableVirtualization && this.getModuleName() === 'combobox') {\n this.isTyped = true;\n }\n this.hidePopup(e);\n if (this.targetElement()) {\n this.targetElement().blur();\n }\n removeClass([this.inputWrapper.container], [dropDownListClasses.inputFocus]);\n if (this.floatLabelType === 'Auto' && this.inputElement.value === '') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. Also it removes the attributes and classes.\n *\n * @method destroy\n * @returns {void}\n */\n DropDownList.prototype.destroy = function () {\n this.isActive = false;\n resetIncrementalSearchValues(this.element.id);\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isReact) {\n this.clearTemplate();\n }\n this.hidePopup();\n this.unWireEvent();\n if (this.list) {\n this.unWireListEvents();\n }\n if (this.element && !this.element.classList.contains('e-' + this.getModuleName())) {\n return;\n }\n if (this.inputElement) {\n var attrArray = ['readonly', 'aria-disabled', 'placeholder', 'aria-labelledby',\n 'aria-expanded', 'autocomplete', 'aria-readonly', 'autocapitalize',\n 'spellcheck', 'aria-autocomplete', 'aria-live', 'aria-describedby', 'aria-label'];\n for (var i = 0; i < attrArray.length; i++) {\n this.inputElement.removeAttribute(attrArray[i]);\n }\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n this.inputElement.classList.remove('e-input');\n Input.setValue('', this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.element.style.display = 'block';\n if (this.inputWrapper.container.parentElement.tagName === this.getNgDirective()) {\n detach(this.inputWrapper.container);\n }\n else {\n this.inputWrapper.container.parentElement.insertBefore(this.element, this.inputWrapper.container);\n detach(this.inputWrapper.container);\n }\n this.hiddenElement = null;\n this.inputWrapper = null;\n this.keyboardModule = null;\n this.ulElement = null;\n this.list = null;\n this.popupObj = null;\n this.popupContentElement = null;\n this.rippleFun = null;\n this.selectedLI = null;\n this.liCollections = null;\n this.item = null;\n this.inputWrapper = null;\n this.footer = null;\n this.header = null;\n this.previousSelectedLI = null;\n this.valueTempElement = null;\n this.actionData.ulElement = null;\n if (this.inputElement && !isNullOrUndefined(this.inputElement.onchange)) {\n this.inputElement.onchange = null;\n }\n if (this.isAngular) {\n this.inputElement = null;\n }\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets all the list items bound on this component.\n *\n * @returns {Element[]}\n */\n DropDownList.prototype.getItems = function () {\n if (!this.list) {\n if (this.dataSource instanceof DataManager) {\n this.initRemoteRender = true;\n }\n this.renderList();\n }\n return this.ulElement ? _super.prototype.getItems.call(this) : [];\n };\n /**\n * Gets the data Object that matches the given value.\n *\n * @param { string | number } value - Specifies the value of the list item.\n * @returns {Object}\n */\n DropDownList.prototype.getDataByValue = function (value) {\n return _super.prototype.getDataByValue.call(this, value);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Allows you to clear the selected values from the component.\n *\n * @returns {void}\n */\n DropDownList.prototype.clear = function () {\n this.value = null;\n };\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"cssClass\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"width\", void 0);\n __decorate([\n Property(true)\n ], DropDownList.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('300px')\n ], DropDownList.prototype, \"popupHeight\", void 0);\n __decorate([\n Property('100%')\n ], DropDownList.prototype, \"popupWidth\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"placeholder\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"filterBarPlaceholder\", void 0);\n __decorate([\n Property({})\n ], DropDownList.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"query\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"valueTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"headerTemplate\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"footerTemplate\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"allowFiltering\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"readonly\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"enableVirtualization\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"text\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DropDownList.prototype, \"index\", void 0);\n __decorate([\n Property('Never')\n ], DropDownList.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(false)\n ], DropDownList.prototype, \"showClearButton\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"filtering\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"beforeOpen\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DropDownList.prototype, \"focus\", void 0);\n DropDownList = __decorate([\n NotifyPropertyChanges\n ], DropDownList);\n return DropDownList;\n}(DropDownBase));\nexport { DropDownList };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n/// \nimport { EventHandler, Property, Internationalization, NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, Animation, Event, extend, L10n, Browser, formatUnit } from '@syncfusion/ej2-base';\nimport { detach, addClass, removeClass, closest, attributes, Touch } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, setValue, getUniqueID } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { Calendar } from '../calendar/calendar';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar ROOT = 'e-datepicker';\nvar LIBRARY = 'e-lib';\nvar CONTROL = 'e-control';\nvar POPUPWRAPPER = 'e-popup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar INPUTCONTAINER = 'e-input-group';\nvar INPUTFOCUS = 'e-input-focus';\nvar INPUTROOT = 'e-input';\nvar ERROR = 'e-error';\nvar ACTIVE = 'e-active';\nvar OVERFLOW = 'e-date-overflow';\nvar DATEICON = 'e-date-icon';\nvar CLEARICON = 'e-clear-icon';\nvar ICONS = 'e-icons';\nvar OPENDURATION = 300;\nvar OFFSETVALUE = 4;\nvar SELECTED = 'e-selected';\nvar FOCUSEDDATE = 'e-focused-date';\nvar NONEDIT = 'e-non-edit';\nvar containerAttr = ['title', 'class', 'style'];\n/**\n * Represents the DatePicker component that allows user to select\n * or enter a date value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DatePicker = /** @class */ (function (_super) {\n __extends(DatePicker, _super);\n /**\n * Constructor for creating the widget.\n *\n * @param {DatePickerModel} options - Specifies the DatePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DatePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isDateIconClicked = false;\n _this.isAltKeyPressed = false;\n _this.isInteracted = true;\n _this.invalidValueString = null;\n _this.checkPreviousValue = null;\n _this.maskedDateValue = '';\n _this.isAngular = false;\n _this.preventChange = false;\n _this.isIconClicked = false;\n _this.isDynamicValueChanged = false;\n _this.moduleName = _this.getModuleName();\n _this.isFocused = false;\n _this.isBlur = false;\n _this.isKeyAction = false;\n _this.datepickerOptions = options;\n return _this;\n }\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.render = function () {\n this.initialize();\n this.bindEvents();\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n this.setTimeZone(this.serverTimezoneOffset);\n };\n DatePicker.prototype.setTimeZone = function (offsetValue) {\n if (!isNullOrUndefined(this.serverTimezoneOffset) && this.value) {\n var clientTimeZoneDiff = new Date().getTimezoneOffset() / 60;\n var serverTimezoneDiff = offsetValue;\n var timeZoneDiff = serverTimezoneDiff + clientTimeZoneDiff;\n timeZoneDiff = this.isDayLightSaving() ? timeZoneDiff-- : timeZoneDiff;\n this.value = new Date((this.value).getTime() + (timeZoneDiff * 60 * 60 * 1000));\n this.updateInput();\n }\n };\n DatePicker.prototype.isDayLightSaving = function () {\n var firstOffset = new Date(this.value.getFullYear(), 0, 1).getTimezoneOffset();\n var secondOffset = new Date(this.value.getFullYear(), 6, 1).getTimezoneOffset();\n return (this.value.getTimezoneOffset() < Math.max(firstOffset, secondOffset));\n };\n DatePicker.prototype.setAllowEdit = function () {\n if (this.allowEdit) {\n if (!this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n }\n else {\n attributes(this.inputElement, { 'readonly': '' });\n }\n this.updateIconState();\n };\n DatePicker.prototype.updateIconState = function () {\n if (!this.allowEdit && this.inputWrapper && !this.readonly) {\n if (this.inputElement.value === '') {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n else {\n addClass([this.inputWrapper.container], [NONEDIT]);\n }\n }\n else if (this.inputWrapper) {\n removeClass([this.inputWrapper.container], [NONEDIT]);\n }\n };\n DatePicker.prototype.initialize = function () {\n this.checkInvalidValue(this.value);\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.createInput();\n this.updateHtmlAttributeToWrapper();\n this.setAllowEdit();\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n this.updateInput(true);\n this.updateInputValue(this.maskedDateValue);\n }\n else if (!this.enableMask) {\n this.updateInput(true);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNullOrUndefined(this.value) ? new Date(+this.value) : null;\n this.inputElement.setAttribute('value', this.inputElement.value);\n this.inputValueCopy = this.value;\n };\n DatePicker.prototype.createInput = function () {\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-expanded': 'false',\n 'role': 'combobox', 'autocomplete': 'off', 'autocorrect': 'off',\n 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-invalid': 'false', 'aria-label': this.getModuleName()\n };\n if (this.getModuleName() === 'datepicker') {\n var l10nLocale = { placeholder: this.placeholder };\n this.globalize = new Internationalization(this.locale);\n this.l10n = new L10n('datepicker', l10nLocale, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (this.fullScreenMode && Browser.isDevice) {\n this.cssClass += ' ' + \"e-popup-expand\";\n }\n var updatedCssClassValues = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValues = (this.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n var isBindClearAction = this.enableMask ? false : true;\n this.inputWrapper = Input.createInput({\n element: this.inputElement,\n floatLabelType: this.floatLabelType,\n bindClearAction: isBindClearAction,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValues,\n enabled: this.enabled,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton\n },\n buttons: [INPUTWRAPPER + ' ' + DATEICON + ' ' + ICONS]\n }, this.createElement);\n this.setWidth(this.width);\n if (this.inputElement.name !== '') {\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute('name'));\n }\n else {\n this.inputElement.setAttribute('name', '' + this.element.id);\n }\n attributes(this.inputElement, ariaAttrs);\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n Input.addAttributes({ 'aria-label': 'select', 'role': 'button' }, this.inputWrapper.buttons[0]);\n addClass([this.inputWrapper.container], DATEWRAPPER);\n };\n DatePicker.prototype.updateInput = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n if (this.value && !this.isCalendar()) {\n this.disabledDates(isDynamic, isBlur);\n }\n if (isNaN(+new Date(this.checkValue(this.value)))) {\n this.setProperties({ value: null }, true);\n }\n if (this.strictMode) {\n //calls the Calendar processDate protected method to update the date value according to the strictMode true behaviour.\n _super.prototype.validateDate.call(this);\n this.minMaxUpdates();\n _super.prototype.minMaxUpdate.call(this);\n }\n if (!isNullOrUndefined(this.value)) {\n var dateValue = this.value;\n var dateString = void 0;\n var tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(this.value, {\n format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateString = this.globalize.formatDate(this.value, formatOptions);\n }\n if ((+dateValue <= +this.max) && (+dateValue >= +this.min)) {\n this.updateInputValue(dateString);\n }\n else {\n var value = (+dateValue >= +this.max || !+this.value) || (!+this.value || +dateValue <= +this.min);\n if (!this.strictMode && value) {\n this.updateInputValue(dateString);\n }\n }\n }\n if (isNullOrUndefined(this.value) && this.strictMode) {\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n else {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!this.strictMode && isNullOrUndefined(this.value) && this.invalidValueString) {\n this.updateInputValue(this.invalidValueString);\n }\n this.changedArgs = { value: this.value };\n this.errorClass();\n this.updateIconState();\n };\n DatePicker.prototype.minMaxUpdates = function () {\n if (!isNullOrUndefined(this.value) && this.value < this.min && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.min }, true);\n this.changedArgs = { value: this.value };\n }\n else {\n if (!isNullOrUndefined(this.value) && this.value > this.max && this.min <= this.max && this.strictMode) {\n this.setProperties({ value: this.max }, true);\n this.changedArgs = { value: this.value };\n }\n }\n };\n DatePicker.prototype.checkStringValue = function (val) {\n var returnDate = null;\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatOptions));\n if (isNullOrUndefined(returnDate) && (this.getModuleName() === 'datetimepicker')) {\n returnDate = this.checkDateValue(this.globalize.parseDate(val, formatDateTime));\n }\n return returnDate;\n };\n DatePicker.prototype.checkInvalidValue = function (value) {\n if (!(value instanceof Date) && !isNullOrUndefined(value)) {\n var valueDate = null;\n var valueString = value;\n if (typeof value === 'number') {\n valueString = value.toString();\n }\n var formatOptions = null;\n var formatDateTime = null;\n if (this.getModuleName() === 'datetimepicker') {\n var culture = new Internationalization(this.locale);\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd' };\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime' };\n }\n else {\n formatOptions = { format: this.dateTimeFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatDateTime = { format: culture.getDatePattern({ skeleton: 'yMd' }), type: 'dateTime', calendar: 'islamic' };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n var invalid = false;\n if (typeof valueString !== 'string') {\n valueString = null;\n invalid = true;\n }\n else {\n if (typeof valueString === 'string') {\n valueString = valueString.trim();\n }\n valueDate = this.checkStringValue(valueString);\n if (!valueDate) {\n var extISOString = null;\n var basicISOString = null;\n // eslint-disable-next-line\n extISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})-(?:\\d\\d-\\d\\d|W\\d\\d-\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?::\\d\\d(?::\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n // eslint-disable-next-line\n basicISOString = /^\\s*((?:[+-]\\d{6}|\\d{4})(?:\\d\\d\\d\\d|W\\d\\d\\d|W\\d\\d|\\d\\d\\d|\\d\\d))(?:(T| )(\\d\\d(?:\\d\\d(?:\\d\\d(?:[.,]\\d+)?)?)?)([\\+\\-]\\d\\d(?::?\\d\\d)?|\\s*Z)?)?/;\n if ((!extISOString.test(valueString) && !basicISOString.test(valueString))\n || (/^[a-zA-Z0-9- ]*$/).test(valueString) || isNaN(+new Date(this.checkValue(valueString)))) {\n invalid = true;\n }\n else {\n valueDate = new Date(valueString);\n }\n }\n }\n if (invalid) {\n if (!this.strictMode) {\n this.invalidValueString = valueString;\n }\n this.setProperties({ value: null }, true);\n }\n else {\n this.setProperties({ value: valueDate }, true);\n }\n }\n };\n DatePicker.prototype.bindInputEvent = function () {\n if (!isNullOrUndefined(this.formatString) || this.enableMask) {\n if (this.enableMask || this.formatString.indexOf('y') === -1) {\n EventHandler.add(this.inputElement, 'input', this.inputHandler, this);\n }\n else {\n EventHandler.remove(this.inputElement, 'input', this.inputHandler);\n }\n }\n };\n DatePicker.prototype.bindEvents = function () {\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateIconHandler, this);\n EventHandler.add(this.inputElement, 'mouseup', this.mouseUpHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.inputFocusHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.inputBlurHandler, this);\n EventHandler.add(this.inputElement, 'keyup', this.keyupHandler, this);\n if (this.enableMask) {\n EventHandler.add(this.inputElement, 'keydown', this.keydownHandler, this);\n }\n this.bindInputEvent();\n // To prevent the twice triggering.\n EventHandler.add(this.inputElement, 'change', this.inputChangeHandler, this);\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.resetFormHandler, this);\n }\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardModules = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DatePicker.prototype.keydownHandler = function (e) {\n switch (e.code) {\n case 'ArrowLeft':\n case 'ArrowRight':\n case 'ArrowUp':\n case 'ArrowDown':\n case 'Home':\n case 'End':\n case 'Delete':\n if (this.enableMask && !this.popupObj && !this.readonly) {\n if (e.code !== 'Delete') {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n }\n break;\n default:\n break;\n }\n };\n DatePicker.prototype.unBindEvents = function () {\n if (!isNullOrUndefined(this.inputWrapper)) {\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown', this.dateIconHandler);\n }\n EventHandler.remove(this.inputElement, 'mouseup', this.mouseUpHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'change', this.inputChangeHandler);\n EventHandler.remove(this.inputElement, 'keyup', this.keyupHandler);\n if (this.enableMask) {\n EventHandler.remove(this.inputElement, 'keydown', this.keydownHandler);\n }\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.remove(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n };\n DatePicker.prototype.resetFormHandler = function () {\n if (!this.enabled) {\n return;\n }\n if (!this.inputElement.disabled) {\n var value = this.inputElement.getAttribute('value');\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n value = '';\n this.inputValueCopy = null;\n this.inputElement.setAttribute('value', '');\n }\n this.setProperties({ value: this.inputValueCopy }, true);\n this.restoreValue();\n if (this.inputElement) {\n this.updateInputValue(value);\n this.errorClass();\n }\n }\n };\n DatePicker.prototype.restoreValue = function () {\n this.currentDate = this.value ? this.value : new Date();\n this.previousDate = this.value;\n this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.globalize.formatDate(this.inputValueCopy, {\n format: this.formatString, type: 'dateTime', skeleton: 'yMd'\n });\n };\n DatePicker.prototype.inputChangeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.stopPropagation();\n };\n DatePicker.prototype.bindClearEvent = function () {\n if (this.showClearButton && this.inputWrapper.clearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n DatePicker.prototype.resetHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n e.preventDefault();\n this.clear(e);\n };\n DatePicker.prototype.mouseUpHandler = function (e) {\n if (this.enableMask) {\n e.preventDefault();\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n if (!this.enableMask) {\n this.updateInputValue('');\n }\n var clearedArgs = {\n event: event\n };\n this.trigger('cleared', clearedArgs);\n this.invalidValueString = '';\n this.updateInput();\n this.popupUpdate();\n this.changeEvent(event);\n if (this.enableMask) {\n this.notify('clearHandler', {\n module: 'MaskedDateTime'\n });\n }\n if (closest(this.element, 'form')) {\n var element = this.element;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n DatePicker.prototype.preventEventBubbling = function (e) {\n e.preventDefault();\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n this.interopAdaptor.invokeMethodAsync('OnDateIconClick');\n };\n DatePicker.prototype.updateInputValue = function (value) {\n Input.setValue(value, this.inputElement, this.floatLabelType, this.showClearButton);\n };\n DatePicker.prototype.dateIconHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n this.inputElement.blur();\n }\n e.preventDefault();\n if (!this.readonly) {\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.isDateIconClicked = true;\n this.show(null, e);\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n addClass(this.inputWrapper.buttons, ACTIVE);\n }\n }\n this.isIconClicked = false;\n };\n DatePicker.prototype.updateHtmlAttributeToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (!isNullOrUndefined(this.htmlAttributes[\"\" + key])) {\n if (containerAttr.indexOf(key) > -1) {\n if (key === 'class') {\n var updatedClassValues = (this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ')).trim();\n if (updatedClassValues !== '') {\n addClass([this.inputWrapper.container], updatedClassValues.split(' '));\n }\n }\n else if (key === 'style') {\n var setStyle = this.inputWrapper.container.getAttribute(key);\n if (!isNullOrUndefined(setStyle)) {\n if (setStyle.charAt(setStyle.length - 1) === ';') {\n setStyle = setStyle + this.htmlAttributes[\"\" + key];\n }\n else {\n setStyle = setStyle + ';' + this.htmlAttributes[\"\" + key];\n }\n }\n else {\n setStyle = this.htmlAttributes[\"\" + key];\n }\n this.inputWrapper.container.setAttribute(key, setStyle);\n }\n else {\n this.inputWrapper.container.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n }\n }\n };\n DatePicker.prototype.updateHtmlAttributeToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n if (containerAttr.indexOf(key) < 0) {\n this.inputElement.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n DatePicker.prototype.updateCssClass = function (newCssClass, oldCssClass) {\n if (!isNullOrUndefined(oldCssClass)) {\n oldCssClass = (oldCssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newCssClass)) {\n newCssClass = (newCssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newCssClass, [this.inputWrapper.container], oldCssClass);\n if (this.popupWrapper) {\n Input.setCssClass(newCssClass, [this.popupWrapper], oldCssClass);\n }\n };\n DatePicker.prototype.calendarKeyActionHandle = function (e) {\n switch (e.action) {\n case 'escape':\n if (this.isCalendar()) {\n this.hide(e);\n }\n else {\n this.inputWrapper.container.children[this.index].blur();\n }\n break;\n case 'enter':\n if (!this.isCalendar()) {\n this.show(null, e);\n }\n else {\n if (+this.value !== +this.currentDate && !this.isCalendar()) {\n this.inputWrapper.container.children[this.index].focus();\n }\n }\n if (this.getModuleName() === 'datetimepicker') {\n this.inputElement.focus();\n }\n break;\n case 'tab':\n this.hide(e);\n }\n };\n DatePicker.prototype.inputFocusHandler = function () {\n this.isFocused = true;\n if (!this.enabled) {\n return;\n }\n if (this.enableMask && !this.inputElement.value && this.placeholder) {\n if (this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue(this.maskedDateValue);\n this.inputElement.selectionStart = 0;\n this.inputElement.selectionEnd = this.inputElement.value.length;\n }\n }\n var focusArguments = {\n model: this\n };\n this.isDateIconClicked = false;\n this.trigger('focus', focusArguments);\n this.updateIconState();\n if (this.openOnFocus && !this.isIconClicked) {\n this.show();\n }\n };\n DatePicker.prototype.inputHandler = function () {\n this.isPopupClicked = false;\n if (this.enableMask) {\n this.notify('inputHandler', {\n module: 'MaskedDateTime'\n });\n }\n };\n DatePicker.prototype.inputBlurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.strictModeUpdate();\n if (this.inputElement.value === '' && isNullOrUndefined(this.value)) {\n this.invalidValueString = null;\n this.updateInputValue('');\n }\n this.isBlur = true;\n this.updateInput(false, true);\n this.isBlur = false;\n this.popupUpdate();\n this.changeTrigger(e);\n if (this.enableMask && this.maskedDateValue && this.placeholder && this.floatLabelType !== 'Always') {\n if (this.inputElement.value === this.maskedDateValue && !this.value && (this.floatLabelType === 'Auto' || this.floatLabelType === 'Never' || this.placeholder)) {\n this.updateInputValue('');\n }\n }\n this.errorClass();\n if (this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.getModuleName() === 'datepicker') {\n var blurArguments = {\n model: this\n };\n this.trigger('blur', blurArguments);\n }\n if (this.isCalendar()) {\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.calendarKeyboardModules = new KeyboardEvents(this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: this.calendarKeyActionHandle.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n }\n this.isPopupClicked = false;\n };\n DatePicker.prototype.documentHandler = function (e) {\n if ((!isNullOrUndefined(this.popupObj) && !isNullOrUndefined(this.inputWrapper) && (this.inputWrapper.container.contains(e.target) && e.type !== 'mousedown' ||\n (this.popupObj.element && this.popupObj.element.contains(e.target)))) && e.type !== 'touchstart') {\n e.preventDefault();\n }\n var target = e.target;\n if (!(closest(target, '.e-datepicker.e-popup-wrapper')) && !isNullOrUndefined(this.inputWrapper)\n && !(closest(target, '.' + INPUTCONTAINER) === this.inputWrapper.container)\n && (!target.classList.contains('e-day'))\n && (!target.classList.contains('e-dlg-overlay'))) {\n this.hide(e);\n this.focusOut();\n }\n else if (closest(target, '.e-datepicker.e-popup-wrapper')) {\n // Fix for close the popup when select the previously selected value.\n if (target.classList.contains('e-day')\n && !isNullOrUndefined(e.target.parentElement)\n && e.target.parentElement.classList.contains('e-selected')\n && closest(target, '.e-content')\n && closest(target, '.e-content').classList.contains('e-' + this.depth.toLowerCase())) {\n this.hide(e);\n }\n else if (closest(target, '.e-footer-container')\n && target.classList.contains('e-today')\n && target.classList.contains('e-btn')\n && (+new Date(+this.value) === +_super.prototype.generateTodayVal.call(this, this.value))) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.inputKeyActionHandle = function (e) {\n var clickedView = this.currentView();\n switch (e.action) {\n case 'altUpArrow':\n this.isAltKeyPressed = false;\n this.hide(e);\n this.inputElement.focus();\n break;\n case 'altDownArrow':\n this.isAltKeyPressed = true;\n this.strictModeUpdate();\n this.updateInput();\n this.changeTrigger(e);\n if (this.getModuleName() === 'datepicker') {\n this.show(null, e);\n }\n break;\n case 'escape':\n this.hide(e);\n break;\n case 'enter':\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (!this.isCalendar() && document.activeElement === this.inputElement) {\n this.hide(e);\n }\n if (this.isCalendar()) {\n e.preventDefault();\n e.stopPropagation();\n }\n break;\n case 'tab':\n case 'shiftTab':\n {\n var start = this.inputElement.selectionStart;\n var end = this.inputElement.selectionEnd;\n if (this.enableMask && !this.popupObj && !this.readonly) {\n var length_1 = this.inputElement.value.length;\n if ((start === 0 && end === length_1) || (end !== length_1 && e.action === 'tab') || (start !== 0 && e.action === 'shiftTab')) {\n e.preventDefault();\n }\n this.notify('keyDownHandler', {\n module: 'MaskedDateTime',\n e: e\n });\n start = this.inputElement.selectionStart;\n end = this.inputElement.selectionEnd;\n }\n this.strictModeUpdate();\n this.updateInput();\n this.popupUpdate();\n this.changeTrigger(e);\n this.errorClass();\n if (this.enableMask) {\n this.inputElement.selectionStart = start;\n this.inputElement.selectionEnd = end;\n }\n this.hide(e);\n break;\n }\n default:\n this.defaultAction(e);\n // Fix for close the popup when select the previously selected value.\n if (e.action === 'select' && clickedView === this.depth) {\n this.hide(e);\n }\n }\n };\n DatePicker.prototype.defaultAction = function (e) {\n this.previousDate = ((!isNullOrUndefined(this.value) && new Date(+this.value)) || null);\n if (this.isCalendar()) {\n _super.prototype.keyActionHandle.call(this, e);\n if (this.isCalendar()) {\n attributes(this.inputElement, {\n 'aria-activedescendant': '' + this.setActiveDescendant()\n });\n }\n }\n };\n DatePicker.prototype.popupUpdate = function () {\n if ((isNullOrUndefined(this.value)) && (!isNullOrUndefined(this.previousDate)) ||\n (+this.value !== +this.previousDate)) {\n if (this.popupObj) {\n if (this.popupObj.element.querySelectorAll('.' + SELECTED).length > 0) {\n removeClass(this.popupObj.element.querySelectorAll('.' + SELECTED), [SELECTED]);\n }\n }\n if (!isNullOrUndefined(this.value)) {\n if ((+this.value >= +this.min) && (+this.value <= +this.max)) {\n var targetdate = new Date(this.checkValue(this.value));\n _super.prototype.navigateTo.call(this, 'Month', targetdate);\n }\n }\n }\n };\n DatePicker.prototype.strictModeUpdate = function () {\n var format;\n var pattern = /^y/;\n var charPattern = /[^a-zA-Z]/;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n format = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else if (!pattern.test(this.formatString) || charPattern.test(this.formatString)) {\n format = isNullOrUndefined(this.formatString) ? this.formatString : this.formatString.replace('dd', 'd');\n }\n if (!isNullOrUndefined(format)) {\n var len = format.split('M').length - 1;\n if (len < 3) {\n format = format.replace('MM', 'M');\n }\n }\n else {\n format = this.formatString;\n }\n var dateOptions;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n dateOptions = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n dateOptions = formatOptions;\n }\n var date;\n if (typeof this.inputElement.value === 'string') {\n this.inputElement.value = this.inputElement.value.trim();\n }\n if ((this.getModuleName() === 'datetimepicker')) {\n if (this.checkDateValue(this.globalize.parseDate(this.inputElement.value, dateOptions))) {\n date = this.globalize.parseDate(this.inputElement.value.toLocaleUpperCase(), dateOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: format, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.parseDate(this.inputElement.value, formatOptions);\n }\n }\n else {\n date = this.globalize.parseDate(this.inputElement.value, dateOptions);\n date = (!isNullOrUndefined(date) && isNaN(+date)) ? null : date;\n if (!isNullOrUndefined(this.formatString) && this.inputElement.value !== '' && this.strictMode) {\n if ((this.isPopupClicked || (!this.isPopupClicked && this.inputElement.value === this.previousElementValue))\n && this.formatString.indexOf('y') === -1) {\n date.setFullYear(this.value.getFullYear());\n }\n }\n }\n // EJ2-35061 - To prevent change event from triggering twice when using strictmode and format property\n if ((this.getModuleName() === 'datepicker') && (this.value && !isNaN(+this.value)) && date) {\n date.setHours(this.value.getHours(), this.value.getMinutes(), this.value.getSeconds(), this.value.getMilliseconds());\n }\n if (this.strictMode && date) {\n this.updateInputValue(this.globalize.formatDate(date, dateOptions));\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n else if (!this.strictMode) {\n if (this.inputElement.value !== this.previousElementValue) {\n this.setProperties({ value: date }, true);\n }\n }\n if (this.strictMode && !date && this.inputElement.value === (this.enableMask ? this.maskedDateValue : '')) {\n this.setProperties({ value: null }, true);\n }\n if (isNaN(+this.value)) {\n this.setProperties({ value: null }, true);\n }\n if (isNullOrUndefined(this.value)) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n };\n DatePicker.prototype.createCalendar = function () {\n var _this = this;\n this.popupWrapper = this.createElement('div', { className: '' + ROOT + ' ' + POPUPWRAPPER, id: this.inputElement.id + '_options' });\n this.popupWrapper.setAttribute('aria-label', this.element.id);\n this.popupWrapper.setAttribute('role', 'dialog');\n if (!isNullOrUndefined(this.cssClass)) {\n this.popupWrapper.className += ' ' + this.cssClass;\n }\n if (Browser.isDevice) {\n this.modelHeader();\n this.modal = this.createElement('div');\n this.modal.className = '' + ROOT + ' e-date-modal';\n document.body.className += ' ' + OVERFLOW;\n this.modal.style.display = 'block';\n document.body.appendChild(this.modal);\n }\n //this.calendarElement represent the Calendar object from the Calendar class.\n this.calendarElement.querySelector('table tbody').className = '';\n this.popupObj = new Popup(this.popupWrapper, {\n content: this.calendarElement,\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : (this.enableRtl ? { X: 'right', Y: 'bottom' } : { X: 'left', Y: 'bottom' }),\n offsetY: OFFSETVALUE,\n targetType: 'container',\n enableRtl: this.enableRtl,\n zIndex: this.zIndex,\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : (this.enableRtl ? { X: 'fit', Y: 'flip' } : { X: 'flip', Y: 'flip' }),\n open: function () {\n if (Browser.isDevice && _this.fullScreenMode) {\n _this.iconRight = parseInt(window.getComputedStyle(_this.calendarElement.querySelector('.e-header.e-month .e-prev')).marginRight, 10) > 16 ? true : false;\n _this.touchModule = new Touch(_this.calendarElement.querySelector(\".e-content.e-month\"), {\n swipe: _this.CalendarSwipeHandler.bind(_this)\n });\n EventHandler.add(_this.calendarElement.querySelector(\".e-content.e-month\"), \"touchstart\", _this.TouchStartHandler, _this);\n }\n if (_this.getModuleName() !== 'datetimepicker') {\n if (document.activeElement !== _this.inputElement) {\n _this.defaultKeyConfigs = extend(_this.defaultKeyConfigs, _this.keyConfigs);\n _this.calendarElement.children[1].firstElementChild.focus();\n _this.calendarKeyboardModules = new KeyboardEvents(_this.calendarElement.children[1].firstElementChild, {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n _this.calendarKeyboardModules = new KeyboardEvents(_this.inputWrapper.container.children[_this.index], {\n eventName: 'keydown',\n keyAction: _this.calendarKeyActionHandle.bind(_this),\n keyConfigs: _this.defaultKeyConfigs\n });\n }\n }\n }, close: function () {\n if (_this.isDateIconClicked) {\n _this.inputWrapper.container.children[_this.index].focus();\n }\n if (_this.value) {\n _this.disabledDates();\n }\n if (_this.popupObj) {\n _this.popupObj.destroy();\n }\n _this.resetCalendar();\n detach(_this.popupWrapper);\n _this.popupObj = _this.popupWrapper = null;\n _this.preventArgs = null;\n _this.calendarKeyboardModules = null;\n _this.setAriaAttributes();\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n this.popupObj.element.className += ' ' + this.cssClass;\n this.setAriaAttributes();\n };\n DatePicker.prototype.CalendarSwipeHandler = function (e) {\n var direction = 0;\n if (this.iconRight) {\n switch (e.swipeDirection) {\n case \"Left\":\n direction = 1;\n break;\n case \"Right\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n else {\n switch (e.swipeDirection) {\n case \"Up\":\n direction = 1;\n break;\n case \"Down\":\n direction = -1;\n break;\n default:\n break;\n }\n }\n if (this.touchStart) {\n if (direction === 1) {\n this.navigateNext(e);\n }\n else if (direction === -1) {\n this.navigatePrevious(e);\n }\n this.touchStart = false;\n }\n };\n DatePicker.prototype.TouchStartHandler = function (e) {\n this.touchStart = true;\n };\n DatePicker.prototype.setAriaDisabled = function () {\n if (!this.enabled) {\n this.inputElement.setAttribute('aria-disabled', 'true');\n this.inputElement.tabIndex = -1;\n }\n else {\n this.inputElement.setAttribute('aria-disabled', 'false');\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n };\n DatePicker.prototype.modelHeader = function () {\n var dateOptions;\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var yearHeading = this.createElement('h1', { className: 'e-model-year' });\n var h2 = this.createElement('div');\n var daySpan = this.createElement('span', { className: 'e-model-day' });\n var monthSpan = this.createElement('span', { className: 'e-model-month' });\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'y', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'y', skeleton: 'dateTime', calendar: 'islamic' };\n }\n yearHeading.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'E', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'E', skeleton: 'dateTime', calendar: 'islamic' };\n }\n daySpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions) + ', ';\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime' };\n }\n else {\n dateOptions = { format: 'MMM d', skeleton: 'dateTime', calendar: 'islamic' };\n }\n monthSpan.textContent = '' + this.globalize.formatDate(this.value || new Date(), dateOptions);\n if (this.fullScreenMode) {\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.modelCloseHandler, this);\n var modelTodayButton = this.calendarElement.querySelector(\"button.e-today\");\n h2.classList.add(\"e-day-wrapper\");\n modelTodayButton.classList.add(\"e-outline\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTodayButton);\n }\n if (!this.fullScreenMode)\n modelHeader.appendChild(yearHeading);\n h2.appendChild(daySpan);\n h2.appendChild(monthSpan);\n modelHeader.appendChild(h2);\n this.calendarElement.insertBefore(modelHeader, this.calendarElement.firstElementChild);\n };\n DatePicker.prototype.modelCloseHandler = function (e) {\n this.hide();\n };\n DatePicker.prototype.changeTrigger = function (event) {\n if (this.inputElement.value !== this.previousElementValue) {\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n if (this.isDynamicValueChanged && this.isCalendar()) {\n this.popupUpdate();\n }\n this.changedArgs.value = this.value;\n this.changedArgs.event = event || null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = !isNullOrUndefined(event);\n if (this.isAngular && this.preventChange) {\n this.preventChange = false;\n }\n else {\n this.trigger('change', this.changedArgs);\n }\n this.previousElementValue = this.inputElement.value;\n this.previousDate = !isNaN(+new Date(this.checkValue(this.value))) ? new Date(this.checkValue(this.value)) : null;\n this.isInteracted = true;\n }\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.navigatedEvent = function () {\n this.trigger('navigated', this.navigatedArgs);\n };\n DatePicker.prototype.keyupHandler = function (e) {\n this.isKeyAction = (this.inputElement.value !== this.previousElementValue) ? true : false;\n };\n DatePicker.prototype.changeEvent = function (event) {\n if (!this.isIconClicked && !(this.isBlur || this.isKeyAction)) {\n this.selectCalendar(event);\n }\n if (((this.previousDate && this.previousDate.valueOf()) !== (this.value && this.value.valueOf()))) {\n this.changedArgs.event = event ? event : null;\n this.changedArgs.element = this.element;\n this.changedArgs.isInteracted = this.isInteracted;\n if (!this.isDynamicValueChanged) {\n this.trigger('change', this.changedArgs);\n }\n this.previousDate = this.value && new Date(+this.value);\n if (!this.isDynamicValueChanged) {\n this.hide(event);\n }\n this.previousElementValue = this.inputElement.value;\n this.errorClass();\n }\n else if (event) {\n this.hide(event);\n }\n this.isKeyAction = false;\n };\n DatePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push({ args: [this], member: 'MaskedDateTime' });\n }\n return modules;\n };\n DatePicker.prototype.selectCalendar = function (e) {\n var date;\n var tempFormat;\n var formatOptions;\n if (this.getModuleName() === 'datetimepicker') {\n tempFormat = !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat;\n }\n else {\n tempFormat = this.formatString;\n }\n if (this.value) {\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: tempFormat, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n date = this.globalize.formatDate(this.changedArgs.value, formatOptions);\n }\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n }\n if (!isNullOrUndefined(date)) {\n this.updateInputValue(date);\n if (this.enableMask) {\n this.notify('setMaskSelection', {\n module: 'MaskedDateTime'\n });\n }\n }\n };\n DatePicker.prototype.isCalendar = function () {\n if (this.popupWrapper && this.popupWrapper.classList.contains('' + POPUPWRAPPER)) {\n return true;\n }\n return false;\n };\n DatePicker.prototype.setWidth = function (width) {\n if (typeof width === 'number') {\n this.inputWrapper.container.style.width = formatUnit(this.width);\n }\n else if (typeof width === 'string') {\n this.inputWrapper.container.style.width = (width.match(/px|%|em/)) ? (this.width) : (formatUnit(this.width));\n }\n else {\n this.inputWrapper.container.style.width = '100%';\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-param */\n /**\n * Shows the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.show = function (type, e) {\n var _this = this;\n if ((this.enabled && this.readonly) || !this.enabled || this.popupObj) {\n return;\n }\n else {\n var prevent_1 = true;\n var outOfRange = void 0;\n if (!isNullOrUndefined(this.value) && !(+this.value >= +new Date(this.checkValue(this.min))\n && +this.value <= +new Date(this.checkValue(this.max)))) {\n outOfRange = new Date(this.checkValue(this.value));\n this.setProperties({ 'value': null }, true);\n }\n else {\n outOfRange = this.value || null;\n }\n if (!this.isCalendar()) {\n _super.prototype.render.call(this);\n this.setProperties({ 'value': outOfRange || null }, true);\n this.previousDate = outOfRange;\n this.createCalendar();\n }\n if (Browser.isDevice) {\n this.mobilePopupWrapper = this.createElement('div', { className: 'e-datepick-mob-popup-wrap' });\n document.body.appendChild(this.mobilePopupWrapper);\n }\n this.preventArgs = {\n preventDefault: function () {\n prevent_1 = false;\n },\n popup: this.popupObj,\n event: e || null,\n cancel: false,\n appendTo: Browser.isDevice ? this.mobilePopupWrapper : document.body\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (prevent_1 && !_this.preventArgs.cancel) {\n addClass(_this.inputWrapper.buttons, ACTIVE);\n _this.preventArgs.appendTo.appendChild(_this.popupWrapper);\n _this.popupObj.refreshPosition(_this.inputElement);\n var openAnimation = {\n name: 'FadeIn',\n duration: Browser.isDevice ? 0 : OPENDURATION\n };\n if (_this.zIndex === 1000) {\n _this.popupObj.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObj.show(new Animation(openAnimation), null);\n }\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _super.prototype.setOverlayIndex.call(_this, _this.mobilePopupWrapper, _this.popupObj.element, _this.modal, Browser.isDevice);\n _this.setAriaAttributes();\n }\n else {\n _this.popupObj.destroy();\n _this.popupWrapper = _this.popupObj = null;\n }\n if (!isNullOrUndefined(_this.inputElement) && _this.inputElement.value === '') {\n if (!isNullOrUndefined(_this.tableBodyElement) && _this.tableBodyElement.querySelectorAll('td.e-selected').length > 0) {\n addClass([_this.tableBodyElement.querySelector('td.e-selected')], FOCUSEDDATE);\n removeClass(_this.tableBodyElement.querySelectorAll('td.e-selected'), SELECTED);\n }\n }\n EventHandler.add(document, 'mousedown touchstart', _this.documentHandler, _this);\n });\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.mobilePopupWrapper.appendChild(dlgOverlay);\n }\n }\n };\n /**\n * Hide the Calendar.\n *\n * @returns {void}\n\n */\n DatePicker.prototype.hide = function (event) {\n var _this = this;\n if (!isNullOrUndefined(this.popupWrapper)) {\n var prevent_2 = true;\n this.preventArgs = {\n preventDefault: function () {\n prevent_2 = false;\n },\n popup: this.popupObj,\n event: event || null,\n cancel: false\n };\n removeClass(this.inputWrapper.buttons, ACTIVE);\n removeClass([document.body], OVERFLOW);\n var eventArgs = this.preventArgs;\n if (this.isCalendar()) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.closeEventCallback(prevent_2, eventArgs);\n });\n }\n else {\n this.closeEventCallback(prevent_2, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-param */\n DatePicker.prototype.closeEventCallback = function (prevent, eventArgs) {\n this.preventArgs = eventArgs;\n if (this.isCalendar() && (prevent && !this.preventArgs.cancel)) {\n this.popupObj.hide();\n this.isAltKeyPressed = false;\n this.keyboardModule.destroy();\n removeClass(this.inputWrapper.buttons, ACTIVE);\n }\n this.setAriaAttributes();\n if (Browser.isDevice && this.modal) {\n this.modal.style.display = 'none';\n this.modal.outerHTML = '';\n this.modal = null;\n }\n if (Browser.isDevice) {\n if (!isNullOrUndefined(this.mobilePopupWrapper) && (prevent && (isNullOrUndefined(this.preventArgs) || !this.preventArgs.cancel))) {\n this.mobilePopupWrapper.remove();\n this.mobilePopupWrapper = null;\n }\n }\n EventHandler.remove(document, 'mousedown touchstart', this.documentHandler);\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n /* eslint-disable jsdoc/require-param */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DatePicker.prototype.focusIn = function (triggerEvent) {\n if (document.activeElement !== this.inputElement && this.enabled) {\n this.inputElement.focus();\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n /* eslint-enable jsdoc/require-param */\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DatePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n this.inputElement.blur();\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the current view of the DatePicker.\n *\n * @returns {string}\n\n */\n DatePicker.prototype.currentView = function () {\n var currentView;\n if (this.calendarElement) {\n // calls the Calendar currentView public method\n currentView = _super.prototype.currentView.call(this);\n }\n return currentView;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Navigates to specified month or year or decade view of the DatePicker.\n *\n * @param {string} view - Specifies the view of the calendar.\n * @param {Date} date - Specifies the focused date in a view.\n * @returns {void}\n\n */\n DatePicker.prototype.navigateTo = function (view, date) {\n if (this.calendarElement) {\n // calls the Calendar navigateTo public method\n _super.prototype.navigateTo.call(this, view, date);\n }\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DatePicker.prototype.destroy = function () {\n this.unBindEvents();\n _super.prototype.destroy.call(this);\n if (!isNullOrUndefined(this.keyboardModules)) {\n this.keyboardModules.destroy();\n }\n if (this.popupObj && this.popupObj.element.classList.contains(POPUP)) {\n _super.prototype.destroy.call(this);\n }\n var ariaAttrs = {\n 'aria-atomic': 'true', 'aria-disabled': 'true',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false', 'aria-label': this.getModuleName()\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttrs, this.inputElement);\n if (!isNullOrUndefined(this.inputElementCopy.getAttribute('tabindex'))) {\n this.inputElement.setAttribute('tabindex', this.tabIndex);\n }\n else {\n this.inputElement.removeAttribute('tabindex');\n }\n EventHandler.remove(this.inputElement, 'blur', this.inputBlurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.inputFocusHandler);\n this.ensureInputAttribute();\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObj = this.popupWrapper = null;\n this.keyboardModule.destroy();\n }\n if (this.ngTag === null) {\n if (this.inputElement) {\n if (!isNullOrUndefined(this.inputWrapper)) {\n this.inputWrapper.container.insertAdjacentElement('afterend', this.inputElement);\n }\n removeClass([this.inputElement], [INPUTROOT]);\n }\n removeClass([this.element], [ROOT]);\n if (!isNullOrUndefined(this.inputWrapper)) {\n detach(this.inputWrapper.container);\n }\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.resetFormHandler);\n }\n this.inputWrapper = null;\n this.keyboardModules = null;\n };\n DatePicker.prototype.ensureInputAttribute = function () {\n var prop = [];\n for (var i = 0; i < this.inputElement.attributes.length; i++) {\n prop[i] = this.inputElement.attributes[i].name;\n }\n for (var i = 0; i < prop.length; i++) {\n if (isNullOrUndefined(this.inputElementCopy.getAttribute(prop[i]))) {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = '';\n }\n this.inputElement.removeAttribute(prop[i]);\n }\n else {\n if (prop[i].toLowerCase() === 'value') {\n this.inputElement.value = this.inputElementCopy.getAttribute(prop[i]);\n }\n this.inputElement.setAttribute(prop[i], this.inputElementCopy.getAttribute(prop[i]));\n }\n }\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n * @private\n */\n DatePicker.prototype.preRender = function () {\n this.inputElementCopy = this.element.cloneNode(true);\n removeClass([this.inputElementCopy], [ROOT, CONTROL, LIBRARY]);\n this.inputElement = this.element;\n this.formElement = closest(this.inputElement, 'form');\n this.index = this.showClearButton ? 2 : 1;\n this.ngTag = null;\n if (this.element.tagName === 'EJS-DATEPICKER' || this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.ngTag = this.element.tagName;\n this.inputElement = this.createElement('input');\n this.element.appendChild(this.inputElement);\n }\n if (this.element.getAttribute('id')) {\n if (this.ngTag !== null) {\n this.inputElement.id = this.element.getAttribute('id') + '_input';\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.element.id = getUniqueID('ej2-datetimepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n else {\n this.element.id = getUniqueID('ej2-datepicker');\n if (this.ngTag !== null) {\n attributes(this.inputElement, { 'id': this.element.id + '_input' });\n }\n }\n }\n if (this.ngTag !== null) {\n this.validationAttribute(this.element, this.inputElement);\n }\n this.updateHtmlAttributeToElement();\n this.defaultKeyConfigs = this.getDefaultKeyConfig();\n this.checkHtmlAttributes(false);\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n _super.prototype.preRender.call(this);\n };\n DatePicker.prototype.getDefaultKeyConfig = function () {\n this.defaultKeyConfigs = {\n altUpArrow: 'alt+uparrow',\n altDownArrow: 'alt+downarrow',\n escape: 'escape',\n enter: 'enter',\n controlUp: 'ctrl+38',\n controlDown: 'ctrl+40',\n moveDown: 'downarrow',\n moveUp: 'uparrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n select: 'enter',\n home: 'home',\n end: 'end',\n pageUp: 'pageup',\n pageDown: 'pagedown',\n shiftPageUp: 'shift+pageup',\n shiftPageDown: 'shift+pagedown',\n controlHome: 'ctrl+home',\n controlEnd: 'ctrl+end',\n shiftTab: 'shift+tab',\n tab: 'tab'\n };\n return this.defaultKeyConfigs;\n };\n DatePicker.prototype.validationAttribute = function (target, inputElement) {\n var nameAttribute = target.getAttribute('name') ? target.getAttribute('name') : target.getAttribute('id');\n inputElement.setAttribute('name', nameAttribute);\n target.removeAttribute('name');\n var attribute = ['required', 'aria-required', 'form'];\n for (var i = 0; i < attribute.length; i++) {\n if (isNullOrUndefined(target.getAttribute(attribute[i]))) {\n continue;\n }\n var attr = target.getAttribute(attribute[i]);\n inputElement.setAttribute(attribute[i], attr);\n target.removeAttribute(attribute[i]);\n }\n };\n DatePicker.prototype.checkFormat = function () {\n var culture = new Internationalization(this.locale);\n if (this.format) {\n if (typeof this.format === 'string') {\n this.formatString = this.format;\n }\n else if (this.format.skeleton !== '' && !isNullOrUndefined(this.format.skeleton)) {\n var skeletonString = this.format.skeleton;\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'dateTime' });\n }\n else {\n this.formatString = culture.getDatePattern({ skeleton: skeletonString, type: 'date' });\n }\n }\n else {\n if (this.getModuleName() === 'datetimepicker') {\n this.formatString = this.dateTimeFormat;\n }\n else {\n this.formatString = null;\n }\n }\n }\n else {\n this.formatString = null;\n }\n };\n DatePicker.prototype.checkHtmlAttributes = function (dynamic) {\n this.globalize = new Internationalization(this.locale);\n this.checkFormat();\n this.checkView();\n var attributes = dynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'disabled', 'readonly', 'style', 'name', 'placeholder', 'type'];\n var options;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n };\n }\n else {\n options = {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n };\n }\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n options = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n }\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['enabled'] === undefined)) || dynamic)) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !dynamic);\n }\n break;\n case 'readonly':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['readonly'] === undefined)) || dynamic)) {\n var readonly = this.inputElement.getAttribute(prop) === 'readonly' ||\n this.inputElement.getAttribute(prop) === '' || this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !dynamic);\n }\n break;\n case 'placeholder':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['placeholder'] === undefined)) || dynamic)) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !dynamic);\n }\n break;\n case 'style':\n this.inputElement.setAttribute('style', '' + this.inputElement.getAttribute(prop));\n break;\n case 'name':\n this.inputElement.setAttribute('name', '' + this.inputElement.getAttribute(prop));\n break;\n case 'value':\n if (((isNullOrUndefined(this.datepickerOptions) || (this.datepickerOptions['value'] === undefined)) || dynamic)) {\n var value = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(value, options), {}), !dynamic);\n }\n break;\n case 'min':\n if ((+this.min === +new Date(1900, 0, 1)) || dynamic) {\n var min = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(min), {}), !dynamic);\n }\n break;\n case 'max':\n if ((+this.max === +new Date(2099, 11, 31)) || dynamic) {\n var max = this.inputElement.getAttribute(prop);\n this.setProperties(setValue(prop, this.globalize.parseDate(max), {}), !dynamic);\n }\n break;\n case 'type':\n if (this.inputElement.getAttribute(prop) !== 'text') {\n this.inputElement.setAttribute('type', 'text');\n }\n break;\n }\n }\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DatePicker.prototype.getModuleName = function () {\n return 'datepicker';\n };\n DatePicker.prototype.disabledDates = function (isDynamic, isBlur) {\n if (isDynamic === void 0) { isDynamic = false; }\n if (isBlur === void 0) { isBlur = false; }\n var formatOptions;\n var globalize;\n var valueCopy = this.checkDateValue(this.value) ? new Date(+this.value) : new Date(this.checkValue(this.value));\n var previousValCopy = this.previousDate;\n //calls the Calendar render method to check the disabled dates through renderDayCell event and update the input value accordingly.\n this.minMaxUpdates();\n if (!isDynamic || (isDynamic && !isNullOrUndefined(this.renderDayCell))) {\n _super.prototype.render.call(this);\n }\n this.previousDate = previousValCopy;\n var date = valueCopy && +(valueCopy);\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + date);\n if (!this.strictMode) {\n if (typeof this.value === 'string' || ((typeof this.value === 'object') && (+this.value) !== (+valueCopy))) {\n this.setProperties({ value: valueCopy }, true);\n }\n }\n if (!isNullOrUndefined(this.calendarElement) && !isNullOrUndefined(this.calendarElement.querySelectorAll(dateIdString)[0])) {\n if (this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled')) {\n if (!this.strictMode) {\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n }\n }\n var inputVal;\n if (this.getModuleName() === 'datetimepicker') {\n if (this.calendarMode === 'Gregorian') {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n globalize = this.globalize.formatDate(valueCopy, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.dateTimeFormat,\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n inputVal = globalize;\n }\n else {\n if (this.calendarMode === 'Gregorian') {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n formatOptions = { format: this.formatString, type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n inputVal = this.globalize.formatDate(valueCopy, formatOptions);\n }\n if (!this.popupObj) {\n this.updateInputValue(inputVal);\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n this.notify('createMask', {\n module: 'MaskedDateTime', isBlur: isBlur\n });\n }\n }\n };\n DatePicker.prototype.setAriaAttributes = function () {\n if (this.isCalendar()) {\n Input.addAttributes({ 'aria-expanded': 'true' }, this.inputElement);\n attributes(this.inputElement, { 'aria-owns': this.inputElement.id + '_options' });\n attributes(this.inputElement, { 'aria-controls': this.inputElement.id });\n if (this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': '' + this.setActiveDescendant() });\n }\n }\n else {\n Input.addAttributes({ 'aria-expanded': 'false' }, this.inputElement);\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-controls');\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DatePicker.prototype.errorClass = function () {\n var dateIdString = '*[id^=\"/id\"]'.replace('/id', '' + (+this.value));\n var isDisabledDate = this.calendarElement &&\n this.calendarElement.querySelectorAll(dateIdString)[0] &&\n this.calendarElement.querySelectorAll(dateIdString)[0].classList.contains('e-disabled');\n if ((!isNullOrUndefined(this.value) && !isNullOrUndefined(this.min) &&\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n !isNullOrUndefined(this.max) && !(new Date(this.value).setMilliseconds(0) >= new Date(this.min).setMilliseconds(0)\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n && new Date(this.value).setMilliseconds(0) <= new Date(this.max).setMilliseconds(0)))\n || (!this.strictMode && this.inputElement.value !== '' && this.inputElement.value !== this.maskedDateValue && isNullOrUndefined(this.value) || isDisabledDate)) {\n addClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'true' });\n }\n else if (!isNullOrUndefined(this.inputWrapper)) {\n removeClass([this.inputWrapper.container], ERROR);\n attributes(this.inputElement, { 'aria-invalid': 'false' });\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DatePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DatePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n DatePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.isInteracted = false;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n this.previousElementValue = this.inputElement.value;\n if (isNullOrUndefined(this.value)) {\n if (this.enableMask) {\n this.updateInputValue(this.maskedDateValue);\n }\n else {\n this.updateInputValue('');\n }\n this.currentDate = new Date(new Date().setHours(0, 0, 0, 0));\n }\n this.updateInput(true);\n if (+this.previousDate !== +this.value) {\n this.changeTrigger(null);\n }\n this.isInteracted = true;\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'format':\n this.checkFormat();\n this.bindInputEvent();\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n this.updateInputValue(this.maskedDateValue);\n }\n }\n break;\n case 'allowEdit':\n this.setAllowEdit();\n break;\n case 'placeholder':\n Input.setPlaceholder(this.placeholder, this.inputElement);\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n this.setAriaDisabled();\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkHtmlAttributes(true);\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.datepickerOptions && this.datepickerOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.placeholder, this.inputElement);\n }\n this.updateInput();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'start':\n case 'depth':\n this.checkView();\n if (this.calendarElement) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n case 'zIndex':\n this.setProperties({ zIndex: newProp.zIndex }, true);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'showClearButton':\n Input.setClearButton(this.showClearButton, this.inputElement, this.inputWrapper);\n this.bindClearEvent();\n this.index = this.showClearButton ? 2 : 1;\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-icon');\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n this.updateInputValue(this.maskedDateValue);\n this.bindInputEvent();\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.updateInputValue('');\n }\n }\n break;\n default:\n if (this.calendarElement && this.isCalendar()) {\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n }\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"format\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property({})\n ], DatePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"values\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(true)\n ], DatePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(1000)\n ], DatePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"readonly\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property('Never')\n ], DatePicker.prototype, \"floatLabelType\", void 0);\n __decorate([\n Property(null)\n ], DatePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DatePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DatePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DatePicker.prototype, \"destroyed\", void 0);\n DatePicker = __decorate([\n NotifyPropertyChanges\n ], DatePicker);\n return DatePicker;\n}(Calendar));\nexport { DatePicker };\n","// eslint-disable-next-line\nexport function applyMixins(derivedClass, baseClass) {\n // tslint:disable:typedef\n baseClass.forEach(function (baseClass) {\n Object.getOwnPropertyNames(baseClass.prototype).forEach(function (name) {\n if (name !== 'isMounted' && name !== 'replaceState') {\n derivedClass.prototype[\"\" + name] = baseClass.prototype[\"\" + name];\n }\n });\n });\n}\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n// eslint-disable-next-line @typescript-eslint/triple-slash-reference\n///\nimport { EventHandler, Internationalization, Property, NotifyPropertyChanges, Browser } from '@syncfusion/ej2-base';\nimport { Animation, Event, cldrData, getDefaultDateObject, detach } from '@syncfusion/ej2-base';\nimport { createElement, remove, addClass, L10n, removeClass, closest, append, attributes } from '@syncfusion/ej2-base';\nimport { KeyboardEvents, isNullOrUndefined, formatUnit, getValue, rippleEffect } from '@syncfusion/ej2-base';\nimport { extend } from '@syncfusion/ej2-base';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '../datepicker/datepicker';\nimport { TimePickerBase } from '../timepicker/timepicker';\n//class constant defination\nvar DATEWRAPPER = 'e-date-wrapper';\nvar DATEPICKERROOT = 'e-datepicker';\nvar DATETIMEWRAPPER = 'e-datetime-wrapper';\nvar DAY = new Date().getDate();\nvar MONTH = new Date().getMonth();\nvar YEAR = new Date().getFullYear();\nvar HOUR = new Date().getHours();\nvar MINUTE = new Date().getMinutes();\nvar SECOND = new Date().getSeconds();\nvar MILLISECOND = new Date().getMilliseconds();\nvar ROOT = 'e-datetimepicker';\nvar DATETIMEPOPUPWRAPPER = 'e-datetimepopup-wrapper';\nvar INPUTWRAPPER = 'e-input-group-icon';\nvar POPUP = 'e-popup';\nvar TIMEICON = 'e-time-icon';\nvar INPUTFOCUS = 'e-input-focus';\nvar POPUPDIMENSION = '250px';\nvar ICONANIMATION = 'e-icon-anim';\nvar DISABLED = 'e-disabled';\nvar ERROR = 'e-error';\nvar CONTENT = 'e-content';\nvar NAVIGATION = 'e-navigation';\nvar ACTIVE = 'e-active';\nvar HOVER = 'e-hover';\nvar ICONS = 'e-icons';\nvar HALFPOSITION = 2;\nvar LISTCLASS = 'e-list-item';\nvar ANIMATIONDURATION = 100;\nvar OVERFLOW = 'e-time-overflow';\n/**\n * Represents the DateTimePicker component that allows user to select\n * or enter a date time value.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar DateTimePicker = /** @class */ (function (_super) {\n __extends(DateTimePicker, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {DateTimePickerModel} options - Specifies the DateTimePicker model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function DateTimePicker(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.valueWithMinutes = null;\n _this.scrollInvoked = false;\n _this.moduleName = _this.getModuleName();\n _this.formatRegex = /dddd|ddd|dd|d|MMMM|MMM|MM|M|yyyy|yyy|yy|y|'[^']*'|'[^']*'/g;\n _this.dateFormatString = '';\n _this.dateTimeOptions = options;\n return _this;\n }\n DateTimePicker.prototype.focusHandler = function () {\n if (!this.enabled) {\n return;\n }\n addClass([this.inputWrapper.container], INPUTFOCUS);\n };\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusIn = function () {\n _super.prototype.focusIn.call(this);\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.focusOut = function () {\n if (document.activeElement === this.inputElement) {\n this.inputElement.blur();\n removeClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n };\n DateTimePicker.prototype.blurHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n // IE popup closing issue when click over the scrollbar\n if (this.isTimePopupOpen() && this.isPreventBlur) {\n this.inputElement.focus();\n return;\n }\n removeClass([this.inputWrapper.container], INPUTFOCUS);\n var blurArguments = {\n model: this\n };\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n this.trigger('blur', blurArguments);\n };\n /**\n * To destroy the widget.\n *\n * @returns {void}\n */\n DateTimePicker.prototype.destroy = function () {\n if (this.popupObject && this.popupObject.element.classList.contains(POPUP)) {\n this.popupObject.destroy();\n detach(this.dateTimeWrapper);\n this.dateTimeWrapper = undefined;\n this.liCollections = this.timeCollections = [];\n if (!isNullOrUndefined(this.rippleFn)) {\n this.rippleFn();\n }\n }\n var ariaAttribute = {\n 'aria-live': 'assertive', 'aria-atomic': 'true', 'aria-invalid': 'false',\n 'autocorrect': 'off', 'autocapitalize': 'off', 'spellcheck': 'false',\n 'aria-expanded': 'false', 'role': 'combobox', 'autocomplete': 'off'\n };\n if (this.inputElement) {\n Input.removeAttributes(ariaAttribute, this.inputElement);\n }\n if (this.isCalendar()) {\n if (this.popupWrapper) {\n detach(this.popupWrapper);\n }\n this.popupObject = this.popupWrapper = null;\n this.keyboardHandler.destroy();\n }\n this.unBindInputEvents();\n this.liCollections = null;\n this.rippleFn = null;\n this.selectedElement = null;\n this.listTag = null;\n this.timeIcon = null;\n this.popupObject = null;\n this.preventArgs = null;\n this.keyboardModule = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * To Initialize the control rendering.\n *\n * @returns {void}\n * @private\n */\n DateTimePicker.prototype.render = function () {\n this.timekeyConfigure = {\n enter: 'enter',\n escape: 'escape',\n end: 'end',\n tab: 'tab',\n home: 'home',\n down: 'downarrow',\n up: 'uparrow',\n left: 'leftarrow',\n right: 'rightarrow',\n open: 'alt+downarrow',\n close: 'alt+uparrow'\n };\n this.valueWithMinutes = null;\n this.previousDateTime = null;\n this.isPreventBlur = false;\n this.cloneElement = this.element.cloneNode(true);\n this.dateTimeFormat = this.cldrDateTimeFormat();\n this.initValue = this.value;\n if (typeof (this.min) === 'string') {\n this.min = this.checkDateValue(new Date(this.min));\n }\n if (typeof (this.max) === 'string') {\n this.max = this.checkDateValue(new Date(this.max));\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n _super.prototype.updateHtmlAttributeToElement.call(this);\n this.checkAttributes(false);\n var localeText = { placeholder: this.placeholder };\n this.l10n = new L10n('datetimepicker', localeText, this.locale);\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n _super.prototype.render.call(this);\n this.createInputElement();\n _super.prototype.updateHtmlAttributeToWrapper.call(this);\n this.bindInputEvents();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n this.setValue(true);\n if (this.enableMask && !this.value && this.maskedDateValue && (this.floatLabelType === 'Always' || !this.floatLabelType || !this.placeholder)) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(this.scrollTo))) }, true);\n this.previousDateTime = this.value && new Date(+this.value);\n if (this.element.tagName === 'EJS-DATETIMEPICKER') {\n this.tabIndex = this.element.hasAttribute('tabindex') ? this.element.getAttribute('tabindex') : '0';\n this.element.removeAttribute('tabindex');\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n }\n if (this.floatLabelType === 'Auto') {\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n }\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n this.renderComplete();\n };\n DateTimePicker.prototype.setValue = function (isDynamic) {\n if (isDynamic === void 0) { isDynamic = false; }\n this.initValue = this.validateMinMaxRange(this.value);\n if (!this.strictMode && this.isDateObject(this.initValue)) {\n var value = this.validateMinMaxRange(this.initValue);\n Input.setValue(this.getFormattedValue(value), this.inputElement, this.floatLabelType, this.showClearButton);\n this.setProperties({ value: value }, true);\n }\n else {\n if (isNullOrUndefined(this.value)) {\n this.initValue = null;\n this.setProperties({ value: null }, true);\n }\n }\n this.valueWithMinutes = this.value;\n _super.prototype.updateInput.call(this, isDynamic);\n };\n DateTimePicker.prototype.validateMinMaxRange = function (value) {\n var result = value;\n if (this.isDateObject(value)) {\n result = this.validateValue(value);\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n }\n }\n this.checkValidState(result);\n return result;\n };\n DateTimePicker.prototype.checkValidState = function (value) {\n this.isValidState = true;\n if (!this.strictMode) {\n if ((+(value) > +(this.max)) || (+(value) < +(this.min))) {\n this.isValidState = false;\n }\n }\n this.checkErrorState();\n };\n DateTimePicker.prototype.checkErrorState = function () {\n if (this.isValidState) {\n removeClass([this.inputWrapper.container], ERROR);\n }\n else {\n addClass([this.inputWrapper.container], ERROR);\n }\n attributes(this.inputElement, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n DateTimePicker.prototype.validateValue = function (value) {\n var dateVal = value;\n if (this.strictMode) {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = this.max;\n }\n else if (+value < +this.min) {\n dateVal = this.min;\n }\n else if (+value > +this.max) {\n dateVal = this.max;\n }\n }\n else {\n if (+this.min > +this.max) {\n this.disablePopupButton(true);\n dateVal = value;\n }\n }\n return dateVal;\n };\n DateTimePicker.prototype.disablePopupButton = function (isDisable) {\n if (isDisable) {\n addClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n this.hide();\n }\n else {\n removeClass([this.inputWrapper.buttons[0], this.timeIcon], DISABLED);\n }\n };\n DateTimePicker.prototype.getFormattedValue = function (value) {\n var dateOptions;\n if (!isNullOrUndefined(value)) {\n if (this.calendarMode === 'Gregorian') {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd' };\n }\n else {\n dateOptions = { format: this.cldrDateTimeFormat(), type: 'dateTime', skeleton: 'yMd', calendar: 'islamic' };\n }\n return this.globalize.formatDate(value, dateOptions);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.isDateObject = function (value) {\n return (!isNullOrUndefined(value) && !isNaN(+value)) ? true : false;\n };\n DateTimePicker.prototype.createInputElement = function () {\n removeClass([this.inputElement], DATEPICKERROOT);\n removeClass([this.inputWrapper.container], DATEWRAPPER);\n addClass([this.inputWrapper.container], DATETIMEWRAPPER);\n addClass([this.inputElement], ROOT);\n this.renderTimeIcon();\n };\n DateTimePicker.prototype.renderTimeIcon = function () {\n this.timeIcon = Input.appendSpan(INPUTWRAPPER + ' ' + TIMEICON + ' ' + ICONS, this.inputWrapper.container);\n };\n DateTimePicker.prototype.bindInputEvents = function () {\n EventHandler.add(this.timeIcon, 'mousedown', this.timeHandler, this);\n EventHandler.add(this.inputWrapper.buttons[0], 'mousedown', this.dateHandler, this);\n EventHandler.add(this.inputElement, 'blur', this.blurHandler, this);\n EventHandler.add(this.inputElement, 'focus', this.focusHandler, this);\n this.defaultKeyConfigs = extend(this.defaultKeyConfigs, this.keyConfigs);\n this.keyboardHandler = new KeyboardEvents(this.inputElement, {\n eventName: 'keydown',\n keyAction: this.inputKeyAction.bind(this),\n keyConfigs: this.defaultKeyConfigs\n });\n };\n DateTimePicker.prototype.unBindInputEvents = function () {\n EventHandler.remove(this.timeIcon, 'mousedown touchstart', this.timeHandler);\n EventHandler.remove(this.inputWrapper.buttons[0], 'mousedown touchstart', this.dateHandler);\n if (this.inputElement) {\n EventHandler.remove(this.inputElement, 'blur', this.blurHandler);\n EventHandler.remove(this.inputElement, 'focus', this.focusHandler);\n }\n if (this.keyboardHandler) {\n this.keyboardHandler.destroy();\n }\n };\n DateTimePicker.prototype.cldrTimeFormat = function () {\n var cldrTime;\n if (this.isNullOrEmpty(this.timeFormat)) {\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n }\n else {\n cldrTime = this.timeFormat;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.cldrDateTimeFormat = function () {\n var cldrTime;\n var culture = new Internationalization(this.locale);\n var dateFormat = culture.getDatePattern({ skeleton: 'yMd' });\n if (this.isNullOrEmpty(this.formatString)) {\n cldrTime = dateFormat + ' ' + this.getCldrFormat('time');\n }\n else {\n cldrTime = this.formatString;\n }\n return cldrTime;\n };\n DateTimePicker.prototype.getCldrFormat = function (type) {\n var cldrDateTime;\n if (this.locale === 'en' || this.locale === 'en-US') {\n cldrDateTime = (getValue('timeFormats.short', getDefaultDateObject()));\n }\n else {\n cldrDateTime = (this.getCultureTimeObject(cldrData, '' + this.locale));\n }\n return cldrDateTime;\n };\n DateTimePicker.prototype.isNullOrEmpty = function (value) {\n if (isNullOrUndefined(value) || (typeof value === 'string' && value.trim() === '')) {\n return true;\n }\n else {\n return false;\n }\n };\n DateTimePicker.prototype.getCultureTimeObject = function (ld, c) {\n if (this.calendarMode === 'Gregorian') {\n return getValue('main.' + '' + this.locale + '.dates.calendars.gregorian.timeFormats.short', ld);\n }\n else {\n return getValue('main.' + '' + this.locale + '.dates.calendars.islamic.timeFormats.short', ld);\n }\n };\n DateTimePicker.prototype.timeHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n this.isIconClicked = true;\n if (Browser.isDevice) {\n this.inputElement.setAttribute('readonly', '');\n }\n if (e.currentTarget === this.timeIcon) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n else {\n this.inputElement.focus();\n this.popupCreation('time', e);\n addClass([this.inputWrapper.container], [INPUTFOCUS]);\n }\n }\n this.isIconClicked = false;\n };\n DateTimePicker.prototype.dateHandler = function (e) {\n if (!this.enabled) {\n return;\n }\n if (e.currentTarget === this.inputWrapper.buttons[0]) {\n e.preventDefault();\n }\n if (this.enabled && !this.readonly) {\n if (this.isTimePopupOpen()) {\n this.closePopup(e);\n }\n if (!isNullOrUndefined(this.popupWrapper)) {\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.show = function (type, e) {\n if ((this.enabled && this.readonly) || !this.enabled) {\n return;\n }\n else {\n if (type === 'time' && !this.dateTimeWrapper) {\n if (this.isDatePopupOpen()) {\n this.hide(e);\n }\n this.popupCreation('time', e);\n }\n else if (!this.popupObj) {\n if (this.isTimePopupOpen()) {\n this.hide(e);\n }\n _super.prototype.show.call(this);\n this.popupCreation('date', e);\n }\n }\n };\n DateTimePicker.prototype.toggle = function (e) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n this.show('time', null);\n }\n else if (this.isTimePopupOpen()) {\n this.hide(e);\n _super.prototype.show.call(this, null, e);\n this.popupCreation('date', null);\n }\n else {\n this.show(null, e);\n }\n };\n DateTimePicker.prototype.listCreation = function () {\n var dateObject;\n if (this.calendarMode === 'Gregorian') {\n this.cldrDateTimeFormat().replace(this.formatRegex, this.TimePopupFormat());\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.dateFormatString, type: 'datetime'\n });\n }\n else {\n dateObject = this.globalize.parseDate(this.inputElement.value, {\n format: this.cldrDateTimeFormat(), type: 'datetime', calendar: 'islamic'\n });\n }\n var value = isNullOrUndefined(this.value) ? this.inputElement.value !== '' ?\n dateObject : new Date() : this.value;\n this.valueWithMinutes = value;\n this.listWrapper = createElement('div', { className: CONTENT, attrs: { 'tabindex': '0' } });\n var min = this.startTime(value);\n var max = this.endTime(value);\n var listDetails = TimePickerBase.createListItems(this.createElement, min, max, this.globalize, this.cldrTimeFormat(), this.step);\n this.timeCollections = listDetails.collection;\n this.listTag = listDetails.list;\n attributes(this.listTag, { 'role': 'listbox', 'aria-hidden': 'false', 'id': this.element.id + '_options' });\n append([listDetails.list], this.listWrapper);\n this.wireTimeListEvents();\n var rippleModel = { duration: 300, selector: '.' + LISTCLASS };\n this.rippleFn = rippleEffect(this.listWrapper, rippleModel);\n this.liCollections = this.listWrapper.querySelectorAll('.' + LISTCLASS);\n };\n DateTimePicker.prototype.popupCreation = function (type, e) {\n if (Browser.isDevice) {\n this.element.setAttribute('readonly', 'readonly');\n }\n if (type === 'date') {\n if (!this.readonly && this.popupWrapper) {\n addClass([this.popupWrapper], DATETIMEPOPUPWRAPPER);\n attributes(this.popupWrapper, { 'id': this.element.id + '_options' });\n }\n }\n else {\n if (!this.readonly) {\n this.dateTimeWrapper = createElement('div', {\n className: ROOT + ' ' + POPUP,\n attrs: { 'id': this.element.id + '_timepopup', 'style': 'visibility:hidden ; display:block' }\n });\n if (!isNullOrUndefined(this.cssClass)) {\n this.dateTimeWrapper.className += ' ' + this.cssClass;\n }\n if (!isNullOrUndefined(this.step) && this.step > 0) {\n this.listCreation();\n append([this.listWrapper], this.dateTimeWrapper);\n }\n document.body.appendChild(this.dateTimeWrapper);\n this.addTimeSelection();\n this.renderPopup();\n this.setTimeScrollPosition();\n this.openPopup(e);\n if (!Browser.isDevice || (Browser.isDevice && !this.fullScreenMode)) {\n this.popupObject.refreshPosition(this.inputElement);\n }\n if (Browser.isDevice && this.fullScreenMode) {\n this.dateTimeWrapper.style.left = '0px';\n }\n if (Browser.isDevice) {\n var dlgOverlay = this.createElement('div', { className: 'e-dlg-overlay' });\n dlgOverlay.style.zIndex = (this.zIndex - 1).toString();\n this.timeModal.appendChild(dlgOverlay);\n }\n }\n }\n };\n DateTimePicker.prototype.openPopup = function (e) {\n var _this = this;\n this.preventArgs = {\n cancel: false,\n popup: this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n this.trigger('open', eventArgs, function (eventArgs) {\n _this.preventArgs = eventArgs;\n if (!_this.preventArgs.cancel && !_this.readonly) {\n var openAnimation = {\n name: 'FadeIn',\n duration: ANIMATIONDURATION,\n };\n if (_this.zIndex === 1000) {\n _this.popupObject.show(new Animation(openAnimation), _this.element);\n }\n else {\n _this.popupObject.show(new Animation(openAnimation), null);\n }\n addClass([_this.inputWrapper.container], [ICONANIMATION]);\n attributes(_this.inputElement, { 'aria-expanded': 'true' });\n attributes(_this.inputElement, { 'aria-owns': _this.inputElement.id + '_options' });\n attributes(_this.inputElement, { 'aria-controls': _this.inputElement.id });\n EventHandler.add(document, 'mousedown touchstart', _this.documentClickHandler, _this);\n }\n });\n };\n DateTimePicker.prototype.documentClickHandler = function (event) {\n var target = event.target;\n if ((!isNullOrUndefined(this.popupObject) && (this.inputWrapper.container.contains(target) && event.type !== 'mousedown' ||\n (this.popupObject.element && this.popupObject.element.contains(target)))) && event.type !== 'touchstart') {\n event.preventDefault();\n }\n if (!(closest(target, '[id=\"' + (this.popupObject && this.popupObject.element.id + '\"]'))) && target !== this.inputElement\n && target !== this.timeIcon && !isNullOrUndefined(this.inputWrapper) && target !== this.inputWrapper.container && !target.classList.contains('e-dlg-overlay')) {\n if (this.isTimePopupOpen()) {\n this.hide(event);\n this.focusOut();\n }\n }\n else if (target !== this.inputElement) {\n if (!Browser.isDevice) {\n this.isPreventBlur = ((document.activeElement === this.inputElement) && (Browser.isIE || Browser.info.name === 'edge')\n && target === this.popupObject.element);\n }\n }\n };\n DateTimePicker.prototype.isTimePopupOpen = function () {\n return (this.dateTimeWrapper && this.dateTimeWrapper.classList.contains('' + ROOT)) ? true : false;\n };\n DateTimePicker.prototype.isDatePopupOpen = function () {\n return (this.popupWrapper && this.popupWrapper.classList.contains('' + DATETIMEPOPUPWRAPPER)) ? true : false;\n };\n DateTimePicker.prototype.renderPopup = function () {\n var _this = this;\n this.containerStyle = this.inputWrapper.container.getBoundingClientRect();\n if (Browser.isDevice) {\n this.timeModal = createElement('div');\n this.timeModal.className = '' + ROOT + ' e-time-modal';\n document.body.className += ' ' + OVERFLOW;\n this.timeModal.style.display = 'block';\n document.body.appendChild(this.timeModal);\n }\n var offset = 4;\n this.popupObject = new Popup(this.dateTimeWrapper, {\n width: this.setPopupWidth(),\n zIndex: this.zIndex,\n targetType: 'container',\n collision: Browser.isDevice ? { X: 'fit', Y: 'fit' } : { X: 'flip', Y: 'flip' },\n relateTo: Browser.isDevice ? document.body : this.inputWrapper.container,\n position: Browser.isDevice ? { X: 'center', Y: 'center' } : { X: 'left', Y: 'bottom' },\n enableRtl: this.enableRtl,\n offsetY: offset,\n open: function () {\n _this.dateTimeWrapper.style.visibility = 'visible';\n addClass([_this.timeIcon], ACTIVE);\n if (!Browser.isDevice) {\n _this.timekeyConfigure = extend(_this.timekeyConfigure, _this.keyConfigs);\n _this.inputEvent = new KeyboardEvents(_this.inputWrapper.container, {\n keyAction: _this.timeKeyActionHandle.bind(_this),\n keyConfigs: _this.timekeyConfigure,\n eventName: 'keydown'\n });\n }\n }, close: function () {\n removeClass([_this.timeIcon], ACTIVE);\n _this.unWireTimeListEvents();\n _this.inputElement.removeAttribute('aria-activedescendant');\n remove(_this.popupObject.element);\n _this.popupObject.destroy();\n _this.dateTimeWrapper.innerHTML = '';\n _this.listWrapper = _this.dateTimeWrapper = undefined;\n if (_this.inputEvent) {\n _this.inputEvent.destroy();\n }\n }, targetExitViewport: function () {\n if (!Browser.isDevice) {\n _this.hide();\n }\n }\n });\n if (Browser.isDevice && this.fullScreenMode) {\n this.popupObject.element.style.display = \"flex\";\n this.popupObject.element.style.maxHeight = \"100%\";\n this.popupObject.element.style.width = \"100%\";\n }\n else {\n this.popupObject.element.style.maxHeight = POPUPDIMENSION;\n }\n if (Browser.isDevice && this.fullScreenMode) {\n var modelWrapper = createElement('div', { className: 'e-datetime-mob-popup-wrap' });\n var modelHeader = this.createElement('div', { className: 'e-model-header' });\n var modelTitleSpan = this.createElement(\"span\", { className: \"e-model-title\" });\n modelTitleSpan.textContent = \"Select time\";\n var modelCloseIcon = this.createElement(\"span\", { className: \"e-popup-close\" });\n EventHandler.add(modelCloseIcon, 'mousedown touchstart', this.dateTimeCloseHandler, this);\n var timeContent = this.dateTimeWrapper.querySelector(\".e-content\");\n modelHeader.appendChild(modelCloseIcon);\n modelHeader.appendChild(modelTitleSpan);\n modelWrapper.appendChild(modelHeader);\n modelWrapper.appendChild(timeContent);\n this.dateTimeWrapper.insertBefore(modelWrapper, this.dateTimeWrapper.firstElementChild);\n }\n };\n DateTimePicker.prototype.dateTimeCloseHandler = function (e) {\n this.hide();\n };\n DateTimePicker.prototype.setDimension = function (width) {\n if (typeof width === 'number') {\n width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n // eslint-disable-next-line no-self-assign\n width = width;\n }\n else {\n width = '100%';\n }\n return width;\n };\n DateTimePicker.prototype.setPopupWidth = function () {\n var width = this.setDimension(this.width);\n if (width.indexOf('%') > -1) {\n var inputWidth = this.containerStyle.width * parseFloat(width) / 100;\n width = inputWidth.toString() + 'px';\n }\n return width;\n };\n DateTimePicker.prototype.wireTimeListEvents = function () {\n EventHandler.add(this.listWrapper, 'click', this.onMouseClick, this);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n };\n DateTimePicker.prototype.unWireTimeListEvents = function () {\n if (this.listWrapper) {\n EventHandler.remove(this.listWrapper, 'click', this.onMouseClick);\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n if (!Browser.isDevice) {\n EventHandler.add(this.listWrapper, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.listWrapper, 'mouseout', this.onMouseLeave, this);\n }\n }\n };\n DateTimePicker.prototype.onMouseOver = function (event) {\n var currentLi = closest(event.target, '.' + LISTCLASS);\n this.setTimeHover(currentLi, HOVER);\n };\n DateTimePicker.prototype.onMouseLeave = function () {\n this.removeTimeHover(HOVER);\n };\n DateTimePicker.prototype.setTimeHover = function (li, className) {\n if (this.enabled && this.isValidLI(li) && !li.classList.contains(className)) {\n this.removeTimeHover(className);\n addClass([li], className);\n }\n };\n DateTimePicker.prototype.getPopupHeight = function () {\n var height = parseInt(POPUPDIMENSION, 10);\n var popupHeight = this.dateTimeWrapper.getBoundingClientRect().height;\n if (Browser.isDevice && this.fullScreenMode) {\n return popupHeight;\n }\n else {\n return popupHeight > height ? height : popupHeight;\n }\n };\n DateTimePicker.prototype.changeEvent = function (e) {\n _super.prototype.changeEvent.call(this, e);\n if ((this.value && this.value.valueOf()) !== (this.previousDateTime && +this.previousDateTime.valueOf())) {\n this.valueWithMinutes = this.value;\n this.setInputValue('date');\n this.previousDateTime = this.value && new Date(+this.value);\n }\n };\n DateTimePicker.prototype.updateValue = function (e) {\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs = {\n value: this.value, event: e || null,\n isInteracted: !isNullOrUndefined(e),\n element: this.element\n };\n this.addTimeSelection();\n this.trigger('change', this.changedArgs);\n this.previousDateTime = this.previousDate = this.value;\n }\n };\n DateTimePicker.prototype.setTimeScrollPosition = function () {\n var popupElement = this.selectedElement;\n if (!isNullOrUndefined(popupElement)) {\n this.findScrollTop(popupElement);\n }\n else if (this.dateTimeWrapper && this.checkDateValue(this.scrollTo)) {\n this.setScrollTo();\n }\n };\n DateTimePicker.prototype.findScrollTop = function (element) {\n var listHeight = this.getPopupHeight();\n var nextElement = element.nextElementSibling;\n var height = nextElement ? nextElement.offsetTop : element.offsetTop;\n var lineHeight = element.getBoundingClientRect().height;\n if ((height + element.offsetTop) > listHeight) {\n if (Browser.isDevice && this.fullScreenMode) {\n var listContent = this.dateTimeWrapper.querySelector('.e-content');\n listContent.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n else {\n this.dateTimeWrapper.scrollTop = nextElement ? (height - (listHeight / HALFPOSITION + lineHeight / HALFPOSITION)) : height;\n }\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setScrollTo = function () {\n var element;\n var items = this.dateTimeWrapper.querySelectorAll('.' + LISTCLASS);\n if (items.length >= 0) {\n this.scrollInvoked = true;\n var initialTime = this.timeCollections[0];\n var scrollTime = this.getDateObject(this.checkDateValue(this.scrollTo)).getTime();\n element = items[Math.round((scrollTime - initialTime) / (this.step * 60000))];\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n if (!isNullOrUndefined(element)) {\n this.findScrollTop(element);\n }\n else {\n this.dateTimeWrapper.scrollTop = 0;\n }\n };\n DateTimePicker.prototype.setInputValue = function (type) {\n if (type === 'date') {\n this.inputElement.value = this.previousElementValue = this.getFormattedValue(this.getFullDateTime());\n this.setProperties({ value: this.getFullDateTime() }, true);\n }\n else {\n var tempVal = this.getFormattedValue(new Date(this.timeCollections[this.activeIndex]));\n Input.setValue(tempVal, this.inputElement, this.floatLabelType, this.showClearButton);\n this.previousElementValue = this.inputElement.value;\n this.setProperties({ value: new Date(this.timeCollections[this.activeIndex]) }, true);\n if (this.enableMask) {\n this.createMask();\n }\n }\n this.updateIconState();\n };\n DateTimePicker.prototype.getFullDateTime = function () {\n var value = null;\n if (this.isDateObject(this.valueWithMinutes)) {\n value = this.combineDateTime(this.valueWithMinutes);\n }\n else {\n value = this.previousDate;\n }\n return this.validateMinMaxRange(value);\n };\n DateTimePicker.prototype.createMask = function () {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n };\n DateTimePicker.prototype.combineDateTime = function (value) {\n if (this.isDateObject(value)) {\n var day = this.previousDate.getDate();\n var month = this.previousDate.getMonth();\n var year = this.previousDate.getFullYear();\n var hour = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n return new Date(year, month, day, hour, minutes, seconds);\n }\n else {\n return this.previousDate;\n }\n };\n DateTimePicker.prototype.onMouseClick = function (event) {\n var target = event.target;\n var li = this.selectedElement = closest(target, '.' + LISTCLASS);\n if (li && li.classList.contains(LISTCLASS)) {\n this.timeValue = li.getAttribute('data-value');\n this.hide(event);\n }\n this.setSelection(li, event);\n };\n DateTimePicker.prototype.setSelection = function (li, event) {\n if (this.isValidLI(li) && !li.classList.contains(ACTIVE)) {\n this.selectedElement = li;\n var index = Array.prototype.slice.call(this.liCollections).indexOf(li);\n this.activeIndex = index;\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n this.updateValue(event);\n }\n };\n DateTimePicker.prototype.setTimeActiveClass = function () {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n if (!isNullOrUndefined(collections)) {\n var items = collections.querySelectorAll('.' + LISTCLASS);\n if (items.length) {\n for (var i = 0; i < items.length; i++) {\n if (this.timeCollections[i] === +(this.valueWithMinutes)) {\n items[i].setAttribute('aria-selected', 'true');\n this.selectedElement = items[i];\n this.activeIndex = i;\n this.setTimeActiveDescendant();\n break;\n }\n }\n }\n }\n };\n DateTimePicker.prototype.setTimeActiveDescendant = function () {\n if (!isNullOrUndefined(this.selectedElement) && this.value) {\n attributes(this.inputElement, { 'aria-activedescendant': this.selectedElement.getAttribute('id') });\n }\n else {\n this.inputElement.removeAttribute('aria-activedescendant');\n }\n };\n DateTimePicker.prototype.addTimeSelection = function () {\n this.selectedElement = null;\n this.removeTimeSelection();\n this.setTimeActiveClass();\n if (!isNullOrUndefined(this.selectedElement)) {\n addClass([this.selectedElement], ACTIVE);\n this.selectedElement.setAttribute('aria-selected', 'true');\n }\n };\n DateTimePicker.prototype.removeTimeSelection = function () {\n this.removeTimeHover(HOVER);\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n var items = this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n if (items.length) {\n removeClass(items, ACTIVE);\n items[0].removeAttribute('aria-selected');\n }\n }\n };\n DateTimePicker.prototype.removeTimeHover = function (className) {\n var hoveredItem = this.getTimeHoverItem(className);\n if (hoveredItem && hoveredItem.length) {\n removeClass(hoveredItem, className);\n }\n };\n DateTimePicker.prototype.getTimeHoverItem = function (className) {\n var collections = isNullOrUndefined(this.dateTimeWrapper) ? this.listWrapper : this.dateTimeWrapper;\n var hoveredItem;\n if (!isNullOrUndefined(collections)) {\n hoveredItem = collections.querySelectorAll('.' + className);\n }\n return hoveredItem;\n };\n DateTimePicker.prototype.isValidLI = function (li) {\n return (li && li.classList.contains(LISTCLASS) && !li.classList.contains(DISABLED));\n };\n DateTimePicker.prototype.calculateStartEnd = function (value, range, method) {\n var day = value.getDate();\n var month = value.getMonth();\n var year = value.getFullYear();\n var hours = value.getHours();\n var minutes = value.getMinutes();\n var seconds = value.getSeconds();\n var milliseconds = value.getMilliseconds();\n if (range) {\n if (method === 'starttime') {\n return new Date(year, month, day, 0, 0, 0);\n }\n else {\n return new Date(year, month, day, 23, 59, 59);\n }\n }\n else {\n return new Date(year, month, day, hours, minutes, seconds, milliseconds);\n }\n };\n DateTimePicker.prototype.startTime = function (date) {\n var tempStartValue;\n var start;\n var tempMin = this.min;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMin.getDate() && +value.getMonth() === +tempMin.getMonth() &&\n +value.getFullYear() === +tempMin.getFullYear()) || ((+new Date(value.getFullYear(), value.getMonth(), value.getDate())) <=\n +new Date(tempMin.getFullYear(), tempMin.getMonth(), tempMin.getDate()))) {\n start = false;\n tempStartValue = this.min;\n }\n else if (+value < +this.max && +value > +this.min) {\n start = true;\n tempStartValue = value;\n }\n else if (+value >= +this.max) {\n start = true;\n tempStartValue = this.max;\n }\n return this.calculateStartEnd(tempStartValue, start, 'starttime');\n };\n DateTimePicker.prototype.TimePopupFormat = function () {\n var format = '';\n var formatCount = 0;\n var proxy = this;\n function formatValueSpecifier(formattext) {\n switch (formattext) {\n case 'd':\n case 'dd':\n case 'ddd':\n case 'dddd':\n case 'M':\n case 'MM':\n case 'MMM':\n case 'MMMM':\n case 'y':\n case 'yy':\n case 'yyy':\n case 'yyyy':\n if (format == '') {\n format = format + formattext;\n }\n else {\n format = format + \"/\" + formattext;\n }\n formatCount = formatCount + 1;\n break;\n }\n if (formatCount > 2) {\n proxy.dateFormatString = format;\n }\n return format;\n }\n return formatValueSpecifier;\n };\n DateTimePicker.prototype.endTime = function (date) {\n var tempEndValue;\n var end;\n var tempMax = this.max;\n var value = date === null ? new Date() : date;\n if ((+value.getDate() === +tempMax.getDate() && +value.getMonth() === +tempMax.getMonth() &&\n +value.getFullYear() === +tempMax.getFullYear()) || (+new Date(value.getUTCFullYear(), value.getMonth(), value.getDate()) >=\n +new Date(tempMax.getFullYear(), tempMax.getMonth(), tempMax.getDate()))) {\n end = false;\n tempEndValue = this.max;\n }\n else if (+value < +this.max && +value > +this.min) {\n end = true;\n tempEndValue = value;\n }\n else if (+value <= +this.min) {\n end = true;\n tempEndValue = this.min;\n }\n return this.calculateStartEnd(tempEndValue, end, 'endtime');\n };\n DateTimePicker.prototype.hide = function (e) {\n var _this = this;\n if (this.popupObj || this.dateTimeWrapper) {\n this.preventArgs = {\n cancel: false,\n popup: this.popupObj || this.popupObject,\n event: e || null\n };\n var eventArgs = this.preventArgs;\n if (isNullOrUndefined(this.popupObj)) {\n this.trigger('close', eventArgs, function (eventArgs) {\n _this.dateTimeCloseEventCallback(e, eventArgs);\n });\n }\n else {\n this.dateTimeCloseEventCallback(e, eventArgs);\n }\n }\n else {\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n }\n };\n DateTimePicker.prototype.dateTimeCloseEventCallback = function (e, eventArgs) {\n this.preventArgs = eventArgs;\n if (!this.preventArgs.cancel) {\n if (this.isDatePopupOpen()) {\n _super.prototype.hide.call(this, e);\n }\n else if (this.isTimePopupOpen()) {\n this.closePopup(e);\n removeClass([document.body], OVERFLOW);\n if (Browser.isDevice && this.timeModal) {\n this.timeModal.style.display = 'none';\n this.timeModal.outerHTML = '';\n this.timeModal = null;\n }\n this.setTimeActiveDescendant();\n }\n }\n if (Browser.isDevice && this.allowEdit && !this.readonly) {\n this.inputElement.removeAttribute('readonly');\n }\n this.setAllowEdit();\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n DateTimePicker.prototype.closePopup = function (e) {\n if (this.isTimePopupOpen() && this.popupObject) {\n var animModel = {\n name: 'FadeOut',\n duration: ANIMATIONDURATION,\n delay: 0\n };\n this.popupObject.hide(new Animation(animModel));\n this.inputWrapper.container.classList.remove(ICONANIMATION);\n attributes(this.inputElement, { 'aria-expanded': 'false' });\n this.inputElement.removeAttribute('aria-owns');\n this.inputElement.removeAttribute('aria-controls');\n EventHandler.remove(document, 'mousedown touchstart', this.documentClickHandler);\n }\n };\n DateTimePicker.prototype.preRender = function () {\n this.checkFormat();\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.preRender.call(this);\n removeClass([this.inputElementCopy], [ROOT]);\n };\n DateTimePicker.prototype.getProperty = function (date, val) {\n if (val === 'min') {\n this.setProperties({ min: this.validateValue(date.min) }, true);\n }\n else {\n this.setProperties({ max: this.validateValue(date.max) }, true);\n }\n };\n DateTimePicker.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['style', 'name', 'step', 'disabled', 'readonly', 'value', 'min', 'max', 'placeholder', 'type'];\n var value;\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.inputElement.getAttribute(prop))) {\n switch (prop) {\n case 'name':\n this.inputElement.setAttribute('name', this.inputElement.getAttribute(prop));\n break;\n case 'step':\n this.step = parseInt(this.inputElement.getAttribute(prop), 10);\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === '' ||\n this.inputElement.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.inputElement.getAttribute(prop) }, !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['min'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ min: value }, !isDynamic);\n }\n }\n break;\n case 'disabled':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.inputElement.getAttribute(prop) === 'disabled' ||\n this.inputElement.getAttribute(prop) === 'true' ||\n this.inputElement.getAttribute(prop) === '' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['value'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ value: value }, !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.dateTimeOptions) || (this.dateTimeOptions['max'] === undefined)) || isDynamic) {\n value = new Date(this.inputElement.getAttribute(prop));\n if (!this.isNullOrEmpty(value) && !isNaN(+value)) {\n this.setProperties({ max: value }, !isDynamic);\n }\n }\n break;\n }\n }\n }\n };\n DateTimePicker.prototype.requiredModules = function () {\n var modules = [];\n if (this) {\n modules.push({ args: [this], member: 'islamic' });\n }\n if (this.enableMask) {\n modules.push(this.maskedDateModule());\n }\n return modules;\n };\n DateTimePicker.prototype.maskedDateModule = function () {\n var modules = { args: [this], member: 'MaskedDateTime' };\n return modules;\n };\n DateTimePicker.prototype.getTimeActiveElement = function () {\n if (!isNullOrUndefined(this.dateTimeWrapper)) {\n return this.dateTimeWrapper.querySelectorAll('.' + ACTIVE);\n }\n else {\n return null;\n }\n };\n DateTimePicker.prototype.createDateObj = function (val) {\n return val instanceof Date ? val : null;\n };\n DateTimePicker.prototype.getDateObject = function (text) {\n if (!this.isNullOrEmpty(text)) {\n var dateValue = this.createDateObj(text);\n var value = this.valueWithMinutes;\n var status_1 = !isNullOrUndefined(value);\n if (this.checkDateValue(dateValue)) {\n var date = status_1 ? value.getDate() : DAY;\n var month = status_1 ? value.getMonth() : MONTH;\n var year = status_1 ? value.getFullYear() : YEAR;\n var hour = status_1 ? value.getHours() : HOUR;\n var minute = status_1 ? value.getMinutes() : MINUTE;\n var second = status_1 ? value.getSeconds() : SECOND;\n var millisecond = status_1 ? value.getMilliseconds() : MILLISECOND;\n if (!this.scrollInvoked) {\n return new Date(year, month, date, hour, minute, second, millisecond);\n }\n else {\n this.scrollInvoked = false;\n return new Date(year, month, date, dateValue.getHours(), dateValue.getMinutes(), dateValue.getSeconds(), dateValue.getMilliseconds());\n }\n }\n }\n return null;\n };\n DateTimePicker.prototype.findNextTimeElement = function (event) {\n var textVal = (this.inputElement).value;\n var value = isNullOrUndefined(this.valueWithMinutes) ? this.createDateObj(textVal) :\n this.getDateObject(this.valueWithMinutes);\n var dateTimeVal = null;\n var listCount = this.liCollections.length;\n if (!isNullOrUndefined(this.activeIndex) || !isNullOrUndefined(this.checkDateValue(value))) {\n if (event.action === 'home') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[0])));\n this.activeIndex = 0;\n }\n else if (event.action === 'end') {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[this.timeCollections.length - 1])));\n this.activeIndex = this.timeCollections.length - 1;\n }\n else {\n if (event.action === 'down') {\n for (var i = 0; i < listCount; i++) {\n if (+value < this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n else {\n for (var i = listCount - 1; i >= 0; i--) {\n if (+value > this.timeCollections[i]) {\n dateTimeVal = +(this.createDateObj(new Date(this.timeCollections[i])));\n this.activeIndex = i;\n break;\n }\n }\n }\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(isNullOrUndefined(dateTimeVal) ? null : new Date(dateTimeVal));\n }\n };\n DateTimePicker.prototype.setTimeValue = function (date, value) {\n var dateString;\n var time;\n var val = this.validateMinMaxRange(value);\n var newval = this.createDateObj(val);\n if (this.getFormattedValue(newval) !== (!isNullOrUndefined(this.value) ? this.getFormattedValue(this.value) : null)) {\n this.valueWithMinutes = isNullOrUndefined(newval) ? null : newval;\n time = new Date(+this.valueWithMinutes);\n }\n else {\n if (this.strictMode) {\n //for strict mode case, when value not present within a range. Reset the nearest range value.\n date = newval;\n }\n this.valueWithMinutes = this.checkDateValue(date);\n time = new Date(+this.valueWithMinutes);\n }\n if (this.calendarMode === 'Gregorian') {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd'\n });\n }\n else {\n dateString = this.globalize.formatDate(time, {\n format: !isNullOrUndefined(this.formatString) ? this.formatString : this.cldrDateTimeFormat(),\n type: 'dateTime', skeleton: 'yMd', calendar: 'islamic'\n });\n }\n if (!this.strictMode && isNullOrUndefined(time)) {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(dateString, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n return time;\n };\n DateTimePicker.prototype.timeElementValue = function (value) {\n if (!isNullOrUndefined(this.checkDateValue(value)) && !this.isNullOrEmpty(value)) {\n var date = value instanceof Date ? value : this.getDateObject(value);\n return this.setTimeValue(date, value);\n }\n return null;\n };\n DateTimePicker.prototype.timeKeyHandler = function (event) {\n if (isNullOrUndefined(this.step) || this.step <= 0) {\n return;\n }\n var listCount = this.timeCollections.length;\n if (isNullOrUndefined(this.getTimeActiveElement()) || this.getTimeActiveElement().length === 0) {\n if (this.liCollections.length > 0) {\n if (isNullOrUndefined(this.value) && isNullOrUndefined(this.activeIndex)) {\n this.activeIndex = 0;\n this.selectedElement = this.liCollections[0];\n this.timeElementValue(new Date(this.timeCollections[0]));\n }\n else {\n this.findNextTimeElement(event);\n }\n }\n }\n else {\n var nextItemValue = void 0;\n if ((event.keyCode >= 37) && (event.keyCode <= 40)) {\n var index = (event.keyCode === 40 || event.keyCode === 39) ? ++this.activeIndex : --this.activeIndex;\n this.activeIndex = index = this.activeIndex === (listCount) ? 0 : this.activeIndex;\n this.activeIndex = index = this.activeIndex < 0 ? (listCount - 1) : this.activeIndex;\n nextItemValue = isNullOrUndefined(this.timeCollections[index]) ?\n this.timeCollections[0] : this.timeCollections[index];\n }\n else if (event.action === 'home') {\n this.activeIndex = 0;\n nextItemValue = this.timeCollections[0];\n }\n else if (event.action === 'end') {\n this.activeIndex = listCount - 1;\n nextItemValue = this.timeCollections[listCount - 1];\n }\n this.selectedElement = this.liCollections[this.activeIndex];\n this.timeElementValue(new Date(nextItemValue));\n }\n this.isNavigate = true;\n this.setTimeHover(this.selectedElement, NAVIGATION);\n this.setTimeActiveDescendant();\n if (this.isTimePopupOpen() && this.selectedElement !== null && (!event || event.type !== 'click')) {\n this.setTimeScrollPosition();\n }\n };\n DateTimePicker.prototype.timeKeyActionHandle = function (event) {\n if (this.enabled) {\n if (event.action !== 'right' && event.action !== 'left' && event.action !== 'tab') {\n event.preventDefault();\n }\n switch (event.action) {\n case 'up':\n case 'down':\n case 'home':\n case 'end':\n this.timeKeyHandler(event);\n break;\n case 'enter':\n if (this.isNavigate) {\n this.selectedElement = this.liCollections[this.activeIndex];\n this.valueWithMinutes = new Date(this.timeCollections[this.activeIndex]);\n this.setInputValue('time');\n if (+this.previousDateTime !== +this.value) {\n this.changedArgs.value = this.value;\n this.addTimeSelection();\n this.previousDateTime = this.value;\n }\n }\n else {\n this.updateValue(event);\n }\n this.hide(event);\n addClass([this.inputWrapper.container], INPUTFOCUS);\n this.isNavigate = false;\n event.stopPropagation();\n break;\n case 'escape':\n this.hide(event);\n break;\n default:\n this.isNavigate = false;\n break;\n }\n }\n };\n DateTimePicker.prototype.inputKeyAction = function (event) {\n switch (event.action) {\n case 'altDownArrow':\n this.strictModeUpdate();\n this.updateInput();\n this.toggle(event);\n break;\n }\n };\n /**\n * Called internally if any of the property value changed.\n *\n * @param {DateTimePickerModel} newProp - Returns the dynamic property value of the component.\n * @param {DateTimePickerModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n\n */\n DateTimePicker.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'value':\n this.isDynamicValueChanged = true;\n this.invalidValueString = null;\n this.checkInvalidValue(newProp.value);\n newProp.value = this.value;\n newProp.value = this.validateValue(newProp.value);\n if (this.enableMask) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n Input.setValue(this.getFormattedValue(newProp.value), this.inputElement, this.floatLabelType, this.showClearButton);\n }\n this.valueWithMinutes = newProp.value;\n this.setProperties({ value: newProp.value }, true);\n if (this.popupObj) {\n this.popupUpdate();\n }\n this.previousDateTime = new Date(this.inputElement.value);\n this.updateInput();\n this.changeTrigger(null);\n this.preventChange = this.isAngular && this.preventChange ? !this.preventChange : this.preventChange;\n if (this.enableMask && this.value) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n }\n break;\n case 'min':\n case 'max':\n this.getProperty(newProp, prop);\n this.updateInput();\n break;\n case 'enableRtl':\n Input.setEnableRtl(this.enableRtl, [this.inputWrapper.container]);\n break;\n case 'cssClass':\n if (!isNullOrUndefined(oldProp.cssClass)) {\n oldProp.cssClass = (oldProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n if (!isNullOrUndefined(newProp.cssClass)) {\n newProp.cssClass = (newProp.cssClass.replace(/\\s+/g, ' ')).trim();\n }\n Input.setCssClass(newProp.cssClass, [this.inputWrapper.container], oldProp.cssClass);\n if (this.dateTimeWrapper) {\n Input.setCssClass(newProp.cssClass, [this.dateTimeWrapper], oldProp.cssClass);\n }\n break;\n case 'locale':\n this.globalize = new Internationalization(this.locale);\n this.l10n.setLocale(this.locale);\n if (this.dateTimeOptions && this.dateTimeOptions.placeholder == null) {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n Input.setPlaceholder(this.l10n.getConstant('placeholder'), this.inputElement);\n }\n this.dateTimeFormat = this.cldrDateTimeFormat();\n _super.prototype.updateInput.call(this);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttributeToElement();\n this.updateHtmlAttributeToWrapper();\n this.checkAttributes(true);\n break;\n case 'format':\n this.setProperties({ format: newProp.format }, true);\n this.checkFormat();\n this.dateTimeFormat = this.formatString;\n this.setValue();\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n if (!this.value) {\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.inputElement);\n break;\n case 'enabled':\n Input.setEnabled(this.enabled, this.inputElement);\n if (!this.enabled) {\n this.inputElement.tabIndex = -1;\n }\n break;\n case 'strictMode':\n this.invalidValueString = null;\n this.updateInput();\n break;\n case 'width':\n this.setWidth(newProp.width);\n Input.calculateWidth(this.inputElement, this.inputWrapper.container);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'readonly':\n Input.setReadonly(this.readonly, this.inputElement);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n Input.removeFloating(this.inputWrapper);\n Input.addFloating(this.inputElement, this.floatLabelType, this.placeholder);\n if (!isNullOrUndefined(this.inputWrapper.buttons[0]) && !isNullOrUndefined(this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0]) && this.floatLabelType !== 'Never') {\n this.inputWrapper.container.getElementsByClassName('e-float-text-overflow')[0].classList.add('e-date-time-icon');\n }\n break;\n case 'scrollTo':\n if (this.checkDateValue(new Date(this.checkValue(newProp.scrollTo)))) {\n if (this.dateTimeWrapper) {\n this.setScrollTo();\n }\n this.setProperties({ scrollTo: this.checkDateValue(new Date(this.checkValue(newProp.scrollTo))) }, true);\n }\n else {\n this.setProperties({ scrollTo: null }, true);\n }\n break;\n case 'enableMask':\n if (this.enableMask) {\n this.notify('createMask', {\n module: 'MaskedDateTime'\n });\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n else {\n if (this.inputElement.value === this.maskedDateValue) {\n this.maskedDateValue = '';\n Input.setValue(this.maskedDateValue, this.inputElement, this.floatLabelType, this.showClearButton);\n }\n }\n break;\n default:\n _super.prototype.onPropertyChanged.call(this, newProp, oldProp);\n break;\n }\n if (!this.isDynamicValueChanged) {\n this.hide(null);\n }\n this.isDynamicValueChanged = false;\n }\n };\n /**\n * To get component name.\n *\n * @returns {string} Returns the component name.\n * @private\n */\n DateTimePicker.prototype.getModuleName = function () {\n return 'datetimepicker';\n };\n DateTimePicker.prototype.restoreValue = function () {\n this.previousDateTime = this.previousDate;\n this.currentDate = this.value ? this.value : new Date();\n this.valueWithMinutes = this.value;\n this.previousDate = this.value;\n this.previousElementValue = this.previousElementValue = (isNullOrUndefined(this.inputValueCopy)) ? '' :\n this.getFormattedValue(this.inputValueCopy);\n };\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(30)\n ], DateTimePicker.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"scrollTo\", void 0);\n __decorate([\n Property(1000)\n ], DateTimePicker.prototype, \"zIndex\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"value\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"keyConfigs\", void 0);\n __decorate([\n Property({})\n ], DateTimePicker.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"allowEdit\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"isMultiSelection\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"values\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"placeholder\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"fullScreenMode\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"serverTimezoneOffset\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], DateTimePicker.prototype, \"min\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], DateTimePicker.prototype, \"max\", void 0);\n __decorate([\n Property(null)\n ], DateTimePicker.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('Gregorian')\n ], DateTimePicker.prototype, \"calendarMode\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"start\", void 0);\n __decorate([\n Property('Month')\n ], DateTimePicker.prototype, \"depth\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"weekNumber\", void 0);\n __decorate([\n Property(true)\n ], DateTimePicker.prototype, \"showTodayButton\", void 0);\n __decorate([\n Property('Short')\n ], DateTimePicker.prototype, \"dayHeaderFormat\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"openOnFocus\", void 0);\n __decorate([\n Property(false)\n ], DateTimePicker.prototype, \"enableMask\", void 0);\n __decorate([\n Property({ day: 'day', month: 'month', year: 'year', hour: 'hour', minute: 'minute', second: 'second', dayOfTheWeek: 'day of the week' })\n ], DateTimePicker.prototype, \"maskPlaceholder\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"open\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"close\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"cleared\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"blur\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], DateTimePicker.prototype, \"destroyed\", void 0);\n DateTimePicker = __decorate([\n NotifyPropertyChanges\n ], DateTimePicker);\n return DateTimePicker;\n}(DatePicker));\nexport { DateTimePicker };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, EventHandler, Property, Event, Browser, L10n, getUniqueID } from '@syncfusion/ej2-base';\nimport { NotifyPropertyChanges } from '@syncfusion/ej2-base';\nimport { attributes, addClass, removeClass, detach, closest } from '@syncfusion/ej2-base';\nimport { isNullOrUndefined, getValue, formatUnit, setValue, merge } from '@syncfusion/ej2-base';\nimport { Internationalization, getNumericObject } from '@syncfusion/ej2-base';\nimport { Input } from '../input/input';\nvar ROOT = 'e-control-wrapper e-numeric';\nvar SPINICON = 'e-input-group-icon';\nvar SPINUP = 'e-spin-up';\nvar SPINDOWN = 'e-spin-down';\nvar ERROR = 'e-error';\nvar INCREMENT = 'increment';\nvar DECREMENT = 'decrement';\nvar INTREGEXP = new RegExp('^(-)?(\\\\d*)$');\nvar DECIMALSEPARATOR = '.';\nvar COMPONENT = 'e-numerictextbox';\nvar CONTROL = 'e-control';\nvar NUMERIC_FOCUS = 'e-input-focus';\nvar HIDDENELEMENT = 'e-numeric-hidden';\nvar wrapperAttributes = ['title', 'style', 'class'];\nvar selectionTimeOut = 0;\n/**\n * Represents the NumericTextBox component that allows the user to enter only numeric values.\n * ```html\n * \n * ```\n * ```typescript\n * \n * ```\n */\nvar NumericTextBox = /** @class */ (function (_super) {\n __extends(NumericTextBox, _super);\n /**\n *\n * @param {NumericTextBoxModel} options - Specifies the NumericTextBox model.\n * @param {string | HTMLInputElement} element - Specifies the element to render as component.\n * @private\n */\n function NumericTextBox(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isVue = false;\n _this.preventChange = false;\n _this.isAngular = false;\n _this.isDynamicChange = false;\n _this.numericOptions = options;\n return _this;\n }\n NumericTextBox.prototype.preRender = function () {\n this.isPrevFocused = false;\n this.decimalSeparator = '.';\n // eslint-disable-next-line no-useless-escape\n this.intRegExp = new RegExp('/^(-)?(\\d*)$/');\n this.isCalled = false;\n var ejInstance = getValue('ej2_instances', this.element);\n this.cloneElement = this.element.cloneNode(true);\n removeClass([this.cloneElement], [CONTROL, COMPONENT, 'e-lib']);\n this.angularTagName = null;\n this.formEle = closest(this.element, 'form');\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.angularTagName = this.element.tagName;\n var input = this.createElement('input');\n var index = 0;\n for (index; index < this.element.attributes.length; index++) {\n var attributeName = this.element.attributes[index].nodeName;\n if (attributeName !== 'id' && attributeName !== 'class') {\n input.setAttribute(this.element.attributes[index].nodeName, this.element.attributes[index].nodeValue);\n input.innerHTML = this.element.innerHTML;\n }\n else if (attributeName === 'class') {\n input.setAttribute(attributeName, this.element.className.split(' ').filter(function (item) { return item.indexOf('ng-') !== 0; }).join(' '));\n }\n }\n if (this.element.hasAttribute('name')) {\n this.element.removeAttribute('name');\n }\n this.element.classList.remove('e-control', 'e-numerictextbox');\n this.element.appendChild(input);\n this.element = input;\n setValue('ej2_instances', ejInstance, this.element);\n }\n attributes(this.element, { 'role': 'spinbutton', 'tabindex': '0', 'autocomplete': 'off' });\n var localeText = {\n incrementTitle: 'Increment value', decrementTitle: 'Decrement value', placeholder: this.placeholder\n };\n this.l10n = new L10n('numerictextbox', localeText, this.locale);\n if (this.l10n.getConstant('placeholder') !== '') {\n this.setProperties({ placeholder: this.placeholder || this.l10n.getConstant('placeholder') }, true);\n }\n if (!this.element.hasAttribute('id')) {\n this.element.setAttribute('id', getUniqueID('numerictextbox'));\n }\n this.isValidState = true;\n this.inputStyle = null;\n this.inputName = null;\n this.cultureInfo = {};\n this.initCultureInfo();\n this.initCultureFunc();\n this.prevValue = this.value;\n this.updateHTMLAttrToElement();\n this.checkAttributes(false);\n if (this.formEle) {\n this.inputEleValue = this.value;\n }\n this.validateMinMax();\n this.validateStep();\n if (this.placeholder === null) {\n this.updatePlaceholder();\n }\n };\n /**\n * To Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.render = function () {\n if (this.element.tagName.toLowerCase() === 'input') {\n this.createWrapper();\n if (this.showSpinButton) {\n this.spinBtnCreation();\n }\n this.setElementWidth(this.width);\n if (!this.container.classList.contains('e-input-group')) {\n this.container.classList.add('e-input-group');\n }\n this.changeValue(this.value === null || isNaN(this.value) ?\n null : this.strictMode ? this.trimValue(this.value) : this.value);\n this.wireEvents();\n if (this.value !== null && !isNaN(this.value)) {\n if (this.decimals) {\n this.setProperties({ value: this.roundNumber(this.value, this.decimals) }, true);\n }\n }\n if (this.element.getAttribute('value') || this.value) {\n this.element.setAttribute('value', this.element.value);\n this.hiddenInput.setAttribute('value', this.hiddenInput.value);\n }\n this.elementPrevValue = this.element.value;\n if (this.element.hasAttribute('data-val')) {\n this.element.setAttribute('data-val', 'false');\n }\n if (!isNullOrUndefined(closest(this.element, 'fieldset')) && closest(this.element, 'fieldset').disabled) {\n this.enabled = false;\n }\n this.renderComplete();\n }\n };\n NumericTextBox.prototype.checkAttributes = function (isDynamic) {\n var attributes = isDynamic ? isNullOrUndefined(this.htmlAttributes) ? [] : Object.keys(this.htmlAttributes) :\n ['value', 'min', 'max', 'step', 'disabled', 'readonly', 'style', 'name', 'placeholder'];\n for (var _i = 0, attributes_1 = attributes; _i < attributes_1.length; _i++) {\n var prop = attributes_1[_i];\n if (!isNullOrUndefined(this.element.getAttribute(prop))) {\n switch (prop) {\n case 'disabled':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['enabled'] === undefined)) || isDynamic) {\n var enabled = this.element.getAttribute(prop) === 'disabled' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? false : true;\n this.setProperties({ enabled: enabled }, !isDynamic);\n }\n break;\n case 'readonly':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['readonly'] === undefined)) || isDynamic) {\n var readonly = this.element.getAttribute(prop) === 'readonly' || this.element.getAttribute(prop) === ''\n || this.element.getAttribute(prop) === 'true' ? true : false;\n this.setProperties({ readonly: readonly }, !isDynamic);\n }\n break;\n case 'placeholder':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['placeholder'] === undefined)) || isDynamic) {\n this.setProperties({ placeholder: this.element.placeholder }, !isDynamic);\n }\n break;\n case 'value':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['value'] === undefined)) || isDynamic) {\n var setNumber = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n this.setProperties(setValue(prop, setNumber, {}), !isDynamic);\n }\n break;\n case 'min':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['min'] === undefined)) || isDynamic) {\n var minValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (minValue !== null && !isNaN(minValue)) {\n this.setProperties(setValue(prop, minValue, {}), !isDynamic);\n }\n }\n break;\n case 'max':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['max'] === undefined)) || isDynamic) {\n var maxValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (maxValue !== null && !isNaN(maxValue)) {\n this.setProperties(setValue(prop, maxValue, {}), !isDynamic);\n }\n }\n break;\n case 'step':\n if ((isNullOrUndefined(this.numericOptions) || (this.numericOptions['step'] === undefined)) || isDynamic) {\n var stepValue = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if (stepValue !== null && !isNaN(stepValue)) {\n this.setProperties(setValue(prop, stepValue, {}), !isDynamic);\n }\n }\n break;\n case 'style':\n this.inputStyle = this.element.getAttribute(prop);\n break;\n case 'name':\n this.inputName = this.element.getAttribute(prop);\n break;\n default:\n {\n var value = this.instance.getNumberParser({ format: 'n' })(this.element.getAttribute(prop));\n if ((value !== null && !isNaN(value)) || (prop === 'value')) {\n this.setProperties(setValue(prop, value, {}), true);\n }\n }\n break;\n }\n }\n }\n };\n NumericTextBox.prototype.updatePlaceholder = function () {\n this.setProperties({ placeholder: this.l10n.getConstant('placeholder') }, true);\n };\n NumericTextBox.prototype.initCultureFunc = function () {\n this.instance = new Internationalization(this.locale);\n };\n NumericTextBox.prototype.initCultureInfo = function () {\n this.cultureInfo.format = this.format;\n if (getValue('currency', this) !== null) {\n setValue('currency', this.currency, this.cultureInfo);\n this.setProperties({ currencyCode: this.currency }, true);\n }\n };\n /* Wrapper creation */\n NumericTextBox.prototype.createWrapper = function () {\n var updatedCssClassValue = this.cssClass;\n if (!isNullOrUndefined(this.cssClass) && this.cssClass !== '') {\n updatedCssClassValue = this.getNumericValidClassList(this.cssClass);\n }\n var inputObj = Input.createInput({\n element: this.element,\n floatLabelType: this.floatLabelType,\n properties: {\n readonly: this.readonly,\n placeholder: this.placeholder,\n cssClass: updatedCssClassValue,\n enableRtl: this.enableRtl,\n showClearButton: this.showClearButton,\n enabled: this.enabled\n }\n }, this.createElement);\n this.inputWrapper = inputObj;\n this.container = inputObj.container;\n this.container.setAttribute('class', ROOT + ' ' + this.container.getAttribute('class'));\n this.updateHTMLAttrToWrapper();\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n this.hiddenInput = (this.createElement('input', { attrs: { type: 'text',\n 'validateHidden': 'true', 'aria-label': 'hidden', 'class': HIDDENELEMENT } }));\n this.inputName = this.inputName !== null ? this.inputName : this.element.id;\n this.element.removeAttribute('name');\n if (this.isAngular && this.angularTagName === 'EJS-NUMERICTEXTBOX' && this.cloneElement.id.length > 0) {\n attributes(this.hiddenInput, { 'name': this.cloneElement.id });\n }\n else {\n attributes(this.hiddenInput, { 'name': this.inputName });\n }\n this.container.insertBefore(this.hiddenInput, this.container.childNodes[1]);\n this.updateDataAttribute(false);\n if (this.inputStyle !== null) {\n attributes(this.container, { 'style': this.inputStyle });\n }\n };\n NumericTextBox.prototype.updateDataAttribute = function (isDynamic) {\n var attr = {};\n if (!isDynamic) {\n for (var a = 0; a < this.element.attributes.length; a++) {\n attr[this.element.attributes[a].name] = this.element.getAttribute(this.element.attributes[a].name);\n }\n }\n else {\n attr = this.htmlAttributes;\n }\n for (var _i = 0, _a = Object.keys(attr); _i < _a.length; _i++) {\n var key = _a[_i];\n if (key.indexOf('data') === 0) {\n this.hiddenInput.setAttribute(key, attr[\"\" + key]);\n }\n }\n };\n NumericTextBox.prototype.updateHTMLAttrToElement = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) < 0) {\n this.element.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n };\n NumericTextBox.prototype.updateCssClass = function (newClass, oldClass) {\n Input.setCssClass(this.getNumericValidClassList(newClass), [this.container], this.getNumericValidClassList(oldClass));\n };\n NumericTextBox.prototype.getNumericValidClassList = function (numericClassName) {\n var result = numericClassName;\n if (!isNullOrUndefined(numericClassName) && numericClassName !== '') {\n result = (numericClassName.replace(/\\s+/g, ' ')).trim();\n }\n return result;\n };\n NumericTextBox.prototype.updateHTMLAttrToWrapper = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var pro = _a[_i];\n if (wrapperAttributes.indexOf(pro) > -1) {\n if (pro === 'class') {\n var updatedClassValue = this.getNumericValidClassList(this.htmlAttributes[\"\" + pro]);\n if (updatedClassValue !== '') {\n addClass([this.container], updatedClassValue.split(' '));\n }\n }\n else if (pro === 'style') {\n var numericStyle = this.container.getAttribute(pro);\n numericStyle = !isNullOrUndefined(numericStyle) ? (numericStyle + this.htmlAttributes[\"\" + pro]) :\n this.htmlAttributes[\"\" + pro];\n this.container.setAttribute(pro, numericStyle);\n }\n else {\n this.container.setAttribute(pro, this.htmlAttributes[\"\" + pro]);\n }\n }\n }\n }\n };\n NumericTextBox.prototype.setElementWidth = function (width) {\n if (!isNullOrUndefined(width)) {\n if (typeof width === 'number') {\n this.container.style.width = formatUnit(width);\n }\n else if (typeof width === 'string') {\n this.container.style.width = (width.match(/px|%|em/)) ? (width) : (formatUnit(width));\n }\n }\n };\n /* Spinner creation */\n NumericTextBox.prototype.spinBtnCreation = function () {\n this.spinDown = Input.appendSpan(SPINICON + ' ' + SPINDOWN, this.container, this.createElement);\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle')\n });\n this.spinUp = Input.appendSpan(SPINICON + ' ' + SPINUP, this.container, this.createElement);\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle')\n });\n this.wireSpinBtnEvents();\n };\n NumericTextBox.prototype.validateMinMax = function () {\n if (!(typeof (this.min) === 'number' && !isNaN(this.min))) {\n this.setProperties({ min: -(Number.MAX_VALUE) }, true);\n }\n if (!(typeof (this.max) === 'number' && !isNaN(this.max))) {\n this.setProperties({ max: Number.MAX_VALUE }, true);\n }\n if (this.decimals !== null) {\n if (this.min !== -(Number.MAX_VALUE)) {\n this.setProperties({ min: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.min)) }, true);\n }\n if (this.max !== (Number.MAX_VALUE)) {\n this.setProperties({ max: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.max)) }, true);\n }\n }\n this.setProperties({ min: this.min > this.max ? this.max : this.min }, true);\n if (this.min !== -(Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemin': this.min.toString() });\n }\n if (this.max !== (Number.MAX_VALUE)) {\n attributes(this.element, { 'aria-valuemax': this.max.toString() });\n }\n };\n NumericTextBox.prototype.formattedValue = function (decimals, value) {\n return this.instance.getNumberFormat({\n maximumFractionDigits: decimals,\n minimumFractionDigits: decimals, useGrouping: false\n })(value);\n };\n NumericTextBox.prototype.validateStep = function () {\n if (this.decimals !== null) {\n this.setProperties({ step: this.instance.getNumberParser({ format: 'n' })(this.formattedValue(this.decimals, this.step)) }, true);\n }\n };\n NumericTextBox.prototype.action = function (operation, event) {\n this.isInteract = true;\n var value = this.isFocused ? this.instance.getNumberParser({ format: 'n' })(this.element.value) : this.value;\n this.changeValue(this.performAction(value, this.step, operation));\n this.raiseChangeEvent(event);\n };\n NumericTextBox.prototype.checkErrorClass = function () {\n if (this.isValidState) {\n removeClass([this.container], ERROR);\n }\n else {\n addClass([this.container], ERROR);\n }\n attributes(this.element, { 'aria-invalid': this.isValidState ? 'false' : 'true' });\n };\n NumericTextBox.prototype.bindClearEvent = function () {\n if (this.showClearButton) {\n EventHandler.add(this.inputWrapper.clearButton, 'mousedown touchstart', this.resetHandler, this);\n }\n };\n NumericTextBox.prototype.resetHandler = function (e) {\n e.preventDefault();\n if (!(this.inputWrapper.clearButton.classList.contains('e-clear-icon-hide')) || this.inputWrapper.container.classList.contains('e-static-clear')) {\n this.clear(e);\n }\n this.isInteract = true;\n this.raiseChangeEvent(e);\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n NumericTextBox.prototype.clear = function (event) {\n this.setProperties({ value: null }, true);\n this.setElementValue('');\n this.hiddenInput.value = '';\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.resetFormHandler = function () {\n if (this.element.tagName === 'EJS-NUMERICTEXTBOX') {\n this.updateValue(null);\n }\n else {\n this.updateValue(this.inputEleValue);\n }\n };\n NumericTextBox.prototype.setSpinButton = function () {\n if (!isNullOrUndefined(this.spinDown)) {\n attributes(this.spinDown, {\n 'title': this.l10n.getConstant('decrementTitle'),\n 'aria-label': this.l10n.getConstant('decrementTitle')\n });\n }\n if (!isNullOrUndefined(this.spinUp)) {\n attributes(this.spinUp, {\n 'title': this.l10n.getConstant('incrementTitle'),\n 'aria-label': this.l10n.getConstant('incrementTitle')\n });\n }\n };\n NumericTextBox.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'blur', this.focusOutHandler, this);\n EventHandler.add(this.element, 'keydown', this.keyDownHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'input', this.inputHandler, this);\n EventHandler.add(this.element, 'keypress', this.keyPressHandler, this);\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'paste', this.pasteHandler, this);\n if (this.enabled) {\n this.bindClearEvent();\n if (this.formEle) {\n EventHandler.add(this.formEle, 'reset', this.resetFormHandler, this);\n }\n }\n };\n NumericTextBox.prototype.wireSpinBtnEvents = function () {\n /* bind spin button events */\n EventHandler.add(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner, this);\n EventHandler.add(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n EventHandler.add(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner, this);\n };\n NumericTextBox.prototype.unwireEvents = function () {\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'blur', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n EventHandler.remove(this.element, 'input', this.inputHandler);\n EventHandler.remove(this.element, 'keydown', this.keyDownHandler);\n EventHandler.remove(this.element, 'keypress', this.keyPressHandler);\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'paste', this.pasteHandler);\n if (this.formEle) {\n EventHandler.remove(this.formEle, 'reset', this.resetFormHandler);\n }\n };\n NumericTextBox.prototype.unwireSpinBtnEvents = function () {\n /* unbind spin button events */\n EventHandler.remove(this.spinUp, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchStartEvent, this.mouseDownOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchEndEvent, this.mouseUpOnSpinner);\n EventHandler.remove(this.spinUp, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n EventHandler.remove(this.spinDown, Browser.touchMoveEvent, this.touchMoveOnSpinner);\n };\n NumericTextBox.prototype.changeHandler = function (event) {\n event.stopPropagation();\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n };\n NumericTextBox.prototype.raiseChangeEvent = function (event) {\n this.inputValue = (isNullOrUndefined(this.inputValue) || isNaN(this.inputValue)) ? null : this.inputValue;\n if (this.prevValue !== this.value || this.prevValue !== this.inputValue) {\n var eventArgs = {};\n this.changeEventArgs = { value: this.value, previousValue: this.prevValue, isInteracted: this.isInteract,\n isInteraction: this.isInteract, event: event };\n if (event) {\n this.changeEventArgs.event = event;\n }\n if (this.changeEventArgs.event === undefined) {\n this.changeEventArgs.isInteracted = false;\n this.changeEventArgs.isInteraction = false;\n }\n merge(eventArgs, this.changeEventArgs);\n this.prevValue = this.value;\n this.isInteract = false;\n this.elementPrevValue = this.element.value;\n this.preventChange = false;\n this.trigger('change', eventArgs);\n }\n };\n NumericTextBox.prototype.pasteHandler = function () {\n var _this = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var beforeUpdate = this.element.value;\n setTimeout(function () {\n if (!_this.numericRegex().test(_this.element.value)) {\n _this.setElementValue(beforeUpdate);\n }\n });\n };\n NumericTextBox.prototype.preventHandler = function () {\n var _this = this;\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n setTimeout(function () {\n if (_this.element.selectionStart > 0) {\n var currentPos = _this.element.selectionStart;\n var prevPos = _this.element.selectionStart - 1;\n var start = 0;\n var valArray = _this.element.value.split('');\n var numericObject = getNumericObject(_this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var ignoreKeyCode = decimalSeparator.charCodeAt(0);\n if (_this.element.value[prevPos] === ' ' && _this.element.selectionStart > 0 && !iOS) {\n if (isNullOrUndefined(_this.prevVal)) {\n _this.element.value = _this.element.value.trim();\n }\n else if (prevPos !== 0) {\n _this.element.value = _this.prevVal;\n }\n else if (prevPos === 0) {\n _this.element.value = _this.element.value.trim();\n }\n _this.element.setSelectionRange(prevPos, prevPos);\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 1]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 1]) &&\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 1].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n _this.element.setSelectionRange(prevPos, prevPos);\n if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1])) && _this.element.selectionStart > 0\n && _this.element.value.length) {\n _this.preventHandler();\n }\n }\n }\n else if (isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 2])) && _this.element.selectionStart > 1 &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== 45) {\n if ((valArray.indexOf(_this.element.value[_this.element.selectionStart - 2]) !==\n valArray.lastIndexOf(_this.element.value[_this.element.selectionStart - 2]) &&\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) === ignoreKeyCode) ||\n _this.element.value[_this.element.selectionStart - 2].charCodeAt(0) !== ignoreKeyCode) {\n _this.element.setSelectionRange(prevPos, prevPos);\n _this.nextEle = _this.element.value[_this.element.selectionStart];\n _this.cursorPosChanged = true;\n _this.preventHandler();\n }\n }\n if (_this.cursorPosChanged === true && _this.element.value[_this.element.selectionStart] === _this.nextEle &&\n isNaN(parseFloat(_this.element.value[_this.element.selectionStart - 1]))) {\n _this.element.setSelectionRange(_this.element.selectionStart + 1, _this.element.selectionStart + 1);\n _this.cursorPosChanged = false;\n _this.nextEle = null;\n }\n if (_this.element.value.trim() === '') {\n _this.element.setSelectionRange(start, start);\n }\n if (_this.element.selectionStart > 0) {\n if ((_this.element.value[_this.element.selectionStart - 1].charCodeAt(0) === 45) && _this.element.selectionStart > 1) {\n if (isNullOrUndefined(_this.prevVal)) {\n // eslint-disable-next-line no-self-assign\n _this.element.value = _this.element.value;\n }\n else {\n _this.element.value = _this.prevVal;\n }\n _this.element.setSelectionRange(_this.element.selectionStart, _this.element.selectionStart);\n }\n if (_this.element.value[_this.element.selectionStart - 1] === decimalSeparator && _this.decimals === 0 && _this.validateDecimalOnType) {\n _this.element.value = _this.element.value.substring(0, prevPos) +\n _this.element.value.substring(currentPos, _this.element.value.length);\n }\n }\n _this.prevVal = _this.element.value;\n }\n });\n };\n NumericTextBox.prototype.keyUpHandler = function () {\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n if (!iOS && Browser.isDevice) {\n this.preventHandler();\n }\n var parseValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parseValue = parseValue === null || isNaN(parseValue) ? null : parseValue;\n this.hiddenInput.value = parseValue || parseValue === 0 ? parseValue.toString() : null;\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.inputHandler = function (event) {\n // eslint-disable-next-line @typescript-eslint/no-explicit-any, @typescript-eslint/no-this-alias\n var numerictextboxObj = this;\n if (!this.enabled || this.readonly) {\n return;\n }\n var iOS = !!navigator.platform && /iPad|iPhone|iPod/.test(navigator.platform);\n var fireFox = navigator.userAgent.toLowerCase().indexOf('firefox') > -1;\n if ((fireFox || iOS) && Browser.isDevice) {\n this.preventHandler();\n }\n /* istanbul ignore next */\n if (this.isAngular\n && this.element.value !== getValue('decimal', getNumericObject(this.locale))\n && this.element.value !== getValue('minusSign', getNumericObject(this.locale))) {\n var parsedValue = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n parsedValue = isNaN(parsedValue) ? null : parsedValue;\n numerictextboxObj.localChange({ value: parsedValue });\n this.preventChange = true;\n }\n if (this.isVue) {\n var current = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n var previous = this.instance.getNumberParser({ format: 'n' })(this.elementPrevValue);\n //EJ2-54963-if type \".\" or \".0\" or \"-.0\" it converts to \"0\" automatically when binding v-model\n var nonZeroRegex = new RegExp('[^0-9]+$');\n if (nonZeroRegex.test(this.element.value) || ((this.elementPrevValue.indexOf('.') !== -1 || this.elementPrevValue.indexOf('-') !== -1) && this.element.value[this.element.value.length - 1] === '0')) {\n current = this.value;\n }\n var eventArgs = {\n event: event,\n value: (current === null || isNaN(current) ? null : current),\n previousValue: (previous === null || isNaN(previous) ? null : previous)\n };\n this.preventChange = true;\n this.elementPrevValue = this.element.value;\n this.trigger('input', eventArgs);\n }\n };\n NumericTextBox.prototype.keyDownHandler = function (event) {\n if (!this.readonly) {\n switch (event.keyCode) {\n case 38:\n event.preventDefault();\n this.action(INCREMENT, event);\n break;\n case 40:\n event.preventDefault();\n this.action(DECREMENT, event);\n break;\n default: break;\n }\n }\n };\n NumericTextBox.prototype.performAction = function (value, step, operation) {\n if (value === null || isNaN(value)) {\n value = 0;\n }\n var updatedValue = operation === INCREMENT ? value + step : value - step;\n updatedValue = this.correctRounding(value, step, updatedValue);\n return this.strictMode ? this.trimValue(updatedValue) : updatedValue;\n };\n NumericTextBox.prototype.correctRounding = function (value, step, result) {\n var floatExp = new RegExp('[,.](.*)');\n var floatValue = floatExp.test(value.toString());\n var floatStep = floatExp.test(step.toString());\n if (floatValue || floatStep) {\n var valueCount = floatValue ? floatExp.exec(value.toString())[0].length : 0;\n var stepCount = floatStep ? floatExp.exec(step.toString())[0].length : 0;\n var max = Math.max(valueCount, stepCount);\n return value = this.roundValue(result, max);\n }\n return result;\n };\n NumericTextBox.prototype.roundValue = function (result, precision) {\n precision = precision || 0;\n var divide = Math.pow(10, precision);\n return result *= divide, result = Math.round(result) / divide;\n };\n NumericTextBox.prototype.updateValue = function (value, event) {\n if (event) {\n this.isInteract = true;\n }\n if (value !== null && !isNaN(value)) {\n if (this.decimals) {\n value = this.roundNumber(value, this.decimals);\n }\n }\n this.inputValue = value;\n this.changeValue(value === null || isNaN(value) ? null : this.strictMode ? this.trimValue(value) : value);\n /* istanbul ignore next */\n if (!this.isDynamicChange) {\n this.raiseChangeEvent(event);\n }\n };\n NumericTextBox.prototype.updateCurrency = function (prop, propVal) {\n setValue(prop, propVal, this.cultureInfo);\n this.updateValue(this.value);\n };\n NumericTextBox.prototype.changeValue = function (value) {\n if (!(value || value === 0)) {\n value = null;\n this.setProperties({ value: value }, true);\n }\n else {\n var numberOfDecimals = this.getNumberOfDecimals(value);\n this.setProperties({ value: this.roundNumber(value, numberOfDecimals) }, true);\n }\n this.modifyText();\n if (!this.strictMode) {\n this.validateState();\n }\n };\n NumericTextBox.prototype.modifyText = function () {\n if (this.value || this.value === 0) {\n var value = this.formatNumber();\n var elementValue = this.isFocused ? value : this.instance.getNumberFormat(this.cultureInfo)(this.value);\n this.setElementValue(elementValue);\n attributes(this.element, { 'aria-valuenow': value });\n this.hiddenInput.value = this.value.toString();\n if (this.value !== null && this.serverDecimalSeparator) {\n this.hiddenInput.value = this.hiddenInput.value.replace('.', this.serverDecimalSeparator);\n }\n }\n else {\n this.setElementValue('');\n this.element.removeAttribute('aria-valuenow');\n this.hiddenInput.value = null;\n }\n };\n NumericTextBox.prototype.setElementValue = function (val, element) {\n Input.setValue(val, (element ? element : this.element), this.floatLabelType, this.showClearButton);\n };\n NumericTextBox.prototype.validateState = function () {\n this.isValidState = true;\n if (this.value || this.value === 0) {\n this.isValidState = !(this.value > this.max || this.value < this.min);\n }\n this.checkErrorClass();\n };\n NumericTextBox.prototype.getNumberOfDecimals = function (value) {\n var numberOfDecimals;\n // eslint-disable-next-line no-useless-escape\n var EXPREGEXP = new RegExp('[eE][\\-+]?([0-9]+)');\n var valueString = value.toString();\n if (EXPREGEXP.test(valueString)) {\n var result = EXPREGEXP.exec(valueString);\n if (!isNullOrUndefined(result)) {\n valueString = value.toFixed(Math.min(parseInt(result[1], 10), 20));\n }\n }\n var decimalPart = valueString.split('.')[1];\n numberOfDecimals = !decimalPart || !decimalPart.length ? 0 : decimalPart.length;\n if (this.decimals !== null) {\n numberOfDecimals = numberOfDecimals < this.decimals ? numberOfDecimals : this.decimals;\n }\n return numberOfDecimals;\n };\n NumericTextBox.prototype.formatNumber = function () {\n var numberOfDecimals = this.getNumberOfDecimals(this.value);\n return this.instance.getNumberFormat({\n maximumFractionDigits: numberOfDecimals,\n minimumFractionDigits: numberOfDecimals, useGrouping: false\n })(this.value);\n };\n NumericTextBox.prototype.trimValue = function (value) {\n if (value > this.max) {\n return this.max;\n }\n if (value < this.min) {\n return this.min;\n }\n return value;\n };\n NumericTextBox.prototype.roundNumber = function (value, precision) {\n var result = value;\n var decimals = precision || 0;\n var result1 = result.toString().split('e');\n result = Math.round(Number(result1[0] + 'e' + (result1[1] ? (Number(result1[1]) + decimals) : decimals)));\n var result2 = result.toString().split('e');\n result = Number(result2[0] + 'e' + (result2[1] ? (Number(result2[1]) - decimals) : -decimals));\n return Number(result.toFixed(decimals));\n };\n NumericTextBox.prototype.cancelEvent = function (event) {\n event.preventDefault();\n return false;\n };\n NumericTextBox.prototype.keyPressHandler = function (event) {\n if (!this.enabled || this.readonly) {\n return true;\n }\n if (!Browser.isDevice && Browser.info.version === '11.0' && event.keyCode === 13) {\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput, event);\n return true;\n }\n if (event.which === 0 || event.metaKey || event.ctrlKey || event.keyCode === 8 || event.keyCode === 13) {\n return true;\n }\n var currentChar = String.fromCharCode(event.which);\n var decimalSeparator = getValue('decimal', getNumericObject(this.locale));\n var isAlterNumPadDecimalChar = event.code === 'NumpadDecimal' && currentChar !== decimalSeparator;\n //EJ2-59813-replace the culture decimal separator value with numberpad decimal separator value when culture decimal separator and numberpad decimal separator are different\n if (isAlterNumPadDecimalChar) {\n currentChar = decimalSeparator;\n }\n var text = this.element.value;\n text = text.substring(0, this.element.selectionStart) + currentChar + text.substring(this.element.selectionEnd);\n if (!this.numericRegex().test(text)) {\n event.preventDefault();\n event.stopPropagation();\n return false;\n }\n else {\n //EJ2-59813-update the numberpad decimal separator and update the cursor position\n if (isAlterNumPadDecimalChar) {\n var start = this.element.selectionStart + 1;\n this.element.value = text;\n this.element.setSelectionRange(start, start);\n event.preventDefault();\n event.stopPropagation();\n }\n return true;\n }\n };\n NumericTextBox.prototype.numericRegex = function () {\n var numericObject = getNumericObject(this.locale);\n var decimalSeparator = getValue('decimal', numericObject);\n var fractionRule = '*';\n if (decimalSeparator === DECIMALSEPARATOR) {\n decimalSeparator = '\\\\' + decimalSeparator;\n }\n if (this.decimals === 0 && this.validateDecimalOnType) {\n return INTREGEXP;\n }\n if (this.decimals && this.validateDecimalOnType) {\n fractionRule = '{0,' + this.decimals + '}';\n }\n /* eslint-disable-next-line security/detect-non-literal-regexp */\n return new RegExp('^(-)?(((\\\\d+(' + decimalSeparator + '\\\\d' + fractionRule +\n ')?)|(' + decimalSeparator + '\\\\d' + fractionRule + ')))?$');\n };\n NumericTextBox.prototype.mouseWheel = function (event) {\n event.preventDefault();\n var delta;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n var rawEvent = event;\n if (rawEvent.wheelDelta) {\n delta = rawEvent.wheelDelta / 120;\n }\n else if (rawEvent.detail) {\n delta = -rawEvent.detail / 3;\n }\n if (delta > 0) {\n this.action(INCREMENT, event);\n }\n else if (delta < 0) {\n this.action(DECREMENT, event);\n }\n this.cancelEvent(event);\n };\n NumericTextBox.prototype.focusHandler = function (event) {\n var _this = this;\n clearTimeout(selectionTimeOut);\n this.focusEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('focus', this.focusEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n this.isFocused = true;\n removeClass([this.container], ERROR);\n this.prevValue = this.value;\n if ((this.value || this.value === 0)) {\n var formatValue_1 = this.formatNumber();\n this.setElementValue(formatValue_1);\n if (!this.isPrevFocused) {\n if (!Browser.isDevice && Browser.info.version === '11.0') {\n this.element.setSelectionRange(0, formatValue_1.length);\n }\n else {\n var delay = (Browser.isDevice && Browser.isIos) ? 600 : 0;\n selectionTimeOut = setTimeout(function () {\n _this.element.setSelectionRange(0, formatValue_1.length);\n }, delay);\n }\n }\n }\n if (!Browser.isDevice) {\n EventHandler.add(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel, this);\n }\n };\n NumericTextBox.prototype.focusOutHandler = function (event) {\n var _this = this;\n this.blurEventArgs = { event: event, value: this.value, container: this.container };\n this.trigger('blur', this.blurEventArgs);\n if (!this.enabled || this.readonly) {\n return;\n }\n if (this.isPrevFocused) {\n event.preventDefault();\n if (Browser.isDevice) {\n var value_1 = this.element.value;\n this.element.focus();\n this.isPrevFocused = false;\n var ele_1 = this.element;\n setTimeout(function () {\n _this.setElementValue(value_1, ele_1);\n }, 200);\n }\n }\n else {\n this.isFocused = false;\n if (!this.element.value.length) {\n this.setProperties({ value: null }, true);\n }\n var parsedInput = this.instance.getNumberParser({ format: 'n' })(this.element.value);\n this.updateValue(parsedInput);\n if (!Browser.isDevice) {\n EventHandler.remove(this.element, 'mousewheel DOMMouseScroll', this.mouseWheel);\n }\n }\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var focusEvent = document.createEvent('FocusEvent');\n focusEvent.initEvent('focusout', false, true);\n element.dispatchEvent(focusEvent);\n }\n };\n NumericTextBox.prototype.mouseDownOnSpinner = function (event) {\n var _this = this;\n if (this.isFocused) {\n this.isPrevFocused = true;\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var result = this.getElementData(event);\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.add(target, 'mouseleave', this.mouseUpClick, this);\n this.timeOut = setInterval(function () {\n _this.isCalled = true;\n _this.action(action, event);\n }, 150);\n EventHandler.add(document, 'mouseup', this.mouseUpClick, this);\n };\n NumericTextBox.prototype.touchMoveOnSpinner = function (event) {\n var target;\n if (event.type === 'touchmove') {\n var touchEvent = event.touches;\n target = touchEvent.length && document.elementFromPoint(touchEvent[0].pageX, touchEvent[0].pageY);\n }\n else {\n target = document.elementFromPoint(event.clientX, event.clientY);\n }\n if (!(target.classList.contains(SPINICON))) {\n clearInterval(this.timeOut);\n }\n };\n NumericTextBox.prototype.mouseUpOnSpinner = function (event) {\n this.prevValue = this.value;\n if (this.isPrevFocused) {\n this.element.focus();\n if (!Browser.isDevice) {\n this.isPrevFocused = false;\n }\n }\n if (!Browser.isDevice) {\n event.preventDefault();\n }\n if (!this.getElementData(event)) {\n return;\n }\n var target = event.currentTarget;\n var action = (target.classList.contains(SPINUP)) ? INCREMENT : DECREMENT;\n EventHandler.remove(target, 'mouseleave', this.mouseUpClick);\n if (!this.isCalled) {\n this.action(action, event);\n }\n this.isCalled = false;\n EventHandler.remove(document, 'mouseup', this.mouseUpClick);\n var formElement = closest(this.element, 'form');\n if (formElement) {\n var element = this.element.nextElementSibling;\n var keyupEvent = document.createEvent('KeyboardEvent');\n keyupEvent.initEvent('keyup', false, true);\n element.dispatchEvent(keyupEvent);\n }\n };\n NumericTextBox.prototype.getElementData = function (event) {\n if ((event.which && event.which === 3) || (event.button && event.button === 2)\n || !this.enabled || this.readonly) {\n return false;\n }\n clearInterval(this.timeOut);\n return true;\n };\n NumericTextBox.prototype.floatLabelTypeUpdate = function () {\n Input.removeFloating(this.inputWrapper);\n var hiddenInput = this.hiddenInput;\n this.hiddenInput.remove();\n Input.addFloating(this.element, this.floatLabelType, this.placeholder, this.createElement);\n this.container.insertBefore(hiddenInput, this.container.childNodes[1]);\n };\n NumericTextBox.prototype.mouseUpClick = function (event) {\n event.stopPropagation();\n clearInterval(this.timeOut);\n this.isCalled = false;\n if (this.spinUp) {\n EventHandler.remove(this.spinUp, 'mouseleave', this.mouseUpClick);\n }\n if (this.spinDown) {\n EventHandler.remove(this.spinDown, 'mouseleave', this.mouseUpClick);\n }\n };\n /**\n * Increments the NumericTextBox value with the specified step value.\n *\n * @param {number} step - Specifies the value used to increment the NumericTextBox value.\n * if its not given then numeric value will be incremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.increment = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, INCREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Decrements the NumericTextBox value with specified step value.\n *\n * @param {number} step - Specifies the value used to decrement the NumericTextBox value.\n * if its not given then numeric value will be decremented based on the step property value.\n * @returns {void}\n */\n NumericTextBox.prototype.decrement = function (step) {\n if (step === void 0) { step = this.step; }\n this.isInteract = false;\n this.changeValue(this.performAction(this.value, step, DECREMENT));\n this.raiseChangeEvent();\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers.\n * Also it maintains the initial input element from the DOM.\n *\n * @method destroy\n * @returns {void}\n */\n NumericTextBox.prototype.destroy = function () {\n this.unwireEvents();\n detach(this.hiddenInput);\n if (this.showSpinButton) {\n this.unwireSpinBtnEvents();\n detach(this.spinUp);\n detach(this.spinDown);\n }\n var attrArray = ['aria-labelledby', 'role', 'autocomplete', 'aria-readonly',\n 'aria-disabled', 'autocapitalize', 'spellcheck', 'aria-autocomplete', 'tabindex',\n 'aria-valuemin', 'aria-valuemax', 'aria-valuenow', 'aria-invalid'];\n for (var i = 0; i < attrArray.length; i++) {\n this.element.removeAttribute(attrArray[i]);\n }\n this.element.classList.remove('e-input');\n this.container.insertAdjacentElement('afterend', this.element);\n detach(this.container);\n this.spinUp = null;\n this.spinDown = null;\n this.container = null;\n this.hiddenInput = null;\n this.changeEventArgs = null;\n this.blurEventArgs = null;\n this.focusEventArgs = null;\n this.inputWrapper = null;\n Input.destroy();\n _super.prototype.destroy.call(this);\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns */\n /**\n * Returns the value of NumericTextBox with the format applied to the NumericTextBox.\n *\n */\n NumericTextBox.prototype.getText = function () {\n return this.element.value;\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns */\n /**\n * Sets the focus to widget for interaction.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusIn = function () {\n if (document.activeElement !== this.element && this.enabled) {\n this.element.focus();\n addClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /**\n * Remove the focus from widget, if the widget is in focus state.\n *\n * @returns {void}\n */\n NumericTextBox.prototype.focusOut = function () {\n if (document.activeElement === this.element && this.enabled) {\n this.element.blur();\n removeClass([this.container], [NUMERIC_FOCUS]);\n }\n };\n /* eslint-disable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Gets the properties to be maintained in the persisted state.\n *\n * @returns {string}\n */\n NumericTextBox.prototype.getPersistData = function () {\n var keyEntity = ['value'];\n return this.addOnPersist(keyEntity);\n };\n /* eslint-enable valid-jsdoc, jsdoc/require-returns-description */\n /**\n * Calls internally if any of the property value is changed.\n *\n * @param {NumericTextBoxModel} newProp - Returns the dynamic property value of the component.\n * @param {NumericTextBoxModel} oldProp - Returns the previous property value of the component.\n * @returns {void}\n * @private\n */\n NumericTextBox.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'width':\n this.setElementWidth(newProp.width);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'cssClass':\n this.updateCssClass(newProp.cssClass, oldProp.cssClass);\n break;\n case 'enabled':\n Input.setEnabled(newProp.enabled, this.element);\n this.bindClearEvent();\n break;\n case 'enableRtl':\n Input.setEnableRtl(newProp.enableRtl, [this.container]);\n break;\n case 'readonly':\n Input.setReadonly(newProp.readonly, this.element);\n if (this.readonly) {\n attributes(this.element, { 'aria-readonly': 'true' });\n }\n else {\n this.element.removeAttribute('aria-readonly');\n }\n break;\n case 'htmlAttributes':\n this.updateHTMLAttrToElement();\n this.updateHTMLAttrToWrapper();\n this.updateDataAttribute(true);\n this.checkAttributes(true);\n Input.validateInputType(this.container, this.element);\n break;\n case 'placeholder':\n Input.setPlaceholder(newProp.placeholder, this.element);\n Input.calculateWidth(this.element, this.container);\n break;\n case 'step':\n this.step = newProp.step;\n this.validateStep();\n break;\n case 'showSpinButton':\n this.updateSpinButton(newProp);\n break;\n case 'showClearButton':\n this.updateClearButton(newProp);\n break;\n case 'floatLabelType':\n this.floatLabelType = newProp.floatLabelType;\n this.floatLabelTypeUpdate();\n break;\n case 'value':\n this.isDynamicChange = (this.isAngular || this.isVue) && this.preventChange;\n this.updateValue(newProp.value);\n if (this.isDynamicChange) {\n this.preventChange = false;\n this.isDynamicChange = false;\n }\n break;\n case 'min':\n case 'max':\n setValue(prop, getValue(prop, newProp), this);\n this.validateMinMax();\n this.updateValue(this.value);\n break;\n case 'strictMode':\n this.strictMode = newProp.strictMode;\n this.updateValue(this.value);\n this.validateState();\n break;\n case 'locale':\n this.initCultureFunc();\n this.l10n.setLocale(this.locale);\n this.setSpinButton();\n this.updatePlaceholder();\n Input.setPlaceholder(this.placeholder, this.element);\n this.updateValue(this.value);\n break;\n case 'currency':\n {\n var propVal = getValue(prop, newProp);\n this.setProperties({ currencyCode: propVal }, true);\n this.updateCurrency(prop, propVal);\n }\n break;\n case 'currencyCode':\n {\n var propValue = getValue(prop, newProp);\n this.setProperties({ currency: propValue }, true);\n this.updateCurrency('currency', propValue);\n }\n break;\n case 'format':\n setValue(prop, getValue(prop, newProp), this);\n this.initCultureInfo();\n this.updateValue(this.value);\n break;\n case 'decimals':\n this.decimals = newProp.decimals;\n this.updateValue(this.value);\n }\n }\n };\n NumericTextBox.prototype.updateClearButton = function (newProp) {\n Input.setClearButton(newProp.showClearButton, this.element, this.inputWrapper, undefined, this.createElement);\n this.bindClearEvent();\n };\n NumericTextBox.prototype.updateSpinButton = function (newProp) {\n if (newProp.showSpinButton) {\n this.spinBtnCreation();\n }\n else {\n detach(this.spinUp);\n detach(this.spinDown);\n }\n };\n /**\n * Gets the component name\n *\n * @returns {string} Returns the component name.\n * @private\n */\n NumericTextBox.prototype.getModuleName = function () {\n return 'numerictextbox';\n };\n __decorate([\n Property('')\n ], NumericTextBox.prototype, \"cssClass\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"value\", void 0);\n __decorate([\n Property(-(Number.MAX_VALUE))\n ], NumericTextBox.prototype, \"min\", void 0);\n __decorate([\n Property(Number.MAX_VALUE)\n ], NumericTextBox.prototype, \"max\", void 0);\n __decorate([\n Property(1)\n ], NumericTextBox.prototype, \"step\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"width\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"placeholder\", void 0);\n __decorate([\n Property({})\n ], NumericTextBox.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"showSpinButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"enabled\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"showClearButton\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property('n2')\n ], NumericTextBox.prototype, \"format\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"decimals\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currency\", void 0);\n __decorate([\n Property(null)\n ], NumericTextBox.prototype, \"currencyCode\", void 0);\n __decorate([\n Property(true)\n ], NumericTextBox.prototype, \"strictMode\", void 0);\n __decorate([\n Property(false)\n ], NumericTextBox.prototype, \"validateDecimalOnType\", void 0);\n __decorate([\n Property('Never')\n ], NumericTextBox.prototype, \"floatLabelType\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"focus\", void 0);\n __decorate([\n Event()\n ], NumericTextBox.prototype, \"blur\", void 0);\n NumericTextBox = __decorate([\n NotifyPropertyChanges\n ], NumericTextBox);\n return NumericTextBox;\n}(Component));\nexport { NumericTextBox };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, rippleEffect, NotifyPropertyChanges, Property, closest, setValue } from '@syncfusion/ej2-base';\nimport { addClass, getInstance, getUniqueID, isRippleEnabled, removeClass, attributes, isNullOrUndefined } from '@syncfusion/ej2-base';\nimport { detach, Event, EventHandler, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { wrapperInitialize, rippleMouseHandler } from './../common/common';\nvar LABEL = 'e-label';\nvar RIPPLE = 'e-ripple-container';\nvar RTL = 'e-rtl';\nvar WRAPPER = 'e-radio-wrapper';\nvar ATTRIBUTES = ['title', 'class', 'style', 'disabled', 'readonly', 'name', 'value'];\n/**\n * The RadioButton is a graphical user interface element that allows you to select one option from the choices.\n * It contains checked and unchecked states.\n * ```html\n * \n * \n * ```\n */\nvar RadioButton = /** @class */ (function (_super) {\n __extends(RadioButton, _super);\n /**\n * Constructor for creating the widget\n *\n * @private\n * @param {RadioButtonModel} options - Specifies Radio button model\n * @param {string | HTMLInputElement} element - Specifies target element\n */\n function RadioButton(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isFocused = false;\n return _this;\n }\n RadioButton_1 = RadioButton;\n RadioButton.prototype.changeHandler = function (event) {\n this.checked = true;\n this.dataBind();\n var value = this.element.getAttribute('value');\n value = this.isVue && value ? this.element.value : this.value;\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n this.trigger('change', { value: value, event: event });\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n if (this.isAngular) {\n event.stopPropagation();\n }\n };\n RadioButton.prototype.updateChange = function () {\n var input;\n var instance;\n var radioGrp = this.getRadioGroup();\n for (var i = 0; i < radioGrp.length; i++) {\n input = radioGrp[i];\n if (input !== this.element) {\n instance = getInstance(input, RadioButton_1);\n instance.checked = false;\n if (this.tagName === 'EJS-RADIOBUTTON') {\n instance.angularValue = this.value;\n }\n }\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RadioButton.prototype.destroy = function () {\n var _this = this;\n var radioWrap = this.wrapper;\n _super.prototype.destroy.call(this);\n if (radioWrap) {\n if (!this.disabled) {\n this.unWireEvents();\n }\n if (this.tagName === 'INPUT') {\n if (radioWrap.parentNode) {\n radioWrap.parentNode.insertBefore(this.element, radioWrap);\n }\n detach(radioWrap);\n this.element.checked = false;\n ['name', 'value', 'disabled'].forEach(function (key) {\n _this.element.removeAttribute(key);\n });\n }\n else {\n ['role', 'aria-checked', 'class'].forEach(function (key) {\n radioWrap.removeAttribute(key);\n });\n radioWrap.innerHTML = '';\n this.element = this.wrapper;\n if (this.refreshing) {\n ['e-control', 'e-radio', 'e-lib'].forEach(function (key) {\n _this.element.classList.add(key);\n });\n setValue('ej2_instances', [this], this.element);\n }\n }\n }\n };\n RadioButton.prototype.focusHandler = function () {\n this.isFocused = true;\n };\n RadioButton.prototype.focusOutHandler = function () {\n var label = this.getLabel();\n if (label) {\n label.classList.remove('e-focus');\n }\n };\n RadioButton.prototype.getModuleName = function () {\n return 'radio';\n };\n /**\n * To get the value of selected radio button in a group.\n *\n * @method getSelectedValue\n * @returns {string} - Selected Value\n */\n RadioButton.prototype.getSelectedValue = function () {\n var input;\n var radioGrp = this.getRadioGroup();\n for (var i = 0, len = radioGrp.length; i < len; i++) {\n input = radioGrp[i];\n if (input.checked) {\n return input.value;\n }\n }\n return '';\n };\n RadioButton.prototype.getRadioGroup = function () {\n return document.querySelectorAll('input.e-radio[name=\"' + this.element.getAttribute('name') + '\"]');\n };\n /**\n * Gets the properties to be maintained in the persistence state.\n *\n * @private\n * @returns {string} - Persist Data\n */\n RadioButton.prototype.getPersistData = function () {\n return this.addOnPersist(['checked']);\n };\n RadioButton.prototype.getWrapper = function () {\n if (this.element) {\n return this.element.parentElement;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.getLabel = function () {\n if (this.element) {\n return this.element.nextElementSibling;\n }\n else {\n return null;\n }\n };\n RadioButton.prototype.initialize = function () {\n if (isNullOrUndefined(this.initialCheckedValue)) {\n this.initialCheckedValue = this.checked;\n }\n this.initWrapper();\n this.updateHtmlAttribute();\n if (this.name) {\n this.element.setAttribute('name', this.name);\n }\n var value = this.element.getAttribute('value');\n var type = typeof this.value;\n if (this.isVue && type === 'boolean') {\n value = value === 'true' ? true : false;\n }\n if (this.isVue ? this.value && type !== 'boolean' && !value : this.value) {\n this.element.setAttribute('value', this.value);\n }\n if (this.checked) {\n this.element.checked = true;\n }\n if (this.disabled) {\n this.setDisabled();\n }\n };\n RadioButton.prototype.initWrapper = function () {\n var rippleSpan;\n var wrapper = this.element.parentElement;\n if (!wrapper.classList.contains(WRAPPER)) {\n wrapper = this.createElement('div', { className: WRAPPER });\n this.element.parentNode.insertBefore(wrapper, this.element);\n }\n var label = this.createElement('label', { attrs: { for: this.element.id } });\n wrapper.appendChild(this.element);\n wrapper.appendChild(label);\n if (isRippleEnabled) {\n rippleSpan = this.createElement('span', { className: (RIPPLE) });\n label.appendChild(rippleSpan);\n rippleEffect(rippleSpan, {\n duration: 400,\n isCenterRipple: true\n });\n }\n wrapper.classList.add('e-wrapper');\n if (this.enableRtl) {\n label.classList.add(RTL);\n }\n if (this.cssClass) {\n addClass([wrapper], this.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n if (this.label) {\n this.setText(this.label);\n }\n };\n RadioButton.prototype.keyUpHandler = function () {\n if (this.isFocused) {\n this.getLabel().classList.add('e-focus');\n }\n };\n RadioButton.prototype.labelMouseDownHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n rippleMouseHandler(e, rippleSpan);\n };\n RadioButton.prototype.labelMouseLeaveHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.labelMouseUpHandler = function (e) {\n var rippleSpan = this.getLabel().getElementsByClassName(RIPPLE)[0];\n if (rippleSpan) {\n var rippleElem = rippleSpan.querySelectorAll('.e-ripple-element');\n for (var i = rippleElem.length - 1; i > 0; i--) {\n rippleSpan.removeChild(rippleSpan.childNodes[i]);\n }\n rippleMouseHandler(e, rippleSpan);\n }\n };\n RadioButton.prototype.formResetHandler = function () {\n this.checked = this.initialCheckedValue;\n if (this.initialCheckedValue) {\n attributes(this.element, { 'checked': 'true' });\n }\n };\n /**\n * Called internally if any of the property value changes.\n *\n * @private\n * @param {RadioButtonModel} newProp - Specifies New Properties\n * @param {RadioButtonModel} oldProp - Specifies Old Properties\n * @returns {void}\n */\n RadioButton.prototype.onPropertyChanged = function (newProp, oldProp) {\n var wrap = this.getWrapper();\n var label = this.getLabel();\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'checked':\n if (newProp.checked) {\n this.updateChange();\n }\n this.element.checked = newProp.checked;\n break;\n case 'disabled':\n if (newProp.disabled) {\n this.setDisabled();\n this.unWireEvents();\n }\n else {\n this.element.disabled = false;\n this.wireEvents();\n }\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([wrap], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([wrap], newProp.cssClass.replace(/\\s+/g, ' ').trim().split(' '));\n }\n break;\n case 'enableRtl':\n if (newProp.enableRtl) {\n label.classList.add(RTL);\n }\n else {\n label.classList.remove(RTL);\n }\n break;\n case 'label':\n this.setText(newProp.label);\n break;\n case 'labelPosition':\n if (newProp.labelPosition === 'Before') {\n label.classList.add('e-right');\n }\n else {\n label.classList.remove('e-right');\n }\n break;\n case 'name':\n this.element.setAttribute('name', newProp.name);\n break;\n case 'value':\n var type = typeof this.htmlAttributes.value;\n if (!isNullOrUndefined(this.htmlAttributes) && (this.htmlAttributes.value || type === 'boolean' && !this.htmlAttributes.value)) {\n break;\n }\n this.element.setAttribute('value', newProp.value);\n break;\n case 'htmlAttributes':\n this.updateHtmlAttribute();\n break;\n }\n }\n };\n /**\n * Initialize checked Property, Angular and React and Unique ID support.\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.preRender = function () {\n var element = this.element;\n this.formElement = closest(this.element, 'form');\n this.tagName = this.element.tagName;\n element = wrapperInitialize(this.createElement, 'EJS-RADIOBUTTON', 'radio', element, WRAPPER, 'radio');\n this.element = element;\n if (this.element.getAttribute('type') !== 'radio') {\n this.element.setAttribute('type', 'radio');\n }\n if (!this.element.id) {\n this.element.id = getUniqueID('e-' + this.getModuleName());\n }\n if (this.tagName === 'EJS-RADIOBUTTON') {\n var formControlName = this.element.getAttribute('formcontrolname');\n if (formControlName) {\n this.setProperties({ 'name': formControlName }, true);\n this.element.setAttribute('name', formControlName);\n }\n }\n };\n /**\n * Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n RadioButton.prototype.render = function () {\n this.initialize();\n if (!this.disabled) {\n this.wireEvents();\n }\n this.renderComplete();\n this.wrapper = this.getWrapper();\n };\n RadioButton.prototype.setDisabled = function () {\n this.element.disabled = true;\n };\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n RadioButton.prototype.setText = function (text) {\n var label = this.getLabel();\n var textLabel = label.getElementsByClassName(LABEL)[0];\n if (textLabel) {\n textLabel.textContent = text;\n }\n else {\n text = (this.enableHtmlSanitizer) ? SanitizeHtmlHelper.sanitize(text) : text;\n textLabel = this.createElement('span', { className: LABEL, innerHTML: text });\n label.appendChild(textLabel);\n }\n if (this.labelPosition === 'Before') {\n this.getLabel().classList.add('e-right');\n }\n else {\n this.getLabel().classList.remove('e-right');\n }\n };\n RadioButton.prototype.updateHtmlAttribute = function () {\n if (!isNullOrUndefined(this.htmlAttributes)) {\n for (var _i = 0, _a = Object.keys(this.htmlAttributes); _i < _a.length; _i++) {\n var key = _a[_i];\n var wrapper = this.element.parentElement;\n if (ATTRIBUTES.indexOf(key) > -1) {\n if (key === 'class') {\n addClass([wrapper], this.htmlAttributes[\"\" + key].replace(/\\s+/g, ' ').trim().split(' '));\n }\n else if (key === 'title' || key === 'style') {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n else {\n this.element.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n else {\n wrapper.setAttribute(key, this.htmlAttributes[\"\" + key]);\n }\n }\n }\n };\n RadioButton.prototype.unWireEvents = function () {\n var label = this.wrapper;\n EventHandler.remove(this.element, 'change', this.changeHandler);\n EventHandler.remove(this.element, 'focus', this.focusHandler);\n EventHandler.remove(this.element, 'focusout', this.focusOutHandler);\n EventHandler.remove(this.element, 'keyup', this.keyUpHandler);\n var rippleLabel = label.getElementsByTagName('label')[0];\n if (rippleLabel) {\n EventHandler.remove(rippleLabel, 'mousedown', this.labelMouseDownHandler);\n EventHandler.remove(rippleLabel, 'mouseup', this.labelMouseUpHandler);\n EventHandler.remove(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler);\n }\n if (this.formElement) {\n EventHandler.remove(this.formElement, 'reset', this.formResetHandler);\n }\n };\n RadioButton.prototype.wireEvents = function () {\n var label = this.getLabel();\n EventHandler.add(this.element, 'change', this.changeHandler, this);\n EventHandler.add(this.element, 'keyup', this.keyUpHandler, this);\n EventHandler.add(this.element, 'focus', this.focusHandler, this);\n EventHandler.add(this.element, 'focusout', this.focusOutHandler, this);\n var rippleLabel = label.getElementsByClassName(LABEL)[0];\n if (rippleLabel) {\n EventHandler.add(rippleLabel, 'mousedown', this.labelMouseDownHandler, this);\n EventHandler.add(rippleLabel, 'mouseup', this.labelMouseUpHandler, this);\n EventHandler.add(rippleLabel, 'mouseleave', this.labelMouseLeaveHandler, this);\n }\n if (this.formElement) {\n EventHandler.add(this.formElement, 'reset', this.formResetHandler, this);\n }\n };\n /**\n * Click the RadioButton element\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.click = function () {\n this.element.click();\n };\n /**\n * Sets the focus to RadioButton\n * its native method\n *\n * @public\n * @returns {void}\n */\n RadioButton.prototype.focusIn = function () {\n this.element.focus();\n };\n var RadioButton_1;\n __decorate([\n Event()\n ], RadioButton.prototype, \"change\", void 0);\n __decorate([\n Event()\n ], RadioButton.prototype, \"created\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"checked\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"label\", void 0);\n __decorate([\n Property('After')\n ], RadioButton.prototype, \"labelPosition\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"name\", void 0);\n __decorate([\n Property('')\n ], RadioButton.prototype, \"value\", void 0);\n __decorate([\n Property(false)\n ], RadioButton.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property({})\n ], RadioButton.prototype, \"htmlAttributes\", void 0);\n RadioButton = RadioButton_1 = __decorate([\n NotifyPropertyChanges\n ], RadioButton);\n return RadioButton;\n}(Component));\nexport { RadioButton };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, Property, NotifyPropertyChanges, Event, Browser, detach } from '@syncfusion/ej2-base';\nimport { getDefaultDateObject, getValue, cldrData, L10n, isNullOrUndefined, removeClass, addClass } from '@syncfusion/ej2-base';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { NumericTextBox } from '@syncfusion/ej2-inputs';\nimport { DatePicker } from '@syncfusion/ej2-calendars';\nimport { Button, RadioButton } from '@syncfusion/ej2-buttons';\nimport { EventHandler, classList } from '@syncfusion/ej2-base';\nimport { extractObjectFromRule, generate, generateSummary, getRecurrenceStringFromDate, getCalendarUtil } from './date-generator';\nimport { capitalizeFirstWord } from '../schedule/base/util';\nvar HEADER = 'e-editor';\nvar INPUTWARAPPER = 'e-input-wrapper';\nvar INPUTWARAPPERSIDE = 'e-input-wrapper-side';\nvar REPEATELEMENT = 'e-repeat-element';\nvar REPEATINTERVAL = 'e-repeat-interval';\nvar INTERVALCLASS = 'e-interval';\nvar DAYWRAPPER = 'e-days';\nvar WEEKWRAPPER = 'e-non-week';\nvar WEEKPOSITION = 'e-week-position';\nvar DAYPOSITION = 'e-day-position';\nvar YEAREXPANDERWRAPPER = 'e-year-expander';\nvar YEAREXPANDERELEMENT = 'e-year-expander-element';\nvar MONETHEXPANDERWRAPPER = 'e-month-expander';\nvar MONETHEXPANDWRAPPER = 'e-month-expand-wrapper';\nvar MONTHEXPANDERELEMENT = 'e-month-expander-element';\nvar MONTHEXPANDERCHECKBOXWRAPPER = 'e-month-expander-checkbox-wrapper';\nvar FORMLEFT = 'e-form-left';\nvar FORMRIGHT = 'e-form-right';\nvar MONTHDAYWRAPPER = 'e-month-day';\nvar MONTHEXPANNDERELEM = 'e-month-expander-wrapper';\nvar MONTHPOS = 'e-month-pos';\nvar MONTHWEEK = 'e-month-week';\nvar ENDON = 'e-end-on';\nvar MONTHEXPANDERLABEL = 'e-month-expander-label';\nvar WEEKEXPANDERLABEL = 'e-week-expander-label';\nvar ENDONLABEL = 'e-end-on-label';\nvar ENDONLEFT = 'e-end-on-left';\nvar MONTHDAYELEMENT = 'e-monthday-element';\nvar ENDONELEMENT = 'e-end-on-element';\nvar ENDONDATE = 'e-end-on-date';\nvar UNTILDATE = 'e-until-date';\nvar ENDONCOUNTWRAPPER = 'e-end-on-count';\nvar ENDONCOUNT = 'e-recurrence-count';\nvar HIDEWRAPPER = 'e-hide-recurrence-element';\nvar RTLCLASS = 'e-rtl';\nvar PRIMARY = 'e-primary';\nvar ACTIVE = 'e-active';\nvar RECURRENCETABLE = 'e-recurrence-table';\nvar REPEATCONTENT = 'e-repeat-content';\nvar REPEATCONTENTWRAPPER = 'e-repeat-content-wrapper';\nvar NONE = 'none';\nvar DAILY = 'daily';\nvar WEEKLY = 'weekly';\nvar MONTHLY = 'monthly';\nvar YEARLY = 'yearly';\nvar NEVER = 'never';\nvar UNTIL = 'until';\nvar COUNT = 'count';\nvar TEXTFIELD = 'text';\nvar VALUEFIELD = 'value';\nvar LAST = 'last';\nvar REPEAT = 'repeat';\nvar REPEATEVERY = 'repeatEvery';\nvar ON = 'on';\nvar END = 'end';\nvar RADIOLABEL = 'onDay';\nvar RULEUNTIL = 'UNTIL';\nvar RULEBYDAY = 'BYDAY';\nvar RULEBYMONTHDAY = 'BYMONTHDAY';\nvar RULEBYMONTH = 'BYMONTH';\nvar RULEINTERVAL = 'INTERVAL';\nvar RULECOUNT = 'COUNT';\nvar RULESETPOS = 'BYSETPOS';\nvar RULEFREQ = 'FREQ';\nvar RULEDAILY = 'DAILY';\nvar RULEWEEKLY = 'WEEKLY';\nvar RULEMONTHLY = 'MONTHLY';\nvar RULEYEARLY = 'YEARLY';\nvar RULESUNDAY = 'SU';\nvar RULEMONDAY = 'MO';\nvar RULETUESDAY = 'TU';\nvar RULEWEDNESDAY = 'WE';\nvar RULETHURSDAY = 'TH';\nvar RULEFRIDAY = 'FR';\nvar RULESATURDAY = 'SA';\nvar KEYSUNDAY = 'sun';\nvar KEYMONDAY = 'mon';\nvar KEYTUESDAY = 'tue';\nvar KEYWEDNESDAY = 'wed';\nvar KEYTHURSDAY = 'thu';\nvar KEYFRIDAY = 'fri';\nvar KEYSATURDAY = 'sat';\nvar EQUAL = '=';\nvar SEMICOLON = ';';\nvar COMMA = ',';\nvar FIRST = 'first';\nvar SECOND = 'second';\nvar THIRD = 'third';\nvar FOURTH = 'fourth';\nvar contentType = {\n none: '',\n daily: 'days',\n weekly: 'weeks',\n monthly: 'months',\n yearly: 'years'\n};\nvar valueData = {\n 'sun': RULESUNDAY,\n 'mon': RULEMONDAY,\n 'tue': RULETUESDAY,\n 'wed': RULEWEDNESDAY,\n 'thu': RULETHURSDAY,\n 'fri': RULEFRIDAY,\n 'sat': RULESATURDAY\n};\nvar neverClassList = [DAYWRAPPER, WEEKWRAPPER, ENDON, INTERVALCLASS, YEAREXPANDERWRAPPER, MONETHEXPANDERWRAPPER];\nvar weekClassList = [WEEKWRAPPER];\nvar monthClassList = [DAYWRAPPER, YEAREXPANDERWRAPPER];\nvar yearClassList = [DAYWRAPPER];\nvar dailyClassList = [DAYWRAPPER, WEEKWRAPPER, YEAREXPANDERWRAPPER, MONETHEXPANDERWRAPPER];\nvar noEndClassList = [ENDONDATE, ENDONCOUNTWRAPPER];\nvar endOnCountClassList = [ENDONDATE];\nvar endOnDateClassList = [ENDONCOUNTWRAPPER];\n/**\n * Represents the RecurrenceEditor component.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar RecurrenceEditor = /** @class */ (function (_super) {\n __extends(RecurrenceEditor, _super);\n /**\n * Constructor for creating the widget\n *\n * @param {RecurrenceEditorModel} options Accepts the recurrence editor model properties to initiate the rendering\n * @param {string | HTMLElement} element Accepts the DOM element reference\n */\n function RecurrenceEditor(options, element) {\n var _this = _super.call(this, options, element) || this;\n // eslint-disable-next-line @typescript-eslint/no-explicit-any\n _this.defaultLocale = {\n none: 'None',\n daily: 'Daily',\n weekly: 'Weekly',\n monthly: 'Monthly',\n month: 'Month',\n yearly: 'Yearly',\n never: 'Never',\n until: 'Until',\n count: 'Count',\n first: 'First',\n second: 'Second',\n third: 'Third',\n fourth: 'Fourth',\n last: 'Last',\n repeat: 'Repeat',\n repeatEvery: 'Repeat every',\n on: 'Repeat On',\n end: 'End',\n onDay: 'Day',\n days: 'Day(s)',\n weeks: 'Week(s)',\n months: 'Month(s)',\n years: 'Year(s)',\n every: 'every',\n summaryTimes: 'time(s)',\n summaryOn: 'on',\n summaryUntil: 'until',\n summaryRepeat: 'Repeats',\n summaryDay: 'day(s)',\n summaryWeek: 'week(s)',\n summaryMonth: 'month(s)',\n summaryYear: 'year(s)',\n monthWeek: 'Month Week',\n monthPosition: 'Month Position',\n monthExpander: 'Month Expander',\n yearExpander: 'Year Expander',\n repeatInterval: 'Repeat Interval'\n };\n _this.renderStatus = false;\n _this.dayButtons = [];\n _this.monthButtons = [];\n return _this;\n }\n RecurrenceEditor.prototype.startState = function (freq, endOn, startDate) {\n this.showFormElement();\n this.updateForm(freq);\n this.freshOnEndForm();\n this.updateEndOnForm(endOn);\n this.selectMonthDay(startDate);\n this.updateUntilDate(startDate);\n this.onMonthDay.setProperties({ checked: true });\n };\n RecurrenceEditor.prototype.preRender = function () {\n this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale);\n this.calendarUtil = getCalendarUtil(this.calendarMode);\n };\n RecurrenceEditor.prototype.applyCustomClass = function (cssClass) {\n if (cssClass) {\n addClass([this.element], cssClass.split(' '));\n }\n };\n RecurrenceEditor.prototype.initialize = function () {\n addClass([this.element], 'e-' + this.getModuleName());\n this.renderComponent();\n if (!isNullOrUndefined(this.value) && this.value !== '') {\n this.setRecurrenceRule(this.value);\n }\n else {\n if (!isNullOrUndefined(this.repeatType.value)) {\n this.startState(this.repeatType.value.toString().toUpperCase(), this.endTypes[0], this.startDate);\n this.updateForm(this.repeatType.value.toString());\n }\n if (this.selectedType > 0) {\n this.setProperties({ value: this.getRecurrenceRule() }, false);\n }\n }\n this.applyCustomClass(this.cssClass);\n };\n RecurrenceEditor.prototype.triggerChangeEvent = function () {\n var _this = this;\n if (this.renderStatus) {\n var value = this.getRecurrenceRule();\n this.trigger('change', { value: value }, function (args) { return _this.setProperties({ value: args.value }, false); });\n }\n };\n RecurrenceEditor.prototype.resetDayButton = function () {\n var elements = [].slice.call(this.element.querySelectorAll('.' + DAYWRAPPER + ' button'));\n elements.forEach(function (element) { return removeClass([element], [ACTIVE, PRIMARY]); });\n };\n RecurrenceEditor.prototype.daySelection = function (dayIndex) {\n this.resetDayButton();\n var days = [0, 1, 2, 3, 4, 5, 6];\n this.rotateArray(days, this.firstDayOfWeek);\n var element = this.element.querySelector('.' + DAYWRAPPER + ' button[data-index=\"' + days.indexOf(dayIndex) + '\"]');\n if (element) {\n addClass([element], [ACTIVE, PRIMARY]);\n }\n };\n RecurrenceEditor.prototype.rtlClass = function (status) {\n if (status) {\n addClass([this.element], RTLCLASS);\n }\n else {\n removeClass([this.element], RTLCLASS);\n }\n };\n RecurrenceEditor.prototype.updateUntilDate = function (date) {\n var tempDate = new Date(date.getTime());\n tempDate.setDate(tempDate.getDate() + 60);\n this.untilDateObj.setProperties({ value: tempDate });\n };\n RecurrenceEditor.prototype.selectMonthDay = function (date) {\n var weekday = [KEYSUNDAY, KEYMONDAY, KEYTUESDAY, KEYWEDNESDAY, KEYTHURSDAY, KEYFRIDAY, KEYSATURDAY];\n this.monthDate.setProperties({ value: this.calendarUtil.getDate(date) });\n this.monthWeekDays.setProperties({ value: valueData[weekday[date.getDay()]] });\n this.monthValue.setProperties({ value: '' + this.calendarUtil.getMonth(date) });\n this.monthWeekPos.setProperties({ value: this.getDayPosition(date) });\n this.daySelection(date.getDay());\n };\n RecurrenceEditor.prototype.updateForm = function (state) {\n var _this = this;\n this.repeatType.setProperties({ value: state });\n var end = this.element.querySelector('.' + ENDON);\n if (state === DAILY) {\n classList(end, [FORMLEFT], [FORMRIGHT]);\n }\n else {\n classList(end, [FORMRIGHT], [FORMLEFT]);\n }\n switch (state) {\n case NONE:\n neverClassList.forEach(function (className) { return addClass([_this.element.querySelector('.' + className)], HIDEWRAPPER); });\n break;\n case WEEKLY:\n weekClassList.forEach(function (className) { return addClass([_this.element.querySelector('.' + className)], HIDEWRAPPER); });\n break;\n case MONTHLY:\n monthClassList.forEach(function (className) { return addClass([_this.element.querySelector('.' + className)], HIDEWRAPPER); });\n break;\n case YEARLY:\n yearClassList.forEach(function (className) { return addClass([_this.element.querySelector('.' + className)], HIDEWRAPPER); });\n break;\n case DAILY:\n dailyClassList.forEach(function (className) { return addClass([_this.element.querySelector('.' + className)], HIDEWRAPPER); });\n break;\n }\n };\n RecurrenceEditor.prototype.updateEndOnForm = function (state) {\n var _this = this;\n this.endType.setProperties({ value: state });\n switch (state) {\n case NEVER:\n noEndClassList.forEach(function (className) { return addClass([_this.element.querySelector('.' + className)], HIDEWRAPPER); });\n break;\n case UNTIL:\n endOnDateClassList.forEach(function (className) { return addClass([_this.element.querySelector('.' + className)], HIDEWRAPPER); });\n break;\n case COUNT:\n endOnCountClassList.forEach(function (className) { return addClass([_this.element.querySelector('.' + className)], HIDEWRAPPER); });\n break;\n }\n };\n RecurrenceEditor.prototype.freshOnEndForm = function () {\n var _this = this;\n noEndClassList.forEach(function (className) {\n var element = _this.element.querySelector('.' + className);\n if (element) {\n removeClass([element], HIDEWRAPPER);\n }\n });\n };\n RecurrenceEditor.prototype.showFormElement = function () {\n var _this = this;\n neverClassList.forEach(function (className) {\n var hideElement = _this.element.querySelector('.' + className);\n if (hideElement) {\n removeClass([hideElement], HIDEWRAPPER);\n }\n });\n };\n RecurrenceEditor.prototype.renderDropdowns = function () {\n var _this = this;\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n this.repeatType = new DropDownList({\n //set the data to dataSource property\n dataSource: this.getRepeatData(),\n floatLabelType: 'Always',\n enableRtl: this.enableRtl,\n index: this.selectedType,\n fields: {\n text: TEXTFIELD,\n value: VALUEFIELD\n },\n placeholder: this.localeObj.getConstant(REPEAT),\n htmlAttributes: { 'title': this.localeObj.getConstant(REPEAT) },\n change: function (args) {\n self.setProperties({ selectedType: _this.frequencies.indexOf(args.value) }, false);\n self.element.querySelector('.' + REPEATCONTENT).innerHTML =\n self.localeObj.getConstant(contentType[args.value]);\n self.showFormElement();\n self.updateForm(args.value);\n self.resetFormValues();\n self.triggerChangeEvent();\n }\n });\n // set placeholder to DropDownList input element\n this.repeatType.appendTo(this.element.querySelector('.' + REPEATELEMENT));\n this.endType = new DropDownList({\n dataSource: this.getEndData(),\n popupWidth: this.getPopupWidth(),\n floatLabelType: 'Always',\n placeholder: this.localeObj.getConstant(END),\n enableRtl: this.enableRtl,\n index: 1,\n fields: {\n text: TEXTFIELD,\n value: VALUEFIELD\n },\n change: function (args) {\n self.freshOnEndForm();\n self.updateEndOnForm(args.value);\n self.resetFormValues();\n self.triggerChangeEvent();\n }\n });\n this.endType.appendTo(this.element.querySelector('.' + ENDONELEMENT));\n var renderDropDownList = function (dropDownData) {\n return new DropDownList({\n dataSource: dropDownData,\n popupWidth: _this.getPopupWidth(),\n enableRtl: _this.enableRtl,\n fields: {\n text: TEXTFIELD,\n value: VALUEFIELD\n },\n index: 1,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n change: function (args) {\n self.onWeekDay.setProperties({ checked: true });\n self.resetFormValues();\n self.triggerChangeEvent();\n }\n });\n };\n this.monthWeekPos = renderDropDownList(this.getMonthPosData());\n this.monthWeekPos.appendTo(this.element.querySelector('.' + MONTHPOS));\n this.monthWeekDays = renderDropDownList(this.getDayData('wide'));\n this.monthWeekDays.appendTo(this.element.querySelector('.' + MONTHWEEK));\n this.monthValue = new DropDownList({\n dataSource: this.getMonthData(),\n fields: {\n text: TEXTFIELD,\n value: VALUEFIELD\n },\n enableRtl: this.enableRtl,\n index: 7,\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n change: function (args) {\n self.resetFormValues();\n self.triggerChangeEvent();\n }\n });\n this.monthValue.appendTo(this.element.querySelector('.' + YEAREXPANDERELEMENT));\n };\n RecurrenceEditor.prototype.setDefaultValue = function () {\n var formelement = [].slice.call(this.element.querySelectorAll('.e-control .e-numerictextbox'));\n for (var _i = 0, formelement_1 = formelement; _i < formelement_1.length; _i++) {\n var element = formelement_1[_i];\n var instance = element.ej2_instances[0];\n if (instance.element.classList.contains(REPEATINTERVAL)) {\n instance.value = 1;\n instance.dataBind();\n }\n else if (instance.element.classList.contains(ENDONCOUNT)) {\n instance.value = 10;\n instance.dataBind();\n }\n }\n };\n RecurrenceEditor.prototype.resetFormValues = function () {\n var recurreneElement = [].slice.call(this.element.querySelectorAll('.e-control [type=\"text\"]'));\n for (var _i = 0, recurreneElement_1 = recurreneElement; _i < recurreneElement_1.length; _i++) {\n var element = recurreneElement_1[_i];\n var instance = void 0;\n if (element.classList.contains('e-datepicker')) {\n instance = element.ej2_instances[0];\n if (instance.value) {\n // eslint-disable-next-line no-self-assign\n instance.value = instance.value;\n instance.dataBind();\n }\n else {\n this.updateUntilDate(this.startDate);\n }\n }\n else if (element.classList.contains('e-dropdownlist')) {\n instance = element.ej2_instances[0];\n instance.index = instance.index || 0;\n instance.dataBind();\n }\n else if (element.classList.contains('e-numerictextbox')) {\n instance = element.ej2_instances[0];\n var value = void 0;\n if (instance.element.classList.contains(REPEATINTERVAL)) {\n value = 1;\n }\n else if (instance.element.classList.contains(ENDONCOUNT)) {\n value = 10;\n }\n else {\n value = this.startDate.getDate();\n }\n instance.value = instance.value || value;\n instance.dataBind();\n }\n }\n };\n RecurrenceEditor.prototype.getPopupWidth = function () {\n return Browser.isDevice ? '100%' : 'auto';\n };\n RecurrenceEditor.prototype.renderDatePickers = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n this.untilDateObj = new DatePicker({\n firstDayOfWeek: this.firstDayOfWeek,\n enableRtl: this.enableRtl,\n locale: this.locale,\n min: this.minDate,\n max: this.maxDate,\n format: (isNullOrUndefined(this.dateFormat) ? this.getFormat('dateFormats') : this.dateFormat),\n change: function (args) {\n if (args.value) {\n self.triggerChangeEvent();\n }\n }\n });\n this.untilDateObj.appendTo(this.element.querySelector('.' + UNTILDATE));\n };\n RecurrenceEditor.prototype.getFormat = function (formatType) {\n var format;\n if (this.locale === 'en' || this.locale === 'en-US') {\n format = getValue(formatType + '.short', getDefaultDateObject(this.getCalendarMode()));\n }\n else {\n format = getValue('main.' + '' + this.locale + '.dates.calendars.' + this.getCalendarMode() + '.' + formatType + '.short', cldrData);\n }\n return format;\n };\n RecurrenceEditor.prototype.dayButtonRender = function () {\n var _this = this;\n var btns = [].slice.call(this.element.querySelectorAll('.' + DAYWRAPPER + ' button'));\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n for (var _i = 0, btns_1 = btns; _i < btns_1.length; _i++) {\n var btn = btns_1[_i];\n var button = new Button({ isToggle: true, enableRtl: this.enableRtl }, btn);\n this.dayButtons.push(button);\n EventHandler.add(btn, 'click', function (args) {\n var btns = [].slice.call(_this.element.querySelectorAll('.' + DAYWRAPPER + ' button.' + PRIMARY));\n var element = args.target;\n if (!element.classList.contains(PRIMARY)) {\n addClass([element], PRIMARY);\n self.triggerChangeEvent();\n }\n else if (btns.length > 1) {\n removeClass([element], PRIMARY);\n self.triggerChangeEvent();\n }\n });\n }\n };\n RecurrenceEditor.prototype.radioButtonRender = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n this.onMonthDay = new RadioButton({\n label: this.localeObj.getConstant(RADIOLABEL),\n enableRtl: this.enableRtl,\n name: 'monthType',\n value: 'day',\n change: function () {\n self.resetFormValues();\n self.triggerChangeEvent();\n }\n });\n this.onMonthDay.appendTo(this.element.querySelector('.' + MONTHEXPANDERELEMENT));\n this.monthButtons.push(this.onMonthDay);\n this.onWeekDay = new RadioButton({\n label: this.localeObj.getConstant('monthExpander'),\n cssClass: 'e-month-type',\n name: 'monthType',\n enableRtl: this.enableRtl,\n value: 'daypos',\n change: function () {\n self.resetFormValues();\n self.triggerChangeEvent();\n }\n });\n this.onWeekDay.appendTo(this.element.querySelector('.' + MONTHEXPANNDERELEM));\n this.monthButtons.push(this.onWeekDay);\n };\n RecurrenceEditor.prototype.numericTextboxRender = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n this.recurrenceCount = new NumericTextBox({\n value: 10,\n format: '#',\n enableRtl: this.enableRtl,\n min: 1,\n max: 999,\n change: function () {\n self.triggerChangeEvent();\n }\n });\n this.recurrenceCount.appendTo(this.element.querySelector('.' + ENDONCOUNT));\n this.monthDate = new NumericTextBox({\n value: 1,\n format: '#',\n enableRtl: this.enableRtl,\n min: 1,\n max: 31,\n change: function () {\n self.onMonthDay.setProperties({ checked: true });\n self.triggerChangeEvent();\n }\n });\n this.monthDate.appendTo(this.element.querySelector('.' + MONTHDAYWRAPPER));\n this.repeatInterval = new NumericTextBox({\n value: 1,\n format: '#',\n min: 1,\n max: 999,\n enableRtl: this.enableRtl,\n floatLabelType: 'Always',\n placeholder: this.localeObj.getConstant(REPEATEVERY),\n change: function () {\n self.triggerChangeEvent();\n }\n });\n this.repeatInterval.appendTo(this.element.querySelector('.' + REPEATINTERVAL));\n };\n RecurrenceEditor.prototype.renderComponent = function () {\n this.setTemplate();\n this.renderDropdowns();\n this.renderDatePickers();\n this.dayButtonRender();\n this.radioButtonRender();\n this.numericTextboxRender();\n };\n RecurrenceEditor.prototype.rotateArray = function (data, count) {\n var temp;\n for (var index = 0; index < count; index++) {\n temp = data.shift();\n data.push(temp);\n }\n };\n RecurrenceEditor.prototype.getEndData = function () {\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n var dataSource = [];\n this.endTypes.forEach(function (data) {\n dataSource.push({ text: self.localeObj.getConstant(data), value: data });\n });\n return dataSource;\n };\n RecurrenceEditor.prototype.getDayPosition = function (date) {\n var temp = new Date(date.getTime());\n var endDate = new Date(date.getTime());\n var day = date.getDay();\n var positionCollection = [];\n temp = this.calendarUtil.getMonthStartDate(temp);\n endDate = this.calendarUtil.getMonthEndDate(endDate);\n while (temp < endDate) {\n if (temp.getDay() === day) {\n positionCollection.push(temp.getTime());\n }\n temp.setDate(temp.getDate() + 1);\n }\n if (positionCollection.indexOf(date.getTime()) === positionCollection.length - 1) {\n return -1;\n }\n return (positionCollection.indexOf(date.getTime()) + 1);\n };\n RecurrenceEditor.prototype.getRepeatData = function () {\n var data = [];\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n this.frequencies.forEach(function (element) {\n var textValue = (element === NONE) ? NEVER : element;\n data.push({ text: self.localeObj.getConstant(textValue), value: element });\n });\n return data;\n };\n RecurrenceEditor.prototype.getMonthPosData = function () {\n var monthpos = [FIRST, SECOND, THIRD, FOURTH, LAST];\n var monthposValue = {\n first: 1,\n second: 2,\n third: 3,\n fourth: 4,\n last: -1\n };\n // eslint-disable-next-line @typescript-eslint/no-this-alias\n var self = this;\n var dataSource = [];\n monthpos.forEach(function (data) {\n dataSource.push({ text: self.localeObj.getConstant(data), value: monthposValue[\"\" + data] });\n });\n return dataSource;\n };\n RecurrenceEditor.prototype.getDayData = function (format) {\n var weekday = [KEYSUNDAY, KEYMONDAY, KEYTUESDAY, KEYWEDNESDAY, KEYTHURSDAY, KEYFRIDAY, KEYSATURDAY];\n var dayData = [];\n var cldrObj;\n this.rotateArray(weekday, this.firstDayOfWeek);\n if (this.locale === 'en' || this.locale === 'en-US') {\n var nameSpaceString = 'days.stand-alone.';\n cldrObj = (getValue(nameSpaceString + format, getDefaultDateObject(this.getCalendarMode())));\n }\n else {\n var nameSpaceString = 'main.' + '' + this.locale + '.dates.calendars.' + this.getCalendarMode() + '.days.stand-alone.' + format;\n cldrObj = (getValue(nameSpaceString, cldrData));\n }\n for (var _i = 0, weekday_1 = weekday; _i < weekday_1.length; _i++) {\n var obj = weekday_1[_i];\n var day = getValue(obj, cldrObj);\n dayData.push({ text: format === 'narrow' ? day : capitalizeFirstWord(day, 'single'), value: valueData[\"\" + obj] });\n }\n return dayData;\n };\n RecurrenceEditor.prototype.getMonthData = function () {\n var monthData = [];\n var cldrObj;\n if (this.locale === 'en' || this.locale === 'en-US') {\n var nameSpaceString = 'months.stand-alone.wide';\n cldrObj = (getValue(nameSpaceString, getDefaultDateObject(this.getCalendarMode())));\n }\n else {\n var nameSpaceString = 'main.' + '' + this.locale + '.dates.calendars.' + this.getCalendarMode() + '.months.stand-alone.wide';\n cldrObj = (getValue(nameSpaceString, cldrData));\n }\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n monthData.push({\n text: capitalizeFirstWord(getValue(obj, cldrObj), 'single'),\n value: obj\n });\n }\n return monthData;\n };\n RecurrenceEditor.prototype.setTemplate = function () {\n var dayData = this.getDayData('narrow');\n var fullDay = this.getDayData('wide');\n var labelId = this.element.id + '_' + 'end_label';\n this.element.innerHTML = '
' +\n '
' +\n '' +\n '
' +\n '' +\n '' +\n '
' +\n '
' + this.localeObj.getConstant(ON) + '
' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '' +\n '
' +\n '
' +\n '
' + this.localeObj.getConstant(ON) + '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '' +\n '' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '' +\n '
' +\n '' +\n '
' +\n '
' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
' +\n '' +\n '
' +\n '
';\n };\n RecurrenceEditor.prototype.getSelectedDaysData = function () {\n var ruleData = RULEBYDAY + EQUAL;\n var elements = [].slice.call(this.element.querySelectorAll('.' + DAYWRAPPER + ' button.' + PRIMARY));\n var weekday = [RULESUNDAY, RULEMONDAY, RULETUESDAY, RULEWEDNESDAY, RULETHURSDAY, RULEFRIDAY, RULESATURDAY];\n this.rotateArray(weekday, this.firstDayOfWeek);\n for (var index = 0; index < elements.length; index++) {\n ruleData += weekday[parseInt(elements[parseInt(index.toString(), 10)].getAttribute('data-index'), 10)] + (index === (elements.length - 1) ? '' : COMMA);\n }\n return ruleData + SEMICOLON;\n };\n RecurrenceEditor.prototype.getSelectedMonthData = function () {\n var ruleData;\n if (this.onWeekDay.checked) {\n ruleData = RULEBYDAY + EQUAL + this.monthWeekDays.value + SEMICOLON\n + RULESETPOS + EQUAL + this.monthWeekPos.value + SEMICOLON;\n }\n else {\n ruleData = RULEBYMONTHDAY + EQUAL + this.monthDate.value + SEMICOLON;\n }\n return ruleData;\n };\n RecurrenceEditor.prototype.getIntervalData = function () {\n return RULEINTERVAL + EQUAL + this.repeatInterval.value + SEMICOLON;\n };\n RecurrenceEditor.prototype.getEndOnCount = function () {\n return RULECOUNT + EQUAL + this.recurrenceCount.value + SEMICOLON;\n };\n RecurrenceEditor.prototype.getYearMonthRuleData = function () {\n return RULEBYMONTH + EQUAL + this.monthValue.value + SEMICOLON;\n };\n RecurrenceEditor.prototype.updateWeekButton = function (keys) {\n var weekday = [RULESUNDAY, RULEMONDAY, RULETUESDAY, RULEWEDNESDAY, RULETHURSDAY, RULEFRIDAY, RULESATURDAY];\n this.rotateArray(weekday, this.firstDayOfWeek);\n for (var _i = 0, _a = this.dayButtons; _i < _a.length; _i++) {\n var obj = _a[_i];\n var index = parseInt(obj.element.getAttribute('data-index'), 10);\n if (keys.indexOf(weekday[parseInt(index.toString(), 10)]) !== -1) {\n obj.setProperties({ isPrimary: true });\n }\n else {\n obj.setProperties({ isPrimary: false });\n }\n }\n };\n RecurrenceEditor.prototype.updateMonthUI = function () {\n if (this.ruleObject.monthDay.length) {\n this.monthDate.setProperties({ value: this.ruleObject.monthDay[0] });\n this.onMonthDay.setProperties({ checked: true });\n }\n else {\n this.onWeekDay.setProperties({ checked: true });\n this.monthWeekPos.setProperties({ value: this.ruleObject.setPosition });\n for (var _i = 0, _a = Object.keys(valueData); _i < _a.length; _i++) {\n var key = _a[_i];\n if (valueData[\"\" + key] === this.ruleObject.day[0]) {\n this.monthWeekDays.setProperties({ value: this.ruleObject.day[0] });\n break;\n }\n }\n }\n };\n RecurrenceEditor.prototype.updateUI = function (repeat, state) {\n this.repeatInterval.setProperties({ value: this.ruleObject.interval });\n switch (state) {\n case UNTIL:\n this.untilDateObj.setProperties({ value: this.ruleObject.until });\n break;\n case COUNT:\n this.recurrenceCount.setProperties({ value: this.ruleObject.count });\n break;\n }\n switch (repeat) {\n case WEEKLY:\n this.updateWeekButton(this.ruleObject.day);\n break;\n case YEARLY:\n this.monthValue.setProperties({ index: (this.ruleObject.month[0] - 1) });\n this.updateMonthUI();\n break;\n case MONTHLY:\n this.updateMonthUI();\n break;\n }\n };\n RecurrenceEditor.prototype.getUntilData = function () {\n if (!this.untilDateObj.value) {\n return '';\n }\n var tempStr = getRecurrenceStringFromDate(this.untilDateObj.value);\n return RULEUNTIL + EQUAL + tempStr + SEMICOLON;\n };\n RecurrenceEditor.prototype.destroyComponents = function () {\n if (!this.recurrenceCount.isDestroyed) {\n this.recurrenceCount.destroy();\n this.recurrenceCount = null;\n }\n if (!this.monthDate.isDestroyed) {\n this.monthDate.destroy();\n this.monthDate = null;\n }\n if (!this.repeatInterval.isDestroyed) {\n this.repeatInterval.destroy();\n this.repeatInterval = null;\n }\n if (!this.untilDateObj.isDestroyed) {\n this.untilDateObj.destroy();\n this.untilDateObj = null;\n }\n if (!this.repeatType.isDestroyed) {\n this.repeatType.destroy();\n this.repeatType = null;\n }\n if (!this.endType.isDestroyed) {\n this.endType.destroy();\n this.endType = null;\n }\n if (!this.monthWeekPos.isDestroyed) {\n this.monthWeekPos.destroy();\n this.monthWeekPos = null;\n }\n if (!this.monthWeekDays.isDestroyed) {\n this.monthWeekDays.destroy();\n this.monthWeekDays = null;\n }\n if (!this.monthValue.isDestroyed) {\n this.monthValue.destroy();\n this.monthValue = null;\n }\n if (!this.onMonthDay.isDestroyed) {\n this.onMonthDay.destroy();\n this.onMonthDay = null;\n }\n if (!this.onWeekDay.isDestroyed) {\n this.onWeekDay.destroy();\n this.onWeekDay = null;\n }\n this.dayButtons.forEach(function (element) {\n if (!element.isDestroyed) {\n element.destroy();\n }\n });\n this.dayButtons = [];\n this.monthButtons.forEach(function (element) {\n if (!element.isDestroyed) {\n element.destroy();\n }\n });\n this.monthButtons = [];\n };\n RecurrenceEditor.prototype.resetFields = function () {\n this.startState(NONE, this.endTypes[0], this.startDate);\n this.setDefaultValue();\n };\n RecurrenceEditor.prototype.updateRuleUntilDate = function (startDate) {\n if (this.untilDateObj.value && startDate) {\n var untilDate = this.untilDateObj.value;\n var newUntilDate = new Date(untilDate.getFullYear(), untilDate.getMonth(), untilDate.getDate(), startDate.getHours(), startDate.getMinutes(), startDate.getMilliseconds());\n this.untilDateObj.setProperties({ value: newUntilDate });\n }\n };\n RecurrenceEditor.prototype.getCalendarMode = function () {\n return this.calendarMode.toLowerCase();\n };\n RecurrenceEditor.prototype.getRuleSummary = function (rule) {\n if (rule === void 0) { rule = this.getRecurrenceRule(); }\n return generateSummary(rule, this.localeObj, this.locale, this.calendarMode);\n };\n RecurrenceEditor.prototype.getRecurrenceDates = function (startDate, rule, excludeDate, maximumCount, viewDate) {\n viewDate = isNullOrUndefined(viewDate) ? this.startDate : viewDate;\n return generate(startDate, rule, excludeDate, this.firstDayOfWeek, maximumCount, viewDate, this.calendarMode);\n };\n RecurrenceEditor.prototype.getRecurrenceRule = function () {\n var ruleData = RULEFREQ + EQUAL;\n switch (this.repeatType.value) {\n case DAILY:\n ruleData += RULEDAILY + SEMICOLON;\n break;\n case WEEKLY:\n ruleData += RULEWEEKLY + SEMICOLON + this.getSelectedDaysData();\n break;\n case MONTHLY:\n ruleData += RULEMONTHLY + SEMICOLON + this.getSelectedMonthData();\n break;\n case YEARLY:\n ruleData += RULEYEARLY + SEMICOLON + this.getSelectedMonthData() + this.getYearMonthRuleData();\n break;\n case NONE:\n return '';\n }\n ruleData += this.getIntervalData();\n switch (this.endType.value) {\n case UNTIL:\n ruleData += this.getUntilData();\n break;\n case COUNT:\n ruleData += this.getEndOnCount();\n break;\n }\n return ruleData;\n };\n RecurrenceEditor.prototype.setRecurrenceRule = function (rule, startDate) {\n if (startDate === void 0) { startDate = this.startDate; }\n if (!rule) {\n this.repeatType.setProperties({ value: NONE });\n return;\n }\n this.renderStatus = false;\n this.ruleObject = extractObjectFromRule(rule);\n var endon = this.ruleObject.count ? COUNT : (this.ruleObject.until ? UNTIL : NEVER);\n switch (this.ruleObject.freq) {\n case RULEDAILY:\n this.startState(DAILY, endon, startDate);\n this.updateUI(DAILY, endon);\n break;\n case RULEWEEKLY:\n this.startState(WEEKLY, endon, startDate);\n this.updateUI(WEEKLY, endon);\n break;\n case RULEMONTHLY:\n this.startState(MONTHLY, endon, startDate);\n this.updateUI(MONTHLY, endon);\n break;\n case RULEYEARLY:\n this.startState(YEARLY, endon, startDate);\n this.updateUI(YEARLY, endon);\n break;\n }\n this.renderStatus = true;\n this.triggerChangeEvent();\n };\n RecurrenceEditor.prototype.detachInputs = function () {\n var inputElements = [].slice.call(this.element.querySelectorAll('input'));\n for (var _i = 0, inputElements_1 = inputElements; _i < inputElements_1.length; _i++) {\n var element = inputElements_1[_i];\n detach(element);\n }\n };\n /**\n * Destroys the widget.\n *\n * @returns {void}\n */\n RecurrenceEditor.prototype.destroy = function () {\n if (!this.isDestroyed) {\n this.destroyComponents();\n _super.prototype.destroy.call(this);\n var removeClasses = ['e-' + this.getModuleName()];\n if (this.cssClass) {\n removeClasses = removeClasses.concat(this.cssClass.split(' '));\n }\n removeClass([this.element], removeClasses);\n this.detachInputs();\n while (this.element.firstElementChild) {\n this.element.removeChild(this.element.firstElementChild);\n }\n }\n };\n /**\n * Get component name.\n *\n * @returns {string} Returns the module name\n * @private\n */\n RecurrenceEditor.prototype.getModuleName = function () {\n return 'recurrenceeditor';\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persisted state\n */\n RecurrenceEditor.prototype.getPersistData = function () {\n return this.addOnPersist([]);\n };\n /**\n * Initialize the control rendering\n *\n * @returns {void}\n * @private\n */\n RecurrenceEditor.prototype.render = function () {\n this.initialize();\n this.rtlClass(this.enableRtl);\n this.renderStatus = true;\n this.renderComplete();\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @param {RecurrenceEditorModel} newProp Accepts the changed properties new values\n * @param {RecurrenceEditorModel} oldProp Accepts the changed properties old values\n * @returns {void}\n * @private\n */\n RecurrenceEditor.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'startDate':\n this.selectMonthDay(newProp.startDate);\n this.updateUntilDate(newProp.startDate);\n this.endType.setProperties({ index: 0 });\n break;\n case 'enableRtl':\n this.rtlClass(newProp.enableRtl);\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'selectedType':\n this.repeatType.setProperties({ index: this.selectedType });\n break;\n case 'minDate':\n this.untilDateObj.setProperties({ minDate: this.minDate });\n break;\n case 'maxDate':\n this.untilDateObj.setProperties({ maxDate: this.maxDate });\n break;\n case 'value':\n if (this.getRecurrenceRule() !== this.value) {\n this.setRecurrenceRule(this.value);\n }\n break;\n case 'calendarMode':\n this.calendarMode = newProp.calendarMode;\n this.calendarUtil = getCalendarUtil(newProp.calendarMode);\n break;\n case 'locale':\n case 'frequencies':\n case 'firstDayOfWeek':\n case 'endTypes':\n this.refresh();\n break;\n case 'dateFormat':\n this.untilDateObj.setProperties({ format: newProp.dateFormat });\n break;\n }\n }\n };\n __decorate([\n Property(['none', 'daily', 'weekly', 'monthly', 'yearly'])\n ], RecurrenceEditor.prototype, \"frequencies\", void 0);\n __decorate([\n Property(['never', 'until', 'count'])\n ], RecurrenceEditor.prototype, \"endTypes\", void 0);\n __decorate([\n Property(0)\n ], RecurrenceEditor.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property(new Date())\n ], RecurrenceEditor.prototype, \"startDate\", void 0);\n __decorate([\n Property()\n ], RecurrenceEditor.prototype, \"dateFormat\", void 0);\n __decorate([\n Property('Gregorian')\n ], RecurrenceEditor.prototype, \"calendarMode\", void 0);\n __decorate([\n Property()\n ], RecurrenceEditor.prototype, \"cssClass\", void 0);\n __decorate([\n Property()\n ], RecurrenceEditor.prototype, \"value\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], RecurrenceEditor.prototype, \"minDate\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], RecurrenceEditor.prototype, \"maxDate\", void 0);\n __decorate([\n Property(0)\n ], RecurrenceEditor.prototype, \"selectedType\", void 0);\n __decorate([\n Event()\n ], RecurrenceEditor.prototype, \"change\", void 0);\n RecurrenceEditor = __decorate([\n NotifyPropertyChanges\n ], RecurrenceEditor);\n return RecurrenceEditor;\n}(Component));\nexport { RecurrenceEditor };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { createElement, isNullOrUndefined, addClass, remove, EventHandler, extend, append, detach } from '@syncfusion/ej2-base';\nimport { cldrData, removeClass, getValue, getDefaultDateObject, closest, SanitizeHtmlHelper, initializeCSPTemplate } from '@syncfusion/ej2-base';\nimport { Query, Deferred } from '@syncfusion/ej2-data';\nimport { CheckBox, Button } from '@syncfusion/ej2-buttons';\nimport { Dialog } from '@syncfusion/ej2-popups';\nimport { DropDownList, MultiSelect } from '@syncfusion/ej2-dropdowns';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { DateTimePicker } from '@syncfusion/ej2-calendars';\nimport { FieldValidator } from './form-validator';\nimport { RecurrenceEditor } from '../../recurrence-editor/recurrence-editor';\nimport * as cls from '../base/css-constant';\nimport * as event from '../base/constant';\nimport * as util from '../base/util';\nvar EVENT_FIELD = 'e-field';\nvar REPEAT_CONTAINER_CLASS = 'e-recurrence-container';\nvar REPEAT_BUTTON_ICON_CLASS = 'e-recurrence-edit';\nvar REPEAT_BUTTON_CLASS = 'e-recurrence-edit-button';\nvar REPEAT_DIALOG_CLASS = 'e-recurrence-dialog';\nvar HIDE_STYLE_CLASS = 'e-hide';\n/**\n * Event editor window\n */\nvar EventWindow = /** @class */ (function () {\n function EventWindow(parent) {\n this.parent = parent;\n this.l10n = this.parent.localeObj;\n this.fields = this.parent.eventFields;\n this.eventWindowTime = { startTime: new Date(), endTime: new Date() };\n this.renderEventWindow();\n }\n EventWindow.prototype.renderEventWindow = function () {\n this.element = createElement('div', { id: this.parent.element.id + '_dialog_wrapper' });\n this.parent.element.appendChild(this.element);\n var dialogModel = {\n animationSettings: { effect: 'Zoom' },\n content: this.getEventWindowContent(),\n cssClass: cls.EVENT_WINDOW_DIALOG_CLASS,\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n height: this.parent.isAdaptive ? '100%' : 'auto',\n minHeight: '300px',\n isModal: true,\n showCloseIcon: this.parent.isAdaptive ? false : true,\n target: document.body,\n visible: false,\n width: '500px',\n beforeOpen: this.onBeforeOpen.bind(this),\n beforeClose: this.onBeforeClose.bind(this)\n };\n if (this.parent.isAdaptive) {\n dialogModel.cssClass = cls.EVENT_WINDOW_DIALOG_CLASS + ' ' + cls.DEVICE_CLASS;\n if (!this.parent.editorHeaderTemplate) {\n dialogModel.header = '
' +\n this.l10n.getConstant('newEvent') + '
';\n }\n }\n else {\n if (!this.parent.editorFooterTemplate) {\n this.renderDialogButtons(dialogModel);\n }\n if (!this.parent.editorHeaderTemplate) {\n dialogModel.header = '
' + this.l10n.getConstant('newEvent') + '
';\n }\n }\n this.dialogObject = new Dialog(dialogModel, this.element);\n if (this.dialogObject.element.querySelector('.e-dlg-closeicon-btn')) {\n this.dialogObject.element.querySelector('.e-dlg-closeicon-btn').setAttribute('title', this.l10n.getConstant('close'));\n }\n this.addEventHandlers();\n addClass([this.element.parentElement], cls.EVENT_WINDOW_DIALOG_CLASS + '-container');\n EventHandler.add(this.dialogObject.element, 'keydown', this.preventEventSave, this);\n this.applyFormValidation();\n };\n EventWindow.prototype.renderDialogButtons = function (dialogButton) {\n dialogButton.buttons = [{\n buttonModel: {\n content: this.l10n.getConstant('deleteButton'), cssClass: cls.DELETE_EVENT_CLASS,\n disabled: !this.parent.eventSettings.allowDeleting || this.parent.readonly\n },\n click: this.eventDelete.bind(this)\n }, {\n buttonModel: {\n content: this.l10n.getConstant('saveButton'), cssClass: 'e-primary ' + cls.EVENT_WINDOW_SAVE_BUTTON_CLASS,\n isPrimary: true, disabled: !this.parent.eventSettings.allowAdding || this.parent.readonly\n },\n click: this.eventSave.bind(this)\n }, {\n buttonModel: { cssClass: cls.EVENT_WINDOW_CANCEL_BUTTON_CLASS, content: this.l10n.getConstant('cancelButton') },\n click: this.dialogClose.bind(this)\n }];\n };\n EventWindow.prototype.addEventHandlers = function () {\n var backIcon = this.element.querySelector('.' + cls.EVENT_WINDOW_BACK_ICON_CLASS);\n var saveIcon = this.element.querySelector('.' + cls.EVENT_WINDOW_SAVE_ICON_CLASS);\n if (this.parent.isAdaptive && !isNullOrUndefined(backIcon) && !isNullOrUndefined(saveIcon)) {\n EventHandler.add(backIcon, 'click', this.dialogClose, this);\n EventHandler.add(saveIcon, 'click', this.eventSave, this);\n }\n };\n EventWindow.prototype.refresh = function () {\n this.destroy(true);\n this.renderEventWindow();\n };\n EventWindow.prototype.refreshRecurrenceEditor = function () {\n if (this.recurrenceEditor) {\n var recurrenceEditor = this.recurrenceEditor.element;\n this.recurrenceEditor.destroy();\n this.createRecurrenceEditor(recurrenceEditor);\n }\n };\n EventWindow.prototype.setRecurrenceEditor = function (recurrenceEditor) {\n if (this.parent.editorTemplate) {\n this.recurrenceEditor = recurrenceEditor;\n }\n };\n EventWindow.prototype.openEditor = function (data, type, isEventData, repeatType) {\n this.parent.currentAction = type;\n this.parent.removeNewEventElement();\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide(true);\n }\n this.parent.inlineModule.removeInlineAppointmentElement();\n if (type === 'Add') {\n var eventObj = {};\n this.cellClickAction = !isEventData;\n this.parent.activeCellsData = data;\n var event_1 = data;\n if (this.cellClickAction) {\n this.convertToEventData(event_1, eventObj);\n }\n else {\n this.parent.activeCellsData = {\n startTime: (event_1.startTime || event_1[this.fields.startTime]),\n endTime: (event_1.endTime || event_1[this.fields.endTime]),\n isAllDay: (event_1.isAllDay || event_1[this.fields.isAllDay]),\n element: event_1.element,\n groupIndex: event_1.groupIndex\n };\n eventObj = event_1;\n }\n data = eventObj;\n }\n if (!isNullOrUndefined(this.parent.editorHeaderTemplate)) {\n this.parent.resetTemplates(['editorHeaderTemplate']);\n if (this.parent.isAdaptive && !this.parent.editorFooterTemplate) {\n this.dialogObject.header = this.createAdaptiveHeaderElement(data);\n }\n else {\n this.dialogObject.header = this.getDialogHeader(data);\n }\n }\n if (!isNullOrUndefined(this.parent.editorFooterTemplate)) {\n this.parent.resetTemplates(['editorFooterTemplate']);\n this.dialogObject.footerTemplate = this.getDialogFooter(data);\n }\n if (!isNullOrUndefined(this.parent.editorHeaderTemplate) || !isNullOrUndefined(this.parent.editorFooterTemplate)) {\n this.dialogObject.dataBind();\n this.addEventHandlers();\n }\n if (!isNullOrUndefined(this.parent.editorTemplate)) {\n this.renderFormElements(this.element.querySelector('.e-schedule-form'), data);\n }\n if (!this.parent.isAdaptive && isNullOrUndefined(this.parent.editorTemplate)) {\n removeClass([this.dialogObject.element.querySelector('.e-recurrenceeditor')], cls.DISABLE_CLASS);\n }\n if (this.recurrenceEditor) {\n this.recurrenceEditor.firstDayOfWeek = this.parent.activeViewOptions.firstDayOfWeek;\n }\n switch (type) {\n case 'Add':\n this.onCellDetailsUpdate(data, repeatType);\n break;\n case 'Save':\n case 'EditOccurrence':\n case 'EditSeries':\n case 'EditFollowingEvents':\n if (type === 'EditOccurrence' && !this.parent.isAdaptive && isNullOrUndefined(this.parent.editorTemplate)) {\n addClass([this.dialogObject.element.querySelector('.e-recurrenceeditor')], cls.DISABLE_CLASS);\n }\n this.cellClickAction = false;\n this.onEventDetailsUpdate(data);\n break;\n }\n };\n EventWindow.prototype.setDialogContent = function () {\n this.dialogObject.content = this.getEventWindowContent();\n this.dialogObject.dataBind();\n this.applyFormValidation();\n };\n EventWindow.prototype.setDialogHeader = function () {\n if (!isNullOrUndefined(this.parent.editorHeaderTemplate)) {\n this.parent.resetTemplates(['editorHeaderTemplate']);\n if (this.parent.isAdaptive && !this.parent.editorFooterTemplate) {\n this.dialogObject.header = this.createAdaptiveHeaderElement();\n }\n else {\n this.dialogObject.header = this.getDialogHeader();\n }\n }\n else if (this.parent.isAdaptive) {\n this.dialogObject.header = '
' +\n this.l10n.getConstant('newEvent') + '
';\n }\n else {\n this.dialogObject.header = '
' + this.l10n.getConstant('newEvent') + '
';\n }\n this.dialogObject.dataBind();\n this.addEventHandlers();\n };\n EventWindow.prototype.setDialogFooter = function () {\n if (!isNullOrUndefined(this.parent.editorFooterTemplate)) {\n this.parent.resetTemplates(['editorFooterTemplate']);\n this.dialogObject.footerTemplate = this.getDialogFooter();\n }\n else if (!this.parent.isAdaptive && isNullOrUndefined(this.parent.editorFooterTemplate)) {\n this.renderDialogButtons(this.dialogObject);\n }\n else if (this.parent.isAdaptive && isNullOrUndefined(this.parent.editorFooterTemplate)) {\n this.dialogObject.footerTemplate = null;\n }\n this.dialogObject.dataBind();\n };\n EventWindow.prototype.createAdaptiveHeaderElement = function (data) {\n var header = createElement('div', { className: 'e-title-header' });\n var headerBackIcon = createElement('div', { className: 'e-back-icon e-icons' });\n header.appendChild(headerBackIcon);\n var headerTemplate = this.getDialogHeader(data);\n header.appendChild(headerTemplate);\n var headerSaveIcon = createElement('div', { className: 'e-save-icon e-icons' });\n header.appendChild(headerSaveIcon);\n return header;\n };\n EventWindow.prototype.getDialogHeader = function (args) {\n var headerTemplate = [];\n var headerTemplateId = this.parent.element.id + '_editorHeaderTemplate';\n var temHeaderDiv = document.createElement('div');\n headerTemplate = [].slice.call(this.parent.getEditorHeaderTemplate()(args || {}, this.parent, 'editorHeaderTemplate', headerTemplateId, false));\n append(headerTemplate, temHeaderDiv);\n return temHeaderDiv;\n };\n EventWindow.prototype.getDialogFooter = function (args) {\n var footerTemplate = [];\n var footerTemplateId = this.parent.element.id + '_editorFooterTemplate';\n var temFooterDiv = document.createElement('div');\n footerTemplate = [].slice.call(this.parent.getEditorFooterTemplate()(args || {}, this.parent, 'editorFooterTemplate', footerTemplateId, false));\n append(footerTemplate, temFooterDiv);\n return temFooterDiv;\n };\n EventWindow.prototype.preventEventSave = function (e) {\n if (this.parent && !this.parent.allowKeyboardInteraction && e.code === 'Enter') {\n this.isEnterKey = true;\n }\n };\n EventWindow.prototype.onBeforeOpen = function (args) {\n var _this = this;\n var endTime = this.eventData[this.fields.endTime].getTime();\n var eventProp = {\n type: 'Editor',\n data: this.eventData,\n cancel: false,\n element: this.element,\n target: (this.cellClickAction ? this.parent.activeCellsData.element : this.parent.activeEventData.element)\n };\n if (this.cellClickAction) {\n eventProp.duration = this.getSlotDuration();\n }\n var saveObj = this.getInstance(cls.EVENT_WINDOW_SAVE_BUTTON_CLASS);\n if (saveObj) {\n saveObj.disabled = !(this.cellClickAction ? this.parent.eventSettings.allowAdding : this.parent.eventSettings.allowEditing);\n saveObj.dataBind();\n }\n var deleteObj = this.getInstance(cls.DELETE_EVENT_CLASS);\n if (deleteObj) {\n deleteObj.disabled = !this.parent.eventSettings.allowDeleting;\n deleteObj.dataBind();\n }\n var callBackPromise = new Deferred();\n this.parent.trigger(event.popupOpen, eventProp, function (popupArgs) {\n args.cancel = popupArgs.cancel;\n _this.duration = _this.cellClickAction ? popupArgs.duration : null;\n if (_this.eventData[_this.fields.endTime].getTime() === endTime && !_this.cellClickAction &&\n _this.eventData[_this.fields.endTime].getHours() === 0 &&\n _this.eventData[_this.fields.endTime].getMinutes() === 0) {\n _this.eventData = extend({}, _this.eventData, null, true);\n _this.trimAllDay(_this.eventData);\n }\n _this.refreshDateTimePicker(_this.duration);\n if (_this.cellClickAction && popupArgs.duration !== _this.getSlotDuration() && isNullOrUndefined(_this.parent.editorTemplate)) {\n var startObj = _this.getInstance(cls.EVENT_WINDOW_START_CLASS);\n var endObj = _this.getInstance(cls.EVENT_WINDOW_END_CLASS);\n endObj.value = new Date(startObj.value.getTime() + (util.MS_PER_MINUTE * popupArgs.duration));\n endObj.dataBind();\n }\n if (_this.parent.editorTemplate && _this.element.querySelector('.e-recurrenceeditor') && !_this.recurrenceEditor) {\n _this.recurrenceEditor = _this.getInstance('e-recurrenceeditor');\n }\n callBackPromise.resolve(args);\n });\n return callBackPromise;\n };\n EventWindow.prototype.onBeforeClose = function (args) {\n var _this = this;\n if (args.isInteracted) {\n this.isCrudAction = false;\n }\n var eventProp = {\n type: 'Editor',\n event: args.event || this.dialogEvent,\n data: this.eventCrudData,\n cancel: false,\n element: this.element,\n target: (this.cellClickAction ? this.parent.activeCellsData.element : this.parent.activeEventData.element)\n };\n var callBackPromise = new Deferred();\n this.parent.trigger(event.popupClose, eventProp, function (popupArgs) {\n args.cancel = popupArgs.cancel;\n if (!popupArgs.cancel) {\n if (_this.isCrudAction) {\n args.cancel = _this.processCrudActions(popupArgs.data);\n _this.isCrudAction = args.cancel;\n }\n if (!_this.isCrudAction) {\n _this.resetForm();\n _this.parent.eventBase.focusElement(true);\n _this.eventCrudData = null;\n }\n }\n callBackPromise.resolve(args);\n });\n return callBackPromise;\n };\n EventWindow.prototype.getEventWindowContent = function () {\n var container = createElement('div', { className: cls.FORM_CONTAINER_CLASS });\n var form = createElement('form', {\n id: this.parent.element.id + 'EditForm',\n className: cls.FORM_CLASS,\n attrs: { onsubmit: 'return false;' }\n });\n this.renderFormElements(form);\n container.appendChild(form);\n return container;\n };\n EventWindow.prototype.renderFormElements = function (form, args) {\n var _this = this;\n if (!isNullOrUndefined(this.parent.editorTemplate)) {\n if (args) {\n if (this.fieldValidator) {\n this.fieldValidator.destroy();\n this.fieldValidator = null;\n }\n if (this.recurrenceEditor) {\n this.recurrenceEditor.destroy();\n this.recurrenceEditor = null;\n }\n this.destroyComponents();\n var formElements = [].slice.call(form.children);\n for (var _i = 0, formElements_1 = formElements; _i < formElements_1.length; _i++) {\n var element = formElements_1[_i];\n remove(element);\n }\n this.parent.resetTemplates(['editorTemplate']);\n }\n var templateId = this.parent.element.id + '_editorTemplate';\n var tempEle = [].slice.call(this.parent.getEditorTemplate()(args || {}, this.parent, 'editorTemplate', templateId, false));\n append(tempEle, form);\n this.parent.renderTemplates(function () {\n if (_this.element) {\n _this.applyFormValidation();\n if (_this.eventCrudData) {\n _this.showDetails(_this.eventCrudData);\n _this.eventCrudData = null;\n }\n }\n });\n }\n else {\n form.appendChild(this.getDefaultEventWindowContent());\n }\n };\n EventWindow.prototype.getDefaultEventWindowContent = function () {\n var parentDiv = this.createDivElement(cls.EVENT_WINDOW_DIALOG_PARENT_CLASS);\n var titleLocationDiv = this.createDivElement(cls.EVENT_WINDOW_TITLE_LOCATION_DIV_CLASS);\n parentDiv.appendChild(titleLocationDiv);\n titleLocationDiv.appendChild(this.renderTextBox(cls.SUBJECT_CLASS));\n titleLocationDiv.appendChild(this.renderTextBox(cls.LOCATION_CLASS));\n var startEndDateTimeDiv = this.createDivElement(cls.EVENT_WINDOW_START_END_DIV_CLASS);\n parentDiv.appendChild(startEndDateTimeDiv);\n startEndDateTimeDiv.appendChild(this.renderDateTimePicker(cls.EVENT_WINDOW_START_CLASS, this.onTimeChange.bind(this)));\n startEndDateTimeDiv.appendChild(this.renderDateTimePicker(cls.EVENT_WINDOW_END_CLASS));\n var allDayTimezoneDiv = this.createDivElement(cls.EVENT_WINDOW_ALLDAY_TZ_DIV_CLASS);\n parentDiv.appendChild(allDayTimezoneDiv);\n allDayTimezoneDiv.appendChild(this.renderCheckBox(cls.EVENT_WINDOW_ALL_DAY_CLASS));\n allDayTimezoneDiv.appendChild(this.renderCheckBox(cls.TIME_ZONE_CLASS));\n var timezoneParentDiv = this.createDivElement(cls.EVENT_WINDOW_TIME_ZONE_DIV_CLASS);\n parentDiv.appendChild(timezoneParentDiv);\n timezoneParentDiv.appendChild(this.renderDropDown(cls.EVENT_WINDOW_START_TZ_CLASS));\n timezoneParentDiv.appendChild(this.renderDropDown(cls.EVENT_WINDOW_END_TZ_CLASS));\n var repeatParentDiv = this.createDivElement(cls.EVENT_WINDOW_REPEAT_DIV_CLASS);\n parentDiv.appendChild(repeatParentDiv);\n var repeatDiv = this.renderCheckBox(cls.EVENT_WINDOW_REPEAT_CLASS);\n var repeatEditContainer = createElement('span', { className: REPEAT_CONTAINER_CLASS });\n var button = createElement('button', {\n className: REPEAT_BUTTON_CLASS,\n attrs: { type: 'button', 'title': this.l10n.getConstant('editRecurrence') }\n });\n this.buttonObj = new Button({ iconCss: REPEAT_BUTTON_ICON_CLASS + ' e-icons', cssClass: 'e-medium ' + this.parent.cssClass });\n repeatEditContainer.appendChild(button);\n this.buttonObj.appendTo(button);\n repeatDiv.appendChild(repeatEditContainer);\n repeatParentDiv.appendChild(repeatDiv);\n if (this.parent.isAdaptive) {\n EventHandler.add(button, 'click', this.loadRecurrenceEditor, this);\n }\n else {\n this.createRecurrenceEditor(parentDiv);\n }\n if (this.parent.resourceCollection.length > 0) {\n var resourceParentDiv = this.createDivElement(cls.EVENT_WINDOW_RESOURCES_DIV_CLASS);\n for (var _i = 0, _a = this.parent.resourceBase.resourceCollection; _i < _a.length; _i++) {\n var resource = _a[_i];\n resourceParentDiv.appendChild(this.renderResourceDetails(resource));\n }\n parentDiv.appendChild(resourceParentDiv);\n }\n var description = this.createDivElement(cls.DESCRIPTION_CLASS + '-row');\n description.appendChild(this.renderTextBox(cls.DESCRIPTION_CLASS));\n parentDiv.appendChild(description);\n var submit = createElement('button', { attrs: { type: 'hidden', title: 'submit', style: 'display:none' } });\n parentDiv.appendChild(submit);\n return parentDiv;\n };\n EventWindow.prototype.createRecurrenceEditor = function (parentDiv) {\n var recurrenceEditor = createElement('div', { id: this.parent.element.id + '_recurrence_editor' });\n parentDiv.appendChild(recurrenceEditor);\n this.recurrenceEditor = this.renderRecurrenceEditor();\n this.recurrenceEditor.appendTo(recurrenceEditor);\n this.updateMinMaxDateToEditor();\n };\n EventWindow.prototype.createDivElement = function (className) {\n return createElement('div', { className: className });\n };\n EventWindow.prototype.createInputElement = function (className, fieldName, type) {\n return createElement(type || 'input', {\n className: className, attrs: {\n type: 'text', name: fieldName, value: '', id: fieldName\n }\n });\n };\n EventWindow.prototype.getSlotDuration = function () {\n return this.parent.activeViewOptions.timeScale.interval / this.parent.activeViewOptions.timeScale.slotCount;\n };\n EventWindow.prototype.renderDateTimePicker = function (value, changeEvent) {\n var dateTimeDiv = this.createDivElement(value + '-container');\n var fieldName = this.getFieldName(value);\n var dateTimeInput = this.createInputElement(value + ' ' + EVENT_FIELD, fieldName);\n dateTimeDiv.appendChild(dateTimeInput);\n var dateTimePicker = new DateTimePicker({\n change: changeEvent,\n firstDayOfWeek: this.parent.activeViewOptions.firstDayOfWeek,\n calendarMode: this.parent.calendarMode,\n min: this.parent.minDate,\n max: new Date(new Date(+this.parent.maxDate).setHours(23, 59, 59)),\n cssClass: this.parent.cssClass,\n enableRtl: this.parent.enableRtl,\n locale: this.parent.locale,\n floatLabelType: 'Always',\n strictMode: true,\n timeFormat: this.parent.activeViewOptions.timeFormat,\n format: (isNullOrUndefined(this.parent.dateFormat) ?\n this.getFormat('dateFormats') : this.parent.dateFormat) + ' ' + this.parent.activeViewOptions.timeFormat,\n placeholder: this.getFieldLabel(value),\n step: this.getSlotDuration(),\n width: '100%'\n });\n dateTimePicker.appendTo(dateTimeInput);\n return dateTimeDiv;\n };\n EventWindow.prototype.refreshDateTimePicker = function (duration) {\n var elementSelector = '.' + cls.EVENT_WINDOW_START_CLASS + ',.' + cls.EVENT_WINDOW_END_CLASS;\n var startEndElement = [].slice.call(this.element.querySelectorAll(elementSelector));\n for (var _i = 0, startEndElement_1 = startEndElement; _i < startEndElement_1.length; _i++) {\n var element = startEndElement_1[_i];\n var instance = element.ej2_instances[0];\n instance.firstDayOfWeek = this.parent.activeViewOptions.firstDayOfWeek;\n instance.timeFormat = this.parent.activeViewOptions.timeFormat;\n instance.step = duration || this.getSlotDuration();\n instance.dataBind();\n }\n };\n EventWindow.prototype.onTimeChange = function () {\n var startObj = this.getInstance(cls.EVENT_WINDOW_START_CLASS);\n if (startObj.element.parentElement.classList.contains('e-input-focus')) {\n var endObj = this.getInstance(cls.EVENT_WINDOW_END_CLASS);\n var duration = 0;\n if (this.cellClickAction) {\n duration = util.MS_PER_MINUTE * this.duration;\n this.eventWindowTime.startTime = startObj.value;\n }\n else {\n duration = this.eventData[this.fields.endTime].getTime() - this.eventData[this.fields.startTime].getTime();\n }\n var endDate = (isNullOrUndefined(startObj.value)) ? null : new Date(startObj.value.getTime() + duration);\n if (this.cellClickAction) {\n this.eventWindowTime.endTime = endDate;\n }\n endObj.value = endDate;\n endObj.dataBind();\n }\n if (this.recurrenceEditor) {\n this.recurrenceEditor.updateRuleUntilDate(this.eventWindowTime.startTime);\n }\n };\n EventWindow.prototype.renderResourceDetails = function (resourceData) {\n var fieldName = resourceData.field;\n var value = 'e-' + fieldName;\n var labelValue = resourceData.title;\n var resourceDiv = this.createDivElement(value + '-container' + ' ' + 'e-resources');\n var resourceInput = this.createInputElement(value + ' ' + EVENT_FIELD, fieldName);\n resourceDiv.appendChild(resourceInput);\n var resourceTemplate = function (data) {\n return \"
\" + data[resourceData.textField] + \"
\";\n };\n initializeCSPTemplate(resourceTemplate, resourceData);\n if (resourceData.allowMultiple) {\n var listObj = new MultiSelect({\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n cssClass: this.parent.cssClass || '',\n dataSource: resourceData.dataSource,\n change: this.onMultiselectResourceChange.bind(this),\n itemTemplate: resourceTemplate,\n fields: {\n text: resourceData.textField,\n value: resourceData.idField\n },\n htmlAttributes: { 'name': fieldName },\n floatLabelType: 'Always',\n placeholder: labelValue,\n popupHeight: '230px',\n popupWidth: '447px',\n mode: 'Box'\n });\n listObj.appendTo(resourceInput);\n }\n else {\n var dropDownList = new DropDownList({\n cssClass: this.parent.cssClass || '',\n change: this.onDropdownResourceChange.bind(this),\n dataSource: resourceData.dataSource,\n enableRtl: this.parent.enableRtl,\n fields: {\n text: resourceData.textField,\n value: resourceData.idField\n },\n htmlAttributes: { 'name': fieldName },\n floatLabelType: 'Always',\n placeholder: labelValue,\n popupHeight: '230px',\n popupWidth: '447px',\n itemTemplate: resourceTemplate\n });\n dropDownList.appendTo(resourceInput);\n }\n return resourceDiv;\n };\n EventWindow.prototype.renderDropDown = function (value) {\n var _this = this;\n var fieldName = this.getFieldName(value);\n var timezoneDiv = this.createDivElement(value + '-container');\n var timezoneInput = this.createInputElement(value + ' ' + EVENT_FIELD, fieldName);\n timezoneDiv.appendChild(timezoneInput);\n var dropDownList = new DropDownList({\n allowFiltering: true,\n change: this.onTimezoneChange.bind(this),\n cssClass: this.parent.cssClass || '',\n dataSource: this.parent.timezoneDataSource,\n enableRtl: this.parent.enableRtl,\n fields: { text: 'Text', value: 'Value' },\n filterBarPlaceholder: this.parent.localeObj.getConstant('searchTimezone'),\n noRecordsTemplate: this.parent.localeObj.getConstant('noRecords'),\n filtering: function (e) {\n var query = new Query();\n query = (e.text !== '') ? query.where('Text', 'contains', e.text, true) : query;\n e.updateData(_this.parent.timezoneDataSource, query);\n },\n htmlAttributes: { 'title': this.getFieldLabel(value), 'name': fieldName },\n floatLabelType: 'Always',\n placeholder: this.getFieldLabel(value),\n popupHeight: '230px'\n });\n dropDownList.appendTo(timezoneInput);\n return timezoneDiv;\n };\n EventWindow.prototype.onMultiselectResourceChange = function (args) {\n if (!args.value || !this.parent.activeViewOptions.group.byGroupID || this.parent.resourceCollection.length <= 1) {\n return;\n }\n var resourceCollection = this.parent.resourceBase.resourceCollection;\n var fieldName = args.element.getAttribute('name') || this.getColumnName(args.element);\n for (var i = 0; i < resourceCollection.length; i++) {\n if (resourceCollection[parseInt(i.toString(), 10)].field === fieldName && i < resourceCollection.length - 1) {\n var resObject = this.createInstance(i);\n var datasource = [];\n var _loop_1 = function (j) {\n var resourceModel = resourceCollection[i + 1];\n // eslint-disable-next-line max-len\n var filter = resourceModel.dataSource.filter(function (data) {\n return data[resourceModel.groupIDField] === args.value[parseInt(j.toString(), 10)];\n })[0];\n var groupId = (!isNullOrUndefined(filter)) ?\n filter[resourceCollection[i + 1].groupIDField] : null;\n var filterRes = this_1.filterDatasource(i, groupId);\n datasource = datasource.concat(filterRes);\n };\n var this_1 = this;\n for (var j = 0; j < args.value.length; j++) {\n _loop_1(j);\n }\n resObject.dataSource = datasource;\n resObject.dataBind();\n }\n }\n };\n EventWindow.prototype.createInstance = function (index) {\n var resourceData = this.parent.resourceBase.resourceCollection[index + 1];\n var resObject = this.element.querySelector('.e-' + resourceData.field).\n ej2_instances[0];\n resObject.clear();\n return resObject;\n };\n EventWindow.prototype.onDropdownResourceChange = function (args) {\n if (!args.value || this.parent.resourceCollection.length <= 1 || !this.parent.activeViewOptions.group.byGroupID) {\n return;\n }\n var fieldName = args.element.getAttribute('name') || this.getColumnName(args.element);\n var resourceCollection = this.parent.resourceBase.resourceCollection;\n for (var i = 0; i < resourceCollection.length; i++) {\n if ((i < resourceCollection.length - 1) && resourceCollection[parseInt(i.toString(), 10)].field === fieldName) {\n var resObj = this.createInstance(i);\n var groupId = args.itemData[resourceCollection[parseInt(i.toString(), 10)].idField];\n resObj.dataSource = this.filterDatasource(i, groupId);\n resObj.dataBind();\n var resValue = (resObj.dataSource.length > 0) ?\n resObj.dataSource[0][resourceCollection[i + 1].idField] : null;\n resObj.value = (resourceCollection[i + 1].allowMultiple) ? [resValue] : resValue;\n resObj.dataBind();\n }\n }\n };\n EventWindow.prototype.filterDatasource = function (index, groupId) {\n var resourceData = this.parent.resourceBase.resourceCollection[index + 1];\n return resourceData.dataSource.filter(function (data) {\n return data[resourceData.groupIDField] === groupId;\n });\n };\n EventWindow.prototype.onTimezoneChange = function (args) {\n var fieldName = args.element.getAttribute('name') || this.getColumnName(args.element);\n if (fieldName === this.parent.eventFields.startTimezone) {\n var startTimezoneObj = this.getInstance(cls.EVENT_WINDOW_START_TZ_CLASS);\n var endTimezoneObj = this.getInstance(cls.EVENT_WINDOW_END_TZ_CLASS);\n endTimezoneObj.value = startTimezoneObj.value;\n endTimezoneObj.dataBind();\n }\n };\n EventWindow.prototype.renderCheckBox = function (value) {\n var checkBoxDiv = this.createDivElement(value + '-container');\n var fieldName = this.getFieldName(value);\n var checkBoxInput = this.createInputElement(value + ' ' + EVENT_FIELD, fieldName);\n checkBoxDiv.appendChild(checkBoxInput);\n var checkBox = new CheckBox({\n change: this.onChange.bind(this),\n cssClass: value + ' ' + this.parent.cssClass,\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n label: this.getFieldLabel(value)\n });\n checkBox.appendTo(checkBoxInput);\n checkBoxInput.setAttribute('name', fieldName);\n if (fieldName === 'Repeat') {\n this.repeatStatus = checkBox;\n }\n return checkBoxDiv;\n };\n EventWindow.prototype.renderTextBox = function (value) {\n var textBoxDiv = this.createDivElement(value + '-container');\n var fieldName = this.getFieldName(value);\n var elementType = (value === cls.DESCRIPTION_CLASS) ? 'textarea' : 'input';\n var textBoxInput = this.createInputElement(value + ' ' + EVENT_FIELD, fieldName, elementType);\n textBoxDiv.appendChild(textBoxInput);\n Input.createInput({\n element: textBoxInput,\n floatLabelType: 'Always',\n properties: {\n enableRtl: this.parent.enableRtl,\n placeholder: this.getFieldLabel(value)\n }\n });\n return textBoxDiv;\n };\n EventWindow.prototype.getFieldName = function (name) {\n var fieldName = '';\n switch (name) {\n case cls.SUBJECT_CLASS:\n fieldName = this.fields.subject;\n break;\n case cls.LOCATION_CLASS:\n fieldName = this.fields.location;\n break;\n case cls.EVENT_WINDOW_START_CLASS:\n fieldName = this.fields.startTime;\n break;\n case cls.EVENT_WINDOW_END_CLASS:\n fieldName = this.fields.endTime;\n break;\n case cls.DESCRIPTION_CLASS:\n fieldName = this.fields.description;\n break;\n case cls.EVENT_WINDOW_ALL_DAY_CLASS:\n fieldName = this.fields.isAllDay;\n break;\n case cls.EVENT_WINDOW_START_TZ_CLASS:\n fieldName = this.fields.startTimezone;\n break;\n case cls.EVENT_WINDOW_END_TZ_CLASS:\n fieldName = this.fields.endTimezone;\n break;\n case cls.TIME_ZONE_CLASS:\n fieldName = 'Timezone';\n break;\n case cls.EVENT_WINDOW_REPEAT_CLASS:\n fieldName = 'Repeat';\n break;\n }\n return fieldName;\n };\n EventWindow.prototype.getFieldLabel = function (fieldName) {\n var labelText = '';\n switch (fieldName) {\n case cls.SUBJECT_CLASS:\n labelText = this.parent.editorTitles.subject;\n break;\n case cls.LOCATION_CLASS:\n labelText = this.parent.editorTitles.location;\n break;\n case cls.DESCRIPTION_CLASS:\n labelText = this.parent.editorTitles.description;\n break;\n case cls.EVENT_WINDOW_START_CLASS:\n labelText = this.parent.editorTitles.startTime;\n break;\n case cls.EVENT_WINDOW_END_CLASS:\n labelText = this.parent.editorTitles.endTime;\n break;\n case cls.EVENT_WINDOW_START_TZ_CLASS:\n labelText = this.parent.editorTitles.startTimezone;\n break;\n case cls.EVENT_WINDOW_END_TZ_CLASS:\n labelText = this.parent.editorTitles.endTimezone;\n break;\n case cls.EVENT_WINDOW_REPEAT_CLASS:\n labelText = this.parent.editorTitles.recurrenceRule;\n break;\n case cls.EVENT_WINDOW_ALL_DAY_CLASS:\n labelText = this.parent.editorTitles.isAllDay;\n break;\n case cls.TIME_ZONE_CLASS:\n labelText = this.l10n.getConstant('timezone');\n break;\n }\n return labelText;\n };\n EventWindow.prototype.onChange = function (args) {\n if (args.event && args.event.target) {\n var targetSelector = \".\" + cls.EVENT_WINDOW_ALL_DAY_CLASS + \",.\" + cls.TIME_ZONE_CLASS + \",.\" + cls.EVENT_WINDOW_REPEAT_CLASS;\n var target = closest(args.event.target, targetSelector);\n if (target.classList.contains(cls.EVENT_WINDOW_ALL_DAY_CLASS)) {\n this.onAllDayChange(args.checked);\n }\n else if (target.classList.contains(cls.TIME_ZONE_CLASS)) {\n this.timezoneChangeStyle(args.checked);\n }\n else if (target.classList.contains(cls.EVENT_WINDOW_REPEAT_CLASS)) {\n this.onRepeatChange(args.checked);\n }\n }\n };\n EventWindow.prototype.renderRepeatDialog = function () {\n var element = createElement('div');\n this.repeatDialogObject = new Dialog({\n header: this.l10n.getConstant('recurrence'),\n visible: false,\n content: '
',\n closeOnEscape: true,\n width: '90%',\n buttons: [{\n click: this.repeatSaveDialog.bind(this),\n buttonModel: { content: this.l10n.getConstant('save'), cssClass: 'e-save', isPrimary: true }\n },\n { click: this.repeatCancelDialog.bind(this), buttonModel: { cssClass: 'e-cancel', content: this.l10n.getConstant('cancel') } }],\n target: this.element,\n animationSettings: { effect: 'Zoom' },\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n isModal: true,\n cssClass: REPEAT_DIALOG_CLASS,\n open: this.repeatOpenDialog.bind(this)\n });\n this.element.appendChild(element);\n this.repeatDialogObject.appendTo(element);\n this.createRecurrenceEditor(this.repeatDialogObject.element.querySelector('.e-rec-editor'));\n };\n EventWindow.prototype.loadRecurrenceEditor = function () {\n this.repeatDialogObject.show();\n if (this.recurrenceEditor && this.repeatRule) {\n this.recurrenceEditor.setRecurrenceRule(this.repeatRule);\n }\n };\n EventWindow.prototype.onRepeatChange = function (state) {\n if (state) {\n if (!this.repeatDialogObject) {\n this.renderRepeatDialog();\n }\n this.recurrenceEditor.setProperties({ startDate: this.repeatStartDate, selectedType: 0 });\n this.loadRecurrenceEditor();\n }\n else {\n if (this.repeatDialogObject) {\n this.repeatDialogObject.hide();\n }\n this.repeatRule = '';\n if (this.recurrenceEditor) {\n this.recurrenceEditor.setRecurrenceRule(this.repeatRule);\n this.updateRepeatLabel(this.repeatRule);\n }\n var element = this.element.querySelector('.' + REPEAT_CONTAINER_CLASS);\n addClass([element], HIDE_STYLE_CLASS);\n }\n };\n EventWindow.prototype.repeatSaveDialog = function () {\n this.repeatRule = this.recurrenceEditor.getRecurrenceRule();\n var element = this.element.querySelector('.' + REPEAT_CONTAINER_CLASS);\n if (this.recurrenceEditor.getRecurrenceRule()) {\n removeClass([element], HIDE_STYLE_CLASS);\n }\n else {\n addClass([element], HIDE_STYLE_CLASS);\n this.repeatStatus.setProperties({ checked: false });\n }\n this.updateRepeatLabel(this.repeatRule);\n this.closeRepeatDialog();\n };\n EventWindow.prototype.closeRepeatDialog = function () {\n this.repeatDialogObject.hide();\n };\n EventWindow.prototype.repeatCancelDialog = function () {\n this.closeRepeatDialog();\n if (this.recurrenceEditor) {\n this.recurrenceEditor.setRecurrenceRule(this.repeatTempRule);\n }\n if (!this.repeatTempRule) {\n this.repeatStatus.setProperties({ checked: false });\n }\n };\n EventWindow.prototype.repeatOpenDialog = function () {\n this.repeatTempRule = this.recurrenceEditor.getRecurrenceRule();\n };\n EventWindow.prototype.onCellDetailsUpdate = function (eventObj, repeatType) {\n if (!this.parent.eventSettings.allowAdding) {\n return;\n }\n if (this.parent.isAdaptive && repeatType && !this.repeatDialogObject) {\n this.renderRepeatDialog();\n }\n this.element.querySelector('.' + cls.FORM_CLASS).removeAttribute('data-id');\n if (isNullOrUndefined(this.parent.editorHeaderTemplate)) {\n this.element.querySelector('.' + cls.EVENT_WINDOW_TITLE_TEXT_CLASS).innerHTML = this.l10n.getConstant('newEvent');\n }\n eventObj.Timezone = false;\n this.repeatStartDate = eventObj[this.fields.startTime];\n this.repeatRule = '';\n if (!isNullOrUndefined(this.parent.eventSettings.fields.subject.default)) {\n eventObj[this.fields.subject] = this.parent.eventSettings.fields.subject.default;\n }\n if (!isNullOrUndefined(this.parent.eventSettings.fields.location.default)) {\n eventObj[this.fields.location] = this.parent.eventSettings.fields.location.default;\n }\n if (!isNullOrUndefined(this.parent.eventSettings.fields.description.default)) {\n eventObj[this.fields.description] = this.parent.eventSettings.fields.description.default;\n }\n this.showDetails(eventObj);\n if (eventObj[this.fields.recurrenceRule] && this.recurrenceEditor) {\n this.recurrenceEditor.setRecurrenceRule(eventObj[this.fields.recurrenceRule], eventObj[this.fields.startTime]);\n this.repeatRule = eventObj[this.fields.recurrenceRule];\n }\n var deleteButton = this.element.querySelector('.' + cls.DELETE_EVENT_CLASS);\n if (deleteButton) {\n addClass([deleteButton], cls.DISABLE_CLASS);\n }\n if (this.recurrenceEditor) {\n this.recurrenceEditor.setProperties({\n startDate: eventObj[this.fields.startTime],\n selectedType: !isNullOrUndefined(repeatType) ? repeatType : !isNullOrUndefined(eventObj[this.fields.recurrenceRule]) ?\n this.recurrenceEditor.selectedType : 0\n });\n this.repeatRule = this.recurrenceEditor.value;\n }\n if (this.parent.isAdaptive && isNullOrUndefined(this.parent.editorTemplate)) {\n var element = this.element.querySelector('.' + REPEAT_CONTAINER_CLASS);\n if (eventObj[this.fields.recurrenceRule] || repeatType) {\n removeClass([element], HIDE_STYLE_CLASS);\n this.repeatStatus.setProperties({ checked: true });\n }\n else {\n addClass([element], HIDE_STYLE_CLASS);\n this.repeatStatus.setProperties({ checked: false });\n }\n this.updateRepeatLabel(this.repeatRule);\n }\n else {\n var saveButton = this.element.querySelector('.' + cls.EVENT_WINDOW_SAVE_BUTTON_CLASS);\n this.disableButton(saveButton, false);\n }\n this.dialogObject.show();\n };\n EventWindow.prototype.convertToEventData = function (cellsData, eventObj) {\n if (cellsData.subject) {\n eventObj[this.fields.subject] = cellsData.subject;\n }\n eventObj[this.fields.startTime] = cellsData.startTime;\n eventObj[this.fields.endTime] = cellsData.endTime;\n eventObj[this.fields.isAllDay] = cellsData.isAllDay;\n if (cellsData.RecurrenceRule) {\n eventObj[this.fields.recurrenceRule] = cellsData.RecurrenceRule;\n }\n if (this.parent.resourceCollection.length > 0 || this.parent.activeViewOptions.group.resources.length > 0) {\n this.parent.resourceBase.setResourceValues(eventObj);\n }\n };\n EventWindow.prototype.applyFormValidation = function () {\n var form = this.element.querySelector('.' + cls.FORM_CLASS);\n if (!form) {\n return;\n }\n var getValidationRule = function (rules) {\n return (rules && Object.keys(rules).length > 0) ? rules : undefined;\n };\n var rules = {};\n var subjectRule = getValidationRule(this.parent.eventSettings.fields.subject.validation);\n if (!isNullOrUndefined(subjectRule)) {\n rules[this.parent.eventSettings.fields.subject.name] = subjectRule;\n }\n var locationRule = getValidationRule(this.parent.eventSettings.fields.location.validation);\n if (!isNullOrUndefined(locationRule)) {\n rules[this.parent.eventSettings.fields.location.name] = locationRule;\n }\n var startTimeRule = getValidationRule(this.parent.eventSettings.fields.startTime.validation);\n if (!isNullOrUndefined(startTimeRule)) {\n rules[this.parent.eventSettings.fields.startTime.name] = startTimeRule;\n }\n var endTimeRule = getValidationRule(this.parent.eventSettings.fields.endTime.validation);\n if (!isNullOrUndefined(endTimeRule)) {\n rules[this.parent.eventSettings.fields.endTime.name] = endTimeRule;\n }\n var descriptionRule = getValidationRule(this.parent.eventSettings.fields.description.validation);\n if (!isNullOrUndefined(descriptionRule)) {\n rules[this.parent.eventSettings.fields.description.name] = descriptionRule;\n }\n this.fieldValidator = new FieldValidator();\n this.fieldValidator.renderFormValidator(form, rules, this.element, this.parent.locale);\n };\n EventWindow.prototype.showDetails = function (eventData) {\n this.eventData = this.eventCrudData ? this.eventData : eventData;\n var eventObj = extend({}, eventData, null, true);\n var formElements = this.getFormElements(cls.EVENT_WINDOW_DIALOG_CLASS);\n if (this.parent.isReact && formElements.length < 1 && !this.cellClickAction) {\n this.eventCrudData = eventObj;\n return;\n }\n if ((!this.cellClickAction || this.cellClickAction && !isNullOrUndefined(this.parent.editorTemplate)) &&\n eventObj[this.fields.endTime].getHours() === 0 && eventObj[this.fields.endTime].getMinutes() === 0) {\n this.trimAllDay(eventObj);\n }\n var keyNames = Object.keys(eventObj);\n for (var _i = 0, formElements_2 = formElements; _i < formElements_2.length; _i++) {\n var curElement = formElements_2[_i];\n var columnName = curElement.name || this.getColumnName(curElement);\n if (!isNullOrUndefined(columnName) && columnName !== '') {\n if (keyNames.indexOf(columnName) !== -1) {\n this.setValueToElement(curElement, eventObj[\"\" + columnName]);\n }\n else {\n this.setDefaultValueToElement(curElement);\n }\n }\n }\n if (isNullOrUndefined(this.parent.editorTemplate)) {\n this.onAllDayChange(eventObj[this.fields.isAllDay]);\n var timezoneObj = this.getInstance(cls.TIME_ZONE_CLASS + '.' + EVENT_FIELD);\n if (!(isNullOrUndefined(eventObj[this.fields.startTimezone]) && isNullOrUndefined(eventObj[this.fields.endTimezone]))) {\n timezoneObj.checked = true;\n timezoneObj.dataBind();\n }\n this.timezoneChangeStyle(timezoneObj.checked);\n delete eventObj.Timezone;\n }\n };\n EventWindow.prototype.getColumnName = function (element) {\n var attrName = element.getAttribute('data-name') || '';\n if (attrName === '') {\n var isDropDowns = false;\n var fieldSelector = '';\n if (element.classList.contains('e-dropdownlist')) {\n fieldSelector = 'e-ddl';\n isDropDowns = true;\n }\n else if (element.classList.contains('e-multiselect')) {\n fieldSelector = 'e-multiselect';\n isDropDowns = true;\n }\n else if (element.classList.contains('e-datetimepicker')) {\n fieldSelector = 'e-datetimepicker';\n }\n else if (element.classList.contains('e-datepicker')) {\n fieldSelector = 'e-datepicker';\n }\n else if (element.classList.contains('e-checkbox')) {\n fieldSelector = 'e-checkbox';\n }\n var classSelector = isDropDowns ? \".\" + fieldSelector + \":not(.e-control)\" : \".\" + fieldSelector;\n var control = closest(element, classSelector) || element.querySelector(\".\" + fieldSelector);\n if (control) {\n var attrEle = control.querySelector('[name]');\n if (attrEle) {\n attrName = attrEle.name;\n }\n }\n }\n return attrName;\n };\n EventWindow.prototype.onAllDayChange = function (allDayStatus) {\n var startObj = this.getInstance(cls.EVENT_WINDOW_START_CLASS);\n var endObj = this.getInstance(cls.EVENT_WINDOW_END_CLASS);\n var timezoneDiv = this.element.querySelector('.e-time-zone-container');\n var format;\n if (allDayStatus) {\n format = (isNullOrUndefined(this.parent.dateFormat)) ? this.getFormat('dateFormats') : this.parent.dateFormat;\n addClass(this.element.querySelectorAll('.e-time-icon'), cls.EVENT_WINDOW_ICON_DISABLE_CLASS);\n addClass([timezoneDiv], cls.DISABLE_CLASS);\n if (this.element.querySelector('.' + cls.EVENT_WINDOW_TIME_ZONE_DIV_CLASS)) {\n removeClass([this.element.querySelector('.' + cls.EVENT_WINDOW_TIME_ZONE_DIV_CLASS)], cls.ENABLE_CLASS);\n }\n startObj.format = endObj.format = format;\n }\n else {\n format = (isNullOrUndefined(this.parent.dateFormat)) ? this.getFormat('dateFormats') + ' ' +\n this.parent.activeViewOptions.timeFormat : this.parent.dateFormat + ' ' + this.parent.activeViewOptions.timeFormat;\n removeClass(this.element.querySelectorAll('.e-time-icon'), cls.EVENT_WINDOW_ICON_DISABLE_CLASS);\n removeClass([timezoneDiv], cls.DISABLE_CLASS);\n if (this.element.querySelector('.e-checkbox-wrapper .e-time-zone').checked) {\n addClass([this.element.querySelector('.' + cls.EVENT_WINDOW_TIME_ZONE_DIV_CLASS)], cls.ENABLE_CLASS);\n }\n startObj.format = endObj.format = format;\n }\n if (this.cellClickAction) {\n this.updateDateTime(allDayStatus, startObj, endObj);\n }\n startObj.dataBind();\n endObj.dataBind();\n if (!isNullOrUndefined(this.recurrenceEditor)) {\n this.recurrenceEditor.updateRuleUntilDate(startObj.value);\n }\n };\n EventWindow.prototype.updateDateTime = function (allDayStatus, startObj, endObj) {\n var startDate;\n var endDate;\n if (allDayStatus) {\n startDate = util.resetTime(new Date(this.eventWindowTime.startTime.getTime()));\n if (this.parent.activeCellsData.isAllDay) {\n var temp = util.addDays(new Date(this.eventWindowTime.endTime.getTime()), -1).getTime();\n endDate = (+this.eventWindowTime.startTime > temp) ? this.eventWindowTime.endTime : new Date(temp);\n }\n else {\n endDate = util.resetTime(new Date(this.eventWindowTime.endTime.getTime()));\n }\n }\n else {\n var start = this.parent.activeCellsData.startTime;\n startDate = new Date(this.eventWindowTime.startTime.getTime());\n startDate.setHours(start.getHours(), start.getMinutes(), start.getSeconds());\n if (this.parent.activeCellsData.isAllDay) {\n var startHour = this.parent.getStartEndTime(this.parent.workHours.start);\n startDate.setHours(startHour.getHours(), startHour.getMinutes(), startHour.getSeconds());\n endDate = new Date(startDate.getTime());\n endDate.setMilliseconds(util.MS_PER_MINUTE * this.getSlotDuration());\n }\n else {\n endDate = new Date(startDate.getTime());\n endDate.setMilliseconds(this.parent.activeCellsData.endTime.getTime() - this.parent.activeCellsData.startTime.getTime());\n }\n }\n this.eventWindowTime = { startTime: new Date(startDate.getTime()), endTime: new Date(endDate.getTime()) };\n startObj.value = startDate;\n endObj.value = endDate;\n startObj.dataBind();\n endObj.dataBind();\n };\n EventWindow.prototype.getFormat = function (formatType) {\n var format;\n if (this.parent.locale === 'en' || this.parent.locale === 'en-US') {\n format = getValue(formatType + '.short', getDefaultDateObject(this.parent.getCalendarMode()));\n }\n else {\n format = getValue(\"main.\" + this.parent.locale + \".dates.calendars.\" + this.parent.getCalendarMode() + \".\" + formatType + \".short\", cldrData);\n }\n return format;\n };\n EventWindow.prototype.onEventDetailsUpdate = function (eventObj) {\n if (!this.parent.eventSettings.allowEditing) {\n return;\n }\n if (!this.parent.isAdaptive && isNullOrUndefined(this.parent.editorFooterTemplate)) {\n removeClass([this.element.querySelector('.' + cls.DELETE_EVENT_CLASS)], cls.DISABLE_CLASS);\n }\n if (isNullOrUndefined(this.parent.editorHeaderTemplate)) {\n this.element.querySelector('.' + cls.EVENT_WINDOW_TITLE_TEXT_CLASS).innerHTML = this.l10n.getConstant('editEvent');\n }\n this.element.querySelector('.' + cls.FORM_CLASS).setAttribute('data-id', eventObj[this.fields.id].toString());\n if (isNullOrUndefined(this.parent.editorTemplate)) {\n eventObj = extend({}, eventObj, null, true);\n var timezoneObj = this.getInstance(cls.TIME_ZONE_CLASS + '.' + EVENT_FIELD);\n var timezoneValue = void 0;\n if (eventObj[this.fields.startTimezone] || eventObj[this.fields.endTimezone]) {\n timezoneValue = true;\n this.parent.eventBase.timezoneConvert(eventObj);\n }\n else {\n timezoneValue = false;\n }\n eventObj.Timezone = timezoneValue;\n timezoneObj.checked = timezoneValue;\n timezoneObj.dataBind();\n }\n this.showDetails(eventObj);\n if (eventObj[this.fields.recurrenceRule] && this.recurrenceEditor) {\n this.recurrenceEditor.setRecurrenceRule(eventObj[this.fields.recurrenceRule], eventObj[this.fields.startTime]);\n }\n else if (!this.parent.isAdaptive && this.recurrenceEditor) {\n this.recurrenceEditor.setProperties({ startDate: eventObj[this.fields.startTime] });\n this.recurrenceEditor.setRecurrenceRule('');\n }\n this.repeatStartDate = eventObj[this.fields.startTime];\n this.repeatRule = '';\n if (eventObj[this.fields.recurrenceRule]) {\n if (this.recurrenceEditor) {\n this.recurrenceEditor.setRecurrenceRule(eventObj[this.fields.recurrenceRule], eventObj[this.fields.startTime]);\n }\n this.repeatRule = eventObj[this.fields.recurrenceRule];\n }\n if (this.parent.isAdaptive && isNullOrUndefined(this.parent.editorTemplate)) {\n var element = this.element.querySelector('.' + REPEAT_CONTAINER_CLASS);\n if (eventObj[this.fields.recurrenceRule]) {\n removeClass([element], HIDE_STYLE_CLASS);\n this.repeatStatus.setProperties({ checked: true });\n }\n else {\n addClass([element], HIDE_STYLE_CLASS);\n this.repeatStatus.setProperties({ checked: false });\n }\n this.updateRepeatLabel(this.repeatRule);\n }\n var isDisable = (this.parent.readonly || eventObj[this.fields.isReadonly]);\n if (!this.parent.isAdaptive) {\n var saveButton = this.element.querySelector('.' + cls.EVENT_WINDOW_SAVE_BUTTON_CLASS);\n var deleteButton = this.element.querySelector('.' + cls.DELETE_EVENT_CLASS);\n this.disableButton(saveButton, isDisable);\n this.disableButton(deleteButton, isDisable);\n }\n else {\n var saveIcon = this.element.querySelector('.' + cls.EVENT_WINDOW_SAVE_ICON_CLASS);\n if (saveIcon) {\n if (isDisable) {\n addClass([saveIcon], cls.ICON_DISABLE_CLASS);\n }\n else {\n removeClass([saveIcon], cls.ICON_DISABLE_CLASS);\n }\n }\n }\n this.dialogObject.show();\n };\n EventWindow.prototype.disableButton = function (element, value) {\n if (element) {\n element.ej2_instances[0].disabled = value;\n }\n };\n EventWindow.prototype.renderRecurrenceEditor = function () {\n return new RecurrenceEditor({\n calendarMode: this.parent.calendarMode,\n cssClass: this.parent.cssClass,\n dateFormat: this.parent.dateFormat,\n enableRtl: this.parent.enableRtl,\n firstDayOfWeek: this.parent.activeViewOptions.firstDayOfWeek,\n locale: this.parent.locale\n });\n };\n EventWindow.prototype.updateMinMaxDateToEditor = function () {\n var startDate = this.element.querySelector('.e-start');\n var endDate = this.element.querySelector('.e-end');\n if (startDate && endDate) {\n var startObj = startDate.ej2_instances[0];\n var endObj = endDate.ej2_instances[0];\n startObj.min = this.parent.minDate;\n startObj.max = this.parent.maxDate;\n endObj.min = this.parent.minDate;\n endObj.max = this.parent.maxDate;\n startObj.dataBind();\n endObj.dataBind();\n }\n if (this.recurrenceEditor) {\n var untilDate = this.recurrenceEditor.element.querySelector('.e-until-date');\n if (untilDate) {\n var untilObj = untilDate.ej2_instances[0];\n untilObj.min = this.parent.minDate;\n untilObj.max = this.parent.maxDate;\n untilObj.dataBind();\n }\n }\n };\n EventWindow.prototype.updateRepeatLabel = function (repeatRule) {\n if (this.parent.isAdaptive && !this.repeatDialogObject) {\n this.renderRepeatDialog();\n }\n var data = repeatRule ?\n (this.l10n.getConstant('repeats') + ' ' + this.recurrenceEditor.getRuleSummary(repeatRule)) : this.l10n.getConstant('repeat');\n this.repeatStatus.setProperties({ label: data });\n };\n EventWindow.prototype.dialogClose = function (event) {\n if (this.isEnterKey) {\n this.isEnterKey = false;\n return;\n }\n this.dialogEvent = event;\n this.isCrudAction = false;\n this.parent.activeEventData = { event: undefined, element: undefined };\n this.parent.currentAction = null;\n this.dialogObject.hide();\n };\n EventWindow.prototype.resetForm = function () {\n this.fieldValidator.destroyToolTip();\n this.resetFormFields();\n if (!this.parent.isAdaptive && this.recurrenceEditor && !this.recurrenceEditor.isDestroyed) {\n this.recurrenceEditor.resetFields();\n }\n };\n EventWindow.prototype.timezoneChangeStyle = function (value) {\n var timezoneDiv = this.element.querySelector('.' + cls.EVENT_WINDOW_TIME_ZONE_DIV_CLASS);\n var localTimezoneName = this.parent.tzModule.getLocalTimezoneName();\n if (value) {\n addClass([timezoneDiv], cls.ENABLE_CLASS);\n var startTimezoneObj = this.getInstance(cls.EVENT_WINDOW_START_TZ_CLASS);\n var endTimezoneObj = this.getInstance(cls.EVENT_WINDOW_END_TZ_CLASS);\n var timezone = startTimezoneObj.dataSource;\n if (!startTimezoneObj.value || !this.parent.timezone) {\n var found = timezone.some(function (tz) { return tz.Value === localTimezoneName; });\n if (!found) {\n timezone.push({ Value: localTimezoneName, Text: localTimezoneName });\n startTimezoneObj.dataSource = timezone;\n endTimezoneObj.dataSource = timezone;\n startTimezoneObj.dataBind();\n endTimezoneObj.dataBind();\n }\n }\n startTimezoneObj.value = startTimezoneObj.value || this.parent.timezone || localTimezoneName;\n endTimezoneObj.value = endTimezoneObj.value || this.parent.timezone || localTimezoneName;\n startTimezoneObj.dataBind();\n endTimezoneObj.dataBind();\n }\n else {\n removeClass([timezoneDiv], cls.ENABLE_CLASS);\n }\n };\n EventWindow.prototype.resetFormFields = function () {\n var formElement = this.getFormElements(cls.EVENT_WINDOW_DIALOG_CLASS);\n for (var _i = 0, formElement_1 = formElement; _i < formElement_1.length; _i++) {\n var currentElement = formElement_1[_i];\n var columnName = currentElement.name || this.getColumnName(currentElement);\n if (!isNullOrUndefined(columnName) && columnName !== '') {\n this.setDefaultValueToElement(currentElement);\n }\n }\n };\n EventWindow.prototype.eventSave = function (event, alert) {\n if (this.isEnterKey) {\n this.isEnterKey = false;\n return;\n }\n var formElement = this.element.querySelector('.' + cls.FORM_CLASS);\n if (formElement && formElement.classList.contains('e-formvalidator') &&\n !formElement.ej2_instances[0].validate()) {\n return;\n }\n var dataCollection = this.getEventDataFromEditor();\n if (this.processEventValidation(dataCollection.tempData, alert)) {\n return;\n }\n this.eventCrudData = dataCollection.eventData;\n this.dialogEvent = event;\n this.isCrudAction = true;\n this.dialogObject.hide();\n };\n EventWindow.prototype.getEventDataFromEditor = function () {\n var eventObj = extend({}, this.getObjectFromFormData(cls.EVENT_WINDOW_DIALOG_CLASS));\n if (!eventObj.Timezone) {\n eventObj[this.fields.startTimezone] = null;\n eventObj[this.fields.endTimezone] = null;\n }\n delete eventObj.Timezone;\n delete eventObj.Repeat;\n this.setDefaultValueToObject(eventObj);\n eventObj[this.fields.recurrenceRule] = this.recurrenceEditor ? this.recurrenceEditor.getRecurrenceRule() || null : undefined;\n var tempObj = extend({}, eventObj, null, true);\n if (eventObj[this.fields.isAllDay]) {\n eventObj[this.fields.startTime] = (isNullOrUndefined(eventObj[this.fields.startTime])) ? null\n : util.resetTime(new Date(eventObj[this.fields.startTime].getTime()));\n eventObj[this.fields.endTime] = (isNullOrUndefined(eventObj[this.fields.endTime])) ? null\n : util.addDays(util.resetTime(new Date(eventObj[this.fields.endTime].getTime())), 1);\n }\n return { eventData: eventObj, tempData: tempObj };\n };\n EventWindow.prototype.processEventValidation = function (eventObj, alert) {\n var alertType;\n if (isNullOrUndefined(this.parent.editorTemplate)) {\n if (!eventObj[this.fields.startTime] || !eventObj[this.fields.endTime]) {\n this.parent.quickPopup.openValidationError('invalidDateError');\n return true;\n }\n if (eventObj[this.fields.startTime] > eventObj[this.fields.endTime]) {\n this.parent.quickPopup.openValidationError('startEndError');\n return true;\n }\n }\n if (this.recurrenceEditor && this.recurrenceEditor.value && this.recurrenceEditor.value !== '') {\n if (this.parent.currentAction !== 'EditOccurrence') {\n alertType = this.recurrenceValidation(eventObj[this.fields.startTime], eventObj[this.fields.endTime], alert);\n }\n var isShowAlert = true;\n if (alertType === 'seriesChangeAlert' && this.parent.uiStateValues.isIgnoreOccurrence) {\n isShowAlert = false;\n }\n if (!isNullOrUndefined(alertType) && isShowAlert\n && ((!this.parent.enableRecurrenceValidation && alertType === 'wrongPattern') || this.parent.enableRecurrenceValidation)) {\n this.parent.quickPopup.openRecurrenceValidationAlert(alertType);\n return true;\n }\n }\n return false;\n };\n EventWindow.prototype.processCrudActions = function (eventObj) {\n var _this = this;\n this.parent.uiStateValues.isBlock = false;\n var resourceData = this.getResourceData(eventObj);\n var isResourceEventExpand = (this.parent.activeViewOptions.group.resources.length > 0 ||\n this.parent.resourceCollection.length > 0) && !this.parent.activeViewOptions.group.allowGroupEdit\n && !isNullOrUndefined(resourceData);\n var eventId = this.getEventIdFromForm();\n if (!isNullOrUndefined(eventId)) {\n var eveId_1 = this.parent.eventBase.getEventIDType() === 'string' ? eventId : parseInt(eventId, 10);\n var editedData = this.parent.eventsData.filter(function (data) {\n return data[_this.fields.id] === eveId_1;\n })[0];\n if (isNullOrUndefined(editedData)) {\n editedData = this.parent.blockData.filter(function (data) {\n return data[_this.fields.id] === eveId_1;\n })[0];\n }\n eventObj = extend({}, editedData, eventObj);\n if (eventObj[this.fields.isReadonly]) {\n return false;\n }\n var currentAction = void 0;\n if (!isNullOrUndefined(editedData[this.fields.recurrenceRule])) {\n currentAction = this.parent.currentAction;\n eventObj.Guid = this.parent.activeEventData.event.Guid;\n if (this.parent.currentAction === 'EditOccurrence') {\n if (!eventObj[this.fields.recurrenceID]) {\n eventObj[this.fields.id] = this.parent.eventBase.getEventMaxID();\n eventObj.Guid = this.parent.activeEventData.event.Guid;\n }\n else {\n eveId_1 = eventObj[this.fields.recurrenceID];\n currentAction = null;\n }\n if (this.parent.enableRecurrenceValidation && this.editOccurrenceValidation(eveId_1, eventObj)) {\n return true;\n }\n }\n if (this.parent.currentAction === 'EditSeries' || eventObj[this.fields.id] !== editedData[this.fields.id]) {\n eventObj[this.fields.recurrenceID] = editedData[this.fields.id];\n }\n else if (this.parent.currentAction === 'EditFollowingEvents') {\n eventObj[this.fields.id] = this.parent.eventBase.getEventMaxID();\n eventObj[this.fields.followingID] = editedData[this.fields.id];\n }\n }\n if (isResourceEventExpand) {\n this.resourceSaveEvent(eventObj, 'Save', currentAction);\n }\n else {\n this.parent.saveEvent(eventObj, currentAction);\n }\n }\n else {\n this.parent.currentAction = 'Add';\n if (isResourceEventExpand) {\n this.resourceSaveEvent(eventObj, this.parent.currentAction);\n }\n else {\n eventObj[this.fields.id] = this.parent.eventBase.getEventMaxID();\n this.parent.addEvent(eventObj);\n }\n }\n return this.parent.uiStateValues.isBlock;\n };\n EventWindow.prototype.getResourceData = function (eventObj) {\n var resourceData = null;\n if (!isNullOrUndefined(this.parent.resourceBase) && !isNullOrUndefined(this.parent.resourceBase.resourceCollection)\n && this.parent.resourceBase.resourceCollection.length > 0) {\n var lastResourceData = this.parent.resourceBase.resourceCollection.slice(-1)[0];\n resourceData = eventObj[lastResourceData.field];\n }\n return resourceData;\n };\n EventWindow.prototype.getObjectFromFormData = function (className) {\n var formElement = this.getFormElements(className);\n var eventObj = {};\n for (var _i = 0, formElement_2 = formElement; _i < formElement_2.length; _i++) {\n var currentElement = formElement_2[_i];\n var columnName = currentElement.name || this.getColumnName(currentElement);\n if (!isNullOrUndefined(columnName) && columnName !== '') {\n eventObj[\"\" + columnName] = this.getValueFromElement(currentElement);\n }\n }\n return eventObj;\n };\n EventWindow.prototype.setDefaultValueToObject = function (eventObj) {\n if (!isNullOrUndefined(eventObj[this.fields.subject])) {\n eventObj[this.fields.subject] = eventObj[this.fields.subject] || this.parent.eventSettings.fields.subject.default\n || this.l10n.getConstant('addTitle');\n }\n if (!isNullOrUndefined(eventObj[this.fields.location])) {\n eventObj[this.fields.location] = eventObj[this.fields.location] || this.parent.eventSettings.fields.location.default;\n }\n if (!isNullOrUndefined(eventObj[this.fields.description])) {\n eventObj[this.fields.description] = eventObj[this.fields.description] || this.parent.eventSettings.fields.description.default;\n }\n };\n EventWindow.prototype.recurrenceValidation = function (startDate, endDate, alert) {\n var alertMessage;\n var recEditor = this.recurrenceEditor;\n var interval = this.getInstance('e-repeat-interval.e-numerictextbox').value;\n if (alert !== this.l10n.getConstant('ok')) {\n var activeEvent = this.parent.activeEventData.event;\n var excludedEvents = [];\n if ((this.parent.currentAction === 'EditSeries' || this.parent.currentAction === 'EditFollowingEvents')\n && !isNullOrUndefined(activeEvent)) {\n var eventStartTime = activeEvent[this.parent.eventFields.startTime];\n var seriesEvents = this.parent.eventBase.getSeriesEvents(this.eventData, eventStartTime);\n if (seriesEvents.length > 0) {\n excludedEvents = this.parent.eventBase.getEditedOccurrences(seriesEvents, eventStartTime);\n }\n else {\n var event_2 = this.parent.eventBase.getEventById(activeEvent[this.parent.eventFields.id]);\n excludedEvents = this.parent.eventBase.getEditedOccurrences([event_2], eventStartTime);\n }\n if (this.parent.currentAction === 'EditSeries'\n && !isNullOrUndefined(this.eventData[this.parent.eventFields.recurrenceException])) {\n excludedEvents.push(this.eventData);\n }\n }\n if (excludedEvents.length > 0) {\n alertMessage = 'seriesChangeAlert';\n }\n if (this.getInstance('e-end-on-left .e-ddl .e-dropdownlist').value === 'until' &&\n this.getInstance('e-end-on-date .e-datepicker').value < startDate) {\n alertMessage = 'wrongPattern';\n }\n if (isNullOrUndefined(alertMessage)) {\n var types = recEditor.value.split(';')[1].split('=')[1].split(',');\n var obj = { 'SU': 0, 'MO': 1, 'TU': 2, 'WE': 3, 'TH': 4, 'FR': 5, 'SA': 6 };\n var temp = [];\n var tempDiff = [];\n var tempValue = void 0;\n switch (recEditor.value.split(';')[0].split('=')[1]) {\n case 'DAILY':\n if ((((endDate.getTime() - startDate.getTime()) / (1000 * 3600)) > (interval * 24))) {\n alertMessage = 'createError';\n }\n break;\n case 'WEEKLY':\n types = recEditor.value.split(';')[1].split('=')[1].split(',');\n for (var index = 0; index < types.length * (interval + 1); index++) {\n temp[parseInt(index.toString(), 10)] =\n (types.length > index) ? obj[types[parseInt(index.toString(), 10)]] :\n temp[index - types.length] + (7 * interval);\n }\n tempValue = temp.sort(function (a, b) { return a - b; });\n for (var index = 1; index < tempValue.length; index++) {\n tempDiff.push(tempValue[parseInt(index.toString(), 10)] - tempValue[index - 1]);\n }\n if ((((endDate.getTime() - startDate.getTime()) / (1000 * 3600)) >= Math.min.apply(Math, tempDiff) * 24)\n || isNullOrUndefined(interval)) {\n alertMessage = 'createError';\n }\n break;\n case 'MONTHLY':\n if (endDate.getTime() >= new Date(+startDate).setMonth(startDate.getMonth() + interval)) {\n alertMessage = 'createError';\n }\n break;\n case 'YEARLY':\n if (endDate.getTime() >= new Date(+startDate).setFullYear(startDate.getFullYear() + interval)) {\n alertMessage = 'createError';\n }\n break;\n }\n }\n }\n else {\n if (endDate.getTime() >= new Date(+startDate).setMonth(startDate.getMonth() + interval)) {\n alertMessage = 'createError';\n }\n if (isNullOrUndefined(alertMessage)) {\n this.parent.quickPopup.quickDialog.hide();\n }\n }\n if (isNullOrUndefined(interval)) {\n alertMessage = 'createError';\n }\n return alertMessage;\n };\n EventWindow.prototype.getRecurrenceIndex = function (recColl, event) {\n var recIndex;\n for (var index = 0; index < recColl.length; index++) {\n if (event[this.fields.startTime].valueOf() === recColl[parseInt(index.toString(), 10)][this.fields.startTime].valueOf()) {\n recIndex = index;\n break;\n }\n }\n return recIndex;\n };\n EventWindow.prototype.trimAllDay = function (data) {\n if (data[this.fields.isAllDay]) {\n var temp = util.addDays(new Date(+data[this.fields.endTime]), -1).getTime();\n data[this.fields.endTime] = (+data[this.fields.startTime] > temp) ? data[this.fields.endTime] : new Date(temp);\n }\n };\n EventWindow.prototype.editOccurrenceValidation = function (eventId, currentData, editData) {\n var _this = this;\n if (editData === void 0) {\n editData = this.eventData;\n }\n var recurColl = this.parent.getOccurrencesByID(eventId);\n var excludedDatas = this.parent.eventsData.filter(function (data) {\n return data[_this.fields.recurrenceID] === eventId;\n });\n excludedDatas.map(function (data) { return recurColl.push(extend({}, data)); });\n currentData = extend({}, currentData);\n this.trimAllDay(currentData);\n for (var _i = 0, recurColl_1 = recurColl; _i < recurColl_1.length; _i++) {\n var data = recurColl_1[_i];\n this.trimAllDay(data);\n }\n this.parent.eventBase.sortByTime(recurColl);\n var index = this.getRecurrenceIndex(recurColl, editData);\n if (isNullOrUndefined(index)) {\n return false;\n }\n var currentStartTime = new Date(+currentData[this.fields.startTime]);\n var currentEndTime = new Date(+currentData[this.fields.endTime]);\n var nextStartTime;\n var nextEndTime;\n if (index !== recurColl.length - 1) {\n nextStartTime = new Date(+recurColl[index + 1][this.fields.startTime]);\n nextEndTime = new Date(+recurColl[index + 1][this.fields.endTime]);\n }\n var lastEndTime = new Date(+recurColl[recurColl.length - 1][this.fields.endTime]);\n if (index === 0) {\n if (!isNullOrUndefined(recurColl[index + 1])) {\n if (!(nextStartTime.getTime() >= currentEndTime.getTime()) &&\n (util.resetTime(lastEndTime).getTime() >=\n util.resetTime(currentStartTime).getTime()) ||\n util.resetTime(lastEndTime).getTime() < util.resetTime(currentStartTime).getTime()) {\n this.parent.quickPopup.openRecurrenceValidationAlert('occurrenceAlert');\n return true;\n }\n else if (!(util.resetTime(currentStartTime).getTime() <\n util.resetTime(nextStartTime).getTime())) {\n this.parent.quickPopup.openRecurrenceValidationAlert('sameDayAlert');\n return true;\n }\n }\n return false;\n }\n else {\n var previousStartTime = new Date(+recurColl[index - 1][this.fields.startTime]);\n var previousEndTime = new Date(+recurColl[index - 1][this.fields.endTime]);\n if (index === recurColl.length - 1) {\n if (util.resetTime(new Date(+recurColl[(recurColl.length - 1) - index][this.fields.startTime])).getTime() >\n util.resetTime(currentStartTime).getTime()) {\n this.parent.quickPopup.openRecurrenceValidationAlert('occurrenceAlert');\n return true;\n }\n else if (!((previousEndTime.getTime() <= currentStartTime.getTime()) &&\n (util.resetTime(currentStartTime).getTime() > util.resetTime(previousStartTime).getTime()))) {\n this.parent.quickPopup.openRecurrenceValidationAlert('sameDayAlert');\n return true;\n }\n }\n else if (!(((util.resetTime(previousStartTime).getTime() < util.resetTime(currentStartTime).getTime()) ||\n util.resetTime(new Date(+recurColl[0][this.fields.startTime])).getTime() >\n util.resetTime(currentStartTime).getTime()) &&\n ((util.resetTime(nextStartTime).getTime() > util.resetTime(currentStartTime).getTime()) ||\n (lastEndTime.getTime() < currentStartTime.getTime())))) {\n this.parent.quickPopup.openRecurrenceValidationAlert('sameDayAlert');\n return true;\n }\n else if (!(previousEndTime.getTime() <= currentStartTime.getTime() && nextStartTime.getTime() >=\n currentEndTime.getTime()) || (util.resetTime(nextEndTime).getTime() <\n util.resetTime(currentStartTime).getTime()) ||\n (util.resetTime(previousStartTime).getTime() > util.resetTime(currentEndTime).getTime()) ||\n !(util.resetTime(currentStartTime).getTime() < util.resetTime(nextStartTime).getTime())) {\n this.parent.quickPopup.openRecurrenceValidationAlert('occurrenceAlert');\n return true;\n }\n }\n return false;\n };\n EventWindow.prototype.resourceSaveEvent = function (eventObj, action, currentAction) {\n var _this = this;\n var lastResourceData = this.parent.resourceBase.resourceCollection.slice(-1)[0];\n var resourceData = eventObj[lastResourceData.field];\n resourceData = (resourceData instanceof Array) ? resourceData.reverse() : [resourceData].reverse();\n var lastLevel = this.parent.resourceBase.lastResourceLevel;\n var eventList = [];\n var _loop_2 = function (i) {\n var events = extend({}, eventObj, null, true);\n events[this_2.fields.id] = this_2.parent.eventBase.getEventMaxID();\n var temp = [];\n var addValues = function () {\n if (action === 'Save' && i === resourceData.length - 1) {\n if (temp.length > 0) {\n temp[0][_this.fields.id] = eventObj[_this.fields.id];\n for (var k = 1; k < temp.length; k++) {\n temp[parseInt(k.toString(), 10)][_this.fields.id] = _this.parent.eventBase.getEventMaxID(i);\n eventList.push(temp[parseInt(k.toString(), 10)]);\n _this.parent.saveEvent(temp[0], currentAction);\n }\n }\n else {\n events[_this.fields.id] = eventObj[_this.fields.id];\n _this.parent.saveEvent(events, currentAction);\n }\n }\n else {\n if (temp.length > 0) {\n for (var j = 0; j < temp.length; j++) {\n temp[parseInt(j.toString(), 10)][_this.fields.id] = _this.parent.eventBase.getEventMaxID(j);\n eventList.push(temp[parseInt(j.toString(), 10)]);\n }\n }\n else {\n events[_this.fields.id] = _this.parent.eventBase.getEventMaxID(i);\n eventList.push(events);\n }\n }\n };\n if (this_2.parent.activeViewOptions.group.byGroupID && (!isNullOrUndefined(lastLevel))) {\n var lastResource = lastResourceData.dataSource;\n var resCol = this_2.parent.resourceCollection;\n var index = void 0;\n if (resCol.length > 1) {\n index =\n util.findIndexInData(lastResource, lastResourceData.idField, resourceData[parseInt(i.toString(), 10)], events, resCol);\n }\n else {\n index =\n util.findIndexInData(lastResource, lastResourceData.idField, resourceData[parseInt(i.toString(), 10)]);\n }\n if (index < 0) {\n return { value: void 0 };\n }\n var groupId_1 = lastResource[parseInt(index.toString(), 10)][lastResourceData.groupIDField];\n var filter = lastLevel.filter(function (obj) { return obj.resourceData[lastResourceData.idField] ===\n resourceData[parseInt(i.toString(), 10)]; }).\n filter(function (obj) { return obj.resourceData[lastResourceData.groupIDField] === groupId_1; })[0];\n var groupOrder = filter.groupOrder;\n for (var index_1 = 0; index_1 < this_2.parent.resourceBase.resourceCollection.length; index_1++) {\n var field = this_2.parent.resourceBase.resourceCollection[parseInt(index_1.toString(), 10)].field;\n events[\"\" + field] = (groupOrder[parseInt(index_1.toString(), 10)] instanceof Array) ? groupOrder[parseInt(index_1.toString(), 10)][0] :\n groupOrder[parseInt(index_1.toString(), 10)];\n }\n addValues();\n }\n else {\n for (var index = 0; index < this_2.parent.resourceBase.resourceCollection.length - 1; index++) {\n var field = this_2.parent.resourceBase.resourceCollection[parseInt(index.toString(), 10)].field;\n if (events[\"\" + field] instanceof Array && events[\"\" + field].length > 1) {\n for (var k = 0; k < events[\"\" + field].length; k++) {\n var event_3 = extend({}, events, null, true);\n event_3[\"\" + field] = eventObj[\"\" + field][parseInt(k.toString(), 10)];\n event_3[lastResourceData.field] = resourceData[parseInt(i.toString(), 10)];\n temp.push(event_3);\n }\n }\n else {\n if (temp.length === 0) {\n events[\"\" + field] = (eventObj[\"\" + field] instanceof Array) ?\n eventObj[\"\" + field][0] : eventObj[\"\" + field];\n events[lastResourceData.field] = resourceData[parseInt(i.toString(), 10)];\n }\n else {\n for (var l = 0; l < temp.length; l++) {\n temp[parseInt(l.toString(), 10)][\"\" + field] = (eventObj[\"\" + field] instanceof Array) ?\n eventObj[\"\" + field][0] : eventObj[\"\" + field];\n }\n }\n }\n }\n events[lastResourceData.field] = resourceData[parseInt(i.toString(), 10)];\n addValues();\n }\n };\n var this_2 = this;\n for (var i = 0; i < resourceData.length; i++) {\n var state_1 = _loop_2(i);\n if (typeof state_1 === \"object\")\n return state_1.value;\n }\n if (eventList.length > 0) {\n for (var _i = 0, eventList_1 = eventList; _i < eventList_1.length; _i++) {\n var event_4 = eventList_1[_i];\n event_4[this.fields.recurrenceException] = null;\n event_4[this.fields.recurrenceID] = null;\n }\n this.parent.addEvent(eventList);\n }\n };\n EventWindow.prototype.getEventIdFromForm = function () {\n return this.element.querySelector('.' + cls.FORM_CLASS).getAttribute('data-id');\n };\n EventWindow.prototype.getFormElements = function (className) {\n var elements = [];\n if (className === cls.EVENT_WINDOW_DIALOG_CLASS) {\n elements = [].slice.call(this.element.querySelectorAll('.' + EVENT_FIELD));\n }\n else {\n elements = [].slice.call(this.parent.element.querySelectorAll('.' + className + ' .' + EVENT_FIELD));\n }\n return elements;\n };\n EventWindow.prototype.getValueFromElement = function (element) {\n var value;\n if (element.classList.contains('e-datepicker')) {\n value = element.ej2_instances[0].value;\n }\n else if (element.classList.contains('e-datetimepicker')) {\n value = element.ej2_instances[0].value;\n }\n else if (element.classList.contains('e-dropdownlist')) {\n value = element.ej2_instances[0].value;\n }\n else if (element.classList.contains('e-multiselect')) {\n value = element.ej2_instances[0].value;\n }\n else if (element.classList.contains('e-checkbox')) {\n value = element.ej2_instances[0].checked;\n }\n else {\n if (element.type === 'checkbox') {\n value = element.checked;\n }\n else {\n value = this.parent.enableHtmlSanitizer ?\n SanitizeHtmlHelper.sanitize(element.value) : element.value;\n }\n }\n return value;\n };\n EventWindow.prototype.setValueToElement = function (element, value) {\n if (element.classList.contains('e-datepicker')) {\n var instance = element.ej2_instances[0];\n instance.value = value;\n instance.dataBind();\n }\n else if (element.classList.contains('e-datetimepicker')) {\n var instance = element.ej2_instances[0];\n if (instance.element.classList.contains(cls.EVENT_WINDOW_START_CLASS)) {\n this.eventWindowTime.startTime = new Date('' + value);\n }\n else {\n this.eventWindowTime.endTime = new Date('' + value);\n }\n instance.value = value;\n instance.dataBind();\n }\n else if (element.classList.contains('e-dropdownlist')) {\n var instance = element.ej2_instances[0];\n instance.value = value;\n instance.dataBind();\n }\n else if (element.classList.contains('e-multiselect')) {\n var instance = element.ej2_instances[0];\n instance.value = [];\n instance.value = ((value instanceof Array) ? value : [value]);\n instance.dataBind();\n }\n else if (element.classList.contains('e-checkbox')) {\n var instance = element.ej2_instances[0];\n instance.checked = value;\n instance.dataBind();\n }\n else {\n if (element.type !== 'checkbox') {\n element.value = value || '';\n }\n else {\n element.checked = value;\n }\n }\n };\n EventWindow.prototype.setDefaultValueToElement = function (element) {\n if (element.classList.contains('e-datepicker')) {\n var instance = element.ej2_instances[0];\n instance.value = this.parent.getCurrentTime();\n instance.dataBind();\n }\n else if (element.classList.contains('e-datetimepicker')) {\n var instance = element.ej2_instances[0];\n var dateValue = this.parent.getCurrentTime();\n this.eventWindowTime = { startTime: dateValue, endTime: dateValue };\n instance.value = dateValue;\n instance.dataBind();\n }\n else if (element.classList.contains('e-dropdownlist')) {\n var instance = element.ej2_instances[0];\n instance.value = null;\n instance.dataBind();\n }\n else if (element.classList.contains('e-multiselect')) {\n var instance = element.ej2_instances[0];\n instance.value = [];\n instance.dataBind();\n }\n else if (element.classList.contains('e-checkbox')) {\n var instance = element.ej2_instances[0];\n instance.checked = false;\n instance.dataBind();\n }\n else {\n if (element.type === 'checkbox') {\n element.checked = false;\n }\n else {\n element.value = '';\n }\n }\n };\n EventWindow.prototype.getInstance = function (className) {\n var element = this.element.querySelector('.' + className);\n return element ? element.ej2_instances[0] : null;\n };\n EventWindow.prototype.eventDelete = function (event) {\n if (this.isEnterKey) {\n this.isEnterKey = false;\n return;\n }\n switch (this.parent.currentAction) {\n case 'EditOccurrence':\n if (!isNullOrUndefined(this.parent.activeEventData.event[this.parent.eventFields.recurrenceRule])) {\n this.parent.currentAction = 'DeleteOccurrence';\n }\n else {\n this.parent.currentAction = 'Delete';\n }\n break;\n case 'EditSeries':\n this.parent.currentAction = 'DeleteSeries';\n break;\n case 'Save':\n this.parent.currentAction = 'Delete';\n break;\n case 'EditFollowingEvents':\n if (!isNullOrUndefined(this.parent.activeEventData.event[this.parent.eventFields.recurrenceRule])) {\n this.parent.currentAction = 'DeleteFollowingEvents';\n }\n break;\n }\n this.dialogEvent = event;\n this.isCrudAction = false;\n this.dialogObject.hide();\n this.parent.quickPopup.openDeleteAlert();\n };\n EventWindow.prototype.getRecurrenceEditorInstance = function () {\n if (this.parent.isAdaptive && !this.repeatDialogObject) {\n this.renderRepeatDialog();\n }\n return this.recurrenceEditor;\n };\n EventWindow.prototype.destroyComponents = function () {\n var formElements = this.getFormElements(cls.EVENT_WINDOW_DIALOG_CLASS);\n for (var _i = 0, formElements_3 = formElements; _i < formElements_3.length; _i++) {\n var element = formElements_3[_i];\n var instance = void 0;\n if (element.classList.contains('e-datetimepicker')) {\n instance = element.ej2_instances;\n }\n else if (element.classList.contains('e-datepicker')) {\n instance = element.ej2_instances;\n }\n else if (element.classList.contains('e-checkbox')) {\n instance = element.ej2_instances;\n }\n else if (element.classList.contains('e-dropdownlist')) {\n instance = element.ej2_instances;\n }\n else if (element.classList.contains('e-multiselect')) {\n instance = element.ej2_instances;\n }\n else if (element.classList.contains('e-numerictextbox')) {\n instance = element.ej2_instances;\n }\n if (instance && instance[0]) {\n instance[0].destroy();\n }\n }\n if (this.buttonObj) {\n this.buttonObj.destroy();\n }\n };\n EventWindow.prototype.detachComponents = function () {\n var formElements = this.getFormElements(cls.EVENT_WINDOW_DIALOG_CLASS);\n for (var _i = 0, formElements_4 = formElements; _i < formElements_4.length; _i++) {\n var element = formElements_4[_i];\n detach(element);\n }\n };\n EventWindow.prototype.destroy = function (isIgnore) {\n if (this.parent && !this.parent.isDestroyed) {\n this.parent.resetTemplates(['editorTemplate', 'editorHeaderTemplate', 'editorFooterTemplate']);\n }\n this.destroyComponents();\n if (this.recurrenceEditor) {\n this.recurrenceEditor.destroy();\n detach(this.recurrenceEditor.element);\n this.recurrenceEditor = null;\n }\n if (this.fieldValidator) {\n this.fieldValidator.destroy();\n this.fieldValidator = null;\n }\n if (this.repeatDialogObject) {\n this.repeatDialogObject.destroy();\n this.repeatDialogObject = null;\n }\n this.detachComponents();\n if (this.dialogObject) {\n if (this.dialogObject.element) {\n var form = this.dialogObject.element.querySelector('form');\n util.removeChildren(form);\n detach(form);\n EventHandler.remove(this.dialogObject.element, 'keydown', this.preventEventSave);\n }\n this.dialogObject.destroy();\n this.dialogObject = null;\n }\n if (this.element) {\n remove(this.element);\n this.element = null;\n }\n if (!isIgnore) {\n this.l10n = null;\n this.parent = null;\n this.fields = null;\n this.buttonObj = null;\n this.repeatStatus = null;\n this.eventWindowTime = null;\n this.dialogEvent = null;\n }\n };\n return EventWindow;\n}());\nexport { EventWindow };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { append, addClass, remove, isNullOrUndefined, setStyleAttribute, createElement, prepend } from '@syncfusion/ej2-base';\nimport * as events from '../base/constant';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\n/**\n * Virtual Scroll\n */\nvar VirtualScroll = /** @class */ (function () {\n function VirtualScroll(parent) {\n this.translateY = 0;\n this.itemSize = 60;\n this.bufferCount = 3;\n this.renderedLength = 0;\n this.averageRowHeight = 0;\n this.startIndex = 0;\n this.parent = parent;\n this.addEventListener();\n }\n VirtualScroll.prototype.addEventListener = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.parent.on(events.virtualScroll, this.virtualScrolling, this);\n };\n VirtualScroll.prototype.removeEventListener = function () {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.parent.off(events.virtualScroll, this.virtualScrolling);\n };\n VirtualScroll.prototype.getRenderedCount = function () {\n this.setItemSize();\n var containerSize = this.isHorizontalScroll ? this.parent.element.clientWidth : this.parent.element.clientHeight;\n this.renderedLength = Math.ceil(containerSize / this.itemSize) + this.bufferCount;\n return this.renderedLength;\n };\n VirtualScroll.prototype.renderVirtualTrack = function (contentWrap) {\n var wrap = createElement('div', { className: cls.VIRTUAL_TRACK_CLASS });\n if (this.isHorizontalScroll) {\n var colCount = this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1].length;\n wrap.style.width = (colCount * this.itemSize) + 'px';\n }\n else {\n wrap.style.height = (this.parent.resourceBase.expandedResources.length * this.itemSize) + 'px';\n }\n contentWrap.appendChild(wrap);\n };\n VirtualScroll.prototype.updateVirtualScrollHeight = function () {\n var virtual = this.parent.element.querySelector('.' + cls.VIRTUAL_TRACK_CLASS);\n var lastResourceIndex = this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1].groupIndex;\n var lastRenderIndex = this.parent.resourceBase.renderedResources[this.parent.resourceBase.renderedResources.length - 1].groupIndex;\n if (lastRenderIndex !== lastResourceIndex) {\n var conTable = this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS);\n this.renderedLength = conTable.querySelector('tbody').children.length;\n virtual.style.height = (conTable.offsetHeight + (this.parent.resourceBase.expandedResources.length - (this.renderedLength)) *\n conTable.offsetHeight / this.renderedLength) + 'px';\n }\n else {\n virtual.style.height = '';\n }\n this.averageRowHeight = virtual.offsetHeight / this.parent.resourceBase.expandedResources.length;\n };\n VirtualScroll.prototype.updateVirtualTrackHeight = function (wrap) {\n var resourceCount = this.parent.resourceBase.renderedResources.length;\n if (resourceCount !== this.getRenderedCount()) {\n wrap.style.height = this.parent.element.querySelector('.e-content-wrap').clientHeight + 'px';\n var resWrap = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);\n var conWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var eventWrap = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);\n this.translateY = 0;\n this.setTranslate(resWrap, conWrap, eventWrap);\n }\n else {\n var lastRenderIndex = this.parent.resourceBase.renderedResources[resourceCount - 1].groupIndex;\n var lastCollIndex = this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1].groupIndex;\n var renderedResCount = resourceCount + (lastCollIndex - lastRenderIndex);\n renderedResCount = (renderedResCount > this.parent.resourceBase.expandedResources.length) ?\n this.parent.resourceBase.expandedResources.length : renderedResCount;\n wrap.style.height = (renderedResCount * this.itemSize) + 'px';\n }\n };\n VirtualScroll.prototype.setItemSize = function () {\n if (this.isHorizontalScroll) {\n this.itemSize = util.getElementWidthFromClass(this.parent.activeView.element, cls.WORK_CELLS_CLASS) || this.itemSize;\n }\n else {\n this.itemSize = util.getElementHeightFromClass(this.parent.activeView.element, cls.WORK_CELLS_CLASS) || this.itemSize;\n }\n };\n VirtualScroll.prototype.renderEvents = function () {\n this.setTabIndex();\n var dynamicData = this.triggerScrollEvent(events.virtualScrollStop);\n if (this.parent.activeViewOptions && this.parent.activeViewOptions.enableLazyLoading && this.parent.crudModule) {\n if (dynamicData.length > 0) {\n this.parent.crudModule.refreshProcessedData(true, dynamicData);\n this.parent.hideSpinner();\n return;\n }\n this.parent.crudModule.refreshDataManager();\n return;\n }\n if (this.parent.crudModule) {\n this.parent.crudModule.refreshProcessedData(true);\n }\n if (this.parent.currentView !== 'Month') {\n this.parent.notify(events.contentReady, {});\n }\n this.parent.hideSpinner();\n };\n VirtualScroll.prototype.virtualScrolling = function () {\n var _this = this;\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide();\n this.parent.quickPopup.morePopup.hide();\n }\n var conWrap = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n if (this.isHorizontalScroll) {\n this.horizontalScrolling(conWrap);\n }\n else {\n var resWrap = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);\n var eventWrap = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);\n var timeIndicator = this.parent.element.querySelector('.' + cls.CURRENT_TIMELINE_CLASS);\n var conTable = this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS);\n addClass([conWrap], 'e-transition');\n this.renderedLength = resWrap.querySelector('tbody').children.length;\n var firstTDIndex = parseInt(resWrap.querySelector('tbody td').getAttribute('data-group-index'), 10);\n var scrollHeight = this.parent.rowAutoHeight ?\n (conTable.offsetHeight - conWrap.offsetHeight) : this.bufferCount * this.itemSize;\n var resCollection = [];\n if ((conWrap.scrollTop) - this.translateY < 0) {\n resCollection = this.upScroll(conWrap, firstTDIndex);\n }\n else if (conWrap.scrollTop - this.translateY > scrollHeight) {\n resCollection = this.downScroll(conWrap, firstTDIndex);\n }\n if (!isNullOrUndefined(resCollection) && resCollection.length > 0) {\n this.triggerScrollEvent(events.virtualScrollStart);\n var selectedEle = this.parent.getSelectedCells();\n this.focusedEle = selectedEle[selectedEle.length - 1] || this.focusedEle;\n this.updateContent(resWrap, conWrap, eventWrap, resCollection);\n this.setTranslate(resWrap, conWrap, eventWrap, timeIndicator);\n if (this.parent.dragAndDropModule && this.parent.dragAndDropModule.actionObj.action === 'drag') {\n this.parent.dragAndDropModule.navigationWrapper();\n }\n window.clearTimeout(this.timeValue);\n this.timeValue = window.setTimeout(function () { _this.renderEvents(); }, 250);\n }\n }\n };\n VirtualScroll.prototype.horizontalScrolling = function (conWrap) {\n var _this = this;\n var resCollection = [];\n var scrollWidth = this.bufferCount * this.itemSize;\n if (Math.abs(conWrap.scrollLeft) - Math.abs(this.translateY) < 0) {\n resCollection = this.leftScroll(conWrap);\n }\n else if (Math.abs(conWrap.scrollLeft) - Math.abs(this.translateY) > scrollWidth) {\n resCollection = this.rightScroll(conWrap);\n }\n if (!isNullOrUndefined(resCollection) && resCollection.length > 0) {\n if (this.parent.resourceBase.expandedResources.length !== resCollection.length ||\n this.parent.resourceBase.expandedResources[0] !== resCollection[0] ||\n this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1] !==\n resCollection[resCollection.length - 1]) {\n this.triggerScrollEvent(events.virtualScrollStart);\n var colLevels = this.parent.activeView.colLevels.slice(0);\n this.updateHorizontalContent(conWrap, resCollection);\n setStyleAttribute(conWrap.querySelector('table'), { transform: \"translateX(\" + this.translateY + \"px)\" });\n this.parent.activeView.colLevels = colLevels;\n if (this.parent.dragAndDropModule && this.parent.dragAndDropModule.actionObj.action === 'drag') {\n this.parent.dragAndDropModule.navigationWrapper();\n }\n }\n window.clearTimeout(this.timeValue);\n this.timeValue = window.setTimeout(function () { _this.renderEvents(); }, 250);\n }\n };\n VirtualScroll.prototype.triggerScrollEvent = function (action) {\n var _this = this;\n var dynamicData = [];\n if (!this.parent.activeView) {\n return dynamicData;\n }\n var eventArgs = {\n startDate: this.parent.activeView.startDate(),\n endDate: this.parent.activeView.endDate(),\n startIndex: this.parent.resourceBase.renderedResources[0].groupIndex,\n endIndex: this.parent.resourceBase.renderedResources[this.parent.resourceBase.renderedResources.length - 1].groupIndex,\n resourceData: this.parent.resourceBase.renderedResources.map(function (x) { return x.resourceData; }),\n name: action\n };\n this.parent.trigger(action, eventArgs, function (args) {\n if (action === events.virtualScrollStart) {\n _this.parent.showSpinner();\n }\n else if (action === events.virtualScrollStop && !isNullOrUndefined(args.eventData) && args.eventData.length > 0) {\n dynamicData = args.eventData;\n }\n });\n return dynamicData;\n };\n VirtualScroll.prototype.upScroll = function (conWrap, firstTDIndex) {\n var index = 0;\n index = (~~(conWrap.scrollTop / this.itemSize) + Math.ceil(conWrap.clientHeight / this.itemSize)) - this.renderedLength;\n if (this.parent.rowAutoHeight) {\n index = (index > firstTDIndex) ? firstTDIndex - this.bufferCount : index;\n }\n index = (index > 0) ? index : 0;\n var prevSetCollection = this.getBufferCollection(index, index + this.renderedLength);\n this.parent.resourceBase.renderedResources = prevSetCollection;\n if (firstTDIndex === 0) {\n this.translateY = conWrap.scrollTop;\n }\n else {\n var height = (this.parent.rowAutoHeight) ? this.averageRowHeight : this.itemSize;\n height = (height > 0) ? height : this.itemSize;\n this.translateY = (conWrap.scrollTop - (this.bufferCount * height) > 0) ?\n conWrap.scrollTop - (this.bufferCount * height) : 0;\n }\n return prevSetCollection;\n };\n VirtualScroll.prototype.downScroll = function (conWrap, firstTDIndex) {\n var lastResource = this.parent.resourceBase.\n renderedResources[this.parent.resourceBase.renderedResources.length - 1].groupIndex;\n var lastResourceIndex = this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1].groupIndex;\n if (lastResource === lastResourceIndex) {\n return null;\n }\n var nextSetResIndex = 0;\n nextSetResIndex = ~~(conWrap.scrollTop / this.itemSize);\n if (this.parent.rowAutoHeight) {\n nextSetResIndex = ~~((conWrap.scrollTop - this.translateY) / this.averageRowHeight) + firstTDIndex;\n nextSetResIndex = (nextSetResIndex > firstTDIndex + this.bufferCount) ? nextSetResIndex : firstTDIndex + this.bufferCount;\n }\n var lastIndex = nextSetResIndex + this.renderedLength;\n lastIndex = (lastIndex > this.parent.resourceBase.expandedResources.length) ?\n nextSetResIndex + (this.parent.resourceBase.expandedResources.length - nextSetResIndex) : lastIndex;\n var nextSetCollection = this.getBufferCollection(lastIndex - this.renderedLength, lastIndex);\n this.translateY = conWrap.scrollTop;\n return nextSetCollection;\n };\n VirtualScroll.prototype.leftScroll = function (conWrap) {\n var index = 0;\n index = (~~(Math.abs(conWrap.scrollLeft) / this.itemSize) + Math.ceil(conWrap.clientWidth / this.itemSize)) - this.renderedLength;\n index = (index > 0) ? index : 0;\n return this.getCollection(index, index + this.renderedLength);\n };\n VirtualScroll.prototype.rightScroll = function (conWrap) {\n var lastLevel = this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1];\n var nextSetIndex = 0;\n nextSetIndex = ~~(Math.abs(conWrap.scrollLeft) / this.itemSize);\n var lastIndex = nextSetIndex + this.renderedLength;\n lastIndex = (lastIndex > lastLevel.length - 1) ? lastLevel.length - 1 : lastIndex;\n return this.getCollection(lastIndex - this.renderedLength, lastIndex);\n };\n VirtualScroll.prototype.getCollection = function (startIndex, endIndex) {\n this.translateY = startIndex * this.itemSize;\n var lastLevel = this.getResCollection(startIndex, endIndex);\n if (this.parent.enableRtl) {\n this.translateY = -this.translateY;\n }\n return lastLevel;\n };\n VirtualScroll.prototype.getResCollection = function (startIndex, endIndex) {\n var lastLevel = this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1];\n var resCollection = [];\n var index = { startIndex: 0, endIndex: 0 };\n if (this.parent.activeViewOptions.group.byDate) {\n if (lastLevel[parseInt(startIndex.toString(), 10)].date.getTime() ===\n this.parent.resourceBase.expandedResources[0].date.getTime() &&\n lastLevel[parseInt(endIndex.toString(), 10)].date.getTime() ===\n this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1].date.getTime()) {\n return this.parent.resourceBase.expandedResources;\n }\n resCollection =\n this.getByDateCollection(lastLevel[parseInt(startIndex.toString(), 10)], lastLevel[parseInt(endIndex.toString(), 10)], index);\n this.setRenderedDates(resCollection);\n }\n else {\n if (lastLevel[parseInt(startIndex.toString(), 10)].groupIndex === this.parent.resourceBase.expandedResources[0].groupIndex &&\n lastLevel[parseInt(endIndex.toString(), 10)].groupIndex ===\n this.parent.resourceBase.expandedResources[this.parent.resourceBase.expandedResources.length - 1].groupIndex) {\n return this.parent.resourceBase.expandedResources;\n }\n resCollection =\n this.getByIdCollection(lastLevel[parseInt(startIndex.toString(), 10)], lastLevel[parseInt(endIndex.toString(), 10)], index);\n }\n if (this.parent.currentView !== 'Month') {\n this.startIndex = index.startIndex;\n resCollection = lastLevel.slice(index.startIndex, index.endIndex);\n }\n this.translateY = index.startIndex * this.itemSize;\n return resCollection;\n };\n VirtualScroll.prototype.getByDateCollection = function (firstItem, lastItem, index) {\n var resCollection = this.parent.activeView.colLevels[0].filter(function (data) {\n return firstItem.date.getTime() <= data.date.getTime() &&\n data.date.getTime() <= lastItem.date.getTime();\n });\n this.setStartEndIndex(this.parent.activeView.colLevels[0], resCollection[0], resCollection[resCollection.length - 1], index);\n return resCollection;\n };\n VirtualScroll.prototype.getByIdCollection = function (firstItem, lastItem, index) {\n var resCollection = this.parent.resourceBase.lastResourceLevel.filter(function (data) {\n return firstItem.groupIndex <= data.groupIndex && data.groupIndex <= lastItem.groupIndex;\n });\n this.parent.resourceBase.renderedResources = resCollection;\n this.setStartEndIndex(this.parent.resourceBase.lastResourceLevel, resCollection[0], resCollection[resCollection.length - 1], index);\n return resCollection;\n };\n VirtualScroll.prototype.setStartEndIndex = function (data, firstItem, lastItem, colIndex) {\n var index = 0;\n data.filter(function (data) {\n if (firstItem === data) {\n colIndex.startIndex = index;\n }\n else if (lastItem === data) {\n colIndex.endIndex = index + data.colSpan;\n }\n index += data.colSpan;\n });\n if (firstItem === lastItem) {\n colIndex.endIndex = colIndex.startIndex + lastItem.colSpan;\n }\n };\n VirtualScroll.prototype.updateContent = function (resWrap, conWrap, eventWrap, resCollection) {\n var renderedLength = resWrap.querySelector('tbody').children.length;\n if (document.activeElement && document.activeElement.classList.contains(cls.RESOURCE_CELLS_CLASS)) {\n this.isResourceCell = true;\n this.parent.element.focus();\n }\n for (var i = 0; i < renderedLength; i++) {\n remove(resWrap.querySelector('tbody tr'));\n remove(conWrap.querySelector('tbody tr'));\n remove(eventWrap.querySelector('div'));\n }\n this.parent.resourceBase.renderedResources = resCollection;\n var resourceRows = this.parent.resourceBase.getContentRows(resCollection, true);\n var contentRows = this.parent.activeView.getContentRows();\n var eventRows = this.parent.activeView.getEventRows(resCollection.length);\n append(resourceRows, resWrap.querySelector('tbody'));\n append(contentRows, conWrap.querySelector('tbody'));\n append(eventRows, eventWrap);\n };\n VirtualScroll.prototype.updateHorizontalContent = function (conWrap, resCollection) {\n this.parent.resourceBase.expandedResources = resCollection;\n var selectedEle = this.parent.getSelectedCells();\n this.focusedEle = selectedEle[selectedEle.length - 1] || this.focusedEle;\n var renderedLength = conWrap.querySelectorAll('tbody tr').length;\n for (var i = 0; i < renderedLength; i++) {\n remove(conWrap.querySelector('tbody tr'));\n }\n if (this.parent.currentView === 'Month') {\n if (this.parent.activeViewOptions.group.byDate) {\n this.parent.activeView.colLevels[0] = resCollection;\n }\n else {\n this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 2] = resCollection;\n }\n var contentRows = this.parent.activeView.getContentRows();\n append(contentRows, conWrap.querySelector('tbody'));\n }\n else {\n var col = [].slice.call(conWrap.querySelector('colgroup').children);\n for (var i = 0; i < col.length; i++) {\n remove(col[parseInt(i.toString(), 10)]);\n }\n this.parent.activeView.colLevels[this.parent.activeView.colLevels.length - 1] = resCollection;\n var contentRows = this.parent.activeView.getContentRows();\n var table = conWrap.querySelector('table');\n var thead = conWrap.querySelector('thead');\n var colGroupEle_1 = conWrap.querySelector('colgroup');\n resCollection.forEach(function () {\n colGroupEle_1.appendChild(createElement('col'));\n });\n thead.appendChild(this.parent.eventBase.createEventWrapper('', this.startIndex > 0 ? this.startIndex : 0));\n if (this.parent.activeViewOptions.timeScale.enable) {\n thead.appendChild(this.parent.eventBase.createEventWrapper('timeIndicator'));\n }\n prepend([thead], table);\n append(contentRows, conWrap.querySelector('tbody'));\n }\n };\n VirtualScroll.prototype.getBufferCollection = function (startIndex, endIndex) {\n return this.parent.resourceBase.expandedResources.slice(startIndex, endIndex);\n };\n VirtualScroll.prototype.setTranslate = function (resWrap, conWrap, eventWrap, timeIndicator) {\n setStyleAttribute(resWrap.querySelector('table'), { transform: \"translateY(\" + this.translateY + \"px)\" });\n setStyleAttribute(conWrap.querySelector('table'), { transform: \"translateY(\" + this.translateY + \"px)\" });\n setStyleAttribute(eventWrap, { transform: \"translateY(\" + this.translateY + \"px)\" });\n if (!isNullOrUndefined(timeIndicator)) {\n setStyleAttribute(timeIndicator, { transform: \"translateY(\" + this.translateY + \"px)\" });\n }\n };\n VirtualScroll.prototype.updateFocusedWorkCell = function () {\n if (this.focusedEle) {\n var date = parseInt(this.focusedEle.getAttribute('data-date'), 10);\n var groupIndex = parseInt(this.focusedEle.getAttribute('data-group-index'), 10);\n var ele = this.parent.element.querySelector(\".\" + cls.WORK_CELLS_CLASS + \"[data-date=\\\"\" + date + \"\\\"][data-group-index=\\\"\" + groupIndex + \"\\\"]\");\n if (ele) {\n this.parent.addSelectedClass([ele], ele, true);\n }\n this.focusedEle = null;\n }\n };\n VirtualScroll.prototype.setRenderedDates = function (resCollection) {\n if (this.parent.currentView !== 'Month') {\n var dateCol_1 = resCollection.map(function (x) { return x.date; });\n this.parent.resourceBase.renderedResources.forEach(function (x) { return x.renderDates = dateCol_1; });\n }\n else {\n var dateCol_2 = resCollection.map(function (x) { return x.date.getDay(); });\n var renderDates_1 = this.parent.activeView.renderDates.filter(function (x) { return dateCol_2.indexOf(x.getDay()) >= 0; });\n this.parent.resourceBase.renderedResources.forEach(function (x) { return x.renderDates = renderDates_1; });\n }\n };\n VirtualScroll.prototype.setTabIndex = function () {\n var resColWrap = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS);\n var resCells = [].slice.call(this.parent.element.querySelectorAll('.' + cls.RESOURCE_CELLS_CLASS));\n if (resCells && resColWrap) {\n resCells.forEach(function (element) {\n if (element.getBoundingClientRect().top >= resColWrap.getBoundingClientRect().top) {\n element.setAttribute('tabindex', '0');\n }\n });\n }\n var focusResCell = this.parent.element.querySelector(\".\" + cls.RESOURCE_CELLS_CLASS + \"[tabindex=\\\"\" + 0 + \"\\\"]\");\n if (this.isResourceCell && focusResCell) {\n focusResCell.focus();\n this.isResourceCell = false;\n }\n };\n VirtualScroll.prototype.destroy = function () {\n this.removeEventListener();\n this.focusedEle = null;\n };\n return VirtualScroll;\n}());\nexport { VirtualScroll };\n","import { isNullOrUndefined, addClass, removeClass } from '@syncfusion/ej2-base';\nimport { VirtualScroll } from '../actions/virtual-scroll';\nimport { EventTooltip } from '../popups/event-tooltip';\nimport * as cls from '../base/css-constant';\n/**\n * Schedule DOM rendering\n */\nvar Render = /** @class */ (function () {\n function Render(parent) {\n this.parent = parent;\n }\n Render.prototype.render = function (viewName, isDataRefresh) {\n if (isDataRefresh === void 0) { isDataRefresh = true; }\n this.initializeLayout(viewName);\n if (this.parent.activeView && isDataRefresh) {\n this.parent.crudModule.refreshDataManager();\n }\n };\n Render.prototype.initializeLayout = function (viewName) {\n if (this.parent.activeView) {\n var templates = [\n 'cellTemplate', 'eventTemplate', 'tooltipTemplate', 'majorSlotTemplate', 'minorSlotTemplate',\n 'headerTooltipTemplate', 'dateHeaderTemplate', 'dayHeaderTemplate', 'monthHeaderTemplate',\n 'headerIndentTemplate', 'resourceHeaderTemplate', 'cellHeaderTemplate', 'dateRangeTemplate'\n ];\n this.parent.resetTemplates(templates);\n this.parent.activeView.removeEventListener();\n this.parent.activeView.destroy();\n }\n switch (viewName) {\n case 'Day':\n this.parent.activeView = this.parent.dayModule;\n break;\n case 'Week':\n this.parent.activeView = this.parent.weekModule;\n break;\n case 'WorkWeek':\n this.parent.activeView = this.parent.workWeekModule;\n break;\n case 'Month':\n this.parent.activeView = this.parent.monthModule;\n break;\n case 'Year':\n this.parent.activeView = this.parent.yearModule;\n break;\n case 'Agenda':\n this.parent.activeView = this.parent.agendaModule;\n break;\n case 'MonthAgenda':\n this.parent.activeView = this.parent.monthAgendaModule;\n break;\n case 'TimelineDay':\n this.parent.activeView = this.parent.timelineViewsModule;\n this.parent.activeView.viewClass = 'e-timeline-day-view';\n break;\n case 'TimelineWorkWeek':\n this.parent.activeView = this.parent.timelineViewsModule;\n this.parent.activeView.viewClass = 'e-timeline-work-week-view';\n break;\n case 'TimelineWeek':\n this.parent.activeView = this.parent.timelineViewsModule;\n this.parent.activeView.viewClass = 'e-timeline-week-view';\n break;\n case 'TimelineMonth':\n this.parent.activeView = this.parent.timelineMonthModule;\n break;\n case 'TimelineYear':\n this.parent.activeView = this.parent.timelineYearModule;\n break;\n }\n if (isNullOrUndefined(this.parent.activeView)) {\n var firstView = this.parent.viewCollections[0].option;\n if (firstView) {\n this.parent.setProperties({ currentView: firstView }, true);\n if (this.parent.headerModule) {\n this.parent.headerModule.updateActiveView();\n this.parent.headerModule.setCalendarView();\n }\n return this.initializeLayout(firstView);\n }\n throw Error('Inject required modules');\n }\n this.parent.activeView.viewIndex = this.parent.viewIndex;\n this.updateLabelText(viewName);\n this.parent.activeView.addEventListener();\n this.parent.activeView.getRenderDates();\n this.parent.uiStateValues.isGroupAdaptive = this.parent.activeViewOptions.group.resources.length > 0 &&\n (this.parent.enableAdaptiveUI && !this.parent.isAdaptive ||\n this.parent.isAdaptive && this.parent.activeViewOptions.group.enableCompactView);\n if (this.parent.virtualScrollModule) {\n this.parent.virtualScrollModule.destroy();\n this.parent.virtualScrollModule = null;\n }\n if ((['Agenda', 'MonthAgenda', 'Year', 'TimelineYear'].indexOf(this.parent.currentView) === -1 ||\n (this.parent.currentView === 'TimelineYear' && this.parent.activeViewOptions.orientation === 'Vertical'))\n && this.parent.activeViewOptions.allowVirtualScrolling\n && this.parent.activeViewOptions.group.resources.length > 0 && !this.parent.uiStateValues.isGroupAdaptive) {\n this.parent.virtualScrollModule = new VirtualScroll(this.parent);\n if (this.parent.activeView.isTimelineView()) {\n this.parent.uiStateValues.top = 0;\n }\n else {\n this.parent.virtualScrollModule.isHorizontalScroll = true;\n this.parent.uiStateValues.left = 0;\n }\n }\n this.updateHeader();\n this.parent.currentTimezoneDate = this.parent.getCurrentTime();\n this.parent.activeView.renderLayout(cls.CURRENT_PANEL_CLASS);\n this.parent.renderTemplates();\n if (this.parent.eventTooltip) {\n this.parent.eventTooltip.destroy();\n this.parent.eventTooltip = null;\n }\n if (this.parent.eventSettings.enableTooltip || (this.parent.activeViewOptions.group.resources.length > 0\n && this.parent.activeViewOptions.group.headerTooltipTemplate)) {\n this.parent.eventTooltip = new EventTooltip(this.parent);\n }\n };\n Render.prototype.updateHeader = function () {\n if (this.parent.headerModule) {\n this.parent.headerModule.setDayOfWeek(this.parent.activeViewOptions.firstDayOfWeek);\n if (this.parent.activeViewOptions.readonly) {\n addClass([this.parent.element], cls.READ_ONLY);\n }\n else if (this.parent.element.classList.contains(cls.READ_ONLY)) {\n removeClass([this.parent.element], cls.READ_ONLY);\n }\n this.parent.headerModule.updateDateRange();\n this.parent.headerModule.updateHeaderItems('remove');\n }\n };\n Render.prototype.updateLabelText = function (view) {\n var content = this.parent.activeView.getLabelText(view);\n this.parent.element.setAttribute('role', 'application');\n this.parent.element.setAttribute('aria-label', content);\n };\n return Render;\n}());\nexport { Render };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * A class that represents the configuration of working hours related options of scheduler.\n */\nvar WorkHours = /** @class */ (function (_super) {\n __extends(WorkHours, _super);\n function WorkHours() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], WorkHours.prototype, \"highlight\", void 0);\n __decorate([\n Property('09:00')\n ], WorkHours.prototype, \"start\", void 0);\n __decorate([\n Property('18:00')\n ], WorkHours.prototype, \"end\", void 0);\n return WorkHours;\n}(ChildProperty));\nexport { WorkHours };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * A class that represents the configuration of options related to timescale on scheduler.\n */\nvar TimeScale = /** @class */ (function (_super) {\n __extends(TimeScale, _super);\n function TimeScale() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(true)\n ], TimeScale.prototype, \"enable\", void 0);\n __decorate([\n Property(60)\n ], TimeScale.prototype, \"interval\", void 0);\n __decorate([\n Property(2)\n ], TimeScale.prototype, \"slotCount\", void 0);\n __decorate([\n Property()\n ], TimeScale.prototype, \"minorSlotTemplate\", void 0);\n __decorate([\n Property()\n ], TimeScale.prototype, \"majorSlotTemplate\", void 0);\n return TimeScale;\n}(ChildProperty));\nexport { TimeScale };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * A class that defines the template options available to customize the quick popup of scheduler.\n */\nvar QuickInfoTemplates = /** @class */ (function (_super) {\n __extends(QuickInfoTemplates, _super);\n function QuickInfoTemplates() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Both')\n ], QuickInfoTemplates.prototype, \"templateType\", void 0);\n __decorate([\n Property()\n ], QuickInfoTemplates.prototype, \"header\", void 0);\n __decorate([\n Property()\n ], QuickInfoTemplates.prototype, \"content\", void 0);\n __decorate([\n Property()\n ], QuickInfoTemplates.prototype, \"footer\", void 0);\n return QuickInfoTemplates;\n}(ChildProperty));\nexport { QuickInfoTemplates };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * A class that represents the header rows related configurations on timeline views.\n */\nvar HeaderRows = /** @class */ (function (_super) {\n __extends(HeaderRows, _super);\n function HeaderRows() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], HeaderRows.prototype, \"option\", void 0);\n __decorate([\n Property()\n ], HeaderRows.prototype, \"template\", void 0);\n return HeaderRows;\n}(ChildProperty));\nexport { HeaderRows };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable max-len */\nimport { isNullOrUndefined, extend, removeClass } from '@syncfusion/ej2-base';\nimport { getRecurrenceStringFromDate, generate } from '../../recurrence-editor/date-generator';\nimport * as events from '../base/constant';\nimport * as util from '../base/util';\n/**\n * Schedule CRUD operations\n */\nvar Crud = /** @class */ (function () {\n function Crud(parent) {\n this.parent = parent;\n this.crudObj = { sourceEvent: null, targetEvent: null, isCrudAction: false };\n }\n Crud.prototype.getQuery = function () {\n var start = this.parent.activeView.startDate();\n var end = this.parent.activeView.endDate();\n return this.parent.dataModule.generateQuery(start, end);\n };\n Crud.prototype.getTable = function () {\n if (this.parent.eventSettings.query) {\n var query = this.parent.eventSettings.query.clone();\n return query.fromTable;\n }\n return null;\n };\n Crud.prototype.refreshDataManager = function () {\n var _this = this;\n if (!this.parent.activeView) {\n return;\n }\n var start = this.parent.activeView.startDate();\n var end = this.parent.activeView.endDate();\n var dataManager = this.parent.dataModule.getData(this.parent.dataModule.generateQuery(start, end));\n dataManager.then(function (e) { return _this.dataManagerSuccess(e); }).catch(function (e) { return _this.dataManagerFailure(e); });\n };\n Crud.prototype.dataManagerSuccess = function (e) {\n var _this = this;\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.parent.trigger(events.dataBinding, e, function (args) {\n var resultData = extend([], args.result, null, true);\n _this.parent.eventsData = resultData.filter(function (data) { return !data[_this.parent.eventFields.isBlock]; });\n _this.parent.blockData = resultData.filter(function (data) { return data[_this.parent.eventFields.isBlock]; });\n _this.refreshProcessedData();\n if (_this.parent.dragAndDropModule && _this.parent.dragAndDropModule.actionObj.action === 'drag') {\n _this.parent.dragAndDropModule.navigationWrapper();\n }\n _this.parent.trigger(events.dataBound, null, function () {\n _this.parent.hideSpinner();\n if (_this.parent.isPrinting) {\n _this.parent.notify(events.print, {});\n }\n });\n });\n };\n Crud.prototype.dataManagerFailure = function (e) {\n var _this = this;\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.parent.trigger(events.actionFailure, { error: e }, function () { return _this.parent.hideSpinner(); });\n };\n Crud.prototype.refreshProcessedData = function (isVirtualScrollAction, dynamicEvents) {\n if (isVirtualScrollAction === void 0) { isVirtualScrollAction = false; }\n if (this.parent.dragAndDropModule) {\n this.parent.dragAndDropModule.actionObj.action = '';\n removeClass([this.parent.element], 'e-event-action');\n }\n if (this.parent.activeViewOptions && this.parent.activeViewOptions.eventTemplate) {\n var templateNames = ['eventTemplate'];\n if (this.crudObj.isCrudAction &&\n ['Agenda', 'MonthAgenda', 'Year', 'TimelineYear'].indexOf(this.parent.currentView) === -1) {\n templateNames = [];\n for (var i = 0, len = this.crudObj.sourceEvent.length; i < len; i++) {\n templateNames.push('eventTemplate_' + this.crudObj.sourceEvent[parseInt(i.toString(), 10)].groupIndex);\n if (this.crudObj.targetEvent[parseInt(i.toString(), 10)] && this.crudObj.sourceEvent[parseInt(i.toString(), 10)].groupIndex !==\n this.crudObj.targetEvent[parseInt(i.toString(), 10)].groupIndex) {\n templateNames.push('eventTemplate_' + this.crudObj.targetEvent[parseInt(i.toString(), 10)].groupIndex);\n }\n }\n }\n if (templateNames.length > 0) {\n this.parent.resetTemplates(templateNames);\n }\n }\n if (isVirtualScrollAction) {\n this.parent.notify(events.dataReady, { processedData: dynamicEvents ? this.parent.eventBase.processData(dynamicEvents) : this.parent.eventsProcessed });\n return;\n }\n var eventsData = this.parent.eventsData || [];\n var blockData = this.parent.blockData || [];\n var data = eventsData.concat(blockData);\n this.parent.notify(events.dataReady, { processedData: this.parent.eventBase ? this.parent.eventBase.processData(data) : [] });\n };\n Crud.prototype.refreshData = function (args) {\n var _this = this;\n var actionArgs = {\n requestType: args.requestType, cancel: false, data: args.data,\n addedRecords: args.editParams.addedRecords, changedRecords: args.editParams.changedRecords,\n deletedRecords: args.editParams.deletedRecords\n };\n if (this.parent.dragAndDropModule && this.parent.dragAndDropModule.actionObj && this.parent.dragAndDropModule.actionObj.element) {\n this.parent.dragAndDropModule.actionObj.element.style.display = 'none';\n }\n if (this.parent.resizeModule && this.parent.resizeModule.actionObj && this.parent.resizeModule.actionObj.element) {\n this.parent.resizeModule.actionObj.element.style.display = 'none';\n }\n if (this.parent.isSpecificResourceEvents()) {\n if (args.requestType === 'eventCreated' || args.requestType === 'eventRemoved') {\n this.crudObj.isCrudAction = true;\n this.crudObj.sourceEvent = [];\n var crudData = args.data instanceof Array ? (args.data.length === 0 &&\n args.requestType === 'eventRemoved' ? args.editParams.deletedRecords : args.data) :\n ((typeof args.data === 'string' || typeof args.data === 'number') && args.requestType === 'eventRemoved') ?\n args.editParams.deletedRecords : [args.data];\n var _loop_1 = function (data) {\n this_1.crudObj.isCrudAction = !(args.requestType === 'eventRemoved' && !isNullOrUndefined(data.parent));\n var groupIndex = this_1.parent.eventBase.getGroupIndexFromEvent(data);\n if (groupIndex > -1 && this_1.parent.crudModule.crudObj.sourceEvent.filter(function (tdData) { return tdData.groupIndex === groupIndex; }).length === 0\n && this_1.crudObj.isCrudAction) {\n this_1.crudObj.sourceEvent.push(this_1.parent.resourceBase.lastResourceLevel[parseInt(groupIndex.toString(), 10)]);\n }\n };\n var this_1 = this;\n for (var _i = 0, crudData_1 = crudData; _i < crudData_1.length; _i++) {\n var data = crudData_1[_i];\n _loop_1(data);\n }\n this.crudObj.targetEvent = this.crudObj.sourceEvent;\n }\n }\n if (this.parent.dataModule.dataManager.dataSource.offline) {\n this.parent.trigger(events.actionComplete, actionArgs, function (offlineArgs) {\n if (!offlineArgs.cancel) {\n _this.refreshDataManager();\n }\n });\n }\n else {\n args.promise.then(function () {\n if (!_this.parent || _this.parent && _this.parent.isDestroyed) {\n return;\n }\n _this.parent.trigger(events.actionComplete, actionArgs, function (onlineArgs) {\n if (!onlineArgs.cancel) {\n _this.refreshDataManager();\n }\n });\n }).catch(function (e) {\n if (!_this.parent || _this.parent && _this.parent.isDestroyed) {\n return;\n }\n _this.parent.trigger(events.actionFailure, { error: e });\n });\n }\n };\n Crud.prototype.addEvent = function (eventData) {\n var _this = this;\n if (this.parent.eventSettings.allowAdding && !this.parent.activeViewOptions.readonly) {\n if (!this.isBlockEvent(eventData) && this.parent.eventBase.isBlockRange(eventData)) {\n this.parent.quickPopup.openValidationError('blockAlert', eventData);\n return;\n }\n var addEvents = (eventData instanceof Array) ? eventData : [eventData];\n if (addEvents.length === 0) {\n return;\n }\n var args = {\n requestType: 'eventCreate', cancel: false, data: addEvents,\n addedRecords: addEvents, changedRecords: [], deletedRecords: []\n };\n this.parent.trigger(events.actionBegin, args, function (addArgs) {\n if (!addArgs.cancel) {\n var fields = _this.parent.eventFields;\n var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n var promise = void 0;\n if (addArgs.addedRecords instanceof Array) {\n for (var _i = 0, _a = addArgs.addedRecords; _i < _a.length; _i++) {\n var event_1 = _a[_i];\n event_1 = _this.parent.eventBase.updateEventDateTime(event_1);\n var eventData_1 = extend({}, _this.parent.eventBase.processTimezone(event_1, true), null, true);\n editParams.addedRecords.push(eventData_1);\n }\n promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields.id, _this.getTable(), _this.getQuery());\n }\n else {\n var event_2 = _this.parent.eventBase.processTimezone(addArgs.addedRecords, true);\n editParams.addedRecords.push(event_2);\n promise = _this.parent.dataModule.dataManager.insert(event_2, _this.getTable(), _this.getQuery());\n }\n var crudArgs = {\n requestType: 'eventCreated', cancel: false, data: addArgs.addedRecords, promise: promise, editParams: editParams\n };\n _this.refreshData(crudArgs);\n }\n });\n }\n };\n Crud.prototype.saveEvent = function (eventData, action) {\n var _this = this;\n if (this.parent.eventSettings.allowEditing && !this.parent.activeViewOptions.readonly) {\n if (this.parent.currentAction !== 'EditFollowingEvents' && !this.isBlockEvent(eventData)\n && this.parent.eventBase.isBlockRange(eventData)) {\n this.parent.quickPopup.openValidationError('blockAlert', eventData);\n this.parent.crudModule.crudObj.isCrudAction = false;\n return;\n }\n var updateEvents = (eventData instanceof Array) ? eventData : [eventData];\n if (updateEvents.length === 0) {\n return;\n }\n this.parent.currentAction = action;\n if (action) {\n switch (action) {\n case 'Save':\n this.processSave(eventData);\n break;\n case 'EditOccurrence':\n this.processOccurrences(eventData, action);\n break;\n case 'EditFollowingEvents':\n this.processFollowSeries(eventData, action);\n break;\n case 'EditSeries':\n this.processEntireSeries(eventData, action);\n break;\n }\n }\n else {\n var args = {\n requestType: 'eventChange', cancel: false, data: eventData,\n addedRecords: [], changedRecords: updateEvents, deletedRecords: []\n };\n this.parent.trigger(events.actionBegin, args, function (saveArgs) {\n if (!saveArgs.cancel) {\n var promise = void 0;\n var fields = _this.parent.eventFields;\n var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n if (saveArgs.changedRecords instanceof Array) {\n for (var _i = 0, _a = saveArgs.changedRecords; _i < _a.length; _i++) {\n var event_3 = _a[_i];\n event_3 = _this.parent.eventBase.updateEventDateTime(event_3);\n var eventData_2 = extend({}, _this.parent.eventBase.processTimezone(event_3, true), null, true);\n editParams.changedRecords.push(eventData_2);\n }\n promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields.id, _this.getTable(), _this.getQuery());\n }\n else {\n var event_4 = _this.parent.eventBase.processTimezone(saveArgs.changedRecords, true);\n editParams.changedRecords.push(event_4);\n promise = _this.parent.dataModule.dataManager.update(fields.id, event_4, _this.getTable(), _this.getQuery());\n }\n var cloneEvent = extend({}, saveArgs.changedRecords[saveArgs.changedRecords.length - 1], null, true);\n _this.parent.eventBase.selectWorkCellByTime([_this.parent.eventBase.processTimezone(cloneEvent)]);\n var crudArgs = {\n requestType: 'eventChanged', cancel: false,\n data: saveArgs.changedRecords, promise: promise, editParams: editParams\n };\n _this.refreshData(crudArgs);\n }\n });\n }\n }\n };\n Crud.prototype.deleteEvent = function (eventData, action) {\n var _this = this;\n if (this.parent.eventSettings.allowDeleting && !this.parent.activeViewOptions.readonly) {\n this.parent.currentAction = action;\n var deleteEvents = [];\n if (typeof eventData === 'string' || typeof eventData === 'number') {\n deleteEvents = this.parent.eventsData.filter(function (eventObj) {\n return eventObj[_this.parent.eventFields.id] === eventData;\n });\n }\n else {\n deleteEvents = (eventData instanceof Array ? eventData : [eventData]);\n }\n if (deleteEvents.length === 0) {\n return;\n }\n if (action) {\n switch (action) {\n case 'Delete':\n this.processDelete(deleteEvents);\n break;\n case 'DeleteOccurrence':\n this.processOccurrences(deleteEvents, action);\n break;\n case 'DeleteFollowingEvents':\n this.processFollowSeries(deleteEvents, action);\n break;\n case 'DeleteSeries':\n this.processEntireSeries(deleteEvents, action);\n break;\n }\n }\n else {\n var args = {\n requestType: 'eventRemove', cancel: false, data: eventData,\n addedRecords: [], changedRecords: [], deletedRecords: deleteEvents\n };\n this.parent.trigger(events.actionBegin, args, function (deleteArgs) {\n if (!deleteArgs.cancel) {\n var promise = void 0;\n var fields = _this.parent.eventFields;\n var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n if (deleteArgs.deletedRecords.length > 1) {\n editParams.deletedRecords = editParams.deletedRecords.concat(deleteArgs.deletedRecords);\n promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields.id, _this.getTable(), _this.getQuery());\n }\n else {\n editParams.deletedRecords.push(deleteArgs.deletedRecords[0]);\n promise = _this.parent.dataModule.dataManager.remove(fields.id, deleteArgs.deletedRecords[0], _this.getTable(), _this.getQuery());\n }\n _this.parent.eventBase.selectWorkCellByTime(deleteArgs.deletedRecords);\n var crudArgs = {\n requestType: 'eventRemoved', cancel: false,\n data: deleteArgs.deletedRecords, promise: promise, editParams: editParams\n };\n _this.refreshData(crudArgs);\n }\n });\n }\n }\n };\n Crud.prototype.processOccurrences = function (eventData, action) {\n var _this = this;\n var occurrenceData = [];\n var isDeletedRecords = false;\n if (eventData instanceof Array) {\n for (var _i = 0, eventData_3 = eventData; _i < eventData_3.length; _i++) {\n var event_5 = eventData_3[_i];\n occurrenceData.push({ occurrence: event_5, parent: this.getParentEvent(event_5) });\n }\n }\n else {\n occurrenceData = { occurrence: eventData, parent: this.getParentEvent(eventData) };\n }\n var updateEvents = (eventData instanceof Array) ? eventData : [eventData];\n var args = {\n requestType: action === 'EditOccurrence' ? 'eventChange' : 'eventRemove',\n cancel: false,\n addedRecords: [], changedRecords: updateEvents, deletedRecords: []\n };\n args.data = occurrenceData;\n this.parent.trigger(events.actionBegin, args, function (occurrenceArgs) {\n if (!occurrenceArgs.cancel) {\n var fields = _this.parent.eventFields;\n var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n var occurrenceEvents = (occurrenceData instanceof Array ? occurrenceData : [occurrenceData]);\n var _loop_2 = function (a, count) {\n var childEvent = occurrenceArgs.changedRecords[parseInt(a.toString(), 10)];\n var parentEvent = occurrenceEvents[parseInt(a.toString(), 10)].parent;\n var parentException = parentEvent[fields.recurrenceException];\n var editedData = void 0;\n var exceptionDate = void 0;\n switch (action) {\n case 'EditOccurrence':\n editedData = _this.parent.eventsProcessed.filter(function (event) { return event.Guid === childEvent.Guid; })[0];\n exceptionDate = _this.excludeDateCheck(editedData[fields.startTime], parentException);\n if (exceptionDate !== parentEvent[fields.recurrenceException]) {\n parentEvent[fields.recurrenceException] = exceptionDate;\n childEvent[fields.recurrenceException] = getRecurrenceStringFromDate(editedData[fields.startTime]);\n childEvent[fields.recurrenceID] = parentEvent[fields.id];\n childEvent[fields.followingID] = null;\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(parentEvent, true));\n editParams.addedRecords.push(_this.parent.eventBase.processTimezone(childEvent, true));\n }\n else {\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(childEvent, true));\n }\n break;\n case 'DeleteOccurrence':\n if (!childEvent[fields.recurrenceException]) {\n parentEvent[fields.recurrenceException] =\n _this.excludeDateCheck(childEvent[fields.startTime], parentException);\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(parentEvent, true));\n }\n if (childEvent[fields.id] !== parentEvent[fields.id]) {\n editParams.deletedRecords.push(childEvent);\n isDeletedRecords = true;\n }\n break;\n }\n };\n for (var a = 0, count = occurrenceArgs.changedRecords.length; a < count; a++) {\n _loop_2(a, count);\n }\n var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields.id, _this.getTable(), _this.getQuery());\n var cloneEvent = extend({}, occurrenceArgs.changedRecords[occurrenceArgs.changedRecords.length - 1], null, true);\n _this.parent.eventBase.selectWorkCellByTime(action === 'EditOccurrence' ? [_this.parent.eventBase.processTimezone(cloneEvent)] : [cloneEvent]);\n var crudArgs = {\n requestType: action === 'EditOccurrence' ? 'eventChanged' : 'eventRemoved',\n cancel: false, data: isDeletedRecords ? occurrenceArgs.deletedRecords : occurrenceArgs.changedRecords,\n promise: promise, editParams: editParams\n };\n _this.refreshData(crudArgs);\n }\n });\n };\n Crud.prototype.processFollowSeries = function (eventData, action) {\n var _this = this;\n var followData = [];\n if (eventData instanceof Array) {\n for (var _i = 0, eventData_4 = eventData; _i < eventData_4.length; _i++) {\n var event_6 = eventData_4[_i];\n followData.push({ occurrence: event_6, parent: this.getParentEvent(event_6) });\n }\n }\n else {\n followData = { occurrence: eventData, parent: this.getParentEvent(eventData) };\n }\n var updateFollowEvents = (eventData instanceof Array) ? eventData : [eventData];\n var args = {\n requestType: action === 'EditFollowingEvents' ? 'eventChange' : 'eventRemove', cancel: false,\n addedRecords: [], changedRecords: updateFollowEvents, deletedRecords: []\n };\n args.data = followData;\n this.parent.trigger(events.actionBegin, args, function (followArgs) {\n if (!followArgs.cancel) {\n var fields_1 = _this.parent.eventFields;\n var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n var followEvents = followData instanceof Array ? followData : [followData];\n var _loop_3 = function (a, count) {\n var childEvent = followArgs.changedRecords[parseInt(a.toString(), 10)];\n var parentEvent = followEvents[parseInt(a.toString(), 10)].parent;\n var followData_1 = _this.parent.eventBase.getEventCollections(parentEvent, childEvent);\n var isSpanned = void 0;\n switch (action) {\n case 'EditFollowingEvents':\n _this.processRecurrenceRule(parentEvent, childEvent);\n isSpanned = !_this.parent.eventBase.isFollowingEvent(parentEvent, childEvent);\n childEvent[fields_1.followingID] = isSpanned ? null : parentEvent[fields_1.id];\n childEvent[fields_1.recurrenceID] = null;\n editParams.addedRecords.push(_this.parent.eventBase.processTimezone(childEvent, true));\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(parentEvent, true));\n if (!_this.parent.uiStateValues.isIgnoreOccurrence) {\n childEvent[fields_1.recurrenceException] = null;\n if (followData_1.occurrence.length > 0) {\n var rule = followData_1.occurrence.slice(-1)[0][fields_1.recurrenceRule];\n if (rule.indexOf('COUNT') === -1) {\n childEvent[fields_1.recurrenceRule] = rule;\n }\n }\n if (followData_1.follow.length > 0) {\n childEvent[fields_1.recurrenceRule] = followData_1.follow.slice(-1)[0][fields_1.recurrenceRule];\n editParams.deletedRecords = editParams.deletedRecords.concat(followData_1.follow);\n }\n if (isSpanned) {\n followData_1.occurrence = followData_1.occurrence.filter(function (eventObj) {\n return eventObj[fields_1.recurrenceID] === parentEvent[fields_1.id];\n });\n }\n editParams.deletedRecords = editParams.deletedRecords.concat(followData_1.occurrence);\n }\n break;\n case 'DeleteFollowingEvents':\n _this.processRecurrenceRule(parentEvent, childEvent[fields_1.startTime]);\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(parentEvent, true));\n editParams.deletedRecords = editParams.deletedRecords.concat(followData_1.occurrence).concat(followData_1.follow);\n break;\n }\n };\n for (var a = 0, count = followArgs.changedRecords.length; a < count; a++) {\n _loop_3(a, count);\n }\n var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields_1.id, _this.getTable(), _this.getQuery());\n var cloneEvent = extend({}, followArgs.changedRecords[followArgs.changedRecords.length - 1], null, true);\n _this.parent.eventBase.selectWorkCellByTime(action === 'EditFollowingEvents' ? [_this.parent.eventBase.processTimezone(cloneEvent)] : [cloneEvent]);\n var crudArgs = {\n requestType: action === 'EditFollowingEvents' ? 'eventChanged' : 'eventRemoved',\n cancel: false, data: followArgs.changedRecords, promise: promise, editParams: editParams\n };\n _this.refreshData(crudArgs);\n }\n });\n };\n Crud.prototype.processEntireSeries = function (eventData, action) {\n var _this = this;\n var seriesData = [];\n var isDeletedRecords = false;\n if (eventData instanceof Array) {\n for (var _i = 0, eventData_5 = eventData; _i < eventData_5.length; _i++) {\n var event_7 = eventData_5[_i];\n seriesData.push(this.getParentEvent(event_7, true));\n }\n }\n else {\n seriesData = this.getParentEvent(eventData, true);\n }\n var updateSeriesEvents = (eventData instanceof Array) ? eventData : [eventData];\n var args = {\n requestType: action === 'EditSeries' ? 'eventChange' : 'eventRemove', cancel: false,\n addedRecords: [], changedRecords: updateSeriesEvents, deletedRecords: []\n };\n args.data = seriesData;\n this.parent.trigger(events.actionBegin, args, function (seriesArgs) {\n if (!seriesArgs.cancel) {\n var fields_2 = _this.parent.eventFields;\n var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n var seriesEvents = seriesData instanceof Array ? seriesData : [seriesData];\n var _loop_4 = function (a, count) {\n var childEvent = seriesArgs.changedRecords[parseInt(a.toString(), 10)];\n var parentEvent = seriesEvents[parseInt(a.toString(), 10)];\n var eventCollections = _this.parent.eventBase.getEventCollections(parentEvent);\n var deletedEvents = eventCollections.follow.concat(eventCollections.occurrence);\n switch (action) {\n case 'EditSeries':\n childEvent[fields_2.id] = parentEvent[fields_2.id];\n childEvent[fields_2.recurrenceID] = null;\n childEvent[fields_2.followingID] = null;\n if (_this.parent.uiStateValues.isIgnoreOccurrence && childEvent[fields_2.recurrenceException]) {\n var originalParent = _this.parent.eventsData.filter(function (eventObj) {\n return eventObj[fields_2.id] === childEvent[fields_2.id];\n });\n if (originalParent.length > 0) {\n childEvent[fields_2.recurrenceRule] = originalParent[0][fields_2.recurrenceRule];\n }\n }\n else {\n childEvent[fields_2.recurrenceException] = null;\n editParams.deletedRecords = editParams.deletedRecords.concat(deletedEvents);\n }\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(childEvent, true));\n _this.parent.uiStateValues.isIgnoreOccurrence = false;\n break;\n case 'DeleteSeries':\n editParams.deletedRecords = editParams.deletedRecords.concat(deletedEvents.concat(parentEvent));\n isDeletedRecords = true;\n break;\n }\n };\n for (var a = 0, count = seriesArgs.changedRecords.length; a < count; a++) {\n _loop_4(a, count);\n }\n var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields_2.id, _this.getTable(), _this.getQuery());\n var cloneEvent = extend({}, seriesArgs.changedRecords[seriesArgs.changedRecords.length - 1], null, true);\n _this.parent.eventBase.selectWorkCellByTime(action === 'EditSeries' ? [_this.parent.eventBase.processTimezone(cloneEvent)] : [cloneEvent]);\n var crudArgs = {\n requestType: action === 'EditSeries' ? 'eventChanged' : 'eventRemoved',\n cancel: false, data: isDeletedRecords ? seriesArgs.deletedRecords : seriesArgs.changedRecords,\n promise: promise, editParams: editParams\n };\n _this.refreshData(crudArgs);\n }\n });\n };\n Crud.prototype.processDelete = function (eventData) {\n var _this = this;\n var deleteData = [];\n for (var _i = 0, eventData_6 = eventData; _i < eventData_6.length; _i++) {\n var eventObj = eventData_6[_i];\n if (eventObj[this.parent.eventFields.recurrenceRule]) {\n deleteData.push({ occurrence: eventObj, parent: this.getParentEvent(eventObj) });\n }\n else {\n deleteData.push(eventObj);\n }\n }\n var args = {\n requestType: 'eventRemove', cancel: false,\n addedRecords: [], changedRecords: [], deletedRecords: eventData\n };\n args.data = deleteData;\n this.parent.trigger(events.actionBegin, args, function (deleteArgs) {\n if (!deleteArgs.cancel) {\n var fields_3 = _this.parent.eventFields;\n var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n var _loop_5 = function (a, count) {\n var isDelete = isNullOrUndefined(deleteArgs.deletedRecords[parseInt(a.toString(), 10)][_this.parent.eventFields.recurrenceRule]);\n if (!isDelete) {\n var parentEvent_1 = deleteData[parseInt(a.toString(), 10)].parent;\n var isEdited = editParams.changedRecords.filter(function (obj) {\n return obj[fields_3.id] === parentEvent_1[fields_3.id];\n });\n var editedDate = deleteArgs.deletedRecords[parseInt(a.toString(), 10)][fields_3.startTime];\n if (isEdited.length > 0) {\n var editedData = isEdited[0];\n editedData[fields_3.recurrenceException] =\n _this.excludeDateCheck(editedDate, editedData[fields_3.recurrenceException]);\n }\n else {\n parentEvent_1[fields_3.recurrenceException] =\n _this.excludeDateCheck(editedDate, parentEvent_1[fields_3.recurrenceException]);\n }\n if (isEdited.length === 0) {\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(parentEvent_1, true));\n }\n isDelete = deleteArgs.deletedRecords[parseInt(a.toString(), 10)][fields_3.id] !== parentEvent_1[fields_3.id];\n }\n if (isDelete) {\n editParams.deletedRecords.push(deleteArgs.deletedRecords[parseInt(a.toString(), 10)]);\n }\n };\n for (var a = 0, count = deleteArgs.deletedRecords.length; a < count; a++) {\n _loop_5(a, count);\n }\n var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields_3.id, _this.getTable(), _this.getQuery());\n _this.parent.eventBase.selectWorkCellByTime(deleteArgs.deletedRecords);\n var crudArgs = {\n requestType: 'eventRemoved', cancel: false, data: deleteArgs.deletedRecords, promise: promise, editParams: editParams\n };\n _this.refreshData(crudArgs);\n }\n });\n };\n Crud.prototype.processSave = function (data) {\n var _this = this;\n var eventData = (data instanceof Array) ? data : [data];\n var editData = [];\n for (var _i = 0, eventData_7 = eventData; _i < eventData_7.length; _i++) {\n var eventObj = eventData_7[_i];\n if (eventObj[this.parent.eventFields.recurrenceRule]) {\n editData.push({ occurrence: eventObj, parent: this.getParentEvent(eventObj) });\n }\n else {\n editData.push(eventObj);\n }\n }\n var args = { requestType: 'eventChange', cancel: false, addedRecords: [], changedRecords: eventData, deletedRecords: [] };\n args.data = editData;\n this.parent.trigger(events.actionBegin, args, function (editArgs) {\n if (!editArgs.cancel) {\n var fields = _this.parent.eventFields;\n var editParams = { addedRecords: [], changedRecords: [], deletedRecords: [] };\n for (var _i = 0, _a = editArgs.changedRecords; _i < _a.length; _i++) {\n var record = _a[_i];\n if (!isNullOrUndefined(record[fields.recurrenceRule]) && isNullOrUndefined(record[fields.recurrenceException])) {\n var exceptionString = getRecurrenceStringFromDate(record[fields.startTime]);\n var parentEle = _this.getParentEvent(record);\n parentEle[fields.recurrenceException] = isNullOrUndefined(parentEle[fields.recurrenceException]) ?\n exceptionString : parentEle[fields.recurrenceException].concat(',' + exceptionString);\n record[fields.id] = _this.parent.getEventMaxID();\n record[fields.recurrenceException] = exceptionString;\n editParams.addedRecords.push(_this.parent.eventBase.processTimezone(record, true));\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(parentEle, true));\n }\n else {\n editParams.changedRecords.push(_this.parent.eventBase.processTimezone(record, true));\n }\n }\n var promise = _this.parent.dataModule.dataManager.saveChanges(editParams, fields.id, _this.getTable(), _this.getQuery());\n var cloneEvent = extend({}, editArgs.changedRecords[editArgs.changedRecords.length - 1], null, true);\n _this.parent.eventBase.selectWorkCellByTime([_this.parent.eventBase.processTimezone(cloneEvent)]);\n var crudArgs = { requestType: 'eventChanged', cancel: false, data: editArgs.changedRecords, promise: promise, editParams: editParams };\n _this.refreshData(crudArgs);\n }\n });\n };\n Crud.prototype.getParentEvent = function (event, isParent) {\n if (isParent === void 0) { isParent = false; }\n var parentEvent = this.parent.eventBase.getParentEvent(event, isParent) || event;\n if (parentEvent[this.parent.eventFields.startTimezone] || parentEvent[this.parent.eventFields.endTimezone]) {\n this.parent.eventBase.timezoneConvert(parentEvent);\n }\n return parentEvent;\n };\n Crud.prototype.excludeDateCheck = function (eventStartTime, exceptionDateList) {\n var timezone = this.parent.timezone || this.parent.tzModule.getLocalTimezoneName();\n if (timezone) {\n eventStartTime = this.parent.tzModule.remove(new Date(+eventStartTime.getTime()), timezone);\n }\n var exDate = getRecurrenceStringFromDate(eventStartTime);\n if (!isNullOrUndefined(exceptionDateList)) {\n if (exceptionDateList.indexOf(exDate) === -1) {\n exceptionDateList = !(isNullOrUndefined(exceptionDateList)) ? exceptionDateList + ',' + exDate : exDate;\n }\n }\n else {\n exceptionDateList = exDate;\n }\n return exceptionDateList;\n };\n Crud.prototype.processRecurrenceRule = function (parentEvent, followEvent) {\n var fields = this.parent.eventFields;\n var recurrenceRule = parentEvent[fields.recurrenceRule];\n var endDate;\n if (followEvent instanceof Date) {\n endDate = new Date(+followEvent);\n }\n else {\n endDate = new Date(+followEvent[fields.startTime]);\n var newRecurrenceRule = followEvent[fields.recurrenceRule];\n if (newRecurrenceRule) {\n var startDate = parentEvent[fields.startTime];\n var ruleException = (this.parent.currentAction === 'DeleteFollowingEvents') ? followEvent[fields.recurrenceException] : null;\n var dateCollection = generate(startDate, newRecurrenceRule, ruleException, this.parent.activeViewOptions.firstDayOfWeek);\n var untilDate = new Date(dateCollection.slice(-1)[0]);\n untilDate.setHours(endDate.getHours(), endDate.getMinutes(), endDate.getSeconds());\n endDate.setHours(startDate.getHours(), startDate.getMinutes(), startDate.getSeconds());\n followEvent[fields.recurrenceRule] = this.getUpdatedRecurrenceRule(newRecurrenceRule, new Date(+untilDate), false);\n }\n }\n parentEvent[fields.recurrenceRule] = this.getUpdatedRecurrenceRule(recurrenceRule, util.addDays(new Date(endDate.getTime()), -1), true);\n };\n Crud.prototype.getUpdatedRecurrenceRule = function (recurrenceRule, untilDate, isParent) {\n var splitRule = recurrenceRule.split(';');\n var updatedRule = '';\n for (var _i = 0, splitRule_1 = splitRule; _i < splitRule_1.length; _i++) {\n var rule = splitRule_1[_i];\n if (rule !== '') {\n var ruleKey = rule.split('=')[0];\n var ruleValue = rule.split('=')[1];\n if (ruleKey === 'COUNT' || ruleKey === 'UNTIL') {\n ruleValue = getRecurrenceStringFromDate(untilDate);\n rule = rule.replace(rule, 'UNTIL=' + ruleValue);\n }\n updatedRule += rule + ';';\n }\n }\n if (isParent && updatedRule.indexOf('UNTIL') === -1) {\n updatedRule += 'UNTIL=' + getRecurrenceStringFromDate(untilDate);\n }\n return updatedRule;\n };\n Crud.prototype.isBlockEvent = function (eventData) {\n var eventCollection = (eventData instanceof Array) ? eventData : [eventData];\n var value = false;\n for (var _i = 0, eventCollection_1 = eventCollection; _i < eventCollection_1.length; _i++) {\n var event_8 = eventCollection_1[_i];\n value = event_8[this.parent.eventFields.isBlock] || false;\n }\n return value;\n };\n /**\n * To destroy the crud module.\n *\n * @returns {void}\n * @private\n */\n Crud.prototype.destroy = function () {\n this.crudObj = null;\n this.parent = null;\n };\n return Crud;\n}());\nexport { Crud };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { extend, closest, isNullOrUndefined, EventHandler } from '@syncfusion/ej2-base';\nimport * as event from '../base/constant';\nimport * as cls from '../base/css-constant';\n/**\n * Work cell interactions\n */\nvar WorkCellInteraction = /** @class */ (function () {\n function WorkCellInteraction(parent) {\n this.parent = parent;\n EventHandler.add(this.parent.element, 'mouseover', this.onHover, this);\n }\n WorkCellInteraction.prototype.cellMouseDown = function (e) {\n if (this.isPreventAction(e)) {\n return;\n }\n this.parent.notify(event.cellMouseDown, { event: e });\n };\n WorkCellInteraction.prototype.cellClick = function (e) {\n var _this = this;\n if (this.isPreventAction(e)) {\n return;\n }\n var queryStr = '.' + cls.WORK_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS + ',.' + cls.HEADER_CELLS_CLASS;\n var target = closest(e.target, queryStr);\n if (isNullOrUndefined(target)) {\n return;\n }\n if (!isNullOrUndefined(closest(e.target, '.' + cls.NEW_EVENT_CLASS))) {\n this.parent.eventWindow.openEditor(this.parent.activeCellsData, 'Add');\n return;\n }\n var navigateEle = closest(e.target, '.' + cls.NAVIGATE_CLASS);\n var navigateView = this.parent.getNavigateView();\n var sameView = this.parent.currentView === navigateView;\n if (isNullOrUndefined(navigateEle) || sameView ||\n isNullOrUndefined(this.parent.viewOptions[navigateView.charAt(0).toLowerCase() + navigateView.slice(1)])) {\n if (this.parent.activeViewOptions.readonly && this.parent.currentView !== 'MonthAgenda') {\n if (this.parent.quickPopup) {\n this.parent.quickPopup.quickPopupHide();\n }\n return;\n }\n if (this.parent.isAdaptive && (e.target.classList.contains(cls.MORE_INDICATOR_CLASS) ||\n closest(e.target, '.' + cls.MORE_INDICATOR_CLASS))) {\n return;\n }\n var isWorkCell_1 = target.classList.contains(cls.WORK_CELLS_CLASS) ||\n target.classList.contains(cls.ALLDAY_CELLS_CLASS);\n if (isWorkCell_1 && e.shiftKey && e.which === 1 && this.parent.keyboardInteractionModule) {\n this.parent.keyboardInteractionModule.onMouseSelection(e);\n return;\n }\n this.parent.activeCellsData = this.parent.getCellDetails(target);\n var args = extend(this.parent.activeCellsData, { cancel: false, event: e, name: 'cellClick' });\n this.parent.trigger(event.cellClick, args, function (clickArgs) {\n if (!clickArgs.cancel) {\n if (isWorkCell_1) {\n _this.parent.selectCell(target);\n }\n if (_this.parent.allowInline) {\n var inlineArgs = {\n element: clickArgs.element,\n groupIndex: clickArgs.groupIndex, type: 'Cell'\n };\n _this.parent.notify(event.inlineClick, inlineArgs);\n }\n else {\n _this.parent.notify(event.cellClick, clickArgs);\n }\n }\n else {\n if (_this.parent.quickPopup) {\n _this.parent.quickPopup.quickPopupHide();\n }\n }\n });\n }\n else {\n var date = this.parent.getDateFromElement(target);\n if (!isNullOrUndefined(date) && this.parent.isMinMaxDate(date)) {\n this.parent.setProperties({ selectedDate: date }, true);\n this.parent.changeView(this.parent.getNavigateView(), e);\n }\n }\n };\n WorkCellInteraction.prototype.cellDblClick = function (e) {\n var _this = this;\n var queryStr = '.' + cls.WORK_CELLS_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS + ',.' + cls.HEADER_CELLS_CLASS;\n var target = closest(e.target, queryStr);\n if (this.parent.activeViewOptions.readonly || this.isPreventAction(e) || isNullOrUndefined(target)) {\n return;\n }\n var args = extend(this.parent.activeCellsData, { cancel: false, event: e, name: 'cellDoubleClick' });\n this.parent.trigger(event.cellDoubleClick, args, function (clickArgs) {\n var date = new Date(clickArgs.startTime.getTime());\n if (!_this.parent.isMinMaxDate(new Date(date.setHours(0, 0, 0, 0)))) {\n return;\n }\n if (!clickArgs.cancel) {\n _this.parent.eventWindow.openEditor(_this.parent.activeCellsData, 'Add');\n }\n });\n };\n WorkCellInteraction.prototype.onHover = function (e) {\n var targetSelector = '.' + cls.WORK_CELLS_CLASS + ',.' + cls.TIME_SLOT_CLASS + ',.' + cls.ALLDAY_CELLS_CLASS + ',.' +\n cls.HEADER_CELLS_CLASS + ',.' + cls.RESOURCE_CELLS_CLASS + ',.' + cls.APPOINTMENT_CLASS + ',.' + cls.WEEK_NUMBER_CLASS +\n ',.' + cls.MONTH_HEADER_CLASS;\n var hoverTarget = closest(e.target, targetSelector);\n if (hoverTarget) {\n var hoverArgs = { element: hoverTarget, event: e };\n this.parent.trigger(event.hover, hoverArgs);\n }\n };\n WorkCellInteraction.prototype.isPreventAction = function (e) {\n if (closest(e.target, '.' + cls.NAVIGATE_CLASS)) {\n return false;\n }\n if (closest(e.target, '.' + cls.APPOINTMENT_WRAPPER_CLASS) &&\n !closest(e.target, '.' + cls.MORE_INDICATOR_CLASS)) {\n return true;\n }\n var target = closest(e.target, '.' + cls.APPOINTMENT_CLASS + ',.' + cls.RESOURCE_GROUP_CELLS_CLASS);\n if (!isNullOrUndefined(target)) {\n return true;\n }\n target = closest(e.target, '.' + cls.HEADER_CELLS_CLASS);\n if (this.parent.activeView.isTimelineView() && !isNullOrUndefined(target)) {\n return true;\n }\n return false;\n };\n WorkCellInteraction.prototype.destroy = function () {\n EventHandler.remove(this.parent.element, 'mouseover', this.onHover);\n };\n return WorkCellInteraction;\n}());\nexport { WorkCellInteraction };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * Configuration that applies on each appointment field options of scheduler.\n */\nvar FieldOptions = /** @class */ (function (_super) {\n __extends(FieldOptions, _super);\n function FieldOptions() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], FieldOptions.prototype, \"name\", void 0);\n __decorate([\n Property()\n ], FieldOptions.prototype, \"default\", void 0);\n __decorate([\n Property()\n ], FieldOptions.prototype, \"title\", void 0);\n __decorate([\n Property({})\n ], FieldOptions.prototype, \"validation\", void 0);\n return FieldOptions;\n}(ChildProperty));\nexport { FieldOptions };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { FieldOptions } from './field-options';\n/**\n * A class that holds the collection of event fields that requires to be mapped with the dataSource\n * fields along with its available configuration settings. Each field in it accepts both string and object\n * data type. When each of the field is assigned with simple `string` value, it is assumed that the dataSource field\n * name is mapped with it. If the `object` type is defined on each fields, then the validation related settings and mapping of\n * those fields with dataSource can be given altogether within it.\n */\nvar Field = /** @class */ (function (_super) {\n __extends(Field, _super);\n function Field() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('Id')\n ], Field.prototype, \"id\", void 0);\n __decorate([\n Property('IsBlock')\n ], Field.prototype, \"isBlock\", void 0);\n __decorate([\n Complex({ name: 'Subject' }, FieldOptions)\n ], Field.prototype, \"subject\", void 0);\n __decorate([\n Complex({ name: 'StartTime' }, FieldOptions)\n ], Field.prototype, \"startTime\", void 0);\n __decorate([\n Complex({ name: 'EndTime' }, FieldOptions)\n ], Field.prototype, \"endTime\", void 0);\n __decorate([\n Complex({ name: 'StartTimezone' }, FieldOptions)\n ], Field.prototype, \"startTimezone\", void 0);\n __decorate([\n Complex({ name: 'EndTimezone' }, FieldOptions)\n ], Field.prototype, \"endTimezone\", void 0);\n __decorate([\n Complex({ name: 'Location' }, FieldOptions)\n ], Field.prototype, \"location\", void 0);\n __decorate([\n Complex({ name: 'Description' }, FieldOptions)\n ], Field.prototype, \"description\", void 0);\n __decorate([\n Complex({ name: 'IsAllDay' }, FieldOptions)\n ], Field.prototype, \"isAllDay\", void 0);\n __decorate([\n Complex({ name: 'RecurrenceID' }, FieldOptions)\n ], Field.prototype, \"recurrenceID\", void 0);\n __decorate([\n Complex({ name: 'RecurrenceRule' }, FieldOptions)\n ], Field.prototype, \"recurrenceRule\", void 0);\n __decorate([\n Complex({ name: 'RecurrenceException' }, FieldOptions)\n ], Field.prototype, \"recurrenceException\", void 0);\n __decorate([\n Property('IsReadonly')\n ], Field.prototype, \"isReadonly\", void 0);\n __decorate([\n Property('FollowingID')\n ], Field.prototype, \"followingID\", void 0);\n return Field;\n}(ChildProperty));\nexport { Field };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Property, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { Field } from './fields';\n/**\n * Holds the configuration of event related options and dataSource binding to Schedule.\n */\nvar EventSettings = /** @class */ (function (_super) {\n __extends(EventSettings, _super);\n function EventSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], EventSettings.prototype, \"template\", void 0);\n __decorate([\n Property([])\n ], EventSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], EventSettings.prototype, \"query\", void 0);\n __decorate([\n Complex({}, Field)\n ], EventSettings.prototype, \"fields\", void 0);\n __decorate([\n Property(false)\n ], EventSettings.prototype, \"enableTooltip\", void 0);\n __decorate([\n Property('AllDayRow')\n ], EventSettings.prototype, \"spannedEventPlacement\", void 0);\n __decorate([\n Property(1)\n ], EventSettings.prototype, \"minimumEventDuration\", void 0);\n __decorate([\n Property()\n ], EventSettings.prototype, \"tooltipTemplate\", void 0);\n __decorate([\n Property()\n ], EventSettings.prototype, \"resourceColorField\", void 0);\n __decorate([\n Property(false)\n ], EventSettings.prototype, \"editFollowingEvents\", void 0);\n __decorate([\n Property(true)\n ], EventSettings.prototype, \"allowAdding\", void 0);\n __decorate([\n Property(true)\n ], EventSettings.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(true)\n ], EventSettings.prototype, \"allowDeleting\", void 0);\n __decorate([\n Property(false)\n ], EventSettings.prototype, \"enableMaxHeight\", void 0);\n __decorate([\n Property(false)\n ], EventSettings.prototype, \"enableIndicator\", void 0);\n __decorate([\n Property(false)\n ], EventSettings.prototype, \"ignoreWhitespace\", void 0);\n __decorate([\n Property()\n ], EventSettings.prototype, \"sortComparer\", void 0);\n __decorate([\n Property()\n ], EventSettings.prototype, \"includeFiltersInQuery\", void 0);\n return EventSettings;\n}(ChildProperty));\nexport { EventSettings };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * A class that holds the resource grouping related configurations on Schedule.\n */\nvar Group = /** @class */ (function (_super) {\n __extends(Group, _super);\n function Group() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property(false)\n ], Group.prototype, \"byDate\", void 0);\n __decorate([\n Property(true)\n ], Group.prototype, \"byGroupID\", void 0);\n __decorate([\n Property(false)\n ], Group.prototype, \"allowGroupEdit\", void 0);\n __decorate([\n Property([])\n ], Group.prototype, \"resources\", void 0);\n __decorate([\n Property(true)\n ], Group.prototype, \"enableCompactView\", void 0);\n __decorate([\n Property()\n ], Group.prototype, \"headerTooltipTemplate\", void 0);\n __decorate([\n Property(false)\n ], Group.prototype, \"hideNonWorkingDays\", void 0);\n return Group;\n}(ChildProperty));\nexport { Group };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Property, ChildProperty } from '@syncfusion/ej2-base';\n/**\n * A class that represents the resource related configurations and its data binding options.\n */\nvar Resources = /** @class */ (function (_super) {\n __extends(Resources, _super);\n function Resources() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property()\n ], Resources.prototype, \"field\", void 0);\n __decorate([\n Property()\n ], Resources.prototype, \"title\", void 0);\n __decorate([\n Property()\n ], Resources.prototype, \"name\", void 0);\n __decorate([\n Property(false)\n ], Resources.prototype, \"allowMultiple\", void 0);\n __decorate([\n Property([])\n ], Resources.prototype, \"dataSource\", void 0);\n __decorate([\n Property()\n ], Resources.prototype, \"query\", void 0);\n __decorate([\n Property('Id')\n ], Resources.prototype, \"idField\", void 0);\n __decorate([\n Property('Text')\n ], Resources.prototype, \"textField\", void 0);\n __decorate([\n Property('Expanded')\n ], Resources.prototype, \"expandedField\", void 0);\n __decorate([\n Property('GroupID')\n ], Resources.prototype, \"groupIDField\", void 0);\n __decorate([\n Property('Color')\n ], Resources.prototype, \"colorField\", void 0);\n __decorate([\n Property('StartHour')\n ], Resources.prototype, \"startHourField\", void 0);\n __decorate([\n Property('EndHour')\n ], Resources.prototype, \"endHourField\", void 0);\n __decorate([\n Property('WorkDays')\n ], Resources.prototype, \"workDaysField\", void 0);\n __decorate([\n Property('CssClass')\n ], Resources.prototype, \"cssClassField\", void 0);\n return Resources;\n}(ChildProperty));\nexport { Resources };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Component, isUndefined, Browser, compile, isNullOrUndefined, SanitizeHtmlHelper, animationMode } from '@syncfusion/ej2-base';\nimport { Property, NotifyPropertyChanges, ChildProperty, Complex } from '@syncfusion/ej2-base';\nimport { Event, EventHandler, KeyboardEvents } from '@syncfusion/ej2-base';\nimport { rippleEffect, Animation, remove } from '@syncfusion/ej2-base';\nimport { Draggable, Droppable } from '@syncfusion/ej2-base';\nimport { getElement } from '@syncfusion/ej2-base';\nimport { addClass, removeClass, closest, matches, detach, select, selectAll, isVisible, append } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { isNullOrUndefined as isNOU, Touch, getValue, setValue, extend, merge, attributes } from '@syncfusion/ej2-base';\nimport { ListBase } from '@syncfusion/ej2-lists';\nimport { createCheckBox, rippleMouseHandler } from '@syncfusion/ej2-buttons';\nimport { Input } from '@syncfusion/ej2-inputs';\nimport { createSpinner, showSpinner, hideSpinner } from '@syncfusion/ej2-popups';\nvar ROOT = 'e-treeview';\nvar CONTROL = 'e-control';\nvar COLLAPSIBLE = 'e-icon-collapsible';\nvar EXPANDABLE = 'e-icon-expandable';\nvar LISTITEM = 'e-list-item';\nvar LISTTEXT = 'e-list-text';\nvar LISTWRAP = 'e-text-wrap';\nvar IELISTWRAP = 'e-ie-wrap';\nvar PARENTITEM = 'e-list-parent';\nvar HOVER = 'e-hover';\nvar ACTIVE = 'e-active';\nvar LOAD = 'e-icons-spinner';\nvar PROCESS = 'e-process';\nvar ICON = 'e-icons';\nvar TEXTWRAP = 'e-text-content';\nvar INPUT = 'e-input';\nvar INPUTGROUP = 'e-input-group';\nvar TREEINPUT = 'e-tree-input';\nvar EDITING = 'e-editing';\nvar RTL = 'e-rtl';\nvar INTERACTION = 'e-interaction';\nvar DRAGITEM = 'e-drag-item';\nvar DROPPABLE = 'e-droppable';\nvar DRAGGING = 'e-dragging';\nvar SIBLING = 'e-sibling';\nvar DROPIN = 'e-drop-in';\nvar DROPNEXT = 'e-drop-next';\nvar DROPOUT = 'e-drop-out';\nvar NODROP = 'e-no-drop';\nvar FULLROWWRAP = 'e-fullrow-wrap';\nvar FULLROW = 'e-fullrow';\nvar SELECTED = 'e-selected';\nvar EXPANDED = 'e-expanded';\nvar NODECOLLAPSED = 'e-node-collapsed';\nvar DISABLE = 'e-disable';\nvar DROPCOUNT = 'e-drop-count';\nvar CHECK = 'e-check';\nvar INDETERMINATE = 'e-stop';\nvar CHECKBOXWRAP = 'e-checkbox-wrapper';\nvar CHECKBOXFRAME = 'e-frame';\nvar CHECKBOXRIPPLE = 'e-ripple-container';\nvar RIPPLE = 'e-ripple';\nvar RIPPLEELMENT = 'e-ripple-element';\nvar FOCUS = 'e-node-focus';\nvar IMAGE = 'e-list-img';\nvar BIGGER = 'e-bigger';\nvar SMALL = 'e-small';\nvar CHILD = 'e-has-child';\nvar ITEM_ANIMATION_ACTIVE = 'e-animation-active';\nvar DISABLED = 'e-disabled';\nvar PREVENTSELECT = 'e-prevent';\nvar treeAriaAttr = {\n treeRole: 'group',\n itemRole: 'treeitem',\n listRole: 'group',\n itemText: '',\n wrapperRole: ''\n};\n/**\n * Configures the fields to bind to the properties of node in the TreeView component.\n */\nvar FieldsSettings = /** @class */ (function (_super) {\n __extends(FieldsSettings, _super);\n function FieldsSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('child')\n ], FieldsSettings.prototype, \"child\", void 0);\n __decorate([\n Property([])\n ], FieldsSettings.prototype, \"dataSource\", void 0);\n __decorate([\n Property('expanded')\n ], FieldsSettings.prototype, \"expanded\", void 0);\n __decorate([\n Property('hasChildren')\n ], FieldsSettings.prototype, \"hasChildren\", void 0);\n __decorate([\n Property('htmlAttributes')\n ], FieldsSettings.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('iconCss')\n ], FieldsSettings.prototype, \"iconCss\", void 0);\n __decorate([\n Property('id')\n ], FieldsSettings.prototype, \"id\", void 0);\n __decorate([\n Property('imageUrl')\n ], FieldsSettings.prototype, \"imageUrl\", void 0);\n __decorate([\n Property('isChecked')\n ], FieldsSettings.prototype, \"isChecked\", void 0);\n __decorate([\n Property('parentID')\n ], FieldsSettings.prototype, \"parentID\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"query\", void 0);\n __decorate([\n Property('selectable')\n ], FieldsSettings.prototype, \"selectable\", void 0);\n __decorate([\n Property('selected')\n ], FieldsSettings.prototype, \"selected\", void 0);\n __decorate([\n Property(null)\n ], FieldsSettings.prototype, \"tableName\", void 0);\n __decorate([\n Property('text')\n ], FieldsSettings.prototype, \"text\", void 0);\n __decorate([\n Property('tooltip')\n ], FieldsSettings.prototype, \"tooltip\", void 0);\n __decorate([\n Property('navigateUrl')\n ], FieldsSettings.prototype, \"navigateUrl\", void 0);\n return FieldsSettings;\n}(ChildProperty));\nexport { FieldsSettings };\n/**\n * Configures animation settings for the TreeView component.\n */\nvar ActionSettings = /** @class */ (function (_super) {\n __extends(ActionSettings, _super);\n function ActionSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('SlideDown')\n ], ActionSettings.prototype, \"effect\", void 0);\n __decorate([\n Property(400)\n ], ActionSettings.prototype, \"duration\", void 0);\n __decorate([\n Property('linear')\n ], ActionSettings.prototype, \"easing\", void 0);\n return ActionSettings;\n}(ChildProperty));\nexport { ActionSettings };\n/**\n * Configures the animation settings for expanding and collapsing nodes in TreeView.\n */\nvar NodeAnimationSettings = /** @class */ (function (_super) {\n __extends(NodeAnimationSettings, _super);\n function NodeAnimationSettings() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Complex({ effect: 'SlideUp', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"collapse\", void 0);\n __decorate([\n Complex({ effect: 'SlideDown', duration: 400, easing: 'linear' }, ActionSettings)\n ], NodeAnimationSettings.prototype, \"expand\", void 0);\n return NodeAnimationSettings;\n}(ChildProperty));\nexport { NodeAnimationSettings };\n/**\n * The TreeView component is used to represent hierarchical data in a tree like structure with advanced\n * functions to perform edit, drag and drop, selection with check-box, and more.\n * ```html\n *
\n * ```\n * ```typescript\n * let treeObj: TreeView = new TreeView();\n * treeObj.appendTo('#tree');\n * ```\n */\nvar TreeView = /** @class */ (function (_super) {\n __extends(TreeView, _super);\n function TreeView(options, element) {\n var _this = _super.call(this, options, element) || this;\n _this.isRefreshed = false;\n _this.preventExpand = false;\n _this.checkedElement = [];\n _this.disableNode = [];\n // eslint-disable-next-line\n _this.validArr = [];\n _this.validNodes = [];\n _this.expandChildren = [];\n _this.isFieldChange = false;\n _this.changeDataSource = false;\n _this.hasTemplate = false;\n _this.isFirstRender = false;\n // Specifies whether the node is dropped or not\n _this.isNodeDropped = false;\n _this.isInteracted = false;\n _this.isRightClick = false;\n _this.mouseDownStatus = false;\n return _this;\n }\n TreeView_1 = TreeView;\n /**\n * Get component name.\n *\n * @returns {string} - returns module name.\n * @private\n */\n TreeView.prototype.getModuleName = function () {\n return 'treeview';\n };\n /**\n * Initialize the event handler\n *\n * @returns {void}\n */\n TreeView.prototype.preRender = function () {\n var _this = this;\n this.checkActionNodes = [];\n this.parentNodeCheck = [];\n this.dragStartAction = false;\n this.isAnimate = false;\n this.keyConfigs = {\n escape: 'escape',\n end: 'end',\n enter: 'enter',\n f2: 'f2',\n home: 'home',\n moveDown: 'downarrow',\n moveLeft: 'leftarrow',\n moveRight: 'rightarrow',\n moveUp: 'uparrow',\n ctrlDown: 'ctrl+downarrow',\n ctrlUp: 'ctrl+uparrow',\n ctrlEnter: 'ctrl+enter',\n ctrlHome: 'ctrl+home',\n ctrlEnd: 'ctrl+end',\n ctrlA: 'ctrl+A',\n shiftDown: 'shift+downarrow',\n shiftUp: 'shift+uparrow',\n shiftEnter: 'shift+enter',\n shiftHome: 'shift+home',\n shiftEnd: 'shift+end',\n csDown: 'ctrl+shift+downarrow',\n csUp: 'ctrl+shift+uparrow',\n csEnter: 'ctrl+shift+enter',\n csHome: 'ctrl+shift+home',\n csEnd: 'ctrl+shift+end',\n space: 'space',\n shiftSpace: 'shift+space',\n ctrlSpace: 'ctrl+space'\n };\n this.listBaseOption = {\n expandCollapse: true,\n showIcon: true,\n expandIconClass: EXPANDABLE,\n ariaAttributes: treeAriaAttr,\n expandIconPosition: 'Left',\n itemCreated: function (e) {\n _this.beforeNodeCreate(e);\n },\n enableHtmlSanitizer: this.enableHtmlSanitizer,\n itemNavigable: this.fullRowNavigable\n };\n this.updateListProp(this.fields);\n this.aniObj = new Animation({});\n this.treeList = [];\n this.isLoaded = false;\n this.isInitalExpand = false;\n this.expandChildren = [];\n this.index = 0;\n this.setTouchClass();\n if (isNOU(this.selectedNodes)) {\n this.setProperties({ selectedNodes: [] }, true);\n }\n if (isNOU(this.checkedNodes)) {\n this.setProperties({ checkedNodes: [] }, true);\n }\n if (isNOU(this.expandedNodes)) {\n this.setProperties({ expandedNodes: [] }, true);\n }\n else {\n this.isInitalExpand = true;\n }\n };\n /**\n * Get the properties to be maintained in the persisted state.\n *\n * @returns {string} - returns the persisted data\n * @hidden\n */\n TreeView.prototype.getPersistData = function () {\n var keyEntity = ['selectedNodes', 'checkedNodes', 'expandedNodes'];\n return this.addOnPersist(keyEntity);\n };\n /**\n * To Initialize the control rendering\n *\n * @private\n * @returns {void}\n */\n TreeView.prototype.render = function () {\n this.initialRender = true;\n this.initialize();\n this.setDataBinding(false);\n this.setDisabledMode();\n this.setExpandOnType();\n if (!this.disabled) {\n this.setRipple();\n }\n this.wireEditingEvents(this.allowEditing);\n this.setDragAndDrop(this.allowDragAndDrop);\n if (!this.disabled) {\n this.wireEvents();\n }\n this.initialRender = false;\n this.renderComplete();\n };\n TreeView.prototype.initialize = function () {\n this.element.setAttribute('role', 'tree');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n this.setCssClass(null, this.cssClass);\n this.setEnableRtl();\n this.setFullRow(this.fullRowSelect);\n this.setTextWrap();\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n };\n TreeView.prototype.setDisabledMode = function () {\n if (this.disabled) {\n this.element.classList.add(DISABLED);\n this.element.setAttribute('aria-disabled', 'true');\n }\n else {\n this.element.classList.remove(DISABLED);\n this.element.setAttribute('aria-disabled', 'false');\n }\n };\n TreeView.prototype.setEnableRtl = function () {\n (this.enableRtl ? addClass : removeClass)([this.element], RTL);\n };\n TreeView.prototype.setRipple = function () {\n var tempStr = '.' + FULLROW + ',.' + TEXTWRAP;\n var rippleModel = {\n selector: tempStr,\n ignore: '.' + TEXTWRAP + ' > .' + ICON + ',.' + INPUTGROUP + ',.' + INPUT + ', .' + CHECKBOXWRAP\n };\n this.rippleFn = rippleEffect(this.element, rippleModel);\n var iconModel = {\n selector: '.' + TEXTWRAP + ' > .' + ICON,\n isCenterRipple: true\n };\n this.rippleIconFn = rippleEffect(this.element, iconModel);\n };\n TreeView.prototype.setFullRow = function (isEnabled) {\n (isEnabled ? addClass : removeClass)([this.element], FULLROWWRAP);\n };\n TreeView.prototype.setMultiSelect = function (isEnabled) {\n if (isEnabled) {\n this.element.setAttribute('aria-multiselectable', 'true');\n }\n else {\n this.element.setAttribute('aria-multiselectable', 'false');\n }\n };\n // eslint-disable-next-line\n TreeView.prototype.templateComplier = function (template) {\n if (template) {\n this.hasTemplate = true;\n // eslint-disable-next-line\n var e = void 0;\n this.element.classList.add(INTERACTION);\n try {\n if (typeof template !== 'function' && document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n catch (e) {\n return compile(template);\n }\n }\n this.element.classList.remove(INTERACTION);\n return undefined;\n };\n TreeView.prototype.setDataBinding = function (changeDataSource) {\n var _this = this;\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager) {\n /* eslint-disable */\n this.isOffline = this.fields.dataSource.dataSource.offline;\n if (this.fields.dataSource.ready) {\n this.fields.dataSource.ready.then(function (e) {\n /* eslint-disable */\n _this.isOffline = _this.fields.dataSource.dataSource.offline;\n if (_this.fields.dataSource instanceof DataManager && _this.isOffline) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n _this.renderItems(true);\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n else {\n this.fields.dataSource.executeQuery(this.getQuery(this.fields)).then(function (e) {\n _this.treeList.pop();\n _this.treeData = e.result;\n _this.isNumberTypeId = _this.getType();\n _this.setRootData();\n if (changeDataSource) {\n _this.changeDataSource = true;\n }\n _this.renderItems(true);\n _this.changeDataSource = false;\n if (_this.treeList.length === 0 && !_this.isLoaded) {\n _this.finalize();\n }\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n this.treeList.pop();\n if (isNOU(this.fields.dataSource)) {\n this.rootData = this.treeData = [];\n }\n else {\n this.treeData = JSON.parse(JSON.stringify(this.fields.dataSource));\n this.setRootData();\n }\n this.isNumberTypeId = this.getType();\n this.renderItems(false);\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.getQuery = function (mapper, value) {\n if (value === void 0) { value = null; }\n var columns = [];\n var query;\n if (!mapper.query) {\n query = new Query();\n var prop = this.getActualProperties(mapper);\n for (var _i = 0, _a = Object.keys(prop); _i < _a.length; _i++) {\n var col = _a[_i];\n if (col !== 'dataSource' && col !== 'tableName' && col !== 'child' && !!mapper[col]\n && col !== 'url' && columns.indexOf(mapper[col]) === -1) {\n columns.push(mapper[col]);\n }\n }\n query.select(columns);\n if (prop.hasOwnProperty('tableName')) {\n query.from(mapper.tableName);\n }\n }\n else {\n query = mapper.query.clone();\n }\n ListBase.addSorting(this.sortOrder, mapper.text, query);\n if (!isNOU(value) && !isNOU(mapper.parentID)) {\n query.where(mapper.parentID, 'equal', (this.isNumberTypeId ? parseFloat(value) : value));\n }\n return query;\n };\n TreeView.prototype.getType = function () {\n return this.treeData[0] ? ((typeof getValue(this.fields.id, this.treeData[0]) === 'number') ? true : false) : false;\n };\n TreeView.prototype.setRootData = function () {\n this.dataType = this.getDataType(this.treeData, this.fields);\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n var rootItems = this.getChildNodes(this.treeData, undefined, true);\n if (isNOU(rootItems)) {\n this.rootData = [];\n }\n else {\n this.rootData = rootItems;\n }\n }\n else {\n this.rootData = this.treeData;\n }\n };\n TreeView.prototype.renderItems = function (isSorted) {\n /* eslint-disable */\n this.listBaseOption.ariaAttributes.level = 1;\n var sortedData = this.getSortedData(this.rootData);\n this.ulElement = ListBase.createList(this.createElement, isSorted ? this.rootData : sortedData, this.listBaseOption);\n this.element.appendChild(this.ulElement);\n var rootNodes = this.ulElement.querySelectorAll('.e-list-item');\n if (this.loadOnDemand === false) {\n var i = 0;\n while (i < rootNodes.length) {\n this.renderChildNodes(rootNodes[i], true, null, true);\n i++;\n }\n }\n var parentEle = selectAll('.' + PARENTITEM, this.element);\n if ((parentEle.length === 1 && (rootNodes && rootNodes.length !== 0)) || this.loadOnDemand) {\n this.finalizeNode(this.element);\n }\n this.parentNodeCheck = [];\n this.parentCheckData = [];\n this.updateCheckedStateFromDS();\n if (this.autoCheck && this.showCheckBox && !this.isLoaded) {\n this.updateParentCheckState();\n }\n };\n /**\n * Update the checkedNodes from datasource at initial rendering\n */\n TreeView.prototype.updateCheckedStateFromDS = function (id) {\n this.validNodes = [];\n if (this.treeData && this.showCheckBox) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var resultPId = resultData[i][this.fields.parentID] ? resultData[i][this.fields.parentID].toString() : null;\n if (this.checkedNodes.indexOf(resultId) === -1 && !(this.isLoaded)) {\n this.checkedNodes.push(resultId);\n }\n if (resultData[i][this.fields.hasChildren]) {\n var id_1 = resultData[i][this.fields.id];\n var childData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.parentID, 'equal', id_1, false));\n for (var child = 0; child < childData.length; child++) {\n var childId = childData[child][this.fields.id] ? childData[child][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) === -1 && this.autoCheck) {\n this.checkedNodes.push(childId);\n }\n }\n }\n }\n for (var i = 0; i < this.checkedNodes.length; i++) {\n var mapper_1 = this.fields;\n var checkState = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.id, 'equal', this.checkedNodes[i], true));\n if (checkState[0] && this.autoCheck) {\n this.getCheckedNodeDetails(mapper_1, checkState);\n this.checkIndeterminateState(checkState[0]);\n }\n if (checkState.length > 0) {\n var checkedId = checkState[0][this.fields.id] ? checkState[0][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n var checkedData = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper_1.parentID, 'equal', this.checkedNodes[i], true));\n for (var index = 0; index < checkedData.length; index++) {\n var checkedId = checkedData[index][this.fields.id] ? checkedData[index][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedId);\n }\n if (this.checkedNodes.indexOf(checkedId) > -1 && this.validNodes.indexOf(checkedId) === -1) {\n this.validNodes.push(checkedId);\n }\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n for (var index = 0; index < this.treeData.length; index++) {\n var fieldId = this.treeData[index][this.fields.id] ? this.treeData[index][this.fields.id].toString() : '';\n if (this.treeData[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(fieldId) === -1) {\n this.checkedNodes.push(fieldId);\n }\n if (this.checkedNodes.indexOf(fieldId) > -1 && this.validNodes.indexOf(fieldId) === -1) {\n this.validNodes.push(fieldId);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[index]);\n if (childItems) {\n this.updateChildCheckState(childItems, this.treeData[index]);\n }\n }\n this.validNodes = (this.enablePersistence) ? this.checkedNodes : this.validNodes;\n }\n this.setProperties({ checkedNodes: this.validNodes }, true);\n }\n };\n /**\n * To check whether the list data has sub child and to change the parent check state accordingly\n */\n TreeView.prototype.getCheckedNodeDetails = function (mapper, checkNodes) {\n var id = checkNodes[0][this.fields.parentID] ? checkNodes[0][this.fields.parentID].toString() : null;\n var count = 0;\n var element = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.id] + '\"]');\n var parentEle = this.element.querySelector('[data-uid=\"' + checkNodes[0][this.fields.parentID] + '\"]');\n if (!element && !parentEle) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(id) === -1) {\n this.parentNodeCheck.push(id);\n }\n var childNodes = this.getChildNodes(this.treeData, id);\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n }\n var preElement = new DataManager(this.treeData).\n executeLocal(new Query().where(mapper.id, 'equal', id, true));\n this.getCheckedNodeDetails(mapper, preElement);\n }\n else if (parentEle) {\n var check = select('.' + CHECK, parentEle);\n if (!check) {\n this.changeState(parentEle, 'indeterminate', null, true, true);\n }\n }\n };\n /**\n * Update the checkedNodes and parent state when all the child Nodes are in checkedstate at initial rendering\n */\n TreeView.prototype.updateParentCheckState = function () {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n var childCheckedElement;\n for (var i = 0; i < indeterminate.length; i++) {\n var node = closest(indeterminate[i], '.' + LISTITEM);\n var nodeId = node.getAttribute('data-uid').toString();\n if (this.dataType === 1) {\n childCheckedElement = new DataManager(this.treeData).\n executeLocal(new Query().where(this.fields.parentID, 'equal', nodeId, true));\n }\n else {\n childCheckedElement = this.getChildNodes(this.treeData, nodeId);\n }\n var count = 0;\n if (childCheckedElement) {\n for (var j = 0; j < childCheckedElement.length; j++) {\n var childId = childCheckedElement[j][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childCheckedElement.length) {\n var nodeCheck = node.getAttribute('data-uid');\n if (this.checkedNodes.indexOf(nodeCheck) === -1) {\n this.checkedNodes.push(nodeCheck);\n }\n this.changeState(node, 'check', null, true, true);\n }\n else if (count === 0 && this.checkedNodes.length === 0) {\n this.changeState(node, 'uncheck', null, true, true);\n }\n }\n }\n };\n /**\n * Change the parent to indeterminate state whenever the child is in checked state which is not rendered in DOM\n */\n TreeView.prototype.checkIndeterminateState = function (data) {\n var element;\n if (this.dataType === 1) {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.parentID] + '\"]');\n }\n else {\n element = this.element.querySelector('[data-uid=\"' + data[this.fields.id] + '\"]');\n }\n if (element) {\n var ariaChecked = element.querySelector('.' + CHECKBOXWRAP).getAttribute('aria-checked');\n if (ariaChecked !== 'true') {\n this.changeState(element, 'indeterminate', null, true, true);\n }\n }\n else if (this.dataType === 2) {\n var len = this.parentNodeCheck.length;\n if (this.parentNodeCheck.indexOf(data[this.fields.id].toString()) === -1) {\n this.parentNodeCheck.push(data[this.fields.id].toString());\n }\n }\n };\n /**\n * Update the checkedNodes for child and subchild from datasource (hierarchical datasource) at initial rendering\n */\n TreeView.prototype.updateChildCheckState = function (childItems, treeData) {\n var count = 0;\n var checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (childItems[index][this.fields.isChecked] && !(this.isLoaded) && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedChild);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (this.checkedNodes.indexOf(checkedChild) > -1 && this.validNodes.indexOf(checkedChild) === -1) {\n this.validNodes.push(checkedChild);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems && subChildItems.length) {\n if (this.parentCheckData.indexOf(treeData) === -1)\n this.parentCheckData.push(treeData);\n this.updateChildCheckState(subChildItems, childItems[index]);\n }\n if (count === childItems.length && this.autoCheck && this.checkedNodes.indexOf(checkedParent) === -1) {\n this.checkedNodes.push(checkedParent);\n }\n }\n if (count !== 0 && this.autoCheck) {\n this.checkIndeterminateState(treeData);\n for (var len = 0; len < this.parentCheckData.length; len++) {\n if ((treeData !== this.parentCheckData[len]) && (this.parentCheckData[len])) {\n this.checkIndeterminateState(this.parentCheckData[len]);\n }\n }\n }\n this.parentCheckData = [];\n };\n TreeView.prototype.beforeNodeCreate = function (e) {\n if (this.showCheckBox) {\n var checkboxEle = createCheckBox(this.createElement, true, { cssClass: this.touchClass });\n checkboxEle.setAttribute('role', 'checkbox');\n checkboxEle.setAttribute('aria-label', e.text);\n var icon = select('div.' + ICON, e.item);\n var id = e.item.getAttribute('data-uid');\n e.item.childNodes[0].insertBefore(checkboxEle, e.item.childNodes[0].childNodes[isNOU(icon) ? 0 : 1]);\n var checkValue = getValue(e.fields.isChecked, e.curData);\n if (this.checkedNodes.indexOf(id) > -1) {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else if (!isNOU(checkValue) && checkValue.toString() === 'true') {\n select('.' + CHECKBOXFRAME, checkboxEle).classList.add(CHECK);\n checkboxEle.setAttribute('aria-checked', 'true');\n this.addCheck(e.item);\n }\n else {\n checkboxEle.setAttribute('aria-checked', 'false');\n }\n var frame = select('.' + CHECKBOXFRAME, checkboxEle);\n EventHandler.add(frame, 'mousedown', this.frameMouseHandler, this);\n EventHandler.add(frame, 'mouseup', this.frameMouseHandler, this);\n }\n if (this.fullRowSelect) {\n this.createFullRow(e.item);\n }\n if (this.allowMultiSelection && !e.item.classList.contains(SELECTED)) {\n e.item.setAttribute('aria-selected', 'false');\n }\n var fields = e.fields;\n this.addActionClass(e, fields.selected, SELECTED);\n this.addActionClass(e, fields.expanded, EXPANDED);\n e.item.setAttribute(\"tabindex\", \"-1\");\n EventHandler.add(e.item, 'focus', this.focusIn, this);\n if (!isNOU(this.nodeTemplateFn)) {\n var textEle = e.item.querySelector('.' + LISTTEXT);\n var dataId = e.item.getAttribute('data-uid');\n textEle.innerHTML = '';\n this.renderNodeTemplate(e.curData, textEle, dataId);\n }\n var eventArgs = {\n node: e.item,\n nodeData: e.curData,\n text: e.text,\n };\n if (!this.isRefreshed) {\n this.trigger('drawNode', eventArgs);\n if (e.curData[this.fields.selectable] === false && !this.showCheckBox) {\n e.item.classList.add(PREVENTSELECT);\n e.item.firstElementChild.setAttribute('style', 'cursor: not-allowed');\n }\n }\n };\n TreeView.prototype.frameMouseHandler = function (e) {\n var rippleSpan = select('.' + CHECKBOXRIPPLE, e.target.parentElement);\n rippleMouseHandler(e, rippleSpan);\n };\n TreeView.prototype.addActionClass = function (e, action, cssClass) {\n var data = e.curData;\n var actionValue = getValue(action, data);\n if (!isNOU(actionValue) && actionValue.toString() !== 'false') {\n e.item.classList.add(cssClass);\n }\n };\n TreeView.prototype.getDataType = function (ds, mapper) {\n if (this.fields.dataSource instanceof DataManager) {\n for (var i = 0; i < ds.length; i++) {\n if (this.isOffline) {\n if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i])) && !isNOU(getValue(mapper.parentID, ds[i]))) {\n return 1;\n }\n }\n else if ((typeof mapper.child === 'string') && isNOU(getValue(mapper.child, ds[i]))) {\n return 1;\n }\n }\n return 2;\n }\n for (var i = 0, len = ds.length; i < len; i++) {\n if ((typeof mapper.child === 'string') && !isNOU(getValue(mapper.child, ds[i]))) {\n return 2;\n }\n if (!isNOU(getValue(mapper.parentID, ds[i])) || !isNOU(getValue(mapper.hasChildren, ds[i]))) {\n return 1;\n }\n }\n return 1;\n };\n TreeView.prototype.getGroupedData = function (dataSource, groupBy) {\n var cusQuery = new Query().group(groupBy);\n var ds = ListBase.getDataSource(dataSource, cusQuery);\n var grpItem = [];\n for (var j = 0; j < ds.length; j++) {\n var itemObj = ds[j].items;\n grpItem.push(itemObj);\n }\n return grpItem;\n };\n TreeView.prototype.getSortedData = function (list) {\n if (list && this.sortOrder !== 'None') {\n list = ListBase.getDataSource(list, ListBase.addSorting(this.sortOrder, this.fields.text));\n }\n return list;\n };\n TreeView.prototype.finalizeNode = function (element) {\n var _this = this;\n var iNodes = selectAll('.' + IMAGE, element);\n for (var k = 0; k < iNodes.length; k++) {\n iNodes[k].setAttribute('alt', IMAGE);\n }\n if (this.isLoaded) {\n var sNodes = selectAll('.' + SELECTED, element);\n for (var i = 0; i < sNodes.length; i++) {\n this.selectNode(sNodes[i], null);\n break;\n }\n removeClass(sNodes, SELECTED);\n }\n var cNodes = selectAll('.' + LISTITEM + ':not(.' + EXPANDED + ')', element);\n for (var j = 0; j < cNodes.length; j++) {\n var icon = select('div.' + ICON, cNodes[j]);\n if (icon && icon.classList.contains(EXPANDABLE)) {\n this.disableExpandAttr(cNodes[j]);\n }\n }\n var eNodes = selectAll('.' + EXPANDED, element);\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) { return e[_this.fields.expanded] == true; }).length > 0 ? true : this.isInitalExpand;\n }\n if (!this.isInitalExpand) {\n for (var i = 0; i < eNodes.length; i++) {\n this.renderChildNodes(eNodes[i]);\n }\n }\n removeClass(eNodes, EXPANDED);\n this.updateList();\n if (this.isLoaded) {\n this.updateCheckedProp();\n }\n };\n TreeView.prototype.updateCheckedProp = function () {\n if (this.showCheckBox) {\n var nodes = [].concat([], this.checkedNodes);\n this.setProperties({ checkedNodes: nodes }, true);\n }\n };\n TreeView.prototype.ensureIndeterminate = function () {\n if (this.autoCheck) {\n var liElement = selectAll('li', this.element);\n var ulElement = void 0;\n for (var i = 0; i < liElement.length; i++) {\n if (liElement[i].classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, liElement[i]);\n if (ulElement) {\n this.ensureParentCheckState(liElement[i]);\n }\n else {\n this.ensureChildCheckState(liElement[i]);\n }\n }\n }\n }\n else {\n var indeterminate = selectAll('.' + INDETERMINATE, this.element);\n for (var i = 0; i < indeterminate.length; i++) {\n indeterminate[i].classList.remove(INDETERMINATE);\n }\n }\n };\n TreeView.prototype.ensureParentCheckState = function (element) {\n if (!isNOU(element)) {\n if (element.classList.contains(ROOT)) {\n return;\n }\n var ulElement = element;\n if (element.classList.contains(LISTITEM)) {\n ulElement = select('.' + PARENTITEM, element);\n }\n var checkedNodes = selectAll('.' + CHECK, ulElement);\n var indeterminateNodes = selectAll('.' + INDETERMINATE, ulElement);\n var nodes = selectAll('.' + LISTITEM, ulElement);\n var checkBoxEle = element.getElementsByClassName(CHECKBOXWRAP)[0];\n if (nodes.length === checkedNodes.length) {\n this.changeState(checkBoxEle, 'check', null, true, true);\n }\n else if (checkedNodes.length > 0 || indeterminateNodes.length > 0) {\n this.changeState(checkBoxEle, 'indeterminate', null, true, true);\n }\n else if (checkedNodes.length === 0) {\n this.changeState(checkBoxEle, 'uncheck', null, true, true);\n }\n var parentUL = closest(element, '.' + PARENTITEM);\n if (!isNOU(parentUL)) {\n var currentParent = closest(parentUL, '.' + LISTITEM);\n this.ensureParentCheckState(currentParent);\n }\n }\n };\n TreeView.prototype.ensureChildCheckState = function (element, e) {\n if (!isNOU(element)) {\n var childElement = select('.' + PARENTITEM, element);\n var checkBoxes = void 0;\n if (!isNOU(childElement)) {\n checkBoxes = selectAll('.' + CHECKBOXWRAP, childElement);\n var isChecked = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n var parentCheck = element.getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(INDETERMINATE);\n var childCheck = childElement.querySelectorAll('li');\n var expandState = childElement.parentElement.getAttribute('aria-expanded');\n var checkedState = void 0;\n for (var index = 0; index < checkBoxes.length; index++) {\n var childId = childCheck[index].getAttribute('data-uid');\n if (!isNOU(this.currentLoadData) && !isNOU(getValue(this.fields.isChecked, this.currentLoadData[index]))) {\n checkedState = getValue(this.fields.isChecked, this.currentLoadData[index]) ? 'check' : 'uncheck';\n if (this.ele !== -1) {\n checkedState = isChecked ? 'check' : 'uncheck';\n }\n if ((checkedState === 'uncheck') && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && this.parentNodeCheck.indexOf(childId) !== -1)) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n checkedState = 'indeterminate';\n }\n }\n else {\n var isNodeChecked = checkBoxes[index].getElementsByClassName(CHECKBOXFRAME)[0].classList.contains(CHECK);\n if (isChecked) {\n checkedState = 'check';\n }\n else if (isNodeChecked && !this.isLoaded) {\n checkedState = 'check';\n }\n else if (this.checkedNodes.indexOf(childId) !== -1 && this.isLoaded && (parentCheck || isChecked)) {\n checkedState = 'check';\n }\n else if (childCheck[index].classList.contains(CHILD) && (!isUndefined(this.parentNodeCheck) && this.autoCheck\n && (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else if (this.dataType === 1 && (!isUndefined(this.parentNodeCheck) && this.autoCheck &&\n (isChecked || parentCheck) && this.parentNodeCheck.indexOf(childId) !== -1)) {\n checkedState = 'indeterminate';\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(childId), 1);\n }\n else {\n checkedState = 'uncheck';\n }\n }\n this.changeState(checkBoxes[index], checkedState, e, true, true);\n }\n }\n if (this.autoCheck && this.isLoaded) {\n this.updateParentCheckState();\n }\n }\n };\n TreeView.prototype.doCheckBoxAction = function (nodes, doCheck) {\n var li = selectAll('.' + LISTITEM, this.element);\n if (!isNOU(nodes)) {\n for (var len = nodes.length - 1; len >= 0; len--) {\n var liEle = this.getElement(nodes[len]);\n if (isNOU(liEle)) {\n var node = void 0;\n node = nodes[len - (nodes.length - 1)] ? nodes[len - (nodes.length - 1)].toString() : nodes[len] ? nodes[len].toString() : null;\n if (node !== '' && doCheck && node) {\n this.setValidCheckedNode(node);\n this.dynamicCheckState(node, doCheck);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && node !== '' && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(node), 1);\n var childItems = this.getChildNodes(this.treeData, node);\n if (childItems) {\n for (var i = 0; i < childItems.length; i++) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n var ele = this.element.querySelector('[data-uid=\"' + id + '\"]');\n if (ele) {\n this.changeState(ele, 'uncheck', null);\n }\n }\n }\n if (this.parentNodeCheck.indexOf(node) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(node), 1);\n }\n }\n if (node) {\n this.dynamicCheckState(node, doCheck);\n }\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n continue;\n }\n var checkBox = select('.' + PARENTITEM + ' .' + CHECKBOXWRAP, liEle);\n this.validateCheckNode(checkBox, !doCheck, liEle, null);\n }\n }\n else {\n var checkBoxes = selectAll('.' + CHECKBOXWRAP, this.element);\n if (this.loadOnDemand) {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck', null, null, null, doCheck);\n }\n }\n else {\n for (var index = 0; index < checkBoxes.length; index++) {\n this.updateFieldChecked(checkBoxes[index], doCheck);\n this.changeState(checkBoxes[index], doCheck ? 'check' : 'uncheck');\n }\n }\n }\n if (nodes) {\n for (var j = 0; j < nodes.length - 1; j++) {\n var node = nodes[j] ? nodes[j].toString() : '';\n if (!doCheck) {\n this.updateField(this.treeData, this.fields, node, 'isChecked', null);\n }\n }\n }\n if (this.autoCheck) {\n this.updateParentCheckState();\n }\n };\n TreeView.prototype.updateFieldChecked = function (checkbox, doCheck) {\n var currLi = closest(checkbox, '.' + LISTITEM);\n var id = currLi.getAttribute('data-uid');\n var nodeDetails = this.getNodeData(currLi);\n if (nodeDetails.isChecked === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n };\n /**\n * Changes the parent and child check state while changing the checkedNodes via setmodel\n */\n TreeView.prototype.dynamicCheckState = function (node, doCheck) {\n if (this.dataType === 1) {\n var count = 0;\n var resultId = new DataManager(this.treeData).executeLocal(new Query().where(this.fields.id, 'equal', node, true));\n if (resultId[0]) {\n var id = resultId[0][this.fields.id] ? resultId[0][this.fields.id].toString() : null;\n var parent_1 = resultId[0][this.fields.parentID] ? resultId[0][this.fields.parentID].toString() : null;\n var parentElement = this.element.querySelector('[data-uid=\"' + parent_1 + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + id + '\"]');\n var childNodes = this.getChildNodes(this.treeData, parent_1);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (id === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (id === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) !== -1 && element && (id === node) && doCheck) {\n this.changeState(element, 'check', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && parentElement && (id === node) && this.autoCheck\n && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!element && !parentElement && (id === node) && this.autoCheck) {\n this.updateIndeterminate(node, doCheck);\n }\n }\n }\n else if (this.dataType === 2 || (this.fields.dataSource instanceof DataManager &&\n this.isOffline)) {\n var id = void 0;\n var parentElement = void 0;\n var check = void 0;\n for (var i = 0; i < this.treeData.length; i++) {\n id = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : '';\n parentElement = this.element.querySelector('[data-uid=\"' + id + '\"]');\n check = parentElement ? select('.' + CHECK, parentElement) : null;\n if (this.checkedNodes.indexOf(id) === -1 && parentElement && check && !doCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n var subChild = getValue(this.fields.child.toString(), this.treeData[i]);\n if (subChild) {\n this.updateChildIndeterminate(subChild, id, node, doCheck, id);\n }\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for listData\n */\n TreeView.prototype.updateIndeterminate = function (node, doCheck) {\n var indeterminateData = this.getTreeData(node);\n var count = 0;\n var parent;\n if (this.dataType === 1) {\n parent = indeterminateData[0][this.fields.parentID] ? indeterminateData[0][this.fields.parentID].toString() : null;\n }\n var childNodes = this.getChildNodes(this.treeData, parent);\n if (childNodes) {\n for (var i = 0; i < childNodes.length; i++) {\n var childId = childNodes[i][this.fields.id] ? childNodes[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n if (parentElement && doCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (!doCheck && parentElement && this.parentNodeCheck.indexOf(parent) === -1 && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (!parentElement) {\n if (!doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent), 1);\n }\n else if (doCheck && this.checkedNodes.indexOf(parent) === -1 && this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n else if (!doCheck && this.checkedNodes.indexOf(parent) !== -1 && this.parentNodeCheck.indexOf(parent) === -1\n && count !== 0) {\n this.parentNodeCheck.push(parent);\n }\n this.updateIndeterminate(parent, doCheck);\n if (this.checkedNodes.indexOf(parent) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(parent), 1);\n }\n }\n };\n /**\n * updates the parent and child check state while changing the checkedNodes via setmodel for hierarchical data\n */\n TreeView.prototype.updateChildIndeterminate = function (subChild, parent, node, doCheck, child) {\n var count = 0;\n for (var j = 0; j < subChild.length; j++) {\n var subId = subChild[j][this.fields.id] ? subChild[j][this.fields.id].toString() : '';\n if (this.checkedNodes.indexOf(subId) !== -1) {\n count++;\n }\n var parentElement = this.element.querySelector('[data-uid=\"' + parent + '\"]');\n var indeterminate = parentElement ? select('.' + INDETERMINATE, parentElement) : null;\n var check = parentElement ? select('.' + CHECK, parentElement) : null;\n var element = this.element.querySelector('[data-uid=\"' + subId + '\"]');\n var childElementCheck = element ? select('.' + CHECK, element) : null;\n if (this.checkedNodes.indexOf(node) !== -1 && parentElement && (subId === node) && this.autoCheck) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && parentElement && !element && (subId === node) && !doCheck) {\n if (this.autoCheck) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else {\n if (count !== 0) {\n this.changeState(parentElement, 'indeterminate', null);\n }\n else {\n this.changeState(parentElement, 'uncheck', null);\n }\n }\n }\n else if (this.checkedNodes.indexOf(node) === -1 && element && (subId === node) && !doCheck) {\n this.changeState(element, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && indeterminate && (subId === node) && this.autoCheck && count === 0\n && !doCheck) {\n indeterminate.classList.remove(INDETERMINATE);\n }\n else if (this.checkedNodes.indexOf(node) === -1 && !element && check && (subId === node) && count === 0) {\n this.changeState(parentElement, 'uncheck', null);\n }\n else if (this.checkedNodes.indexOf(subId) === -1 && element && childElementCheck && count === 0) {\n this.changeState(element, 'uncheck', null);\n }\n else if (!element && !parentElement && (subId === node) || (this.parentNodeCheck.indexOf(parent) !== -1) && this.autoCheck) {\n var childElement = this.element.querySelector('[data-uid=\"' + child + '\"]');\n if (doCheck && count !== 0) {\n this.changeState(childElement, 'indeterminate', null);\n }\n else if (doCheck && count === subChild.length && this.checkedNodes.indexOf(parent) === -1) {\n this.checkedNodes.push(parent);\n }\n else if (!doCheck && count === 0 && this.parentNodeCheck.indexOf(parent) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(parent));\n }\n if (this.parentNodeCheck.indexOf(parent) === -1) {\n this.parentNodeCheck.push(parent);\n }\n }\n var innerChild = getValue(this.fields.child.toString(), subChild[j]);\n if (innerChild) {\n this.updateChildIndeterminate(innerChild, subId, node, doCheck, child);\n }\n }\n };\n TreeView.prototype.changeState = function (wrapper, state, e, isPrevent, isAdd, doCheck) {\n var _this = this;\n var eventArgs;\n var currLi = closest(wrapper, '.' + LISTITEM);\n if (wrapper === currLi) {\n wrapper = select('.' + CHECKBOXWRAP, currLi);\n }\n if (!isPrevent) {\n this.checkActionNodes = [];\n eventArgs = this.getCheckEvent(currLi, state, e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckAction(wrapper, state, currLi, observedArgs, e, isPrevent, isAdd, doCheck);\n }\n });\n }\n else {\n this.nodeCheckAction(wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck);\n }\n };\n TreeView.prototype.nodeCheckAction = function (wrapper, state, currLi, eventArgs, e, isPrevent, isAdd, doCheck) {\n var ariaState;\n var frameSpan = wrapper.getElementsByClassName(CHECKBOXFRAME)[0];\n if (state === 'check' && !frameSpan.classList.contains(CHECK)) {\n frameSpan.classList.remove(INDETERMINATE);\n frameSpan.classList.add(CHECK);\n this.addCheck(currLi);\n ariaState = 'true';\n }\n else if (state === 'uncheck' && (frameSpan.classList.contains(CHECK) || frameSpan.classList.contains(INDETERMINATE))) {\n removeClass([frameSpan], [CHECK, INDETERMINATE]);\n this.removeCheck(currLi);\n ariaState = 'false';\n }\n else if (state === 'indeterminate' && this.autoCheck) {\n frameSpan.classList.remove(CHECK);\n frameSpan.classList.add(INDETERMINATE);\n this.removeCheck(currLi);\n ariaState = 'mixed';\n }\n ariaState = state === 'check' ? 'true' : state === 'uncheck' ? 'false' : ariaState;\n if (!isNOU(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n }\n if (isAdd) {\n var data = [].concat([], this.checkActionNodes);\n eventArgs = this.getCheckEvent(currLi, state, e);\n if (isUndefined(isPrevent)) {\n eventArgs.data = data;\n }\n }\n if (doCheck !== undefined) {\n this.ensureStateChange(currLi, doCheck);\n }\n if (!isPrevent) {\n if (!isNOU(ariaState)) {\n wrapper.setAttribute('aria-checked', ariaState);\n eventArgs.data[0].checked = ariaState;\n this.trigger('nodeChecked', eventArgs);\n this.checkActionNodes = [];\n }\n }\n };\n TreeView.prototype.addCheck = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.checkedNodes.indexOf(id) === -1) {\n this.checkedNodes.push(id);\n }\n };\n TreeView.prototype.removeCheck = function (liEle) {\n var index = this.checkedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.checkedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.getCheckEvent = function (currLi, action, e) {\n this.checkActionNodes.push(this.getNodeData(currLi));\n var nodeData = this.checkActionNodes;\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, data: nodeData };\n };\n TreeView.prototype.finalize = function () {\n var firstUl = select('.' + PARENTITEM, this.element);\n if (!isNullOrUndefined(firstUl)) {\n firstUl.setAttribute('role', treeAriaAttr.treeRole);\n this.setMultiSelect(this.allowMultiSelection);\n var firstNode = select('.' + LISTITEM, this.element);\n if (firstNode) {\n firstNode.setAttribute('tabindex', '0');\n this.updateIdAttr(null, firstNode);\n }\n if (this.allowTextWrap) {\n this.updateWrap();\n }\n this.renderReactTemplates();\n this.hasPid = this.rootData[0] ? this.rootData[0].hasOwnProperty(this.fields.parentID) : false;\n this.doExpandAction();\n }\n };\n TreeView.prototype.setTextWrap = function () {\n (this.allowTextWrap ? addClass : removeClass)([this.element], LISTWRAP);\n if (Browser.isIE) {\n (this.allowTextWrap ? addClass : removeClass)([this.element], IELISTWRAP);\n }\n };\n TreeView.prototype.updateWrap = function (ulEle) {\n if (!this.fullRowSelect) {\n return;\n }\n var liEle = ulEle ? selectAll('.' + LISTITEM, ulEle) : this.liList;\n var length = liEle.length;\n for (var i = 0; i < length; i++) {\n this.calculateWrap(liEle[i]);\n }\n };\n TreeView.prototype.calculateWrap = function (liEle) {\n var element = select('.' + FULLROW, liEle);\n if (element && element.nextElementSibling) {\n element.style.height = this.allowTextWrap ? element.nextElementSibling.offsetHeight + 'px' : '';\n }\n };\n TreeView.prototype.doExpandAction = function () {\n var _this = this;\n var eUids = this.expandedNodes;\n if (!this.loadOnDemand && this.fields.dataSource instanceof DataManager) {\n this.isInitalExpand = this.treeData.filter(function (e) { return e[_this.fields.expanded] == true; }).length > 0 ? true : this.isInitalExpand;\n }\n if (this.isInitalExpand && eUids.length > 0) {\n this.setProperties({ expandedNodes: [] }, true);\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager) {\n this.expandGivenNodes(eUids);\n }\n else {\n for (var i = 0; i < eUids.length; i++) {\n var eNode = select('[data-uid=\"' + eUids[i] + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null);\n }\n }\n else {\n if (eUids[i] && this.expandChildren.indexOf(eUids[i]) === -1) {\n this.expandChildren.push(eUids[i].toString());\n }\n continue;\n }\n }\n this.afterFinalized();\n }\n }\n else {\n this.afterFinalized();\n }\n };\n TreeView.prototype.expandGivenNodes = function (arr) {\n var proxy = this;\n this.expandCallback(arr[this.index], function () {\n proxy.index++;\n if (proxy.index < arr.length) {\n proxy.expandGivenNodes(arr);\n }\n else {\n proxy.afterFinalized();\n }\n });\n };\n TreeView.prototype.expandCallback = function (eUid, callback) {\n var eNode = select('[data-uid=\"' + eUid + '\"]', this.element);\n if (!isNOU(eNode)) {\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, eNode));\n if (!isNOU(icon)) {\n this.expandAction(eNode, icon, null, false, callback);\n }\n else {\n callback();\n }\n }\n else {\n callback();\n }\n };\n TreeView.prototype.afterFinalized = function () {\n this.doSelectionAction();\n this.updateCheckedProp();\n this.isAnimate = true;\n this.isInitalExpand = false;\n if ((!this.isLoaded || this.isFieldChange) && !this.isNodeDropped) {\n var eventArgs = { data: this.treeData };\n this.trigger('dataBound', eventArgs);\n }\n this.isLoaded = true;\n this.isNodeDropped = false;\n };\n TreeView.prototype.doSelectionAction = function () {\n var sNodes = selectAll('.' + SELECTED, this.element);\n var sUids = this.selectedNodes;\n if (sUids.length > 0) {\n this.setProperties({ selectedNodes: [] }, true);\n for (var i = 0; i < sUids.length; i++) {\n var sNode = select('[data-uid=\"' + sUids[i] + '\"]', this.element);\n if (sNode && !(sNode.classList.contains('e-active'))) {\n this.selectNode(sNode, null, true);\n }\n else {\n this.selectedNodes.push(sUids[i]);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n }\n else {\n this.selectGivenNodes(sNodes);\n }\n removeClass(sNodes, SELECTED);\n };\n TreeView.prototype.selectGivenNodes = function (sNodes) {\n for (var i = 0; i < sNodes.length; i++) {\n if (!sNodes[i].classList.contains('e-disable')) {\n this.selectNode(sNodes[i], null, true);\n }\n if (!this.allowMultiSelection) {\n break;\n }\n }\n };\n TreeView.prototype.clickHandler = function (event) {\n var target = Browser.isDevice && !Browser.isIos ? document.elementFromPoint(event.originalEvent.changedTouches[0].clientX, event.originalEvent.changedTouches[0].clientY) : event.originalEvent.target;\n EventHandler.remove(this.element, 'contextmenu', this.preventContextMenu);\n if (!target || this.dragStartAction) {\n return;\n }\n else {\n var classList = target.classList;\n var li = closest(target, '.' + LISTITEM);\n if (!li || (li.classList.contains(PREVENTSELECT) && !(classList.contains(EXPANDABLE) || classList.contains(COLLAPSIBLE)))) {\n return;\n }\n else if (event.originalEvent.which !== 3) {\n var rippleElement = select('.' + RIPPLEELMENT, li);\n var rippleIcons = select('.' + ICON, li);\n this.removeHover();\n this.setFocusElement(li);\n if (this.showCheckBox && !li.classList.contains('e-disable')) {\n var checkWrapper = closest(target, '.' + CHECKBOXWRAP);\n if (!isNOU(checkWrapper)) {\n var checkElement = select('.' + CHECKBOXFRAME, checkWrapper);\n this.validateCheckNode(checkWrapper, checkElement.classList.contains(CHECK), li, event.originalEvent);\n this.triggerClickEvent(event.originalEvent, li);\n return;\n }\n }\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(li, target, event);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, target, event);\n }\n else if (rippleElement && rippleIcons) {\n if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(EXPANDABLE)) {\n this.expandAction(li, rippleIcons, event);\n }\n else if (rippleIcons.classList.contains(RIPPLE) && rippleIcons.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(li, rippleIcons, event);\n }\n else if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n else {\n if (!classList.contains(PARENTITEM) && !classList.contains(LISTITEM)) {\n this.toggleSelect(li, event.originalEvent, false);\n }\n }\n }\n if (event.originalEvent.which === 3) {\n this.isRightClick = true;\n }\n this.triggerClickEvent(event.originalEvent, li);\n }\n };\n TreeView.prototype.nodeCheckedEvent = function (wrapper, isCheck, e) {\n var currLi = closest(wrapper, '.' + LISTITEM);\n var eventArgs = this.getCheckEvent(wrapper, isCheck ? 'uncheck' : 'check', e);\n eventArgs.data = eventArgs.data.splice(0, eventArgs.data.length - 1);\n this.trigger('nodeChecked', eventArgs);\n };\n TreeView.prototype.triggerClickEvent = function (e, li) {\n var eventArgs = {\n event: e,\n node: li,\n };\n this.trigger('nodeClicked', eventArgs);\n };\n TreeView.prototype.expandNode = function (currLi, icon, loaded) {\n var _this = this;\n this.renderReactTemplates();\n if (icon.classList.contains(LOAD)) {\n this.hideSpinner(icon);\n }\n if (!this.initialRender) {\n icon.classList.add('interaction');\n }\n if (loaded !== true || (loaded === true && currLi.classList.contains('e-expanded'))) {\n if (this.preventExpand !== true) {\n removeClass([icon], EXPANDABLE);\n addClass([icon], COLLAPSIBLE);\n var start_1 = 0;\n var end_1 = 0;\n var proxy_1 = this;\n var ul_1 = select('.' + PARENTITEM, currLi);\n var liEle_1 = currLi;\n this.setHeight(liEle_1, ul_1);\n var activeElement_1 = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate && !this.isRefreshed) {\n this.aniObj.animate(ul_1, {\n name: this.animation.expand.effect,\n duration: (this.animation.expand.duration === 0 && animationMode === 'Enable') ? 400 : this.animation.expand.duration,\n timingFunction: this.animation.expand.easing,\n begin: function (args) {\n liEle_1.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start_1 = liEle_1.offsetHeight;\n end_1 = select('.' + TEXTWRAP, currLi).offsetHeight;\n },\n progress: function (args) {\n args.element.style.display = 'block';\n proxy_1.animateHeight(args, start_1, end_1);\n },\n end: function (args) {\n args.element.style.display = 'block';\n if (!isNullOrUndefined(activeElement_1) && activeElement_1 instanceof HTMLElement) {\n activeElement_1.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.expandedNode(liEle_1, ul_1, icon);\n }\n });\n }\n else {\n this.expandedNode(liEle_1, ul_1, icon);\n }\n }\n }\n else {\n var ul = select('.' + PARENTITEM, currLi);\n ul.style.display = 'none';\n if (this.fields.dataSource instanceof DataManager === true) {\n this.preventExpand = false;\n }\n }\n if (this.initialRender) {\n icon.classList.add('interaction');\n }\n };\n TreeView.prototype.expandedNode = function (currLi, ul, icon) {\n ul.style.display = 'block';\n currLi.style.display = 'block';\n currLi.style.overflow = '';\n currLi.style.height = '';\n removeClass([icon], PROCESS);\n this.addExpand(currLi);\n if (this.allowTextWrap && this.isLoaded && this.isFirstRender) {\n this.updateWrap(currLi);\n this.isFirstRender = false;\n }\n if (this.isLoaded && this.expandArgs && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, null);\n this.expandArgs.isInteracted = this.isInteracted;\n this.trigger('nodeExpanded', this.expandArgs);\n }\n };\n TreeView.prototype.addExpand = function (liEle) {\n liEle.setAttribute('aria-expanded', 'true');\n removeClass([liEle], NODECOLLAPSED);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.expandedNodes.indexOf(id) === -1) {\n this.expandedNodes.push(id);\n }\n };\n TreeView.prototype.collapseNode = function (currLi, icon, e) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n var colArgs;\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = colArgs.isInteracted;\n this.trigger('nodeCollapsing', colArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeCollapseAction(currLi, icon, observedArgs);\n }\n });\n }\n else {\n this.nodeCollapseAction(currLi, icon, colArgs);\n }\n };\n TreeView.prototype.nodeCollapseAction = function (currLi, icon, colArgs) {\n var _this = this;\n removeClass([icon], COLLAPSIBLE);\n addClass([icon], EXPANDABLE);\n var start = 0;\n var end = 0;\n var proxy = this;\n var ul = select('.' + PARENTITEM, currLi);\n var liEle = currLi;\n var activeElement = select('.' + LISTITEM + '.' + ACTIVE, currLi);\n if (this.isAnimate) {\n this.aniObj.animate(ul, {\n name: this.animation.collapse.effect,\n duration: (this.animation.collapse.duration === 0 && animationMode === 'Enable') ? 400 : this.animation.collapse.duration,\n timingFunction: this.animation.collapse.easing,\n begin: function (args) {\n liEle.style.overflow = 'hidden';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.add(ITEM_ANIMATION_ACTIVE);\n }\n start = select('.' + TEXTWRAP, currLi).offsetHeight;\n end = liEle.offsetHeight;\n },\n progress: function (args) {\n proxy.animateHeight(args, start, end);\n },\n end: function (args) {\n args.element.style.display = 'none';\n if (!isNullOrUndefined(activeElement) && activeElement instanceof HTMLElement) {\n activeElement.classList.remove(ITEM_ANIMATION_ACTIVE);\n }\n _this.collapsedNode(liEle, ul, icon, colArgs);\n }\n });\n }\n else {\n this.collapsedNode(liEle, ul, icon, colArgs);\n }\n };\n TreeView.prototype.collapsedNode = function (liEle, ul, icon, colArgs) {\n ul.style.display = 'none';\n liEle.style.overflow = '';\n liEle.style.height = '';\n removeClass([icon], PROCESS);\n this.removeExpand(liEle);\n if (this.isLoaded) {\n colArgs = this.getExpandEvent(liEle, null);\n colArgs.isInteracted = this.isInteracted;\n this.trigger('nodeCollapsed', colArgs);\n }\n };\n TreeView.prototype.removeExpand = function (liEle, toRemove) {\n if (toRemove) {\n liEle.removeAttribute('aria-expanded');\n }\n else {\n this.disableExpandAttr(liEle);\n }\n var index = this.expandedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.expandedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.disableExpandAttr = function (liEle) {\n liEle.setAttribute('aria-expanded', 'false');\n addClass([liEle], NODECOLLAPSED);\n };\n TreeView.prototype.setHeight = function (currLi, ul) {\n ul.style.display = 'block';\n ul.style.visibility = 'hidden';\n currLi.style.height = currLi.offsetHeight + 'px';\n ul.style.display = 'none';\n ul.style.visibility = '';\n };\n TreeView.prototype.animateHeight = function (args, start, end) {\n var remaining = (args.duration - args.timeStamp) / args.duration;\n var currentHeight = (end - start) * remaining + start;\n args.element.parentElement.style.height = currentHeight + 'px';\n };\n TreeView.prototype.renderChildNodes = function (parentLi, expandChild, callback, loaded) {\n var _this = this;\n var eicon = select('div.' + ICON, parentLi);\n if (isNOU(eicon)) {\n return;\n }\n this.showSpinner(eicon);\n var childItems;\n /* eslint-disable */\n if (this.fields.dataSource instanceof DataManager) {\n var level = this.parents(parentLi, '.' + PARENTITEM).length;\n var mapper_2 = this.getChildFields(this.fields, level, 1);\n if (isNOU(mapper_2) || isNOU(mapper_2.dataSource)) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n this.treeList.push('false');\n if (this.fields.dataSource instanceof DataManager && this.isOffline) {\n this.treeList.pop();\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }\n else {\n mapper_2.dataSource.executeQuery(this.getQuery(mapper_2, parentLi.getAttribute('data-uid'))).then(function (e) {\n _this.treeList.pop();\n childItems = e.result;\n if (_this.dataType === 1) {\n _this.dataType = 2;\n }\n _this.loadChild(childItems, mapper_2, eicon, parentLi, expandChild, callback, loaded);\n }).catch(function (e) {\n _this.trigger('actionFailure', { error: e });\n });\n }\n }\n else {\n childItems = this.getChildNodes(this.treeData, parentLi.getAttribute('data-uid'));\n this.currentLoadData = this.getSortedData(childItems);\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n return;\n }\n else {\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, this.currentLoadData, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n }\n };\n TreeView.prototype.loadChild = function (childItems, mapper, eicon, parentLi, expandChild, callback, loaded) {\n this.currentLoadData = childItems;\n if (isNOU(childItems) || childItems.length === 0) {\n detach(eicon);\n this.removeExpand(parentLi, true);\n }\n else {\n this.updateListProp(mapper);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n var id = parentLi.getAttribute('data-uid');\n var nodeData = this.getNodeObject(id);\n setValue('child', childItems, nodeData);\n }\n this.listBaseOption.ariaAttributes.level = parseFloat(parentLi.getAttribute('aria-level')) + 1;\n parentLi.appendChild(ListBase.createList(this.createElement, childItems, this.listBaseOption));\n this.expandNode(parentLi, eicon, loaded);\n this.setSelectionForChildNodes(childItems);\n this.ensureCheckNode(parentLi);\n this.finalizeNode(parentLi);\n this.disableTreeNodes(childItems);\n this.renderSubChild(parentLi, expandChild, loaded);\n }\n if (callback) {\n callback();\n }\n if (expandChild) {\n this.expandedNodes.push(parentLi.getAttribute('data-uid'));\n }\n if (this.treeList.length === 0 && !this.isLoaded) {\n this.finalize();\n }\n };\n TreeView.prototype.disableTreeNodes = function (childItems) {\n var i = 0;\n while (i < childItems.length) {\n var id = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n if (this.disableNode !== undefined && this.disableNode.indexOf(id) !== -1) {\n this.doDisableAction([id]);\n }\n i++;\n }\n };\n /**\n * Sets the child Item in selectedState while rendering the child node\n */\n TreeView.prototype.setSelectionForChildNodes = function (nodes) {\n var i;\n for (i = 0; i < nodes.length; i++) {\n var id = nodes[i][this.fields.id] ? nodes[i][this.fields.id].toString() : null;\n if (this.selectedNodes !== undefined && this.selectedNodes.indexOf(id) !== -1) {\n this.doSelectionAction();\n }\n }\n };\n TreeView.prototype.ensureCheckNode = function (element) {\n if (this.showCheckBox) {\n this.ele = (this.checkedElement) ? this.checkedElement.indexOf(element.getAttribute('data-uid')) : null;\n if (this.autoCheck) {\n this.ensureChildCheckState(element);\n this.ensureParentCheckState(element);\n }\n }\n this.currentLoadData = null;\n };\n TreeView.prototype.getFields = function (mapper, nodeLevel, dataLevel) {\n if (nodeLevel === dataLevel) {\n return mapper;\n }\n else {\n return this.getFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildFields = function (mapper, nodeLevel, dataLevel) {\n var childData;\n if (nodeLevel === dataLevel) {\n return this.getChildMapper(mapper);\n }\n else {\n return this.getChildFields(this.getChildMapper(mapper), nodeLevel, dataLevel + 1);\n }\n };\n TreeView.prototype.getChildMapper = function (mapper) {\n return (typeof mapper.child === 'string' || isNOU(mapper.child)) ? mapper : mapper.child;\n };\n TreeView.prototype.getChildNodes = function (obj, parentId, isRoot) {\n var _this = this;\n if (isRoot === void 0) { isRoot = false; }\n var childNodes;\n if (isNOU(obj)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n return this.getChildGroup(this.groupedData, parentId, isRoot);\n }\n else {\n if (typeof this.fields.child === 'string') {\n var index = obj.findIndex(function (data) { return getValue(_this.fields.id, data) && getValue(_this.fields.id, data).toString() === parentId; });\n if (index !== -1) {\n return getValue(this.fields.child, obj[index]);\n }\n if (index === -1) {\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var tempArray = getValue(this.fields.child, obj[i]);\n var childIndex = !isNOU(tempArray) ? tempArray.findIndex(function (data) { return getValue(_this.fields.id, data) && getValue(_this.fields.id, data).toString() === parentId; }) : -1;\n if (childIndex !== -1) {\n return getValue(this.fields.child, tempArray[childIndex]);\n }\n else if (!isNOU(tempArray)) {\n childNodes = this.getChildNodes(tempArray, parentId);\n if (childNodes !== undefined) {\n break;\n }\n }\n }\n }\n }\n }\n return childNodes;\n };\n TreeView.prototype.getChildGroup = function (data, parentId, isRoot) {\n var childNodes;\n if (isNOU(data)) {\n return childNodes;\n }\n for (var i = 0, objlen = data.length; i < objlen; i++) {\n if (!isNOU(data[i][0]) && !isNOU(getValue(this.fields.parentID, data[i][0]))) {\n if (getValue(this.fields.parentID, data[i][0]).toString() === parentId) {\n return data[i];\n }\n }\n else if (isRoot) {\n return data[i];\n }\n else {\n return [];\n }\n }\n return childNodes;\n };\n TreeView.prototype.renderSubChild = function (element, expandChild, loaded) {\n if (expandChild) {\n var cIcons = selectAll('.' + EXPANDABLE, element);\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n if (element.querySelector('.e-icons') !== cIcons[i]) {\n var curLi = closest(icon, '.' + LISTITEM);\n this.expandArgs = this.getExpandEvent(curLi, null);\n if (loaded !== true) {\n this.trigger('nodeExpanding', this.expandArgs);\n }\n this.renderChildNodes(curLi, expandChild, null, loaded);\n }\n }\n }\n };\n TreeView.prototype.toggleSelect = function (li, e, multiSelect) {\n if (!li.classList.contains('e-disable')) {\n if (this.allowMultiSelection && ((e && e.ctrlKey) || multiSelect) && this.isActive(li)) {\n this.unselectNode(li, e);\n }\n else {\n this.selectNode(li, e, multiSelect);\n }\n }\n };\n TreeView.prototype.isActive = function (li) {\n return li.classList.contains(ACTIVE) ? true : false;\n };\n TreeView.prototype.selectNode = function (li, e, multiSelect) {\n var _this = this;\n if (isNOU(li) || (!this.allowMultiSelection && this.isActive(li) && !isNOU(e))) {\n this.setFocusElement(li);\n return;\n }\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if ((!observedArgs.cancel) && !observedArgs.node.classList.contains(PREVENTSELECT)) {\n _this.nodeSelectAction(li, e, observedArgs, multiSelect);\n }\n });\n }\n else {\n this.nodeSelectAction(li, e, eventArgs, multiSelect);\n }\n };\n TreeView.prototype.nodeSelectAction = function (li, e, eventArgs, multiSelect) {\n if (!this.allowMultiSelection || (!multiSelect && (!e || (e && !e.ctrlKey)))) {\n this.removeSelectAll();\n }\n if (this.allowMultiSelection && e && e.shiftKey) {\n if (!this.startNode) {\n this.startNode = li;\n }\n var startIndex = this.liList.indexOf(this.startNode);\n var endIndex = this.liList.indexOf(li);\n if (startIndex > endIndex) {\n var temp = startIndex;\n startIndex = endIndex;\n endIndex = temp;\n }\n for (var i = startIndex; i <= endIndex; i++) {\n var currNode = this.liList[i];\n if (isVisible(currNode) && !currNode.classList.contains('e-disable')) {\n this.addSelect(currNode);\n }\n }\n }\n else {\n this.startNode = li;\n this.addSelect(li);\n }\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n this.isRightClick = false;\n }\n this.isRightClick = false;\n };\n TreeView.prototype.unselectNode = function (li, e) {\n var _this = this;\n var eventArgs;\n if (this.isLoaded) {\n eventArgs = this.getSelectEvent(li, 'un-select', e);\n this.trigger('nodeSelecting', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeUnselectAction(li, observedArgs);\n }\n });\n }\n else {\n this.nodeUnselectAction(li, eventArgs);\n }\n };\n TreeView.prototype.nodeUnselectAction = function (li, eventArgs) {\n this.removeSelect(li);\n this.setFocusElement(li);\n if (this.isLoaded) {\n eventArgs.nodeData = this.getNodeData(li);\n this.trigger('nodeSelected', eventArgs);\n }\n };\n TreeView.prototype.setFocusElement = function (li) {\n if (!isNOU(li)) {\n var focusedNode = this.getFocusedNode();\n if (focusedNode) {\n removeClass([focusedNode], FOCUS);\n focusedNode.setAttribute(\"tabindex\", \"-1\");\n }\n addClass([li], FOCUS);\n li.setAttribute('tabindex', '0');\n EventHandler.add(li, 'blur', this.focusOut, this);\n this.updateIdAttr(focusedNode, li);\n }\n };\n TreeView.prototype.addSelect = function (liEle) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n var id = liEle.getAttribute('data-uid');\n if (!isNOU(id) && this.selectedNodes.indexOf(id) === -1) {\n this.selectedNodes.push(id);\n }\n };\n TreeView.prototype.removeSelect = function (liEle) {\n if (this.allowMultiSelection) {\n liEle.setAttribute('aria-selected', 'false');\n }\n else {\n liEle.removeAttribute('aria-selected');\n }\n removeClass([liEle], ACTIVE);\n var index = this.selectedNodes.indexOf(liEle.getAttribute('data-uid'));\n if (index > -1) {\n this.selectedNodes.splice(index, 1);\n }\n };\n TreeView.prototype.removeSelectAll = function () {\n var selectedLI = this.element.querySelectorAll('.' + ACTIVE);\n for (var _i = 0, selectedLI_1 = selectedLI; _i < selectedLI_1.length; _i++) {\n var ele = selectedLI_1[_i];\n if (this.allowMultiSelection) {\n ele.setAttribute('aria-selected', 'false');\n }\n else {\n ele.removeAttribute('aria-selected');\n }\n }\n removeClass(selectedLI, ACTIVE);\n this.setProperties({ selectedNodes: [] }, true);\n };\n TreeView.prototype.getSelectEvent = function (currLi, action, e) {\n var nodeData = this.getNodeData(currLi);\n return { action: action, cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData };\n };\n TreeView.prototype.setExpandOnType = function () {\n this.expandOnType = (this.expandOn === 'Auto') ? (Browser.isDevice ? 'Click' : 'DblClick') : this.expandOn;\n };\n TreeView.prototype.expandHandler = function (e) {\n var target = e.originalEvent.target;\n if (!target || target.classList.contains(INPUT) || target.classList.contains(ROOT) ||\n target.classList.contains(PARENTITEM) || target.classList.contains(LISTITEM) ||\n target.classList.contains(ICON) || this.showCheckBox && closest(target, '.' + CHECKBOXWRAP)) {\n return;\n }\n else {\n this.expandCollapseAction(closest(target, '.' + LISTITEM), e);\n }\n };\n TreeView.prototype.expandCollapseAction = function (currLi, e) {\n var icon = select('div.' + ICON, currLi);\n if (!icon || icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n var classList = icon.classList;\n if (classList.contains(EXPANDABLE)) {\n this.expandAction(currLi, icon, e);\n }\n else if (classList.contains(COLLAPSIBLE)) {\n this.collapseNode(currLi, icon, e);\n }\n }\n };\n TreeView.prototype.expandAction = function (currLi, icon, e, expandChild, callback) {\n var _this = this;\n if (icon.classList.contains(PROCESS)) {\n return;\n }\n else {\n addClass([icon], PROCESS);\n }\n if (this.isLoaded && !this.isRefreshed) {\n this.expandArgs = this.getExpandEvent(currLi, e);\n this.isInteracted = this.expandArgs.isInteracted;\n this.trigger('nodeExpanding', this.expandArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n removeClass([icon], PROCESS);\n }\n else {\n _this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n });\n }\n else {\n this.nodeExpandAction(currLi, icon, expandChild, callback);\n }\n };\n TreeView.prototype.nodeExpandAction = function (currLi, icon, expandChild, callback) {\n var ul = select('.' + PARENTITEM, currLi);\n if (ul && ul.nodeName === 'UL') {\n this.expandNode(currLi, icon);\n }\n else {\n this.isFirstRender = true;\n this.renderChildNodes(currLi, expandChild, callback);\n var liEles = selectAll('.' + LISTITEM, currLi);\n for (var i = 0; i < liEles.length; i++) {\n var id = this.getId(liEles[i]);\n if (this.expandChildren.indexOf(id) !== -1 && this.expandChildren !== undefined) {\n var icon_1 = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEles[i]));\n if (!isNOU(icon_1)) {\n this.expandAction(liEles[i], icon_1, null);\n }\n this.expandChildren.splice(this.expandChildren.indexOf(id), 1);\n }\n }\n }\n };\n TreeView.prototype.keyActionHandler = function (e) {\n var _this = this;\n var target = e.target;\n var focusedNode = this.getFocusedNode();\n if (target && target.classList.contains(INPUT)) {\n var inpEle = target;\n if (e.action === 'enter') {\n inpEle.blur();\n }\n else if (e.action === 'escape') {\n inpEle.value = this.oldText;\n inpEle.blur();\n }\n return;\n }\n e.preventDefault();\n var eventArgs = {\n cancel: false,\n event: e,\n node: focusedNode,\n };\n this.trigger('keyPress', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n switch (e.action) {\n case 'space':\n if (_this.showCheckBox) {\n _this.checkNode(e);\n }\n else {\n _this.toggleSelect(focusedNode, e);\n }\n break;\n case 'moveRight':\n _this.openNode(_this.enableRtl ? false : true, e);\n break;\n case 'moveLeft':\n _this.openNode(_this.enableRtl ? true : false, e);\n break;\n case 'shiftDown':\n _this.shiftKeySelect(true, e);\n break;\n case 'moveDown':\n case 'ctrlDown':\n case 'csDown':\n _this.navigateNode(true);\n break;\n case 'shiftUp':\n _this.shiftKeySelect(false, e);\n break;\n case 'moveUp':\n case 'ctrlUp':\n case 'csUp':\n _this.navigateNode(false);\n break;\n case 'home':\n case 'shiftHome':\n case 'ctrlHome':\n case 'csHome':\n _this.navigateRootNode(true);\n break;\n case 'end':\n case 'shiftEnd':\n case 'ctrlEnd':\n case 'csEnd':\n _this.navigateRootNode(false);\n break;\n case 'enter':\n case 'ctrlEnter':\n case 'shiftEnter':\n case 'csEnter':\n case 'shiftSpace':\n case 'ctrlSpace':\n _this.toggleSelect(focusedNode, e);\n break;\n case 'f2':\n if (_this.allowEditing && !focusedNode.classList.contains('e-disable')) {\n _this.createTextbox(focusedNode, e);\n }\n break;\n case 'ctrlA':\n if (_this.allowMultiSelection) {\n var sNodes = selectAll('.' + LISTITEM + ':not(.' + ACTIVE + ')', _this.element);\n _this.selectGivenNodes(sNodes);\n }\n break;\n }\n }\n });\n };\n TreeView.prototype.navigateToFocus = function (isUp) {\n var focusNode = this.getFocusedNode().querySelector('.' + TEXTWRAP);\n var pos = focusNode.getBoundingClientRect();\n var parent = this.getScrollParent(this.element);\n if (!isNOU(parent)) {\n var parentPos = parent.getBoundingClientRect();\n if (pos.bottom > parentPos.bottom) {\n parent.scrollTop += pos.bottom - parentPos.bottom;\n }\n else if (pos.top < parentPos.top) {\n parent.scrollTop -= parentPos.top - pos.top;\n }\n }\n var isVisible = this.isVisibleInViewport(focusNode);\n if (!isVisible) {\n focusNode.scrollIntoView(isUp);\n }\n };\n TreeView.prototype.isVisibleInViewport = function (txtWrap) {\n var pos = txtWrap.getBoundingClientRect();\n return (pos.top >= 0 && pos.left >= 0 && pos.bottom <= (window.innerHeight || document.documentElement.clientHeight) &&\n pos.right <= (window.innerWidth || document.documentElement.clientWidth));\n };\n TreeView.prototype.getScrollParent = function (node) {\n if (isNOU(node)) {\n return null;\n }\n return (node.scrollHeight > node.clientHeight) ? node : this.getScrollParent(node.parentElement);\n };\n TreeView.prototype.shiftKeySelect = function (isTowards, e) {\n if (this.allowMultiSelection) {\n var focusedNode = this.getFocusedNode();\n var nextNode = isTowards ? this.getNextNode(focusedNode) : this.getPrevNode(focusedNode);\n this.removeHover();\n this.setFocusElement(nextNode);\n this.toggleSelect(nextNode, e, false);\n this.navigateToFocus(!isTowards);\n }\n else {\n this.navigateNode(isTowards);\n }\n };\n TreeView.prototype.checkNode = function (e) {\n var focusedNode = this.getFocusedNode();\n var checkWrap = select('.' + CHECKBOXWRAP, focusedNode);\n var isChecked = select(' .' + CHECKBOXFRAME, checkWrap).classList.contains(CHECK);\n if (!focusedNode.classList.contains('e-disable')) {\n if (focusedNode.getElementsByClassName(\"e-checkbox-disabled\").length == 0) {\n this.validateCheckNode(checkWrap, isChecked, focusedNode, e);\n }\n }\n };\n TreeView.prototype.validateCheckNode = function (checkWrap, isCheck, li, e) {\n var _this = this;\n var currLi = closest(checkWrap, '.' + LISTITEM);\n this.checkActionNodes = [];\n var ariaState = !isCheck ? 'true' : 'false';\n if (!isNOU(ariaState)) {\n checkWrap.setAttribute('aria-checked', ariaState);\n }\n var eventArgs = this.getCheckEvent(currLi, isCheck ? 'uncheck' : 'check', e);\n this.trigger('nodeChecking', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n _this.nodeCheckingAction(checkWrap, isCheck, li, observedArgs, e);\n }\n });\n };\n TreeView.prototype.nodeCheckingAction = function (checkWrap, isCheck, li, eventArgs, e) {\n if (this.checkedElement.indexOf(li.getAttribute('data-uid')) === -1) {\n this.checkedElement.push(li.getAttribute('data-uid'));\n if (this.autoCheck) {\n var child = this.getChildNodes(this.treeData, li.getAttribute('data-uid'));\n (child !== null) ? this.allCheckNode(child, this.checkedElement, null, null, false) : child = null;\n }\n }\n this.changeState(checkWrap, isCheck ? 'uncheck' : 'check', e, true);\n if (this.autoCheck) {\n this.ensureChildCheckState(li);\n this.ensureParentCheckState(closest(closest(li, '.' + PARENTITEM), '.' + LISTITEM));\n var doCheck = void 0;\n if (eventArgs.action === 'check') {\n doCheck = true;\n }\n else if (eventArgs.action === 'uncheck') {\n doCheck = false;\n }\n this.ensureStateChange(li, doCheck);\n }\n this.nodeCheckedEvent(checkWrap, isCheck, e);\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM\n */\n TreeView.prototype.ensureStateChange = function (li, doCheck) {\n var childElement = select('.' + PARENTITEM, li);\n var parentIndex = li.getAttribute('data-uid');\n var mapper = this.fields;\n if (this.dataType === 1 && this.autoCheck) {\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.parentID, 'equal', parentIndex, true));\n for (var i = 0; i < resultData.length; i++) {\n var resultId = resultData[i][this.fields.id] ? resultData[i][this.fields.id].toString() : null;\n var isCheck = resultData[i][this.fields.isChecked] ? resultData[i][this.fields.isChecked].toString() : null;\n if (this.checkedNodes.indexOf(parentIndex) !== -1 && this.checkedNodes.indexOf(resultId) === -1) {\n this.checkedNodes.push(resultId);\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null &&\n this.checkedNodes.indexOf(resultId) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(resultId), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, resultId, 'isChecked', null);\n }\n if (this.checkedNodes.indexOf(parentIndex) === -1 && childElement === null ||\n this.parentNodeCheck.indexOf(resultId) !== -1) {\n var childNodes = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childNodes, doCheck);\n if (this.parentNodeCheck.indexOf(resultId) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(resultId), 1);\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, resultId);\n this.getChildItems(childItems, doCheck);\n }\n }\n }\n else if (this.dataType === 1 && !this.autoCheck) {\n if (!doCheck) {\n var checkedData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.isChecked, 'equal', true, false));\n for (var i = 0; i < checkedData.length; i++) {\n var id = checkedData[i][this.fields.id] ? checkedData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(id) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(id), 1);\n }\n this.updateField(this.treeData, this.fields, id, 'isChecked', null);\n }\n this.checkedNodes = [];\n }\n else {\n for (var i = 0; i < this.treeData.length; i++) {\n var checkedId = this.treeData[i][this.fields.id] ? this.treeData[i][this.fields.id].toString() : null;\n if (this.checkedNodes.indexOf(checkedId) === -1) {\n this.checkedNodes.push(checkedId);\n }\n }\n }\n }\n else {\n var childItems = this.getChildNodes(this.treeData, parentIndex);\n if (childItems) {\n this.childStateChange(childItems, parentIndex, childElement, doCheck);\n }\n }\n };\n TreeView.prototype.getChildItems = function (childItems, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var childId = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : null;\n var childIsCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() :\n null;\n if (this.checkedNodes.indexOf(childId) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(childId), 1);\n }\n if (this.checkedNodes.indexOf(childId) === -1 && doCheck) {\n this.checkedNodes.push(childId);\n }\n if (childIsCheck === 'true' && !doCheck) {\n this.updateField(this.treeData, this.fields, childId, 'isChecked', null);\n }\n var subChildItems = this.getChildNodes(this.treeData, childId);\n if (subChildItems.length > 0) {\n this.getChildItems(subChildItems, doCheck);\n }\n }\n };\n /**\n * Update checkedNodes when UI interaction happens before the child node renders in DOM for hierarchical DS\n */\n TreeView.prototype.childStateChange = function (childItems, parent, childElement, doCheck) {\n for (var i = 0; i < childItems.length; i++) {\n var checkedChild = childItems[i][this.fields.id] ? childItems[i][this.fields.id].toString() : '';\n var isCheck = childItems[i][this.fields.isChecked] ? childItems[i][this.fields.isChecked].toString() : null;\n if (this.autoCheck) {\n if (this.checkedNodes.indexOf(parent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n if (this.parentNodeCheck.indexOf(checkedChild) !== -1) {\n this.parentNodeCheck.splice(this.parentNodeCheck.indexOf(checkedChild), 1);\n }\n }\n else if (this.checkedNodes.indexOf(parent) === -1 && this.checkedNodes.indexOf(checkedChild) !== -1 && !doCheck) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n if (isCheck === 'true') {\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n }\n }\n }\n else if (!this.autoCheck) {\n if (!doCheck) {\n if (this.checkedNodes.indexOf(checkedChild) !== -1) {\n this.checkedNodes.splice(this.checkedNodes.indexOf(checkedChild), 1);\n }\n this.updateField(this.treeData, this.fields, checkedChild, 'isChecked', null);\n this.checkedNodes = [];\n }\n else {\n if (this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n }\n var subChild = this.getChildNodes([childItems[i]], checkedChild);\n if (subChild) {\n this.childStateChange(subChild, parent, childElement, doCheck);\n }\n }\n };\n //This method can be used to get all child nodes of a parent by passing the children of a parent along with 'validateCheck' set to false\n TreeView.prototype.allCheckNode = function (child, newCheck, checked, childCheck, validateCheck) {\n if (child) {\n for (var length_1 = 0; length_1 < child.length; length_1++) {\n var childId = getValue(this.fields.id, child[length_1]);\n var check = this.element.querySelector('[data-uid=\"' + childId + '\"]');\n //Validates isChecked case while no UI interaction has been performed on the node or it's parent\n if (validateCheck !== false && this.checkedElement.indexOf(childId.toString()) === -1) {\n if (((check === null && !isNOU(child[length_1][this.fields.isChecked]) && newCheck.indexOf(childId.toString()) === -1)\n || childCheck === 0 || checked === 2)) {\n (child[length_1][this.fields.isChecked] !== false || checked === 2) ? newCheck.push(childId.toString())\n : childCheck = null;\n childCheck = (child[length_1][this.fields.isChecked] !== false || checked === 2) ? 0 : null;\n }\n }\n //Pushes child checked node done thro' UI interaction\n if (newCheck.indexOf(childId.toString()) === -1 && isNOU(checked)) {\n newCheck.push(childId.toString());\n }\n var hierChildId = getValue(this.fields.child.toString(), child[length_1]);\n //Gets if any next level children are available for child nodes\n if (getValue(this.fields.hasChildren, child[length_1]) === true || hierChildId) {\n var id = getValue(this.fields.id, child[length_1]);\n var childId_1 = void 0;\n if (this.dataType === 1) {\n childId_1 = this.getChildNodes(this.treeData, id.toString());\n }\n else {\n childId_1 = hierChildId;\n }\n if (childId_1) {\n (isNOU(validateCheck)) ? this.allCheckNode(childId_1, newCheck, checked, childCheck) :\n this.allCheckNode(childId_1, newCheck, checked, childCheck, validateCheck);\n childCheck = null;\n }\n }\n childCheck = null;\n }\n }\n };\n TreeView.prototype.openNode = function (toBeOpened, e) {\n var focusedNode = this.getFocusedNode();\n var icon = select('div.' + ICON, focusedNode);\n if (toBeOpened) {\n if (!icon) {\n return;\n }\n else if (icon.classList.contains(EXPANDABLE)) {\n this.expandAction(focusedNode, icon, e);\n }\n else {\n this.focusNextNode(focusedNode, true);\n }\n }\n else {\n if (icon && icon.classList.contains(COLLAPSIBLE)) {\n this.collapseNode(focusedNode, icon, e);\n }\n else {\n var parentLi = closest(closest(focusedNode, '.' + PARENTITEM), '.' + LISTITEM);\n if (!parentLi) {\n return;\n }\n else {\n if (!parentLi.classList.contains('e-disable')) {\n this.setFocus(focusedNode, parentLi);\n this.navigateToFocus(true);\n }\n }\n }\n }\n };\n TreeView.prototype.navigateNode = function (isTowards) {\n var focusedNode = this.getFocusedNode();\n this.focusNextNode(focusedNode, isTowards);\n };\n TreeView.prototype.navigateRootNode = function (isBackwards) {\n var focusedNode = this.getFocusedNode();\n var rootNode = isBackwards ? this.getRootNode() : this.getEndNode();\n if (!rootNode.classList.contains('e-disable')) {\n this.setFocus(focusedNode, rootNode);\n this.navigateToFocus(isBackwards);\n }\n };\n TreeView.prototype.getFocusedNode = function () {\n var selectedItem;\n var fNode = select('.' + LISTITEM + '[tabindex=\"0\"]', this.element);\n if (isNOU(fNode)) {\n selectedItem = select('.' + LISTITEM, this.element);\n }\n return isNOU(fNode) ? (isNOU(selectedItem) ? this.element.firstElementChild : selectedItem) : fNode;\n };\n TreeView.prototype.focusNextNode = function (li, isTowards) {\n var nextNode = isTowards ? this.getNextNode(li) : this.getPrevNode(li);\n this.setFocus(li, nextNode);\n this.navigateToFocus(!isTowards);\n if (nextNode.classList.contains('e-disable')) {\n var lastChild = nextNode.lastChild;\n if (nextNode.previousSibling == null && nextNode.classList.contains('e-level-1')) {\n this.focusNextNode(nextNode, true);\n }\n else if (nextNode.nextSibling == null && nextNode.classList.contains('e-node-collapsed')) {\n this.focusNextNode(nextNode, false);\n }\n else if (nextNode.nextSibling == null && lastChild.classList.contains(TEXTWRAP)) {\n this.focusNextNode(nextNode, false);\n }\n else {\n this.focusNextNode(nextNode, isTowards);\n }\n }\n };\n TreeView.prototype.getNextNode = function (li) {\n var index = this.liList.indexOf(li);\n var nextNode;\n do {\n index++;\n nextNode = this.liList[index];\n if (isNOU(nextNode)) {\n return li;\n }\n } while (!isVisible(nextNode));\n return nextNode;\n };\n TreeView.prototype.getPrevNode = function (li) {\n var index = this.liList.indexOf(li);\n var prevNode;\n do {\n index--;\n prevNode = this.liList[index];\n if (isNOU(prevNode)) {\n return li;\n }\n } while (!isVisible(prevNode));\n return prevNode;\n };\n TreeView.prototype.getRootNode = function () {\n var index = 0;\n var rootNode;\n do {\n rootNode = this.liList[index];\n index++;\n } while (!isVisible(rootNode));\n return rootNode;\n };\n TreeView.prototype.getEndNode = function () {\n var index = this.liList.length - 1;\n var endNode;\n do {\n endNode = this.liList[index];\n index--;\n } while (!isVisible(endNode));\n return endNode;\n };\n TreeView.prototype.setFocus = function (preNode, nextNode) {\n removeClass([preNode], FOCUS);\n preNode.setAttribute(\"tabindex\", \"-1\");\n if (!nextNode.classList.contains('e-disable') && !nextNode.classList.contains(PREVENTSELECT)) {\n addClass([nextNode], FOCUS);\n nextNode.setAttribute('tabindex', '0');\n nextNode.focus();\n EventHandler.add(nextNode, 'blur', this.focusOut, this);\n this.updateIdAttr(preNode, nextNode);\n }\n };\n TreeView.prototype.updateIdAttr = function (preNode, nextNode) {\n this.element.removeAttribute('aria-activedescendant');\n if (preNode) {\n preNode.removeAttribute('id');\n }\n nextNode.setAttribute('id', this.element.id + '_active');\n this.element.setAttribute('aria-activedescendant', this.element.id + '_active');\n };\n TreeView.prototype.focusIn = function () {\n if (!this.mouseDownStatus) {\n var focusedElement = this.getFocusedNode();\n focusedElement.setAttribute(\"tabindex\", \"0\");\n addClass([focusedElement], FOCUS);\n EventHandler.add(focusedElement, 'blur', this.focusOut, this);\n }\n this.mouseDownStatus = false;\n };\n TreeView.prototype.focusOut = function (event) {\n var focusedElement = this.getFocusedNode();\n if (event.target == focusedElement) {\n removeClass([focusedElement], FOCUS);\n EventHandler.remove(focusedElement, 'blur', this.focusOut);\n }\n };\n TreeView.prototype.onMouseOver = function (e) {\n var target = e.target;\n var classList = target.classList;\n var currentLi = closest(target, '.' + LISTITEM);\n if (!currentLi || classList.contains(PARENTITEM) || classList.contains(LISTITEM)) {\n this.removeHover();\n return;\n }\n else {\n if (currentLi && !currentLi.classList.contains('e-disable')) {\n this.setHover(currentLi);\n }\n }\n };\n TreeView.prototype.setHover = function (li) {\n if (!li.classList.contains(HOVER) && !li.classList.contains(PREVENTSELECT)) {\n this.removeHover();\n addClass([li], HOVER);\n }\n };\n ;\n TreeView.prototype.onMouseLeave = function (e) {\n this.removeHover();\n };\n TreeView.prototype.removeHover = function () {\n var hoveredNode = selectAll('.' + HOVER, this.element);\n if (hoveredNode && hoveredNode.length) {\n removeClass(hoveredNode, HOVER);\n }\n };\n ;\n TreeView.prototype.getNodeData = function (currLi, fromDS) {\n if (!isNOU(currLi) && currLi.classList.contains(LISTITEM) &&\n !isNOU(closest(currLi, '.' + CONTROL)) && closest(currLi, '.' + CONTROL).classList.contains(ROOT)) {\n var id = currLi.getAttribute('data-uid');\n var text = this.getText(currLi, fromDS);\n var pNode = closest(currLi.parentNode, '.' + LISTITEM);\n var pid = pNode ? pNode.getAttribute('data-uid') : null;\n var selected = currLi.classList.contains(ACTIVE);\n var selectable = currLi.classList.contains(PREVENTSELECT) ? false : true;\n var expanded = (currLi.getAttribute('aria-expanded') === 'true') ? true : false;\n var hasChildren = currLi.getAttribute('aria-expanded') !== null ? true : (select('.' + EXPANDABLE, currLi) || select('.' + COLLAPSIBLE, currLi)) != null ? true : false;\n var checked = null;\n var checkboxElement = select('.' + CHECKBOXWRAP, currLi);\n if (this.showCheckBox && checkboxElement) {\n checked = checkboxElement.getAttribute('aria-checked');\n }\n return {\n id: id, text: text, parentID: pid, selected: selected, selectable: selectable, expanded: expanded,\n isChecked: checked, hasChildren: hasChildren\n };\n }\n return { id: '', text: '', parentID: '', selected: false, expanded: false, isChecked: '', hasChildren: false };\n };\n TreeView.prototype.getText = function (currLi, fromDS) {\n if (fromDS) {\n var nodeData = this.getNodeObject(currLi.getAttribute('data-uid'));\n var level = parseFloat(currLi.getAttribute('aria-level'));\n var nodeFields = this.getFields(this.fields, level, 1);\n return getValue(nodeFields.text, nodeData);\n }\n return select('.' + LISTTEXT, currLi).textContent;\n };\n TreeView.prototype.getExpandEvent = function (currLi, e) {\n var nodeData = this.getNodeData(currLi);\n return { cancel: false, isInteracted: isNOU(e) ? false : true, node: currLi, nodeData: nodeData, event: e };\n };\n TreeView.prototype.renderNodeTemplate = function (data, textEle, dataId) {\n var tempArr = this.nodeTemplateFn(data, this, 'nodeTemplate' + dataId, this.element.id + 'nodeTemplate', this.isStringTemplate, undefined, textEle, this.root);\n if (tempArr) {\n tempArr = Array.prototype.slice.call(tempArr);\n append(tempArr, textEle);\n }\n };\n TreeView.prototype.destroyTemplate = function (liEle) {\n this.clearTemplate(['nodeTemplate' + liEle.getAttribute('data-uid')]);\n };\n TreeView.prototype.reRenderNodes = function () {\n this.updateListProp(this.fields);\n if (Browser.isIE) {\n this.ulElement = this.element.querySelector('.e-list-parent.e-ul');\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n else {\n this.element.innerHTML = '';\n }\n if (!isNOU(this.nodeTemplateFn)) {\n this.clearTemplate();\n }\n this.setTouchClass();\n this.setProperties({ selectedNodes: [], checkedNodes: [], expandedNodes: [] }, true);\n this.checkedElement = [];\n this.isLoaded = false;\n this.setDataBinding(true);\n };\n TreeView.prototype.setCssClass = function (oldClass, newClass) {\n if (!isNOU(oldClass) && oldClass !== '') {\n removeClass([this.element], oldClass.split(' '));\n }\n if (!isNOU(newClass) && newClass !== '') {\n addClass([this.element], newClass.split(' '));\n }\n };\n TreeView.prototype.editingHandler = function (e) {\n var target = e.target;\n if (!target || target.classList.contains(ROOT) || target.classList.contains(PARENTITEM) ||\n target.classList.contains(LISTITEM) || target.classList.contains(ICON) ||\n target.classList.contains(INPUT) || target.classList.contains(INPUTGROUP)) {\n return;\n }\n else {\n var liEle = closest(target, '.' + LISTITEM);\n this.createTextbox(liEle, e);\n }\n };\n TreeView.prototype.createTextbox = function (liEle, e) {\n var _this = this;\n var oldInpEle = select('.' + TREEINPUT, this.element);\n if (oldInpEle) {\n oldInpEle.blur();\n }\n var textEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var innerEle = this.createElement('input', { className: TREEINPUT, attrs: { value: this.oldText } });\n var eventArgs = this.getEditEvent(liEle, null, innerEle.outerHTML);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n var inpWidth = textEle.offsetWidth + 5;\n var style_1 = 'width:' + inpWidth + 'px';\n addClass([liEle], EDITING);\n if (!isNOU(_this.nodeTemplateFn)) {\n _this.destroyTemplate(liEle);\n }\n if (_this.isReact) {\n setTimeout(function () {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }, 5);\n }\n else {\n _this.renderTextBox(eventArgs, textEle, style_1);\n }\n }\n });\n };\n TreeView.prototype.renderTextBox = function (eventArgs, textEle, style) {\n textEle.innerHTML = eventArgs.innerHtml;\n var inpEle = select('.' + TREEINPUT, textEle);\n this.inputObj = Input.createInput({\n element: inpEle,\n properties: {\n enableRtl: this.enableRtl,\n }\n }, this.createElement);\n this.inputObj.container.setAttribute('style', style);\n inpEle.focus();\n var inputEle = inpEle;\n inputEle.setSelectionRange(0, inputEle.value.length);\n this.wireInputEvents(inpEle);\n };\n TreeView.prototype.updateOldText = function (liEle) {\n var id = liEle.getAttribute('data-uid');\n this.editData = this.getNodeObject(id);\n var level = parseFloat(liEle.getAttribute('aria-level'));\n this.editFields = this.getFields(this.fields, level, 1);\n this.oldText = getValue(this.editFields.text, this.editData);\n };\n TreeView.prototype.inputFocusOut = function (e) {\n if (!select('.' + TREEINPUT, this.element)) {\n return;\n }\n var target = e.target;\n var newText = target.value;\n var txtEle = closest(target, '.' + LISTTEXT);\n var liEle = closest(target, '.' + LISTITEM);\n detach(this.inputObj.container);\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('update', null, liEle, newText, null, null, true);\n }\n else {\n this.appendNewText(liEle, txtEle, newText, true);\n }\n };\n TreeView.prototype.appendNewText = function (liEle, txtEle, newText, isInput) {\n var _this = this;\n var eventArgs = this.getEditEvent(liEle, newText, null);\n this.trigger('nodeEdited', eventArgs, function (observedArgs) {\n newText = observedArgs.cancel ? observedArgs.oldText : observedArgs.newText;\n _this.updateText(liEle, txtEle, newText, isInput);\n if (observedArgs.oldText !== newText) {\n _this.triggerEvent('nodeEdited', [_this.getNode(liEle)]);\n }\n });\n };\n TreeView.prototype.updateText = function (liEle, txtEle, newText, isInput) {\n var newData = setValue(this.editFields.text, newText, this.editData);\n if (!isNOU(this.nodeTemplateFn)) {\n txtEle.innerText = '';\n var dataId = liEle.getAttribute('data-uid');\n this.renderNodeTemplate(newData, txtEle, dataId);\n this.renderReactTemplates();\n }\n else {\n this.enableHtmlSanitizer ? txtEle.innerText = SanitizeHtmlHelper.sanitize(newText) : txtEle.innerHTML = newText;\n }\n if (isInput) {\n removeClass([liEle], EDITING);\n liEle.focus();\n EventHandler.add(liEle, 'blur', this.focusOut, this);\n addClass([liEle], FOCUS);\n }\n if (this.allowTextWrap) {\n this.calculateWrap(liEle);\n }\n };\n TreeView.prototype.getElement = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return this.element.querySelector('[data-uid=\"' + ele + '\"]');\n }\n else if (typeof ele === 'object') {\n return getElement(ele);\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getId = function (ele) {\n if (isNOU(ele)) {\n return null;\n }\n else if (typeof ele === 'string') {\n return ele;\n }\n else if (typeof ele === 'object') {\n return (getElement(ele)).getAttribute('data-uid');\n }\n else {\n return null;\n }\n };\n TreeView.prototype.getEditEvent = function (liEle, newText, inpEle) {\n var data = this.getNodeData(liEle);\n return { cancel: false, newText: newText, node: liEle, nodeData: data, oldText: this.oldText, innerHtml: inpEle };\n };\n TreeView.prototype.getNodeObject = function (id) {\n var childNodes;\n if (isNOU(id)) {\n return childNodes;\n }\n else if (this.dataType === 1) {\n for (var i = 0, objlen = this.treeData.length; i < objlen; i++) {\n var dataId = getValue(this.fields.id, this.treeData[i]);\n if (!isNOU(this.treeData[i]) && !isNOU(dataId) && dataId.toString() === id) {\n return this.treeData[i];\n }\n }\n }\n else {\n return this.getChildNodeObject(this.treeData, this.fields, id);\n }\n return childNodes;\n };\n TreeView.prototype.getChildNodeObject = function (obj, mapper, id) {\n var newList;\n if (isNOU(obj)) {\n return newList;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var dataId = getValue(mapper.id, obj[i]);\n if (obj[i] && dataId && dataId.toString() === id) {\n return obj[i];\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n newList = this.getChildNodeObject(childData, this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var child = 'child';\n newList = this.getChildNodeObject(getValue(child, obj[i]), this.getChildMapper(mapper), id);\n if (newList !== undefined) {\n break;\n }\n }\n }\n return newList;\n };\n TreeView.prototype.setDragAndDrop = function (toBind) {\n if (toBind && !this.disabled) {\n this.initializeDrag();\n }\n else {\n this.destroyDrag();\n }\n };\n TreeView.prototype.initializeDrag = function () {\n var _this = this;\n var virtualEle;\n var proxy = this;\n this.dragObj = new Draggable(this.element, {\n enableTailMode: true, enableAutoScroll: true,\n dragArea: this.dragArea,\n dragTarget: '.' + TEXTWRAP,\n enableTapHold: true,\n tapHoldThreshold: 100,\n helper: function (e) {\n _this.dragTarget = e.sender.target;\n var dragRoot = closest(_this.dragTarget, '.' + ROOT);\n var dragWrap = closest(_this.dragTarget, '.' + TEXTWRAP);\n _this.dragLi = closest(_this.dragTarget, '.' + LISTITEM);\n if (_this.fullRowSelect && !dragWrap && _this.dragTarget.classList.contains(FULLROW)) {\n dragWrap = _this.dragTarget.nextElementSibling;\n }\n if (!_this.dragTarget || !e.element.isSameNode(dragRoot) || !dragWrap ||\n _this.dragTarget.classList.contains(ROOT) || _this.dragTarget.classList.contains(PARENTITEM) ||\n _this.dragTarget.classList.contains(LISTITEM) || _this.dragLi.classList.contains('e-disable')) {\n return false;\n }\n var cloneEle = (dragWrap.cloneNode(true));\n if (isNOU(select('div.' + ICON, cloneEle))) {\n var icon = proxy.createElement('div', { className: ICON + ' ' + EXPANDABLE });\n cloneEle.insertBefore(icon, cloneEle.children[0]);\n }\n var cssClass = DRAGITEM + ' ' + ROOT + ' ' + _this.cssClass + ' ' + (_this.enableRtl ? RTL : '');\n virtualEle = proxy.createElement('div', { className: cssClass });\n virtualEle.appendChild(cloneEle);\n var nLen = _this.selectedNodes.length;\n if (nLen > 1 && _this.allowMultiSelection && _this.dragLi.classList.contains(ACTIVE)) {\n var cNode = proxy.createElement('span', { className: DROPCOUNT, innerHTML: '' + nLen });\n virtualEle.appendChild(cNode);\n }\n document.body.appendChild(virtualEle);\n document.body.style.cursor = '';\n _this.dragData = _this.getNodeData(_this.dragLi);\n return virtualEle;\n },\n dragStart: function (e) {\n addClass([_this.element], DRAGGING);\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, null, e.target, null, virtualEle, level);\n if (eventArgs.draggedNode.classList.contains(EDITING)) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.trigger('nodeDragStart', eventArgs, function (observedArgs) {\n if (observedArgs.cancel) {\n _this.dragObj.intDestroy(e.event);\n _this.dragCancelAction(virtualEle);\n }\n else {\n _this.dragStartAction = true;\n }\n });\n }\n },\n drag: function (e) {\n _this.dragObj.setProperties({ cursorAt: { top: (!isNOU(e.event.targetTouches) || Browser.isDevice) ? 60 : -20 } });\n _this.dragAction(e, virtualEle);\n },\n dragStop: function (e) {\n removeClass([_this.element], DRAGGING);\n _this.removeVirtualEle();\n var dropTarget = e.target;\n var preventTargetExpand = false;\n var dropRoot = (closest(dropTarget, '.' + DROPPABLE));\n var isHelperElement = true;\n if (!dropTarget || !dropRoot) {\n detach(e.helper);\n document.body.style.cursor = '';\n isHelperElement = false;\n }\n var listItem = closest(dropTarget, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = _this.getDragEvent(e.event, _this, dropTarget, dropTarget, null, e.helper, level);\n eventArgs.preventTargetExpand = preventTargetExpand;\n _this.trigger('nodeDragStop', eventArgs, function (observedArgs) {\n _this.dragParent = observedArgs.draggedParentNode;\n _this.preventExpand = observedArgs.preventTargetExpand;\n if (observedArgs.cancel) {\n if (e.helper.parentNode) {\n detach(e.helper);\n }\n document.body.style.cursor = '';\n isHelperElement = false;\n }\n _this.dragStartAction = false;\n });\n }\n });\n this.dropObj = new Droppable(this.element, {\n out: function (e) {\n if (!isNOU(e) && !e.target.classList.contains(SIBLING) && (_this.dropObj.dragData.default && _this.dropObj.dragData.default.helper.classList.contains(ROOT))) {\n document.body.style.cursor = 'not-allowed';\n }\n },\n over: function (e) {\n document.body.style.cursor = '';\n },\n drop: function (e) {\n _this.dropAction(e);\n }\n });\n };\n TreeView.prototype.dragCancelAction = function (virtualEle) {\n detach(virtualEle);\n removeClass([this.element], DRAGGING);\n this.dragStartAction = false;\n };\n TreeView.prototype.dragAction = function (e, virtualEle) {\n var dropRoot = closest(e.target, '.' + DROPPABLE);\n var dropWrap = closest(e.target, '.' + TEXTWRAP);\n var icon = select('div.' + ICON, virtualEle);\n removeClass([icon], [DROPIN, DROPNEXT, DROPOUT, NODROP]);\n this.removeVirtualEle();\n document.body.style.cursor = '';\n var classList = e.target.classList;\n if (this.fullRowSelect && !dropWrap && !isNOU(classList) && classList.contains(FULLROW)) {\n dropWrap = e.target.nextElementSibling;\n }\n if (dropRoot) {\n var dropLi = closest(e.target, '.' + LISTITEM);\n var checkWrapper = closest(e.target, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dropRoot.classList.contains(ROOT) || (dropWrap &&\n (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi)))) {\n if (this.hasTemplate && dropLi) {\n var templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n if ((e && (!expand && !collapse) && e.event.offsetY < 7 && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((e && (!expand && !collapse) && !checkWrapper && templateTarget && e.event.offsetY > templateTarget.offsetHeight - 10) || ((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n else {\n if ((dropLi && e && (!expand && !collapse) && (e.event.offsetY < 7) && !checkWrapper) || (((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3)))) {\n var index = this.fullRowSelect ? (1) : (0);\n this.appendIndicator(dropLi, icon, index);\n }\n else if ((dropLi && e && (!expand && !collapse) && (e.target.offsetHeight > 0 && e.event.offsetY > (e.target.offsetHeight - 10)) && !checkWrapper) || (((expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19)))) {\n var index = this.fullRowSelect ? (2) : (1);\n this.appendIndicator(dropLi, icon, index);\n }\n else {\n addClass([icon], DROPIN);\n }\n }\n }\n else if (e.target.nodeName === 'LI' && (!dropLi.isSameNode(this.dragLi) && !this.isDescendant(this.dragLi, dropLi))) {\n addClass([icon], DROPNEXT);\n this.renderVirtualEle(e);\n }\n else if (e.target.classList.contains(SIBLING)) {\n addClass([icon], DROPNEXT);\n }\n else {\n addClass([icon], DROPOUT);\n }\n }\n else {\n addClass([icon], NODROP);\n document.body.style.cursor = 'not-allowed';\n }\n var listItem = closest(e.target, '.e-list-item');\n var level;\n if (listItem) {\n level = parseInt(listItem.getAttribute('aria-level'), 10);\n }\n var eventArgs = this.getDragEvent(e.event, this, e.target, e.target, null, virtualEle, level);\n if (eventArgs.dropIndicator) {\n removeClass([icon], eventArgs.dropIndicator);\n }\n this.trigger('nodeDragging', eventArgs);\n if (eventArgs.dropIndicator) {\n addClass([icon], eventArgs.dropIndicator);\n }\n };\n TreeView.prototype.appendIndicator = function (dropLi, icon, index) {\n addClass([icon], DROPNEXT);\n var virEle = this.createElement('div', { className: SIBLING });\n dropLi.insertBefore(virEle, dropLi.children[index]);\n };\n /* eslint-disable */\n TreeView.prototype.dropAction = function (e) {\n var offsetY = e.event.offsetY;\n var dropTarget = e.target;\n var dragObj;\n var level;\n var drop = false;\n var dragInstance;\n var nodeData = [];\n var liArray = [];\n dragInstance = e.dragData.draggable;\n for (var i_1 = 0; i_1 < dragInstance.ej2_instances.length; i_1++) {\n if (dragInstance.ej2_instances[i_1] instanceof TreeView_1) {\n dragObj = dragInstance.ej2_instances[i_1];\n break;\n }\n }\n if (dragObj && dragObj.dragTarget) {\n var dragTarget = dragObj.dragTarget;\n var dragLi = (closest(dragTarget, '.' + LISTITEM));\n var dropLi = (closest(dropTarget, '.' + LISTITEM));\n liArray.push(dragLi);\n if (dropLi == null && dropTarget.classList.contains(ROOT)) {\n dropLi = dropTarget.firstElementChild;\n }\n detach(e.droppedElement);\n document.body.style.cursor = '';\n if (!dropLi || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n return;\n }\n if (dragObj.allowMultiSelection && dragLi.classList.contains(ACTIVE)) {\n var sNodes = selectAll('.' + ACTIVE, dragObj.element);\n liArray = sNodes;\n if (e.target.offsetHeight <= 33 && offsetY > e.target.offsetHeight - 10 && offsetY > 6) {\n for (var i_2 = sNodes.length - 1; i_2 >= 0; i_2--) {\n if (dropLi.isSameNode(sNodes[i_2]) || this.isDescendant(sNodes[i_2], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i_2], dropLi, e, dragObj, offsetY);\n }\n }\n else {\n for (var i_3 = 0; i_3 < sNodes.length; i_3++) {\n if (dropLi.isSameNode(sNodes[i_3]) || this.isDescendant(sNodes[i_3], dropLi)) {\n continue;\n }\n this.appendNode(dropTarget, sNodes[i_3], dropLi, e, dragObj, offsetY);\n }\n }\n }\n else {\n this.appendNode(dropTarget, dragLi, dropLi, e, dragObj, offsetY);\n }\n level = parseInt(dragLi.getAttribute('aria-level'), 10);\n drop = true;\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n for (var i = 0; i < liArray.length; i++) {\n nodeData.push(this.getNode(liArray[i]));\n }\n this.trigger('nodeDropped', this.getDragEvent(e.event, dragObj, dropTarget, e.target, e.dragData.draggedElement, null, level, drop));\n if (dragObj.element.id !== this.element.id) {\n dragObj.triggerEvent('nodeDropped', nodeData);\n this.isNodeDropped = true;\n this.fields.dataSource = this.treeData;\n }\n this.triggerEvent('nodeDropped', nodeData);\n };\n TreeView.prototype.appendNode = function (dropTarget, dragLi, dropLi, e, dragObj, offsetY) {\n var checkWrapper = closest(dropTarget, '.' + CHECKBOXWRAP);\n var collapse = closest(e.target, '.' + COLLAPSIBLE);\n var expand = closest(e.target, '.' + EXPANDABLE);\n if (!dragLi.classList.contains('e-disable') && !checkWrapper && ((expand && e.event.offsetY < 5) || (collapse && e.event.offsetX < 3) || (expand && e.event.offsetY > 19) || (collapse && e.event.offsetX > 19) || (!expand && !collapse))) {\n if (dropTarget.nodeName === 'LI') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else if (dropTarget.firstElementChild && dropTarget.classList.contains(ROOT)) {\n if (dropTarget.firstElementChild.nodeName === 'UL') {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n }\n else if ((dropTarget.classList.contains('e-icon-collapsible')) || (dropTarget.classList.contains('e-icon-expandable'))) {\n this.dropAsSiblingNode(dragLi, dropLi, e, dragObj);\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY);\n }\n }\n else {\n this.dropAsChildNode(dragLi, dropLi, dragObj, null, e, offsetY, true);\n }\n if (this.showCheckBox) {\n this.ensureIndeterminate();\n }\n };\n TreeView.prototype.dropAsSiblingNode = function (dragLi, dropLi, e, dragObj) {\n var dropUl = closest(dropLi, '.' + PARENTITEM);\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var pre;\n if (e.target.offsetHeight > 0 && e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n else if (e.target.classList.contains('e-icon-expandable') || (e.target.classList.contains('e-icon-collapsible'))) {\n if ((e.event.offsetY < 5) || (e.event.offsetX < 3)) {\n pre = true;\n }\n else if ((e.event.offsetY > 15) || (e.event.offsetX > 17)) {\n pre = false;\n }\n }\n if ((e.target.classList.contains('e-icon-expandable')) || (e.target.classList.contains('e-icon-collapsible'))) {\n var target = e.target.closest('li');\n dropUl.insertBefore(dragLi, pre ? target : target.nextElementSibling);\n }\n else {\n dropUl.insertBefore(dragLi, pre ? e.target : e.target.nextElementSibling);\n }\n this.moveData(dragLi, dropLi, dropUl, pre, dragObj);\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.dropAsChildNode = function (dragLi, dropLi, dragObj, index, e, pos, isCheck) {\n var dragParentUl = closest(dragLi, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n var dropParentUl = closest(dropLi, '.' + PARENTITEM);\n var templateTarget;\n if (e && e.target) {\n templateTarget = select(this.fullRowSelect ? '.' + FULLROW : '.' + TEXTWRAP, dropLi);\n }\n if (e && (pos < 7) && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi);\n this.moveData(dragLi, dropLi, dropParentUl, true, dragObj);\n }\n else if (e && (e.target.offsetHeight > 0 && pos > (e.target.offsetHeight - 10)) && !isCheck && !this.hasTemplate) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else if (this.hasTemplate && templateTarget && pos > templateTarget.offsetHeight - 10 && !isCheck) {\n dropParentUl.insertBefore(dragLi, dropLi.nextElementSibling);\n this.moveData(dragLi, dropLi, dropParentUl, false, dragObj);\n }\n else {\n var dropUl = this.expandParent(dropLi);\n var childLi = dropUl.childNodes[index];\n dropUl.insertBefore(dragLi, childLi);\n this.moveData(dragLi, childLi, dropUl, true, dragObj);\n }\n this.updateElement(dragParentUl, dragParentLi);\n this.updateAriaLevel(dragLi);\n if (dragObj.element.id === this.element.id) {\n this.updateList();\n }\n else {\n dragObj.updateInstance();\n this.updateInstance();\n }\n };\n TreeView.prototype.moveData = function (dragLi, dropLi, dropUl, pre, dragObj) {\n var dropParentLi = closest(dropUl, '.' + LISTITEM);\n var id = this.getId(dragLi);\n var removedData = dragObj.updateChildField(dragObj.treeData, dragObj.fields, id, null, null, true);\n var refId = this.getId(dropLi);\n var index = this.getDataPos(this.treeData, this.fields, refId);\n var parentId = this.getId(dropParentLi);\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', true);\n var pos = isNOU(index) ? this.treeData.length : (pre ? index : index + 1);\n if (isNOU(parentId) && !this.hasPid) {\n delete removedData[0][this.fields.parentID];\n }\n else {\n var currPid = this.isNumberTypeId ? parseFloat(parentId) : parentId;\n setValue(this.fields.parentID, currPid, removedData[0]);\n }\n this.treeData.splice(pos, 0, removedData[0]);\n if (dragObj.element.id !== this.element.id) {\n var childData = dragObj.removeChildNodes(id);\n pos++;\n for (var i = 0, len = childData.length; i < len; i++) {\n this.treeData.splice(pos, 0, childData[i]);\n pos++;\n }\n dragObj.groupedData = dragObj.getGroupedData(dragObj.treeData, dragObj.fields.parentID);\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.addChildData(this.treeData, this.fields, parentId, removedData, pre ? index : index + 1);\n }\n };\n TreeView.prototype.expandParent = function (dropLi) {\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && this.preventExpand !== true) {\n this.expandAction(dropLi, dropIcon, null);\n }\n var dropUl = select('.' + PARENTITEM, dropLi);\n if (this.preventExpand === true && !dropUl && dropIcon) {\n this.renderChildNodes(dropLi);\n }\n dropUl = select('.' + PARENTITEM, dropLi);\n if (!isNOU(dropUl) && this.preventExpand === true) {\n dropUl.style.display = 'none';\n }\n if (!isNOU(dropUl) && this.preventExpand === false) {\n dropUl.style.display = 'block';\n }\n if (isNOU(dropUl) && this.preventExpand === true) {\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n icon.classList.add('e-icon-expandable');\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n if (icon) {\n removeClass([icon], COLLAPSIBLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, EXPANDABLE, this.listBaseOption);\n }\n dropLi.setAttribute('aria-expanded', 'false');\n dropUl.style.display = 'none';\n }\n if (isNOU(dropUl)) {\n var args = this.expandArgs;\n if (isNOU(args) || args.name != 'nodeExpanding') {\n this.trigger('nodeExpanding', this.getExpandEvent(dropLi, null));\n }\n if (isNOU(dropIcon)) {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n }\n var icon = select('div.' + ICON, dropLi);\n if (icon) {\n removeClass([icon], EXPANDABLE);\n }\n else {\n ListBase.generateIcon(this.createElement, dropLi, COLLAPSIBLE, this.listBaseOption);\n icon = select('div.' + ICON, dropLi);\n removeClass([icon], EXPANDABLE);\n }\n dropUl = ListBase.generateUL(this.createElement, [], null, this.listBaseOption);\n dropLi.appendChild(dropUl);\n this.addExpand(dropLi);\n this.trigger('nodeExpanded', this.getExpandEvent(dropLi, null));\n }\n return dropUl;\n };\n TreeView.prototype.updateElement = function (dragParentUl, dragParentLi) {\n if (dragParentLi && dragParentUl.childElementCount === 0) {\n var dragIcon = select('div.' + ICON, dragParentLi);\n detach(dragParentUl);\n detach(dragIcon);\n var parentId = this.getId(dragParentLi);\n this.updateField(this.treeData, this.fields, parentId, 'hasChildren', false);\n this.removeExpand(dragParentLi, true);\n }\n };\n TreeView.prototype.updateAriaLevel = function (dragLi) {\n var level = this.parents(dragLi, '.' + PARENTITEM).length;\n dragLi.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, dragLi), level + 1);\n };\n TreeView.prototype.updateChildAriaLevel = function (element, level) {\n if (!isNOU(element)) {\n var cNodes = element.childNodes;\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n liEle.setAttribute('aria-level', '' + level);\n this.updateChildAriaLevel(select('.' + PARENTITEM, liEle), level + 1);\n }\n }\n };\n TreeView.prototype.renderVirtualEle = function (e) {\n var pre;\n if (e.event.offsetY > e.target.offsetHeight - 2) {\n pre = false;\n }\n else if (e.event.offsetY < 2) {\n pre = true;\n }\n var virEle = this.createElement('div', { className: SIBLING });\n var index = this.fullRowSelect ? (pre ? 1 : 2) : (pre ? 0 : 1);\n e.target.insertBefore(virEle, e.target.children[index]);\n };\n TreeView.prototype.removeVirtualEle = function () {\n var sibEle = select('.' + SIBLING);\n if (sibEle) {\n detach(sibEle);\n }\n };\n TreeView.prototype.destroyDrag = function () {\n if (this.dragObj && this.dropObj) {\n this.dragObj.destroy();\n this.dropObj.destroy();\n }\n };\n TreeView.prototype.getDragEvent = function (event, obj, dropTarget, target, dragNode, cloneEle, level, drop) {\n var dropLi = dropTarget ? closest(dropTarget, '.' + LISTITEM) : null;\n var dropData = dropLi ? this.getNodeData(dropLi) : null;\n var draggedNode = obj ? obj.dragLi : dragNode;\n var draggedNodeData = obj ? obj.dragData : null;\n var newParent = dropTarget ? this.parents(dropTarget, '.' + LISTITEM) : null;\n var dragLiParent = obj.dragLi.parentElement;\n var dragParent = obj.dragLi ? closest(dragLiParent, '.' + LISTITEM) : null;\n var targetParent = null;\n var indexValue = null;\n var iconCss = [DROPNEXT, DROPIN, DROPOUT, NODROP];\n var iconClass = null;\n var node = (drop === true) ? draggedNode : dropLi;\n var index = node ? closest(node, '.e-list-parent') : null;\n var i = 0;\n var position = null;\n dragParent = (obj.dragLi && dragParent === null) ? closest(dragLiParent, '.' + ROOT) : dragParent;\n dragParent = (drop === true) ? this.dragParent : dragParent;\n if (cloneEle) {\n while (i < 4) {\n if (select('.' + ICON, cloneEle).classList.contains(iconCss[i])) {\n iconClass = iconCss[i];\n break;\n }\n i++;\n }\n }\n if (index) {\n var dropTar = 0;\n for (i = 0; i < index.childElementCount; i++) {\n dropTar = (drop !== true && index.children[i] === draggedNode && dropLi !== draggedNode) ? ++dropTar : dropTar;\n if ((drop !== true && index.children[i].classList.contains('e-hover'))) {\n indexValue = (event.offsetY >= 23) ? i + 1 : i;\n break;\n }\n else if (index.children[i] === node) {\n indexValue = (event.offsetY >= 23) ? i : i;\n break;\n }\n }\n indexValue = (dropTar !== 0) ? --indexValue : indexValue;\n position = (iconClass == \"e-drop-in\") ? \"Inside\" : ((event.offsetY < 7) ? \"Before\" : \"After\");\n }\n if (dropTarget) {\n if (newParent.length === 0) {\n targetParent = null;\n }\n else if (dropTarget.classList.contains(LISTITEM)) {\n targetParent = newParent[0];\n }\n else {\n targetParent = newParent[1];\n }\n }\n if (dropLi === draggedNode) {\n targetParent = dropLi;\n }\n if (dropTarget && target.offsetHeight <= 33 && event.offsetY < target.offsetHeight - 10 && event.offsetY > 6) {\n targetParent = dropLi;\n if (drop !== true) {\n level = ++level;\n var parent_2 = targetParent ? select('.e-list-parent', targetParent) : null;\n indexValue = (parent_2) ? parent_2.children.length : 0;\n if (!(this.fields.dataSource instanceof DataManager) && parent_2 === null && targetParent) {\n var parent_3 = targetParent.hasAttribute('data-uid') ?\n this.getChildNodes(this.fields.dataSource, targetParent.getAttribute('data-uid').toString()) : null;\n indexValue = (parent_3) ? parent_3.length : 0;\n }\n }\n }\n return {\n cancel: false,\n clonedNode: cloneEle,\n event: event,\n draggedNode: draggedNode,\n draggedNodeData: draggedNodeData,\n droppedNode: dropLi,\n droppedNodeData: dropData,\n dropIndex: indexValue,\n dropLevel: level,\n draggedParentNode: dragParent,\n dropTarget: targetParent,\n dropIndicator: iconClass,\n target: target,\n position: position,\n };\n };\n TreeView.prototype.addFullRow = function (toAdd) {\n var len = this.liList.length;\n if (toAdd) {\n for (var i = 0; i < len; i++) {\n this.createFullRow(this.liList[i]);\n }\n }\n else {\n for (var i = 0; i < len; i++) {\n var rowDiv = select('.' + FULLROW, this.liList[i]);\n detach(rowDiv);\n }\n }\n };\n TreeView.prototype.createFullRow = function (item) {\n var rowDiv = this.createElement('div', { className: FULLROW });\n item.insertBefore(rowDiv, item.childNodes[0]);\n };\n TreeView.prototype.addMultiSelect = function (toAdd) {\n if (toAdd) {\n var liEles = selectAll('.' + LISTITEM + ':not([aria-selected=\"true\"])', this.element);\n for (var _i = 0, liEles_1 = liEles; _i < liEles_1.length; _i++) {\n var ele = liEles_1[_i];\n ele.setAttribute('aria-selected', 'false');\n }\n }\n else {\n var liEles = selectAll('.' + LISTITEM + '[aria-selected=\"false\"]', this.element);\n for (var _a = 0, liEles_2 = liEles; _a < liEles_2.length; _a++) {\n var ele = liEles_2[_a];\n ele.removeAttribute('aria-selected');\n }\n }\n };\n TreeView.prototype.collapseByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var cNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var liEle = cNodes[i];\n var icon = select('.' + COLLAPSIBLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.collapseNode(liEle, icon, null);\n }\n this.collapseByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.collapseAllNodes = function (excludeHiddenNodes) {\n var cIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + COLLAPSIBLE, this.element));\n for (var i = 0, len = cIcons.length; i < len; i++) {\n var icon = cIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.collapseNode(liEle, icon, null);\n }\n };\n TreeView.prototype.expandByLevel = function (element, level, excludeHiddenNodes) {\n if (level > 0 && !isNOU(element)) {\n var eNodes = this.getVisibleNodes(excludeHiddenNodes, element.childNodes);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n var liEle = eNodes[i];\n var icon = select('.' + EXPANDABLE, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n this.expandAction(liEle, icon, null);\n }\n this.expandByLevel(select('.' + PARENTITEM, liEle), level - 1, excludeHiddenNodes);\n }\n }\n };\n TreeView.prototype.expandAllNodes = function (excludeHiddenNodes) {\n var eIcons = this.getVisibleNodes(excludeHiddenNodes, selectAll('.' + EXPANDABLE, this.element));\n for (var i = 0, len = eIcons.length; i < len; i++) {\n var icon = eIcons[i];\n var liEle = closest(icon, '.' + LISTITEM);\n this.expandAction(liEle, icon, null, true);\n }\n };\n TreeView.prototype.getVisibleNodes = function (excludeHiddenNodes, nodes) {\n var vNodes = Array.prototype.slice.call(nodes);\n if (excludeHiddenNodes) {\n for (var i = 0; i < vNodes.length; i++) {\n if (!isVisible(vNodes[i])) {\n vNodes.splice(i, 1);\n i--;\n }\n }\n }\n return vNodes;\n };\n TreeView.prototype.removeNode = function (node) {\n var dragParentUl = closest(node, '.' + PARENTITEM);\n var dragParentLi = closest(dragParentUl, '.' + LISTITEM);\n if (!isNOU(this.nodeTemplateFn)) {\n this.destroyTemplate(node);\n }\n detach(node);\n this.updateElement(dragParentUl, dragParentLi);\n this.removeData(node);\n };\n TreeView.prototype.updateInstance = function () {\n this.updateList();\n this.updateSelectedNodes();\n this.updateExpandedNodes();\n };\n TreeView.prototype.updateList = function () {\n this.liList = Array.prototype.slice.call(selectAll('.' + LISTITEM, this.element));\n };\n TreeView.prototype.updateSelectedNodes = function () {\n this.setProperties({ selectedNodes: [] }, true);\n var sNodes = selectAll('.' + ACTIVE, this.element);\n this.selectGivenNodes(sNodes);\n };\n TreeView.prototype.updateExpandedNodes = function () {\n this.setProperties({ expandedNodes: [] }, true);\n var eNodes = selectAll('[aria-expanded=\"true\"]', this.element);\n for (var i = 0, len = eNodes.length; i < len; i++) {\n this.addExpand(eNodes[i]);\n }\n };\n TreeView.prototype.removeData = function (node) {\n if (this.dataType === 1) {\n var dm = new DataManager(this.treeData);\n var id = this.getId(node);\n var data = {};\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = newId;\n dm.remove(this.fields.id, data);\n this.removeChildNodes(id);\n }\n else {\n var id = this.getId(node);\n this.updateChildField(this.treeData, this.fields, id, null, null, true);\n }\n };\n TreeView.prototype.removeChildNodes = function (parentId) {\n var cNodes = this.getChildGroup(this.groupedData, parentId, false);\n var childData = [];\n if (cNodes) {\n for (var i = 0, len = cNodes.length; i < len; i++) {\n var dm = new DataManager(this.treeData);\n var id = getValue(this.fields.id, cNodes[i]).toString();\n var data = {};\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n data[this.fields.id] = currId;\n var nodeData = dm.remove(this.fields.id, data);\n childData.push(nodeData[0]);\n this.removeChildNodes(id);\n }\n }\n return childData;\n };\n TreeView.prototype.doGivenAction = function (nodes, selector, toExpand) {\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n if (isNOU(liEle)) {\n continue;\n }\n var icon = select('.' + selector, select('.' + TEXTWRAP, liEle));\n if (!isNOU(icon)) {\n toExpand ? this.expandAction(liEle, icon, null) : this.collapseNode(liEle, icon, null);\n }\n }\n };\n TreeView.prototype.addGivenNodes = function (nodes, dropLi, index, isRemote, dropEle) {\n if (nodes.length === 0) {\n return;\n }\n var sNodes = this.getSortedData(nodes);\n var level = dropLi ? parseFloat(dropLi.getAttribute('aria-level')) + 1 : 1;\n if (isRemote) {\n this.updateMapper(level);\n }\n var li = ListBase.createListItemFromJson(this.createElement, sNodes, this.listBaseOption, level);\n var id = this.getId(dropLi);\n var refNode;\n var dropIcon1;\n if (!isNullOrUndefined(dropLi)) {\n dropIcon1 = select('div.' + ICON, dropLi);\n }\n if (this.dataType === 1 && dropIcon1 && dropIcon1.classList.contains(EXPANDABLE) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = true;\n }\n if (this.dataType !== 1) {\n this.addChildData(this.treeData, this.fields, id, nodes, index);\n this.isFirstRender = false;\n }\n var dropUl;\n if (!dropEle) {\n dropUl = dropLi ? this.expandParent(dropLi) : select('.' + PARENTITEM, this.element);\n }\n else {\n dropUl = dropEle;\n }\n refNode = dropUl.childNodes[index];\n if (!this.isFirstRender || this.dataType === 1) {\n var args = this.expandArgs;\n if (refNode || this.sortOrder === 'None') {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNOU(args) || args.name != 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n if (!refNode && ((this.sortOrder === 'Ascending') || (this.sortOrder === 'Descending'))) {\n if (dropUl.childNodes.length === 0) {\n for (var i = 0; i < li.length; i++) {\n dropUl.insertBefore(li[i], refNode);\n }\n if (this.dataType === 1 && !isNullOrUndefined(dropLi) && !isNOU(this.element.offsetParent) && !this.element.offsetParent.parentElement.classList.contains('e-filemanager')) {\n this.preventExpand = false;\n var dropIcon = select('div.' + ICON, dropLi);\n if (dropIcon && dropIcon.classList.contains(EXPANDABLE) && (isNOU(args) || args.name != 'nodeExpanding')) {\n this.expandAction(dropLi, dropIcon, null);\n }\n }\n }\n else {\n var cNodes = dropUl.childNodes;\n for (var i = 0; i < li.length; i++) {\n for (var j = 0; j < cNodes.length; j++) {\n var returnValue = (this.sortOrder === 'Ascending') ? cNodes[j].textContent.toUpperCase() > li[i].innerText.toUpperCase() : cNodes[j].textContent.toUpperCase() < li[i].innerText.toUpperCase();\n if (returnValue) {\n dropUl.insertBefore(li[i], cNodes[j]);\n break;\n }\n dropUl.insertBefore(li[i], cNodes[cNodes.length]);\n }\n }\n }\n }\n }\n if (this.dataType === 1) {\n this.updateField(this.treeData, this.fields, id, 'hasChildren', true);\n var refId = this.getId(refNode);\n var pos = isNOU(refId) ? this.treeData.length : this.getDataPos(this.treeData, this.fields, refId);\n for (var j = 0; j < nodes.length; j++) {\n if (!isNOU(id)) {\n var currId = this.isNumberTypeId ? parseFloat(id) : id;\n setValue(this.fields.parentID, currId, nodes[j]);\n }\n this.treeData.splice(pos, 0, nodes[j]);\n pos++;\n }\n }\n this.finalizeNode(dropUl);\n };\n TreeView.prototype.updateMapper = function (level) {\n var mapper = (level === 1) ? this.fields : this.getChildFields(this.fields, level - 1, 1);\n this.updateListProp(mapper);\n };\n TreeView.prototype.updateListProp = function (mapper) {\n var prop = this.getActualProperties(mapper);\n this.listBaseOption.fields = prop;\n this.listBaseOption.fields.url = prop.hasOwnProperty('navigateUrl') ? prop.navigateUrl : 'navigateUrl';\n };\n TreeView.prototype.getDataPos = function (obj, mapper, id) {\n var pos = null;\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n return i;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var data = getValue(mapper.child, obj[i]);\n pos = this.getDataPos(data, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var items = getValue('child', obj[i]);\n pos = this.getDataPos(items, this.getChildMapper(mapper), id);\n if (pos !== null) {\n break;\n }\n }\n }\n return pos;\n };\n TreeView.prototype.addChildData = function (obj, mapper, id, data, index) {\n var updated;\n if (isNOU(id)) {\n index = isNOU(index) ? obj.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n obj.splice(index, 0, data[k]);\n index++;\n }\n return updated;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if ((typeof mapper.child === 'string' && (obj[i].hasOwnProperty(mapper.child) && obj[i][mapper.child] !== null)) ||\n ((this.fields.dataSource instanceof DataManager) && obj[i].hasOwnProperty('child'))) {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n var childData = getValue(key, obj[i]);\n if (isNOU(childData)) {\n childData = [];\n }\n index = isNOU(index) ? childData.length : index;\n for (var k = 0, len = data.length; k < len; k++) {\n childData.splice(index, 0, data[k]);\n index++;\n }\n }\n else {\n var key = (typeof mapper.child === 'string') ? mapper.child : 'child';\n obj[i][key] = data;\n }\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childObj = getValue(mapper.child, obj[i]);\n updated = this.addChildData(childObj, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n else if ((this.fields.dataSource instanceof DataManager) && !isNOU(getValue('child', obj[i]))) {\n var childData = getValue('child', obj[i]);\n updated = this.addChildData(childData, this.getChildMapper(mapper), id, data, index);\n if (updated !== undefined) {\n break;\n }\n }\n }\n return updated;\n };\n TreeView.prototype.doDisableAction = function (nodes) {\n var validNodes = this.nodeType(nodes);\n var validID = this.checkValidId(validNodes);\n this.validArr = [];\n for (var i = 0, len = validID.length; i < len; i++) {\n var id = validID[i][this.fields.id].toString();\n if (id && this.disableNode.indexOf(id) === -1) {\n this.disableNode.push(id);\n }\n var liEle = this.getElement(id);\n if (liEle) {\n liEle.setAttribute('aria-disabled', 'true');\n addClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.doEnableAction = function (nodes) {\n var strNodes = this.nodeType(nodes);\n for (var i = 0, len = strNodes.length; i < len; i++) {\n var liEle = this.getElement(strNodes[i]);\n var id = strNodes[i];\n if (id && this.disableNode.indexOf(id) !== -1) {\n this.disableNode.splice(this.disableNode.indexOf(id), 1);\n }\n if (liEle) {\n liEle.removeAttribute('aria-disabled');\n removeClass([liEle], DISABLE);\n }\n }\n };\n TreeView.prototype.nodeType = function (nodes) {\n var validID = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var id = void 0;\n if (typeof nodes[i] == \"string\") {\n id = (nodes[i]) ? nodes[i].toString() : null;\n }\n else if (typeof nodes[i] === \"object\") {\n id = nodes[i] ? nodes[i].getAttribute(\"data-uid\").toString() : null;\n }\n if (validID.indexOf(id) == -1) {\n validID.push(id);\n }\n }\n return validID;\n };\n TreeView.prototype.checkValidId = function (node) {\n var _this = this;\n if (this.dataType === 1) {\n this.validArr = this.treeData.filter(function (data) {\n return node.indexOf(data[_this.fields.id] ? data[_this.fields.id].toString() : null) !== -1;\n });\n }\n else if (this.dataType === 2) {\n for (var k = 0; k < this.treeData.length; k++) {\n var id = this.treeData[k][this.fields.id] ? this.treeData[k][this.fields.id].toString() : null;\n if (node.indexOf(id) !== -1) {\n this.validArr.push(this.treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, node);\n }\n }\n }\n return this.validArr;\n };\n TreeView.prototype.filterNestedChild = function (treeData, nodes) {\n for (var k = 0; k < treeData.length; k++) {\n var id = treeData[k][this.fields.id] ? treeData[k][this.fields.id].toString() : null;\n if (nodes.indexOf(id) !== -1) {\n this.validArr.push(treeData[k]);\n }\n var childItems = getValue(this.fields.child.toString(), treeData[k]);\n if (childItems) {\n this.filterNestedChild(childItems, nodes);\n }\n }\n };\n TreeView.prototype.setTouchClass = function () {\n var ele = closest(this.element, '.' + BIGGER);\n this.touchClass = isNOU(ele) ? '' : SMALL;\n };\n TreeView.prototype.updatePersistProp = function () {\n this.removeField(this.treeData, this.fields, ['selected', 'expanded']);\n var sleNodes = this.selectedNodes;\n for (var l = 0, slelen = sleNodes.length; l < slelen; l++) {\n this.updateField(this.treeData, this.fields, sleNodes[l], 'selected', true);\n }\n var enodes = this.expandedNodes;\n for (var k = 0, nodelen = enodes.length; k < nodelen; k++) {\n this.updateField(this.treeData, this.fields, enodes[k], 'expanded', true);\n }\n if (this.showCheckBox) {\n this.removeField(this.treeData, this.fields, ['isChecked']);\n var cnodes = this.checkedNodes;\n for (var m = 0, nodelen = cnodes.length; m < nodelen; m++) {\n this.updateField(this.treeData, this.fields, cnodes[m], 'isChecked', true);\n }\n }\n };\n TreeView.prototype.removeField = function (obj, mapper, names) {\n if (isNOU(obj) || isNOU(mapper)) {\n return;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n for (var j = 0; j < names.length; j++) {\n var field = this.getMapperProp(mapper, names[j]);\n if (!isNOU(obj[i][field])) {\n delete obj[i][field];\n }\n }\n if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n this.removeField(getValue(mapper.child, obj[i]), this.getChildMapper(mapper), names);\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n this.removeField(getValue('child', obj[i]), this.getChildMapper(mapper), names);\n }\n }\n };\n TreeView.prototype.getMapperProp = function (mapper, fieldName) {\n switch (fieldName) {\n case 'selected':\n return !isNOU(mapper.selected) ? mapper.selected : 'selected';\n case 'expanded':\n return !isNOU(mapper.expanded) ? mapper.expanded : 'expanded';\n case 'isChecked':\n return !isNOU(mapper.isChecked) ? mapper.isChecked : 'isChecked';\n case 'hasChildren':\n return !isNOU(mapper.hasChildren) ? mapper.hasChildren : 'hasChildren';\n default:\n return fieldName;\n }\n };\n TreeView.prototype.updateField = function (obj, mapper, id, key, value) {\n var childNodes;\n if (isNOU(id)) {\n return;\n }\n else if (this.dataType === 1) {\n var newId = this.isNumberTypeId ? parseFloat(id) : id;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', newId, false));\n setValue(this.getMapperProp(mapper, key), value, resultData[0]);\n }\n else {\n this.updateChildField(obj, mapper, id, key, value);\n }\n };\n TreeView.prototype.updateChildField = function (obj, mapper, id, key, value, remove) {\n var removedData;\n if (isNOU(obj)) {\n return removedData;\n }\n for (var i = 0, objlen = obj.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, obj[i]);\n if (obj[i] && nodeId && nodeId.toString() === id) {\n if (remove) {\n removedData = obj.splice(i, 1);\n }\n else {\n setValue(this.getMapperProp(mapper, key), value, obj[i]);\n removedData = [];\n }\n return removedData;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, obj[i]))) {\n var childData = getValue(mapper.child, obj[i]);\n removedData = this.updateChildField(childData, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', obj[i]))) {\n var childItems = getValue('child', obj[i]);\n removedData = this.updateChildField(childItems, this.getChildMapper(mapper), id, key, value, remove);\n if (removedData !== undefined) {\n break;\n }\n }\n }\n return removedData;\n };\n TreeView.prototype.triggerEvent = function (action, node) {\n this.renderReactTemplates();\n if (action === 'addNodes') {\n var nodeData = [];\n for (var i = 0; i < node.length; i++) {\n nodeData.push(this.getNode(this.getElement(isNOU(node[i][this.fields.id]) ? getValue(this.fields.id, node[i]).toString() : null)));\n }\n node = nodeData;\n }\n var eventArgs = { data: this.treeData, action: action, nodeData: node };\n this.trigger('dataSourceChanged', eventArgs);\n };\n TreeView.prototype.wireInputEvents = function (inpEle) {\n EventHandler.add(inpEle, 'blur', this.inputFocusOut, this);\n };\n TreeView.prototype.wireEditingEvents = function (toBind) {\n var _this = this;\n if (toBind && !this.disabled) {\n var proxy_2 = this;\n this.touchEditObj = new Touch(this.element, {\n tap: function (e) {\n if (_this.isDoubleTapped(e) && e.tapCount === 2) {\n e.originalEvent.preventDefault();\n proxy_2.editingHandler(e.originalEvent);\n }\n }\n });\n }\n else {\n if (this.touchEditObj) {\n this.touchEditObj.destroy();\n }\n }\n };\n TreeView.prototype.wireClickEvent = function (toBind) {\n if (toBind) {\n var proxy_3 = this;\n this.touchClickObj = new Touch(this.element, {\n tap: function (e) {\n proxy_3.clickHandler(e);\n }\n });\n }\n else {\n if (this.touchClickObj) {\n this.touchClickObj.destroy();\n }\n }\n };\n TreeView.prototype.wireExpandOnEvent = function (toBind) {\n var _this = this;\n if (toBind) {\n var proxy_4 = this;\n this.touchExpandObj = new Touch(this.element, {\n tap: function (e) {\n if ((_this.expandOnType === 'Click' || (_this.expandOnType === 'DblClick' && _this.isDoubleTapped(e) && e.tapCount === 2))\n && e.originalEvent.which !== 3) {\n proxy_4.expandHandler(e);\n }\n }\n });\n }\n else {\n if (this.touchExpandObj) {\n this.touchExpandObj.destroy();\n }\n }\n };\n TreeView.prototype.mouseDownHandler = function (e) {\n this.mouseDownStatus = true;\n if (e.shiftKey || e.ctrlKey) {\n e.preventDefault();\n }\n if (e.ctrlKey && this.allowMultiSelection) {\n EventHandler.add(this.element, 'contextmenu', this.preventContextMenu, this);\n }\n };\n ;\n TreeView.prototype.preventContextMenu = function (e) {\n e.preventDefault();\n };\n TreeView.prototype.wireEvents = function () {\n EventHandler.add(this.element, 'mousedown', this.mouseDownHandler, this);\n this.wireClickEvent(true);\n if (this.expandOnType !== 'None') {\n this.wireExpandOnEvent(true);\n }\n EventHandler.add(this.element, 'mouseover', this.onMouseOver, this);\n EventHandler.add(this.element, 'mouseout', this.onMouseLeave, this);\n this.keyboardModule = new KeyboardEvents(this.element, {\n keyAction: this.keyActionHandler.bind(this),\n keyConfigs: this.keyConfigs,\n eventName: 'keydown',\n });\n };\n TreeView.prototype.unWireEvents = function () {\n EventHandler.remove(this.element, 'mousedown', this.mouseDownHandler);\n this.wireClickEvent(false);\n this.wireExpandOnEvent(false);\n EventHandler.remove(this.element, 'mouseover', this.onMouseOver);\n EventHandler.remove(this.element, 'mouseout', this.onMouseLeave);\n if (!this.disabled) {\n this.keyboardModule.destroy();\n }\n };\n TreeView.prototype.parents = function (element, selector) {\n var matched = [];\n var el = element.parentNode;\n while (!isNOU(el)) {\n if (matches(el, selector)) {\n matched.push(el);\n }\n el = el.parentNode;\n }\n return matched;\n };\n TreeView.prototype.isDoubleTapped = function (e) {\n var target = e.originalEvent.target;\n var secondTap;\n if (target && e.tapCount) {\n if (e.tapCount === 1) {\n this.firstTap = closest(target, '.' + LISTITEM);\n }\n else if (e.tapCount === 2) {\n secondTap = closest(target, '.' + LISTITEM);\n }\n }\n return (this.firstTap === secondTap);\n };\n TreeView.prototype.isDescendant = function (parent, child) {\n var node = child.parentNode;\n while (!isNOU(node)) {\n if (node === parent) {\n return true;\n }\n node = node.parentNode;\n }\n return false;\n };\n TreeView.prototype.showSpinner = function (element) {\n addClass([element], LOAD);\n createSpinner({\n target: element,\n width: Browser.isDevice ? 16 : 14\n }, this.createElement);\n showSpinner(element);\n };\n TreeView.prototype.hideSpinner = function (element) {\n hideSpinner(element);\n element.innerHTML = '';\n removeClass([element], LOAD);\n };\n TreeView.prototype.setCheckedNodes = function (nodes) {\n nodes = JSON.parse(JSON.stringify(nodes));\n this.uncheckAll(this.checkedNodes);\n this.setIndeterminate(nodes);\n if (nodes.length > 0) {\n this.checkAll(nodes);\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel\n */\n TreeView.prototype.setValidCheckedNode = function (node) {\n if (this.dataType === 1) {\n var mapper = this.fields;\n var resultData = new DataManager(this.treeData).executeLocal(new Query().where(mapper.id, 'equal', node, true));\n if (resultData[0]) {\n this.setChildCheckState(resultData, node, resultData[0]);\n if (this.autoCheck) {\n var parent_4 = resultData[0][this.fields.parentID] ? resultData[0][this.fields.parentID].toString() : null;\n var childNodes = this.getChildNodes(this.treeData, parent_4);\n var count = 0;\n for (var len = 0; len < childNodes.length; len++) {\n var childId = childNodes[len][this.fields.id].toString();\n if (this.checkedNodes.indexOf(childId) !== -1) {\n count++;\n }\n }\n if (count === childNodes.length && this.checkedNodes.indexOf(parent_4) === -1 && parent_4) {\n this.checkedNodes.push(parent_4);\n }\n }\n }\n }\n else if (this.dataType === 2) {\n for (var a = 0; a < this.treeData.length; a++) {\n var index = this.treeData[a][this.fields.id] ? this.treeData[a][this.fields.id].toString() : '';\n if (index === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n break;\n }\n var childItems = getValue(this.fields.child.toString(), this.treeData[a]);\n if (childItems) {\n this.setChildCheckState(childItems, node, this.treeData[a]);\n }\n }\n }\n };\n /**\n * Checks whether the checkedNodes entered are valid and sets the valid checkedNodes while changing via setmodel(for hierarchical DS)\n */\n TreeView.prototype.setChildCheckState = function (childItems, node, treeData) {\n var checkedParent;\n var count = 0;\n if (this.dataType === 1) {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : null;\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkNode = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : null;\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkNode) === -1) {\n this.checkedNodes.push(checkNode);\n }\n }\n if (checkNode === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = this.getChildNodes(this.treeData, checkNode);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, treeData);\n }\n }\n }\n else {\n if (treeData) {\n checkedParent = treeData[this.fields.id] ? treeData[this.fields.id].toString() : '';\n }\n for (var index = 0; index < childItems.length; index++) {\n var checkedChild = childItems[index][this.fields.id] ? childItems[index][this.fields.id].toString() : '';\n if (treeData && checkedParent && this.autoCheck) {\n if (this.checkedNodes.indexOf(checkedParent) !== -1 && this.checkedNodes.indexOf(checkedChild) === -1) {\n this.checkedNodes.push(checkedChild);\n }\n }\n if (checkedChild === node && this.checkedNodes.indexOf(node) === -1) {\n this.checkedNodes.push(node);\n }\n var subChildItems = getValue(this.fields.child.toString(), childItems[index]);\n if (subChildItems) {\n this.setChildCheckState(subChildItems, node, childItems[index]);\n }\n if (this.checkedNodes.indexOf(checkedChild) !== -1 && this.autoCheck) {\n count++;\n }\n if (count === childItems.length && this.checkedNodes.indexOf(checkedParent) === -1 && this.autoCheck) {\n this.checkedNodes.push(checkedParent);\n }\n }\n }\n };\n TreeView.prototype.setIndeterminate = function (nodes) {\n for (var i = 0; i < nodes.length; i++) {\n this.setValidCheckedNode(nodes[i]);\n }\n };\n TreeView.prototype.updatePosition = function (id, newData, isRefreshChild, childValue) {\n if (this.dataType === 1) {\n var pos = this.getDataPos(this.treeData, this.fields, id);\n this.treeData.splice(pos, 1, newData);\n if (isRefreshChild) {\n this.removeChildNodes(id);\n for (var j = 0; j < childValue.length; j++) {\n this.treeData.splice(pos, 0, childValue[j]);\n pos++;\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n else {\n this.updateChildPosition(this.treeData, this.fields, id, [newData], undefined);\n }\n };\n TreeView.prototype.updateChildPosition = function (treeData, mapper, currID, newData, index) {\n var found;\n for (var i = 0, objlen = treeData.length; i < objlen; i++) {\n var nodeId = getValue(mapper.id, treeData[i]);\n if (treeData[i] && nodeId && nodeId.toString() === currID) {\n treeData[i] = newData[0];\n return true;\n }\n else if (typeof mapper.child === 'string' && !isNOU(getValue(mapper.child, treeData[i]))) {\n var childObj = getValue(mapper.child, treeData[i]);\n found = this.updateChildPosition(childObj, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n else if (this.fields.dataSource instanceof DataManager && !isNOU(getValue('child', treeData[i]))) {\n var childData = getValue('child', treeData[i]);\n found = this.updateChildPosition(childData, this.getChildMapper(mapper), currID, newData, index);\n if (found !== undefined) {\n break;\n }\n }\n }\n return found;\n };\n TreeView.prototype.dynamicState = function () {\n this.setDragAndDrop(this.allowDragAndDrop);\n this.wireEditingEvents(this.allowEditing);\n if (!this.disabled) {\n this.wireEvents();\n this.setRipple();\n }\n else {\n this.unWireEvents();\n this.rippleFn();\n this.rippleIconFn();\n }\n };\n TreeView.prototype.crudOperation = function (operation, nodes, target, newText, newNode, index, prevent) {\n var _this = this;\n var data = this.fields.dataSource;\n var matchedArr = [];\n var query = this.getQuery(this.fields);\n var key = this.fields.id;\n var crud;\n var changes = {\n addedRecords: [],\n deletedRecords: [],\n changedRecords: []\n };\n var nodesID = [];\n if (nodes) {\n nodesID = this.nodeType(nodes);\n }\n else if (target) {\n if (typeof target == \"string\") {\n nodesID[0] = target.toString();\n }\n else if (typeof target === \"object\") {\n nodesID[0] = target.getAttribute(\"data-uid\").toString();\n }\n }\n for (var i = 0, len = nodesID.length; i < len; i++) {\n var liEle = this.getElement(nodesID[i]);\n if (isNullOrUndefined(liEle)) {\n continue;\n }\n var removedData = this.getNodeObject(nodesID[i]);\n matchedArr.push(removedData);\n }\n switch (operation) {\n case 'delete':\n if (nodes.length == 1) {\n crud = data.remove(key, matchedArr[0], query.fromTable, query);\n }\n else {\n changes.deletedRecords = matchedArr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) { return _this.deleteSuccess(nodesID); })\n .catch(function (e) { return _this.dmFailure(e); });\n break;\n case 'update':\n matchedArr[0][this.fields.text] = newText;\n crud = data.update(key, matchedArr[0], query.fromTable, query);\n crud.then(function (e) { return _this.editSucess(target, newText, prevent); })\n .catch(function (e) { return _this.dmFailure(e, target, prevent); });\n break;\n case 'insert':\n if (newNode.length == 1) {\n crud = data.insert(newNode[0], query.fromTable, query);\n }\n else {\n var arr = [];\n for (var i = 0, len = newNode.length; i < len; i++) {\n arr.push(newNode[i]);\n }\n changes.addedRecords = arr;\n crud = data.saveChanges(changes, key, query.fromTable, query);\n }\n crud.then(function (e) {\n var dropLi = _this.getElement(target);\n _this.addSuccess(newNode, dropLi, index);\n _this.preventExpand = false;\n }).catch(function (e) { return _this.dmFailure(e); });\n break;\n }\n };\n TreeView.prototype.deleteSuccess = function (nodes) {\n var nodeData = [];\n for (var i = 0, len = nodes.length; i < len; i++) {\n var liEle = this.getElement(nodes[i]);\n nodeData.push(this.getNode(liEle));\n if (isNOU(liEle)) {\n continue;\n }\n this.removeNode(liEle);\n }\n this.updateInstance();\n if (this.dataType === 1) {\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.triggerEvent('removeNode', nodeData);\n };\n TreeView.prototype.editSucess = function (target, newText, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.appendNewText(liEle, txtEle, newText, prevent);\n };\n TreeView.prototype.addSuccess = function (nodes, dropLi, index) {\n var dropUl;\n var icon = dropLi ? dropLi.querySelector('.' + ICON) : null;\n var proxy = this;\n if (dropLi && icon && icon.classList.contains(EXPANDABLE) &&\n dropLi.querySelector('.' + PARENTITEM) === null) {\n proxy.renderChildNodes(dropLi, null, function () {\n dropUl = dropLi.querySelector('.' + PARENTITEM);\n proxy.addGivenNodes(nodes, dropLi, index, true, dropUl);\n proxy.triggerEvent('addNodes', nodes);\n });\n }\n else {\n this.addGivenNodes(nodes, dropLi, index, true);\n this.triggerEvent('addNodes', nodes);\n }\n };\n TreeView.prototype.dmFailure = function (e, target, prevent) {\n if (target) {\n this.updatePreviousText(target, prevent);\n }\n this.trigger('actionFailure', { error: e });\n };\n TreeView.prototype.updatePreviousText = function (target, prevent) {\n var liEle = this.getElement(target);\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateText(liEle, txtEle, this.oldText, prevent);\n };\n TreeView.prototype.getHierarchicalParentId = function (node, data, parentsID) {\n var _this = this;\n var index = data.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === node; });\n if (index == -1) {\n for (var i = 0; i < data.length; i++) {\n var childItems = getValue(this.fields.child.toString(), data[i]);\n if (!isNOU(childItems)) {\n index = childItems.findIndex(function (data) { return data[_this.fields.id] && data[_this.fields.id].toString() === node; });\n if (index == -1) {\n this.getHierarchicalParentId(node, childItems, parentsID);\n }\n else {\n parentsID.push(data[i][this.fields.id].toString());\n this.getHierarchicalParentId(data[i][this.fields.id].toString(), this.treeData, parentsID);\n break;\n }\n }\n }\n }\n return parentsID;\n };\n /**\n * Called internally if any of the property value changed.\n * @param {TreeView} newProp\n * @param {TreeView} oldProp\n * @returns void\n * @private\n */\n TreeView.prototype.onPropertyChanged = function (newProp, oldProp) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'allowDragAndDrop':\n this.setDragAndDrop(this.allowDragAndDrop);\n break;\n case 'dragArea':\n if (this.allowDragAndDrop) {\n this.dragObj.dragArea = this.dragArea;\n }\n break;\n case 'allowEditing':\n this.wireEditingEvents(this.allowEditing);\n break;\n case 'allowMultiSelection':\n if (this.selectedNodes.length > 1) {\n var sNode = this.getElement(this.selectedNodes[0]);\n this.isLoaded = false;\n this.removeSelectAll();\n this.selectNode(sNode, null);\n this.isLoaded = true;\n }\n this.setMultiSelect(this.allowMultiSelection);\n this.addMultiSelect(this.allowMultiSelection);\n break;\n case 'allowTextWrap':\n this.setTextWrap();\n this.updateWrap();\n break;\n case 'checkedNodes':\n if (this.showCheckBox) {\n this.checkedNodes = oldProp.checkedNodes;\n this.setCheckedNodes(newProp.checkedNodes);\n }\n break;\n case 'autoCheck':\n if (this.showCheckBox) {\n this.autoCheck = newProp.autoCheck;\n this.ensureIndeterminate();\n }\n break;\n case 'cssClass':\n this.setCssClass(oldProp.cssClass, newProp.cssClass);\n break;\n case 'enableRtl':\n this.setEnableRtl();\n break;\n case 'expandedNodes':\n this.isAnimate = false;\n this.setProperties({ expandedNodes: [] }, true);\n this.collapseAll();\n this.isInitalExpand = true;\n this.setProperties({ expandedNodes: isNOU(newProp.expandedNodes) ? [] : newProp.expandedNodes }, true);\n this.doExpandAction();\n this.isInitalExpand = false;\n this.isAnimate = true;\n break;\n case 'expandOn':\n this.wireExpandOnEvent(false);\n this.setExpandOnType();\n if (this.expandOnType !== 'None' && !this.disabled) {\n this.wireExpandOnEvent(true);\n }\n break;\n case 'disabled':\n this.setDisabledMode();\n this.dynamicState();\n break;\n case 'fields':\n this.isAnimate = false;\n this.isFieldChange = true;\n this.initialRender = true;\n if (!this.isReact || this.isReact && !(this.fields.dataSource instanceof DataManager)) {\n this.reRenderNodes();\n }\n this.initialRender = false;\n this.isAnimate = true;\n this.isFieldChange = false;\n break;\n case 'fullRowSelect':\n this.setFullRow(this.fullRowSelect);\n this.addFullRow(this.fullRowSelect);\n if (this.allowTextWrap) {\n this.setTextWrap();\n this.updateWrap();\n }\n break;\n case 'loadOnDemand':\n if (this.loadOnDemand === false && !this.onLoaded) {\n var nodes = this.element.querySelectorAll('li');\n var i = 0;\n while (i < nodes.length) {\n if (nodes[i].getAttribute('aria-expanded') !== 'true') {\n this.renderChildNodes(nodes[i], true, null, true);\n }\n i++;\n }\n this.onLoaded = true;\n }\n break;\n case 'nodeTemplate':\n this.hasTemplate = false;\n this.nodeTemplateFn = this.templateComplier(this.nodeTemplate);\n this.reRenderNodes();\n break;\n case 'selectedNodes':\n this.removeSelectAll();\n this.setProperties({ selectedNodes: newProp.selectedNodes }, true);\n this.doSelectionAction();\n break;\n case 'showCheckBox':\n this.reRenderNodes();\n break;\n case 'sortOrder':\n this.reRenderNodes();\n break;\n case 'fullRowNavigable':\n this.setProperties({ fullRowNavigable: newProp.fullRowNavigable }, true);\n this.listBaseOption.itemNavigable = newProp.fullRowNavigable;\n this.reRenderNodes();\n break;\n }\n }\n };\n /**\n * Removes the component from the DOM and detaches all its related event handlers. It also removes the attributes and classes.\n */\n TreeView.prototype.destroy = function () {\n this.clearTemplate();\n this.element.removeAttribute('aria-activedescendant');\n this.unWireEvents();\n this.wireEditingEvents(false);\n if (!this.disabled) {\n this.rippleFn();\n this.rippleIconFn();\n }\n this.setCssClass(this.cssClass, null);\n this.setDragAndDrop(false);\n this.setFullRow(false);\n if (this.ulElement && this.ulElement.parentElement) {\n this.ulElement.parentElement.removeChild(this.ulElement);\n }\n this.ulElement = null;\n this.liList = null;\n this.startNode = null;\n this.firstTap = null;\n this.expandArgs = null;\n this.dragLi = null;\n this.dragTarget = null;\n this.dragParent = null;\n this.dragObj = null;\n this.dropObj = null;\n this.inputObj = null;\n this.touchEditObj = null;\n this.touchExpandObj = null;\n this.touchClickObj = null;\n _super.prototype.destroy.call(this);\n };\n /**\n * Adds the collection of TreeView nodes based on target and index position. If target node is not specified,\n * then the nodes are added as children of the given parentID or in the root level of TreeView.\n * @param { { [key: string]: Object }[] } nodes - Specifies the array of JSON data that has to be added.\n * @param { string | Element } target - Specifies ID of TreeView node/TreeView node as target element.\n * @param { number } index - Specifies the index to place the newly added nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.addNodes = function (nodes, target, index, preventTargetExpand) {\n if (isNOU(nodes)) {\n return;\n }\n nodes = JSON.parse(JSON.stringify(nodes));\n var dropLi = this.getElement(target);\n this.preventExpand = preventTargetExpand;\n if (this.fields.dataSource instanceof DataManager) {\n if (!this.isOffline) {\n this.crudOperation('insert', null, target, null, nodes, index, this.preventExpand);\n }\n else {\n this.addSuccess(nodes, dropLi, index);\n }\n }\n else if (this.dataType === 2) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n if (dropLi) {\n this.addGivenNodes(nodes, dropLi, index);\n }\n else {\n nodes = this.getSortedData(nodes);\n for (var i = 0; i < nodes.length; i++) {\n var pid = getValue(this.fields.parentID, nodes[i]);\n dropLi = pid ? this.getElement(pid.toString()) : pid;\n this.addGivenNodes([nodes[i]], dropLi, index);\n }\n }\n this.groupedData = this.getGroupedData(this.treeData, this.fields.parentID);\n }\n this.updateCheckedStateFromDS();\n if (this.showCheckBox && dropLi) {\n this.ensureParentCheckState(dropLi);\n }\n if ((this.fields.dataSource instanceof DataManager === false)) {\n this.preventExpand = false;\n this.triggerEvent('addNodes', nodes);\n }\n };\n /**\n * Editing can also be enabled by using the `beginEdit` property, instead of clicking on the\n * TreeView node. On passing the node ID or element through this property, the edit textBox\n * will be created for the particular node thus allowing us to edit it.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.beginEdit = function (node) {\n var ele = this.getElement(node);\n if (isNOU(ele) || this.disabled) {\n return;\n }\n this.createTextbox(ele, null);\n };\n /**\n * Checks all the unchecked nodes. You can also check specific nodes by passing array of unchecked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.checkAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, true);\n }\n };\n /**\n * Collapses all the expanded TreeView nodes. You can collapse specific nodes by passing array of nodes as argument to this method.\n * You can also collapse all the nodes excluding the hidden nodes by setting **excludeHiddenNodes** to true. If you want to collapse\n * a specific level of nodes, set **level** as argument to collapseAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/ array of TreeView node.\n * @param {number} level - TreeView nodes will collapse up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes of TreeView when collapsing all nodes.\n */\n TreeView.prototype.collapseAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, COLLAPSIBLE, false);\n }\n else {\n if (level > 0) {\n this.collapseByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.collapseAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Disables the collection of nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.disableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doDisableAction(nodes);\n }\n };\n /**\n * Enables the collection of disabled nodes by passing the ID of nodes or node elements in the array.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n */\n TreeView.prototype.enableNodes = function (nodes) {\n if (!isNOU(nodes)) {\n this.doEnableAction(nodes);\n }\n };\n /**\n * Ensures visibility of the TreeView node by using node ID or node element.\n * When many TreeView nodes are present and we need to find a particular node, `ensureVisible` property\n * helps bring the node to visibility by expanding the TreeView and scrolling to the specific node.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView nodes.\n */\n TreeView.prototype.ensureVisible = function (node) {\n var parentsId = [];\n if (this.dataType == 1) {\n var nodeData = this.getTreeData(node);\n while (nodeData.length != 0 && !isNOU(nodeData[0][this.fields.parentID])) {\n parentsId.push(nodeData[0][this.fields.parentID].toString());\n nodeData = this.getTreeData(nodeData[0][this.fields.parentID].toString());\n }\n }\n else if (this.dataType == 2) {\n parentsId = this.getHierarchicalParentId(node, this.treeData, parentsId);\n }\n this.expandAll(parentsId.reverse());\n var liEle = this.getElement(node);\n if (!isNOU(liEle)) {\n if (typeof node == 'object') {\n var parents = this.parents(liEle, '.' + LISTITEM);\n this.expandAll(parents);\n }\n setTimeout(function () { liEle.scrollIntoView({ behavior: \"smooth\" }); }, 450);\n }\n };\n /**\n * Expands all the collapsed TreeView nodes. You can expand the specific nodes by passing the array of collapsed nodes\n * as argument to this method. You can also expand all the collapsed nodes by excluding the hidden nodes by setting\n * **excludeHiddenNodes** to true to this method. To expand a specific level of nodes, set **level** as argument to expandAll method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView nodes.\n * @param {number} level - TreeView nodes will expand up to the given level.\n * @param {boolean} excludeHiddenNodes - Whether or not to exclude hidden nodes when expanding all nodes.\n */\n TreeView.prototype.expandAll = function (nodes, level, excludeHiddenNodes) {\n if (!isNOU(nodes)) {\n this.doGivenAction(nodes, EXPANDABLE, true);\n }\n else {\n if (level > 0) {\n this.expandByLevel(select('.' + PARENTITEM, this.element), level, excludeHiddenNodes);\n }\n else {\n this.expandAllNodes(excludeHiddenNodes);\n }\n }\n };\n /**\n * Gets all the checked nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getAllCheckedNodes = function () {\n var checkNodes = this.checkedNodes;\n return checkNodes;\n };\n /**\n * Gets all the disabled nodes including child, whether it is loaded or not.\n */\n TreeView.prototype.getDisabledNodes = function () {\n var disabledNodes = this.disableNode;\n return disabledNodes;\n };\n /**\n * Gets the node's data such as id, text, parentID, selected, isChecked, and expanded by passing the node element or it's ID.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n */\n TreeView.prototype.getNode = function (node) {\n var ele = this.getElement(node);\n return this.getNodeData(ele, true);\n };\n /**\n * To get the updated data source of TreeView after performing some operation like drag and drop, node editing,\n * node selecting/unSelecting, node expanding/collapsing, node checking/unChecking, adding and removing node.\n * * If you pass the ID of TreeView node as arguments for this method then it will return the updated data source\n * of the corresponding node otherwise it will return the entire updated data source of TreeView.\n * * The updated data source also contains custom attributes if you specified in data source.\n * @param {string | Element} node - Specifies ID of TreeView node/TreeView node.\n * @isGenericType true\n */\n TreeView.prototype.getTreeData = function (node) {\n var id = this.getId(node);\n this.updatePersistProp();\n if (isNOU(id)) {\n return this.treeData;\n }\n else {\n var data = this.getNodeObject(id);\n return isNOU(data) ? [] : [data];\n }\n };\n /**\n * Moves the collection of nodes within the same TreeView based on target or its index position.\n * @param {string[] | Element[]} sourceNodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {number} index - Specifies the index to place the moved nodes in the target element.\n * @param { boolean } preventTargetExpand - If set to true, the target parent node will be prevented from auto expanding.\n */\n TreeView.prototype.moveNodes = function (sourceNodes, target, index, preventTargetExpand) {\n var dropLi = this.getElement(target);\n var nodeData = [];\n if (isNOU(dropLi)) {\n return;\n }\n for (var i = 0; i < sourceNodes.length; i++) {\n var dragLi = this.getElement(sourceNodes[i]);\n nodeData.push(this.getNode(dragLi));\n if (isNOU(dragLi) || dropLi.isSameNode(dragLi) || this.isDescendant(dragLi, dropLi)) {\n continue;\n }\n this.preventExpand = preventTargetExpand;\n this.dropAsChildNode(dragLi, dropLi, this, index);\n }\n if (this.fields.dataSource instanceof DataManager === false) {\n this.preventExpand = false;\n }\n this.triggerEvent('moveNodes', nodeData);\n };\n /**\n * Refreshes a particular node of the TreeView.\n * @param {string | Element} target - Specifies the ID of TreeView node or TreeView node as target element.\n * @param {{ [key: string]: Object }[]} newData - Specifies the new data of TreeView node.\n */\n TreeView.prototype.refreshNode = function (target, newData) {\n if (isNOU(target) || isNOU(newData)) {\n return;\n }\n var id;\n var isRefreshChild = false;\n if (this.dataType == 1 && newData.length > 1) {\n isRefreshChild = true;\n }\n else if (this.dataType == 2 && newData.length === 1) {\n var updatedChildValue = getValue(this.fields.child.toString(), newData[0]);\n if (!isNOU(updatedChildValue)) {\n isRefreshChild = true;\n }\n }\n var liEle = this.getElement(target);\n id = liEle ? liEle.getAttribute('data-uid') : ((target) ? target.toString() : null);\n this.refreshData = this.getNodeObject(id);\n newData = JSON.parse(JSON.stringify(newData));\n /* eslint-disable */\n var newNodeData;\n var parentData;\n if (this.dataType == 1 && isRefreshChild) {\n for (var k = 0; k < newData.length; k++) {\n if (isNOU(newData[k][this.fields.parentID])) {\n parentData = newData[k];\n newData.splice(k, 1);\n break;\n }\n }\n newNodeData = extend({}, this.refreshData, parentData);\n }\n else {\n newNodeData = extend({}, this.refreshData, newData[0]);\n }\n if (isNOU(liEle)) {\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n return;\n }\n this.isRefreshed = true;\n var level = parseFloat(liEle.getAttribute('aria-level'));\n var newliEle = ListBase.createListItemFromJson(this.createElement, [newNodeData], this.listBaseOption, level);\n var ul = select('.' + PARENTITEM, liEle);\n var childItems = getValue(this.fields.child.toString(), newNodeData);\n if ((isRefreshChild && ul) || (isRefreshChild && !isNOU(childItems))) {\n var parentEle = liEle.parentElement;\n var index = Array.prototype.indexOf.call(parentEle.childNodes, liEle);\n remove(liEle);\n parentEle.insertBefore(newliEle[0], parentEle.childNodes[index]);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n if (isRefreshChild && ul) {\n this.expandAll([id]);\n }\n }\n else {\n var txtEle = select('.' + TEXTWRAP, liEle);\n var newTextEle = select('.' + TEXTWRAP, newliEle[0]);\n var icon = select('div.' + ICON, txtEle);\n var newIcon = select('div.' + ICON, newTextEle);\n if (icon && newIcon) {\n if (newIcon.classList.contains(EXPANDABLE) && icon.classList.contains(COLLAPSIBLE)) {\n removeClass([newIcon], EXPANDABLE);\n addClass([newIcon], COLLAPSIBLE);\n }\n else if (newIcon.classList.contains(COLLAPSIBLE) && icon.classList.contains(EXPANDABLE)) {\n removeClass([newIcon], COLLAPSIBLE);\n addClass([newIcon], EXPANDABLE);\n }\n else if (icon.classList.contains('interaction')) {\n addClass([newIcon], 'interaction');\n }\n }\n remove(txtEle);\n var fullEle = select('.' + FULLROW, liEle);\n fullEle.parentNode.insertBefore(newTextEle, fullEle.nextSibling);\n this.updatePosition(id, newNodeData, isRefreshChild, newData);\n }\n liEle = this.getElement(target);\n if (newNodeData[this.fields.tooltip]) {\n liEle.setAttribute(\"title\", newNodeData[this.fields.tooltip]);\n }\n if (newNodeData.hasOwnProperty(this.fields.htmlAttributes) && newNodeData[this.fields.htmlAttributes]) {\n var attr = {};\n merge(attr, newNodeData[this.fields.htmlAttributes]);\n if (attr.class) {\n addClass([liEle], attr.class.split(' '));\n delete attr.class;\n }\n else {\n attributes(liEle, attr);\n }\n }\n if (this.selectedNodes.indexOf(id) !== -1) {\n liEle.setAttribute('aria-selected', 'true');\n addClass([liEle], ACTIVE);\n }\n this.isRefreshed = false;\n this.triggerEvent('refreshNode', [this.getNode(liEle)]);\n };\n /**\n * Removes the collection of TreeView nodes by passing the array of node details as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.removeNodes = function (nodes) {\n if (!isNOU(nodes)) {\n if (this.fields.dataSource instanceof DataManager && !this.isOffline) {\n this.crudOperation('delete', nodes);\n }\n else {\n this.deleteSuccess(nodes);\n }\n }\n };\n /**\n * Replaces the text of the TreeView node with the given text.\n * @param {string | Element} target - Specifies ID of TreeView node/TreeView node as target element.\n * @param {string} newText - Specifies the new text of TreeView node.\n */\n TreeView.prototype.updateNode = function (target, newText) {\n var _this = this;\n if (isNOU(target) || isNOU(newText) || !this.allowEditing) {\n return;\n }\n var liEle = this.getElement(target);\n if (isNOU(liEle)) {\n return;\n }\n var txtEle = select('.' + LISTTEXT, liEle);\n this.updateOldText(liEle);\n var eventArgs = this.getEditEvent(liEle, null, null);\n this.trigger('nodeEditing', eventArgs, function (observedArgs) {\n if (!observedArgs.cancel) {\n if (_this.fields.dataSource instanceof DataManager && !_this.isOffline) {\n _this.crudOperation('update', null, target, newText, null, null, false);\n }\n else {\n _this.appendNewText(liEle, txtEle, newText, false);\n }\n }\n });\n };\n /**\n * Unchecks all the checked nodes. You can also uncheck the specific nodes by passing array of checked nodes\n * as argument to this method.\n * @param {string[] | Element[]} nodes - Specifies the array of TreeView nodes ID/array of TreeView node.\n */\n TreeView.prototype.uncheckAll = function (nodes) {\n if (this.showCheckBox) {\n this.doCheckBoxAction(nodes, false);\n }\n };\n var TreeView_1;\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowEditing\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowMultiSelection\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"allowTextWrap\", void 0);\n __decorate([\n Complex({}, NodeAnimationSettings)\n ], TreeView.prototype, \"animation\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"checkedNodes\", void 0);\n __decorate([\n Property('')\n ], TreeView.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"disabled\", void 0);\n __decorate([\n Property(null)\n ], TreeView.prototype, \"dragArea\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"enablePersistence\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"expandedNodes\", void 0);\n __decorate([\n Property('Auto')\n ], TreeView.prototype, \"expandOn\", void 0);\n __decorate([\n Complex({}, FieldsSettings)\n ], TreeView.prototype, \"fields\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"fullRowSelect\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"loadOnDemand\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"locale\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"nodeTemplate\", void 0);\n __decorate([\n Property()\n ], TreeView.prototype, \"selectedNodes\", void 0);\n __decorate([\n Property('None')\n ], TreeView.prototype, \"sortOrder\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"showCheckBox\", void 0);\n __decorate([\n Property(true)\n ], TreeView.prototype, \"autoCheck\", void 0);\n __decorate([\n Property(false)\n ], TreeView.prototype, \"fullRowNavigable\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataBound\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"dataSourceChanged\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"drawNode\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"keyPress\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeChecking\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeClicked\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsed\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeCollapsing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragging\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStart\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDragStop\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeDropped\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEdited\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeEditing\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanded\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeExpanding\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelected\", void 0);\n __decorate([\n Event()\n ], TreeView.prototype, \"nodeSelecting\", void 0);\n TreeView = TreeView_1 = __decorate([\n NotifyPropertyChanges\n ], TreeView);\n return TreeView;\n}(Component));\nexport { TreeView };\n","/* eslint-disable @typescript-eslint/no-explicit-any */\n/* eslint-disable max-len */\nimport { extend, isNullOrUndefined, createElement, EventHandler, addClass, append, removeClass, remove, closest, classList } from '@syncfusion/ej2-base';\nimport { DataManager, Query } from '@syncfusion/ej2-data';\nimport { TreeView } from '@syncfusion/ej2-navigations';\nimport { Popup } from '@syncfusion/ej2-popups';\nimport { Data } from '../actions/data';\nimport * as cls from '../base/css-constant';\nimport * as events from '../base/constant';\nimport * as util from '../base/util';\nvar ResourceBase = /** @class */ (function () {\n function ResourceBase(parent) {\n this.resourceCollection = [];\n this.leftPixel = 25;\n this.resourceDateTree = [];\n this.parent = parent;\n }\n ResourceBase.prototype.renderResourceHeaderIndent = function (tr) {\n var resColTd = createElement('td', { className: cls.RESOURCE_LEFT_TD_CLASS });\n var resColDiv = createElement('div', { className: cls.RESOURCE_TEXT_CLASS });\n if (this.parent.activeViewOptions.headerIndentTemplate) {\n var data = { className: [resColTd.className], type: 'emptyCells' };\n this.parent.renderHeaderIndentTemplate(data, resColTd);\n }\n else {\n resColTd.appendChild(resColDiv);\n }\n var args = { elementType: 'emptyCells', element: resColTd };\n this.parent.trigger(events.renderCell, args);\n tr.appendChild(resColTd);\n };\n ResourceBase.prototype.hideResourceRows = function (tBody) {\n if (this.resourceCollection.length <= 1 || this.parent.virtualScrollModule) {\n return;\n }\n var trCount = this.lastResourceLevel.length;\n for (var i = 0; i < trCount; i++) {\n var resData = this.lastResourceLevel[parseInt(i.toString(), 10)].resourceData;\n var res = this.lastResourceLevel[parseInt(i.toString(), 10)].resource;\n if (resData.ClassName === cls.RESOURCE_PARENT_CLASS && !resData[res.expandedField] &&\n !isNullOrUndefined(resData[res.expandedField])) {\n var trCollection = [].slice.call(tBody.children);\n var slicedCollection = trCollection.slice(i + 1, i + (parseInt(resData.Count, 10) + 1));\n addClass(slicedCollection, cls.HIDDEN_CLASS);\n }\n }\n };\n ResourceBase.prototype.createResourceColumn = function () {\n var resColl = this.resourceCollection;\n var resDiv = createElement('div', { className: cls.RESOURCE_COLUMN_WRAP_CLASS });\n var tbl = this.parent.activeView.createTableLayout(cls.RESOURCE_COLUMN_TABLE_CLASS);\n if (!this.parent.uiStateValues.isGroupAdaptive && this.parent.rowAutoHeight && this.parent.activeView.isTimelineView()\n && this.parent.activeViewOptions.group.resources.length > 0) {\n addClass([tbl], cls.AUTO_HEIGHT);\n }\n var tBody = tbl.querySelector('tbody');\n var resData = this.generateTreeData(true);\n this.countCalculation(resColl.slice(0, -2), resColl.slice(0, -1));\n this.renderedResources = this.lastResourceLevel;\n if (this.parent.virtualScrollModule) {\n var resourceCount = this.parent.virtualScrollModule.getRenderedCount();\n this.setExpandedResources();\n resData = this.expandedResources.slice(0, resourceCount);\n this.renderedResources = resData;\n }\n append(this.getContentRows(resData), tBody);\n this.hideResourceRows(tBody);\n tbl.appendChild(tBody);\n resDiv.appendChild(tbl);\n return resDiv;\n };\n ResourceBase.prototype.setRenderedResources = function () {\n var resColl = this.resourceCollection;\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n var temp = this.generateTreeData(true);\n this.countCalculation(resColl.slice(0, -2), resColl.slice(0, -1));\n this.renderedResources = this.lastResourceLevel;\n };\n ResourceBase.prototype.setExpandedResources = function () {\n var resources = [];\n for (var i = 0; i < this.lastResourceLevel.length; i++) {\n var resource = this.lastResourceLevel[parseInt(i.toString(), 10)].resourceData;\n var count = resource.Count;\n resources.push(this.lastResourceLevel[parseInt(i.toString(), 10)]);\n var isExpanded = resource[this.lastResourceLevel[parseInt(i.toString(), 10)].resource.expandedField];\n if (!isNullOrUndefined(isExpanded) && !isExpanded && count > 0) {\n i = i + count;\n }\n }\n this.expandedResources = resources;\n };\n ResourceBase.prototype.getContentRows = function (resData, isVirtualScroll) {\n var resRows = [];\n var left;\n var rIndex;\n var resColl = this.resourceCollection;\n var tr = createElement('tr');\n var td = createElement('td', { attrs: { tabindex: isVirtualScroll ? '-1' : '0' } });\n for (var i = 0; i < resData.length; i++) {\n var ntd = td.cloneNode();\n rIndex = util.findIndexInData(resColl, 'name', resData[parseInt(i.toString(), 10)].resource.name);\n if (rIndex === resColl.length - 1) {\n extend(resData[parseInt(i.toString(), 10)].resourceData, { ClassName: cls.RESOURCE_CHILD_CLASS });\n this.renderedResources[parseInt(i.toString(), 10)].className = [cls.RESOURCE_CHILD_CLASS];\n }\n else {\n extend(resData[parseInt(i.toString(), 10)].resourceData, { ClassName: cls.RESOURCE_PARENT_CLASS });\n this.renderedResources[parseInt(i.toString(), 10)].className = [cls.RESOURCE_PARENT_CLASS];\n }\n left = (rIndex * this.leftPixel) + 'px';\n if (resData[parseInt(i.toString(), 10)].resourceData.ClassName === cls.RESOURCE_PARENT_CLASS\n && !isNullOrUndefined(resData[parseInt(i.toString(), 10)].resourceData.Count) && (resData[parseInt(i.toString(), 10)].resourceData.Count > 0)) {\n var iconClass = void 0;\n if (resData[parseInt(i.toString(), 10)].resourceData[resColl[parseInt(rIndex.toString(), 10)].expandedField] ||\n isNullOrUndefined(resData[parseInt(i.toString(), 10)].resourceData[resColl[parseInt(rIndex.toString(), 10)].expandedField])) {\n iconClass = cls.RESOURCE_COLLAPSE_CLASS;\n }\n else {\n iconClass = cls.RESOURCE_EXPAND_CLASS;\n }\n var iconDiv = createElement('div');\n addClass([iconDiv], [cls.RESOURCE_TREE_ICON_CLASS, iconClass]);\n this.setMargin(iconDiv, left);\n ntd.appendChild(iconDiv);\n if (this.resourceCollection.length > 1) {\n EventHandler.add(iconDiv, 'click', this.onTreeIconClick, this);\n }\n }\n this.parent.activeView.setResourceHeaderContent(ntd, resData[parseInt(i.toString(), 10)], cls.RESOURCE_TEXT_CLASS);\n ntd.setAttribute('data-group-index', resData[parseInt(i.toString(), 10)].groupIndex.toString());\n ntd.setAttribute('aria-label', resData[parseInt(i.toString(), 10)].resourceData[resData[parseInt(i.toString(), 10)].resource.textField] + ' resource');\n if (!this.parent.activeViewOptions.resourceHeaderTemplate) {\n this.setMargin(ntd.querySelector('.' + cls.RESOURCE_TEXT_CLASS), left);\n }\n var classCollection = [cls.RESOURCE_CELLS_CLASS, resData[parseInt(i.toString(), 10)].resourceData.ClassName];\n addClass([ntd], classCollection);\n var args = { elementType: 'resourceHeader', element: ntd, groupIndex: resData[parseInt(i.toString(), 10)].groupIndex };\n this.parent.trigger(events.renderCell, args);\n var ntr = tr.cloneNode();\n ntr.appendChild(ntd);\n resRows.push(ntr);\n }\n return resRows;\n };\n ResourceBase.prototype.setMargin = function (element, value) {\n if (!this.parent.enableRtl) {\n element.style.marginLeft = value;\n }\n else {\n element.style.marginRight = value;\n }\n };\n ResourceBase.prototype.countCalculation = function (parentCollection, wholeCollection) {\n var collection;\n for (var y = 0; y < parentCollection.length; y++) {\n var data = parentCollection[parentCollection.length - (y + 1)].dataSource;\n for (var x = 0; x < data.length; x++) {\n var totalCount = 0;\n if (this.parent.activeViewOptions.group.byGroupID) {\n var query = new Query().where(wholeCollection[wholeCollection.length - 1].groupIDField, 'equal', data[parseInt(x.toString(), 10)][parentCollection[parentCollection.length - (y + 1)].idField]);\n collection = new DataManager(wholeCollection[wholeCollection.length - 1].dataSource).executeLocal(query);\n }\n else {\n collection = wholeCollection[wholeCollection.length - 1].dataSource;\n }\n for (var z = 0; z < collection.length; z++) {\n totalCount = totalCount + parseInt(collection[parseInt(z.toString(), 10)].Count, 10);\n }\n totalCount = totalCount + parseInt(data[parseInt(x.toString(), 10)].Count, 10);\n extend(data[parseInt(x.toString(), 10)], { Count: totalCount });\n }\n wholeCollection = wholeCollection.slice(0, -1);\n }\n };\n ResourceBase.prototype.onTreeIconClick = function (e) {\n var _this = this;\n if (this.parent.eventTooltip) {\n this.parent.eventTooltip.close();\n }\n var target = e.target;\n var hide;\n var trElement = closest(target, '.' + cls.RESOURCE_PARENT_CLASS)\n .parentElement;\n var index = parseInt(trElement.children[0].getAttribute('data-group-index'), 10);\n var args = {\n cancel: false, event: e, groupIndex: index,\n requestType: !target.classList.contains(cls.RESOURCE_COLLAPSE_CLASS) ? 'resourceExpand' : 'resourceCollapse'\n };\n this.parent.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n if (target.classList.contains(cls.RESOURCE_COLLAPSE_CLASS)) {\n classList(target, [cls.RESOURCE_EXPAND_CLASS], [cls.RESOURCE_COLLAPSE_CLASS]);\n hide = true;\n }\n else {\n classList(target, [cls.RESOURCE_COLLAPSE_CLASS], [cls.RESOURCE_EXPAND_CLASS]);\n hide = false;\n }\n var eventElements = [].slice.call(_this.parent.element.querySelectorAll('.' + cls.APPOINTMENT_CLASS + ',.' + cls.MORE_INDICATOR_CLASS));\n for (var _i = 0, eventElements_1 = eventElements; _i < eventElements_1.length; _i++) {\n var element = eventElements_1[_i];\n remove(element);\n }\n if (_this.parent.virtualScrollModule) {\n _this.updateVirtualContent(index, hide, e, target);\n }\n else {\n _this.updateContent(index, hide);\n }\n var data = { cssProperties: _this.parent.getCssProperties(), module: 'scroll' };\n _this.parent.notify(events.scrollUiUpdate, data);\n args = {\n cancel: false, event: e, groupIndex: index,\n requestType: target.classList.contains(cls.RESOURCE_COLLAPSE_CLASS) ? 'resourceExpanded' : 'resourceCollapsed'\n };\n _this.parent.refreshEvents(false);\n _this.parent.trigger(events.actionComplete, args);\n }\n });\n };\n ResourceBase.prototype.updateContent = function (index, hide) {\n var rowCollection = [];\n var workCellCollection = [];\n var headerRowCollection = [];\n var pNode;\n var clickedRes = this.lastResourceLevel[parseInt(index.toString(), 10)].resourceData;\n var resRows = [].slice.call(this.parent.element.querySelectorAll('.' + cls.RESOURCE_COLUMN_WRAP_CLASS + ' ' + 'tr'));\n var contentRows = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CONTENT_WRAP_CLASS + ' ' + 'tbody tr'));\n var eventRows = [].slice.call(this.parent.element.querySelectorAll('.' + cls.CONTENT_WRAP_CLASS + ' .' + cls.APPOINTMENT_CONTAINER_CLASS));\n for (var j = 0; j < clickedRes.Count; j++) {\n rowCollection.push(resRows[index + j + 1]);\n workCellCollection.push(contentRows[index + j + 1]);\n headerRowCollection.push(eventRows[index + j + 1]);\n }\n var clonedCollection = this.lastResourceLevel;\n for (var i = 0; i < rowCollection.length; i++) {\n var expanded = true;\n pNode = rowCollection[parseInt(i.toString(), 10)].children[0].classList.contains(cls.RESOURCE_PARENT_CLASS);\n clonedCollection[parseInt(index.toString(), 10)].resourceData[clonedCollection[parseInt(index.toString(), 10)].resource.expandedField] = !hide;\n if (hide) {\n if (pNode) {\n var trElem = rowCollection[parseInt(i.toString(), 10)].querySelector('.' + cls.RESOURCE_TREE_ICON_CLASS);\n if (trElem) {\n classList(trElem, [cls.RESOURCE_EXPAND_CLASS], [cls.RESOURCE_COLLAPSE_CLASS]);\n }\n }\n if (!rowCollection[parseInt(i.toString(), 10)].classList.contains(cls.HIDDEN_CLASS)) {\n addClass([rowCollection[parseInt(i.toString(), 10)], workCellCollection[parseInt(i.toString(), 10)], headerRowCollection[parseInt(i.toString(), 10)]], cls.HIDDEN_CLASS);\n }\n }\n else {\n if (pNode) {\n var rowIndex = rowCollection[parseInt(i.toString(), 10)].rowIndex;\n if (!clonedCollection[parseInt(rowIndex.toString(), 10)].resourceData[clonedCollection[parseInt(rowIndex.toString(), 10)].resource.expandedField]\n && !isNullOrUndefined(clonedCollection[parseInt(rowIndex.toString(), 10)].resourceData[clonedCollection[parseInt(rowIndex.toString(), 10)].resource.expandedField])) {\n rowCollection.splice(i + 1, (parseInt(clonedCollection[parseInt(rowIndex.toString(), 10)].resourceData.Count, 10)));\n workCellCollection.splice(i + 1, (parseInt(clonedCollection[parseInt(rowIndex.toString(), 10)].resourceData.Count, 10)));\n headerRowCollection.splice(i + 1, (parseInt(clonedCollection[parseInt(rowIndex.toString(), 10)].resourceData.Count, 10)));\n expanded = false;\n }\n if (expanded) {\n var trElem = rowCollection[parseInt(i.toString(), 10)].querySelector('.' + cls.RESOURCE_TREE_ICON_CLASS);\n if (trElem) {\n classList(trElem, [cls.RESOURCE_COLLAPSE_CLASS], [cls.RESOURCE_EXPAND_CLASS]);\n }\n }\n }\n if (rowCollection[parseInt(i.toString(), 10)].classList.contains(cls.HIDDEN_CLASS)) {\n removeClass([rowCollection[parseInt(i.toString(), 10)], workCellCollection[parseInt(i.toString(), 10)], headerRowCollection[parseInt(i.toString(), 10)]], cls.HIDDEN_CLASS);\n }\n }\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ResourceBase.prototype.updateVirtualContent = function (index, expand, e, target) {\n this.lastResourceLevel[parseInt(index.toString(), 10)].resourceData[this.lastResourceLevel[parseInt(index.toString(), 10)].resource.expandedField] = !expand;\n this.setExpandedResources();\n var resourceCount = this.parent.virtualScrollModule.getRenderedCount();\n var startIndex = this.expandedResources.indexOf(this.renderedResources[0]);\n this.renderedResources = this.expandedResources.slice(startIndex, startIndex + resourceCount);\n if (this.renderedResources.length < resourceCount) {\n var sIndex = this.expandedResources.length - resourceCount;\n sIndex = (sIndex > 0) ? sIndex : 0;\n this.renderedResources = this.expandedResources.slice(sIndex, this.expandedResources.length);\n }\n var virtualTrack = this.parent.element.querySelector('.' + cls.VIRTUAL_TRACK_CLASS);\n this.parent.virtualScrollModule.updateVirtualTrackHeight(virtualTrack);\n var resTable = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS + ' ' + 'table');\n var contentTable = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS + ' ' + 'table');\n var eventTable = this.parent.element.querySelector('.' + cls.EVENT_TABLE_CLASS);\n this.parent.virtualScrollModule.updateContent(resTable, contentTable, eventTable, this.renderedResources);\n var timeIndicator = this.parent.element.querySelector('.' + cls.CURRENT_TIMELINE_CLASS);\n if (!isNullOrUndefined(timeIndicator)) {\n timeIndicator.style.height =\n this.parent.element.querySelector('.' + cls.CONTENT_TABLE_CLASS).offsetHeight + 'px';\n }\n };\n ResourceBase.prototype.renderResourceHeader = function () {\n var resourceWrapper = createElement('div', { className: cls.RESOURCE_TOOLBAR_CONTAINER });\n resourceWrapper.innerHTML = '
' +\n '
';\n if (this.parent.currentView === 'MonthAgenda') {\n var target = this.parent.activeView.getPanel().querySelector('.' + cls.CONTENT_WRAP_CLASS);\n target.insertBefore(resourceWrapper, target.querySelector('.' + cls.WRAPPER_CONTAINER_CLASS));\n }\n else {\n this.parent.element.insertBefore(resourceWrapper, this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS));\n }\n this.renderResourceHeaderText();\n EventHandler.add(resourceWrapper.querySelector('.' + cls.RESOURCE_MENU_ICON), 'click', this.menuClick, this);\n };\n ResourceBase.prototype.renderResourceTree = function () {\n this.popupOverlay = createElement('div', { className: cls.RESOURCE_TREE_POPUP_OVERLAY });\n var treeWrapper = createElement('div', { className: cls.RESOURCE_TREE_POPUP + ' e-popup-close' });\n if (this.parent.currentView === 'MonthAgenda') {\n var target = this.parent.activeView.getPanel().querySelector('.' + cls.WRAPPER_CONTAINER_CLASS);\n target.insertBefore(treeWrapper, target.children[0]);\n target.appendChild(this.popupOverlay);\n }\n else {\n this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS).appendChild(treeWrapper);\n this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS).appendChild(this.popupOverlay);\n }\n var resourceTree = createElement('div', { className: cls.RESOURCE_TREE });\n treeWrapper.appendChild(resourceTree);\n this.treeViewObj = new TreeView({\n cssClass: this.parent.cssClass,\n enableRtl: this.parent.enableRtl,\n enableHtmlSanitizer: this.parent.enableHtmlSanitizer,\n fields: {\n dataSource: [].slice.call(this.generateTreeData()),\n id: 'resourceId',\n text: 'resourceName',\n child: 'resourceChild'\n },\n nodeTemplate: this.parent.resourceHeaderTemplate,\n nodeClicked: this.resourceClick.bind(this),\n created: this.resourceTreeCreated.bind(this)\n });\n this.treeViewObj.root = this.parent.root ? this.parent.root : this.parent;\n this.treeViewObj.appendTo(resourceTree);\n this.treeViewObj.expandAll();\n this.treePopup = new Popup(treeWrapper, {\n targetType: 'relative',\n actionOnScroll: 'none',\n content: this.treeViewObj.element,\n relateTo: this.parent.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS),\n enableRtl: this.parent.enableRtl,\n hideAnimation: { name: 'SlideLeftOut', duration: 500 },\n showAnimation: { name: 'SlideLeftIn', duration: 500 },\n viewPortElement: this.parent.element.querySelector('.' + (this.parent.currentView === 'MonthAgenda' ?\n cls.WRAPPER_CONTAINER_CLASS : cls.TABLE_CONTAINER_CLASS))\n });\n this.parent.on(events.documentClick, this.documentClick, this);\n };\n ResourceBase.prototype.resourceTreeCreated = function () {\n if (this.parent.activeViewOptions.resourceHeaderTemplate && this.parent.portals && this.treeViewObj.portals) {\n this.parent.portals = this.parent.portals.concat(this.treeViewObj.portals);\n this.parent.renderTemplates();\n }\n };\n ResourceBase.prototype.generateTreeData = function (isTimeLine) {\n var _this = this;\n var treeCollection = [];\n var resTreeColl = [];\n var groupIndex = 0;\n var _loop_1 = function (i, len) {\n var treeHandler = function (treeLevel, index, levelId) {\n var resource = _this.resourceCollection[parseInt(index.toString(), 10)];\n var treeArgs;\n var resObj;\n if (!isTimeLine) {\n treeArgs = {\n resourceId: levelId,\n resourceName: treeLevel.resourceData[resource.textField],\n resource: treeLevel.resource,\n resourceData: treeLevel.resourceData\n };\n }\n else {\n resObj = {\n type: 'resourceHeader', resource: treeLevel.resource,\n resourceData: treeLevel.resourceData, groupIndex: groupIndex,\n groupOrder: treeLevel.groupOrder\n };\n resTreeColl.push(resObj);\n groupIndex++;\n }\n if (treeLevel.child.length > 0 && !isTimeLine) {\n treeArgs.resourceChild = [];\n }\n var count = 1;\n for (var _i = 0, _a = treeLevel.child; _i < _a.length; _i++) {\n var tree = _a[_i];\n if (!isTimeLine) {\n treeArgs.resourceChild.push(treeHandler(tree, index + 1, levelId + '-' + count));\n }\n else {\n treeHandler(tree, index + 1, levelId + '-' + count);\n }\n count += 1;\n }\n if (isTimeLine) {\n extend(resObj.resourceData, { Count: count - 1 });\n }\n return treeArgs;\n };\n if (!isTimeLine) {\n treeCollection.push(treeHandler(this_1.resourceTreeLevel[parseInt(i.toString(), 10)], 0, (i + 1).toString()));\n }\n else {\n treeHandler(this_1.resourceTreeLevel[parseInt(i.toString(), 10)], 0, (i + 1).toString());\n }\n };\n var this_1 = this;\n for (var i = 0, len = this.resourceTreeLevel.length; i < len; i++) {\n _loop_1(i, len);\n }\n if (isTimeLine) {\n this.lastResourceLevel = resTreeColl;\n return resTreeColl;\n }\n else {\n return treeCollection;\n }\n };\n ResourceBase.prototype.renderResourceHeaderText = function () {\n var resource = this.lastResourceLevel[this.parent.uiStateValues.groupIndex];\n var headerCollection = [];\n var _loop_2 = function (i, len) {\n var resourceLevel = this_2.resourceCollection[parseInt(i.toString(), 10)];\n var resourceText = resourceLevel.dataSource.filter(function (resData) {\n return resData[resourceLevel.idField] === resource.groupOrder[parseInt(i.toString(), 10)];\n });\n var resourceName = createElement('div', { className: cls.RESOURCE_NAME });\n this_2.parent.sanitize(resourceText[0][resourceLevel.textField], resourceName);\n headerCollection.push(resourceName);\n var levelIcon = createElement('div', { className: 'e-icons e-icon-next' });\n headerCollection.push(levelIcon);\n };\n var this_2 = this;\n for (var i = 0, len = resource.groupOrder.length; i < len; i++) {\n _loop_2(i, len);\n }\n headerCollection.pop();\n var target = (this.parent.currentView === 'MonthAgenda') ? this.parent.activeView.getPanel() : this.parent.element;\n var headerWrapper = target.querySelector('.' + cls.RESOURCE_LEVEL_TITLE);\n util.removeChildren(headerWrapper);\n for (var _i = 0, headerCollection_1 = headerCollection; _i < headerCollection_1.length; _i++) {\n var header = headerCollection_1[_i];\n headerWrapper.appendChild(header);\n }\n if (this.lastResourceLevel.length === 1) {\n addClass([this.parent.element.querySelector('.' + cls.RESOURCE_MENU)], cls.DISABLE_CLASS);\n }\n };\n // eslint-disable-next-line @typescript-eslint/no-unused-vars\n ResourceBase.prototype.menuClick = function (event) {\n if (this.parent.element.querySelector('.' + cls.RESOURCE_TREE_POPUP).classList.contains(cls.POPUP_OPEN)) {\n this.treePopup.hide();\n removeClass([this.popupOverlay], cls.ENABLE_CLASS);\n }\n else {\n var treeNodes = [].slice.call(this.treeViewObj.element.querySelectorAll('.e-list-item:not(.e-has-child)'));\n removeClass(treeNodes, 'e-active');\n addClass([treeNodes[this.parent.uiStateValues.groupIndex]], 'e-active');\n this.treePopup.show();\n addClass([this.popupOverlay], cls.ENABLE_CLASS);\n }\n };\n ResourceBase.prototype.selectResourceByIndex = function (groupIndex) {\n if (this.lastResourceLevel && groupIndex > -1 && groupIndex < this.lastResourceLevel.length) {\n this.triggerEvents(groupIndex);\n }\n };\n ResourceBase.prototype.resourceClick = function (event) {\n if (!event.node.classList.contains('e-has-child')) {\n this.treePopup.hide();\n removeClass([this.popupOverlay], cls.ENABLE_CLASS);\n var treeNodes = [].slice.call(this.treeViewObj.element.querySelectorAll('.e-list-item:not(.e-has-child)'));\n var groupIndex = treeNodes.indexOf(event.node);\n this.triggerEvents(groupIndex, event);\n event.event.preventDefault();\n }\n };\n ResourceBase.prototype.triggerEvents = function (groupIndex, event) {\n var _this = this;\n var args = { cancel: false, event: (event) ? event.event : null, groupIndex: groupIndex, requestType: 'resourceChange' };\n this.parent.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n _this.parent.uiStateValues.groupIndex = actionArgs.groupIndex;\n _this.parent.renderModule.render(_this.parent.currentView);\n args = {\n cancel: false, event: (event) ? event.event : null, groupIndex: _this.parent.uiStateValues.groupIndex, requestType: 'resourceChanged'\n };\n _this.parent.trigger(events.actionComplete, args);\n }\n });\n };\n ResourceBase.prototype.documentClick = function (args) {\n if (closest(args.event.target, '.' + cls.RESOURCE_TREE_POPUP)) {\n return;\n }\n var treeWrapper = this.parent.element.querySelector('.' + cls.RESOURCE_TREE_POPUP);\n if (treeWrapper && treeWrapper.classList.contains(cls.POPUP_OPEN)) {\n this.treePopup.hide();\n removeClass([this.popupOverlay], cls.ENABLE_CLASS);\n }\n };\n ResourceBase.prototype.bindResourcesData = function (isSetModel) {\n var _this = this;\n this.parent.showSpinner();\n var promises = [];\n for (var _i = 0, _a = this.parent.resources; _i < _a.length; _i++) {\n var resource = _a[_i];\n var dataModule = new Data(this.parent, resource.dataSource, resource.query);\n promises.push(dataModule.getData(dataModule.generateQuery()));\n }\n Promise.all(promises).then(function (e) { return _this.dataManagerSuccess(e, isSetModel); })\n .catch(function (e) { return _this.parent.crudModule.dataManagerFailure(e); });\n };\n ResourceBase.prototype.dataManagerSuccess = function (e, isSetModel) {\n if (!this.parent || this.parent && this.parent.isDestroyed) {\n return;\n }\n this.parent.resourceCollection = [];\n for (var i = 0, length_1 = e.length; i < length_1; i++) {\n var resource = this.parent.resources[parseInt(i.toString(), 10)];\n var resourceObj = this.getResourceModel(resource, e[parseInt(i.toString(), 10)].result);\n this.parent.resourceCollection.push(resourceObj);\n }\n this.refreshLayout(isSetModel);\n };\n ResourceBase.prototype.getResourceModel = function (resource, resourceData) {\n var resourceObj = {\n field: resource.field,\n title: resource.title,\n name: resource.name,\n allowMultiple: resource.allowMultiple,\n dataSource: resourceData || resource.dataSource,\n idField: resource.idField,\n textField: resource.textField,\n groupIDField: resource.groupIDField,\n colorField: resource.colorField,\n startHourField: resource.startHourField,\n endHourField: resource.endHourField,\n workDaysField: resource.workDaysField,\n expandedField: resource.expandedField,\n cssClassField: resource.cssClassField\n };\n return resourceObj;\n };\n ResourceBase.prototype.refreshLayout = function (isSetModel) {\n if (isNullOrUndefined(this.parent.uiStateValues.groupIndex) || !(this.parent.enablePersistence)) {\n this.parent.uiStateValues.groupIndex = 0;\n }\n this.parent.renderElements(isSetModel);\n };\n ResourceBase.prototype.setResourceCollection = function () {\n var requiredResources = [];\n this.resourceCollection = [];\n this.colorIndex = null;\n if (this.parent.activeViewOptions.group.resources.length > 0) {\n for (var _i = 0, _a = this.parent.activeViewOptions.group.resources; _i < _a.length; _i++) {\n var resource = _a[_i];\n var index_1 = util.findIndexInData(this.parent.resourceCollection, 'name', resource);\n if (index_1 >= 0) {\n requiredResources.push(this.parent.resourceCollection[parseInt(index_1.toString(), 10)]);\n }\n }\n }\n else if (this.parent.resourceCollection.length > 0) {\n requiredResources = this.parent.resourceCollection;\n }\n var index = 0;\n for (var _b = 0, requiredResources_1 = requiredResources; _b < requiredResources_1.length; _b++) {\n var resource = requiredResources_1[_b];\n var resources = this.getResourceModel(resource);\n if (resource.name === this.parent.eventSettings.resourceColorField) {\n this.colorIndex = index;\n }\n index++;\n this.resourceCollection.push(resources);\n }\n if (isNullOrUndefined(this.colorIndex)) {\n this.colorIndex = this.resourceCollection.length - 1;\n }\n };\n ResourceBase.prototype.generateResourceLevels = function (innerDates, isTimeLine) {\n var _this = this;\n var resources = this.resourceCollection;\n var resTreeGroup = [];\n var lastColumnDates = [];\n var group = function (resources, index, prevResource, prevResourceData, prevOrder) {\n var resTree = [];\n var resource = resources[0];\n if (resource) {\n var data = void 0;\n if (prevResourceData && _this.parent.activeViewOptions.group.byGroupID) {\n var id_1 = prevResourceData[prevResource.idField];\n data = resource.dataSource.filter(function (e) {\n return e[resource.groupIDField] === id_1;\n });\n }\n else {\n data = resource.dataSource;\n }\n for (var i = 0; i < data.length; i++) {\n var groupOrder = [];\n if (prevOrder && prevOrder.length > 0) {\n groupOrder = groupOrder.concat(prevOrder);\n }\n groupOrder.push(data[parseInt(i.toString(), 10)][resource.idField]);\n var items = group(resources.slice(1), index + 1, resource, data[parseInt(i.toString(), 10)], groupOrder);\n // Here validate child item empty top level resource only\n if (index === 0 && items.length === 0 && _this.resourceCollection.length > 1) {\n continue;\n }\n var dateCol = [];\n var renderDates = _this.parent.activeView.renderDates;\n var resWorkDays = void 0;\n if (!_this.parent.activeViewOptions.group.byDate && index + 1 === _this.resourceCollection.length) {\n var workDays = data[parseInt(i.toString(), 10)][resource.workDaysField];\n var resStartHour = data[parseInt(i.toString(), 10)][resource.startHourField];\n var resEndHour = data[parseInt(i.toString(), 10)][resource.endHourField];\n if (workDays && workDays.length > 0) {\n renderDates = _this.parent.activeView.getRenderDates(workDays);\n resWorkDays = workDays;\n dateCol = _this.parent.activeView.getDateSlots(renderDates, workDays);\n }\n else {\n resWorkDays = _this.parent.activeViewOptions.workDays;\n dateCol = innerDates;\n }\n var dateSlots = _this.generateCustomHours(dateCol, resStartHour, resEndHour, groupOrder);\n lastColumnDates = lastColumnDates.concat(dateSlots);\n }\n var resCssClass = data[parseInt(i.toString(), 10)][resource.cssClassField];\n var slotData = {\n type: 'resourceHeader', className: ['e-resource-cells'],\n resourceLevelIndex: index, groupOrder: groupOrder,\n resource: resource, resourceData: data[parseInt(i.toString(), 10)],\n colSpan: _this.parent.activeViewOptions.group.byDate ? 1 : dateCol.length,\n renderDates: renderDates, workDays: resWorkDays, cssClass: resCssClass,\n child: items\n };\n resTree.push(slotData);\n }\n if (!resTreeGroup[parseInt(index.toString(), 10)]) {\n resTreeGroup[parseInt(index.toString(), 10)] = [];\n }\n if (resTree.length > 0) {\n resTreeGroup[parseInt(index.toString(), 10)].push(resTree);\n }\n return resTree;\n }\n return [];\n };\n this.resourceTreeLevel = group(resources, 0);\n return (isTimeLine) ? [] : this.generateHeaderLevels(resTreeGroup, lastColumnDates, innerDates);\n };\n ResourceBase.prototype.generateCustomHours = function (renderDates, startHour, endHour, groupOrder) {\n var dateSlots = extend([], renderDates, null, true);\n for (var _i = 0, dateSlots_1 = dateSlots; _i < dateSlots_1.length; _i++) {\n var dateSlot = dateSlots_1[_i];\n if (startHour) {\n dateSlot.startHour = this.parent.getStartEndTime(startHour);\n }\n if (endHour) {\n dateSlot.endHour = this.parent.getStartEndTime(endHour);\n }\n if (groupOrder) {\n dateSlot.groupOrder = groupOrder;\n }\n }\n return dateSlots;\n };\n ResourceBase.prototype.generateHeaderLevels = function (resTreeGroup, lastColumnDates, headerDates) {\n var headerLevels = [];\n for (var i = resTreeGroup.length - 1; i >= 0; i--) {\n var temp = 0;\n for (var _i = 0, _a = resTreeGroup[parseInt(i.toString(), 10)]; _i < _a.length; _i++) {\n var currentLevelChilds = _a[_i];\n for (var _b = 0, currentLevelChilds_1 = currentLevelChilds; _b < currentLevelChilds_1.length; _b++) {\n var currentLevelChild = currentLevelChilds_1[_b];\n if (resTreeGroup[i + 1] && resTreeGroup[i + 1].length > 0) {\n var nextLevelChilds = resTreeGroup[parseInt((i + 1).toString(), 10)][parseInt(temp.toString(), 10)];\n if (!nextLevelChilds) {\n continue;\n }\n var colSpan = 0;\n for (var _c = 0, nextLevelChilds_1 = nextLevelChilds; _c < nextLevelChilds_1.length; _c++) {\n var nextLevelChild = nextLevelChilds_1[_c];\n if (!this.parent.activeViewOptions.group.byGroupID || (this.parent.activeViewOptions.group.byGroupID &&\n nextLevelChild.resourceData[nextLevelChild.resource.groupIDField] ===\n currentLevelChild.resourceData[currentLevelChild.resource.idField])) {\n colSpan += nextLevelChild.colSpan;\n }\n }\n currentLevelChild.colSpan = colSpan;\n }\n currentLevelChild.groupIndex = temp;\n temp++;\n headerLevels[currentLevelChild.resourceLevelIndex] = headerLevels[currentLevelChild.resourceLevelIndex] || [];\n headerLevels[currentLevelChild.resourceLevelIndex].push(currentLevelChild);\n }\n }\n }\n this.lastResourceLevel = headerLevels.slice(-1)[0] || [];\n if (!this.parent.activeViewOptions.group.byDate) {\n var index = 0;\n for (var _d = 0, _e = this.lastResourceLevel; _d < _e.length; _d++) {\n var lastLevelResource = _e[_d];\n for (var i = 0; i < lastLevelResource.colSpan; i++) {\n lastColumnDates[parseInt(index.toString(), 10)].groupIndex = lastLevelResource.groupIndex;\n index++;\n }\n }\n headerLevels.push(lastColumnDates);\n return headerLevels;\n }\n var dateHeaderLevels = [];\n var levels = extend([], headerLevels, null, true);\n var datesColumn = [];\n if (this.parent.activeViewOptions.group.hideNonWorkingDays) {\n var renderDates_1 = [];\n var dateIndex = 0;\n var _loop_3 = function (headerDate) {\n this_3.resourceDateTree[parseInt(dateIndex.toString(), 10)] = [];\n var currentDateLevels = [];\n var _loop_4 = function (j) {\n var workDays = this_3.lastResourceLevel[parseInt(j.toString(), 10)].resourceData[this_3.lastResourceLevel[parseInt(j.toString(), 10)].resource.workDaysField];\n if (!workDays) {\n workDays = this_3.parent.activeViewOptions.workDays;\n }\n if (workDays.indexOf(headerDate.date.getDay()) !== -1) {\n var resTd_1 = extend({}, this_3.lastResourceLevel[parseInt(j.toString(), 10)], null, true);\n resTd_1.date = headerDate.date;\n this_3.lastResourceLevel[parseInt(j.toString(), 10)].workDays = workDays;\n resTd_1.startHour = this_3.parent.getStartEndTime(resTd_1.resourceData[resTd_1.resource.startHourField]) ||\n headerDate.startHour;\n resTd_1.endHour = this_3.parent.getStartEndTime(resTd_1.resourceData[resTd_1.resource.endHourField]) ||\n headerDate.endHour;\n this_3.resourceDateTree[parseInt(dateIndex.toString(), 10)].push(resTd_1);\n var _loop_5 = function (k) {\n if (!currentDateLevels[parseInt(k.toString(), 10)]) {\n currentDateLevels[parseInt(k.toString(), 10)] = [];\n }\n if (k === resTd_1.groupOrder.length - 1) {\n if (!renderDates_1[parseInt(j.toString(), 10)]) {\n renderDates_1[parseInt(j.toString(), 10)] = [];\n }\n var filterDates = resTd_1.renderDates.filter(function (x) { return x.getDay() === headerDate.date.getDay(); });\n renderDates_1[parseInt(j.toString(), 10)] = renderDates_1[parseInt(j.toString(), 10)].concat(filterDates);\n currentDateLevels[parseInt(k.toString(), 10)].push(resTd_1);\n return \"continue\";\n }\n var currentLevel = levels[parseInt(k.toString(), 10)];\n var filteredResource = currentLevel.filter(function (data) {\n return data.resourceData[data.resource.idField] === resTd_1.groupOrder[parseInt(k.toString(), 10)];\n });\n if (filteredResource && filteredResource.length > 0) {\n var existedResource = currentDateLevels[parseInt(k.toString(), 10)].filter(function (data) {\n return data.resourceData[data.resource.idField] === resTd_1.groupOrder[parseInt(k.toString(), 10)];\n });\n if (existedResource && existedResource.length > 0) {\n existedResource[0].colSpan += 1;\n }\n else {\n var filteredTd = extend({}, filteredResource[0], null, true);\n filteredTd.colSpan = 1;\n currentDateLevels[parseInt(k.toString(), 10)].push(filteredTd);\n }\n }\n };\n for (var k = 0; k < resTd_1.groupOrder.length; k++) {\n _loop_5(k);\n }\n }\n };\n for (var j = 0; j < this_3.lastResourceLevel.length; j++) {\n _loop_4(j);\n }\n if (currentDateLevels.length > 0) {\n for (var l = 0; l < levels.length; l++) {\n if (!dateHeaderLevels[parseInt(l.toString(), 10)]) {\n dateHeaderLevels[parseInt(l.toString(), 10)] = [];\n }\n dateHeaderLevels[parseInt(l.toString(), 10)] = dateHeaderLevels[parseInt(l.toString(), 10)].concat(currentDateLevels[parseInt(l.toString(), 10)]);\n }\n headerDate.colSpan = currentDateLevels[currentDateLevels.length - 1].length;\n datesColumn.push(headerDate);\n }\n dateIndex++;\n };\n var this_3 = this;\n for (var _f = 0, headerDates_1 = headerDates; _f < headerDates_1.length; _f++) {\n var headerDate = headerDates_1[_f];\n _loop_3(headerDate);\n }\n this.resourceDateTree = this.resourceDateTree.filter(function (data) { return data.length > 0; });\n this.lastResourceLevel.forEach(function (x, index) {\n if (renderDates_1[parseInt(index.toString(), 10)]) {\n x.renderDates = renderDates_1[parseInt(index.toString(), 10)].sort(function (a, b) { return a.getTime() - b.getTime(); });\n }\n });\n dateHeaderLevels.unshift(datesColumn);\n return dateHeaderLevels;\n }\n var dateColSpan = 0;\n for (var _g = 0, _h = levels[0]; _g < _h.length; _g++) {\n var firstRowTd = _h[_g];\n dateColSpan += firstRowTd.colSpan;\n }\n for (var _j = 0, headerDates_2 = headerDates; _j < headerDates_2.length; _j++) {\n var headerDate = headerDates_2[_j];\n headerDate.colSpan = dateColSpan;\n datesColumn.push(headerDate);\n var resGroup = extend([], levels, null, true);\n for (var k = 0, length_2 = resGroup.length; k < length_2; k++) {\n if (k === resGroup.length - 1) {\n for (var _k = 0, _l = resGroup[parseInt(k.toString(), 10)]; _k < _l.length; _k++) {\n var resTd = _l[_k];\n resTd.date = headerDate.date;\n resTd.workDays = headerDate.workDays;\n resTd.startHour = this.parent.getStartEndTime(resTd.resourceData[resTd.resource.startHourField]) ||\n headerDate.startHour;\n resTd.endHour = this.parent.getStartEndTime(resTd.resourceData[resTd.resource.endHourField]) ||\n headerDate.endHour;\n }\n }\n if (!dateHeaderLevels[parseInt(k.toString(), 10)]) {\n dateHeaderLevels[parseInt(k.toString(), 10)] = [];\n }\n dateHeaderLevels[parseInt(k.toString(), 10)] = dateHeaderLevels[parseInt(k.toString(), 10)].concat(resGroup[parseInt(k.toString(), 10)]);\n }\n }\n dateHeaderLevels.unshift(datesColumn);\n return dateHeaderLevels;\n };\n ResourceBase.prototype.setResourceValues = function (eventObj, groupIndex) {\n var _this = this;\n var setValues = function (index, field, value) {\n if (_this.resourceCollection[parseInt(index.toString(), 10)].allowMultiple && _this.parent.activeViewOptions.group.allowGroupEdit) {\n eventObj[\"\" + field] = [value];\n }\n else {\n eventObj[\"\" + field] = value;\n }\n };\n if (groupIndex === void 0) {\n groupIndex = this.parent.uiStateValues.isGroupAdaptive ? this.parent.uiStateValues.groupIndex :\n this.parent.activeCellsData.groupIndex;\n }\n if (this.parent.activeViewOptions.group.resources.length > 0 && !isNullOrUndefined(groupIndex)) {\n var groupOrder = this.lastResourceLevel[parseInt(groupIndex.toString(), 10)].groupOrder;\n for (var index = 0; index < this.resourceCollection.length; index++) {\n setValues(index, this.resourceCollection[parseInt(index.toString(), 10)].field, groupOrder[parseInt(index.toString(), 10)]);\n }\n }\n else if (this.parent.resourceCollection.length > 0) {\n for (var index = 0; index < this.resourceCollection.length; index++) {\n var data = this.resourceCollection[parseInt(index.toString(), 10)].dataSource[0];\n if (data) {\n setValues(index, this.resourceCollection[parseInt(index.toString(), 10)].field, data[this.resourceCollection[parseInt(index.toString(), 10)].idField]);\n }\n }\n }\n };\n ResourceBase.prototype.getResourceColor = function (eventObj, groupOrder) {\n var colorFieldIndex = (!isNullOrUndefined(groupOrder) &&\n this.colorIndex > groupOrder.length - 1) ? groupOrder.length - 1 : this.colorIndex;\n var resource = this.resourceCollection[parseInt(colorFieldIndex.toString(), 10)];\n if (isNullOrUndefined(groupOrder) && this.parent.activeViewOptions.group.allowGroupEdit && resource.allowMultiple) {\n return undefined;\n }\n var id = isNullOrUndefined(groupOrder) ? eventObj[resource.field] : groupOrder[parseInt(colorFieldIndex.toString(), 10)];\n var data = this.filterData(resource.dataSource, resource.idField, id);\n if (data.length > 0) {\n return data[0][resource.colorField];\n }\n return undefined;\n };\n ResourceBase.prototype.getCssClass = function (eventObj) {\n var resource = this.resourceCollection.slice(-1)[0];\n if (this.parent.activeViewOptions.group.allowGroupEdit && resource.allowMultiple) {\n return undefined;\n }\n var data = this.filterData(resource.dataSource, resource.idField, eventObj[resource.field]);\n if (data.length > 0) {\n return data[0][resource.cssClassField];\n }\n return undefined;\n };\n ResourceBase.prototype.getResourceRenderDates = function () {\n // eslint-disable-next-line prefer-spread\n var resourceDates = [].concat.apply([], this.lastResourceLevel.map(function (e) { return e.renderDates; }));\n var removeDuplicateDates = function (dateColl) { return dateColl.filter(function (date, index, dates) {\n return dates.map(function (dateObj) { return dateObj.getTime(); }).indexOf(date.getTime()) === index;\n }); };\n var renderDates = removeDuplicateDates(resourceDates);\n renderDates.sort(function (a, b) { return a.getTime() - b.getTime(); });\n return renderDates;\n };\n ResourceBase.prototype.filterData = function (dataSource, field, value) {\n return dataSource.filter(function (data) { return data[\"\" + field] === value; });\n };\n ResourceBase.prototype.getResourceData = function (eventObj, index, groupEditIndex) {\n if (this.parent.activeViewOptions.group.allowGroupEdit) {\n var resourceObj = {};\n for (var _i = 0, groupEditIndex_1 = groupEditIndex; _i < groupEditIndex_1.length; _i++) {\n var groupIndex = groupEditIndex_1[_i];\n var resourceLevel = this.lastResourceLevel[parseInt(groupIndex.toString(), 10)].groupOrder;\n for (var level = 0, length_3 = resourceLevel.length; level < length_3; level++) {\n var fieldName = this.resourceCollection[parseInt(level.toString(), 10)].field;\n if (isNullOrUndefined(resourceObj[\"\" + fieldName])) {\n resourceObj[\"\" + fieldName] = [];\n }\n resourceObj[\"\" + fieldName].push(resourceLevel[parseInt(level.toString(), 10)]);\n }\n }\n eventObj = extend(eventObj, resourceObj);\n }\n else {\n for (var level = 0, length_4 = this.resourceCollection.length; level < length_4; level++) {\n if (this.lastResourceLevel[parseInt(index.toString(), 10)]) {\n eventObj[this.resourceCollection[parseInt(level.toString(), 10)].field] = this.lastResourceLevel[parseInt(index.toString(), 10)].groupOrder[parseInt(level.toString(), 10)];\n }\n }\n }\n };\n ResourceBase.prototype.addResource = function (resources, name, index) {\n var resourceCollection = (resources instanceof Array) ? resources : [resources];\n var _loop_6 = function (resource) {\n if (resource.name === name) {\n resourceCollection.forEach(function (addObj, i) {\n return new DataManager({ json: resource.dataSource }).insert(addObj, null, null, index + i);\n });\n return \"break\";\n }\n };\n for (var _i = 0, _a = this.parent.resourceCollection; _i < _a.length; _i++) {\n var resource = _a[_i];\n var state_1 = _loop_6(resource);\n if (state_1 === \"break\")\n break;\n }\n this.refreshLayout(true);\n };\n ResourceBase.prototype.removeResource = function (resourceId, name) {\n var resourceCollection = (resourceId instanceof Array) ? resourceId : [resourceId];\n var _loop_7 = function (resource) {\n if (resource.name === name) {\n resourceCollection.forEach(function (removeObj) {\n return new DataManager({ json: resource.dataSource }).remove(resource.idField, removeObj);\n });\n return \"break\";\n }\n };\n for (var _i = 0, _a = this.parent.resourceCollection; _i < _a.length; _i++) {\n var resource = _a[_i];\n var state_2 = _loop_7(resource);\n if (state_2 === \"break\")\n break;\n }\n this.refreshLayout(true);\n };\n ResourceBase.prototype.getIndexFromResourceId = function (id, name, resourceData, event, parentField) {\n name = name || this.parent.resourceCollection.slice(-1)[0].name;\n if (isNullOrUndefined(resourceData)) {\n resourceData = this.resourceCollection.filter(function (e) { return e.name === name; })[0];\n if (isNullOrUndefined(resourceData)) {\n return null;\n }\n }\n var resource = resourceData.dataSource.filter(function (e) {\n if (event && e[resourceData.idField] === id) {\n if (e[resourceData.groupIDField] === event[\"\" + parentField]) {\n return e[resourceData.idField] === id;\n }\n return null;\n }\n else {\n return e[resourceData.idField] === id;\n }\n })[0];\n return (this.lastResourceLevel.map(function (e) { return e.resourceData; }).indexOf(resource));\n };\n ResourceBase.prototype.resourceExpand = function (id, name, hide) {\n var resource = this.parent.resourceCollection.filter(function (e) {\n if (e.name === name) {\n return e;\n }\n return null;\n })[0];\n var index = 0;\n var resourceData = resource.dataSource.filter(function (e) { return e[resource.idField] === id; })[0];\n if (!this.parent.activeViewOptions.group.byGroupID) {\n index = this.getIndexFromResourceId(id, name, resource);\n }\n else {\n index = this.lastResourceLevel.map(function (e) { return e.resourceData; }).indexOf(resourceData);\n }\n var target = this.parent.element.querySelector('.' + cls.RESOURCE_COLUMN_WRAP_CLASS + ' ' + (\"[data-group-index=\\\"\" + index + \"\\\"]\") +\n ' ' + '.' + cls.RESOURCE_TREE_ICON_CLASS);\n if (target) {\n if (target.classList.contains(cls.RESOURCE_EXPAND_CLASS) && !hide) {\n target.click();\n }\n else if (target.classList.contains(cls.RESOURCE_COLLAPSE_CLASS) && hide) {\n target.click();\n }\n }\n };\n ResourceBase.prototype.resourceScroll = function (id, name) {\n if (this.parent.isAdaptive || ['Agenda', 'MonthAgenda'].indexOf(this.parent.currentView) > -1) {\n return;\n }\n var levelName = name || this.parent.resourceCollection.slice(-1)[0].name;\n var levelIndex = this.parent.resourceCollection.length - 1;\n var resource = this.parent.resourceCollection.filter(function (e, index) {\n if (e.name === levelName) {\n levelIndex = index;\n return e;\n }\n return null;\n })[0];\n var scrollElement = this.parent.element.querySelector('.' + cls.CONTENT_WRAP_CLASS);\n var index = 0;\n if (this.parent.activeView.isTimelineView()) {\n if (!this.parent.activeViewOptions.group.byGroupID) {\n index = this.getIndexFromResourceId(id, levelName, resource);\n }\n else {\n var resourceData = resource.dataSource.filter(function (e) {\n return e[resource.idField] === id;\n })[0];\n index = this.lastResourceLevel.map(function (e) { return e.resourceData; }).indexOf(resourceData);\n }\n if (this.parent.virtualScrollModule) {\n var virtual = this.parent.element.querySelector('.' + cls.VIRTUAL_TRACK_CLASS);\n var averageRowHeight = Math.round(virtual.offsetHeight / this.expandedResources.length);\n if (this.parent.rowAutoHeight) {\n scrollElement.scrollTop = 0;\n this.parent.virtualScrollModule.virtualScrolling();\n }\n scrollElement.scrollTop = (index * averageRowHeight) - (((this.parent.virtualScrollModule.bufferCount - 1) * averageRowHeight));\n this.parent.virtualScrollModule.virtualScrolling();\n if (this.parent.rowAutoHeight) {\n var td = this.parent.element.querySelector(\".\" + cls.WORK_CELLS_CLASS + \"[data-group-index=\\\"\" + index + \"\\\"]\");\n if (td && !td.parentElement.classList.contains(cls.HIDDEN_CLASS)) {\n scrollElement.scrollTop =\n (scrollElement.scrollTop < td.offsetTop) ? td.offsetTop : scrollElement.scrollTop + td.offsetTop;\n }\n }\n else {\n scrollElement.scrollTop = (index * averageRowHeight);\n }\n }\n else {\n var td = this.parent.element.querySelector(\".\" + cls.WORK_CELLS_CLASS + \"[data-group-index=\\\"\" + index + \"\\\"]\");\n if (td && !td.parentElement.classList.contains(cls.HIDDEN_CLASS)) {\n scrollElement.scrollTop = td.offsetTop;\n }\n }\n }\n else {\n if (!this.parent.activeViewOptions.group.byGroupID) {\n index = this.getIndexFromResourceId(id, levelName, resource);\n }\n else {\n if (levelName === this.parent.resourceCollection.slice(-1)[0].name) {\n index = this.lastResourceLevel.map(function (e) { return e.resourceData[resource.idField]; }).indexOf(id);\n }\n else {\n index = resource.dataSource.map(function (e) { return e[resource.idField]; }).indexOf(id);\n }\n }\n var offsetTarget = this.parent.element.querySelector(\".\" + cls.HEADER_ROW_CLASS + \":nth-child(\" + (levelIndex + 1) + \")\");\n var offset = [].slice.call(offsetTarget.children).map(function (node) { return node.offsetLeft; });\n scrollElement.scrollLeft = offset[parseInt(index.toString(), 10)];\n }\n };\n ResourceBase.prototype.destroy = function () {\n this.parent.off(events.documentClick, this.documentClick);\n if (this.treeViewObj) {\n if (this.treeViewObj.portals && this.treeViewObj.portals.length > 0) {\n var treeViewTemplates = this.treeViewObj.portals.map(function (x) { return x.propName; });\n if (treeViewTemplates.length > 0) {\n this.parent.resetTemplates(treeViewTemplates);\n }\n }\n this.treeViewObj.destroy();\n this.treeViewObj = null;\n }\n if (this.treePopup) {\n this.treePopup.destroy();\n this.treePopup = null;\n remove(this.parent.element.querySelector('.' + cls.RESOURCE_TREE_POPUP));\n remove(this.parent.element.querySelector('.' + cls.RESOURCE_TREE_POPUP_OVERLAY));\n }\n var resToolBarEle = this.parent.element.querySelector('.' + cls.RESOURCE_TOOLBAR_CONTAINER);\n if (resToolBarEle) {\n remove(resToolBarEle);\n }\n };\n return ResourceBase;\n}());\nexport { ResourceBase };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\nimport { Property, ChildProperty, Event } from '@syncfusion/ej2-base';\nvar ToolbarItem = /** @class */ (function (_super) {\n __extends(ToolbarItem, _super);\n function ToolbarItem() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"id\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"text\", void 0);\n __decorate([\n Property('auto')\n ], ToolbarItem.prototype, \"width\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"cssClass\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"showAlwaysInPopup\", void 0);\n __decorate([\n Property(false)\n ], ToolbarItem.prototype, \"disabled\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"prefixIcon\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"suffixIcon\", void 0);\n __decorate([\n Property(true)\n ], ToolbarItem.prototype, \"visible\", void 0);\n __decorate([\n Property('None')\n ], ToolbarItem.prototype, \"overflow\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"template\", void 0);\n __decorate([\n Property('Button')\n ], ToolbarItem.prototype, \"type\", void 0);\n __decorate([\n Property('Both')\n ], ToolbarItem.prototype, \"showTextOn\", void 0);\n __decorate([\n Property(null)\n ], ToolbarItem.prototype, \"htmlAttributes\", void 0);\n __decorate([\n Property('')\n ], ToolbarItem.prototype, \"tooltipText\", void 0);\n __decorate([\n Property('Left')\n ], ToolbarItem.prototype, \"align\", void 0);\n __decorate([\n Property(-1)\n ], ToolbarItem.prototype, \"tabIndex\", void 0);\n __decorate([\n Property('Custom')\n ], ToolbarItem.prototype, \"name\", void 0);\n __decorate([\n Event()\n ], ToolbarItem.prototype, \"click\", void 0);\n return ToolbarItem;\n}(ChildProperty));\nexport { ToolbarItem };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nvar __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {\n var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;\n if (typeof Reflect === \"object\" && typeof Reflect.decorate === \"function\") r = Reflect.decorate(decorators, target, key, desc);\n else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;\n return c > 3 && r && Object.defineProperty(target, key, r), r;\n};\n/* eslint-disable @typescript-eslint/no-explicit-any */\nimport { Component, Property, Event, Animation, Collection, append } from '@syncfusion/ej2-base';\nimport { EventHandler, Browser, Internationalization, getDefaultDateObject, cldrData, L10n } from '@syncfusion/ej2-base';\nimport { getValue, compile, extend, isNullOrUndefined, NotifyPropertyChanges, Complex } from '@syncfusion/ej2-base';\nimport { getElement, removeClass, addClass, classList, remove, SanitizeHtmlHelper } from '@syncfusion/ej2-base';\nimport { createSpinner, hideSpinner, showSpinner } from '@syncfusion/ej2-popups';\nimport { HeaderRenderer } from '../renderer/header-renderer';\nimport { Scroll } from '../actions/scroll';\nimport { ScheduleTouch } from '../actions/touch';\nimport { KeyboardInteraction } from '../actions/keyboard';\nimport { Data } from '../actions/data';\nimport { EventBase } from '../event-renderer/event-base';\nimport { InlineEdit } from '../event-renderer/inline-edit';\nimport { QuickPopups } from '../popups/quick-popups';\nimport { EventTooltip } from '../popups/event-tooltip';\nimport { EventWindow } from '../popups/event-window';\nimport { Render } from '../renderer/renderer';\nimport { WorkHours } from '../models/work-hours';\nimport { TimeScale } from '../models/time-scale';\nimport { QuickInfoTemplates } from '../models/quick-info-templates';\nimport { HeaderRows } from '../models/header-rows';\nimport { Crud } from '../actions/crud';\nimport { WorkCellInteraction } from '../actions/work-cells';\nimport { EventSettings } from '../models/event-settings';\nimport { Group } from '../models/group';\nimport { Resources } from '../models/resources';\nimport { Gregorian, Islamic } from '../../common/calendar-util';\nimport { ResourceBase } from '../base/resource';\nimport { Timezone, timezoneData } from '../timezone/timezone';\nimport * as events from '../base/constant';\nimport * as cls from '../base/css-constant';\nimport * as util from '../base/util';\nimport { ToolbarItem } from '../models/toolbar';\n/**\n * Represents the Schedule component that displays a list of events scheduled against specific date and timings,\n * thus helping us to plan and manage it properly.\n * ```html\n *
\n * ```\n * ```typescript\n * \n * ```\n */\nvar Schedule = /** @class */ (function (_super) {\n __extends(Schedule, _super);\n /**\n * Constructor for creating the Schedule widget\n *\n * @param {ScheduleModel} options Accepts the schedule model properties to initiate the rendering\n * @param {string | HTMLElement} element Accepts the DOM element reference\n */\n function Schedule(options, element) {\n return _super.call(this, options, element) || this;\n }\n /**\n * Core method that initializes the control rendering.\n *\n * @returns {void}\n * @private\n */\n Schedule.prototype.render = function () {\n var addClasses = [];\n var removeClasses = [];\n addClasses.push(cls.ROOT);\n if (this.enableRtl) {\n addClasses.push(cls.RTL);\n }\n else {\n removeClasses.push(cls.RTL);\n }\n if (this.isAdaptive) {\n addClasses.push(cls.DEVICE_CLASS);\n }\n else {\n removeClasses.push(cls.DEVICE_CLASS);\n }\n if (this.allowMultiDrag) {\n addClasses.push(cls.MULTI_DRAG);\n }\n else {\n removeClasses.push(cls.MULTI_DRAG);\n }\n if (this.cssClass) {\n var cssClass = this.cssClass.split(' ');\n for (var _i = 0, cssClass_1 = cssClass; _i < cssClass_1.length; _i++) {\n var cls_1 = cssClass_1[_i];\n addClasses.push(cls_1);\n }\n }\n classList(this.element, addClasses, removeClasses);\n this.validateDate();\n createSpinner({ target: this.element });\n this.scrollModule = new Scroll(this);\n this.scrollModule.setWidth();\n this.scrollModule.setHeight();\n this.renderModule = new Render(this);\n this.eventBase = new EventBase(this);\n this.workCellAction = new WorkCellInteraction(this);\n if (this.allowKeyboardInteraction) {\n this.keyboardInteractionModule = new KeyboardInteraction(this);\n }\n this.inlineModule = new InlineEdit(this);\n this.initializeDataModule();\n this.renderTableContainer();\n this.activeViewOptions = this.getActiveViewOptions();\n this.initializeResources();\n this.wireEvents();\n };\n Schedule.prototype.renderTableContainer = function () {\n if (!this.element.querySelector('.' + cls.TABLE_CONTAINER_CLASS)) {\n this.element.appendChild(this.createElement('div', { className: cls.TABLE_CONTAINER_CLASS }));\n }\n };\n /**\n * Method to render react templates\n *\n * @param {Function} callback - Specifies the callBack method\n * @returns {void}\n * @private\n */\n Schedule.prototype.renderTemplates = function (callback) {\n if (this.isReact) {\n this.renderReactTemplates(callback);\n }\n else if (callback) {\n callback();\n }\n };\n /**\n * Method to reset react templates\n *\n * @param {string[]} templates Accepts the template ID\n * @returns {void}\n * @private\n */\n Schedule.prototype.resetTemplates = function (templates) {\n if (this.isAngular || this.isReact) {\n this.clearTemplate(templates);\n }\n };\n /**\n * This method renders untrusted strings and scripts securely by sanitizing them first.\n *\n * @param {string} value - A string value representing the HTML string value to be sanitized.\n * @param {HTMLElement} element - An HTML element to which the sanitized or unsanitized HTML string will be assigned.\n * @returns {void}\n * @private\n */\n Schedule.prototype.sanitize = function (value, element) {\n if (this.enableHtmlSanitizer) {\n element.innerText = SanitizeHtmlHelper.sanitize(value);\n }\n else {\n element.innerHTML = value;\n }\n };\n Schedule.prototype.initializeResources = function (isSetModel) {\n if (isSetModel === void 0) { isSetModel = false; }\n if (this.resources.length > 0) {\n this.resourceBase = new ResourceBase(this);\n this.resourceBase.bindResourcesData(isSetModel);\n }\n else {\n this.resourceBase = null;\n this.resourceCollection = [];\n this.renderElements(isSetModel);\n }\n };\n Schedule.prototype.destroyEditorWindow = function () {\n if (this.eventWindow) {\n this.eventWindow.destroy();\n this.eventWindow = null;\n }\n this.eventWindow = new EventWindow(this);\n };\n /**\n * Method to render the layout elements\n *\n * @param {boolean} isLayoutOnly Accepts the boolean value to render layout or not\n * @returns {void}\n * @private\n */\n Schedule.prototype.renderElements = function (isLayoutOnly) {\n if (isLayoutOnly) {\n this.initializeView(this.currentView);\n this.eventWindow.refresh();\n return;\n }\n this.destroyHeaderModule();\n if (this.showHeaderBar) {\n this.headerModule = new HeaderRenderer(this);\n }\n this.renderTableContainer();\n if (Browser.isDevice || Browser.isTouch) {\n this.scheduleTouchModule = new ScheduleTouch(this);\n }\n this.initializeView(this.currentView);\n this.destroyPopups();\n if (!this.isPrinting) {\n this.initializePopups();\n }\n };\n Schedule.prototype.validateDate = function (selectedDate) {\n if (selectedDate === void 0) { selectedDate = this.selectedDate; }\n // persist the selected date value\n var date = selectedDate instanceof Date ? new Date(selectedDate.getTime()) : new Date(selectedDate);\n var minDate = this.minDate instanceof Date ? new Date(this.minDate.getTime()) : new Date(this.minDate);\n var maxDate = this.maxDate instanceof Date ? new Date(this.maxDate.getTime()) : new Date(this.maxDate);\n if (minDate <= maxDate) {\n if (date < minDate) {\n date = minDate;\n }\n if (date > maxDate) {\n date = maxDate;\n }\n this.setProperties({ selectedDate: new Date('' + date), minDate: new Date('' + minDate), maxDate: new Date('' + maxDate) }, true);\n if (this.eventWindow) {\n this.eventWindow.updateMinMaxDateToEditor();\n }\n }\n else {\n throw Error('minDate should be equal or less than maxDate');\n }\n };\n Schedule.prototype.getViewIndex = function (viewName) {\n for (var item = 0; item < this.viewCollections.length; item++) {\n var checkIndex = this.viewCollections[parseInt(item.toString(), 10)].option;\n if (checkIndex === viewName) {\n return item;\n }\n }\n return -1;\n };\n Schedule.prototype.setViewOptions = function (isModuleLoad) {\n if (isModuleLoad === void 0) { isModuleLoad = false; }\n this.viewOptions = {};\n this.viewCollections = [];\n var viewName;\n var selectedView;\n var prevIndex = this.viewIndex;\n var count = 0;\n this.viewIndex = -1;\n for (var _i = 0, _a = this.views; _i < _a.length; _i++) {\n var view = _a[_i];\n var isOptions = (typeof view === 'string') ? false : true;\n if (typeof view === 'string') {\n viewName = view;\n if (this.currentView === viewName) {\n selectedView = viewName;\n this.viewIndex = count;\n }\n }\n else {\n viewName = view.option;\n if (view.isSelected) {\n selectedView = viewName;\n this.viewIndex = count;\n }\n }\n var obj = extend({ option: viewName }, isOptions ? view : {});\n var fieldViewName = viewName.charAt(0).toLowerCase() + viewName.slice(1);\n obj.cellHeaderTemplateName = obj.cellHeaderTemplate ? obj.option : '';\n obj.dateHeaderTemplateName = obj.dateHeaderTemplate ? obj.option : '';\n obj.dateRangeTemplateName = obj.dateRangeTemplate ? obj.option : '';\n obj.cellTemplateName = obj.cellTemplate ? obj.option : '';\n obj.dayHeaderTemplateName = obj.dayHeaderTemplate ? obj.option : '';\n obj.monthHeaderTemplateName = obj.monthHeaderTemplate ? obj.option : '';\n obj.resourceHeaderTemplateName = obj.resourceHeaderTemplate ? obj.option : '';\n obj.headerIndentTemplateName = obj.headerIndentTemplate ? obj.option : '';\n obj.eventTemplateName = obj.eventTemplate ? obj.option : '';\n if (!isNullOrUndefined(obj.firstDayOfWeek) && obj.firstDayOfWeek === 0) {\n delete obj.firstDayOfWeek;\n }\n if (!isNullOrUndefined(obj.interval) && obj.interval === 1) {\n delete obj.interval;\n }\n this.viewCollections.push(obj);\n if (isNullOrUndefined(this.viewOptions[\"\" + fieldViewName])) {\n this.viewOptions[\"\" + fieldViewName] = [obj];\n }\n else {\n this.viewOptions[\"\" + fieldViewName].push(obj);\n }\n count++;\n }\n if (!isModuleLoad && selectedView) {\n this.setProperties({ currentView: selectedView }, true);\n }\n if (this.viewIndex === -1) {\n var currentIndex = this.getViewIndex(this.currentView);\n this.viewIndex = ((typeof this.views[0] !== 'string') && (!isNullOrUndefined(prevIndex) && prevIndex !== -1)) ? prevIndex :\n (currentIndex === -1) ? 0 : currentIndex;\n }\n };\n Schedule.prototype.getActiveViewOptions = function () {\n var timeScale = {\n enable: this.timeScale.enable,\n interval: this.timeScale.interval,\n slotCount: this.timeScale.slotCount,\n majorSlotTemplate: this.timeScale.majorSlotTemplate,\n minorSlotTemplate: this.timeScale.minorSlotTemplate\n };\n var isYearView = this.viewCollections[this.viewIndex].option.indexOf('Year') > -1;\n var group = {\n byDate: isYearView ? false : this.group.byDate,\n byGroupID: this.group.byGroupID,\n allowGroupEdit: this.group.allowGroupEdit,\n resources: this.group.resources,\n headerTooltipTemplate: this.group.headerTooltipTemplate,\n enableCompactView: this.group.enableCompactView,\n hideNonWorkingDays: ['Day', 'Week', 'WorkWeek', 'Month'].indexOf(this.currentView) > -1 ? this.group.hideNonWorkingDays : false\n };\n var workDays = this.viewCollections[this.viewIndex].workDays ? [] : this.workDays;\n var scheduleOptions = {\n dateFormat: this.dateFormat,\n endHour: this.endHour,\n isSelected: false,\n option: null,\n readonly: this.readonly,\n startHour: this.startHour,\n allowVirtualScrolling: false,\n cellHeaderTemplate: this.cellHeaderTemplate,\n dayHeaderTemplate: this.dayHeaderTemplate,\n monthHeaderTemplate: this.monthHeaderTemplate,\n cellTemplate: this.cellTemplate,\n eventTemplate: this.eventSettings.template,\n dateHeaderTemplate: this.dateHeaderTemplate,\n dateRangeTemplate: this.dateRangeTemplate,\n resourceHeaderTemplate: this.resourceHeaderTemplate,\n headerIndentTemplate: this.headerIndentTemplate,\n firstMonthOfYear: this.firstMonthOfYear,\n firstDayOfWeek: this.firstDayOfWeek,\n workDays: workDays,\n monthsCount: this.monthsCount,\n showWeekend: this.showWeekend,\n showWeekNumber: this.showWeekNumber,\n displayName: null,\n interval: 1,\n timeScale: timeScale,\n timeFormat: this.internalTimeFormat,\n group: group,\n headerRows: this.headerRows,\n orientation: 'Horizontal',\n numberOfWeeks: 0,\n displayDate: null,\n enableLazyLoading: false\n };\n var viewOptions = this.viewCollections[this.viewIndex];\n var viewsData = extend(scheduleOptions, viewOptions, undefined, true);\n if (this.firstDayOfWeek !== 0 && viewOptions.firstDayOfWeek && this.firstDayOfWeek !== viewOptions.firstDayOfWeek) {\n viewsData.firstDayOfWeek = this.firstDayOfWeek;\n }\n if (viewsData.displayDate) {\n viewsData.displayDate = viewsData.displayDate instanceof Date ? new Date(viewsData.displayDate.getTime()) :\n new Date(viewsData.displayDate);\n }\n if (viewsData.enableLazyLoading && !isNullOrUndefined(viewsData.group.resources) && viewsData.group.resources.length > 0 &&\n (['Agenda', 'MonthAgenda', 'Year', 'TimelineYear'].indexOf(viewsData.option) === -1 ||\n (viewsData.option === 'TimelineYear' && viewsData.orientation === 'Vertical'))) {\n viewsData.allowVirtualScrolling = true;\n }\n return viewsData;\n };\n Schedule.prototype.initializeDataModule = function () {\n this.eventFields = {\n id: this.eventSettings.fields.id,\n isBlock: this.eventSettings.fields.isBlock,\n subject: this.eventSettings.fields.subject.name,\n startTime: this.eventSettings.fields.startTime.name,\n endTime: this.eventSettings.fields.endTime.name,\n startTimezone: this.eventSettings.fields.startTimezone.name,\n endTimezone: this.eventSettings.fields.endTimezone.name,\n location: this.eventSettings.fields.location.name,\n description: this.eventSettings.fields.description.name,\n isAllDay: this.eventSettings.fields.isAllDay.name,\n recurrenceID: this.eventSettings.fields.recurrenceID.name,\n recurrenceRule: this.eventSettings.fields.recurrenceRule.name,\n recurrenceException: this.eventSettings.fields.recurrenceException.name,\n isReadonly: this.eventSettings.fields.isReadonly,\n followingID: this.eventSettings.fields.followingID\n };\n this.setEditorTitles();\n this.dataModule = new Data(this, this.eventSettings.dataSource, this.eventSettings.query);\n this.crudModule = new Crud(this);\n };\n Schedule.prototype.setEditorTitles = function () {\n this.editorTitles = {\n subject: this.eventSettings.fields.subject.title || this.localeObj.getConstant('title'),\n startTime: this.eventSettings.fields.startTime.title || this.localeObj.getConstant('start'),\n endTime: this.eventSettings.fields.endTime.title || this.localeObj.getConstant('end'),\n isAllDay: this.eventSettings.fields.isAllDay.title || this.localeObj.getConstant('allDay'),\n startTimezone: this.eventSettings.fields.startTimezone.title || this.localeObj.getConstant('startTimezone'),\n endTimezone: this.eventSettings.fields.endTimezone.title || this.localeObj.getConstant('endTimezone'),\n location: this.eventSettings.fields.location.title || this.localeObj.getConstant('location'),\n description: this.eventSettings.fields.description.title || this.localeObj.getConstant('description'),\n recurrenceRule: this.eventSettings.fields.recurrenceRule.title || this.localeObj.getConstant('repeat')\n };\n };\n Schedule.prototype.initializeView = function (viewName) {\n this.showSpinner();\n this.activeViewOptions = this.getActiveViewOptions();\n if (this.resourceBase) {\n this.resourceBase.setResourceCollection();\n }\n this.initializeTemplates();\n this.renderModule.render(viewName);\n };\n Schedule.prototype.initializeTemplates = function () {\n this.cellHeaderTemplateFn = this.templateParser(this.activeViewOptions.cellHeaderTemplate);\n this.dayHeaderTemplateFn = this.templateParser(this.activeViewOptions.dayHeaderTemplate);\n this.monthHeaderTemplateFn = this.templateParser(this.activeViewOptions.monthHeaderTemplate);\n this.cellTemplateFn = this.templateParser(this.activeViewOptions.cellTemplate);\n this.dateHeaderTemplateFn = this.templateParser(this.activeViewOptions.dateHeaderTemplate);\n this.dateRangeTemplateFn = this.templateParser(this.activeViewOptions.dateRangeTemplate);\n this.majorSlotTemplateFn = this.templateParser(this.activeViewOptions.timeScale.majorSlotTemplate);\n this.minorSlotTemplateFn = this.templateParser(this.activeViewOptions.timeScale.minorSlotTemplate);\n this.appointmentTemplateFn = this.templateParser(this.activeViewOptions.eventTemplate);\n this.resourceHeaderTemplateFn = this.templateParser(this.activeViewOptions.resourceHeaderTemplate);\n this.headerIndentTemplateFn = this.templateParser(this.activeViewOptions.headerIndentTemplate);\n this.headerTooltipTemplateFn = this.templateParser(this.activeViewOptions.group.headerTooltipTemplate);\n this.eventTooltipTemplateFn = this.templateParser(this.eventSettings.tooltipTemplate);\n this.editorTemplateFn = this.templateParser(this.editorTemplate);\n this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);\n this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);\n this.quickInfoTemplatesHeaderFn = this.templateParser(this.quickInfoTemplates.header);\n this.quickInfoTemplatesContentFn = this.templateParser(this.quickInfoTemplates.content);\n this.quickInfoTemplatesFooterFn = this.templateParser(this.quickInfoTemplates.footer);\n };\n Schedule.prototype.initializePopups = function () {\n this.eventWindow = new EventWindow(this);\n this.quickPopup = new QuickPopups(this);\n };\n /**\n * Method to get day names\n *\n * @param {string} type Accepts the day name\n * @returns {string[]} Returns the collection of day names\n * @private\n */\n Schedule.prototype.getDayNames = function (type) {\n var culShortNames = [];\n var cldrObj;\n var nameSpace = '';\n if (this.locale === 'en' || this.locale === 'en-US') {\n nameSpace = 'days.stand-alone.';\n cldrObj = (getValue(nameSpace + type, getDefaultDateObject(this.getCalendarMode())));\n }\n else {\n nameSpace = 'main.' + '' + this.locale + '.dates.calendars.' + this.getCalendarMode() + '.days.format.' + type;\n cldrObj = (getValue(nameSpace, cldrData));\n }\n for (var _i = 0, _a = Object.keys(cldrObj); _i < _a.length; _i++) {\n var obj = _a[_i];\n culShortNames.push(getValue(obj, cldrObj));\n }\n return culShortNames;\n };\n Schedule.prototype.setCldrTimeFormat = function () {\n if (!isNullOrUndefined(this.timeFormat)) {\n this.internalTimeFormat = this.timeFormat;\n return;\n }\n if (this.locale === 'en' || this.locale === 'en-US') {\n this.internalTimeFormat = (getValue('timeFormats.short', getDefaultDateObject(this.getCalendarMode())));\n }\n else {\n this.internalTimeFormat = (getValue('main.' + '' + this.locale + '.dates.calendars.' + this.getCalendarMode() + '.timeFormats.short', cldrData));\n }\n };\n /**\n * Method to get calendar mode\n *\n * @returns {string} Returns the calendar mode\n * @private\n */\n Schedule.prototype.getCalendarMode = function () {\n return this.calendarMode.toLowerCase();\n };\n /**\n * Method to get time in string\n *\n * @param {Date} date Accepts the date object\n * @returns {string} Returns the time in string\n * @private\n */\n Schedule.prototype.getTimeString = function (date) {\n var time = this.globalize.formatDate(date, {\n format: this.activeViewOptions.timeFormat,\n type: 'time', calendar: this.getCalendarMode()\n });\n return time.toLocaleUpperCase();\n };\n /**\n * Method to get date object\n *\n * @param {Date} date Accepts the date object\n * @returns {Date} Returns the date object\n * @private\n */\n Schedule.prototype.getDateTime = function (date) {\n return date instanceof Date ? new Date(date.getTime()) : new Date(date);\n };\n Schedule.prototype.setCalendarMode = function () {\n if (this.calendarMode === 'Islamic') {\n this.calendarUtil = new Islamic();\n }\n else {\n this.calendarUtil = new Gregorian();\n }\n };\n /**\n * Method to change the current view\n *\n * @param {View} view Accepts the view name\n * @param {Event} event Accepts the event object\n * @param {boolean} muteOnChange Accepts the value to enable or disable mute on change\n * @param {number} index Accepts the index value\n * @returns {void}\n * @private\n */\n Schedule.prototype.changeView = function (view, event, muteOnChange, index) {\n var _this = this;\n if (isNullOrUndefined(index)) {\n index = this.getViewIndex(view);\n }\n if (!muteOnChange && index === this.viewIndex && this.currentView === view || index < 0) {\n return;\n }\n var previousView = this.activeViewOptions ? this.activeViewOptions.option : this.currentView;\n var args = { requestType: 'viewNavigate', cancel: false, event: event };\n this.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n var navArgs = {\n action: 'view', cancel: false, currentDate: _this.selectedDate, previousView: previousView, currentView: view, viewIndex: index\n };\n _this.trigger(events.navigating, navArgs, function (navigationArgs) {\n if (!navigationArgs.cancel) {\n var isVertical = ['Day', 'Week', 'WorkWeek'].indexOf(view) > -1 && ['Day', 'Week', 'WorkWeek'].indexOf(previousView) < 0;\n _this.uiStateValues.isInitial = isVertical || view.indexOf('Timeline') > -1 || view.indexOf('Year') > -1;\n _this.uiStateValues.top = view.indexOf('Timeline') > -1 && previousView.indexOf('Timeline') < 0 ? 0 : _this.uiStateValues.top;\n _this.viewIndex = navigationArgs.viewIndex;\n _this.setProperties({ currentView: view }, true);\n if (_this.headerModule) {\n _this.headerModule.updateActiveView();\n _this.headerModule.setCalendarDate(_this.selectedDate);\n _this.headerModule.setCalendarView();\n }\n _this.initializeView(_this.currentView);\n _this.animateLayout();\n args = { requestType: 'viewNavigate', cancel: false, event: event };\n _this.trigger(events.actionComplete, args);\n }\n else {\n _this.currentView = previousView;\n }\n });\n }\n else {\n _this.currentView = previousView;\n }\n });\n };\n /**\n * Method to change the view date\n *\n * @param {Date} selectedDate Accepts the selected date\n * @param {Event} event Accepts the event object\n * @returns {void}\n * @private\n */\n Schedule.prototype.changeDate = function (selectedDate, event) {\n var _this = this;\n var args = { requestType: 'dateNavigate', cancel: false, event: event };\n this.trigger(events.actionBegin, args, function (actionArgs) {\n if (!actionArgs.cancel) {\n var navArgs = {\n action: 'date', cancel: false, previousDate: _this.selectedDate, currentDate: selectedDate\n };\n _this.trigger(events.navigating, navArgs, function (navigationArgs) {\n if (!navigationArgs.cancel) {\n _this.uiStateValues.isInitial = _this.activeView.isTimelineView() && _this.currentView !== 'TimelineYear';\n _this.validateDate(navigationArgs.currentDate);\n if (_this.headerModule) {\n _this.headerModule.setCalendarDate(navigationArgs.currentDate);\n }\n if (_this.currentView === 'MonthAgenda' && _this.monthAgendaModule) {\n _this.monthAgendaModule.monthAgendaDate = new Date('' + _this.selectedDate);\n }\n _this.initializeView(_this.currentView);\n _this.animateLayout();\n args = { requestType: 'dateNavigate', cancel: false, event: event };\n _this.trigger(events.actionComplete, args);\n }\n });\n }\n });\n };\n /**\n * Method to validate min and max date\n *\n * @param {Date} date Accepts the date object\n * @returns {boolean} Returns the boolean result to validate the min and max date\n * @private\n */\n Schedule.prototype.isMinMaxDate = function (date) {\n if (date === void 0) { date = this.selectedDate; }\n return ((date.getTime() >= this.minDate.getTime()) && (date.getTime() <= this.maxDate.getTime()));\n };\n /**\n * Method to validate the selected date\n *\n * @param {Date} date Accepts the date object\n * @returns {boolean} Returns the boolean value for given date is selected date or not\n * @private\n */\n Schedule.prototype.isSelectedDate = function (date) {\n return date.setHours(0, 0, 0, 0) === new Date('' + this.selectedDate).setHours(0, 0, 0, 0);\n };\n /**\n * Method to get the current time\n *\n * @param {Date} date Accepts the date object\n * @returns {Date} Returns the date object after performing the timezone conversion\n * @private\n */\n Schedule.prototype.getCurrentTime = function (date) {\n if (date === void 0) { date = new Date(); }\n if (this.timezone) {\n return this.tzModule.convert(date, this.tzModule.getLocalTimezoneName(), this.timezone);\n }\n return date;\n };\n /** Method to get navigate view\n *\n * @returns {View} Return the navigate view name\n * @private\n */\n Schedule.prototype.getNavigateView = function () {\n if (this.activeView.isTimelineView()) {\n return this.currentView === 'TimelineMonth' || this.currentView === 'TimelineYear' ? 'TimelineDay' : 'Agenda';\n }\n return 'Day';\n };\n Schedule.prototype.animateLayout = function () {\n if (!this.activeView.element) {\n return;\n }\n new Animation({ duration: 600, name: 'FadeIn', timingFunction: 'easeIn' }).animate(this.activeView.element);\n };\n /**\n * To provide the array of modules needed for control rendering\n *\n * @returns {ModuleDeclaration[]} Returns the declared modules\n * @private\n */\n Schedule.prototype.requiredModules = function () {\n var modules = [];\n this.setViewOptions(true);\n for (var _i = 0, _a = Object.keys(this.viewOptions); _i < _a.length; _i++) {\n var view = _a[_i];\n view = (view === 'timelineDay' || view === 'timelineWeek' || view === 'timelineWorkWeek') ? 'timelineViews' : view;\n modules.push({ member: view, args: [this] });\n }\n if (this.allowDragAndDrop) {\n modules.push({ member: 'dragAndDrop', args: [this] });\n }\n if (this.allowResizing) {\n modules.push({ member: 'resize', args: [this] });\n }\n modules.push({ member: 'excelExport', args: [this] });\n modules.push({ member: 'iCalendarExport', args: [this] });\n modules.push({ member: 'iCalendarImport', args: [this] });\n modules.push({ member: 'print', args: [this] });\n return modules;\n };\n /**\n * Initializes the values of private members.\n *\n * @returns {void}\n * @private\n */\n Schedule.prototype.preRender = function () {\n this.isAdaptive = Browser.isDevice || util.isIPadDevice();\n this.globalize = new Internationalization(this.locale);\n this.tzModule = new Timezone();\n if (this && isNullOrUndefined(this.uiStateValues) || !(this.enablePersistence)) {\n this.uiStateValues = {\n expand: false, isInitial: true, left: 0, top: 0, isGroupAdaptive: false,\n isIgnoreOccurrence: false, groupIndex: 0, action: false, isBlock: false, isCustomMonth: true, isPreventTimezone: false\n };\n }\n this.currentTimezoneDate = this.getCurrentTime();\n this.activeCellsData = {\n startTime: new Date(this.currentTimezoneDate),\n endTime: new Date(this.currentTimezoneDate),\n isAllDay: false\n };\n this.activeEventData = { event: undefined, element: undefined };\n this.getDefaultLocale();\n this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale);\n this.setCldrTimeFormat();\n this.setCalendarMode();\n this.eventsData = [];\n this.eventsProcessed = [];\n this.blockData = [];\n this.blockProcessed = [];\n this.resourceCollection = [];\n this.currentAction = null;\n this.selectedElements = [];\n this.setViewOptions();\n };\n Schedule.prototype.getDefaultLocale = function () {\n this.defaultLocale = {\n day: 'Day',\n week: 'Week',\n workWeek: 'Work Week',\n month: 'Month',\n year: 'Year',\n agenda: 'Agenda',\n weekAgenda: 'Week Agenda',\n workWeekAgenda: 'Work Week Agenda',\n monthAgenda: 'Month Agenda',\n today: 'Today',\n noEvents: 'No events',\n emptyContainer: 'There are no events scheduled on this day.',\n allDay: 'All day',\n start: 'Start',\n end: 'End',\n more: 'more',\n close: 'Close',\n cancel: 'Cancel',\n noTitle: '(No Title)',\n delete: 'Delete',\n deleteEvent: 'Delete Event',\n deleteMultipleEvent: 'Delete Multiple Events',\n selectedItems: 'Items selected',\n deleteSeries: 'Entire Series',\n edit: 'Edit',\n editSeries: 'Entire Series',\n editEvent: 'Edit Event',\n createEvent: 'Create',\n subject: 'Subject',\n addTitle: 'Add title',\n moreDetails: 'More Details',\n save: 'Save',\n editContent: 'How would you like to change the appointment in the series?',\n deleteContent: 'Are you sure you want to delete this event?',\n deleteMultipleContent: 'Are you sure you want to delete the selected events?',\n newEvent: 'New Event',\n title: 'Title',\n location: 'Location',\n description: 'Description',\n timezone: 'Timezone',\n startTimezone: 'Start Timezone',\n endTimezone: 'End Timezone',\n repeat: 'Repeat',\n saveButton: 'Save',\n cancelButton: 'Cancel',\n deleteButton: 'Delete',\n recurrence: 'Recurrence',\n wrongPattern: 'The recurrence pattern is not valid.',\n seriesChangeAlert: 'Do you want to cancel the changes made to specific ' +\n 'instances of this series and match it to the whole series again?',\n createError: 'The duration of the event must be shorter than how frequently it occurs. ' +\n 'Shorten the duration, or change the recurrence pattern in the recurrence event editor.',\n sameDayAlert: 'Two occurrences of the same event cannot occur on the same day.',\n occurenceAlert: 'Cannot reschedule an occurrence of the recurring appointment if it skips over ' +\n 'a later occurrence of the same appointment.',\n editRecurrence: 'Edit Recurrence',\n recurringEvent: 'Recurring Event',\n repeats: 'Repeats',\n alert: 'Alert',\n startEndError: 'The selected end date occurs before the start date.',\n invalidDateError: 'The entered date value is invalid.',\n blockAlert: 'Events cannot be scheduled within the blocked time range.',\n ok: 'Ok',\n yes: 'Yes',\n no: 'No',\n occurrence: 'Occurrence',\n series: 'Series',\n previous: 'Previous',\n next: 'Next',\n timelineDay: 'Timeline Day',\n timelineWeek: 'Timeline Week',\n timelineWorkWeek: 'Timeline Work Week',\n timelineMonth: 'Timeline Month',\n timelineYear: 'Timeline Year',\n editFollowingEvent: 'Following Events',\n deleteTitle: 'Delete Event',\n editTitle: 'Edit Event',\n beginFrom: 'Begin From',\n endAt: 'Ends At',\n expandAllDaySection: 'Expand-all-day-section',\n collapseAllDaySection: 'Collapse-all-day-section',\n searchTimezone: 'Search Timezone',\n noRecords: 'No records found'\n };\n };\n Schedule.prototype.wireEvents = function () {\n EventHandler.add(window, 'resize', this.onScheduleResize, this);\n EventHandler.add(window, 'orientationchange', this.onScheduleResize, this);\n EventHandler.add(document, Browser.touchStartEvent, this.onDocumentClick, this);\n };\n /**\n * Method to remove selected class\n *\n * @returns {void}\n * @private\n */\n Schedule.prototype.removeSelectedClass = function () {\n var selectedCells = this.getSelectedCells();\n for (var _i = 0, selectedCells_1 = selectedCells; _i < selectedCells_1.length; _i++) {\n var cell = selectedCells_1[_i];\n if (this.currentView !== 'Year') {\n cell.setAttribute('aria-selected', 'false');\n }\n cell.removeAttribute('tabindex');\n }\n removeClass(selectedCells, cls.SELECTED_CELL_CLASS);\n if (this.keyboardInteractionModule && this.keyboardInteractionModule.selectedCells.length > 0) {\n this.keyboardInteractionModule.selectedCells = [];\n }\n };\n /**\n * Method to add selected class\n *\n * @param {HTMLTableCellElement[]} cells Accepts the collection of elements\n * @param {HTMLTableCellElement} focusCell Accepts the focus element\n * @param {boolean} isPreventScroll Accepts the boolean value to prevent scroll\n * @returns {void}\n * @private\n */\n Schedule.prototype.addSelectedClass = function (cells, focusCell, isPreventScroll) {\n if (this.currentView !== 'Year') {\n for (var _i = 0, cells_1 = cells; _i < cells_1.length; _i++) {\n var cell = cells_1[_i];\n cell.setAttribute('aria-selected', 'true');\n }\n }\n addClass(cells, cls.SELECTED_CELL_CLASS);\n if (focusCell) {\n focusCell.setAttribute('tabindex', '0');\n focusCell.focus({ preventScroll: isPreventScroll || false });\n }\n };\n /**\n * Method to select cell\n *\n * @param {HTMLElement | HTMLTableCellElement} element Accepts the select element\n * @returns {void}\n * @private\n */\n Schedule.prototype.selectCell = function (element) {\n this.removeSelectedClass();\n this.addSelectedClass([element], element);\n };\n /**\n * Method to get all day row element\n *\n * @returns {Element} Returns the all day row element\n * @private\n */\n Schedule.prototype.getAllDayRow = function () {\n return this.element.querySelector('.' + cls.ALLDAY_ROW_CLASS);\n };\n /**\n * Method to get content table element\n *\n * @returns {HTMLElement} Returns the content table element\n * @private\n */\n Schedule.prototype.getContentTable = function () {\n return this.activeView.element.querySelector('.' + cls.CONTENT_TABLE_CLASS + ' tbody');\n };\n /**\n * Method to get all content table rows\n *\n * @returns {HTMLElement[]} Returns the content table rows\n * @private\n */\n Schedule.prototype.getTableRows = function () {\n return [].slice.call(this.element.querySelectorAll('.' + cls.CONTENT_TABLE_CLASS + ' tbody tr:not(.' + cls.HIDDEN_CLASS + ')'));\n };\n /**\n * Method to get work cell elements\n *\n * @returns {Element[]} Returns the all work cell elements\n * @private\n */\n Schedule.prototype.getWorkCellElements = function () {\n return [].slice.call(this.element.querySelectorAll('.' + cls.WORK_CELLS_CLASS));\n };\n /**\n * Method to get the index from date collection\n *\n * @param {Date[]} collection Accepts the collections of date\n * @param {Date} date Accepts the date object\n * @returns {number} Returns the index compared date with date collections\n * @private\n */\n Schedule.prototype.getIndexOfDate = function (collection, date) {\n return collection.map(Number).indexOf(+date);\n };\n /**\n * Method to find all day cell\n *\n * @param {Element} td Accepts the DOM Element\n * @returns {boolean} Returns the boolean value\n * @private\n */\n Schedule.prototype.isAllDayCell = function (td) {\n if (['Month', 'TimelineMonth', 'TimelineYear', 'MonthAgenda'].indexOf(this.currentView) > -1 ||\n td.classList.contains(cls.ALLDAY_CELLS_CLASS) ||\n td.classList.contains(cls.HEADER_CELLS_CLASS) || !this.activeViewOptions.timeScale.enable) {\n return true;\n }\n if (this.activeView.isTimelineView() && this.activeViewOptions.headerRows.length > 0 &&\n this.activeViewOptions.headerRows.slice(-1)[0].option !== 'Hour') {\n return true;\n }\n return false;\n };\n /**\n * Method to get date from element\n *\n * @param {Element} td Accepts the DOM element\n * @returns {Date} Returns the date object\n * @private\n */\n Schedule.prototype.getDateFromElement = function (td) {\n var dateString;\n if (!isNullOrUndefined(td)) {\n dateString = td.getAttribute('data-date');\n }\n if (!isNullOrUndefined(dateString)) {\n var dateInMS = parseInt(dateString, 10);\n var date = new Date(dateInMS);\n return date;\n }\n return undefined;\n };\n /**\n * Method to get target element from given selector\n *\n * @param {string} selector Accepts the element selector\n * @param {number} left Accepts the pageX value\n * @param {number} top Accepts the pageY value\n * @returns {Element[]} Returns the collection of elements based on the given selector\n * @private\n */\n Schedule.prototype.getTargetElement = function (selector, left, top) {\n var element = document.elementFromPoint(left, top);\n var targetElement;\n if (element) {\n targetElement = element.closest(selector);\n }\n return (targetElement) ? [targetElement] : null;\n };\n /**\n * Method to process cell header template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getCellHeaderTemplate = function () {\n return this.cellHeaderTemplateFn;\n };\n /**\n * Method to process cell header template in year view.\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getDayHeaderTemplate = function () {\n return this.dayHeaderTemplateFn;\n };\n /**\n * Method to process cell header template in year view.\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getMonthHeaderTemplate = function () {\n return this.monthHeaderTemplateFn;\n };\n /**\n * Method to process cell template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getCellTemplate = function () {\n return this.cellTemplateFn;\n };\n /**\n * Method to process date header template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getDateHeaderTemplate = function () {\n return this.dateHeaderTemplateFn;\n };\n /**\n * Method to process date range template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getDateRangeTemplate = function () {\n return this.dateRangeTemplateFn;\n };\n /**\n * Method to process major slot template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getMajorSlotTemplate = function () {\n return this.majorSlotTemplateFn;\n };\n /**\n * Method to process minor slot template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getMinorSlotTemplate = function () {\n return this.minorSlotTemplateFn;\n };\n /**\n * Method to process appointment template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getAppointmentTemplate = function () {\n return this.appointmentTemplateFn;\n };\n /**\n * Method to process appointment tooltip template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getEventTooltipTemplate = function () {\n return this.eventTooltipTemplateFn;\n };\n /**\n * Method to process header tooltip template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getHeaderTooltipTemplate = function () {\n return this.headerTooltipTemplateFn;\n };\n /**\n * Method to process editor template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getEditorTemplate = function () {\n return this.editorTemplateFn;\n };\n /**\n * Method to process editor header template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getEditorHeaderTemplate = function () {\n return this.editorHeaderTemplateFn;\n };\n /**\n * Method to process editor footer template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getEditorFooterTemplate = function () {\n return this.editorFooterTemplateFn;\n };\n /**\n * Method to process quick info header template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getQuickInfoTemplatesHeader = function () {\n return this.quickInfoTemplatesHeaderFn;\n };\n /**\n * Method to process quick info content template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getQuickInfoTemplatesContent = function () {\n return this.quickInfoTemplatesContentFn;\n };\n /**\n * Method to process quick info footer template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getQuickInfoTemplatesFooter = function () {\n return this.quickInfoTemplatesFooterFn;\n };\n /**\n * Method to process resource header template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getResourceHeaderTemplate = function () {\n return this.resourceHeaderTemplateFn;\n };\n /**\n * Method to process indent template\n *\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.getHeaderIndentTemplate = function () {\n return this.headerIndentTemplateFn;\n };\n /**\n * Method to get dynamic CSS properties\n *\n * @returns {ScrollCss} Returns the CSS properties dynamically\n * @private\n */\n Schedule.prototype.getCssProperties = function () {\n var cssProps = {\n border: this.enableRtl ? 'borderLeftWidth' : 'borderRightWidth',\n padding: this.enableRtl ? 'paddingLeft' : 'paddingRight',\n rtlBorder: this.enableRtl ? 'borderRightWidth' : 'borderLeftWidth',\n rtlPadding: this.enableRtl ? 'paddingRight' : 'paddingLeft'\n };\n return cssProps;\n };\n /**\n * Method to remove new event element in adaptive mode\n *\n * @returns {void}\n * @private\n */\n Schedule.prototype.removeNewEventElement = function () {\n var eventClone = this.element.querySelector('.' + cls.NEW_EVENT_CLASS);\n if (!isNullOrUndefined(eventClone)) {\n remove(eventClone);\n }\n };\n /**\n * Method to get start end time from string\n *\n * @param {string} startEndTime Accepts the start end time string value\n * @returns {Date} Returns the date object\n * @private\n */\n Schedule.prototype.getStartEndTime = function (startEndTime) {\n if (!isNullOrUndefined(startEndTime) && startEndTime !== '') {\n var startEndDate = util.resetTime(new Date(this.currentTimezoneDate) || this.getCurrentTime());\n var timeString = startEndTime.split(':');\n if (timeString.length === 2) {\n startEndDate.setHours(parseInt(timeString[0], 10), parseInt(timeString[1], 10), 0);\n }\n return startEndDate;\n }\n return null;\n };\n Schedule.prototype.onDocumentClick = function (args) {\n this.notify(events.documentClick, { event: args });\n };\n Schedule.prototype.onScheduleResize = function () {\n if (isNullOrUndefined(this.activeView) || ((this.isAdaptive || util.isMobile()) && document.activeElement\n && document.activeElement.classList.contains(cls.SUBJECT_CLASS))) {\n return;\n }\n if (this.activeViewOptions.timeScale.enable && this.activeView) {\n this.activeView.highlightCurrentTime();\n }\n if (this.quickPopup) {\n this.quickPopup.onClosePopup();\n }\n util.resetScrollbarWidth();\n if (this.currentView === 'Month' || ((this.currentView !== 'Agenda' && this.currentView !== 'MonthAgenda')\n && !this.activeViewOptions.timeScale.enable) || this.activeView.isTimelineView()) {\n this.activeView.resetColWidth();\n this.notify(events.scrollUiUpdate, { cssProperties: this.getCssProperties(), isPreventScrollUpdate: true });\n this.refreshEvents(false);\n }\n else {\n this.notify(events.contentReady, {});\n }\n };\n /**\n * Method to process the templates\n *\n * @param {string | Function} template Accepts the template in string\n * @returns {CallbackFunction} Returns the callback function\n * @private\n */\n Schedule.prototype.templateParser = function (template) {\n if (template) {\n try {\n if (typeof template === 'function') {\n return compile(template);\n }\n else {\n if (document.querySelectorAll(template).length) {\n return compile(document.querySelector(template).innerHTML.trim());\n }\n else {\n return compile(template);\n }\n }\n }\n catch (error) {\n return compile(template);\n }\n }\n return undefined;\n };\n /**\n * Retrieves the selected cells.\n *\n * @returns {Element[]} The elements of currently selected cells will be returned.\n * @private\n */\n Schedule.prototype.getSelectedCells = function () {\n return [].slice.call(this.element.querySelectorAll('.' + cls.SELECTED_CELL_CLASS));\n };\n /**\n * Method to generate the announcement string\n *\n * @param {Object} event Accepts the event object\n * @param {string} subject Accepts the subject text\n * @returns {string} Returns the announcement string\n * @private\n */\n Schedule.prototype.getAnnouncementString = function (event, subject) {\n var resourceName;\n if (this.quickPopup && this.activeViewOptions.group.resources.length > 0) {\n var constantText = '\"s event - ';\n resourceName = this.quickPopup.getResourceText({ event: event }, 'event') + constantText;\n }\n var recordSubject = (subject || (event[this.eventFields.subject] || this.eventSettings.fields.subject.default));\n var recordLocation = (event[this.eventFields.location] || this.eventSettings.fields.location.default);\n var skeleton = 'full';\n var startDateText = this.globalize.formatDate(event[this.eventFields.startTime], {\n type: 'dateTime', skeleton: skeleton, calendar: this.getCalendarMode()\n });\n var endDateText = this.globalize.formatDate(event[this.eventFields.endTime], {\n type: 'dateTime', skeleton: skeleton, calendar: this.getCalendarMode()\n });\n var announcementString = recordSubject + ' ' + this.localeObj.getConstant('beginFrom') + ' '\n + startDateText + ' ' + this.localeObj.getConstant('endAt') + ' ' + endDateText;\n if (resourceName) {\n announcementString = resourceName + ' ' + announcementString;\n }\n if (recordLocation && recordLocation !== '') {\n announcementString = announcementString + ' ' + this.localeObj.getConstant('location') + ' ' + recordLocation;\n }\n if (event[this.eventFields.recurrenceRule] && event[this.eventFields.recurrenceRule] !== ''\n && event[this.eventFields.id] === event[this.eventFields.recurrenceID]) {\n announcementString = announcementString + ' ' + this.localeObj.getConstant('recurringEvent');\n }\n return announcementString;\n };\n /**\n * Method to process the element boundary validation\n *\n * @param {number} pageY Accepts the pageY value\n * @param {number} pageX Accepts the pageX value\n * @returns {ResizeEdges} Returns the boundary validation object\n * @private\n */\n Schedule.prototype.boundaryValidation = function (pageY, pageX) {\n var autoScrollDistance = 30;\n var scrollEdges = { left: false, right: false, top: false, bottom: false };\n var viewBoundaries = this.element.querySelector('.' + cls.CONTENT_WRAP_CLASS).getBoundingClientRect();\n if ((pageY < viewBoundaries.top + autoScrollDistance + window.pageYOffset) &&\n (pageY > viewBoundaries.top + window.pageYOffset)) {\n scrollEdges.top = true;\n }\n if ((pageY > (viewBoundaries.bottom - autoScrollDistance) + window.pageYOffset) &&\n (pageY < viewBoundaries.bottom + window.pageYOffset)) {\n scrollEdges.bottom = true;\n }\n if ((pageX < viewBoundaries.left + autoScrollDistance + window.pageXOffset) &&\n (pageX > viewBoundaries.left + window.pageXOffset)) {\n scrollEdges.left = true;\n }\n if ((pageX > (viewBoundaries.right - autoScrollDistance) + window.pageXOffset) &&\n (pageX < viewBoundaries.right + window.pageXOffset)) {\n scrollEdges.right = true;\n }\n return scrollEdges;\n };\n /**\n * Method to get the week number.\n *\n * @param {Date[]} dates Accepts the date collections\n * @returns {number} Returns the week number\n * @private\n */\n Schedule.prototype.getWeekNumberContent = function (dates) {\n var weekNumber;\n if (this.weekRule === 'FirstDay') {\n var weekNumberDate = util.getWeekLastDate(dates.slice(-1)[0], this.firstDayOfWeek);\n weekNumber = this.globalize.formatNumber(util.getWeekNumber(weekNumberDate));\n }\n else if (this.weekRule === 'FirstFourDayWeek') {\n var weekFirstDate = util.getWeekFirstDate(dates.slice(-1)[0], this.firstDayOfWeek);\n var weekLastDate = util.getWeekLastDate(dates.slice(-1)[0], this.firstDayOfWeek);\n var weekMidDate = util.getWeekMiddleDate(weekFirstDate, weekLastDate);\n weekNumber = this.globalize.formatNumber(util.getWeekNumber(weekMidDate));\n }\n else if (this.weekRule === 'FirstFullWeek') {\n var weekFirstDate = util.getWeekFirstDate(dates.slice(-1)[0], this.firstDayOfWeek);\n weekNumber = this.globalize.formatNumber(util.getWeekNumber(weekFirstDate));\n }\n return weekNumber;\n };\n /**\n * Method to render the header indent template.\n *\n * @param {TdData} data Accepts the td data\n * @param {Element} td Accepts the td element\n * @returns {void}\n * @private\n */\n Schedule.prototype.renderHeaderIndentTemplate = function (data, td) {\n if (this.activeViewOptions.headerIndentTemplate) {\n var scheduleId = this.element.id + '_';\n var viewName = this.activeViewOptions.headerIndentTemplateName;\n var templateId = scheduleId + viewName + 'headerIndentTemplate';\n var indentTemplate = [].slice.call(this.getHeaderIndentTemplate()(data, this, 'headerIndentTemplate', templateId, false));\n append(indentTemplate, td);\n }\n };\n /**\n * Method to check for refreshing the targeted resource row events.\n *\n * @returns {boolean} Returns the boolean value\n * @private\n */\n Schedule.prototype.isSpecificResourceEvents = function () {\n return this.activeViewOptions.group.resources.length > 0 && !this.activeViewOptions.group.allowGroupEdit &&\n !this.rowAutoHeight && !this.virtualScrollModule && this.activeViewOptions.group.byGroupID;\n };\n Schedule.prototype.unWireEvents = function () {\n EventHandler.remove(window, 'resize', this.onScheduleResize);\n EventHandler.remove(window, 'orientationchange', this.onScheduleResize);\n EventHandler.remove(document, Browser.touchStartEvent, this.onDocumentClick);\n };\n /**\n * Core method to return the component name.\n *\n * @returns {string} Returns the module name\n * @private\n */\n Schedule.prototype.getModuleName = function () {\n return 'schedule';\n };\n /**\n * Returns the properties to be maintained in the persisted state.\n *\n * @returns {string} Returns the persistance data\n * @private\n */\n Schedule.prototype.getPersistData = function () {\n return this.addOnPersist(['currentView', 'selectedDate', 'scrollTop', 'scrollLeft']);\n };\n /**\n * Called internally, if any of the property value changed.\n *\n * @returns {void}\n * @private\n */\n Schedule.prototype.onPropertyChanged = function (newProp, oldProp) {\n if (this.isReact && isNullOrUndefined(this.activeView)) {\n return;\n }\n var state = {\n isRefresh: false, isResource: false, isDate: false, isView: false, isLayout: false, isDataManager: false\n };\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'views':\n this.setViewOptions();\n if (this.headerModule) {\n this.headerModule.updateItems();\n }\n state.isView = true;\n break;\n case 'currentView':\n state.isView = true;\n break;\n case 'minDate':\n case 'maxDate':\n case 'selectedDate':\n state.isDate = true;\n break;\n case 'dateFormat':\n this.activeViewOptions = this.getActiveViewOptions();\n if (this.headerModule) {\n this.headerModule.updateDateRange();\n }\n break;\n case 'showHeaderBar':\n case 'toolbarItems':\n this.destroyHeaderModule();\n if (newProp.showHeaderBar) {\n this.headerModule = new HeaderRenderer(this);\n this.headerModule.updateDateRange();\n }\n this.notify(events.scrollUiUpdate, { cssProperties: this.getCssProperties() });\n if (this.activeView.isTimelineView()) {\n this.refreshEvents(false);\n }\n break;\n case 'workDays':\n if (JSON.stringify(oldProp.workDays) !== JSON.stringify(newProp.workDays)) {\n state.isLayout = true;\n }\n break;\n case 'showWeekend':\n case 'startHour':\n case 'endHour':\n case 'workHours':\n case 'readonly':\n case 'headerRows':\n case 'showWeekNumber':\n case 'rowAutoHeight':\n state.isLayout = true;\n break;\n case 'locale':\n case 'calendarMode':\n this.globalize = new Internationalization(this.locale);\n this.localeObj = new L10n(this.getModuleName(), this.defaultLocale, this.locale);\n this.setCldrTimeFormat();\n this.setCalendarMode();\n state.isRefresh = true;\n break;\n case 'firstDayOfWeek':\n this.activeViewOptions.firstDayOfWeek = newProp.firstDayOfWeek;\n if (this.eventWindow) {\n this.eventWindow.refreshRecurrenceEditor();\n }\n state.isLayout = true;\n break;\n case 'showTimeIndicator':\n if (this.activeViewOptions.timeScale.enable && this.activeView) {\n this.activeView.highlightCurrentTime();\n }\n break;\n case 'cellHeaderTemplate':\n this.activeViewOptions.cellHeaderTemplate = newProp.cellHeaderTemplate;\n this.cellHeaderTemplateFn = this.templateParser(this.activeViewOptions.cellHeaderTemplate);\n state.isLayout = true;\n break;\n case 'cellTemplate':\n this.activeViewOptions.cellTemplate = newProp.cellTemplate;\n this.cellTemplateFn = this.templateParser(this.activeViewOptions.cellTemplate);\n state.isLayout = true;\n break;\n case 'dateHeaderTemplate':\n this.activeViewOptions.dateHeaderTemplate = newProp.dateHeaderTemplate;\n this.dateHeaderTemplateFn = this.templateParser(this.activeViewOptions.dateHeaderTemplate);\n state.isLayout = true;\n break;\n case 'dateRangeTemplate':\n this.activeViewOptions.dateRangeTemplate = newProp.dateRangeTemplate;\n this.dateRangeTemplateFn = this.templateParser(this.activeViewOptions.dateRangeTemplate);\n if (this.headerModule) {\n this.headerModule.updateDateRange();\n }\n break;\n case 'dayHeaderTemplate':\n this.activeViewOptions.dayHeaderTemplate = newProp.dayHeaderTemplate;\n this.dayHeaderTemplateFn = this.templateParser(this.activeViewOptions.dayHeaderTemplate);\n state.isLayout = true;\n break;\n case 'monthHeaderTemplate':\n this.activeViewOptions.monthHeaderTemplate = newProp.monthHeaderTemplate;\n this.monthHeaderTemplateFn = this.templateParser(this.activeViewOptions.monthHeaderTemplate);\n state.isLayout = true;\n break;\n case 'resourceHeaderTemplate':\n this.activeViewOptions.resourceHeaderTemplate = newProp.resourceHeaderTemplate;\n this.resourceHeaderTemplateFn = this.templateParser(this.activeViewOptions.resourceHeaderTemplate);\n state.isLayout = true;\n break;\n case 'timezone':\n this.eventBase.timezonePropertyChange(oldProp.timezone);\n this.headerModule.setCalendarTimezone();\n break;\n case 'enableRtl':\n this.setRtlClass();\n state.isRefresh = true;\n break;\n default:\n this.extendedPropertyChange(prop, newProp, oldProp, state);\n break;\n }\n }\n this.propertyChangeAction(state);\n };\n Schedule.prototype.propertyChangeAction = function (state) {\n if (state.isRefresh) {\n this.refresh();\n }\n else if (state.isResource) {\n this.initializeResources(true);\n }\n else if (state.isView) {\n this.changeView(this.currentView, null, true);\n }\n else if (state.isDate) {\n this.changeDate(this.selectedDate);\n }\n else if (state.isLayout) {\n this.activeCellsData = null;\n this.initializeView(this.currentView);\n }\n else if (state.isDataManager && this.crudModule) {\n if (this.dragAndDropModule) {\n this.dragAndDropModule.actionObj.action = '';\n removeClass([this.element], cls.EVENT_ACTION_CLASS);\n }\n this.crudModule.refreshDataManager();\n }\n };\n Schedule.prototype.allDayRowScrollUpdate = function () {\n var dateHeader = this.element.querySelector('.' + cls.DATE_HEADER_WRAP_CLASS);\n var allDayRow = this.element.querySelector('.' + cls.ALLDAY_ROW_CLASS);\n if (this.height === 'auto' || !this.enableAllDayScroll) {\n addClass([dateHeader], cls.ALLDAY_APPOINTMENT_AUTO);\n if (dateHeader.classList.contains(cls.ALLDAY_APPOINTMENT_SCROLL)) {\n removeClass([dateHeader], cls.ALLDAY_APPOINTMENT_SCROLL);\n }\n if (this.uiStateValues.expand) {\n var allDayCells = [].slice.call(this.element.querySelectorAll('.' + cls.ALLDAY_CELLS_CLASS));\n allDayCells[0].style.height = (allDayRow.style.height) ? allDayRow.style.height : allDayCells[1].style.height;\n }\n }\n else {\n if (dateHeader.classList.contains(cls.ALLDAY_APPOINTMENT_AUTO)) {\n removeClass([dateHeader], cls.ALLDAY_APPOINTMENT_AUTO);\n }\n this.eventBase.allDayExpandScroll(dateHeader);\n }\n if (!this.uiStateValues.expand) {\n allDayRow.style.height = '';\n }\n };\n Schedule.prototype.extendedPropertyChange = function (prop, newProp, oldProp, state) {\n switch (prop) {\n case 'width':\n case 'height':\n case 'enableAllDayScroll':\n if (['Day', 'Week', 'WorkWeek'].indexOf(this.currentView) > -1) {\n this.allDayRowScrollUpdate();\n }\n this.notify(events.uiUpdate, { module: 'scroll', properties: { width: newProp.width, height: newProp.height } });\n break;\n case 'cssClass':\n if (oldProp.cssClass) {\n removeClass([this.element], oldProp.cssClass.split(' '));\n }\n if (newProp.cssClass) {\n addClass([this.element], newProp.cssClass.split(' '));\n }\n break;\n case 'hideEmptyAgendaDays':\n case 'agendaDaysCount':\n this.activeViewOptions = this.getActiveViewOptions();\n state.isView = true;\n break;\n case 'eventSettings':\n this.onEventSettingsPropertyChanged(newProp.eventSettings, oldProp.eventSettings, state);\n break;\n case 'allowKeyboardInteraction':\n if (this.keyboardInteractionModule) {\n this.keyboardInteractionModule.destroy();\n this.keyboardInteractionModule = null;\n }\n if (newProp.allowKeyboardInteraction) {\n this.keyboardInteractionModule = new KeyboardInteraction(this);\n }\n break;\n case 'timezoneDataSource':\n if (this.eventWindow) {\n this.eventWindow.refresh();\n }\n break;\n case 'editorTemplate':\n if (!isNullOrUndefined(this.editorTemplate)) {\n this.editorTemplateFn = this.templateParser(this.editorTemplate);\n }\n if (this.eventWindow) {\n this.eventWindow.setDialogContent();\n }\n break;\n case 'editorHeaderTemplate':\n if (!isNullOrUndefined(this.editorHeaderTemplate)) {\n this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);\n }\n if (this.eventWindow) {\n this.eventWindow.setDialogHeader();\n }\n break;\n case 'editorFooterTemplate':\n if (!isNullOrUndefined(this.editorFooterTemplate)) {\n this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);\n }\n if (this.eventWindow) {\n this.eventWindow.setDialogFooter();\n }\n break;\n case 'quickInfoTemplates':\n if (this.quickInfoTemplates.header) {\n this.quickInfoTemplatesHeaderFn = this.templateParser(this.quickInfoTemplates.header);\n }\n if (this.quickInfoTemplates.content) {\n this.quickInfoTemplatesContentFn = this.templateParser(this.quickInfoTemplates.content);\n }\n if (this.quickInfoTemplates.footer) {\n this.quickInfoTemplatesFooterFn = this.templateParser(this.quickInfoTemplates.footer);\n }\n break;\n case 'group':\n this.onGroupSettingsPropertyChanged(newProp.group, oldProp.group, state);\n break;\n case 'resources':\n state.isResource = true;\n break;\n case 'timeScale':\n this.activeViewOptions.timeScale.interval = newProp.timeScale.interval || this.activeViewOptions.timeScale.interval;\n this.activeViewOptions.timeScale.slotCount = newProp.timeScale.slotCount || this.activeViewOptions.timeScale.slotCount;\n if (this.eventWindow) {\n this.eventWindow.refreshDateTimePicker();\n }\n state.isLayout = true;\n break;\n case 'allowDragAndDrop':\n case 'allowResizing':\n case 'eventDragArea':\n this.refreshEvents(false);\n break;\n case 'weekRule':\n state.isLayout = true;\n break;\n case 'firstMonthOfYear':\n this.activeViewOptions.firstMonthOfYear = newProp.firstMonthOfYear;\n this.viewIndex = this.activeView.viewIndex;\n state.isLayout = true;\n break;\n case 'monthsCount':\n this.activeViewOptions.monthsCount = newProp.monthsCount;\n this.viewIndex = this.activeView.viewIndex;\n state.isLayout = true;\n break;\n case 'timeFormat':\n this.internalTimeFormat = newProp.timeFormat || this.activeViewOptions.timeFormat;\n if (this.eventWindow) {\n this.eventWindow.refreshDateTimePicker();\n }\n state.isLayout = true;\n break;\n case 'enableAdaptiveUI':\n if (this.showHeaderBar && this.headerModule) {\n this.destroyHeaderModule();\n this.headerModule = new HeaderRenderer(this);\n this.headerModule.updateDateRange();\n }\n state.isLayout = true;\n break;\n case 'headerIndentTemplate':\n this.activeViewOptions.headerIndentTemplate = newProp.headerIndentTemplate;\n this.headerIndentTemplateFn = this.templateParser(this.activeViewOptions.headerIndentTemplate);\n state.isLayout = true;\n break;\n }\n };\n Schedule.prototype.setRtlClass = function () {\n if (this.enableRtl) {\n addClass([this.element], 'e-rtl');\n }\n else {\n removeClass([this.element], 'e-rtl');\n }\n };\n Schedule.prototype.onGroupSettingsPropertyChanged = function (newProp, oldProp, state) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n if (prop === 'headerTooltipTemplate') {\n this.headerTooltipTemplateFn = this.templateParser(newProp.headerTooltipTemplate);\n }\n else {\n state.isLayout = true;\n if (this.eventWindow) {\n this.eventWindow.refresh();\n }\n }\n }\n };\n Schedule.prototype.onEventSettingsPropertyChanged = function (newProp, oldProp, state) {\n for (var _i = 0, _a = Object.keys(newProp); _i < _a.length; _i++) {\n var prop = _a[_i];\n switch (prop) {\n case 'dataSource':\n case 'query':\n case 'fields':\n case 'includeFiltersInQuery':\n this.initializeDataModule();\n state.isDataManager = true;\n break;\n case 'template':\n this.activeViewOptions.eventTemplate = newProp.template;\n this.appointmentTemplateFn = this.templateParser(this.activeViewOptions.eventTemplate);\n state.isDataManager = true;\n break;\n case 'enableTooltip':\n if (this.eventTooltip) {\n this.eventTooltip.destroy();\n this.eventTooltip = null;\n }\n if (newProp.enableTooltip) {\n this.eventTooltip = new EventTooltip(this);\n }\n break;\n case 'tooltipTemplate':\n this.eventTooltipTemplateFn = this.templateParser(this.eventSettings.tooltipTemplate);\n break;\n case 'resourceColorField':\n if (this.resourceBase) {\n this.resourceBase.setResourceCollection();\n }\n state.isDataManager = true;\n break;\n case 'editFollowingEvents':\n if (this.quickPopup) {\n this.quickPopup.refreshQuickDialog();\n }\n break;\n case 'allowAdding':\n case 'allowEditing':\n case 'allowDeleting':\n if (this.showHeaderBar && this.headerModule) {\n this.headerModule.updateAddIcon();\n }\n if (this.eventWindow) {\n this.eventWindow.refresh();\n }\n break;\n case 'spannedEventPlacement':\n case 'minimumEventDuration':\n case 'enableMaxHeight':\n case 'enableIndicator':\n this.refreshEvents(false);\n break;\n case 'ignoreWhitespace':\n state.isLayout = true;\n break;\n }\n }\n };\n Schedule.prototype.destroyHeaderModule = function () {\n if (this.headerModule) {\n this.headerModule.destroy();\n this.headerModule = null;\n }\n };\n Schedule.prototype.destroyPopups = function () {\n if (this.quickPopup) {\n this.quickPopup.destroy();\n this.quickPopup = null;\n }\n if (this.eventWindow) {\n this.eventWindow.destroy();\n this.eventWindow = null;\n }\n };\n /**\n * Allows to show the spinner on schedule at the required scenarios.\n *\n * @function showSpinner\n * @returns {void}\n */\n Schedule.prototype.showSpinner = function () {\n showSpinner(this.element);\n };\n /**\n * When the spinner is shown manually using `showSpinner` method, it can be hidden using this `hideSpinner` method.\n *\n * @function hideSpinner\n * @returns {void}\n */\n Schedule.prototype.hideSpinner = function () {\n hideSpinner(this.element);\n };\n /**\n * Sets different working hours on the required working days by accepting the required start and end time as well as the date collection\n * as its parameters.\n *\n * @function setWorkHours\n * @param {Date} dates Collection of dates on which the given start and end hour range needs to be applied.\n * @param {string} start Defines the work start hour.\n * @param {string} end Defines the work end hour.\n * @param {number} groupIndex Defines the resource index from last level.\n * @returns {void}\n */\n Schedule.prototype.setWorkHours = function (dates, start, end, groupIndex) {\n var cells = [];\n cells = this.getWorkHourCells(dates, start, end, groupIndex);\n addClass(cells, cls.WORK_HOURS_CLASS);\n };\n /**\n * Removes or resets different working hours on the required working days by accepting the required start and end time as well as the\n * date collection as its parameters.\n * if no parameters has been passed to this function, it will remove all the work hours.\n *\n * @param {Date} dates Collection of dates on which the given start and end hour range need to be applied.\n * @param {string} start Defines the work start hour.\n * @param {string} end Defines the work end hour.\n * @param {number} groupIndex Defines the resource index from last level.\n * @returns {void}\n */\n Schedule.prototype.resetWorkHours = function (dates, start, end, groupIndex) {\n if (dates === void 0) { dates = this.activeView.renderDates; }\n if (dates && start && end) {\n var cells = this.getWorkHourCells(dates, start, end, groupIndex);\n removeClass(cells, cls.WORK_HOURS_CLASS);\n }\n else {\n var workHourCells = [].slice.call(this.element.querySelectorAll('.' + cls.WORK_HOURS_CLASS));\n removeClass(workHourCells, cls.WORK_HOURS_CLASS);\n }\n };\n Schedule.prototype.getWorkHourCells = function (dates, start, end, groupIndex) {\n if (['Agenda', 'MonthAgenda', 'Month', 'TimelineMonth'].indexOf(this.currentView) > -1) {\n return [];\n }\n var startHour = this.getStartEndTime(start);\n var endHour = this.getStartEndTime(end);\n var tableEle = this.getContentTable();\n if (isNullOrUndefined(startHour) || isNullOrUndefined(endHour) || !tableEle) {\n return [];\n }\n startHour.setMilliseconds(0);\n endHour.setMilliseconds(0);\n var viewStartHour = this.activeView.getStartHour();\n if (startHour < viewStartHour) {\n startHour = viewStartHour;\n }\n var viewEndHour = this.activeView.getEndHour();\n if (endHour > viewEndHour) {\n endHour = viewEndHour;\n }\n var msMajorInterval = this.activeViewOptions.timeScale.interval * util.MS_PER_MINUTE;\n var msInterval = msMajorInterval / this.activeViewOptions.timeScale.slotCount;\n var startIndex = Math.round((startHour.getTime() - viewStartHour.getTime()) / msInterval);\n var endIndex = Math.ceil((endHour.getTime() - viewStartHour.getTime()) / msInterval);\n var tempStartIndex = startIndex;\n var tempEndIndex = endIndex;\n var cells = [];\n for (var _i = 0, dates_1 = dates; _i < dates_1.length; _i++) {\n var date = dates_1[_i];\n date = this.getDateTime(date);\n util.resetTime(date);\n var renderDates = this.activeView.renderDates;\n if (!isNullOrUndefined(groupIndex) && this.resourceBase && !this.activeView.isTimelineView()) {\n renderDates = this.resourceBase.lastResourceLevel[parseInt(groupIndex.toString(), 10)].renderDates;\n }\n var colIndex = this.getIndexOfDate(renderDates, date);\n if (colIndex >= 0) {\n if (this.activeView.isTimelineView()) {\n var slotsPerDay = Math.round((viewEndHour.getTime() - viewStartHour.getTime()) / msInterval);\n startIndex = tempStartIndex + (colIndex * slotsPerDay);\n endIndex = tempEndIndex + (colIndex * slotsPerDay);\n }\n for (var i = startIndex; i < endIndex; i++) {\n if (this.activeView.isTimelineView()) {\n var rowIndex = (!isNullOrUndefined(groupIndex)) ? groupIndex : 0;\n cells.push(tableEle.rows[parseInt(rowIndex.toString(), 10)].cells[parseInt(i.toString(), 10)]);\n }\n else {\n if (!isNullOrUndefined(groupIndex)) {\n var selector = '.' + cls.WORK_CELLS_CLASS + '[data-group-index=\"' + groupIndex + '\"]';\n var tds = [].slice.call(tableEle.rows[parseInt(i.toString(), 10)].querySelectorAll(selector));\n cells.push(tds[parseInt(colIndex.toString(), 10)]);\n }\n else {\n cells.push(tableEle.rows[parseInt(i.toString(), 10)].cells[parseInt(colIndex.toString(), 10)]);\n }\n }\n }\n }\n }\n return cells;\n };\n /**\n * Retrieves the start and end time information of the specific cell element.\n *\n * @function getCellDetails\n * @param {Element | Element[]} tdCol Accepts the single or collection of elements.\n * @returns {CellClickEventArgs} Object An object holding the startTime, endTime and all-day information along with the target HTML element will be returned.\n */\n Schedule.prototype.getCellDetails = function (tdCol) {\n var td = (tdCol instanceof Array) ? tdCol : [tdCol];\n var firstTd = getElement(td[0]);\n var lastTd = getElement(td.slice(-1)[0]);\n var startTime = this.getDateFromElement(firstTd);\n var endTime = this.getDateFromElement(lastTd);\n if (isNullOrUndefined(startTime) || isNullOrUndefined(endTime)) {\n return undefined;\n }\n var endDateFromColSpan = this.activeView.isTimelineView() && !isNullOrUndefined(lastTd.getAttribute('colSpan')) &&\n this.headerRows.length > 0;\n var duration = endDateFromColSpan ? parseInt(lastTd.getAttribute('colSpan'), 10) : 1;\n if (!this.activeViewOptions.timeScale.enable || endDateFromColSpan || lastTd.classList.contains(cls.ALLDAY_CELLS_CLASS) ||\n lastTd.classList.contains(cls.HEADER_CELLS_CLASS)) {\n endTime = util.addDays(new Date(endTime.getTime()), duration);\n }\n else {\n endTime = this.activeView.getEndDateFromStartDate(endTime);\n }\n var data = {\n startTime: startTime,\n endTime: endTime,\n isAllDay: this.isAllDayCell(firstTd),\n element: tdCol\n };\n var groupIndex = firstTd.getAttribute('data-group-index');\n if (!isNullOrUndefined(groupIndex)) {\n data.groupIndex = parseInt(groupIndex, 10);\n }\n return data;\n };\n /**\n * Retrieves the selected cell elements.\n *\n * @function getSelectedElements\n * @returns {Element[]} The elements of currently selected cells will be returned.\n */\n Schedule.prototype.getSelectedElements = function () {\n if (this.keyboardInteractionModule && this.keyboardInteractionModule.selectedCells.length > 0) {\n return this.keyboardInteractionModule.selectedCells;\n }\n return this.getSelectedCells();\n };\n /**\n * To get the resource collection\n *\n * @function getResourceCollections\n * @returns {ResourcesModel[]} Returns the resource collections\n */\n Schedule.prototype.getResourceCollections = function () {\n return this.resourceCollection;\n };\n /**\n * To set the resource collection\n *\n * @function setResourceCollections\n * @param {ResourcesModel[]} resourceCol Accepts the resource collections in ResourcesModel type\n * @returns {void}\n */\n Schedule.prototype.setResourceCollections = function (resourceCol) {\n this.setProperties({ resources: resourceCol }, false);\n };\n /**\n * Current View could be change based on the provided parameters.\n *\n * @function changeCurrentView\n * @param {View} viewName Accept the view in the viewCollections.\n * @param {number} viewIndex Accept the viewIndex in the viewCollections.\n * @returns {void}\n */\n Schedule.prototype.changeCurrentView = function (viewName, viewIndex) {\n var index = this.getViewIndex(viewName);\n var view = viewName.charAt(0).toLowerCase() + viewName.slice(1);\n var viewOptions = this.viewOptions[\"\" + view];\n if (viewOptions) {\n index = this.viewCollections.indexOf(viewOptions[viewIndex || 0]);\n }\n if (index === -1 || index === this.viewIndex) {\n return;\n }\n this.changeView(viewName, null, null, index);\n };\n /**\n * Return the current view Index.\n *\n * @function getCurrentViewIndex\n * @returns {number} Returns the view index\n */\n Schedule.prototype.getCurrentViewIndex = function () {\n return this.viewIndex;\n };\n /**\n * Retrieves the resource details based on the provided resource index.\n *\n * @param {number} index index of the resources at the last level.\n * @returns {ResourceDetails} Object An object holding the details of resource and resourceData.\n */\n Schedule.prototype.getResourcesByIndex = function (index) {\n if (this.resourceBase && this.resourceBase.lastResourceLevel) {\n if (index < 0 || index >= this.resourceBase.lastResourceLevel.length) {\n return undefined;\n }\n var data = this.resourceBase.lastResourceLevel[parseInt(index.toString(), 10)];\n var groupData = {};\n this.resourceBase.setResourceValues(groupData, index);\n return { resource: data.resource, resourceData: data.resourceData, groupData: groupData };\n }\n return undefined;\n };\n /**\n * This method allows to expand the resource that available on the scheduler.\n *\n * @function expandResource\n * @param {string | number} resourceId Accepts the resource id in either string or number type\n * @param {string} name Accepts the name of the resource collection\n * @returns {void}\n */\n Schedule.prototype.expandResource = function (resourceId, name) {\n if (this.activeView.isTimelineView() && this.resourceBase && this.resourceCollection.length > 1) {\n this.resourceBase.resourceExpand(resourceId, name, false);\n }\n };\n /**\n * This method allows to collapse the resource that available on the scheduler.\n *\n * @function collapseResource\n * @param {string | number} resourceId Accepts the resource id in either string or number type\n * @param {string} name Accepts the name of the resource collection\n * @returns {void}\n */\n Schedule.prototype.collapseResource = function (resourceId, name) {\n if (this.activeView.isTimelineView() && this.resourceBase && this.resourceCollection.length > 1) {\n this.resourceBase.resourceExpand(resourceId, name, true);\n }\n };\n /**\n * Scrolls the Schedule content area to the specified time.\n *\n * @function scrollTo\n * @param {string} hour Accepts the time value in the skeleton format of 'Hm'.\n * @param {Date} scrollDate Accepts the date object value.\n * @returns {void}\n */\n Schedule.prototype.scrollTo = function (hour, scrollDate) {\n if (this.activeView.scrollToDate && isNullOrUndefined(hour) && scrollDate) {\n this.activeView.scrollToDate(scrollDate);\n }\n else if (this.activeView.scrollToHour) {\n this.activeView.scrollToHour(hour, scrollDate);\n }\n };\n /**\n * This method allows scroll to the position of the any resources that available on the scheduler.\n * This method is applicable for without Agenda and Month agenda views of the schedule.\n *\n * @function scrollToResource\n * @param {string | number} resourceId Accepts the resource id in either string or number type\n * @param {string} groupName Accepts the name of the resource collection\n * @returns {void}\n */\n Schedule.prototype.scrollToResource = function (resourceId, groupName) {\n if (this.resourceBase && this.resourceBase.lastResourceLevel) {\n this.resourceBase.resourceScroll(resourceId, groupName);\n }\n };\n /**\n * Exports the Scheduler events to a calendar (.ics) file. By default, the calendar is exported with a file name `Calendar.ics`.\n * To change this file name on export, pass the custom string value as `fileName` to get the file downloaded with this provided name.\n *\n * @function exportToICalendar\n * @param {string} fileName Accepts the string value.\n * @param {Object[]} customData Accepts the collection of objects.\n * @returns {void}\n */\n Schedule.prototype.exportToICalendar = function (fileName, customData) {\n if (this.iCalendarExportModule) {\n this.iCalendarExportModule.initializeCalendarExport(fileName, customData);\n }\n else {\n throw Error('Inject ICalendarExport module');\n }\n };\n /**\n * Imports the events from an .ics file downloaded from any of the calendars like Google or Outlook into the Scheduler.\n * This method accepts the blob object or string format of an .ics file to be imported as a mandatory argument.\n *\n * @function importICalendar\n * @param {Blob | string} fileContent Accepts the file object or string format of an .ics file.\n * @returns {void}\n */\n Schedule.prototype.importICalendar = function (fileContent) {\n if (this.iCalendarImportModule) {\n this.iCalendarImportModule.initializeCalendarImport(fileContent);\n }\n else {\n throw Error('Inject ICalendarImport module');\n }\n };\n /**\n * Adds the newly created event into the Schedule dataSource.\n *\n * @function addEvent\n * @param {Object | Object[]} data Single or collection of event objects to be added into Schedule.\n * @returns {void}\n */\n Schedule.prototype.addEvent = function (data) {\n this.crudModule.addEvent(data);\n };\n /**\n * Generates the occurrences of a single recurrence event based on the provided event.\n *\n * @function generateEventOccurrences\n * @param {Object} event Accepts the parent recurrence event from which the occurrences are generated.\n * @param {Date} startDate Accepts the start date for the event occurrences. If not provided, the event's start date will be used.\n * @returns {Object[]} Returns the collection of occurrence event objects.\n */\n Schedule.prototype.generateEventOccurrences = function (event, startDate) {\n return (this.eventBase) ? this.eventBase.generateOccurrence(event, startDate) : [];\n };\n /**\n * Allows the Scheduler events data to be exported as an Excel file either in .xlsx or .csv file formats.\n * By default, the whole event collection bound to the Scheduler gets exported as an Excel file.\n * To export only the specific events of Scheduler, you need to pass the custom data collection as\n * a parameter to this `exportToExcel` method. This method accepts the export options as arguments such as fileName,\n * exportType, fields, customData, and includeOccurrences. The `fileName` denotes the name to be given for the exported\n * file and the `exportType` allows you to set the format of an Excel file to be exported either as .xlsx or .csv.\n * The custom or specific field collection of event dataSource to be exported can be provided through `fields` option\n * and the custom data collection can be exported by passing them through the `customData` option. There also exists\n * option to export each individual instances of the recurring events to an Excel file, by setting true or false to the\n * `includeOccurrences` option, denoting either to include or exclude the occurrences as separate instances on an exported Excel file.\n *\n * @function exportToExcel\n * @param {ExportOptions} excelExportOptions The export options to be set before start with exporting the Scheduler events to an Excel file.\n * @returns {void}\n */\n Schedule.prototype.exportToExcel = function (excelExportOptions) {\n if (this.excelExportModule) {\n this.excelExportModule.initializeExcelExport(excelExportOptions);\n }\n else {\n throw Error('Inject ExcelExport module');\n }\n };\n /**\n * Method allows to print the scheduler.\n *\n * @function print\n * @param {ScheduleModel} printOptions The export options to be set before start with exporting\n * the Scheduler events to the print window.\n * @returns {void}\n */\n Schedule.prototype.print = function (printOptions) {\n if (this.printModule) {\n this.printModule.print(printOptions);\n }\n else {\n throw Error('Inject Print module');\n }\n };\n /**\n * Updates the changes made in the event object by passing it as an parameter into the dataSource.\n *\n * @function saveEvent\n * @param {Object | Object[]} data Single or collection of event objects to be saved into Schedule.\n * @param {CurrentAction} currentAction Denotes the action that takes place either for editing occurrence or series.\n * The valid current action names are `EditOccurrence` or `EditSeries`.\n * @returns {void}\n */\n Schedule.prototype.saveEvent = function (data, currentAction) {\n this.crudModule.saveEvent(data, currentAction);\n };\n /**\n * Deletes the events based on the provided ID or event collection in the argument list.\n *\n * @function deleteEvent\n * @param {string | number | Object | Object[]} id Accepts the ID as string or number type or single or collection of the event object which needs to be removed from the Schedule.\n * @param {CurrentAction} currentAction Denotes the delete action that takes place either on occurrence or series events.\n * The valid current action names are `Delete`, `DeleteOccurrence` or `DeleteSeries`.\n * @returns {void}\n */\n Schedule.prototype.deleteEvent = function (id, currentAction) {\n this.crudModule.deleteEvent(id, currentAction);\n };\n /**\n * Retrieves the entire collection of events bound to the Schedule.\n *\n * @function getEvents\n * @param {Date} startDate Accepts the start date.\n * @param {Date} endDate Accepts te end date.\n * @param {boolean} includeOccurrences Accepts the boolean value to process the occurrence from recurrence series.\n * @returns {Object[]} Returns the collection of event objects from the Schedule.\n */\n Schedule.prototype.getEvents = function (startDate, endDate, includeOccurrences) {\n var eventCollections = [];\n if (includeOccurrences) {\n eventCollections = this.eventBase.getProcessedEvents();\n }\n else {\n eventCollections = this.eventsData;\n }\n if (startDate) {\n startDate = this.getDateTime(startDate);\n }\n if (endDate) {\n endDate = this.getDateTime(endDate);\n }\n eventCollections = this.eventBase.filterEventsByRange(eventCollections, startDate, endDate);\n return eventCollections;\n };\n /**\n * Retrieves the entire collection of block events bound to the Schedule.\n *\n * @function getBlockEvents\n * @param {Date} startDate Accepts the start date.\n * @param {Date} endDate Accepts te end date.\n * @param {boolean} includeOccurrences Accepts the boolean value to process the occurrence from recurrence series.\n * @returns {Object[]} Returns the collection of block event objects from the Schedule.\n */\n Schedule.prototype.getBlockEvents = function (startDate, endDate, includeOccurrences) {\n var eventCollections = [];\n if (includeOccurrences) {\n eventCollections = this.eventBase.getProcessedEvents(this.blockData);\n }\n else {\n eventCollections = this.blockData;\n }\n if (startDate) {\n startDate = this.getDateTime(startDate);\n }\n if (endDate) {\n endDate = this.getDateTime(endDate);\n }\n eventCollections = this.eventBase.filterEventsByRange(eventCollections, startDate, endDate);\n return eventCollections;\n };\n /**\n * Retrieves the occurrences of a single recurrence event based on the provided parent ID.\n *\n * @function getOccurrencesByID\n * @param {number} eventID ID of the parent recurrence data from which the occurrences are fetched.\n * @returns {Object[]} Returns the collection of occurrence event objects.\n */\n Schedule.prototype.getOccurrencesByID = function (eventID) {\n return this.eventBase.getOccurrencesByID(eventID);\n };\n /**\n * Retrieves all the occurrences that lies between the specific start and end time range.\n *\n * @function getOccurrencesByRange\n * @param {Date} startTime Denotes the start time range.\n * @param {Date} endTime Denotes the end time range.\n * @returns {Object[]} Returns the collection of occurrence event objects that lies between the provided start and end time.\n */\n Schedule.prototype.getOccurrencesByRange = function (startTime, endTime) {\n startTime = this.getDateTime(startTime);\n endTime = this.getDateTime(endTime);\n return this.eventBase.getOccurrencesByRange(startTime, endTime);\n };\n /**\n * Retrieves the dates that lies on active view of Schedule.\n *\n * @function getCurrentViewDates\n * @returns {Date[]} Returns the collection of dates.\n */\n Schedule.prototype.getCurrentViewDates = function () {\n return this.activeView ? this.activeView.renderDates : [];\n };\n /**\n * Set the recurrence editor instance from custom editor template.\n *\n * @function setRecurrenceEditor\n * @param {RecurrenceEditor} recurrenceEditor instance has passed to fetch the instance in event window.\n * @returns {void}\n */\n Schedule.prototype.setRecurrenceEditor = function (recurrenceEditor) {\n this.eventWindow.setRecurrenceEditor(recurrenceEditor);\n };\n /**\n * Get the maximum id of an event.\n *\n * @function getEventMaxID\n * @returns {number | string} Returns the maximum ID from scheduler data collections.\n */\n Schedule.prototype.getEventMaxID = function () {\n return this.eventBase.getEventMaxID();\n };\n /**\n * Get deleted occurrences from given recurrence series.\n *\n * @function getDeletedOccurrences\n * @param {string | number | Object} recurrenceData Accepts the parent ID of the event object or parent event object\n * @returns {Object[]} Returns the collection of deleted occurrence events.\n */\n Schedule.prototype.getDeletedOccurrences = function (recurrenceData) {\n return this.eventBase.getDeletedOccurrences(recurrenceData);\n };\n /**\n * Retrieves the events that lies on the current date range of the active view of Schedule.\n *\n * @function getCurrentViewEvents\n * @returns {Object[]} Returns the collection of events.\n */\n Schedule.prototype.getCurrentViewEvents = function () {\n return this.eventsProcessed;\n };\n /**\n * Refreshes the event dataSource. This method may be useful when the events alone in the schedule needs to be re-rendered.\n *\n * @function refreshEvents\n * @param {boolean} isRemoteRefresh Accepts the boolean to refresh data from remote or local\n * @returns {void}\n */\n Schedule.prototype.refreshEvents = function (isRemoteRefresh) {\n if (isRemoteRefresh === void 0) { isRemoteRefresh = true; }\n if (isRemoteRefresh) {\n if (this.dragAndDropModule) {\n this.dragAndDropModule.actionObj.action = '';\n removeClass([this.element], cls.EVENT_ACTION_CLASS);\n }\n this.crudModule.refreshDataManager();\n }\n else {\n if (this.uiStateValues) {\n this.uiStateValues.isPreventTimezone = true;\n }\n if (this.crudModule) {\n this.crudModule.refreshProcessedData();\n }\n if (this.uiStateValues) {\n this.uiStateValues.isPreventTimezone = false;\n }\n }\n };\n /**\n * Method to refresh the given Schedule templates\n *\n * @param {string} templateName Accepts the template name\n * @returns {void}\n */\n Schedule.prototype.refreshTemplates = function (templateName) {\n if (templateName) {\n this.resetTemplates([templateName]);\n }\n else {\n this.resetTemplates();\n }\n switch (templateName) {\n case 'eventTemplate':\n this.appointmentTemplateFn = this.templateParser(this.activeViewOptions.eventTemplate);\n this.refreshEvents(false);\n break;\n case 'dateHeaderTemplate':\n this.dateHeaderTemplateFn = this.templateParser(this.activeViewOptions.dateHeaderTemplate);\n this.activeView.refreshHeader();\n break;\n case 'dateRangeTemplate':\n this.dateRangeTemplateFn = this.templateParser(this.activeViewOptions.dateRangeTemplate);\n if (this.headerModule) {\n this.headerModule.refresh();\n }\n break;\n case 'resourceHeaderTemplate':\n this.resourceHeaderTemplateFn = this.templateParser(this.activeViewOptions.resourceHeaderTemplate);\n if (this.activeView.isTimelineView()) {\n this.activeView.refreshResourceHeader();\n }\n else {\n this.activeView.refreshHeader();\n }\n break;\n case 'quickInfoTemplates':\n if (this.quickPopup) {\n this.quickPopup.destroy();\n this.quickPopup = null;\n }\n this.quickPopup = new QuickPopups(this);\n this.quickInfoTemplatesHeaderFn = this.templateParser(this.quickInfoTemplates.header);\n this.quickInfoTemplatesContentFn = this.templateParser(this.quickInfoTemplates.content);\n this.quickInfoTemplatesFooterFn = this.templateParser(this.quickInfoTemplates.footer);\n break;\n case 'editorTemplate':\n this.destroyEditorWindow();\n this.editorTemplateFn = this.templateParser(this.editorTemplate);\n break;\n case 'editorHeaderTemplate':\n this.destroyEditorWindow();\n this.editorHeaderTemplateFn = this.templateParser(this.editorHeaderTemplate);\n break;\n case 'editorFooterTemplate':\n this.destroyEditorWindow();\n this.editorFooterTemplateFn = this.templateParser(this.editorFooterTemplate);\n break;\n case 'tooltipTemplate':\n case 'headerTooltipTemplate':\n if (this.eventTooltip) {\n this.eventTooltip.destroy();\n this.eventTooltip = null;\n }\n this.eventTooltip = new EventTooltip(this);\n this.eventTooltipTemplateFn = this.templateParser(this.eventSettings.tooltipTemplate);\n this.headerTooltipTemplateFn = this.templateParser(this.activeViewOptions.group.headerTooltipTemplate);\n break;\n default:\n this.initializeView(this.currentView);\n break;\n }\n };\n /**\n * Refreshes the Schedule layout without re-render.\n *\n * @function refreshLayout\n * @returns {void}\n */\n Schedule.prototype.refreshLayout = function () {\n this.onScheduleResize();\n if (this.headerModule) {\n this.headerModule.refresh();\n }\n if (this.eventWindow) {\n this.eventWindow.refresh();\n }\n };\n /**\n * To retrieve the appointment object from element.\n *\n * @function getEventDetails\n * @param {Element} element Denotes the event UI element on the Schedule.\n * @returns {Object} Returns the event details.\n */\n Schedule.prototype.getEventDetails = function (element) {\n element = getElement(element);\n var guid = element.getAttribute('data-guid');\n if (guid) {\n return this.eventBase.getEventByGuid(guid);\n }\n return {};\n };\n /**\n * To check whether the given time range slots are available for event creation or already occupied by other events.\n *\n * @function isSlotAvailable\n * @param {Date | Object} startTime Denotes the start time of the slot.\n * @param {Date} endTime Denotes the end time of the slot.\n * @param {number} groupIndex Defines the resource index from last level.\n * @returns {boolean} Returns true, if the slot that lies in the provided time range does not contain any other events.\n */\n Schedule.prototype.isSlotAvailable = function (startTime, endTime, groupIndex) {\n var _this = this;\n var eventStart;\n var eventEnd;\n var eventObj = this.activeEventData.event;\n if (startTime instanceof Date || typeof (startTime) === 'string') {\n eventStart = startTime;\n eventEnd = endTime;\n }\n else {\n eventObj = startTime;\n eventStart = startTime[this.eventFields.startTime];\n eventEnd = startTime[this.eventFields.endTime];\n if (this.resourceBase) {\n groupIndex = this.eventBase.getGroupIndexFromEvent(startTime);\n }\n }\n if (isNullOrUndefined(eventStart) || isNullOrUndefined(eventEnd)) {\n return true;\n }\n eventStart = this.getDateTime(eventStart);\n eventEnd = this.getDateTime(eventEnd);\n var eventCollection = this.eventBase.filterEvents(eventStart, eventEnd);\n if (!isNullOrUndefined(groupIndex) && this.resourceBase && this.resourceBase.lastResourceLevel.length > 0) {\n eventCollection =\n this.eventBase.filterEventsByResource(this.resourceBase.lastResourceLevel[parseInt(groupIndex.toString(), 10)], eventCollection);\n }\n if (eventObj) {\n if (eventObj.Guid) {\n eventCollection = eventCollection.filter(function (event) { return event.Guid !== eventObj.Guid; });\n }\n else {\n eventCollection = eventCollection.filter(function (event) {\n return event[_this.eventFields.id] !== eventObj[_this.eventFields.id];\n });\n }\n }\n return (eventCollection.length > 0) ? false : true;\n };\n /**\n * To manually open the event editor on specific time or on certain events.\n *\n * @function openEditor\n * @param {Object} data It can be either cell data or event data.\n * @param {CurrentAction} action Defines the action for which the editor needs to be opened such as either for new event creation or\n * for editing of existing events. The applicable action names that can be used here are `Add`, `Save`, `EditOccurrence`\n * and `EditSeries`.\n * @param {boolean} isEventData It allows to decide whether the editor needs to be opened with the clicked cell details or with the\n * passed event details.\n * @param {number} repeatType It opens the editor with the recurrence options based on the provided repeat type.\n * @returns {void}\n */\n Schedule.prototype.openEditor = function (data, action, isEventData, repeatType) {\n if (action === 'Add' && !isEventData) {\n data.startTime = this.getDateTime(data.startTime);\n data.endTime = this.getDateTime(data.endTime);\n if (!isNullOrUndefined(data.element)) {\n data.element = getElement(data.element);\n }\n }\n else {\n data[this.eventFields.startTime] = this.getDateTime(data[this.eventFields.startTime]);\n data[this.eventFields.endTime] = this.getDateTime(data[this.eventFields.endTime]);\n }\n this.currentAction = action;\n if (action !== 'Add') {\n this.activeEventData.event = data;\n }\n this.eventWindow.openEditor(data, action, isEventData, repeatType);\n };\n /**\n * To manually close the event editor window\n *\n * @function closeEditor\n * @returns {void}\n */\n Schedule.prototype.closeEditor = function () {\n if (this.eventWindow) {\n this.eventWindow.dialogClose();\n }\n };\n /**\n * To manually open the quick info popup based on cell or event details.\n *\n * @param {object} data Defines the cell or event data. If the data contains valid ID, it will open event quick info popup,\n * otherwise cell quick info popup displayed.\n * @returns {void}\n */\n Schedule.prototype.openQuickInfoPopup = function (data) {\n var _this = this;\n if (this.currentView === 'Year' || isNullOrUndefined(data)) {\n return;\n }\n if (isNullOrUndefined(data[this.eventFields.id])) {\n if (this.currentView === 'Agenda' || this.currentView === 'MonthAgenda' || isNullOrUndefined(this.activeView)) {\n return;\n }\n var cellData = {\n startTime: this.activeCellsData.startTime = this.getDateTime(data[this.eventFields.startTime]),\n endTime: this.activeCellsData.endTime = this.getDateTime(data[this.eventFields.endTime]),\n isAllDay: this.activeCellsData.isAllDay =\n !isNullOrUndefined(data[this.eventFields.isAllDay]) ? data[this.eventFields.isAllDay] : false\n };\n var startTime = this.activeView.getAdjustedDate(new Date(cellData.startTime));\n if (startTime) {\n var query = '.' + cls.WORK_CELLS_CLASS + '[data-date=\"' + startTime.getTime() + '\"]';\n if (this.activeViewOptions.group.resources.length > 0 && !this.uiStateValues.isGroupAdaptive\n && this.resourceBase && this.eventBase) {\n cellData.groupIndex = this.eventBase.getGroupIndexFromEvent(data);\n query = '.' + cls.WORK_CELLS_CLASS + '[data-date=\"' + startTime.getTime() + '\"][data-group-index=\"' + cellData.groupIndex + '\"]';\n }\n var workCell = this.element.querySelector(query);\n if (workCell) {\n workCell.focus();\n cellData.element = workCell;\n this.notify(events.cellClick, cellData);\n }\n }\n }\n else {\n var app = this.getCurrentViewEvents().filter(function (item) {\n return data[_this.eventFields.id] === item[_this.eventFields.id];\n });\n if (app.length <= 0) {\n return;\n }\n var selectEvent = app[0];\n if (data[this.eventFields.recurrenceRule]) {\n var occurence = app.filter(function (x) {\n return x[_this.eventFields.startTime].getTime() === data[_this.eventFields.startTime].getTime();\n });\n if (occurence.length > 0) {\n selectEvent = occurence[0];\n }\n }\n var element = this.element.querySelector('div[data-guid=\"' + selectEvent.Guid + '\"]');\n if (element) {\n this.eventBase.removeSelectedAppointmentClass();\n this.eventBase.addSelectedAppointments([element], false);\n this.activeEventData = { event: selectEvent, element: element };\n if (this.currentView === 'Agenda' || this.currentView === 'MonthAgenda') {\n addClass([this.activeEventData.element], cls.AGENDA_SELECTED_CELL);\n }\n this.notify(events.eventClick, this.activeEventData);\n }\n }\n };\n /**\n * To manually close the quick info popup\n *\n * @function closeQuickInfoPopup\n * @returns {void}\n */\n Schedule.prototype.closeQuickInfoPopup = function () {\n if (this.quickPopup) {\n this.quickPopup.quickPopupHide(true);\n }\n };\n /**\n * Closes the tooltip.\n * For example, when the context menu is opened for an event,\n * the tooltip can be closed by calling this method.\n *\n * @function closeTooltip\n * @returns {void}\n */\n Schedule.prototype.closeTooltip = function () {\n if (this.eventTooltip) {\n this.eventTooltip.close();\n }\n };\n /**\n * Select the resource based on group index in mobile mode.\n *\n * @param {number} groupIndex Defines the resource index based on last level.\n * @returns {void}\n */\n Schedule.prototype.selectResourceByIndex = function (groupIndex) {\n if (this.resourceBase && this.uiStateValues.isGroupAdaptive) {\n this.resourceBase.selectResourceByIndex(groupIndex);\n }\n };\n /**\n * Select the resources to the based on id.\n *\n * @param {string | number} id id of the resource defined in resources collection.\n * @param {string} name Name of the resource defined in resources collection.\n * @returns {number} Returns the group index\n */\n Schedule.prototype.getIndexFromResourceId = function (id, name) {\n if (this.resourceBase) {\n return this.resourceBase.getIndexFromResourceId(id, name);\n }\n return null;\n };\n /**\n * Adds the resources to the specified index.\n *\n * @param {Object | Object[]} resources Accepts the resource data in single or collection of data.\n * @param {string} name Name of the resource defined in resources collection.\n * @param {number} index Index or position where the resource should be added.\n * @returns {void}\n */\n Schedule.prototype.addResource = function (resources, name, index) {\n this.resourceBase.addResource(resources, name, index);\n };\n /**\n * Removes the specified resource.\n *\n * @param {string | string[] | number | number[]} resourceId Specifies the resource id to be removed.\n * @param {string} name Specifies the resource name from which the id should be referred.\n * @returns {void}\n */\n Schedule.prototype.removeResource = function (resourceId, name) {\n this.resourceBase.removeResource(resourceId, name);\n };\n /**\n * Destroys the Schedule component.\n *\n * @function destroy\n * @returns {void}\n */\n Schedule.prototype.destroy = function () {\n if (this.eventTooltip) {\n this.eventTooltip.destroy();\n this.eventTooltip = null;\n }\n this.destroyPopups();\n this.hideSpinner();\n this.unWireEvents();\n this.destroyHeaderModule();\n if (this.eventBase) {\n this.eventBase.destroy();\n this.eventBase = null;\n }\n if (this.workCellAction) {\n this.workCellAction.destroy();\n this.workCellAction = null;\n }\n if (this.inlineModule) {\n this.inlineModule.destroy();\n this.inlineModule = null;\n }\n if (this.keyboardInteractionModule) {\n this.keyboardInteractionModule.destroy();\n this.keyboardInteractionModule = null;\n }\n if (this.scrollModule) {\n this.scrollModule.destroy();\n this.scrollModule = null;\n }\n if (this.printModule) {\n this.printModule.destroy();\n }\n if (this.activeView) {\n this.resetTemplates();\n this.activeView.removeEventListener();\n this.activeView.destroy();\n this.activeView = null;\n }\n if (this.scheduleTouchModule) {\n this.scheduleTouchModule.destroy();\n this.scheduleTouchModule = null;\n }\n if (this.crudModule) {\n this.crudModule.destroy();\n this.crudModule = null;\n }\n if (this.dataModule) {\n this.dataModule.destroy();\n this.dataModule = null;\n }\n _super.prototype.destroy.call(this);\n var modules = [\n 'dayModule', 'weekModule', 'workWeekModule', 'monthModule', 'monthAgendaModule', 'yearModule', 'agendaModule',\n 'timelineViewsModule', 'timelineMonthModule', 'timelineYearModule', 'resizeModule', 'dragAndDropModule',\n 'excelExportModule', 'printModule', 'iCalendarExportModule', 'iCalendarImportModule', 'tzModule', 'eventsData',\n 'eventsProcessed', 'blockData', 'blockProcessed', 'uiStateValues', 'viewCollections', 'viewOptions', 'defaultLocale',\n 'localeObj', 'selectedElements', 'resourceCollection', 'editorTitles', 'eventFields', 'activeViewOptions',\n 'activeEventData', 'activeCellsData', 'renderModule'\n ];\n for (var _i = 0, modules_1 = modules; _i < modules_1.length; _i++) {\n var module = modules_1[_i];\n this[\"\" + module] = null;\n }\n util.removeChildren(this.element);\n var removeClasses = [cls.ROOT, cls.RTL, cls.DEVICE_CLASS, cls.MULTI_DRAG];\n if (this.cssClass) {\n removeClasses = removeClasses.concat(this.cssClass.split(' '));\n }\n removeClass([this.element], removeClasses);\n };\n __decorate([\n Property('auto')\n ], Schedule.prototype, \"width\", void 0);\n __decorate([\n Property('auto')\n ], Schedule.prototype, \"height\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"showHeaderBar\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"showTimeIndicator\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"allowSwiping\", void 0);\n __decorate([\n Collection([], ToolbarItem)\n ], Schedule.prototype, \"toolbarItems\", void 0);\n __decorate([\n Property('Week')\n ], Schedule.prototype, \"currentView\", void 0);\n __decorate([\n Property(['Day', 'Week', 'WorkWeek', 'Month', 'Agenda'])\n ], Schedule.prototype, \"views\", void 0);\n __decorate([\n Property(new Date())\n ], Schedule.prototype, \"selectedDate\", void 0);\n __decorate([\n Property(new Date(1900, 0, 1))\n ], Schedule.prototype, \"minDate\", void 0);\n __decorate([\n Property(new Date(2099, 11, 31))\n ], Schedule.prototype, \"maxDate\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"dateFormat\", void 0);\n __decorate([\n Property('Gregorian')\n ], Schedule.prototype, \"calendarMode\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"showWeekend\", void 0);\n __decorate([\n Property(0)\n ], Schedule.prototype, \"firstDayOfWeek\", void 0);\n __decorate([\n Property('FirstDay')\n ], Schedule.prototype, \"weekRule\", void 0);\n __decorate([\n Property([1, 2, 3, 4, 5])\n ], Schedule.prototype, \"workDays\", void 0);\n __decorate([\n Property(12)\n ], Schedule.prototype, \"monthsCount\", void 0);\n __decorate([\n Property('00:00')\n ], Schedule.prototype, \"startHour\", void 0);\n __decorate([\n Property('24:00')\n ], Schedule.prototype, \"endHour\", void 0);\n __decorate([\n Property(null)\n ], Schedule.prototype, \"timeFormat\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"enableHtmlSanitizer\", void 0);\n __decorate([\n Property(false)\n ], Schedule.prototype, \"enableAllDayScroll\", void 0);\n __decorate([\n Property(false)\n ], Schedule.prototype, \"enableAdaptiveUI\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"allowResizing\", void 0);\n __decorate([\n Complex({}, WorkHours)\n ], Schedule.prototype, \"workHours\", void 0);\n __decorate([\n Complex({}, TimeScale)\n ], Schedule.prototype, \"timeScale\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"allowKeyboardInteraction\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"allowDragAndDrop\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"dateHeaderTemplate\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"dateRangeTemplate\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"cellHeaderTemplate\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"dayHeaderTemplate\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"monthHeaderTemplate\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"cellTemplate\", void 0);\n __decorate([\n Property(false)\n ], Schedule.prototype, \"readonly\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"showQuickInfo\", void 0);\n __decorate([\n Property(false)\n ], Schedule.prototype, \"allowInline\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"allowMultiCellSelection\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"allowMultiRowSelection\", void 0);\n __decorate([\n Property(false)\n ], Schedule.prototype, \"quickInfoOnSelectionEnd\", void 0);\n __decorate([\n Property(false)\n ], Schedule.prototype, \"showWeekNumber\", void 0);\n __decorate([\n Property(false)\n ], Schedule.prototype, \"rowAutoHeight\", void 0);\n __decorate([\n Property(false)\n ], Schedule.prototype, \"allowMultiDrag\", void 0);\n __decorate([\n Property(0)\n ], Schedule.prototype, \"firstMonthOfYear\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"editorTemplate\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"editorHeaderTemplate\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"editorFooterTemplate\", void 0);\n __decorate([\n Complex({}, QuickInfoTemplates)\n ], Schedule.prototype, \"quickInfoTemplates\", void 0);\n __decorate([\n Property(7)\n ], Schedule.prototype, \"agendaDaysCount\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"hideEmptyAgendaDays\", void 0);\n __decorate([\n Property(true)\n ], Schedule.prototype, \"enableRecurrenceValidation\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"timezone\", void 0);\n __decorate([\n Complex({}, EventSettings)\n ], Schedule.prototype, \"eventSettings\", void 0);\n __decorate([\n Property(timezoneData)\n ], Schedule.prototype, \"timezoneDataSource\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"resourceHeaderTemplate\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"headerIndentTemplate\", void 0);\n __decorate([\n Complex({}, Group)\n ], Schedule.prototype, \"group\", void 0);\n __decorate([\n Collection([], Resources)\n ], Schedule.prototype, \"resources\", void 0);\n __decorate([\n Collection([], HeaderRows)\n ], Schedule.prototype, \"headerRows\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"cssClass\", void 0);\n __decorate([\n Property()\n ], Schedule.prototype, \"eventDragArea\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"created\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"destroyed\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"cellClick\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"cellDoubleClick\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"moreEventsClick\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"hover\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"select\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"actionBegin\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"actionComplete\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"actionFailure\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"navigating\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"renderCell\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"eventClick\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"eventDoubleClick\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"eventRendered\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"dataBinding\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"popupOpen\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"popupClose\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"dragStart\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"drag\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"dragStop\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"resizeStart\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"resizing\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"resizeStop\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"virtualScrollStart\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"virtualScrollStop\", void 0);\n __decorate([\n Event()\n ], Schedule.prototype, \"dataBound\", void 0);\n Schedule = __decorate([\n NotifyPropertyChanges\n ], Schedule);\n return Schedule;\n}(Component));\nexport { Schedule };\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nimport * as React from 'react';\nimport { Schedule } from '@syncfusion/ej2-schedule';\nimport { ComponentBase, applyMixins } from '@syncfusion/ej2-react-base';\n/**\n * `ScheduleComponent` represents the react Schedule.\n * ```tsx\n * \n * ```\n */\nvar ScheduleComponent = /** @class */ (function (_super) {\n __extends(ScheduleComponent, _super);\n function ScheduleComponent(props) {\n var _this = _super.call(this, props) || this;\n _this.initRenderCalled = false;\n _this.checkInjectedModules = true;\n _this.directivekeys = { 'views': 'view', 'resources': 'resource', 'headerRows': 'headerRow', 'toolbarItems': 'toolbarItem' };\n _this.statelessTemplateProps = null;\n _this.templateProps = null;\n _this.immediateRender = false;\n _this.portals = [];\n return _this;\n }\n ScheduleComponent.prototype.render = function () {\n if (((this.element && !this.initRenderCalled) || this.refreshing) && !this.isReactForeceUpdate) {\n _super.prototype.render.call(this);\n this.initRenderCalled = true;\n }\n else {\n return React.createElement('div', this.getDefaultAttributes(), [].concat(this.props.children, this.portals));\n }\n };\n return ScheduleComponent;\n}(Schedule));\nexport { ScheduleComponent };\napplyMixins(ScheduleComponent, [ComponentBase, React.Component]);\n","var __extends = (this && this.__extends) || (function () {\n var extendStatics = function (d, b) {\n 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 extendStatics(d, b);\n };\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})();\nimport { ComplexBase } from '@syncfusion/ej2-react-base';\n/**\n * `ResourcesDirective` represent a resource of the react Schedule.\n * It must be contained in a Schedule component(`SchduleComponent`).\n * ```tsx\n * \n * \n * \n * \n * \n * \n * ```\n */\nvar ResourceDirective = /** @class */ (function (_super) {\n __extends(ResourceDirective, _super);\n function ResourceDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ResourceDirective.moduleName = 'resource';\n return ResourceDirective;\n}(ComplexBase));\nexport { ResourceDirective };\nvar ResourcesDirective = /** @class */ (function (_super) {\n __extends(ResourcesDirective, _super);\n function ResourcesDirective() {\n return _super !== null && _super.apply(this, arguments) || this;\n }\n ResourcesDirective.propertyName = 'resources';\n ResourcesDirective.moduleName = 'resources';\n return ResourcesDirective;\n}(ComplexBase));\nexport { ResourcesDirective };\n","import { useRef, useContext } from 'react';\nimport { useLoaderData } from 'react-router-dom';\nimport {\n ScheduleComponent,\n Day,\n Week,\n Agenda,\n Inject,\n Resize,\n DragAndDrop,\n ResourcesDirective,\n ResourceDirective,\n ViewsDirective,\n ViewDirective,\n} from '@syncfusion/ej2-react-schedule';\nimport { DropDownList } from '@syncfusion/ej2-dropdowns';\nimport { createElement } from '@syncfusion/ej2-base';\n\nimport { AuthContext } from '../utils/Context';\nimport {\n addAppointment,\n editAppointment,\n deleteAppointment\n} from '../utils/API';\n\nexport default function Calendar() {\n const scheduleObj = useRef(null);\n const { providers, patients, appointmentData } = useLoaderData();\n const useAuth = () => useContext(AuthContext);\n const auth = useAuth();\n const user = auth.getUser();\n const userTypeId = user.userTypeId;\n\n const colors = [\n '#2e7e7e',\n '#3b82f6',\n '#f0c419',\n '#7f88b6',\n '#ef5d60',\n '#4dd184',\n '#fbcfbd',\n '#ce596d',\n ];\n\n const locationData = user.practice.locations;\n const patientData = patients.map(patient => {\n return {\n patientName: `${patient.patientFname} ${patient.patientLname}`,\n patientId: patient.patientId,\n }\n });\n\n const mapColorsToEmployeesByGroupId = (employeeData, colors) => {\n // Extract unique GroupIds from employeeData\n const uniqueGroupIds = [\n ...new Set(providers.map((employee) => employee.GroupId)),\n ];\n\n // Create a mapping of GroupId to color\n const groupColorMap = uniqueGroupIds.reduce((acc, groupId, index) => {\n acc[groupId] = colors[index % colors.length]; // Loop through colors if there are more groupIds than colors\n return acc;\n }, {});\n\n // Add color property to each employee based on their GroupId\n return providers.map((employee) => {\n return { ...employee, Color: groupColorMap[employee.GroupId] };\n });\n }\n\n const employeeData = mapColorsToEmployeesByGroupId(providers, colors);\n const fieldsData = {\n id: 'Id',\n description: { name: 'Description', title: 'Chief Complaint' },\n startTime: { name: 'StartTime', title: 'Start' },\n endTime: { name: 'EndTime', title: 'End' },\n };\n\n const saveAppointment = async appointment => {\n await addAppointment(appointment);\n };\n\n const updateAppointment = async appointment => {\n await editAppointment(appointment);\n }\n\n const getEmployeeName = value => {\n return value.resourceData[value.resource.textField];\n };\n\n // const getEmployeeImage = value => {\n // return getEmployeeName(value).toLowerCase();\n // };\n\n const getEmployeeDesignation = value => {\n return value.resourceData.Designation;\n };\n\n const resourceHeaderTemplate = props => {\n return (\n
\n
\n {/*
*/}\n
{getEmployeeName(props)}
\n
\n {getEmployeeDesignation(props)}\n
\n
\n
\n );\n };\n\n const template = props => {\n return (\n
\n
\n
Patient: {props.Subject}

\n
\n From : {props.StartTime.toLocaleString()}\n
\n
\n To      : \n {props.EndTime.toLocaleString()}\n

\n {props.Description ? (\n
Description: {props.Description}
\n ) : (\n ''\n )}\n
\n
\n );\n };\n\n const handleActionComplete = actionComplete => {\n if (actionComplete.requestType === 'eventChanged') {\n const updatedEvent = actionComplete.changedRecords[0];\n updatedEvent.Subject = patientData.filter(item => item.patientId === updatedEvent.patientId)[0].patientName;\n updateAppointment(updatedEvent);\n } else if (actionComplete.requestType === 'eventCreated') {\n const newEvent = actionComplete.addedRecords[0];\n newEvent.Subject = patientData.filter(item => item.patientId === newEvent.patientId)[0].patientName;\n saveAppointment(newEvent);\n } else if (actionComplete.requestType === 'eventRemoved') {\n const deletedAppointment = actionComplete.deletedRecords[0];\n deleteAppointment(deletedAppointment);\n }\n };\n\n const onPopupOpen = args => {\n if (args.type === 'Editor') {\n // Create required custom elements only on initial rendering\n if (!args.element.querySelector('.custom-field-row')) {\n // Custom Location Field\n let row = createElement('div', { className: 'custom-field-row' });\n let formElement = args.element.querySelector('.e-schedule-form');\n formElement.firstChild.insertBefore(\n row,\n formElement.firstChild.firstChild\n );\n let container = createElement('div', {\n className: 'custom-field-container',\n });\n let inputEle = createElement('input', {\n className: 'e-field',\n attrs: { name: 'LocationId' },\n });\n container.appendChild(inputEle);\n row.appendChild(container);\n let dropDownList = new DropDownList({\n dataSource: locationData,\n fields: { text: 'locationName', value: 'locationId' },\n value: args.data.locationId,\n floatLabelType: 'Always',\n placeholder: 'Location',\n });\n dropDownList.appendTo(inputEle);\n inputEle.setAttribute('name', 'locationId');\n }\n\n if (!args.element.querySelector('.custom-patients')) {\n // Custom Patient Field\n let row = createElement('div', { className: 'custom-patients' });\n let formElement = args.element.querySelector('.e-schedule-form');\n formElement.firstChild.insertBefore(\n row,\n formElement.firstChild.firstChild\n );\n let container = createElement('div', {\n className: 'custom-field-container',\n });\n let inputEle = createElement('input', {\n className: 'e-field',\n attrs: { name: 'PatientId' },\n });\n container.appendChild(inputEle);\n row.appendChild(container);\n let dropDownList = new DropDownList({\n dataSource: patientData,\n fields: { text: 'patientName', value: 'patientId' },\n value: args.data.patientId,\n floatLabelType: 'Always',\n placeholder: 'Patient',\n });\n dropDownList.appendTo(inputEle);\n inputEle.setAttribute('name', 'patientId');\n }\n }\n };\n\n const viewMode = userTypeId === 3 ? 'Agenda' : 'Day';\n const readOnlyMode = userTypeId === 3 ? true : false;\n const eventSettings = userTypeId === 3 ? {\n dataSource: appointmentData,\n fields: fieldsData,\n enableTooltip: true,\n tooltipTemplate: template,\n } : {\n dataSource: appointmentData,\n fields: fieldsData\n };\n const injectableServices = userTypeId === 3\n ? [Day, Week, Agenda]\n : [Day, Week, Agenda, DragAndDrop, Resize];\n const renderViewDirectives = () => {\n return (\n \n \n \n \n \n );\n }\n\n return (\n
\n \n \n \n \n {renderViewDirectives()}\n \n \n
\n );\n}\n","import { useRouteError } from 'react-router-dom';\nimport Bugsnag from '@bugsnag/js';\n\nfunction ErrorPage() {\n const error = useRouteError();\n console.error(error);\n const bugsnagErr = new Error(JSON.stringify(error));\n Bugsnag.notify(bugsnagErr);\n return (\n
\n

Oops!

\n

Sorry, an unexpected error has occurred.

\n

\n { error.status } {error.statusText}\n

\n { error.message || null }\n
\n );\n}\n\nexport default ErrorPage;\n","import { useContext, useEffect } from 'react';\nimport { useNavigate } from 'react-router-dom';\nimport { AuthContext } from '../utils/Context';\n\nfunction RequireAuth({ children }) {\n const useAuth = () => useContext(AuthContext);\n const auth = useAuth();\n const navigate = useNavigate();\n const token = auth.getToken();\n const user = auth.getUser();\n\n useEffect(() => {\n const isTokenExpired = (token) => {\n const currentTime = Date.now() / 1000;\n const decodedToken = JSON.parse(atob(token.split('.')[1]));\n return decodedToken.exp < currentTime;\n };\n\n if (!token) {\n navigate('/signup', { replace: true });\n }\n\n if (token && isTokenExpired(token)) {\n navigate('/signup', { replace: true });\n }\n\n if (user && user.payment === 0) {\n navigate('/billing', { replace: true });\n }\n }, [token, user, navigate]);\n\n return children;\n}\n\nexport default RequireAuth;\n","import { AuthContext } from './Context';\nimport axios from 'axios';\n\nconst baseURL =\n process.env.REACT_APP_IS_PROD === 'true'\n ? 'https://ribbon-api-prod.azurewebsites.net/api'\n : 'https://ribbon-api-dev.azurewebsites.net/api';\n\n// singleton without direct access from outside the module.\nconst authStore = {\n signup: async (user) => {\n const url = `${baseURL}/account`;\n const payload = {\n userEmail: user.email,\n userPassword: user.password,\n userFirstName: user.firstName,\n userLastName: user.lastName,\n userPhone: user.phone,\n userTypeId: user.usertype_id,\n };\n try {\n const response = await axios.post(url, payload);\n const user = response.data;\n const token = response.data.userToken;\n delete user['userToken'];\n\n sessionStorage.setItem('token', token);\n sessionStorage.setItem('user', JSON.stringify(user));\n\n authStore.token = token;\n } catch (error) {\n console.error('Signup Error:', error);\n return Promise.reject(error);\n }\n },\n\n login: async (email, password) => {\n const url = `${baseURL}/Authenticate/login`;\n const payload = {\n userEmail: email,\n userPassword: password,\n };\n try {\n const response = await axios.post(url, payload);\n const user = response.data;\n const token = response.data.userToken;\n delete user['userToken'];\n\n sessionStorage.setItem('token', token);\n sessionStorage.setItem('user', JSON.stringify(user));\n\n authStore.token = token;\n } catch (error) {\n console.error('Login Error:', error);\n return Promise.reject(error);\n }\n },\n\n forgotPassword: async (email) => {\n const url = `${baseURL}/Account/forgot`;\n const payload = {\n userEmail: email,\n };\n try {\n const response = await axios.post(url, payload);\n return response;\n } catch (error) {\n console.error('Forgot Password Error:', error);\n return Promise.reject(error);\n }\n },\n\n resetPassword: async (password, token) => {\n const url = `${baseURL}/Account/resetpassword`;\n const payload = {\n password,\n emailToken: token,\n };\n try {\n const response = await axios.post(url, payload);\n return response;\n } catch (error) {\n console.error('Validate Email Token Error:', error);\n return Promise.reject(error);\n }\n },\n\n signout(callback) {\n callback();\n },\n};\n\nexport default function AuthProvider({ children }) {\n const getToken = () => {\n const token = sessionStorage.getItem('token') || null;\n return token;\n }\n\n const getUser = () => {\n const user = sessionStorage.getItem('user') || null;\n return JSON.parse(user);\n };\n\n const updateUser = (user) => {\n sessionStorage.setItem('user', JSON.stringify(user));\n };\n\n const signup = (user) => {\n return authStore.signup(user);\n };\n\n const login = (email, password) => {\n return authStore.login(email, password);\n };\n\n const logout = (callback) => {\n return authStore.signout(() => {\n sessionStorage.removeItem('token');\n sessionStorage.removeItem('user');\n setTimeout(callback, 100);\n });\n };\n\n const forgotPassword = (email) => {\n return authStore.forgotPassword(email);\n };\n\n const resetPassword = (password, token) => {\n return authStore.resetPassword(password, token);\n }\n\n const value = {\n getUser,\n getToken,\n updateUser,\n signup,\n login,\n logout,\n forgotPassword,\n resetPassword,\n };\n\n return {children};\n}\n","import { useState } from 'react';\nimport { LoadingContext } from './Context';\n\nconst LoadingProvider = ({ children }) => {\n const [isLoading, setIsLoading] = useState(false);\n\n return (\n \n {children}\n \n );\n}\n\nexport default LoadingProvider;","import React from 'react';\nimport ReactDOM from 'react-dom/client';\nimport { createBrowserRouter, RouterProvider } from 'react-router-dom';\nimport { ToastContainer } from 'react-toastify';\nimport Bugsnag from '@bugsnag/js';\nimport BugsnagPluginReact from '@bugsnag/plugin-react';\nimport BugsnagPerformance from '@bugsnag/browser-performance';\nimport { registerLicense } from '@syncfusion/ej2-base';\n\nimport Root from './pages/Root';\nimport Patient from './pages/Patients';\nimport Signup from './pages/Signup';\nimport Hello from './pages/Hello';\nimport Feedback from './pages/Feedback';\nimport Billing from './pages/Billing';\nimport Settings from './pages/Settings';\nimport Reset from './pages/Reset';\nimport Calendar from './pages/Calendar';\n\nimport ErrorPage from './components/ErrorPage';\nimport RequireAuth from './components/RequireAuth';\nimport Loader from './components/Loader/Loader';\n\nimport AuthProvider from './utils/AuthProvider';\nimport LoadingProvider from './utils/LoadingProvider';\nimport { getPatients, getProviders, getAppointments } from './utils/API';\n\nimport 'react-toastify/dist/ReactToastify.css';\nimport './index.css';\n\n// import reportWebVitals from './reportWebVitals';\n\nregisterLicense(\n 'ORg4AjUWIQA/Gnt2UVhhQlVFfV5AQmBIYVp/TGpJfl96cVxMZVVBJAtUQF1hTX5Sd0FiUX5ddHJVTmJe'\n);\n\nBugsnag.start({\n apiKey: 'd55381296b44e6cca800ae8b423a4a12',\n plugins: [new BugsnagPluginReact()],\n});\nBugsnagPerformance.start({ apiKey: 'd55381296b44e6cca800ae8b423a4a12' });\n\nconst ErrorBoundary = Bugsnag.getPlugin('react').createErrorBoundary(React);\n\n// isLoading, loadRouteData, routeDataLoadingWrapper are\n// used to load data for a route before rendering it.\n// hacky cause react-router? gotta find a better way to do this\nlet isLoading = false;\n\nconst routeDataLoadingWrapper = (element) => {\n if (isLoading) return ;\n return element;\n}\n\nconst loadRouteData = (apiFunction) => {\n return async () => {\n isLoading = true;\n try {\n const data = await apiFunction();\n isLoading = false;\n return data;\n } catch (error) {\n isLoading = false;\n throw new Error(error);\n }\n }\n}\n\nconst router = createBrowserRouter([\n {\n path: '/',\n element: (\n \n \n \n \n ),\n errorElement: ,\n children: [\n {\n path: 'patients/',\n element: routeDataLoadingWrapper(),\n loader: async () => {\n const patients = await loadRouteData(getPatients)();\n return { patients };\n }\n },\n {\n path: 'calendar',\n element: routeDataLoadingWrapper(),\n loader: async () => {\n const providers = await loadRouteData(getProviders)();\n const patients = await loadRouteData(getPatients)();\n const appointmentData = await loadRouteData(getAppointments)();\n return { providers, patients, appointmentData };\n }\n },\n {\n path: 'hello',\n element: ,\n },\n {\n path: 'feedback',\n element: ,\n },\n {\n path: 'settings',\n element: ,\n },\n ],\n },\n {\n path: '/signup',\n element: ,\n errorElement: ,\n },\n {\n path: '/billing',\n element: ,\n errorElement: ,\n },\n {\n path: '/reset',\n element: ,\n errorElement: ,\n },\n]);\n\nconst root = ReactDOM.createRoot(document.getElementById('root'));\nroot.render(\n \n \n \n \n \n \n \n);\n\n// If you want to start measuring performance in your app, pass a function\n// to log results (for example: reportWebVitals(console.log))\n// or send to an analytics endpoint. Learn more: https://bit.ly/CRA-vitals\n// reportWebVitals();\n"],"names":["module","exports","define","_$breadcrumbTypes_8","_$reduce_17","arr","fn","accum","val","i","len","length","_$filter_12","item","concat","_$includes_13","x","_$isArray_14","obj","Object","prototype","toString","call","_hasDontEnumBug","propertyIsEnumerable","_dontEnums","_$keys_15","prop","result","hasOwnProperty","push","_$intRange_24","min","max","Infinity","value","parseInt","_$listOfFunctions_25","f","_$stringWithLength_26","defaultErrorTypes","unhandledExceptions","unhandledRejections","_$config_5","schema","apiKey","defaultValue","message","validate","appVersion","undefined","appType","autoDetectErrors","enabledErrorTypes","allowPartialObject","providedKeys","defaultKeys","k","onError","onSession","onBreadcrumb","endpoints","notify","sessions","autoTrackSessions","enabledReleaseStages","releaseStage","maxBreadcrumbs","enabledBreadcrumbTypes","join","maybeType","context","user","key","metadata","logger","method","redactedKeys","s","test","plugins","p","load","featureFlags","feature","name","_$assign_11","target","arguments","source","_$map_16","_$config_1","window","location","host","_extends","console","debug","getPrefixedConsole","consoleLog","log","consoleMethod","bind","_$Breadcrumb_3","Breadcrumb","type","timestamp","Date","this","toJSON","metaData","root","factory","amd","_$stackframe_34","StackFrame","_isNumber","n","isNaN","parseFloat","isFinite","_capitalize","str","charAt","toUpperCase","substring","_getter","booleanProps","numericProps","stringProps","arrayProps","props","getArgs","args","setArgs","v","TypeError","getEvalOrigin","evalOrigin","setEvalOrigin","getFunctionName","getFileName","getLineNumber","getColumnNumber","Boolean","j","Number","String","_$errorStackParser_31","ErrorStackParser","FIREFOX_SAFARI_STACK_REGEXP","CHROME_IE_STACK_REGEXP","SAFARI_NATIVE_CODE_REGEXP","parse","error","stacktrace","parseOpera","stack","match","parseV8OrIE","parseFFOrSafari","Error","extractLocation","urlLike","indexOf","parts","exec","replace","split","filter","line","map","sanitizedLine","tokens","slice","locationParts","pop","functionName","fileName","lineNumber","columnNumber","functionNameRegex","matches","e","parseOpera9","parseOpera11","parseOpera10","lineRE","lines","argsRaw","functionCall","shift","_$errorStackParser_10","_$safeJsonStringify_30","data","replacer","space","opts","redactedPaths","JSON","stringify","prepareObjForSerialization","MAX_DEPTH","MAX_EDGES","MIN_PRESERVED_DEPTH","REPLACEMENT_NODE","isError","o","throwsMessage","err","find","haystack","needle","isDescendent","paths","path","shouldRedact","patterns","toLowerCase","__isArray_30","safelyGetProp","seen","edges","visit","edgesExceeded","fResult","eResult","aResult","add","existingFeatures","existingFeatureKeys","variant","existingIndex","merge","newFeatures","toEventApi","_ref","flag","featureFlag","clear","features","featuresIndex","_$featureFlagDelegate_18","_$hasStack_19","__isError_32","_$iserror_20","__add_22","state","section","keyOrObj","maybeVal","_updates","updates","__clear_22","_$metadataDelegate_22","get","_$stackGenerator_33","StackGenerator","backtrace","maxStackSize","curr","callee","Array","RegExp","$1","caller","Event","errorClass","errorMessage","handledState","originalError","defaultHandledState","groupingHash","_handledState","severity","unhandled","app","device","request","breadcrumbs","threads","_metadata","_features","_featuresIndex","_user","_session","errors","createBugsnagError","__type","addMetadata","getMetadata","clearMetadata","addFeatureFlag","addFeatureFlags","getFeatureFlags","clearFeatureFlag","clearFeatureFlags","getUser","setUser","id","email","payloadVersion","exceptions","er","severityReason","session","formatStackframe","frame","file","normaliseFunctionName","code","inProject","ensureString","getCauseStack","cause","getStacktrace","errorFramesToSkip","backtraceFramesToSkip","create","maybeError","tolerateNonErrors","component","event","_normaliseError","normaliseError","internalFrames","makeSerialisable","_event$errors","causes","normalisedCauses","apply","createAndLogInputError","reason","verb","warn","hasNecessaryFields","_$Event_6","_$asyncEvery_7","cb","index","next","_$callbackRunner_9","callbacks","onCallbackError","runMaybeAsyncCallback","ret","then","setTimeout","_$syncCallbackRunner_23","callbackArg","callbackType","ignore","cbs","_$pad_29","num","size","substr","env","self","globalCount","mimeTypesLength","navigator","mimeTypes","clientId","userAgent","_$fingerprint_28","c","blockSize","base","discreteValues","Math","pow","randomBlock","random","safeCounter","cuid","getTime","fingerprint","_$cuid_27","_$Session_35","Session","startedAt","_handled","_unhandled","events","handled","_track","__add_4","__clear_4","__merge_4","noop","Client","configuration","internalPlugins","notifier","_this","_notifier","_config","_schema","_delivery","sendSession","sendEvent","_logger","info","_plugins","_breadcrumbs","_context","_cbs","sp","b","_configure","pl","_loadPlugin","_depth","getContext","setContext","plugin","configSchema","_reduce","config","generateConfigErrorMessage","getPlugin","_setDelivery","d","startSession","version","_sessionDelegate","addOnError","front","removeOnError","_addOnSessionPayload","addOnSession","removeOnSession","addOnBreadcrumb","removeOnBreadcrumb","pauseSession","resumeSession","leaveBreadcrumb","crumb","_isBreadcrumbTypeEnabled","types","postReportCallback","_notify","_this2","originalSeverity","shouldSend","unhandledOverridden","rawInput","_$Client_4","EVENT_REDACTION_PATHS","_$jsonPayload_21","payload","_$delivery_36","client","win","url","getApiUrl","body","req","XDomainRequest","onload","onerror","toFixed","open","send","endpoint","isoDate","matchPageProtocol","protocol","encodeURIComponent","_matchPageProtocol","pageProtocol","_$delivery_37","XMLHttpRequest","onreadystatechange","readyState","DONE","status","setRequestHeader","toISOString","appStart","reset","_$app_38","now","duration","_$context_39","pathname","BUGSNAG_ANONYMOUS_ID_KEY","getDeviceId","storage","localStorage","getItem","_$cuid_41","setItem","_$device_40","nav","locale","browserLanguage","systemLanguage","userLanguage","language","screen","orientation","document","documentElement","clientWidth","clientHeight","generateAnonymousId","collectUserIp","setDefaultUserId","time","eventOrSession","_$request_44","href","_$session_45","sessionDelegate","sessionClient","_pausedSession","_$clientIp_46","clientIp","_$consoleBreadcrumbs_47","CONSOLE_LOG_METHODS","original","_len","_key","arg","stringified","_restore","MAX_LINE_LENGTH","MAX_SCRIPT_LENGTH","_$inlineScriptContent_48","doc","trackInlineScripts","originalLocation","html","DOMContentLoaded","attachEvent","getHtml","outerHTML","prev","_lastScript","updateLastScript","script","getCurrentScript","currentScript","scripts","getElementsByTagName","addSurroundingCode","htmlLines","zeroBasedLine","start","end","cleanUrl","content","innerHTML","_setTimeout","__proxy","__traceOriginalScript","eventTargetCallbackAccessor","callbackAccessor","alsoCallOriginal","cba","__trace__","replacement","isEventHandlerObj","handleEvent","_$interactionBreadcrumbs_49","addEventListener","targetText","targetSelector","getNodeText","getNodeSelector","trimStart","trimEnd","el","text","textContent","innerText","tagName","className","querySelectorAll","parentNode","childNodes","_$navigationBreadcrumbs_50","drop","oldURL","from","relativeLocation","to","newURL","getCurrentState","history","replaceState","wrapHistoryFn","pushState","a","createElement","search","hash","stateChangeToMetadata","title","currentPath","prevState","orig","resetEventCount","BREADCRUMB_TYPE","_$networkBreadcrumbs_51","_ignoredUrls","ignoredUrls","monkeyPatchXMLHttpRequest","monkeyPatchFetch","handleFetchSuccess","response","handleFetchError","nativeOpen","requestSetupKey","handleXHRError","handleXHRLoad","removeEventListener","fetch","polyfill","oldFetch","_arguments","urlOrRequest","options","Promise","resolve","reject","_$throttle_52","maxEvents","strip","_$stripQueryString_53","allFrames","_strip","_$onerror_54","prevOnError","messageOrEvent","lineNo","charNo","decorateStack","detail","extraParameters","culprit","isActualNumber","errorCharacter","_$unhandledRejection_55","listener","evt","isBluebird","fixBluebirdStacktrace","_event$addMetadata","onunhandledrejection","promise","__schema_2","Bugsnag","_client","createClient","bugsnag","isStarted","m","_$notifier_2","require","pad","_$src_1","BugsnagPluginReact","globalReact","React","lazy","ErrorBoundary","createClass","createErrorBoundary","BugsnagPluginReactLazyInitializer","formatComponentStack","_React$Component","handleClearError","_assertThisInitialized","_inheritsLoose","_proto2","setState","componentDidCatch","componentStack","render","FallbackComponent","clearError","children","Component","chars","lookup","Uint8Array","charCodeAt","encode","arraybuffer","bytes","base64","decode","encoded1","encoded2","encoded3","encoded4","bufferLength","ArrayBuffer","_regeneratorRuntime","_objectSpread","_asyncToGenerator","_slicedToArray","_createForOfIteratorHelper","_createClass","_classCallCheck","_inherits","_createSuper","_wrapNativeSuper","core","StatusError","_Error","_super","res","buffer","params","captureStackTrace","statusMessage","statusCode","json","arrayBuffer","defineProperty","headers","_step","_iterator","entries","done","_step$value","statusCodes","encoding","baseurl","mark","_callee","_url","_headers","parsed","resp","_args","wrap","URL","username","Authorization","btoa","password","isView","Headers","sent","has","abrupt","stop","_x","_x2","encodings","Set","mkrequest","forEach","msg","startsWith","isArray","isCallable","tryToString","$TypeError","argument","isConstructor","$String","isPrototypeOf","it","Prototype","isObject","toIndexedObject","toAbsoluteIndex","lengthOfArrayLike","createMethod","IS_INCLUDES","$this","fromIndex","O","includes","uncurryThis","ITERATOR","wellKnownSymbol","SAFE_CLOSING","called","iteratorWithReturn","SKIP_CLOSING","ITERATION_SUPPORT","object","stringSlice","TO_STRING_TAG_SUPPORT","classofRaw","TO_STRING_TAG","$Object","CORRECT_ARGUMENTS","tag","tryGet","hasOwn","ownKeys","getOwnPropertyDescriptorModule","definePropertyModule","keys","getOwnPropertyDescriptor","fails","F","constructor","getPrototypeOf","DESCRIPTORS","createPropertyDescriptor","bitmap","enumerable","configurable","writable","descriptor","createNonEnumerableProperty","global","documentAll","all","IS_HTMLDDA","EXISTS","CSSRuleList","CSSStyleDeclaration","CSSValueList","ClientRectList","DOMRectList","DOMStringList","DOMTokenList","DataTransferItemList","FileList","HTMLAllCollection","HTMLCollection","HTMLFormElement","HTMLSelectElement","MediaList","MimeTypeArray","NamedNodeMap","NodeList","PaintRequestList","Plugin","PluginArray","SVGLengthList","SVGNumberList","SVGPathSegList","SVGPointList","SVGStringList","SVGTransformList","SourceBufferList","StyleSheetList","TextTrackCueList","TextTrackList","TouchList","IS_DENO","IS_NODE","Deno","Pebble","classof","process","versions","v8","$Error","TEST","V8_OR_CHAKRA_STACK_ENTRY","IS_V8_OR_CHAKRA_STACK","dropEntries","prepareStackTrace","clearErrorStack","ERROR_STACK_INSTALLABLE","C","isForced","wrapConstructor","NativeConstructor","Wrapper","FORCED","USE_NATIVE","VIRTUAL_PROTOTYPE","sourceProperty","targetProperty","nativeProperty","resultProperty","TARGET","GLOBAL","STATIC","stat","PROTO","proto","nativeSource","targetPrototype","forced","dontCallGetSet","sham","real","NATIVE_BIND","FunctionPrototype","Function","Reflect","aCallable","that","getDescriptor","PROPER","CONFIGURABLE","uncurryThisWithBind","aFunction","variable","namespace","getMethod","isNullOrUndefined","Iterators","anObject","getIteratorMethod","usingIterator","iteratorMethod","V","P","func","check","globalThis","toObject","getBuiltIn","store","functionToString","inspectSource","set","NATIVE_WEAK_MAP","shared","sharedKey","hiddenKeys","OBJECT_ALREADY_INITIALIZED","WeakMap","facade","STATE","enforce","getterFor","TYPE","ArrayPrototype","$documentAll","empty","construct","constructorRegExp","INCORRECT_TO_STRING","isConstructorModern","isConstructorLegacy","detection","normalize","POLYFILL","NATIVE","string","USE_SYMBOL_AS_UID","$Symbol","isArrayIteratorMethod","getIterator","iteratorClose","Result","stopped","ResultPrototype","iterable","unboundFunction","iterator","iterFn","step","AS_ENTRIES","IS_RECORD","IS_ITERATOR","INTERRUPTED","condition","callFn","kind","innerResult","innerError","IteratorPrototype","setToStringTag","returnThis","IteratorConstructor","NAME","ENUMERABLE_NEXT","$","IS_PURE","FunctionName","createIteratorConstructor","setPrototypeOf","defineBuiltIn","IteratorsCore","PROPER_FUNCTION_NAME","CONFIGURABLE_FUNCTION_NAME","BUGGY_SAFARI_ITERATORS","KEYS","VALUES","ENTRIES","Iterable","DEFAULT","IS_SET","CurrentIteratorPrototype","methods","KEY","getIterationMethod","KIND","defaultIterator","IterablePrototype","INCORRECT_VALUES_NAME","nativeIterator","anyNativeIterator","values","PrototypeOfArrayIteratorPrototype","arrayIterator","toLength","ceil","floor","trunc","toggle","node","macrotask","Queue","IS_IOS","IS_IOS_PEBBLE","IS_WEBOS_WEBKIT","MutationObserver","WebKitMutationObserver","queueMicrotaskDescriptor","microtask","queue","flush","parent","domain","exit","head","enter","nextTick","createTextNode","observe","characterData","PromiseCapability","$$resolve","$$reject","$default","activeXDocument","definePropertiesModule","enumBugKeys","documentCreateElement","PROTOTYPE","SCRIPT","IE_PROTO","EmptyConstructor","scriptTag","LT","NullProtoObjectViaActiveX","write","close","temp","parentWindow","NullProtoObject","ActiveXObject","iframeDocument","iframe","JS","style","display","appendChild","src","contentWindow","NullProtoObjectViaIFrame","Properties","V8_PROTOTYPE_DEFINE_BUG","objectKeys","defineProperties","IE8_DOM_DEFINE","toPropertyKey","$defineProperty","$getOwnPropertyDescriptor","ENUMERABLE","WRITABLE","Attributes","current","propertyIsEnumerableModule","internalObjectKeys","getOwnPropertyNames","getOwnPropertySymbols","CORRECT_PROTOTYPE_GETTER","ObjectPrototype","names","$propertyIsEnumerable","NASHORN_BUG","uncurryThisAccessor","aPossiblePrototype","setter","CORRECT_SETTER","__proto__","input","pref","valueOf","getOwnPropertyNamesModule","getOwnPropertySymbolsModule","NativePromiseConstructor","IS_BROWSER","V8_VERSION","NativePromisePrototype","SPECIES","SUBCLASSING","NATIVE_PROMISE_REJECTION_EVENT","PromiseRejectionEvent","FORCED_PROMISE_CONSTRUCTOR","PROMISE_CONSTRUCTOR_SOURCE","GLOBAL_CORE_JS_PROMISE","FakePromise","CONSTRUCTOR","REJECTION_EVENT","newPromiseCapability","promiseCapability","checkCorrectnessOfIteration","tail","entry","defineBuiltInAccessor","CONSTRUCTOR_NAME","Constructor","TAG","SET_METHOD","uid","defineGlobalProperty","SHARED","mode","copyright","license","aConstructor","defaultConstructor","S","toIntegerOrInfinity","requireObjectCoercible","CONVERT_TO_STRING","pos","first","second","position","codeAt","symbol","Symbol","$location","defer","channel","port","arraySlice","validateArgumentsLength","setImmediate","clearImmediate","Dispatch","MessageChannel","counter","ONREADYSTATECHANGE","run","runner","eventListener","globalPostMessageDefer","postMessage","handler","port2","port1","onmessage","importScripts","removeChild","integer","IndexedObject","number","isSymbol","ordinaryToPrimitive","TO_PRIMITIVE","exoticToPrim","toPrimitive","postfix","NATIVE_SYMBOL","passed","required","WellKnownSymbolsStore","createWellKnownSymbol","withoutSetter","copyConstructorProperties","installErrorCause","installErrorStack","iterate","normalizeStringArgument","$AggregateError","isInstance","AggregateErrorPrototype","errorsArray","arity","AggregateError","addToUnscopables","InternalStateModule","defineIterator","createIterResultObject","ARRAY_ITERATOR","setInternalState","getInternalState","iterated","Arguments","newPromiseCapabilityModule","perform","allSettled","capability","promiseResolve","remaining","alreadyCalled","$promiseResolve","PROMISE_STATICS_INCORRECT_ITERATION","PROMISE_ANY_ERROR","any","alreadyResolved","alreadyRejected","onRejected","unsafe","Internal","OwnPromiseCapability","nativeThen","setSpecies","anInstance","speciesConstructor","task","hostReportErrors","PromiseConstructorDetection","PROMISE","NATIVE_PROMISE_SUBCLASSING","getInternalPromiseState","PromiseConstructor","PromisePrototype","newGenericPromiseCapability","DISPATCH_EVENT","createEvent","dispatchEvent","UNHANDLED_REJECTION","isThenable","callReaction","reaction","exited","ok","fail","rejection","onHandleUnhandled","isReject","notified","reactions","onUnhandled","initEvent","isUnhandled","emit","unwrap","internalReject","internalResolve","wrapper","executor","onFulfilled","PromiseWrapper","onFinally","isFunction","race","r","PromiseConstructorWrapper","CHECK_WRAPPER","STRING_ITERATOR","point","DOMIterables","COLLECTION_NAME","Collection","CollectionPrototype","targetLength","sign","output","abs","default","_interopRequireDefault","_default","getDefaultOptions","defaultOptions","setDefaultOptions","newOptions","_index","_index2","_index3","_index4","_index5","_index6","_index7","dayPeriodEnum","formatTimezoneShort","offset","dirtyDelimiter","absOffset","hours","minutes","delimiter","formatTimezoneWithOptionalMinutes","formatTimezone","G","date","token","localize","era","getUTCFullYear","width","y","signedYear","year","ordinalNumber","unit","Y","signedWeekYear","weekYear","twoDigitYear","R","isoWeekYear","u","Q","quarter","getUTCMonth","q","M","month","L","w","week","I","isoWeek","getUTCDate","D","dayOfYear","E","dayOfWeek","getUTCDay","day","localDayOfWeek","weekStartsOn","isoDayOfWeek","dayPeriodEnumValue","getUTCHours","dayPeriod","B","h","H","K","getUTCMinutes","getUTCSeconds","X","_localize","timezoneOffset","_originalDate","getTimezoneOffset","z","t","originalDate","T","numberOfDigits","milliseconds","getUTCMilliseconds","fractionalSeconds","dateLongFormatter","pattern","formatLong","timeLongFormatter","dateTimeFormat","matchResult","datePattern","timePattern","dateTime","utcDate","UTC","getFullYear","getMonth","getDate","getHours","getMinutes","getSeconds","getMilliseconds","setUTCFullYear","dirtyDate","setUTCMonth","setUTCHours","startOfYearTimestamp","difference","MILLISECONDS_IN_DAY","diff","round","MILLISECONDS_IN_WEEK","fourthOfJanuaryOfNextYear","startOfNextYear","fourthOfJanuaryOfThisYear","startOfThisYear","_ref2","_ref3","_options$firstWeekCon","_options$locale","_options$locale$optio","_defaultOptions$local","_defaultOptions$local2","firstWeekContainsDate","RangeError","firstWeekOfNextYear","firstWeekOfThisYear","isProtectedDayOfYearToken","protectedDayOfYearTokens","isProtectedWeekYearToken","protectedWeekYearTokens","throwProtectedError","format","setUTCDate","fourthOfJanuary","_options$weekStartsOn","firstWeek","dirtyNumber","NaN","dirtyAmount","amount","dirtyFormatStr","_ref4","_options$locale2","_options$locale2$opti","_ref5","_ref6","_ref7","_options$locale3","_options$locale3$opti","_defaultOptions$local3","_defaultOptions$local4","_index9","formatStr","_index10","_index11","_index8","formatterOptions","longFormattingTokensRegExp","firstCharacter","longFormatter","formattingTokensRegExp","matched","escapedStringRegExp","doubleQuoteRegExp","cleanEscapedString","formatter","useAdditionalWeekYearTokens","useAdditionalDayOfYearTokens","unescapedLatinCharacterRegExp","_typeof2","defaultWidth","formats","dirtyIndex","valuesArray","formattingValues","defaultFormattingWidth","_defaultWidth","_width","argumentCallback","matchPattern","matchPatterns","defaultMatchWidth","matchedString","parsePatterns","defaultParseWidth","array","predicate","findIndex","findKey","valueCallback","rest","parseResult","parsePattern","formatDistanceLocale","lessThanXSeconds","one","other","xSeconds","halfAMinute","lessThanXMinutes","xMinutes","aboutXHours","xHours","xDays","aboutXWeeks","xWeeks","aboutXMonths","xMonths","aboutXYears","xYears","overXYears","almostXYears","count","tokenValue","addSuffix","comparison","full","long","medium","short","formatRelativeLocale","lastWeek","yesterday","today","tomorrow","nextWeek","_date","_baseDate","_options","rem100","narrow","abbreviated","wide","am","pm","midnight","noon","morning","afternoon","evening","night","formatDistance","formatRelative","argStr","_pDefer","EventAsPromise","defers","upcomingDeferred","upcoming","deferred","_toConsumableArray","_set","_get","_possibleConstructorReturn","_getPrototypeOf","_defineProperty","_typeof","_interopDefaultLegacy","currentErrorHandler","_toConsumableArray__default","_set__default","_get__default","_assertThisInitialized__default","_inherits__default","_possibleConstructorReturn__default","_getPrototypeOf__default","_wrapNativeSuper__default","_defineProperty__default","_classCallCheck__default","_createClass__default","_typeof__default","Derived","hasNativeReflectConstruct","Proxy","_isNativeReflectConstruct","Super","NewTarget","enumerableOnly","symbols","sym","getOwnPropertyDescriptors","assertType","anyToString","currentWarnHandler","Global","Warning","_a","_console","_len2","_key2","_b","InitEventWasCalledWhileDispatching","FalsyWasAssignedToCancelBubble","TruthyWasAssignedToReturnValue","NonCancelableEventWasCanceled","CanceledInPassiveListener","EventListenerWasDuplicated","OptionWasIgnored","InvalidEventListener","InvalidAttributeHandler","eventInitDict","internalDataMap","bubbles","cancelable","composed","currentTarget","stopPropagationFlag","stopImmediatePropagationFlag","canceledFlag","inPassiveListenerFlag","dispatchFlag","timeStamp","NONE","CAPTURING_PHASE","AT_TARGET","BUBBLING_PHASE","setCancelFlag","retv","DOMException","ErrorCodeMap","INDEX_SIZE_ERR","DOMSTRING_SIZE_ERR","HIERARCHY_REQUEST_ERR","WRONG_DOCUMENT_ERR","INVALID_CHARACTER_ERR","NO_DATA_ALLOWED_ERR","NO_MODIFICATION_ALLOWED_ERR","NOT_FOUND_ERR","NOT_SUPPORTED_ERR","INUSE_ATTRIBUTE_ERR","INVALID_STATE_ERR","SYNTAX_ERR","INVALID_MODIFICATION_ERR","NAMESPACE_ERR","INVALID_ACCESS_ERR","VALIDATION_ERR","TYPE_MISMATCH_ERR","SECURITY_ERR","NETWORK_ERR","ABORT_ERR","URL_MISMATCH_ERR","QUOTA_EXCEEDED_ERR","TIMEOUT_ERR","INVALID_NODE_TYPE_ERR","DATA_CLONE_ERR","defineErrorCodeProperties","_loop","_i","EventWrapper","_Event","_super2","_thisSuper","_thisSuper2","cancelBubble","defaultPrevented","internalDataMap$1","_i2","defineRedirectDescriptor","getWrapperClassOf","$$1","stopPropagation","stopImmediatePropagation","preventDefault","returnValue","wrapperClassCache","originalEvent","BaseEventWrapper","originalPrototype","CustomEventWrapper","_BaseEventWrapper","_super3","_i3","defineWrapper","isCapture","flags","isPassive","isOnce","isRemoved","invokeCallback","callback","thrownError","ErrorEvent","reportError","findIndexOfListener","capture","listeners","_i4","addListener","list","passive","once","signal","signalListener","removeListener","createListener","cow","removeListenerAt","disableCow","setRemoved","_","splice","ensureListenerList","listenerMap","attrCallback","attrListener","EventTarget","internalDataMap$2","type0","callback0","options0","$$2","_normalizeAddOptions","assertCallback","normalizeAddOptions","aborted","warnDuplicate","_normalizeOptions","normalizeOptions","eventData","_i5","keys$1","_i6","getEventAttributeValue","setEventAttributeValue","defineEventAttributeCallback","upsertEventAttributeListener","listMap","removeEventAttributeListener","defineEventAttribute","_eventClass","defineCustomEventTarget","CustomEventTarget","_EventTarget","_super4","_i7","setErrorHandler","setWarningHandler","reactIs","REACT_STATICS","childContextTypes","contextType","contextTypes","defaultProps","displayName","getDefaultProps","getDerivedStateFromError","getDerivedStateFromProps","mixins","propTypes","KNOWN_STATICS","MEMO_STATICS","compare","TYPE_STATICS","getStatics","isMemo","ForwardRef","Memo","objectPrototype","hoistNonReactStatics","targetComponent","sourceComponent","blacklist","inheritedComponent","targetStatics","sourceStatics","for","g","l","$$typeof","A","AsyncMode","ConcurrentMode","ContextConsumer","ContextProvider","Element","Fragment","Lazy","Portal","Profiler","StrictMode","Suspense","isAsyncMode","isConcurrentMode","isContextConsumer","isContextProvider","isElement","isForwardRef","isFragment","isLazy","isPortal","isProfiler","isStrictMode","isSuspense","isValidElementType","typeOf","safeIsNaN","areInputsEqual","newInputs","lastInputs","memoizeOne","resultFn","isEqual","cache","memoized","newArgs","lastThis","lastArgs","lastResult","Exports_1","Events","instance","attachConsoleListener","ConsoleLoggingListener","__exportStar","fs","__importStar","LogLevel_1","Contracts_1","logLevelFilter","LogLevel","None","privLogPath","privEnableConsoleOutput","privLogLevelFilter","Contracts","throwIfNullOrUndefined","openSync","enableOutput","onEvent","eventType","writeFileSync","Debug","Info","logFragments","eventTime","valueToLog","Exports_2","AudioStreamFormat_1","FileAudioSource","filename","audioSourceId","privStreams","privHeaderEnd","privId","createNoDashGuid","privEvents","EventSource","privSource","Blob","privFilename","privAudioFormatPromise","readHeader","turnOn","lastIndexOf","errorMsg","AudioSourceErrorEvent","AudioSourceInitializingEvent","AudioSourceReadyEvent","attach","audioNodeId","AudioStreamNodeAttachingEvent","upload","stream","AudioStreamNodeAttachedEvent","detach","__awaiter","readEnded","AudioStreamNodeDetachedEvent","turnOff","read","streamId","isClosed","AudioSourceOffEvent","bitspersample","bitsPerSample","channelcount","channels","connectivity","Unknown","manufacturer","model","samplerate","samplesPerSec","File","header","headerResult","Deferred","processHeader","view","DataView","getWord","fromCharCode","getUint8","formatSize","getInt32","channelCount","getUint16","sampleRate","getUint32","maxHeaderSize","AudioStreamFormat","getWaveFormatPCM","reader","FileReader","readAsArrayBuffer","byteOffset","byteLength","AudioStreamNodeErrorEvent","stream_1","ChunkedArrayBufferStream","avgBytesPerSec","chunk","processFile_1","buff","writeStreamChunk","isEnd","timeReceived","ev","fileBuffer","e_1","MicAudioSource","privRecorder","deviceId","mediaStream","privOutputChunkSize","AUDIOFORMAT","privMediaStream","privIsClosing","privInitializeDeferral","createAudioContext","typedError","getUserMedia","webkitGetUserMedia","mozGetUserMedia","msGetUserMedia","mediaDevices","constraints","successCallback","errorCallback","catch","active","audio","video","privContext","resume","listen","destroyAudioContext","getMicrophoneLabel","label","Microphones","setProperty","AudioWorkletSourceURLPropertyName","setWorkletUrl","defaultMicrophoneName","privMicrophoneLabel","microphoneDeviceId","getTracks","getSettings","enumerateDevices","devices","devices_1","record","AudioStreamFormatImpl","getAudioContext","releaseMediaResources","hasClose","suspend","getDefaultInputFormat","PcmRecorder","stopInputOnRelease","privStopInputOnRelease","outputStream","waveStreamEncoder","RiffPcmEncoder","micInput","createMediaStreamSource","attachScriptProcessor","scriptNode","bufferSize","createScriptProcessor","audioSampleRate","onaudioprocess","inputFrame","inputBuffer","getChannelData","waveFrame","connect","destination","privMediaResources","scriptProcessorNode","audioWorklet","privSpeechProcessorScript","blob","createObjectURL","addModule","workletNode","AudioWorkletNode","disconnect","track","ProxyInfo","proxyHostName","proxyPort","proxyUserName","proxyPassword","privProxyHostName","privProxyPort","privProxyUserName","privProxyPassword","fromParameters","parameters","getProperty","PropertyId","SpeechServiceConnection_ProxyHostName","SpeechServiceConnection_ProxyPort","SpeechServiceConnection_ProxyUserName","SpeechServiceConnection_ProxyPassword","fromRecognizerConfig","ReplayableAudioNode","audioSource","bytesPerSecond","privBuffers","privReplayOffset","privLastShrinkOffset","privBufferStartOffset","privBufferSerial","privBufferedBytes","privReplay","privLastChunkAcquiredTime","privAudioNode","privBytesPerSecond","offsetToSeek","bytesToSeek","retVal","BufferEntry","replay","shrinkBuffers","findTimeAtOffset","startOffset","endOffset","serial","RestConfigBase","privDefaultRequestOptions","privDefaultParams","privRestErrors","Accept","ignoreCache","timeout","authInvalidSubscriptionKey","authInvalidSubscriptionRegion","invalidArgs","invalidCreateJoinConversationResponse","invalidParticipantRequest","permissionDeniedConnect","permissionDeniedConversation","permissionDeniedParticipant","permissionDeniedSend","permissionDeniedStart","apiVersion","authorization","clientAppId","contentTypeKey","correlationId","languageCode","nickname","profanity","requestId","roomId","sessionToken","subscriptionKey","subscriptionRegion","RestRequestType","bent_1","__importDefault","RestMessageAdapter","configParams","ArgumentNullError","privHeaders","privIgnoreCache","extractHeaderValue","headerKey","headerValue","trim","headerMap_1","setHeaders","uri","queryParams","postData","responseReceivedDeferral","requestCommand","handleRestResponse","statusText","Post","sendRequest","Delete","WebsocketMessageAdapter_1","WebsocketConnection","queryParameters","messageFormatter","proxyInfo","enableCompression","connectionId","privIsDisposed","privMessageFormatter","paramName","headerName","privUri","privConnectionMessageAdapter","WebsocketMessageAdapter","dispose","isDisposed","net","tls","agent_base_1","https_proxy_agent_1","ws_1","HeaderNames_1","privConnectionEvents","privConnectionId","privConnectionState","ConnectionState","privEnableCompression","HeaderNames","ConnectionId","privLastErrorReceived","Disconnected","privConnectionEstablishDeferral","privCertificateValidatedDeferral","Connecting","WebSocket","forceNpmWebSocket","perMessageDeflate","agent","getAgent","toLocaleLowerCase","privWebsocketClient","binaryType","privReceivingMessageQueue","privDisconnectDeferral","privSendMessageQueue","processSendQueue","BackgroundEvent","ConnectionOpenResponse","ConnectionStartEvent","onopen","Connected","ConnectionEstablishedEvent","ConnectionErrorEvent","onclose","ConnectionClosedEvent","onClose","networkReceivedTime","deferred_1","enqueueFromPromise","rawMessage","RawWebsocketMessage","MessageType","Binary","toConnectionMessage","connectionMessage","ConnectionMessageReceivedEvent","Text","messageSendStatusDeferral","messageSendDeferral","fromConnectionMessage","Message","sendStatusDeferral","dequeue","sendRawMessage","sendItem","ConnectionMessageSentEvent","isWebsocketOpen","closeReason","drainAndDispose","pendingSendItem","sendError_1","Agent","createConnection","HostName","Port","GetProxyAgent","httpProxyOptions","UserName","Buffer","Password","requestOCSP","socketPromise","__assign","servername","baseAgent_1","socket","secureEndpoint","OPEN","AddedLmIntent","modelImpl","intentName","AgentConfig","toJsonString","iPrivConfig","IAuthentication_1","CognitiveSubscriptionKeyAuthentication","privAuthInfo","AuthInfo","AuthKey","authFetchEventId","fetchOnExpiry","CognitiveTokenAuthentication","fetchCallback","fetchOnExpiryCallback","privFetchCallback","privFetchOnExpiryCallback","privTokenPrefix","QueryParameterNames_1","ConnectionFactoryBase","getHostSuffix","region","setCommonUrlParams","Map","Speech_SegmentationSilenceTimeoutMs","QueryParameterNames","SegmentationSilenceTimeoutMs","SpeechServiceConnection_EnableAudioLogging","EnableAudioLogging","SpeechServiceConnection_EndSilenceTimeoutMs","EndSilenceTimeoutMs","SpeechServiceConnection_InitialSilenceTimeoutMs","InitialSilenceTimeoutMs","SpeechServiceResponse_PostProcessingOption","Postprocessing","SpeechServiceResponse_ProfanityOption","Profanity","SpeechServiceResponse_RequestWordLevelTimestamps","EnableWordLevelTimestamps","SpeechServiceResponse_StablePartialResultThreshold","StableIntermediateThreshold","parameterName","propertyId","setUrlParameter","serviceProperties","ServicePropertiesPropertyName","propId","ConversationServiceRecognizer","authentication","connectionFactory","recognizerConfig","recognizer","handleSpeechPhraseMessage","textBody","__generator","handleSpeechPhrase","handleSpeechHypothesisMessage","handleSpeechHypothesis","__extends","processTypeSpecificMessages","handleRecognizedCallback","sessionId","handleRecognizingCallback","processSpeechMessages","processed","cancelRecognition","cancellationReason","errorCode","simple","SimpleSpeechPhrase","fromJSON","resultReason","EnumTranslation","implTranslateRecognitionResult","RecognitionStatus","resultProps","PropertyCollection","SpeechServiceResponse_JsonResult","simpleOffset","Offset","privRequestSession","currentTurnAudioOffset","onPhraseRecognized","Duration","ResultReason","Canceled","cancelReason","implTranslateCancelResult","cancellationErrorCode","implTranslateCancelErrorCode","cancelRecognitionLocal","implTranslateErrorDetails","isSpeechEnded","NoMatch","InitialSilenceTimeout","privRecognizerConfig","OutputFormatPropertyName","OutputFormat","Simple","SpeechRecognitionResult","DisplayText","Language","LanguageDetectionConfidence","SpeakerId","detailed","DetailedSpeechPhrase","totalOffset","offsetCorrectedJson","getJsonWithCorrectedOffsets","hypothesis","SpeechHypothesis","RecognizingSpeech","onHypothesis","ServiceRecognizerBase","Exports_3","ConnectionFactoryBase_1","Exports_4","DialogConnectionFactory","authInfo","applicationId","Conversation_ApplicationId","dialogType","Conversation_DialogType","SpeechServiceConnection_Region","SpeechServiceConnection_RecoLanguage","requestTurnStatus","Conversation_Request_Bot_Status_Messages","Format","RequestBotStatusMessages","BotId","DialogServiceConfig","DialogTypes","CustomCommands","CustomCommandsAppId","resourceInfix","BotFramework","SpeechServiceConnection_Endpoint","hostSuffix","SpeechServiceConnection_Host","BaseUrl","endsWith","ApiKey","WebsocketMessageFormatter","DialogEvents_1","AudioOutputFormat_1","DialogServiceTurnStateManager_1","ActivityResponsePayload_1","SpeechConnectionMessage_Internal_1","DialogServiceAdapter","dialogServiceConnector","privDialogServiceConnector","receiveMessageOverride","receiveDialogMessageOverride","privTurnStateManager","DialogServiceTurnStateManager","recognizeOverride","recoMode","listenOnce","postConnectImplOverride","connection","dialogConnectImpl","configConnectionOverride","configConnection","disconnectOverride","privDisconnect","privDialogAudioSource","agentConfigSent","privLastResult","connectionEvents","connectionEvent","terminateMessageLoop","sendMessage","interactionGuid","createGuid","agentMessage","interactionId","messagePayload","agentMessageJson","fetchConnection","SpeechConnectionMessage","CancellationReason","CancellationErrorCode","NoError","messageType","speechPhrase","TooManyRequests","fireEventForResult","recognized","SpeechRecognitionEventArgs","recognizing","keyword","SpeechKeyword","Status","RecognizedKeyword","event_1","resultId","audioRequestId","turn","GetTurn","binaryBody","audioStream","endAudioStream","handleResponseMessage","defferal","isRecognizing","onStopRecognizing","canceled","properties","CancellationErrorCodePropertyName","cancelEvent","SpeechRecognitionCanceledEventArgs","privSuccessCallback","_c","recognitionMode","privErrorCallback","startNewRecognition","listenForServiceTelemetry","Speech_SessionId","conPromise","connectImpl","preAudioPromise","sendPreAudioMessages","deviceInfo","audioNode","onAudioSourceAttachCompleted","SpeechServiceConfig","Context","ConnectionFailure","error_1","sessionStartEventArgs","SessionEventArgs","privRecognizer","sessionStarted","sendAudio","RuntimeError","privConnectionLoop","startMessageLoop","communicationCustodian","loop","turnRequestId","audioSessionReqId","StartTurn","onServiceTurnStartResponse","speechStartDetected","SpeechDetected","speechStartEventArgs","RecognitionEventArgs","speechStopDetected","onServiceRecognized","speechStopEventArgs","speechEndDetected","turnEndRequestId","CompleteTurn","sessionStopEventArgs","onServiceTurnEndResponse","isContinuousRecognition","sessionStopped","serviceEvents","ServiceEvent","error_3","sendSpeechServiceConfig","serialize","sendAgentConfig","addKeywordContextData","sendSpeechContext","sendAgentContext","sendWaveHeader","agentConfig","botInfo","commandsCulture","SendingAgentContextMessageEvent","agentConfigJson","guid","speechActivityTemplate","Conversation_Speech_Activity_Template","agentContext","channelData","agentContextJson","serviceResult","responseMessage","responsePayload","responseRequestId","activityPayload","ActivityPayloadResponse","conversationId","updateAgentConfig","pullAudioOutputStream","processActivityPayload","AudioOutputFormatImpl","fromSpeechSynthesisOutputFormatString","SpeechServiceConnection_SynthOutputFormat","activity","ActivityReceivedEventArgs","activityReceived","turnStatusReceived","TurnStatusReceivedEventArgs","keywordPropertyValue","keywordOffsetPropertyValue","keywordDurationPropertyValue","keywords","keywordOffsets","keywordDurations","keywordDefinitionArray","definition","speechContext","setSection","clientDetectedKeywords","onReject","action","AudioOutputStream_1","DialogServiceTurnState","manager","privRequestId","privIsCompleted","privAudioStream","privTurnManager","resetTurnEndTimeout","audioFormat","messageDataStreamType","MessageDataStreamType","TextToSpeechAudio","AudioOutputStream","createPullStream","getDefaultOutputFormat","complete","privTimeoutToken","clearTimeout","Error_1","DialogServiceTurnState_1","privTurnMap","InvalidOperationError","turnState","delete","DynamicGrammarBuilder","addPhrase","phrase","privPhrases","clearPhrases","addReferenceGrammar","grammar","privGrammars","clearGrammars","generateGrammarObject","retObj","ReferenceGrammars","retPhrases_1","Groups","Type","Items","recognitionStatus","Success","RecognizedSpeech","BabbleTimeout","EndOfDictation","BadRequest","Forbidden","EndOfStream","ServiceError","BadRequestParameters","errorDetails","SpIDAuthKey","ContentType","Path","RequestId","RequestStreamId","RequestTimestamp","privHeaderName","privToken","IntentConnectionFactory","SpeechServiceConnection_IntentRegion","SpeechServiceConnection_Url","getSpeechRegionFromIntentRegion","intentRegion","IntentServiceRecognizer","privIntentRecognizer","privIntentDataSent","setIntents","addedIntents","umbrellaIntent","privAddedLmIntents","privUmbrellaIntent","speechHypothesis","IntentRecognitionResult","RecognizingIntent","IntentRecognitionEventArgs","privPendingIntentArgs","intentResponse","IntentResponse","topScoringIntent","intent","addedIntent","intentId","RecognizedIntent","LanguageUnderstandingServiceResponse_JsonResult","IntentRecognitionCanceledEventArgs","CustomSpeechDeploymentId","CustomVoiceDeploymentId","EnableLanguageId","StableTranslation","TestHooks","CtsMeetingId","CtsDeviceId","CtsIsParticipant","SpeechRecognitionEvent","eventName","EventType","privSessionId","PlatformEvent","RecognitionTriggeredEvent","privAudioSourceId","privAudioNodeId","ListeningStartedEvent","ConnectingToServiceEvent","authFetchEventid","privAuthFetchEventid","RecognitionCompletionStatus","RecognitionStartedEvent","privAuthFetchEventId","RecognitionEndedEvent","serviceTag","privStatus","privError","privServiceTag","RecognitionMode","SpeechResultFormat","RecognizerConfig","speechServiceConfig","privSpeechServiceConfig","privParameters","privMaxRetryCount","privLanguageIdMode","SpeechServiceConnection_LanguageIdMode","privRecognitionMode","privRecognitionActivityTimeout","Interactive","Recognition","SpeechServiceConnection_AutoDetectSourceLanguages","SpeechServiceConnection_RecognitionEndpointVersion","models","modelsExist","autoDetectSourceLanguages","customProperty","SpeechServiceConnection_EndpointId","modelId","recognition","os","system","System","build","lang","OS","platform","Device","RecognitionEvents_1","ServiceTelemetryListener_Internal_1","RequestSession","privDetachables","privIsAudioNodeDetached","privIsRecognizing","privIsSpeechEnded","privTurnStartAudioOffset","privLastRecoOffset","privHypothesisReceived","privBytesSent","privRecogNumber","privInTurn","privConnectionAttempts","privTurnDeferral","eventSource","privServiceTelemetryListener","attachListener","ServiceTelemetryListener","onComplete","onPreConnectionStart","onAuthCompleted","onConnectionEstablishCompleted","continuousRecognition","onSpeechContext","hypothesisReceived","phraseReceived","onAudioSent","bytesSent","onRetryConnection","getTelemetry","hasTelemetry","onSpeechEnded","detachAudioNode","privActivityResponse","privDetailedSpeechPhrase","baseOffset","NBest","firstWordOffset","Words","details","_d","_e","DisplayWords","_f","_g","PrimaryLanguage","Confidence","Display","SynthesisStatus","privIntentResponse","query","entities","privSimpleSpeechPhrase","privSpeechStartDetected","privSpeechHypothesis","privSpeechKeyword","MetadataType","SynthesisAudioMetadata","privSynthesisAudioMetadata","Metadata","TranslationStatus_1","TranslationHypothesis","privTranslationHypothesis","Translation","TranslationStatus","TranslationPhrase","privTranslationPhrase","fromTranslationResponse","translationResponse","SpeechPhrase","TranslationSynthesisEnd","privSynthesisEnd","FailureReason","TurnStatusResponsePayload","privMessageStatusResponse","privConnectionConfigurationPromise","privConnectionPromise","privSetTimeout","privIsLiveAudio","recognizeSpeaker","sendPrePayloadJSONOverride","privMustReportEndOfStream","privAuthentication","privConnectionFactory","privAudioSource","privServiceEvents","privDynamicGrammar","privSpeechContext","SpeechContext","privAgentConfig","Worker","Timeout","connectionClosedEvent","numConnectionAttempts","maxRetryCount","ConversationTranslator_Token","SpeechServiceConnection_SpeakerIdMode","auth","recognize","errorCallBack","setSpeechSegmentationTimeout","audioStreamNode","error_2","receiveMessage","stopRecognizing","sendFinalAudio","turnCompletionPromise","connectAsync","sendNetworkMessage","contentType","privActivityTemplate","sendTelemetryData","telemetryData","telemetryDataEnabled","privServiceHasSentMessage","sendPrePayloadJSON","generateNewRequestId","speechContextJson","noOp","retryableConnect","requestSession","SpeechServiceConfigJson","DisableReferenceChannel","MicSpec","configureConnection","nextSendTime","fastLaneSizeMs","maxSendUnthrottledBytes","startRecogNumber","recogNumber","readAndUploadCycle","audioStreamChunk","sendDelay","delay","isUnAuthorized","lastStatusCode","lastReason","delayMs","writeBufferToConsole","out","readView","padStart","privListeningTriggerMetric","privMicMetric","privConnectionEstablishMetric","privReceivedMessages","privPhraseLatencies","privHypothesisLatencies","audioReceivedTime","End","Name","Start","privMicStartTime","privConnectionStartTime","Id","ConnectionEstablishErrorEvent","getConnectionError","metrics","PhraseLatencyMs","FirstHypothesisLatencyMs","telemetry","Metrics","ReceivedMessages","SpeakerRecognitionConfig","SpeakerRecognitionConnectionFactoryBase","endpointPath","scenario","scenarioToPath","SpeechServiceConnection_Key","SpeakerRecognitionConnectionFactory","VoiceProfileConnectionFactory","SpeakerServiceRecognizer","privSpeakerRecognizer","privSpeakerAudioSource","recognizeSpeakerOnce","SpeakerRecognitionResult","RecognizedSpeaker","privResultDeferral","privSpeakerModel","voiceProfileType","extractSpeakerContext","err_1","sendSpeakerRecognition","speakerContextJson","interimResult","progressiveDetection","profileIds","SpeechConnectionFactory","interactiveRelativeUri","conversationRelativeUri","dictationRelativeUri","universalUri","endpointId","Conversation","ForceDictationPropertyName","recognitionEndpointVersion","Dictation","webSocketConnection","additionalHeaders","privPath","privContentType","privStreamId","privAdditionalHeaders","ConnectionMessage","dynamicGrammar","getSection","sectionName","setPronunciationAssessmentParams","phraseDetection","enrichment","pronunciationAssessment","setWordLevelTimings","phraseOutput","dgi","RecognizerConfig_1","SpeechServiceRecognizer","speechRecognizer","privSpeechRecognizer","sourceLanguages","speechContextLidMode","languageIdMode","Priority","languages","onSuccess","onUnknown","interimResults","resultType","phraseResults","customModels","sourceLanguageModels","onInterim","isEmpty","speechSegmentationTimeout","segmentationSilenceTimeoutMs","segmentation","SpeechSynthesisConnectionFactory","synthesisUri","hostPrefix","SynthesisAdapterBase","synthesizerConfig","speechSynthesizer","audioDestination","speakOverride","connectImplOverride","privSynthesizerConfig","privSpeechSynthesizer","privSessionAudioDestination","privSynthesisTurn","SynthesisTurn","privSynthesisContext","SynthesisContext","cancelSynthesisLocal","privAudioOutputFormat","audioOutputFormat","synthesisContext","addHeader","hasHeader","updateHeader","tmp","Speak","isSSML","ssml","buildSsml","startNewSynthesis","sendSynthesisContext","sendSsmlMessage","synthesisStartEventArgs","SpeechSynthesisEventArgs","SpeechSynthesisResult","SynthesizingAudioStarted","synthesisStarted","cancelSynthesis","SynthesisCanceled","isSynthesizing","onStopSynthesizing","onServiceResponseMessage","onAudioChunkReceived","synthesizing","audioWithHeader","SynthesizingAudio","metadataList","metadataList_1","WordBoundary","SentenceBoundary","onTextBoundaryEvent","wordBoundaryEventArgs","SpeechSynthesisWordBoundaryEventArgs","Data","Length","currentTextOffset","currentSentenceOffset","BoundaryType","wordBoundary","Bookmark","bookmarkEventArgs","SpeechSynthesisBookmarkEventArgs","bookmarkReached","Viseme","onVisemeMetadataReceived","IsLastAnimation","visemeEventArgs","SpeechSynthesisVisemeEventArgs","VisemeId","getAndClearVisemeAnimation","visemeReceived","SessionEnd","onSessionEnd","getAllReceivedAudioWithHeader","audioBuffer","SynthesizingAudioCompleted","audioDuration","synthesisCompleted","synthesisContextJson","authPromise","synthesisSection","buildSynthesisContext","metadataOptions","bookmarkEnabled","punctuationBoundaryEnabled","SpeechServiceResponse_RequestPunctuationBoundary","sentenceBoundaryEnabled","SpeechServiceResponse_RequestSentenceBoundary","sessionEndEnabled","visemeEnabled","wordBoundaryEnabled","SpeechServiceResponse_RequestWordBoundary","outputFormat","requestAudioFormatString","autoDetection","autoDetectSourceLanguage","SpeechSynthesisEvent","SynthesisTriggeredEvent","sessionAudioDestinationId","turnAudioDestinationId","privSessionAudioDestinationId","privTurnAudioDestinationId","ConnectingToSynthesisServiceEvent","SynthesisStartedEvent","SynthesisRestAdapter","requestOptions","privRestAdapter","getVoicesList","Get","SynthesisAudioMetadata_1","SynthesisAdapterBase_1","SynthesisEvents_1","privIsSynthesizing","privIsSynthesisEnded","privBytesReceived","privTextOffset","privNextSearchTextIndex","privSentenceOffset","privNextSearchSentenceIndex","privAudioDuration","getAllReceivedAudio","privReceivedAudio","readAllAudioFromStream","privReceivedAudioWithHeader","rawText","privRawText","privIsSSML","privAudioOutputStream","PullAudioOutputStreamImpl","privPartialVisemeAnimation","privTurnAudioDestination","responseJson","updateTextOffset","AnimationChunk","animation","isXmlTag","withinXmlTag","bytesReceived","idx","SynthesisServiceType","SynthesizerConfig","privSynthesisServiceType","Standard","TranscriberConnectionFactory","multiaudioRelativeUri","hostDefault","setQueryParams","endpointUrl","wordLevelTimings","Detailed","ConversationConnectionConfig","privHost","privApiVersion","privClientAppId","privDefaultLanguageCode","privRestPath","privWebSocketPath","privTranscriptionEventKeys","ConversationConnectionConfig_1","ConversationWebsocketMessageFormatter_1","ConversationConnectionFactory","endpointHost","ConversationTranslator_Host","ConversationTranslator_CorrelationId","webSocketPath","ConversationWebsocketMessageFormatter","ConversationConnectionMessage","privConversationMessageType","ConversationManager","privRequestParams","privErrors","restErrors","restPath","createOrJoin","conversationCode","defaultLanguageCode","ConversationTranslator_Name","authToken","SpeechServiceAuthorization_Token","throwIfNullOrWhitespace","conversation","errMessageRaw","leave","ConversationRequestSession","privRequestCompletionDeferral","ConversationConnectionMessage_1","ConversationRequestSession_1","ConversationTranslatorEventArgs_1","ConversationTranslatorInterfaces_1","ConversationServiceAdapter","conversationServiceConnector","privConnectionConfigPromise","privLastPartialUtteranceId","privConversationServiceConnector","privConversationAuthentication","receiveConversationMessageOverride","conversationConnectImpl","privConversationRequestSession","privConversationConnectionFactory","privConversationIsDisposed","sendMessageAsync","ConversationTranslationCanceledEventArgs","sendFinal","conversationMessageType","commandPayload_1","CommandResponsePayload","command","participantsPayload","ParticipantsListPayloadResponse","participantsResult","participants","avatar","participantId","isHost","ishost","isMuted","ismuted","isUsingTts","usetts","preferredLanguage","participantsListReceived","ParticipantsListEventArgs","roomid","translateTo","profanityFilter","roomProfanityFilter","roomLocked","muteAll","participantUpdateCommandReceived","ParticipantAttributeEventArgs","ConversationTranslatorCommandTypes","setTranslateToLanguages","setProfanityFiltering","setMute","muteAllCommandReceived","MuteAllEventArgs","conversationExpiration","ConversationExpirationEventArgs","setUseTTS","lockRoomCommandReceived","LockRoomEventArgs","changeNickname","joinParticipantPayload","ParticipantPayloadResponse","joiningParticipant","participantJoinCommandReceived","ParticipantEventArgs","leavingParticipant","participantLeaveCommandReceived","authorizationToken","speechPayload","SpeechResponsePayload","speechResult","ConversationTranslationResult","getTranslations","translations","isFinal","translationReceived","ConversationReceivedTranslationEventArgs","ConversationTranslatorMessageTypes","final","partial","textPayload","TextResponsePayload","textResult","originalText","instantMessage","messageRetrievalPromise","serviceResultTranslations","Translations","serviceResultTranslations_1","translation","StringUtils_1","ConversationTranslatorConnectionFactory","convGetter","privConvGetter","isVirtMicArrayEndpoint","convInfo","room","cognitiveSpeechRegion","replacementValues","CTS_VIRT_MIC_PATH","StringUtils","formatString","parsedUrl_1","searchParams","connFactory","TranslationConnectionFactory","getEndpointUrl","privIsMuted","isLocked","privIsLocked","participant","privParticipant","privKey","privValue","privParticipantId","isRoomLocked","isMuteAll","privRoomId","privSessionToken","privTranslateTo","privProfanityFilter","privRoomProfanityFilter","privIsRoomLocked","privParticipants","privIsMuteAll","privPayload","privCommand","InternalParticipants","meId","addOrUpdateParticipant","exists","getParticipantIndex","getParticipant","deleteParticipant","keepAlive","participantCommand","translatedMessage","disconnectSession","ejectParticipant","instant_message","joinSession","leaveSession","participantList","roomExpirationWarning","setLockState","setMuteAll","ConversationConnectionFactory_1","ConversationServiceAdapter_1","ConversationRecognizerFactory","fromConfig","speechConfig","audioConfig","ConversationTranslatorRecognizer","serviceConfigImpl","throwIfNull","conversationImpl","privConversation","privProperties","clone","privConnection","Connection","fromRecognizer","privClearTimeout","connected","disconnected","privSpeechRecognitionLanguage","throwIfDisposed","privReco","conversationTranslatorToken","resetConversationTimeout","closeConnection","disposing","createRecognizerConfig","createServiceRecognizer","PromiseToEmptyCallback","getKeepAlive","Recognizer","deferral","incomingMessage","binaryContent","ConversationManager_1","ConversationTranslatorRecognizer_1","TranscriberRecognizer_1","TranscriberRecognizer","privCommandResponse","parseCommandResponse","CommandResponsePayload_1","ParticipantResponsePayload_1","TranslationResponsePayload_1","privParticipantsPayloadResponse","parseListResponse","privParticipantPayloadResponse","parseParticipantResponse","privSpeechResponse","parseSpeechResponse","privTextResponse","parseTextResponse","speechTranslationConfig","speechTranslationConfigImpl","audioConfigImpl","speechRecognitionLanguage","privDisposedRecognizer","getConversationInfo","conversationInfo","startContinuousRecognitionAsync","marshalPromiseToCallbacks","startContinuousRecognitionAsyncImpl","stopContinuousRecognitionAsync","stopContinuousRecognitionAsyncImpl","pushConversationEvent","reco","sendSpeechEventAsync","enforceAudioGating","connectCallbacks","transcriber","transcribing","transcribed","disconnectCallbacks","implRecognizerStop","configImpl","TranscriptionServiceRecognizer","privTranscriberRecognizer","sendTranscriptionStartJSON","sendSpeechEvent","createSpeechEventPayload","ConversationTranscriptionCanceledEventArgs","speechEventJson","eventDict","meeting","conversationProperties","attendees","audiorecording","returnRegionPlaceholder","SpeechServiceConnection_TranslationToLanguages","SpeechServiceResponse_TranslationRequestStablePartialResult","translationVoice","SpeechServiceConnection_TranslationVoice","voice","TranslationServiceRecognizer","translationRecognizer","privTranslationRecognizer","onConnection","onDisconnection","handleTranslationPhrase","translatedPhrase","TranslationRecognitionResult","TranslationRecognitionEventArgs","sendSynthesisAudio","synthEnd","result_1","TranslationSynthesisResult","retEvent","TranslationSynthesisEventArgs","canceledResult","TranslationRecognitionCanceledEventArgs","fromSpeechRecognitionResult","TranslatedSpeech","TranslatingSpeech","VoiceServiceRecognizer","privDeferralMap","DeferralMap","operation","handleCreateResponse","handleResultResponse","enrollmentResponse_1","handleFetchResponse","phraseResponse","handlePhrasesResponse","enrollmentResponse","VoiceProfileEnrollmentResult","enrollmentReasonFrom","enrollment","enrollmentStatus","getId","createProfile","profileType","createProfileDeferral","sendCreateProfile","resetProfile","profile","sendCommonRequest","deleteProfile","retrieveEnrollmentResult","privExpectedProfileId","profileId","getAllProfiles","getActivationPhrases","getPhrasesDeferral","sendPhrasesRequest","enrollProfile","enrollmentDeferral","err_3","sendBaseRequest","scenarioFrom","profileCreateRequest","VoiceProfileType","TextIndependentIdentification","TextIndependentVerification","profileRequest","maxPageSize","VoiceProfilePhraseResult","passPhraseType","phrases","EnrollingVoiceProfile","profiles","successReason","DeletedVoiceProfile","ResetVoiceProfile","VoiceProfileResult","profileInfo","profileResults","iProfiles_1","EnrolledVoiceProfile","textMessage","headerBodySplit","parseHeaders","binaryMessage","dataView","headerLength","getInt16","headersString","getInt8","makeHeaders","headerBuffer","stringToArrayBuffer","headerInt8Array","Int8Array","payloadInt8Array","bodyInt8Array","headerMatches","headerMatches_1","separatorIndex","setUint8","PlatformEvent_1","AudioSourceEvent","AudioStreamNodeEvent","targetChunkSize","privTargetChunkSize","privNextBufferReadyBytes","bytesCopiedFromBuffer","privNextBufferToWrite","privNextBufferStartTime","bytesToCopy","targetView","sourceView","Stream","jsonstring","privJsonResult","ConnectionEvent","privReason","privStatusCode","privMessage","privType","statuscode","networkReceivedTimeISO","privNetworkReceivedTime","networkSentTimeISO","privNetworkSentTime","Guid_1","privBody","privMessageType","privSize","privMap","DialogEvent","argumentName","ObjectDisposedError","objectName","privEventListeners","privConsoleListener","privMetadata","eventId","onEventCallback","EventSource_1","setEventSource","privInstance","uuid_1","v4","List","privSubscriptionIdCounter","privAddSubscriptions","privRemoveSubscriptions","privDisposedSubscriptions","privDisposeReason","privList","list_1","itemIndex","last","insertAt","unshift","triggerSubscriptions","removeFirst","removeAt","removeLast","remove","removedElements","onAdded","addedCallback","subscriptionId","onRemoved","removedCallback","onDisposed","disposedCallback","seperator","toArray","cloneCopy","where","select","selectList","filteredList","orderBy","compareFn","sort","orderByDesc","concatArray","subscriptions","OCSPEvent","signature","privSignature","OCSPMemoryCacheHitEvent","OCSPCacheMissEvent","OCSPDiskCacheHitEvent","OCSPCacheUpdateNeededEvent","OCSPMemoryCacheStoreEvent","OCSPDiskCacheStoreEvent","OCSPCacheUpdateCompleteEvent","OCSPStapleReceivedEvent","OCSPWSUpgradeStartedEvent","serialNumber","OCSPCacheEntryExpiredEvent","expireTime","privExpireTime","OCSPCacheEntryNeedsRefreshEvent","startTime","privStartTime","OCSPCacheHitEvent","privExpireTimeString","toLocaleDateString","privStartTimeString","toLocaleTimeString","OCSPVerificationFailedEvent","OCSPCacheFetchErrorEvent","OCSPResponseRetrievedEvent","OCSPCacheUpdateErrorEvent","privName","privEventId","privEventTime","privEventType","PromiseState","PromiseResult","promiseResultEventSource","throwIfError","on","privIsError","privResult","PromiseResultEventSource","setResult","privOnSetResult","setError","privOnSetError","onSetResult","onSetError","privResolve","privReject","privPromise","Sink","privState","privPromiseResult","privPromiseResultEvents","privSuccessHandlers","privErrorHandlers","Resolved","executeSuccessCallback","detachHandlers","Rejected","errorHandler","executeErrorCallback","SubscriberType","List_1","Promise_1","privPromiseStore","privIsDrainInProgress","privIsDisposing","privSubscribers","drain","enqueue","throwIfDispose","deferredSubscriber","Dequeue","peek","Peek","pendingItemProcessor","subs","promiseArray_1","finally","lists","subscriber","dequeuedItem","ConnectionMessage_1","actualSampleRate","desiredSampleRate","privActualSampleRate","privDesiredSampleRate","actualAudioFrame","audioFrame","downSampleAudioFrame","audioLength","floatTo16BitPCM","setString","setInt16","srcFrame","srcRate","dstRate","ratio","dstLength","dstFrame","Float32Array","srcOffset","dstOffset","nextSrcOffset","Queue_1","privIsWriteEnded","privIsReadEnded","privReaderQueue","streamChunk","throwIfClosed","replacements","formatted","appendToFormatted","appendToKey","appendFunc","scheduledTimeoutFunctions","unhandledRequests","workerUrl","worker","isCallNotification","timerId","idOrFunc","unhandledTimerId","isClearResponse","performance","loadWorkerTimers","workerTimers","timers","privActivity","AudioFileWriter_1","AudioInputStream_1","AudioConfig","fromDefaultMicrophoneInput","pcmRecorder","AudioConfigImpl","fromMicrophoneInput","fromWavFileInput","fromStreamInput","PullAudioInputStreamCallback","PullAudioInputStreamImpl","AudioInputStream","MediaStream","fromDefaultSpeakerOutput","AudioOutputConfigImpl","SpeakerAudioDestination","fromSpeakerOutput","player","fromAudioFileOutput","AudioFileWriter","fromStreamOutput","PushAudioOutputStreamCallback","PushAudioOutputStreamImpl","PushAudioOutputStream","PullAudioOutputStream","def","privDestination","privFd","throwIfNotUndefined","privAudioFormat","headerOffset","privWriteStream","createWriteStream","fd","autoClose","bytesWritten","writeSync","closeSync","createPushStream","PushAudioInputStream","PullAudioInputStream","PushAudioInputStreamImpl","privFormat","privStream","dataBuffer","toBuffer","buf","alloc","privCallback","privIsClosed","privBufferSize","transmitBuff","totalBytes","readBuff","pulledBytes","SpeechSynthesisOutputFormat_1","formatTag","blockAlign","audioFormatString","priAudioFormatString","priRequestAudioFormatString","priHasHeader","fromSpeechSynthesisOutputFormat","speechSynthesisOutputFormat","SpeechSynthesisOutputFormatToString","speechSynthesisOutputFormatString","AudioFormatTag","MuLaw","Siren","MP3","SILKSkype","PCM","OGG_OPUS","WEBM_OPUS","OPUS","FLAC","ALaw","privHeader","setUint32","SpeechSynthesisOutputFormat","Raw8Khz8BitMonoMULaw","Riff16Khz16KbpsMonoSiren","Audio16Khz16KbpsMonoSiren","Audio16Khz32KBitRateMonoMp3","Audio16Khz128KBitRateMonoMp3","Audio16Khz64KBitRateMonoMp3","Audio24Khz48KBitRateMonoMp3","Audio24Khz96KBitRateMonoMp3","Audio24Khz160KBitRateMonoMp3","Raw16Khz16BitMonoTrueSilk","Riff16Khz16BitMonoPcm","Riff8Khz16BitMonoPcm","Riff24Khz16BitMonoPcm","Riff8Khz8BitMonoMULaw","Raw16Khz16BitMonoPcm","Raw24Khz16BitMonoPcm","Raw8Khz16BitMonoPcm","Ogg16Khz16BitMonoOpus","Ogg24Khz16BitMonoOpus","Raw48Khz16BitMonoPcm","Riff48Khz16BitMonoPcm","Audio48Khz96KBitRateMonoMp3","Audio48Khz192KBitRateMonoMp3","Ogg48Khz16BitMonoOpus","Webm16Khz16BitMonoOpus","Webm24Khz16BitMonoOpus","Webm24Khz16Bit24KbpsMonoOpus","Raw24Khz16BitMonoTrueSilk","Raw8Khz8BitMonoALaw","Riff8Khz8BitMonoALaw","Audio16Khz16Bit32KbpsMonoOpus","Audio24Khz16Bit48KbpsMonoOpus","Audio24Khz16Bit24KbpsMonoOpus","Raw22050Hz16BitMonoPcm","Riff22050Hz16BitMonoPcm","Raw44100Hz16BitMonoPcm","Riff44100Hz16BitMonoPcm","intView","privLastChunkView","isReadEnded","tmpBuffer","getWaveFormat","samplesPerSecond","isWavFormat","setUint16","AudioContext","webkitAudioContext","getSupportedConstraints","BaseAudioPlayer","audioContext","gainNode","autoUpdateBufferTimer","init","playAudioSample","newAudioData","ensureInitializedContext","audioData","formatAudioData","newSamplesData","samples","stopAudio","clearInterval","setInterval","updateAudioBuffer","createGain","gain","currentTime","formatArrayBuffer","Int16Array","Int32Array","maxValue","float32Data","bufferSource","createBufferSource","frameCount","createBuffer","channelOffset","playAudio","decodeAudioData","newBuffer","AudioFormatToMimeType","audioDestinationId","privPlaybackStarted","privAppendingToBuffer","privMediaSourceOpened","privIsPaused","privAudioBuffer","updateSourceBuffer","privSourceBuffer","handleSourceBufferUpdateEnd","receivedAudio_1","audioBlob","privAudio","notifyPlayback","onAudioEnd","mimeType_1","MediaSource","isTypeSupported","Audio","privMediaSource","onsourceopen","addSourceBuffer","onupdate","onupdateend","onupdatestart","volume","mute","muted","unmute","pause","play","sourceBufferAvailable","binary","appendBuffer","canEndStream","endOfStream","onAudioStart","onended","updating","LanguageIdMode_1","AutoDetectSourceLanguageConfig","LanguageIdMode","AtStart","fromOpenRange","AutoDetectSourceLanguagesOpenRangeOptionName","fromLanguages","throwIfArrayEmptyOrWhitespace","fromSourceLanguageConfigs","configs","autoConfig","langs","Continuous","AutoDetectSourceLanguageResult","languageDetectionConfidence","privLanguage","privLanguageDetectionConfidence","fromResult","DialogServiceConfig_1","BotFrameworkConfig","fromSubscription","subscription","botId","botFrameworkConfig","DialogServiceConfigImpl","fromAuthorizationToken","fromHost","resolvedHost","fromEndpoint","CancellationDetailsBase_1","CancellationDetails","RecognitionResult","simpleSpeech","CancellationDetailsBase","privErrorDetails","privErrorCode","CancellationEventArgsBase","recoBase","internalData","privInternalData","setupEvents","fromSynthesizer","synthesizer","synthBase","openConnection","setMessageProperty","propertyName","propertyValue","success","privEventListener","ConnectionEventArgs","messageSent","ConnectionMessageEventArgs","ConnectionMessageImpl","messageReceived","privServiceEventListener","receivedServiceMessage","ServiceEventArgs","jsonString","PropertyCollection_1","PropertyId_1","privConnectionMessage","param","throwIfNullOrTooLong","maxLength","throwIfNullOrTooShort","minLength","array_1","throwIfFileDoesNotExist","CustomCommandsConfig","customCommandsConfig","Diagnostics","SetLoggingLevel","logLevel","privListener","StartConsoleOutput","enableConsoleOutput","StopConsoleOutput","SetLogOutputPath","logPath","privSpeechConfig","SpeechConfigImpl","setProxy","setServiceProperty","DialogConnectorFactory_1","DialogServiceConnector","dialogConfig","dialogServiceConfigImpl","isTurnComplete","buildAgentConfig","listenOnceAsync","retPromise","sendActivityAsync","errCb","commType","Conversation_Agent_Connection_Id","Conversation_Conversation_Id","fromId","Conversation_From_Id","ttsAudioFormat","AudioConfig_1","CancellationReason_1","PullAudioInputStreamCallback_1","PushAudioOutputStreamCallback_1","KeywordRecognitionModel_1","KeywordRecognitionModel","SessionEventArgs_1","RecognitionEventArgs_1","OutputFormat_1","IntentRecognitionEventArgs_1","RecognitionResult_1","SpeechRecognitionResult_1","IntentRecognitionResult_1","LanguageUnderstandingModel_1","LanguageUnderstandingModel","SpeechRecognitionEventArgs_1","ConversationTranscriptionEventArgs","SpeechRecognitionCanceledEventArgs_1","TranslationRecognitionEventArgs_1","TranslationSynthesisEventArgs_1","TranslationRecognitionResult_1","TranslationSynthesisResult_1","ResultReason_1","SpeechConfig_1","SpeechConfig","SpeechTranslationConfig_1","SpeechTranslationConfig","SpeechTranslationConfigImpl","Recognizer_1","SpeechRecognizer_1","SpeechRecognizer","IntentRecognizer_1","IntentRecognizer","VoiceProfileType_1","TranslationRecognizer_1","TranslationRecognizer","Translations_1","NoMatchReason_1","NoMatchReason","NoMatchDetails_1","NoMatchDetails","TranslationRecognitionCanceledEventArgs_1","IntentRecognitionCanceledEventArgs_1","CancellationDetails_1","CancellationErrorCodes_1","ConnectionEventArgs_1","ServiceEventArgs_1","Connection_1","PhraseListGrammar_1","PhraseListGrammar","BotFrameworkConfig_1","CustomCommandsConfig_1","DialogServiceConnector_1","ActivityReceivedEventArgs_1","TurnStatusReceivedEventArgs_1","ServicePropertyChannel_1","ServicePropertyChannel","ProfanityOption_1","ProfanityOption","BaseAudioPlayer_1","ConnectionMessageEventArgs_1","VoiceProfile_1","VoiceProfile","VoiceProfileEnrollmentResult_1","VoiceProfileEnrollmentCancellationDetails","VoiceProfileResult_1","VoiceProfileCancellationDetails","VoiceProfilePhraseResult_1","VoiceProfileClient_1","VoiceProfileClient","SpeakerRecognizer_1","SpeakerRecognizer","SpeakerIdentificationModel_1","SpeakerIdentificationModel","SpeakerVerificationModel_1","SpeakerVerificationModel","AutoDetectSourceLanguageConfig_1","AutoDetectSourceLanguageResult_1","SourceLanguageConfig_1","SourceLanguageConfig","SpeakerRecognitionResult_1","SpeakerRecognitionResultType","SpeakerRecognitionCancellationDetails","ConversationParticipantsChangedEventArgs","ConversationTranslationEventArgs","ConversationTranslator","ConversationTranscriber","Participant","ParticipantChangedReason","User","SpeechSynthesizer_1","SpeechSynthesizer","SynthesisResult_1","SynthesisResult","SpeechSynthesisResult_1","SpeechSynthesisEventArgs_1","SpeechSynthesisWordBoundaryEventArgs_1","SpeechSynthesisBookmarkEventArgs_1","SpeechSynthesisVisemeEventArgs_1","SpeechSynthesisBoundaryType_1","SpeechSynthesisBoundaryType","SynthesisVoicesResult_1","SynthesisVoicesResult","VoiceInfo_1","VoiceInfo","SpeakerAudioDestination_1","ConversationTranscriptionCanceledEventArgs_1","PronunciationAssessmentGradingSystem_1","PronunciationAssessmentGradingSystem","PronunciationAssessmentGranularity_1","PronunciationAssessmentGranularity","PronunciationAssessmentConfig_1","PronunciationAssessmentConfig","PronunciationAssessmentResult_1","PronunciationAssessmentResult","Diagnostics_1","privIntentId","privAddedIntents","privDisposedIntentRecognizer","recognizeOnceAsync","buildSpeechContext","Intent","recognizeOnceAsyncImpl","startKeywordRecognitionAsync","stopKeywordRecognitionAsync","addIntent","simplePhrase","addIntentWithLanguageModel","appId","addAllIntents","errorCb","audioImpl","refGrammers","addedLmIntent","grammer","provider","privDisposed","fromFile","fromStream","hostname","langModelImp","LanguageUnderstandingModelImpl","firstDot","lastSegment","fromAppId","NotRecognized","InitialBabbleTimeout","recogBase","privGrammerBuilder","addPhrases","referenceText","gradingSystem","granularity","enableMiscue","FivePoint","Phoneme","PronunciationAssessment_ReferenceText","PronunciationAssessment_GradingSystem","PronunciationAssessment_Granularity","PronunciationAssessment_EnableMiscue","PronunciationAssessment_Json","updateJson","PronunciationAssessment_Params","applyTo","phonemeAlphabet","privPhonemeAlphabet","enableMiscueString","nbestPhonemeCount","privNBestPhonemeCount","paramsJson","dimension","privPronJson","detailResult","PronunciationAssessment","AccuracyScore","PronScore","CompletenessScore","FluencyScore","privKeys","privValues","keyToUse","clonedMap","mergeTo","destinationCollection","privOffset","privResultId","privText","privDuration","privJson","implCommonRecognizerSetup","enableTelemetry","enabled","osPlatform","osName","osVersion","getAuthFromProperties","privEventName","privEndpointId","fromLanguage","privVoiceProfiles","privProfileIds","profiles_1","fromProfiles","Identify","Verify","privProfileId","identificationResult","identifiedProfile","privScore","score","RecognizedSpeakers","verificationResult","recognitionResult","privAudioConfigImpl","privDisposedSpeakerRecognizer","recognizeSpeakerOnceAsyncImpl","privVoiceProfile","fromProfile","voiceProfile","TextDependentVerification","speechImpl","hostName","currentProperties","setProfanity","enableAudioLogging","requestWordLevelTimestamps","enableDictation","SpeechServiceConnection_SynthLanguage","SpeechServiceConnection_SynthVoice","speakerId","privSpeakerId","speechConfigImpl","FromConfig","autoDetectSourceLanguageConfig","audioOffset","privAudioOffset","privAudioData","visemeId","privVisemeId","privAnimation","wordLength","textOffset","boundaryType","privWordLength","privBoundaryType","privSynthesizing","synthesisRequestQueue","implCommonSynthesizeSetup","languageToDefaultVoice","XMLEncode","speakTextAsync","speakImpl","speakSsmlAsync","getVoicesAsync","getVoices","privAdapter","createSynthesizerConfig","createSynthesisAdapter","IsSsml","dataStream","SynthesisRequest","adapterSpeak","Locale","privSpeechProperties","addTargetLanguage","targetLanguages","VoicesListRetrieved","privVoices","json_1","createConversationAsync","arg2","arg3","arg4","ConversationImpl","onConnected","privIsConnected","privConversationTranslator","onDisconnected","onCanceled","onParticipantUpdateCommandReceived","updatedParticipant","translateToLanguages","participantsChanged","Updated","toParticipant","onLockRoomCommandReceived","onMuteAllCommandReceived","toParticipants","onParticipantJoinCommandReceived","newParticipant","JoinedConversation","onParticipantLeaveCommandReceived","ejectedParticipant","LeftConversation","onTranslationReceived","textMessageReceived","onParticipantsListReceived","privRoom","__spreadArrays","me","privIsReady","changeNicknameAsync","onConversationExpiration","privConversationId","privManager","Masked","hostNickname","privConfig","privTextMessageMaxLength","privConversationRecognizer","convId","part","transcriptionEventKeys","conversationTranslator","handleError","handleCallback","startConversationAsync","addParticipantAsync","addParticipantImplAsync","joinConversationAsync","cognitiveSpeechAuthToken","deleteConversationAsync","deleteConversationImplAsync","endConversationAsync","endConversationImplAsync","lockConversationAsync","canSendAsHost","getLockCommand","muteAllParticipantsAsync","getMuteAllCommand","muteParticipantAsync","userId","canSend","getMuteCommand","removeParticipantAsync","removeParticipantImplAsync","participantId_1","getEjectCommand","unlockConversationAsync","unmuteAllParticipantsAsync","unmuteParticipantAsync","sendTextMessageAsync","getMessageCommand","setTranslatedLanguagesAsync","getSetTranslateToLanguagesCommand","getChangeNicknameCommand","connectTranscriberRecognizer","includeHost","ConversationCommon","privAudioConfig","expirationTime","privExpirationTime","startTranscribingAsync","stopTranscribingAsync","leaveConversationAsync","originalLanguage","privOrigLang","SpeechState","ConversationTranslatorConnectionFactory_1","Conversation_1","ConversationTranslationRecognizer","translator","privSpeechState","Inactive","privTranslator","tr","cancelSpeech","fireCancelEvent","newState","privIsSpeaking","privPlaceholderKey","privPlaceholderRegion","isConnected","privCTRecognizer","isMutedByHost","param1","param2","param3","privSpeechTranslationConfig","propertyIdsToCopy","propertyIdsToCopy_1","UriQueryParameter","connectTranslatorRecognizer","canSpeak","startContinuousRecognition","error_4","ConversationCommon_1","ConversationExpirationEventArgs_1","ConversationParticipantsChangedEventArgs_1","ConversationTranslationCanceledEventArgs_1","ConversationTranslationEventArgs_1","ConversationTranslationResult_1","ConversationTranslator_1","ConversationTranscriber_1","IParticipant_1","ParticipantChangedReason_1","privUserId","privAvatar","privDisplayName","privIsHost","privIsUsingTts","privPreferredLanguage","privVoice","From","sessionid","privCancelReason","privTranslations","privDisposedTranslationRecognizer","removeTargetLanguage","updateLanguages","conn","TurnStatusPayload_1","turnStatus","privTurnStatus","SynthesisVoiceGender","SynthesisVoiceType","privStyleList","privVoicePath","privLocale","privShortName","ShortName","privLocalName","LocalName","privVoiceType","VoiceType","OnlineStandard","OnlineNeural","privGender","Gender","Male","Female","StyleList","privProfileType","privVoiceAdapter","privDisposedVoiceAdapter","createProfileAsync","retrieveEnrollmentResultAsync","getAllProfilesAsync","getActivationPhrasesAsync","enrollProfileAsync","SpeakerAudioSource","deleteProfileAsync","resetProfileAsync","getResult","privDetails","enrollmentsCount","enrollmentsLength","FromIdentificationProfileList","results","getIdentificationDetails","FromVerificationProfileList","getVerificationDetails","audioSpeechLength","enrollmentsSpeechLength","identificationProfileId","remainingEnrollmentsSpeechLength","verificationProfileId","remainingEnrollmentsCount","remainingEnrollments","phraseArray","_nil","_parse","_stringify","_v","_v2","_v3","_v4","_validate","_version","__esModule","getOutputLength","inputLength8","safeAdd","lsw","md5cmn","cnt","md5ff","md5gg","md5hh","md5ii","unescape","length32","hexTab","hex","md5ToHexEncodedArray","olda","oldb","oldc","oldd","wordsToMd5","length8","Uint32Array","bytesToWords","randomUUID","crypto","uuid","getRandomValues","rnds8","ROTL","N","W","unsafeStringify","byteToHex","_nodeId","_clockseq","_rng","_lastMSecs","_lastNSecs","clockseq","seedBytes","rng","msecs","nsecs","dt","tl","tmh","_md","DNS","hashfunc","generateUUID","_namespace","stringToBytes","_native","rnds","_sha","_regex","_promise","ReactPropTypesSecret","emptyFunction","emptyFunctionWithReset","resetWarningCache","shim","propName","componentName","propFullName","secret","getShim","isRequired","ReactPropTypes","bigint","bool","arrayOf","element","elementType","instanceOf","objectOf","oneOf","oneOfType","shape","exact","checkPropTypes","PropTypes","_class","_temp2","assign","protoProps","staticProps","classList","getElementById","svgNS","feGaussianBlur","createElementNS","setAttribute","svgElem","createSVGBlurReconfirm","divTarget","targetId","createRoot","_react2","ReactConfirmAlert","createElementReconfirm","_react","_propTypes2","ReferenceError","_Component","_temp","handleClickButton","button","onClick","handleClickOverlay","_this$props","closeOnClickOutside","onClickOutside","isClickOutside","overlay","afterClose","unmount","removeElementReconfirm","svg","removeSVGBlurReconfirm","keyboard","_this$props2","closeOnEscape","onKeypressEscape","onkeyPress","keyCodeForClose","keyCode","isKeyCodeEscape","componentDidMount","componentWillUnmount","willUnmount","renderCustomUI","_this$props3","buttons","customUI","subClass","superClass","_props","childrenElement","overlayClassName","ref","dom","aa","ca","da","ea","fa","ha","ia","ja","ka","la","ma","acceptsBooleans","attributeName","attributeNamespace","mustUseProperty","sanitizeURL","removeEmptyString","ra","sa","ta","pa","qa","oa","removeAttribute","setAttributeNS","xlinkHref","ua","__SECRET_INTERNALS_DO_NOT_USE_OR_YOU_WILL_BE_FIRED","va","wa","ya","za","Aa","Ba","Ca","Da","Ea","Fa","Ga","Ha","Ia","Ja","Ka","La","Ma","Na","Oa","Pa","Qa","_payload","_init","Ra","Sa","Ta","nodeName","Va","_valueTracker","getValue","setValue","stopTracking","Ua","Wa","checked","Xa","activeElement","Ya","defaultChecked","_wrapperState","initialChecked","Za","initialValue","controlled","ab","bb","db","ownerDocument","eb","fb","selected","defaultSelected","disabled","gb","dangerouslySetInnerHTML","hb","ib","jb","kb","lb","mb","nb","namespaceURI","firstChild","MSApp","execUnsafeLocalFunction","ob","lastChild","nodeType","nodeValue","pb","animationIterationCount","aspectRatio","borderImageOutset","borderImageSlice","borderImageWidth","boxFlex","boxFlexGroup","boxOrdinalGroup","columnCount","columns","flex","flexGrow","flexPositive","flexShrink","flexNegative","flexOrder","gridArea","gridRow","gridRowEnd","gridRowSpan","gridRowStart","gridColumn","gridColumnEnd","gridColumnSpan","gridColumnStart","fontWeight","lineClamp","lineHeight","opacity","order","orphans","tabSize","widows","zIndex","zoom","fillOpacity","floodOpacity","stopOpacity","strokeDasharray","strokeDashoffset","strokeMiterlimit","strokeOpacity","strokeWidth","qb","rb","sb","tb","menuitem","area","br","col","embed","hr","img","keygen","link","meta","wbr","ub","vb","is","wb","xb","srcElement","correspondingUseElement","yb","zb","Ab","Bb","Cb","stateNode","Db","Eb","Fb","Gb","Hb","Ib","Jb","Kb","Lb","Mb","Nb","Ob","Pb","Qb","Rb","Sb","Tb","Vb","alternate","return","Wb","memoizedState","dehydrated","Xb","Zb","child","sibling","Yb","$b","ac","unstable_scheduleCallback","bc","unstable_cancelCallback","cc","unstable_shouldYield","dc","unstable_requestPaint","unstable_now","ec","unstable_getCurrentPriorityLevel","fc","unstable_ImmediatePriority","gc","unstable_UserBlockingPriority","hc","unstable_NormalPriority","ic","unstable_LowPriority","jc","unstable_IdlePriority","kc","lc","oc","clz32","pc","qc","LN2","rc","sc","tc","uc","pendingLanes","suspendedLanes","pingedLanes","entangledLanes","entanglements","vc","xc","yc","zc","Ac","eventTimes","Cc","Dc","Ec","Fc","Gc","Hc","Ic","Jc","Kc","Lc","Mc","Nc","Oc","Pc","Qc","Rc","Sc","pointerId","Tc","nativeEvent","blockedOn","domEventName","eventSystemFlags","targetContainers","Vc","Wc","priority","isDehydrated","containerInfo","Xc","Yc","Zc","$c","ad","bd","cd","ReactCurrentBatchConfig","dd","ed","transition","gd","hd","Uc","jd","kd","ld","md","nd","od","charCode","pd","qd","rd","_reactName","_targetInst","isDefaultPrevented","isPropagationStopped","persist","isPersistent","wd","xd","yd","sd","eventPhase","isTrusted","td","ud","vd","Ad","screenX","screenY","clientX","clientY","pageX","pageY","ctrlKey","shiftKey","altKey","metaKey","getModifierState","zd","relatedTarget","fromElement","toElement","movementX","movementY","Bd","Dd","dataTransfer","Fd","Hd","animationName","elapsedTime","pseudoElement","clipboardData","Jd","Ld","Md","Esc","Spacebar","Left","Up","Right","Down","Del","Win","Menu","Apps","Scroll","MozPrintableKey","Nd","Od","Alt","Control","Meta","Shift","Pd","Qd","repeat","which","Rd","Td","height","pressure","tangentialPressure","tiltX","tiltY","twist","pointerType","isPrimary","Vd","touches","targetTouches","changedTouches","Xd","Yd","deltaX","wheelDeltaX","deltaY","wheelDeltaY","wheelDelta","deltaZ","deltaMode","Zd","$d","ae","be","documentMode","ce","de","ee","fe","ge","he","ie","le","color","datetime","range","tel","ne","oe","pe","qe","re","se","te","ue","ve","we","xe","ye","ze","oninput","Ae","detachEvent","Be","Ce","De","Ee","Fe","He","Ie","Je","Ke","nextSibling","Le","contains","compareDocumentPosition","Me","HTMLIFrameElement","Ne","contentEditable","Oe","focusedElem","selectionRange","selectionStart","selectionEnd","defaultView","getSelection","extend","rangeCount","anchorNode","anchorOffset","focusNode","focusOffset","createRange","setStart","removeAllRanges","addRange","setEnd","left","scrollLeft","top","scrollTop","focus","Pe","Qe","Re","Se","Te","Ue","Ve","We","animationend","animationiteration","animationstart","transitionend","Xe","Ye","Ze","$e","af","bf","cf","df","ef","ff","gf","hf","lf","mf","nf","Ub","of","pf","qf","rf","sf","J","tf","uf","vf","wf","na","xa","$a","ba","je","char","ke","xf","yf","zf","Af","Bf","Cf","Df","Ef","__html","Ff","Gf","Hf","Jf","queueMicrotask","If","Kf","Lf","Mf","previousSibling","Nf","Of","Pf","Qf","Rf","Sf","Tf","Uf","Vf","Wf","Xf","Yf","__reactInternalMemoizedUnmaskedChildContext","__reactInternalMemoizedMaskedChildContext","Zf","$f","ag","bg","getChildContext","cg","__reactInternalMemoizedMergedChildContext","dg","eg","fg","gg","hg","jg","kg","lg","mg","ng","og","pg","qg","rg","sg","tg","ug","vg","wg","xg","yg","zg","Ag","Bg","deletions","Cg","pendingProps","overflow","treeContext","retryLane","Dg","Eg","Fg","Gg","memoizedProps","Hg","Ig","Jg","Kg","Lg","Mg","Ng","Og","Pg","Qg","Rg","_currentValue","Sg","childLanes","Tg","dependencies","firstContext","lanes","Ug","Vg","memoizedValue","Wg","Xg","Yg","interleaved","Zg","$g","ah","updateQueue","baseState","firstBaseUpdate","lastBaseUpdate","pending","effects","bh","ch","lane","dh","eh","fh","gh","hh","ih","jh","refs","kh","nh","isMounted","_reactInternals","enqueueSetState","lh","mh","enqueueReplaceState","enqueueForceUpdate","oh","shouldComponentUpdate","isPureReactComponent","ph","updater","qh","componentWillReceiveProps","UNSAFE_componentWillReceiveProps","rh","getSnapshotBeforeUpdate","UNSAFE_componentWillMount","componentWillMount","sh","_owner","_stringRef","th","uh","vh","wh","xh","yh","implementation","zh","Ah","Bh","Ch","Dh","Eh","Fh","Gh","Hh","Ih","Jh","Kh","Lh","Mh","revealOrder","Nh","Oh","_workInProgressVersionPrimary","Ph","ReactCurrentDispatcher","Qh","Rh","Sh","Th","Uh","Vh","Wh","Xh","Yh","Zh","$h","ai","bi","ci","baseQueue","di","ei","fi","lastRenderedReducer","hasEagerState","eagerState","lastRenderedState","dispatch","gi","hi","ii","ji","ki","getSnapshot","li","mi","ni","lastEffect","stores","oi","pi","qi","ri","destroy","deps","si","ti","ui","vi","wi","xi","yi","zi","Ai","Bi","Ci","Di","Ei","Fi","Gi","Hi","Ii","Ji","readContext","useCallback","useContext","useEffect","useImperativeHandle","useInsertionEffect","useLayoutEffect","useMemo","useReducer","useRef","useState","useDebugValue","useDeferredValue","useTransition","useMutableSource","useSyncExternalStore","useId","unstable_isNewReconciler","identifierPrefix","Ki","digest","Li","Mi","Ni","Oi","Pi","Qi","Ri","Si","Ti","pingCache","Ui","Vi","Wi","Xi","ReactCurrentOwner","Yi","Zi","$i","aj","bj","cj","dj","ej","baseLanes","cachePool","transitions","fj","gj","hj","ij","jj","UNSAFE_componentWillUpdate","componentWillUpdate","componentDidUpdate","kj","lj","pendingContext","mj","Aj","Bj","Cj","Dj","nj","oj","pj","fallback","qj","rj","tj","dataset","dgst","uj","vj","_reactRetry","sj","subtreeFlags","wj","xj","isBackwards","rendering","renderingStartTime","tailMode","yj","Ej","Fj","Gj","wasMultiple","multiple","suppressHydrationWarning","onclick","autoFocus","Hj","Ij","Jj","Kj","U","Lj","WeakSet","Mj","Nj","Oj","Qj","Rj","Sj","Tj","Uj","Vj","Wj","insertBefore","_reactRootContainer","Xj","Yj","Zj","ak","onCommitFiberUnmount","bk","ck","dk","ek","fk","isHidden","gk","hk","ik","jk","kk","lk","__reactInternalSnapshotBeforeUpdate","Wk","mk","nk","pk","Z","qk","rk","sk","tk","uk","vk","wk","xk","yk","zk","Ak","Bk","Ck","Dk","Ek","callbackNode","expirationTimes","expiredLanes","wc","callbackPriority","ig","Fk","Gk","Hk","Ik","Jk","Kk","Lk","Mk","Nk","Ok","Pk","finishedWork","finishedLanes","Qk","timeoutHandle","Rk","Sk","Tk","Uk","Vk","mutableReadLanes","Bc","Pj","onCommitFiberRoot","mc","onRecoverableError","Xk","onPostCommitFiberRoot","Yk","Zk","al","isReactComponent","pendingChildren","bl","mutableSourceEagerHydrationData","cl","pendingSuspenseBoundaries","fl","gl","hl","il","jl","zj","$k","ll","ml","_internalRoot","nl","ol","ql","sl","rl","unstable_scheduleHydration","form","usingClientEntryPoint","ul","findFiberByHostInstance","bundleType","rendererPackageName","vl","rendererConfig","overrideHookState","overrideHookStateDeletePath","overrideHookStateRenamePath","overrideProps","overridePropsDeletePath","overridePropsRenamePath","setSuspenseHandler","scheduleUpdate","currentDispatcherRef","findHostInstanceByFiber","findHostInstancesForRefresh","scheduleRefresh","scheduleRoot","setRefreshHandler","getCurrentFiber","reconcilerVersion","__REACT_DEVTOOLS_GLOBAL_HOOK__","wl","isDisabled","supportsFiber","inject","createPortal","dl","unstable_strictMode","findDOMNode","flushSync","hydrate","hydrateRoot","hydratedSources","_getVersion","_source","unmountComponentAtNode","unstable_batchedUpdates","unstable_renderSubtreeIntoContainer","checkDCE","isNative","NativeSpeechRecognition","SpeechRecognition","webkitSpeechRecognition","mozSpeechRecognition","msSpeechRecognition","oSpeechRecognition","_isAndroid","_utils","_NativeSpeechRecognition","asyncGeneratorStep","gen","_next","_throw","_defineProperties","RecognitionManager","pauseAfterDisconnect","interimTranscript","finalTranscript","listening","isMicrophoneAvailable","subscribers","onStopListening","previousResultWasFinalOnly","resetTranscript","startListening","stopListening","abortListening","setSpeechRecognition","disableRecognition","updateFinalTranscript","debounce","browserSupportsRecogniser","browserSupportsPolyfills","continuous","onresult","updateTranscript","onend","onRecognitionDisconnect","emitBrowserSupportsSpeechRecognitionChange","onListeningChange","onMicrophoneAvailabilityChange","_this3","onTranscriptChange","_this4","onClearTranscript","browserSupportsSpeechRecognitionChange","_this5","_this5$subscribers$id","onBrowserSupportsSpeechRecognitionChange","onBrowserSupportsContinuousListeningChange","disconnectType","abort","emitMicrophoneAvailabilityChange","emitListeningChange","resultIndex","currentIndex","confidence","transcript","concatTranscripts","isDuplicateResult","emitTranscriptChange","newFinalTranscript","_startListening","_ref2$continuous","isContinuousChanged","isLanguageChanged","emitClearTranscript","t0","_abortListening","_callee2","_this6","_context2","_stopListening","_callee3","_this7","_context3","_start","_callee4","_context4","useSpeechRecognition","_actions","_reducers","_RecognitionManager","_arrayLikeToArray","_arrayWithoutHoles","iter","_iterableToArray","_unsupportedIterableToArray","_nonIterableSpread","_arrayWithHoles","_arr","_n","_s","_iterableToArrayLimit","_nonIterableRest","minLen","arr2","recognitionManager","_browserSupportsSpeechRecognition","_browserSupportsContinuousListening","_ref$transcribing","_ref$clearTranscriptO","clearTranscriptOnListen","_ref$commands","commands","getRecognitionManager","_useState4","browserSupportsSpeechRecognition","setBrowserSupportsSpeechRecognition","_useState6","browserSupportsContinuousListening","setBrowserSupportsContinuousListening","_useReducer2","transcriptReducer","_useReducer2$","_useState8","setListening","_useState10","setMicrophoneAvailable","commandsRef","dispatchClearTranscript","clearTranscript","matchCommands","newInterimTranscript","_ref2$matchInterim","matchInterim","_ref2$isFuzzyMatch","isFuzzyMatch","_ref2$fuzzyMatchingTh","fuzzyMatchingThreshold","_ref2$bestMatchOnly","bestMatchOnly","subcommand","commandWithoutSpecials","howSimilar","compareTwoStringsUsingDiceCoefficient","testFuzzyMatch","commandToRegExp","testMatch","_results$","_command","_command2","_commandWithoutSpecials","_howSimilar","_command3","handleTranscriptChange","appendTranscript","handleClearTranscript","subscribe","unsubscribe","applyPolyfill","PolyfillSpeechRecognition","browserSupportsPolyfill","removePolyfill","getRecognition","_constants","CLEAR_TRANSCRIPT","APPEND_TRANSCRIPT","_SpeechRecognition","_getRequireWildcardCache","newObj","hasPropertyDescriptor","desc","_interopRequireWildcard","wait","immediate","callNow","transcriptParts","optionalParam","optionalRegex","namedParam","splatParam","escapeRegExp","optional","firstBigrams","bigram","intersectionSize","_bigram","_count","__WEBPACK_EXTERNAL_MODULE__1__","__WEBPACK_EXTERNAL_MODULE__2__","modules","installedModules","__webpack_require__","moduleId","getter","toStringTag","ns","property","rect","containmentRect","offsetDir","direction","offsetVal","bottom","right","__webpack_exports__","VisibilitySensor","react__WEBPACK_IMPORTED_MODULE_0__","react__WEBPACK_IMPORTED_MODULE_0___default","react_dom__WEBPACK_IMPORTED_MODULE_1__","react_dom__WEBPACK_IMPORTED_MODULE_1___default","prop_types__WEBPACK_IMPORTED_MODULE_2__","prop_types__WEBPACK_IMPORTED_MODULE_2___default","_lib_is_visible_with_offset__WEBPACK_IMPORTED_MODULE_3__","_lib_is_visible_with_offset__WEBPACK_IMPORTED_MODULE_3___default","_setPrototypeOf","containment","throttle","debounceCheck","later","getLastTimeout","interval","intervalCheck","intervalDelay","scrollCheck","getContainer","scrollDelay","scrollThrottle","resizeCheck","resizeDelay","resizeThrottle","delayedCall","debounceEvent","debounceInfo","normalizeRect","roundRectDown","getBoundingClientRect","containmentDOMRect","innerHeight","innerWidth","visibilityRect","hasSize","isVisible","partialVisibility","partialVisible","minTopValue","onChange","startWatching","stopWatching","prevProps","Children","only","__self","__source","jsx","jsxs","forceUpdate","escape","_status","_result","PureComponent","cloneElement","createContext","_currentValue2","_threadCount","Provider","Consumer","_defaultValue","_globalName","createFactory","createRef","forwardRef","isValidElement","memo","startTransition","unstable_act","sortIndex","priorityLevel","scheduling","isInputPending","unstable_Profiling","unstable_continueExecution","unstable_forceFrameRate","unstable_getFirstCallbackNode","unstable_next","unstable_pauseExecution","unstable_runWithPriority","unstable_wrapCallback","ponyfill","_SpeechToText","_TextToSpeech","_fetchAuthorizationToken","_microsoftCognitiveservicesSpeech","_createSpeechRecognitionPonyfill","_classCallCheck2","_phrases","_ref$maxAlternatives","maxAlternatives","_ref$textNormalizatio","textNormalization","resultList","_arrayToMap","itn","ITN","lexical","Lexical","maskedITN","MaskedITN","_SpeechSDK$ResultReas","_es","_cognitiveServiceEventResultToWebSpeechRecognitionResultList","_createPromiseQueue","_patchOptions2","_SpeechGrammarList","_SpeechSDK","serializeRecognitionResult","averageAmplitude","reduce","amplitude","cognitiveServicesAsyncToPromise","emma","interpretation","prepareAudioConfig","firstChunk","originalAttach","boundOriginalAttach","_asyncToGenerator2","_regenerator","_read","unprepare","createSpeechRecognitionPonyfillFromRecognizer","createRecognizer","looseEvents","referenceGrammars","_inherits2","_continuous","_interimResults","_lang","getAttribute","_grammars","_maxAlternatives","_createClass2","_startOnce","_startOnce2","_prepareAudioConfig","soundStarted","speechStarted","stopping","_recognizer$audioConf","detachAudioConfigEvent","audioStarted","finalEvent","finalizedResults","audioSourceReady","audioSourceOff","firstAudibleChunk","_ref8","_ref9","_ref10","_ref11","grammars","recognizable","emitCognitiveServices","_toConsumableArray2","delegateYield","t1","finish","SpeechGrammarList","_patchOptions","_patchOptions$audioCo","_patchOptions$enableT","fetchCredentials","speechRecognitionEndpointId","_patchOptions$textNor","_ref12","_yield$fetchCredentia","speechRecognitionHostname","_context5","playingUtterance","CustomEvent","utterance","_memoizeOne","_AudioContextConsumer","consumer","paused","startConsumer","_eventAsPromise","_fetchSpeechData","_SpeechSynthesisEvent","_subscribeEvent","asyncDecodeAudioData","playDecoded","audioContextClosed","sourceEnded","SpeechSynthesisUtterance","_pitch","_rate","_voice","_volume","onboundary","onmark","onpause","onresume","onstart","deploymentId","arrayBufferPromise","pitch","rate","voiceURI","t2","_playingSource","t3","gender","_gender","_localService","_name","_voiceURI","relativePercentage","relative","_ref$pitch","_ref$rate","_pDeferEs","_onErrorResumeNext","_AudioContextQueue","_fetchCustomVoices","_fetchVoices","_SpeechSynthesisUtterance","EMPTY_ARRAY","_patchOptions$ponyfil","speechSynthesisDeploymentId","_patchOptions$speechS","SpeechSynthesis","updateVoices","_createDeferred","preload","speaking","_updateVoices","customVoiceHostname","speechSynthesisHostname","voices","speechSynthesis","_SpeechSynthesisVoice","fetchCustomVoices","encodeURI","accept","_yield$fetchCustomVoi","_base64Arraybuffer","_buildSSML","_isSSML","DEFAULT_LANGUAGE","DEFAULT_OUTPUT_FORMAT","DEFAULT_VOICE","EMPTY_MP3_BASE64","_ref$lang","_ref$outputFormat","_ref$voice","SPEAK_TAG_PATTERN","XML_PROLOG_PATTERN","TOKEN_URL_TEMPLATE","credentials","looseEvent","_ref$region","otherOptions","_objectWithoutProperties2","_excluded","_resolveFunctionOrReturnValue","t4","_fetchCredentials","_yield$resolveFunctio","resolvedCredentials","shouldWarnOnSubscriptionKey","fnOrValue","extras","_defineProperty2","shiftDeferred","arrayLikeToArray","isNativeReflectConstruct","_construct","Parent","Class","unsupportedIterableToArray","allowArrayLike","normalCompletion","didErr","_e2","possibleConstructorReturn","superPropBase","receiver","_r","assertThisInitialized","Op","iteratorSymbol","asyncIteratorSymbol","asyncIterator","toStringTagSymbol","innerFn","outerFn","tryLocsList","protoGenerator","Generator","generator","makeInvokeMethod","tryCatch","ContinueSentinel","GeneratorFunction","GeneratorFunctionPrototype","getProto","NativeIteratorPrototype","Gp","defineIteratorMethods","_invoke","AsyncIterator","PromiseImpl","invoke","__await","unwrapped","previousPromise","callInvokeWithMethodAndArg","doneResult","delegate","delegateResult","maybeInvokeDelegate","_sent","dispatchException","methodName","resultName","nextLoc","pushTryEntry","locs","tryLoc","catchLoc","finallyLoc","afterLoc","tryEntries","resetTryEntry","completion","isGeneratorFunction","genFun","ctor","awrap","async","reverse","skipTempReset","rootRecord","rval","exception","handle","loc","caught","hasCatch","hasFinally","finallyEntry","thrown","isStrict","arrayWithHoles","iterableToArrayLimit","nonIterableRest","arrayWithoutHoles","iterableToArray","nonIterableSpread","hint","prim","isNativeFunction","_cache","objectWithoutPropertiesLoose","excluded","sourceSymbolKeys","sourceKeys","runtime","regeneratorRuntime","accidentalStrictMode","__webpack_module_cache__","cachedModule","__webpack_modules__","leafPrototypes","Action","_toPropertyKey","ResultType","PopStateEventType","createBrowserHistory","getUrlBasedHistory","globalHistory","_window$location","createLocation","usr","createPath","invariant","warning","cond","getHistoryState","parsePath","_ref$pathname","_ref$search","_ref$hash","parsedPath","hashIndex","searchIndex","getLocation","createHref","validateLocation","_options2","_options2$window","_options2$v5Compat","v5Compat","Pop","getIndex","handlePop","nextIndex","delta","createURL","origin","encodeLocation","Push","historyState","Replace","go","immutableRouteKeys","convertRoutesToDataRoutes","routes","detectErrorBoundary","parentPath","manifest","route","treePath","isIndexRoute","indexRoute","hasErrorBoundary","pathOrLayoutRoute","matchRoutes","locationArg","basename","stripBasename","branches","flattenRoutes","siblings","every","compareIndexes","routesMeta","childrenIndex","rankRouteBranches","matchRouteBranch","safelyDecodeURI","parentsMeta","flattenRoute","relativePath","caseSensitive","joinPaths","computeScore","_route$path","explodeOptionalSegments","exploded","segments","_segments","isOptional","restExploded","subpath","paramRe","dynamicSegmentValue","indexRouteValue","emptySegmentValue","staticSegmentValue","splatPenalty","isSplat","initialScore","some","segment","branch","matchedParams","matchedPathname","remainingPathname","matchPath","pathnameBase","normalizePathname","_compilePath","paramNames","regexpSource","matcher","compilePath","_compilePath2","captureGroups","splatValue","decodeURIComponent","safelyDecodeURIComponent","decodeURI","startIndex","nextChar","getInvalidPathError","field","dest","getPathContributingMatches","resolveTo","toArg","routePathnames","locationPathname","isPathRelative","isEmptyPath","toPathname","routePathnameIndex","toSegments","fromPathname","_ref3$search","_ref3$hash","resolvePathname","normalizeSearch","normalizeHash","resolvePath","hasExplicitTrailingSlash","hasCurrentTrailingSlash","AbortedDeferredError","ErrorResponse","internal","isRouteErrorResponse","validMutationMethodsArr","validMutationMethods","validRequestMethodsArr","validRequestMethods","redirectStatusCodes","redirectPreserveMethodStatusCodes","IDLE_NAVIGATION","formMethod","formAction","formEncType","formData","IDLE_FETCHER","IDLE_BLOCKER","proceed","ABSOLUTE_URL_REGEX","isBrowser","isServer","defaultDetectErrorBoundary","createRouter","inFlightDataRoutes","dataRoutes","future","v7_normalizeFormMethod","unlistenHistory","savedScrollPositions","getScrollRestorationKey","getScrollPosition","initialScrollRestored","hydrationData","initialMatches","initialErrors","getInternalRouterError","_getShortCircuitMatch","getShortCircuitMatches","router","pendingNavigationController","initialized","loader","historyAction","navigation","restoreScrollPosition","preventScrollReset","revalidation","loaderData","actionData","fetchers","blockers","pendingAction","pendingPreventScrollReset","isUninterruptedRevalidation","isRevalidationRequired","cancelledDeferredRoutes","cancelledFetcherLoads","fetchControllers","incrementingLoadId","pendingNavigationLoadId","fetchReloadIds","fetchRedirectIds","fetchLoadMatches","activeDeferreds","blockerFunctions","ignoreNextHistoryUpdate","updateState","completeNavigation","_location$state","_location$state2","isActionReload","isMutationMethod","_isRedirect","_step2","mergeLoaderData","_iterator2","deleteBlocker","getSavedScrollPosition","navigate","_x3","_navigate","_normalizeNavigateOpt2","submission","currentLocation","nextLocation","userReplace","blockerKey","normalizeNavigateOptions","shouldBlockNavigation","updateBlocker","startNavigation","pendingError","_x4","_x5","_x6","_startNavigation","routesToUse","loadingNavigation","_error","_getShortCircuitMatch2","notFoundMatches","_route","pendingActionData","actionOutput","_yield$handleLoaders","shortCircuited","startUninterruptedRevalidation","saveScrollPosition","overrideNavigation","cancelActiveDeferreds","isHashChangeOnly","AbortController","createClientSideRequest","findNearestBoundary","handleAction","pendingActionError","Request","handleLoaders","fetcherSubmission","_x7","_x8","_x9","_x10","_x11","_handleAction","actionMatch","boundaryMatch","interruptActiveLoads","getTargetMatch","routeId","callLoaderOrAction","isRedirectResult","startRedirectNavigation","isErrorResult","isDeferredResult","_x12","_x13","_x14","_x15","_x16","_x17","_x18","_x19","_x20","_handleLoaders","_callee5","activeSubmission","_getMatchesToLoad","_getMatchesToLoad2","matchesToLoad","revalidatingFetchers","_yield$callLoadersAnd","loaderResults","fetcherResults","redirect","_processLoaderData","didAbortFetchLoads","getMatchesToLoad","fetcher","revalidatingFetcher","callLoadersAndMaybeResolveData","findRedirect","processLoaderData","deferredData","markFetchRedirectsDone","abortStaleFetchLoads","getFetcher","_handleFetcherAction","_callee6","requestMatches","_error2","existingFetcher","abortController","fetchRequest","actionResult","loadingFetcher","revalidationRequest","loadId","loadFetcher","_getMatchesToLoad3","_getMatchesToLoad4","_yield$callLoadersAnd2","_processLoaderData2","doneFetcher","_context6","setFetcherError","isFetchActionRedirect","staleKey","_handleFetcherLoader","_callee7","_context7","resolveDeferredData","_x33","_x34","_x35","_startRedirectNavigation","_callee8","_window","redirectLocation","isDifferentBasename","redirectHistoryAction","_state$navigation","_context8","revalidate","_isFetchActionRedirect","_x36","_x37","_x38","_x39","_x40","_callLoadersAndMaybeResolveData","_callee9","currentMatches","fetchersToLoad","_context9","resolveDeferredResults","_cancelledDeferredRou","abortFetcher","deleteFetcher","controller","markFetchersDone","_step3","_iterator3","_step4","doneKeys","_iterator4","landedId","_step5","yeetedKeys","_iterator5","_step5$value","newBlocker","blocker","_entries","blockerFunction","cancelledRouteIds","dfd","cancel","userMatches","createUseMatchesMatch","initialize","enableScrollRestoration","positions","getPosition","getKey","_normalizeNavigateOpt","_x21","_x22","_x23","_x24","_x25","_x26","handleFetcherAction","_x27","_x28","_x29","_x30","_x31","_x32","handleFetcherLoader","getBlocker","_internalFetchControllers","_internalActiveDeferreds","_internalSetRoutes","newRoutes","isFetcher","isSubmissionNavigation","isValidMethod","stripHashFromPath","convertFormDataToSearchParams","hasNakedIndexQuery","append","getLoaderMatchesUntilBoundary","boundaryId","boundaryMatches","currentUrl","nextUrl","defaultShouldRevalidate","navigationMatches","currentLoaderData","currentMatch","isNew","isMissingData","isNewLoader","currentRouteMatch","nextRouteMatch","shouldRevalidateLoader","currentParams","nextParams","isNewRouteInstance","fetcherMatches","fetcherMatch","loaderMatch","shouldRevalidate","routeChoice","loadLazyRouteModule","_x60","_x61","_x62","_loadLazyRouteModule","_callee15","lazyRoute","routeToUpdate","routeUpdates","lazyRouteProperty","staticRouteValue","isPropertyStaticallyDefined","_context16","_x63","_x64","_x65","_x66","_x67","_x68","_x69","_x70","_x71","_x72","_callLoaderOrAction","_callee16","isStaticRequest","isRouteRequest","requestContext","runHandler","activeMatches","resolvedLocation","isSameBasename","_result$init","_result$init2","_context17","abortPromise","isResponse","isDeferredData","_step6","URLSearchParams","_iterator6","_step6$value","processRouteLoaderData","foundError","loaderHeaders","_processRouteLoaderDa","_revalidatingFetchers","newLoaderData","_step7","mergedLoaderData","_iterator7","eligibleMatches","_temp4","resolveData","_x73","_x74","_x75","_x76","_x77","_x78","_resolveDeferredResults","_callee17","_context19","isRevalidatingLoader","_context18","_x79","_x80","_x81","_resolveDeferredData","_callee18","_context20","unwrappedData","getAll","pathMatches","checkIfSnapshotChanged","inst","latestGetSnapshot","prevValue","nextValue","DataRouterContext","DataRouterStateContext","AwaitContext","NavigationContext","LocationContext","RouteContext","outlet","RouteErrorContext","useInRouterContext","useLocation","UNSAFE_invariant","useNavigate","_React$useContext2","routePathnamesJson","UNSAFE_getPathContributingMatches","activeRef","OutletContext","useResolvedPath","DefaultErrorComponent","useRouteError","lightgrey","preStyles","padding","backgroundColor","fontStyle","DataRouterHook","DataRouterStateHook","RenderErrorBoundary","errorInfo","routeContext","RenderedRoute","dataRouterContext","static","staticContext","errorElement","_deepestRenderedBoundaryId","_renderMatches","parentMatches","dataRouterState","renderedMatches","errorIndex","reduceRight","getChildren","useDataRouterContext","hookName","ctx","useDataRouterState","useCurrentRouteId","useRouteContext","thisRoute","useLoaderData","UseLoaderData","_state$errors","UseRouteError","AwaitRenderStatus","RouterProvider","fallbackElement","getState","Router","navigationType","Routes","Outlet","useOutlet","Route","_ref4$basename","basenameProp","_ref4$children","locationProp","_ref4$navigationType","_ref4$static","staticProp","navigationContext","_locationProp","_locationProp$pathnam","_locationProp$search","_locationProp$hash","_locationProp$state","_locationProp$key","locationContext","trailingPathname","dataRouterStateContext","routeMatch","parentParams","parentPathnameBase","locationFromContext","_parsedLocationArg$pa","parsedLocationArg","useRoutes","createRoutesFromChildren","neverSettledPromise","createSearchParams","parseHydrationData","__staticRouterHydrationData","deserializeErrors","serialized","_entries$_i","Link","absoluteHref","reloadDocument","_objectWithoutPropertiesLoose","UNSAFE_NavigationContext","isExternal","targetUrl","_React$useContext","_useResolvedPath","joinedPathname","useHref","internalOnClick","replaceProp","isModifiedEvent","shouldProcessLinkClick","useLinkClickHandler","NavLink","_ref5$ariaCurrent","ariaCurrentProp","_ref5$caseSensitive","_ref5$className","classNameProp","_ref5$end","styleProp","_excluded2","routerState","UNSAFE_DataRouterStateContext","nextLocationPathname","isActive","isPending","ariaCurrent","useSearchParams","defaultInit","defaultSearchParamsRef","hasSetSearchParamsRef","locationSearch","defaultSearchParams","setSearchParams","nextInit","navigateOptions","newSearchParams","_e$appendPosition","appendPosition","_e$collapse","collapse","_e$collapseDuration","collapseDuration","preventExitTransition","nodeRef","isIn","_t$classList2","_t$classList","scrollHeight","requestAnimationFrame","minHeight","margin","containerId","toastId","theme","isLoading","icon","emitQueue","off","cancelEmit","_objectWithoutProperties","viewBox","fill","spinner","toastKey","displayedToast","isToastActive","getToast","limit","_C$queue$shift","toastContent","toastProps","staleId","enableMultiContainer","updateId","toastStyle","fromEntries","_t","closeToast","toastClassName","bodyClassName","progressClassName","deleteToast","iconOut","onOpen","closeButton","getToastToRender","newestOnTop","containerRef","removalDistance","canCloseOnClick","canDrag","boundingRect","didMove","pauseOnHover","closeOnClick","draggable","draggableDirection","offsetWidth","draggablePercent","offsetHeight","_u$boundingRect","transform","pauseOnFocusLoss","hasFocus","onMouseDown","onTouchStart","onMouseUp","onTouchEnd","onMouseEnter","onMouseLeave","playToast","pauseToast","isRunning","toastRef","eventHandlers","_e$ariaLabel","ariaLabel","fillRule","_e$type","hide","controlledProgress","progress","rtl","animationDuration","animationPlayState","defaultClassName","role","hideProgressBar","bodyStyle","progressStyle","_C","pointerEvents","loading","update","dismiss","dark","clearWaitingQueue","POSITION","TOP_LEFT","TOP_RIGHT","TOP_CENTER","BOTTOM_LEFT","BOTTOM_RIGHT","BOTTOM_CENTER","INFO","SUCCESS","WARNING","ERROR","isBoolean","isNumber","isString","isStringWithLength","isStringOrRegExpArray","isSpanContext","traceId","isValid","SpanAttributes","initialValues","attributes","attribute","isInteger","intValue","doubleValue","boolValue","stringValue","attributeToJson","ResourceAttributes","_SpanAttributes","sdkName","sdkVersion","NANOSECONDS_IN_MILLISECONDS","isStringArray","samplingProbability","BatchProcessor","delivery","retryQueue","sampler","probabilityManager","encoder","batch","batchInactivityTimeoutMs","span","maximumBatchSize","_flush","batchTime","prepareBatch","setProbability","probability","spanProbability","raw","sample","SpanEvents","clock","timeUnixNano","toUnixTimestampNanoseconds","spanToJson","spanId","parentSpanId","startTimeUnixNano","endTimeUnixNano","endTime","toJson","SpanInternal","samplingRate","traceIdToSamplingRate","_samplingProbability","coreSpanOptionSchema","getDefaultValue","parentContext","makeCurrentContext","isFirstClass","TracePayloadEncoder","resourceAttributeSource","_encode","spans","resourceAttributes","jsonSpans","deliveryPayload","resourceSpans","resource","scopeSpans","generateSamplingHeader","spanCounts","existingValue","rawProbabilities","pairs","rawProbability","retryCodes","ProbabilityFetcher","_getNewProbability","timeBetweenRetries","PROBABILITY_REFRESH_MILLISECONDS","ProbabilityManager","persistence","probabilityFetcher","initialTimoutDuration","initialProbabilityTime","lastProbabilityTime","fetchNewProbabilityIn","newProbability","save","lastProbabilityTimeBeforeTimeout","getNewProbability","_create","persistedProbability","BufferingProcessor","scaleProbabilityToMatchSamplingRate","Sampler","initialProbability","_probability","scaledProbability","scaled","DefaultSpanContextStorage","_Symbol$iterator","backgroundingListener","contextStack","isInForeground","onBackgroundStateChange","onStateChange","span1","span2","removeClosedContexts","timeToNumber","convert","SpanFactory","processor","idGenerator","spanAttributesSource","spanContextStorage","openSpans","safeStartTime","generate","requestAttributes","spanEnded","safeEndTime","endSpan","warnings","cleanOptions","spanOptions","_Object$keys","option","InMemoryPersistence","persistedItems","_load","_save","toPersistedPayload","isDeviceId","InMemoryQueue","retryQueueMaxSize","requestQueue","payloads","spanCount","countSpansInPayload","_yield$_this$delivery","samplingProbabilityFromHeaders","asNumber","RequestTracker","startCallback","endCallbacks","endCallback","endContext","_endCallbacks","getAbsoluteUrl","baseUrl","absoluteUrl","createStartContext","inputIsRequest","isRequest","defaultSendPageAttributes","referrer","getPermittedAttributes","sendPageAttributes","isSendPageAttributes","allowedTypes","defaultRouteResolver","FullPageLoadPlugin","spanFactory","webVitals","onSettle","wasBackgrounded","autoInstrumentFullPageLoads","startSpan","permittedAttributes","routingProvider","resolveRoute","createPageLoadPhaseSpan","phase","shouldOmitSpan","getEntriesByType","unloadEventStart","unloadEventEnd","redirectStart","redirectEnd","fetchStart","domainLookupStart","domainLookupEnd","TCPHandshakeEnd","secureConnectionStart","connectEnd","connectStart","requestStart","responseStart","responseEnd","domContentLoadedEventStart","domContentLoadedEventEnd","loadEventStart","loadEventEnd","instrumentPageLoadPhaseSpans","attachTo","defaultNetworkRequestCallback","networkRequestInfo","isNetworkRequestCallback","permittedPrefixes","NetworkRequestPlugin","fetchTracker","xhrTracker","configEndpoint","networkRequestCallback","trackRequest","startContext","shouldTrackRequest","autoInstrumentNetworkRequests","onStart","prefix","getHttpVersion","ResourceLoadPlugin","PerformanceObserverClass","supportedEntryTypes","observer","getEntries","initiatorType","httpFlavor","nextHopProtocol","encodedBodySize","decodedBodySize","responseStatus","buffered","entryTypes","routeChangeSpanOptionSchema","trigger","RouteChangePlugin","autoInstrumentRouteChanges","previousUrl","previousRoute","listenForRouteChanges","stringUrl","routeChangeSpanOptions","validateSpanOptions","toPublicApi","MAX_CLOCK_DRIFT_MS","recalculateTimeOrigin","timeOrigin","isRoutingProvider","toHex","bits","randomValues","Settler","settled","isSettled","settledTime","DomMutationSettler","_Settler","restart","subtree","childList","settle","LoadEventEndSettler","settleUsingPerformance","entryType","isPerformanceNavigationTiming","timing","navigationStart","RequestSettler","requestTracker","urlsToIgnore","outstandingRequests","onRequestStart","shouldIgnoreUrl","regexp","SettlerAggregate","settlers","settlersAreSettled","BrowserPersistence","defaultRoutingProvider","WebVitals","observers","observeLargestContentfulPaint","observeLayoutShift","firstContentfulPaint","addEvent","timeToFirstByte","firstInputDelay","cumulativeLayoutShift","largestContentfulPaint","getEntriesByName","processingStart","hadRecentInput","previousStartTime","firstStartTime","visibilityState","backgroundingListenerCallback","backgroundStateChanged","_callbacks","createBrowserBackgroundingListener","defaultAttributes","permitted","configure","_Object$values","createSpanAttributesSource","calculatedTimeOrigin","createClock","makeBrowserPersistence","resourceAttributesSource","userAgentData","mobile","maybeAnonymousId","anonymousId","createResourceAttributesSource","fetchRequestTracker","originalFetch","baseURI","onRequestEnd","createFetchRequestTracker","xhrRequestTracker","xhr","trackedRequests","requestHandlers","originalOpen","originalSend","requestData","existingHandler","onReadyStateChange","createXmlHttpRequestTracker","PerformanceObserver","domMutationSettler","fetchRequestSettler","xhrRequestSettler","loadEventEndSettler","settler","onSettlePlugin","cooldown","settleIgnoreUrls","setUrlsToIgnore","createOnSettle","DefaultRoutingProvider","startRouteChangeSpan","originalPushState","absoluteURL","createDefaultRoutingProvider","BugsnagPerformance","bufferingProcessor","cleanConfiguration","validateConfig","deliveryFactory","retryQueueFactory","currentSpanContext","platformExtensions","keepalive","createFetchDeliveryFactory","instances","isBlazorPlatform","createInstance","classFunction","arrayParam","unbind","Uint16Array","msCrypto","combineArray","messageHandler","nameSpace","splits","isUndefined","fromObj","deleteObject","containerObject","temrObj","tempProp","deepmerge","keys_1","copied","deep","_loop_1","arguments_1","obj1","copy","isArrayChanged","blazorEventExtend","isBlazor","getUniqueID","definedName","compareElementParent","throwError","formatUnit","getElement","xPath","Node","evaluate","XPathResult","FIRST_ORDERED_NODE_TYPE","singleNodeValue","getInstance","elem","querySelector","HijriParser","defaultNumberingSystem","defaultNumberSymbols","latnNumberSystem","ParserBase","getMainObject","cName","getNumberingSystem","numberingSystems","reverseObject","propKeys_1","getSymbolRegex","regexStr","getSymbolMatch","matchKeys_1","constructRegex","convertValueParts","regex","getDefaultNumberingSystem","nSystem","getCurrentNumericOptions","curObj","numberSystem","needSymbols","blazorMode","cur","digits","numericPair","regExp","numberParseRegex","numericRegex","symbolNumberSystem","symbolMatch","getNumberMapper","mapper","numberSymbols","timeSeparator","latnNumberSystem_1","nPair","nRegex","blazorCurrencyData","dateCorrection","getHijriDate","gDate","tMonth","tYear","yPrefix","julilanOffset","julianNumber","tempMonth","modifiedJulianDate","iyear","cyc","iy","im","tempDay","iln","hYear","hmonth","hDate","toGregorian","julianDate","gDay","gMonth","gYear","abbreviateRegexGlobal","standalone","weekdayKey","timeSetter","datePartMatcher","DateFormat","dateFormat","culture","cldr","dependable","calendar","numObject","dateObject","formatOptions","isIslamic","isServerRendered","resPattern","skeleton","dateSeperator","numMapper","parser","parserObject","patternMatch_1","weekday","designator","eText","timeZone","intDateFormatter","dObject","getCurrentDateValue","matches_1","length_1","curval","curvalstr","processNumber","curstr","getDay","curlength","desig","dec","retu","timezone","pattern_1","hourFormat","gmtZeroFormat","getTimeZoneValue","gmtFormat","checkTwodigitNumber","tVal","curPattern","no","ishour","errorText","NumberFormat","numberFormatter","symbolPattern","fOptions","cOptions","dOptions","numericObject","numberMapper","currencySymbol","currency","defaultCurrencyCode","altSymbol","percentSymbol","minusSymbol","isCurrency","isPercent","isAccount","groupOne","checkValueRange","maximumSignificantDigits","minimumSignificantDigits","maximumFractionDigits","minimumFractionDigits","fractionDigits","useGrouping","nData","pData","groupSeparator","groupData","getGroupingDetails","minimumFraction","mval","maximumFraction","mfrac","lfrac","intNumberFormatter","primary","secondary","val1","val2","checkbothExist","isFraction","decide","dint","str1","str2","checkRange","curData","zeroData","fValue","processSignificantDigits","processFraction","minimumIntegerDigits","processMinimumIntegers","isCustomFormat","decimalPart","toExponential","customPivotFormat","groupNumbers","nlead","nend","toPrecision","level1","sep","decimalSymbol","level2","lead","decimal","latnRegex","minute","hour","DateParser","dateParser","numOptions","parseOptions","hourOnly","regexString","evalposition","patternMatch","gmtCorrection","zCorrectTemp","isgmtTraversed","nRegx","numbers","canUpdate","charKey","weekData","weekObject","monthData","hour12","periodValur","tzone","hpattern","parseTimeZoneRegx","parserRegex","parsedDateParts","internalDateParse","dobj","tDate","ystrig","is2DigitYear","getDateObject","setMilliseconds","setFullYear","tKeys_1","tValue","setDate","pDate","lDate","lastDay","setHours","tzValue","setMinutes","retOptions","props_1","curObject","matchString","internalNumberParser","tmatch","getZoneValue","tZone","splitStr","cRegex","ival","parseRegex","groupRegex","NumberParser","numberParser","custom","symbolpattern","symbolRegex","infinity","getParsedNumber","isNegative","tempValue","exponent","convertMaxFracDigits","decimalSplitValue","Observer","ranArray","boundedEvents","cntxt","notExist","isHandlerPresent","indexLocation","successHandler","blazorCallback","curObject_1","objs","isTrigger","obj_1","isJson","dateReviver","offIntlEvents","eventsArr","curContext","detectFunction","randomId","isRendered","boundedEvents_1","onIntlChange","rightToLeft","cldrData","defaultCulture","Internationalization","cultureName","getDateFormat","getCulture","getNumberFormat","getDateParser","getNumberParser","formatNumber","formatDate","parseDate","parseNumber","getDatePattern","isExcelFormat","IntlBase","getNumberPattern","isExcel","getFirstDayOfWeek","getNumericObject","numSystem","symbPattern","getDefaultDateObject","blazorCultureFormats","negativeDataRegex","customRegex","latnParseRegex","fractionRegex","defaultCurrency","patternRegex","dateConverterMapper","islamicRegex","firstDayMapper","formatRegex","currencyFormatRegex","curWithoutNumberRegex","typeMapper","getResultantPattern","blazorCulture","iType","compareBlazorDateFormats","basicPatterns","dPattern","tPattern","getDependables","calendartype","blazorDefaultObject","defaultObject","dateString","getSymbolPattern","ConvertDateToWeekFormat","convertMapper","tempString","curFormatMapper","getProperNumericSkeleton","patternMatcher","getFormatData","needFraction","cSymbol","fractionOnly","changeCurrencySymbol","groupPattern","fraction","fmatch","getCurrencySymbol","currencyCode","customNumberFormat","integerPart","spaceCapture","spaceGrouping","fractionPart","isCurrencyPercent","actual","fractionDigitsPattern","minDigits","maxDigits","minimumIntegerPattern","groupingPattern","dateParseRegex","monthIndex","days","customFormat","formatSplit","getDateSeparator","dateObj","getActualDateTimeFormat","actualPattern","tLength","timeZonePattern","options_1","getActualNumberFormat","minFrac","numrericObject","curMatch","curCode","hasNegativePattern","cPattern","processSymbol","getWeekData","firstDay","iCulture","replaceBlazorCurrency","aCurrency","rCurrency","iCurrency","pData_1","getWeekOfYear","weeknum","newYear","daynum","nday","headerRegex","Fetch","Ajax","emitError","eventArgs","httpRequest","stateChange","onLoad","onProgress","onprogress","onAbort","onabort","onUploadProgress","beforeSend","failureHandler","onFailure","responseText","dataType","getResponseHeader","responseHeaders","getAllResponseHeaders","isNOU","contentTypes","triggerEvent","fetchResponse","responseType","returnVal","REGX_MOBILE","REGX_IE","REGX_IE11","REGX_IOS","REGX_IOS7","REGX_ANDROID","REGX_WINDOWS","REGX_VERSION","REGX_BROWSER","OPERA","EDGE","CHROME","PANTHOMEJS","SAFARI","WEBKIT","MSIE","MOZILLA","browserDetails","Browser","extractBrowserDetail","browserInfo","clientInfo","getEvent","isPointer","isTouch","isDevice","move","getTouchStartEvent","getTouchEndEvent","getTouchMoveEvent","getTouchCancelEvent","isSafari","isIos","regX","maxTouchPoints","uA","isMSPointer","isWebView","cordova","PhoneGap","phonegap","forge","touchStartEvent","touchMoveEvent","touchEndEvent","touchCancelEvent","EventHandler","addOrGetEventData","__eventList","bindTo","intDebounce","debounceListener","eventFunction","isIE","clearEvents","copyData","eventProp","eventData_1","SVG_REG","styles","attrs","addClass","elements","classes","getClassList","ele","classList_1","curClass","removeClass","classList_2","classArr","visibility","prepend","fromElements","isEval","docFrag","createDocumentFragment","firstElementChild","executeScript","iKey","selector","needsVDOM","querySelectId","selectAll","charRegex","idList","splitId","setId","closest","setStyleAttribute","addClasses","removeClasses","msMatchesSelector","webkitMatchesSelector","isColEName","Base","isComplexArraySetter","allowServerDataBinding","isProtectedOnChange","changedProperties","oldProperties","bulkChanges","refreshing","ignoreCollectionWatch","finalUpdate","childChangedProperties","modelObserver","addInstance","setProperties","isDestroyed","muteOnChange","prevDetection","dataBind","serverDataBind","callChildDataBind","clearChanges","newChanges","oldChanges","onPropertyChanged","sfBlazor","updateModel","saveChanges","newValue","oldValue","moduleClass","getModuleName","ej2_instances","getObject","curKey","getObjectArray","isSetter","isFactory","curType","propertyGetter","propertySetter","oldVal","complexGetter","complexSetter","complexArrayGetter","defCollection","controlParent","extendFunc","complexArrayDefinedCallback","complexArraySetter","oldValueCollection","newValCollection","dFunc","keyString","getParentKey","model_1","getArrayModel","ejsAction","isControlParent","arrayFunction","modelObject","Property","propertyDescriptor","addPropertyCollection","Complex","eventDescriptor","finalContext","getParentContext","NotifyPropertyChanges","classConstructor","propertyType","propList","complexProps","colProps","propNames","complexPropNames","colPropNames","eventNames","curText","extendStatics","__","__decorate","decorators","decorate","Animation","easing","ease","linear","easeIn","easeOut","easeInOut","elasticInOut","elasticIn","elasticOut","Animation_1","animate","getModel","elements_1","element_1","delayAnimation","animationId","frameId","cancelAnimationFrame","animationMode","GlobalAnimationMode","Disable","begin","applyAnimation","prevTimeStamp","startAnimation","avg","timingFunction","newProp","oldProp","rippleEffect","rippleOptions","rippleModel","rippleFlag","isCenterRipple","getRippleModel","isRippleEnabled","rippleHandler","rippleUpHandler","rippleLeaveHandler","offsetX","offsetY","radius","sqrt","diameter","rippleElement","getComputedStyle","getPropertyValue","removeRipple","rippleElements","getElementsByClassName","accountURL","ModuleLoader","loadedModules","requiredModules","moduleList","reqLength","clearUnusedModule","modl","moduleList_1","modName","member","isModuleLoaded","moduleObject","memberName","getMemberName","isProperty","loadedModule","clean","usedModules","removableModule","removableModule_1","mod","ChildProperty","parentObj","isParentArray","updateChange","updateTimeOut","changeTime_1","curIndex","restrictServerDataBind","isSaveChanges","parent_1","parentKey","complexKeys","valueLength","componentList","bypassKey","LicenseValidator","isValidated","isLicensed","noLicense","trailExpired","versionMismatched","platformMismatched","invalidKey","licKey","setKey","npxManager","convertToChar","validateMsg","validateURL","getInfoFromKey","invalidPlatform","expiryDate","expDate","currDate","licenseContent","errorDiv","getDecryptedData","atob","pkey","decryptedStr","resultArray","isNpxKey","licKeySplit","licKeySplit_1","lKey","decodeStr","buffr","decryptedKey","licenseValidator","cArr","cArr_1","registerLicense","lastPageID","componentCount","lastHistoryLen","instancecount","isvalid","isBannerAdded","versionBasedStatePersistence","uniqueID","isStringTemplate","needsID","isReactHybrid","enableRtl","moduleLoader","localObserver","appendTo","enablePersistence","setPersistData","detachUnloadEvent","refresh","preRender","injectModules","accessMount","mount","getRootElement","actualElement","getLocalData","eleId","ej2StatePersistenceVersion","attachUnloadEvent","handleUnload","mergePersistData","bannerTemplate","errorBackground","createLicenseOverlay","renderComplete","wrapperElement","event_2","getInjectedModules","injectedModules","Inject","isVDOM","triggerStateChange","currentContext","calls","getPersistData","renderReactTemplates","clearTemplate","templateName","isHistoryChanged","pageID","addOnPersist","persistObj","objValue","getActualProperties","ignoreOnPersist","iterateJsonProperties","ignoreList","newList","this_1","defaultPosition","isDraggedObject","isDragged","Position","Draggable","dragLimit","Draggable_1","getDefaultPosition","borderWidth","diffX","prevLeft","prevTop","dragProcessStarted","eleTop","tapHoldTimer","externalInitialize","diffY","parentScrollX","parentScrollY","droppables","toggleEvents","scope","isUnWire","enableTapHold","mobileInitialize","removeTapholdTimer","tapHoldThreshold","getScrollableParent","axis","tempScrollHeight","tempScrollWidth","scrollWidth","getScrollableValues","curTarget","currentStateTarget","isDragStarted","abortSelectors","intCoord","getCoordinates","initialPosition","relativeXPosition","relativeYPosition","intDragStart","intDestroy","isPreventSelect","isChangeTouch","intCordinate","marginLeft","marginTop","marginRight","marginBottom","dragTarget","intClosest","isReplaceDragEle","currentStateCheck","calculateParentPosition","getMousePosition","isDragScroll","distance","getHelperElement","dragTargetElement","helperElement","parentClientRect","offsetParent","dragStart","getProperTargetElement","bindEvents","bindDragEvents","dragElement","dragArea","setDragArea","enableTailMode","enableScrollHandler","posValue","getProcessedPositionValue","dragElePosition","getDragPosition","intDrag","intDragStop","setGlobalDroppables","elementInViewport","offsetTop","offsetLeft","pageYOffset","pageXOffset","queryPositionInfo","docHeight","getDocumentWidthHeight","docWidth","drag","eleObj","checkTargetElement","hoverObject","triggerOutFunction","dragData","intOver","helper","tLeft","tTop","pagex","pagey","dLeft","dTop","enableAutoScroll","skipDistanceCheck","helperWidth","helperHeight","draEleTop","draEleLeft","iTop","iLeft","isDialogEle","tempDraEleTop","dragValue","scrollIntoView","getPathElements","scrollParent","getScrollParent","hasScroll","nodeEl","scrollingElement","nodeEle","elementTop","elementLeft","elementsFromPoint","intOut","docBody","docEle","dragStop","dragStopCalled","intDrop","change","eleWidthBound","eleHeightBound","elementArea","tborder","tpadding","lowerKey","prevStyle","elementFromPoint","oldEle","isdragscroll","dragEle","isOffsetParent","isVerticalScroll","cursorAt","sender","draggedElement","dropIns","getDropInstance","parentElement","eleInst","eleInst_1","Droppable","mouseOver","wireEvents","isDrag","isDropArea","canDrop","droppedElement","coord","KeyboardEvents","keyPressHandler","isAltKey","isCtrlKey","isShiftKey","curkeyCode","keyConfigs","configCollection_1","rconfig","rKeyObj","KeyboardEvents_1","getKeyConfigData","keyAction","unwireEvents","configCache","keyData","getKeyCode","keyVal","L10n","controlName","localeStrings","setLocale","intLocale","intGetControlConstant","currentLocale","localeObject","getConstant","SwipeSettings","swipeRegex","Touch","touchAction","tapCount","startEvent","updateChangeTouches","isTouchMoved","movedDirection","startPoint","lastMovedPoint","startEventData","hScrollLocked","vScrollLocked","tStampStart","timeOutTapHold","tapHoldEvent","moveEvent","endEvent","movedPoint","eScrollArgs","calcScrollPoints","startEvents","startX","startY","distanceX","distanceY","scrollDirection","velocity","getVelocity","timeOutTap","swipeFn","tap","tapThreshold","modeclear","endPoint","calcPoints","swipeArgs","swipeDirection","eSwipeArgs","tDistance","swipeSettings","swipeThresholdDistance","defaultArgs","canTrigger","scrollBool","isScrollable","moved","checkSwipe","modeClear","lastTapTime","eleStyle","overflowX","overflowY","eTapArgs","pnt","newX","newY","newT","xDist","yDist","LINES","QUOTES","IF_STMT","ELSEIF_STMT","ELSE_STMT","FOR_STMT","IF_OR_FOR","CALL_FUNCTION","NOT_NUMBER","WORD","DBL_QUOTED_STR","WORDIF","exp","ARR_OBJ","SINGLE_SLASH","DOUBLE_SLASH","WORDFUNC","WINDOWFUNC","compile","template","ignorePrefix","argName","evalExpResult","varCOunt","localKeys","isClass","singleSpace","matchStr","SPECIAL_CHAR","rlStr","addNameSpace","strs","HandleSpecialCharArrObj","rlStr_1","mtc","fnStr","fNameSpace","ftArray","splRegexp","arrObj","SlashReplace","NameSpaceForspecialChar","evalExp","addNS","tempStr","nameSpaceNew","quotes","NameSpaceArrObj","HAS_ROW","HAS_SVG","blazorTemplates","templateString","compiler","engineObj","templateId","blazorTemplateId","blazorId","initializeCSPTemplate","boundFunc","CSPTemplate","Engine","removeTags","removeAttrs","jsEvents","SanitizeHtmlHelper","beforeSanitize","selectors","tags","sanitize","serializeValue","wrapElement","removeXssTags","removeJsEvents","removeXssAttrs","tempEleValue","removeElement","nodes","localName","attr","hasAttribute","AuthContext","getToken","updateUser","signup","login","logout","forgotPassword","resetPassword","LoadingContext","setIsLoading","SearchBar","_jsxs","_jsx","rel","confirmAlert","TopBar","userFirstName","userLastName","confirm","class","Root","_Fragment","Footer","thisArg","kindOf","thing","kindOfTest","typeOfTest","isArrayBuffer","isPlainObject","isDate","isFile","isBlob","isFileList","isURLSearchParams","_ref$allOwnKeys","allOwnKeys","_global","isContextDefined","TypedArray","isTypedArray","isHTMLForm","isRegExp","reduceDescriptors","reducer","descriptors","reducedDescriptors","ALPHA","DIGIT","ALPHABET","ALPHA_DIGIT","isBuffer","isFormData","FormData","isArrayBufferView","isStream","pipe","caseless","assignValue","targetKey","stripBOM","inherits","superConstructor","toFlatObject","sourceObj","destObj","propFilter","merged","searchString","lastIndex","forEachEntry","pair","matchAll","hasOwnProp","freezeMethods","toObjectSet","arrayOrString","toCamelCase","p1","p2","toFiniteNumber","generateString","alphabet","isSpecCompliantForm","toJSONObject","reducedValue","AxiosError","utils","description","customProps","axiosError","isVisitable","removeBrackets","renderKey","dots","predicates","PlatformFormData","metaTokens","indexes","visitor","defaultVisitor","useBlob","convertValue","isFlatArray","exposedHelpers","charMap","AxiosURLSearchParams","_pairs","toFormData","buildURL","serializedParams","serializeFn","hashmarkIndex","InterceptorManager","handlers","fulfilled","rejected","synchronous","runWhen","silentJSONParsing","forcedJSONParsing","clarifyTimeoutError","isStandardBrowserEnv","product","isStandardBrowserWebWorkerEnv","WorkerGlobalScope","protocols","buildPath","isNumericKey","isLast","arrayToObject","parsePropPath","DEFAULT_CONTENT_TYPE","defaults","transitional","transitionalDefaults","adapter","transformRequest","getContentType","hasJSONContentType","isObjectPayload","formDataToJSON","setContentType","helpers","toURLEncodedForm","formSerializer","_FormData","rawValue","stringifySafely","transformResponse","JSONRequested","strictJSONParsing","xsrfCookieName","xsrfHeaderName","maxContentLength","maxBodyLength","validateStatus","common","ignoreDuplicateOf","$internals","normalizeHeader","normalizeValue","matchHeaderValue","isHeaderNameFilter","AxiosHeaders","_Symbol$toStringTag","valueOrRewrite","rewrite","setHeader","_value","_header","_rewrite","lHeader","rawHeaders","tokensRE","parseTokens","deleted","deleteHeader","normalized","formatHeader","_this$constructor","targets","asStrings","computed","accessors","defineAccessor","accessorName","arg1","buildAccessors","accessor","transformData","fns","isCancel","__CANCEL__","CanceledError","expires","secure","cookie","toGMTString","buildFullPath","baseURL","requestedURL","relativeURL","combineURLs","originURL","msie","urlParsingNode","resolveURL","requestURL","samplesCount","firstSampleTS","timestamps","chunkLength","bytesCount","progressEventReducer","isDownloadStream","bytesNotified","_speedometer","speedometer","loaded","total","lengthComputable","progressBytes","estimated","requestHeaders","cancelToken","fullPath","onloadend","paramsSerializer","responseURL","ontimeout","timeoutErrorMessage","xsrfValue","withCredentials","isURLSameOrigin","cookies","onDownloadProgress","parseProtocol","knownAdapters","http","httpAdapter","xhrAdapter","adapters","nameOrAdapter","throwIfCancellationRequested","throwIfRequested","dispatchRequest","headersToObject","mergeConfig","config1","config2","getMergedValue","mergeDeepProperties","valueFromConfig2","defaultToConfig2","mergeDirectKeys","mergeMap","timeoutMessage","decompress","beforeRedirect","transport","httpAgent","httpsAgent","socketPath","responseEncoding","configValue","VERSION","validators","deprecatedWarnings","validator","formatMessage","opt","assertOptions","allowUnknown","Axios","instanceConfig","interceptors","configOrUrl","contextHeaders","boolean","function","requestInterceptorChain","synchronousRequestInterceptors","interceptor","responseInterceptorChain","chain","newConfig","generateHTTPMethod","isForm","CancelToken","resolvePromise","_listeners","onfulfilled","_resolve","HttpStatusCode","Continue","SwitchingProtocols","Processing","EarlyHints","Created","Accepted","NonAuthoritativeInformation","NoContent","ResetContent","PartialContent","MultiStatus","AlreadyReported","ImUsed","MultipleChoices","MovedPermanently","Found","SeeOther","NotModified","UseProxy","Unused","TemporaryRedirect","PermanentRedirect","Unauthorized","PaymentRequired","NotFound","MethodNotAllowed","NotAcceptable","ProxyAuthenticationRequired","RequestTimeout","Conflict","Gone","LengthRequired","PreconditionFailed","PayloadTooLarge","UriTooLong","UnsupportedMediaType","RangeNotSatisfiable","ExpectationFailed","ImATeapot","MisdirectedRequest","UnprocessableEntity","Locked","FailedDependency","TooEarly","UpgradeRequired","PreconditionRequired","RequestHeaderFieldsTooLarge","UnavailableForLegalReasons","InternalServerError","NotImplemented","BadGateway","ServiceUnavailable","GatewayTimeout","HttpVersionNotSupported","VariantAlsoNegotiates","InsufficientStorage","LoopDetected","NotExtended","NetworkAuthenticationRequired","axios","defaultConfig","Cancel","promises","spread","isAxiosError","formToJSON","API","use","sessionStorage","getPatients","addPatient","patient","post","updateSoapNote","getPatientRibbon","getNoteDetails","sendFeedback","feedback","getAppointments","addAppointment","appointment","editAppointment","getProviders","notifySuccess","toast","notifyError","intialPatientState","patientFname","patientLname","patientAge","patientGender","patientAllergies","NewPatient","hideNewPatient","updatePatientList","_useState2","patientData","setPatientData","handleAddNewPatient","updatePatientData","htmlFor","placeholder","tzTokenizeDate","dtf","dtfCache","testDateFormatted","Intl","DateTimeFormat","hourCycleSupported","hourCycle","getDateTimeFormat","formatToParts","filled","typeToPos","partsOffset","hackyOffset","newDateUTC","fullYear","millisecond","MILLISECONDS_IN_HOUR","MILLISECONDS_IN_MINUTE","timezoneZ","timezoneHH","timezoneHHMM","tzParseTimezone","timezoneString","isUtcDate","absoluteOffset","validateTimezone","timeZoneString","validIANATimezoneCache","isValidTimezoneIANAString","toUtcDate","calcOffset","fixedOffset","localTS","utcGuess","o2","o3","fixOffset","asUTC","asTS","over","DEFAULT_ADDITIONAL_DIGITS","dateTimePattern","plainTime","YY","YYY","YYYY","YYYYY","MM","DDD","MMDD","Www","WwwD","HH","HHMM","HHMMSS","toDate","dirtyOptions","additionalDigits","toInteger","dateStrings","timeString","splitDateString","parseYearResult","patternYYY","patternYYYYY","yearString","restDateString","centuryString","parseYear","validateDate","isLeapYear","isLeapYearIndex","validateDayOfYearDate","validateWeekDate","dayOfISOWeekYear","validateTime","seconds","parseTime","getTimezoneOffsetInMilliseconds","DAYS_IN_MONTH","DAYS_IN_MONTH_LEAP_YEAR","tzIntlTimeZoneName","timeZoneName","getDTF","partsTimeZone","tzNameMatch","hackyTimeZone","formatters","getTimeZoneOffset","dirtyDelimeter","delimeter","addLeadingZeros","timeZoneOffset","tzFormattingTokensRegExp","AzureSpeechRecognition","createSpeechServicesPonyfill","_useSpeechRecognition","setText","saveNote","soapNote","callbackPayload","patientId","triageBpm","triageTemp","triageDiastolic","triageSystolic","visitNote","visitId","confirmEndAppt","isListening","alt","renderNotesPanel","_ref$animate","_ref$className","_ref$lineColor","lineColor","_ref$id","_ref$children","_ref$dateText","dateText","_ref$dateStyle","dateStyle","_ref$dateComponent","dateComponent","_ref$dateInnerStyle","dateInnerStyle","_ref$bodyContainerSty","bodyContainerStyle","_ref$style","_ref$visibilitySensor","visibilitySensorProps","visible","setVisible","Loader","small","emailRegex","urlRegex","PatientDetails","getUpdatedPatientHistory","notesDetails","setNotesDetails","editNoteData","setEditNoteData","ribbonItems","setRibbonItems","showReferences","setShowReferences","showDischargeSummary","setShowDischargeSummary","_useState12","showDischargeInstructions","setShowDischargeInstructions","_useState14","showCodes","setShowCodes","_useState16","showSuperbill","setShowSuperbill","_useState18","showEditModal","setShowEditModal","timelineRef","visitSummaryIsLoading","summary","visitSummary","fetchData","newHistory","patientHistory","getVisitDetails","visitDetails","soap","visitSoapNote","subjective","visitSubjective","objective","visitObjective","assessment","visitAssessment","plan","visitPlan","superbill","visitSuperbill","codes","visitIcdCodes","reference","visitReference","dischargeSummary","visitDischargeSummary","dischargeInstructions","visitDischargeInstructions","copyToClipboard","clipboard","writeText","execCommand","editNote","note","fullNoteData","scrollTo","behavior","saveEditNote","updateNotePayload","renderList","listName","parsedList","renderBoldHeadings","renderReference","toggleReferences","renderSoapNote","noteSegments","renderedSoapNote","flatMap","genderLowerCase","displayGender","allergies","displayAllergies","rows","cols","SpeechToText","getDetailsCallback","newNote","newRibbonItem","visitDate","Timeline","localTimezone","resolvedOptions","appointmentDateTimeLocal","offsetMilliseconds","resultDate","utcToZonedTime","appointmentDateTimeFormatted","precededByQuotedSection","replaced","dateFnsFormat","TimelineItem","whiteSpace","visitDoctor","Patient","selectedPatient","setSelectedPatient","setPatientHistory","showNewPatient","setShowNewPatient","filteredPatients","setFilteredPatients","patients","revalidator","UseRevalidator","useRevalidator","getPatientHistory","patientRibbon","handleSelectPatient","searchTerm","filterPatients","StyleSheet","_insertTag","before","insertionPoint","container","isSpeedy","speedy","ctr","nonce","_proto","insert","rule","createStyleElement","sheet","styleSheets","ownerNode","sheetForTag","insertRule","cssRules","indexof","charat","strlen","sizeof","column","character","characters","caret","dealloc","delimit","whitespace","escaping","commenter","identifier","MS","MOZ","COMMENT","RULESET","DECLARATION","KEYFRAMES","rules","rulesets","pseudo","points","declarations","atrule","previous","scanning","ampersand","comment","declaration","ruleset","identifierWithPointTracking","getRules","toRules","fixedElements","compat","isImplicitRule","parentRules","removeLabel","defaultStylisPlugins","combine","createCache","ssrStyles","stylisPlugins","_insert","inserted","nodesToHydrate","attrib","currentSheet","finalizingPlugins","serializer","collection","middleware","shouldCache","registered","registerStyles","isStringTag","unitlessKeys","msGridRow","msGridRowSpan","msGridColumn","msGridColumnSpan","WebkitLineClamp","memoize","hyphenateRegex","animationRegex","isCustomProperty","isProcessableValue","processStyleName","styleName","processStyleValue","cursor","unitless","handleInterpolation","mergedProps","interpolation","__emotion_styles","anim","interpolated","createStringFromObject","previousCursor","cached","labelPattern","serializeStyles","stringMode","strings","identifierName","hashString","useInsertionEffectAlwaysWithSyncFallback","EmotionCacheContext","HTMLElement","withEmotionCache","ThemeContext","typePropName","Insertion","insertStyles","Emotion","cssProp","css","WrappedComponent","registeredStyles","classNames","rawClassName","getRegisteredStyles","newProps","Emotion$1","argsLength","createElementArgArray","createEmotionProps","ShadowRoot","_o","CSS","supports","contextElement","_y","visualViewport","frameElement","clientLeft","paddingLeft","clientTop","paddingTop","assignedSlot","insertable","freeze","_o3","_o3$ancestorScroll","ancestorScroll","_o3$ancestorResize","ancestorResize","_o3$elementResize","elementResize","_o3$animationFrame","animationFrame","ResizeObserver","StateManagedSelect","baseSelectProps","_ref$defaultInputValu","defaultInputValue","_ref$defaultMenuIsOpe","defaultMenuIsOpen","_ref$defaultValue","propsInputValue","inputValue","propsMenuIsOpen","menuIsOpen","propsOnChange","propsOnInputChange","onInputChange","propsOnMenuClose","onMenuClose","propsOnMenuOpen","onMenuOpen","propsValue","restSelectProps","stateInputValue","setStateInputValue","stateMenuIsOpen","setStateMenuIsOpen","stateValue","setStateValue","actionMeta","useStateManager","Select","StateManagedSelect$1","useLoading","Signup","firstName","setFirstName","lastName","setLastName","phone","setPhone","setEmail","userType","setUserType","emailIsValid","setEmailIsValid","passwordIsValid","setPasswordIsValid","setPassword","setErrorMessage","_useState20","isSignup","setIsSignup","_useLoading","updateEmail","updatePassword","autoComplete","usertype_id","Hello","isHover","setIsHover","Feedback","setFeedback","handleSubmit","Billing","billingLevel","newStatus","newUser","practice","practicePlanId","payment","Settings","Reset","password2","setPassword2","passwordIsValid2","setPasswordIsValid2","handleReset","handleForgotPassword","updatePassword2","ROOT","RTL","DEVICE_CLASS","MULTI_DRAG","ICON","ENABLE_CLASS","DISABLE_CLASS","TABLE_CONTAINER_CLASS","ALLDAY_CELLS_CLASS","ALLDAY_ROW_CLASS","CONTENT_TABLE_CLASS","WORK_CELLS_CLASS","WORK_HOURS_CLASS","POPUP_OPEN","DATE_HEADER_WRAP_CLASS","DATE_HEADER_CONTAINER_CLASS","HEADER_CELLS_CLASS","OTHERMONTH_CLASS","CURRENTDATE_CLASS","CURRENT_PANEL_CLASS","PREVIOUS_PANEL_CLASS","NEXT_PANEL_CLASS","TRANSLATE_CLASS","EVENT_TABLE_CLASS","RESOURCE_GROUP_CELLS_CLASS","RESOURCE_TEXT_CLASS","RESOURCE_COLUMN_WRAP_CLASS","RESOURCE_COLUMN_TABLE_CLASS","RESOURCE_CHILD_CLASS","RESOURCE_PARENT_CLASS","RESOURCE_EXPAND_CLASS","RESOURCE_COLLAPSE_CLASS","RESOURCE_TREE_ICON_CLASS","RESOURCE_CELLS_CLASS","TIME_CELLS_WRAP_CLASS","TIME_SLOT_CLASS","CURRENT_TIME_CLASS","CURRENT_TIMELINE_CLASS","PREVIOUS_TIMELINE_CLASS","HIDE_CHILDS_CLASS","SCROLL_CONTAINER_CLASS","TIMELINE_WRAPPER_CLASS","APPOINTMENT_WRAPPER_CLASS","DAY_WRAPPER_CLASS","RESOURCE_TOOLBAR_CONTAINER","HEADER_TOOLBAR","RESOURCE_HEADER_TOOLBAR","SELECTED_CELL_CLASS","WEEK_NUMBER_WRAPPER_CLASS","WEEK_NUMBER_CLASS","WRAPPER_CONTAINER_CLASS","APPOINTMENT_CONTAINER_CLASS","APPOINTMENT_CLASS","BLOCK_APPOINTMENT_CLASS","BLOCK_INDICATOR_CLASS","APPOINTMENT_BORDER","APPOINTMENT_DETAILS","SUBJECT_WRAP","RESOURCE_NAME","APPOINTMENT_TIME","TABLE_WRAP_CLASS","OUTER_TABLE_CLASS","CONTENT_WRAP_CLASS","VIRTUAL_TRACK_CLASS","AGENDA_CELLS_CLASS","AGENDA_CURRENT_DAY_CLASS","AGENDA_SELECTED_CELL","MONTH_HEADER_CLASS","AGENDA_HEADER_CLASS","AGENDA_DATE_CLASS","NAVIGATE_CLASS","DATE_HEADER_CLASS","AGENDA_DAY_BORDER_CLASS","DATE_TIME_CLASS","AGENDA_NO_EVENT_CLASS","EVENT_INDICATOR_CLASS","EVENT_ICON_LEFT_CLASS","EVENT_ICON_RIGHT_CLASS","EVENT_ACTION_CLASS","NEW_EVENT_CLASS","CLONE_ELEMENT_CLASS","CLONE_TIME_INDICATOR_CLASS","DRAG_CLONE_CLASS","EVENT_RESIZE_CLASS","RESIZE_CLONE_CLASS","LEFT_RESIZE_HANDLER","RIGHT_RESIZE_HANDLER","TOP_RESIZE_HANDLER","BOTTOM_RESIZE_HANDLER","EVENT_RECURRENCE_ICON_CLASS","EVENT_RECURRENCE_EDIT_ICON_CLASS","HEADER_ROW_CLASS","ALLDAY_APPOINTMENT_WRAPPER_CLASS","ALLDAY_APPOINTMENT_CLASS","EVENT_COUNT_CLASS","ROW_COUNT_WRAPPER_CLASS","ALLDAY_APPOINTMENT_SECTION_CLASS","APPOINTMENT_ROW_EXPAND_CLASS","APPOINTMENT_ROW_COLLAPSE_CLASS","MORE_INDICATOR_CLASS","CELL_POPUP_CLASS","EVENT_POPUP_CLASS","POPUP_HEADER_CLASS","POPUP_HEADER_ICON_WRAPPER","POPUP_FOOTER_CLASS","DATE_TIME_DETAILS_CLASS","QUICK_POPUP_EVENT_DETAILS_CLASS","EVENT_CREATE_CLASS","EDIT_EVENT_CLASS","DELETE_EVENT_CLASS","TEXT_ELLIPSIS","MORE_POPUP_WRAPPER_CLASS","MORE_EVENT_POPUP_CLASS","MORE_EVENT_DATE_HEADER_CLASS","MORE_EVENT_HEADER_DAY_CLASS","MORE_EVENT_HEADER_DATE_CLASS","MORE_EVENT_CLOSE_CLASS","MORE_EVENT_CONTENT_CLASS","MORE_EVENT_WRAPPER_CLASS","QUICK_DIALOG_OCCURRENCE_CLASS","QUICK_DIALOG_SERIES_CLASS","QUICK_DIALOG_FOLLOWING_EVENTS_CLASS","FOLLOWING_EVENTS_DIALOG","QUICK_DIALOG_DELETE_CLASS","QUICK_DIALOG_CANCEL_CLASS","QUICK_DIALOG_ALERT_OK","QUICK_DIALOG_ALERT_CANCEL","QUICK_DIALOG_ALERT_FOLLOWING","QUICK_DIALOG_ALERT_BTN_CLASS","EVENT_WINDOW_DIALOG_CLASS","FORM_CLASS","EVENT_WINDOW_ALL_DAY_CLASS","TIME_ZONE_CLASS","EVENT_WINDOW_REPEAT_CLASS","SUBJECT_CLASS","LOCATION_CLASS","LOCATION_DETAILS_CLASS","EVENT_WINDOW_START_CLASS","EVENT_WINDOW_END_CLASS","DESCRIPTION_CLASS","DESCRIPTION_DETAILS_CLASS","EVENT_WINDOW_TIME_ZONE_DIV_CLASS","EVENT_WINDOW_START_TZ_CLASS","EVENT_WINDOW_END_TZ_CLASS","EVENT_WINDOW_SAVE_ICON_CLASS","EVENT_WINDOW_CANCEL_BUTTON_CLASS","EVENT_WINDOW_SAVE_BUTTON_CLASS","EVENT_WINDOW_TITLE_TEXT_CLASS","EVENT_WINDOW_ICON_DISABLE_CLASS","EDIT_CLASS","EDIT_ICON_CLASS","DELETE_CLASS","DELETE_ICON_CLASS","CLOSE_CLASS","CLOSE_ICON_CLASS","ERROR_VALIDATION_CLASS","ALLDAY_ROW_ANIMATE_CLASS","HIDDEN_CLASS","DISABLE_DATES","POPUP_WRAPPER_CLASS","RESOURCE_MENU","RESOURCE_MENU_ICON","RESOURCE_LEVEL_TITLE","RESOURCE_TREE_POPUP_OVERLAY","RESOURCE_TREE_POPUP","RESOURCE_CLASS","RESOURCE_ICON_CLASS","RESOURCE_DETAILS_CLASS","DATE_TIME_ICON_CLASS","ICON_DISABLE_CLASS","AUTO_HEIGHT","READ_ONLY","MONTH_HEADER_WRAPPER","INLINE_SUBJECT_CLASS","INLINE_APPOINTMENT_CLASS","SCROLL_HIDDEN","ALLDAY_APPOINTMENT_SCROLL","ALLDAY_APPOINTMENT_AUTO","cellClick","actionBegin","actionComplete","actionFailure","navigating","renderCell","eventClick","eventRendered","popupOpen","popupClose","inlineClick","cellSelect","virtualScrollStart","virtualScrollStop","dataReady","eventsLoaded","contentReady","scroll","virtualScroll","scrollUiUpdate","uiUpdate","documentClick","cellMouseDown","MS_PER_DAY","MS_PER_MINUTE","getElementHeightFromClass","elementClass","cloneNode","getTranslateY","WebKitCSSMatrix","webkitTransform","m42","getTranslateX","m41","getWeekFirstDate","firstDayOfWeek","date1","getWeekLastDate","weekFirst","weekLast","firstDateOfMonth","lastDateOfMonth","getWeekNumber","setTime","tzOffsetBefore","tzOffsetDiff","resetTime","getDateInMs","localOffset","addDays","noOfDays","addMonths","noOfMonths","setMonth","getMaxDays","getStartEndHours","startHour","endHour","setSeconds","date2","getDaysCount","startDate","endDate","strTime","getDateFromString","pixelRatio","getScrollBarWidth","devicePixelRatio","availWidth","divNode","cssText","findIndexInData","resourceCollection","field_1","groupIDField","getOuterHeight","removeChildren","elementChildren_1","elementChild","isDaylightSavingTime","jan","jul","getUniversalTime","capitalizeFirstWord","inputString","toLocaleUpperCase","ViewBase","previousNextAction","isTimelineView","currentView","getContentRows","refreshHeader","refreshResourceHeader","lastElementChild","resTd","resourceBase","createResourceColumn","getDayName","getDayNames","globalize","getCalendarMode","isAdaptive","activeViewOptions","timeFormat","getTimeString","getTimelineDate","util","createEventTable","trCount","eventTable","cls","getEventRows","eventContainer","eventRows","row","uiStateValues","isGroupAdaptive","renderedResources","groupIndex","collapseRows","group","resources","hideResourceRows","createTableLayout","table","tbody","setAriaAttributes","getLabelText","createColGroup","lastRow","colSpan","colGroupEle","getScrollXIndent","scrollTopPanel","getDatesHeaderElement","scrollHeaderLabels","headerTable","colWidth","applyLeft","headerCells","isRtl","currentCell","tdLeft","hiddenLeft","headerCells_2","cell","classNames_1","headerCells_1","addAttributes","getHeaderBarHeight","headerBarHeight","headerModule","getHeaderElement","resHeader","renderPanel","setPanel","panel","getPanel","getDateSlots","renderDates","workDays","generateColumnLevels","getColumnLevels","colLevels","highlightCurrentTime","getStartDate","getEndDate","getStartHour","getStartEndTime","getEndHour","isCurrentDate","currentTimezoneDate","isCurrentMonth","displayDate","numberOfWeeks","activeView","getCurrentTime","isWorkDay","isWorkHour","getRenderDates","selectedDate","showWeekend","length_2","dayCount","agendaDaysCount","previousNextIconHandler","getNextPreviousDate","daysCount","weekLength","viewStr","localeObj","getDateRangeText","formatDateRange","longDateFormat","getMobileDateElement","setResourceHeaderContent","tdElement","tdData","resourceHeaderTemplate","resourceData","resourceHeaderTemplateName","getResourceHeaderTemplate","resourceText","textField","renderResourceMobileLayout","lastResourceLevel","renderResourceHeader","renderResourceTree","addAutoHeightClass","rowAutoHeight","getColElements","setColWidth","colElements","colWidth_1","resourceColumn","cssClass","headerCellColSpan","resetColWidth","colElements_1","getContentAreaElement","wireExpandCollapseIconEvents","treeIcons_1","onTreeIconClick","scrollToDate","scrollDate","scrollWrap","tdDate","dateElement","getContentTable","setPersistence","contentWrap","retainScrollPosition","conWrap","getViewStartDate","getResourceRenderDates","getViewEndDate","getAdjustedDate","timeScale","enable","resetColLevels","expandedResources","renderedCount","virtualScrollModule","getRenderedCount","lastLevel","byDate","setRenderedDates","Query","subQuery","isChild","distincts","queries","fKey","fromTable","lookups","expands","sortedColumns","groupedColumns","lazyLoad","using","dataManager","execute","always","executeQuery","DataUtil","executeLocal","cloned","subQuerySelector","isCountRequired","tableName","addParams","distinct","fields","expand","tables","fieldName","operator","ignoreCase","ignoreAccent","matchCase","Predicate","searchKey","fieldNames","comparer","fnOperators","sortBy","isFromGroup","sortByForeignKey","sorts","fnSort","filterQueries","sortByDesc","page","pageIndex","pageSize","take","nos","skip","hierarchy","selectorFn","foreignKey","requiresCount","aggregate","filterQueryLists","singles","filtered","isComplex","processOperator","and","combinePredicates","or","ornot","andnot","fromJson","fromJSONData","pred","isAnd","preds","consts","GroupGuid","notEndsWith","notStartsWith","wildCard","asteriskSplit","optionalSplit","like","fnAscending","fnDescending","localeCompare","extractFields","jsonArray","newData","aggregates","level","groupDs","isLazyLoad","jsonData","items","indx","childLevels","grouped","groupedArray","records","_loop_2","this_2","getVal","tempObj","_loop_3","aggs","buildHierarchy","pKey","grp","fKeyData","getFieldList","copyObj","lowerCaseNameSpace","upperCaseNameSpace","casing","ds","middle","ignoreDiacritics","diacritics","callAdaptorFunction","adaptor","fnName","getAddParams","adp","dm","reqParams","isCors","getGuid","rand","isNull","getItemFromComparer","castRequired","requiresCompleteRecord","processData","prepareQuery","sampledata","DataManager","requiresCounts","parseJson","predicateList","getPredicate","sorted","mainPred","childPred","cpre","serverTimezoneOffset","timeZoneHandling","sum","average","truecount","falsecount","operatorSymbols","odBiOperator","odUniOperator","odv4UniOperator","equal","expected","notequal","lessthan","greaterthan","lessthanorequal","greaterthanorequal","doesnotcontain","isnotnull","isnull","startswith","doesnotstartwith","isempty","isnotempty","wildcard","endswith","doesnotendwith","processSymbols","jsonText","iterateAndReviveArray","iterateAndReviveJson","jsonReviver","keys_2","ms","offSet","dateParse","toTimeZone","isUTC","secondsMs","utcFormat","hrs","mins","addSelfOffset","isGuid","jsonReplacer","arrayReplacer","keys_3","jsonDateReplacer","toUTC","utc","unix","toLocalTime","datefn","differenceString","localtimefn","norm","Adaptor","requestType","dataSource","pvt","processResponse","JsonAdaptor","processQuery","countFlg","keyCount","agg","lazyLoadData","lazyLoadGroup","getAggregate","onDemandGroupInfo","onPage","formGroupResult","onWhere","childLevel","aggQuery","batchRequest","changes","deletedRecordsLen","deletedRecords","addedRecords","changedRecords","onAggregates","onSearch","onSortBy","fnCompare","onGroup","onRange","onTake","onSkip","onSelect","keyField","UrlAdaptor","hierarchyFilters","getQueryRequest","groups","filters","searches","getFiltersFrom","getRequestQuery","pvtData","convertToQueryString","request1","selects","handleTimeZone","requests","isExpand","formRemoteGroupedData","getAggregateResult","getGroupedRecords","hasRecords","childGroupedRecords","batchUrl","crudUrl","removeUrl","changed","added","insertUrl","keyColumn","updateUrl","predicats","aggregateData","isServerGrouping","groupQuery","ODataAdaptor","multipartAccept","changeSet","batchPre","contentId","batchContent","changeSetContent","batchChangeSetContentType","updateType","onPredicate","requiresCast","getField","splittedStringValue","splittedValue","onComplexPredicate","onEachWhere","onEachSearch","onEachSort","onCount","settings","metaCheck","rootUrl","dataUrls","resourceTableName","dataCopy","emptyAndBatch","processBatchResponse","versionCheck","oDataCount","requiresFormat","keys_4","localTimeReplacer","convertObj","localTime","compareAndRemove","initialGuid","cid","cSet","generateInsertRequest","generateUpdateRequest","generateDeleteRequest","generateBodyContent","org","cIdx","jsonObj","exVal","changeGuid","RemoteSaveAdaptor","ODataV4Adaptor","onExpand","expanded","exArr","sel","close_1","combineVal","expandQueryIndex","ex","onDistinct","distinctFields","metaName","metaV4Name","dataUrl","dataCount","dataV4Count","WebApiAdaptor","Count","WebMethodAdaptor","updateKey","CustomDataAdaptor","getData","addRecord","updateRecord","deleteRecord","batchUpdate","CacheAdaptor","GraphQLAdaptor","getVariables","getQuery","datamanager","urlQuery","vars","variables","resData","generateCrudData","bData","crudData","getMutation","isCrudAction","isInsertAction","cacheAdaptor","guidId","forDel","requestTime","removeItem","generateKey","currentFilter","newQuery","cachedItems","crossDomain","persistQuery","isInitialLoad","offline","timeTillExpiration","cachingPageSize","enableCaching","jsonp","defaultQuery","isDataAvailable","ready","getPersistedData","persistedData","persistData","setPersistQuery","persistedQuery","allPredicates","predicateObj","nestedPredicates","nestedPredicate","setDefaultQuery","makeRequest","deffered","isCustomDataAdaptor","getDeferedArgs","extendRequest","fnSuccess","fnFail","isSelector","virtualSelectRecords","fnQueryChild","subDeffer","childArgs","subUrl","childReq","subData","isGraphQLAdaptor","fetchReqOption","virtualRecords","fetch_1","pResult","cResult","dofetchRequest","deff_1","fetch_2","successFunc","failureFunc","fetchDeffered","fetchFunc","fetch_3","clearPersistence","Gregorian","isMonthStart","getLeapYearDaysCount","getYearDaysCount","getYearLastDate","getMonthDaysCount","getMonthStartDate","getMonthEndDate","getExpectedDays","setValidDate","monthValue","beginDate","maxDay","addYears","isSameMonth","checkMonth","months","compareMonth","isSameYear","isLastMonth","Islamic","daysInMonth","getDaysInMonth","finalGDate","finalHDate","maxDate","firstDate","lastDate","updateDateObj","currentHijri","tempHijri","hDate1","Timezone","timezoneData","getTimezoneData","convertedDate","toLocaleString","fromOffset","toOffset","fromLocalOffset","toLocalOffset","removeLocalOffset","getLocalTimezoneName","Value","getMonthSummary","ruleObject","cldrObj","monthDay","setPosition","WEEKPOS","DAYINDEXOBJECT","excludeDate","startDayOfWeek","maximumCount","viewDate","calendarMode","newTimezone","MAXOCCURRENCE","cacheDate","extractObjectFromRule","calendarUtil","getCalendarUtil","modifiedDate","tempExcludeDate","tempDate","tz","parsedDate","getDateFromRecurrenceDateString","recExceptionCount","tempViewDate","until","maxOccurrence","dayIndex","rotate","setFirstDayOfWeek","DAYINDEX","freq","expectedCount","getDateCount","expectedDays","compareDates","validateRules","excludeDateHandler","dailyType","wkstIndex","weekState","weekCollection","wkst","startDateDiff","weekstartDate","weekendDate","compareTempDate","insertDataCollection","getStartDateForWeek","weeklyType","monthlyType","yearDay","weekNo","checkYearlyType","firstWeekSpan","minDate","stDate","weekNos","insertDateCollection","insertDatasIntoExistingCollection","processWeekNo","dateCollection","processYearDay","yearlyType","recDateString","zeroIndex","ruleType","validateMonthlyRuleType","monthlyDayTypeProcessforMonthFreq","isHavingNumber","HASNUMBER","currentMonthDate","currentDate","monthCollection","monthInit","datas","expectedDaysArray","SPLITNUMBERANDSTRING","setNextValidDate","filterDateCollectionByIndex","insertDateCollectionBasedonBySetPos","processDateCollectionforByDayWithInteger","newstr","getDayString","insertDateCollectionBasedonIndex","monthlyDayTypeProcess","monthlyDateTypeProcessforMonthFreq","ruleData","initializeRecRuleVariables","mainDate","processDateCollectionForByMonthDay","monthlyDateTypeProcess","recRuleVariables","isByMonth","validateProperDate","dates","dayCycleData","processWeekDays","initialDate","getMonthCollection","getDateCollectionforBySetPosNull","recurrenceCollections","recurrenceCollectionObject","expectedDaysArrays","arrPosition","getRecurrenceCollection","dayData","chDate","weekCount","firstOfMonth","numberOfDaysInMonth","used","weekIndex","validRules","REMOVENUMBERINSTRING","expectedDaysArr","rulesList","splitData","dayCycle","checkYear","expectedyearDay","startDateCollection","getYearDay","expectedMonth","expectedDate","sortedExpectedDays","expectedDaysNumberSplit","checkDayIndex","checkDate","TIMES","ON","EVERY","UNTIL","DAYS","WEEKS","MONTHS","YEARS","SU","MO","TU","WE","TH","FR","SA","getRecurrenceStringFromDate","roundDateValues","ListBase","EventBase","slots","isDoubleTapped","timeZonePropChanged","oldTimezone","eventFields","generateID","updateEventDateTime","processTimezoneChange","isPrinting","isPreventTimezone","processTimezone","recurrenceRule","recurrenceID","crudModule","crudObj","occurrence","eventsProcessed","Guid","generateGuid","recurrenceEvent_1","generateOccurrence","events_1","isBlock","filterEvents","blockData","blockData_1","eventObj","isAllDay","blockProcessed","getProcessedEvents","eventCollection","eventsData","eventCollection_1","timezonePropertyChange","processedData","timezoneConvert","startTimezone","endTimezone","startTz","endTz","tzModule","isReverse","filterBlockEvents","eStart","eEnd","getGroupIndexFromEvent","blockEvents","blockEvents_1","eventObj_1","appointments","resourceTdData","dataModule","getStartEndQuery","filterEventsByResource","sortByTime","filterEventsByRange","filteredEvents","groupOrder","appointmentsCollection","eventSettings","sortComparer","fieldMappings_1","d1","d2","customSorting","sortByDateTime","fieldMapping_1","object1","object2","d3","d4","d5","d6","sortFn","getSmallestMissingNumber","large","splitEventByDay","eventStartTime","eventEndTime","eventLength","isSpanned","splitEvent","dateRender","orgStart","orgEnd","ranges","cStart","slot","slotDates","slot_1","renderedDates","getRenderedDates","renderedDates_1","firstSlot","endIndex","hasBreak","isLeft","isRight","cloneEventObject","dateInRange","availSlot","availSlot_1","slot_2","getSelectedEventElements","removeSelectedAppointmentClass","selectedElements","isAlreadySelected","elementSelector","focusElements_1","addSelectedAppointments","getSelectedEvents","eventSelect","elementSelect","getEventByGuid","selectedAppointments","getSelectedAppointments","cells","preventFocus","removeSelectedClass","focusElement","isFocused","eventWindow","dialogObject","activeEle","selectedCell","getSelectedCells","activeEventData","keyboardInteractionModule","activeCellsData","selectCells","selectWorkCellByTime","selectedObject","nearestTime","isAllDayAppointment","targetArea","getAllDayRow","queryString","getCellDetails","levelIndex","levelName","idField","parentField","getIndexFromResourceId","fieldMapping","isFullDay","spannedEventPlacement","appointmentBorderRemove","wireAppointmentEvents","isPreventCrud","isReadOnly","isReadonly","readonly","eventTouchClick","eventDoubleClick","resizeModule","wireResizeEvent","dragAndDropModule","wireDragEvent","renderResizeHandler","spanEvent","allowResizing","resizeEdge","resizeHandler","isTop","isBottom","quickPopup","target_1","selectArgs","selectEventArgs","eventClickArgs","quickPopupHide","allowInline","inlineArgs","eventDoubleClickArgs","openEditor","currentAction","openRecurrenceAlert","getEventById","getEventIDType","getEventMaxID","resourceId","idType","maxId","isMultiple","eventObject","isMaxCount","eventRule","timeZoneDiff","maxCount","recurrenceException","generatedDates","occurrenceCollection","dates_1","clonedObject","getDSTAdjustedTime","followingID","occurDate","eventOffset","getDSTDiff","schOffset","getParentEvent","isParent","parentEvent","getFollowingEvent","getEventCollections","followObj","follow","childObj","followingCollection","followingEvent","getOccurrenceEvent","collections","fields_1","fieldValue","isFollowingEvent","parentStart","childStart","isFollowing","fieldKey","getOccurrencesByID","parentObject_1","event_3","getOccurrencesByRange","event_4","getDeletedOccurrences","recurrenceData","parentObject","deletedOccurrences","exDateString_1","exDate","childObject","applyResourceColor","alpha","getResourceColor","alphaColor","createBlockAppointmentElement","resIndex","isResourceEventTemplate","templateElement","eventSubject","subject","appointmentWrapper","eventTemplate","appointmentSubject","eventTemplateName","getAppointmentTemplate","setWrapperAttributes","getReadonlyAttribute","isBlockRange","isBlockAlert","event_5","dataCol","dataCol_1","getFilterEventsList","getSeriesEvents","deleteFutureEditEvents","futureEvents","deleteFutureEvent","deleteFutureEditEventList","delId","followingId","startTimeQuery","getEditedOccurrences","delEditedEvents","deleteRecurrenceEventList","deleteFutureEditEventList_1","event_6","delEventQuery","filteredDates","isValidEvent","schedule","isHourRange","isSameRange","allDayExpandScroll","dateHeader","indentHeight","updateEventMinimumDuration","startEndHours","minimumEventDuration","tempEnd","tempStart","createEventWrapper","levels","appointmentWrap","innerWrapper","getPageCoordinates","renderSpannedIcon","iconElement","iconLeft","iconRight","iconTop","iconBottom","addCellHeight","eventHeight","eventGap","headerHeight","indHeight","isScrollUpdate","maxEventsPerRow","weekNumberRows","showWeekNumber","rows_1","allowVirtualScrolling","unWireEvents","appElements_1","VerticalEvent","renderedEvents","renderedAllDayEvents","overlapEvents","moreEvents","overlapList","allDayEvents","slotCount","allDayLevel","animationUiUpdate","renderAppointments","isSpecificResourceEvents","wrapperElements","isDragging","wrapperElements_1","sourceEvent","targetEvent","updateFocusedWorkCell","allDayElement","setAllDayRowHeight","expandCollapse","rowExpandCollapse","initializeValues","processBlockEvents","renderEvents","renderTemplates","cellHeight","getHeight","appHeight","appendEvent","appointmentElement","appLeft","getResourceList","dateCount","getStartCount","resources_1","filterEvents_1","setValues","renderBlockEvents","spannedData","isSpannedEvent","isWorkDayAvailable","blockTop","blockHeight","getTopValue","getDayIndex","isRender","allDayRowTop","renderedDate","filterEvents_2","renderAllDayEvents","enableMaxHeight","getOverlapIndex","renderNormalEvents","filterEvents_3","resources_2","hideNonWorkingDays","renderedIndex","dateIndex","firstColumn","currentResources","resourceDateTree","resourceIndex","getCssClass","createAppointmentElement","recordSubject","eventBase","getAnnouncementString","appointmentDetails","appointmentStartTime","appointmentEndTime","timeStr","appointmentTime","appointmentLocation","iconClass","recurrenceIcon","createMoreIndicator","allDayRow","currentDay","countWrapper","childElementCount","innerCountWrap","moreIndicatorElement","countCell","moreCount","eventDates","workDaysField","inline","cellTop","currentDates","appWidth","topValue","isDateRange","isAlreadyRendered","allDayDifference_1","allDayIndex_1","Index","widthAdjustment","appointmentElement_1","allDayRow_1","wIndex_1","eventWrapper_1","inlineModule","createInlineAppointmentElement","length_3","allDayRowHeight","addOrRemoveClass","appIndex","argsData","getEventWidth","tempData","adjustOverlapElements","maxHeight","subjectElement","tempWidth","getEventLeft","tempLeft","diffInMinutes","eventsList","date_1","appointmentList_1","appointment_1","recordStart_1","recordEnd_1","filterList","eventsList_1","appLevel","length1","length2","eleGuid","apps","enableAllDayScroll","moreEventCount","getEventHeight","eventElement","rowHeight","MonthEvent","monthHeaderHeight","moreIndicatorHeight","renderType","enableIndicator","withIndicator","maxOrIndicator","ignoreWhitespace","removeEventWrapper","appElement","appElement_1","appointmentWrapper_1","removeHeightProperty","cellTd","isHorizontalScroll","renderResourceEvents","renderEventsHandler","updateBlockElements","cssProperties","getCssProperties","isPreventScrollUpdate","scrollPosition","updateVirtualScrollHeight","totalCells_1","blockList","workCells","totalCells","height_1","cellDetail","cellWidth","getSlotDates","spannedEvents_1","sDate","getStartTime","updateIndicatorIcon","blockSpannedList","isSameDate","isBlockIcon","blockSpannedList_1","blockEvent","spannedEvents_2","isIcon","getEndTime","getIndexOfDate","getCellTd","renderBlockIndicator","diffInDays","appRight","appTop","getRowTop","blockElement","renderEventElement","blockIndicator","cloneData","actualStartTime","actualEndTime","actualStartHour","actualEndHour","sourceRes","slotData","isCloneElement","newRecord","getEventData","eventLocation","innerElement","appTime","appLocation","appendEventIcons","eventsPerRow","overlapCount","enableAppRender","inlineValue","updateCellHeight","indicator","getMoreIndicatorText","getMoreIndicatorElement","renderElement","moreIndicatorClick","blockElement_1","getFilteredEvents","getOverlapEvents","appointmentsList","appointments_1","moreArgs","isPopupOpen","viewName","getNavigateView","clickArgs","moreArgs_1","moreEventClick","changeView","isAppointment","setMaxEventHeight","wrapperEle","VerticalView","viewClass","isInverseTableSelect","baseCssClass","onContentScroll","removeNewEventElement","scrollLeftPanel","onAdaptiveMove","onAdaptiveScroll","leftPanel","getLeftPanelElement","timeCells","getScrollableElement","scrollerHeight","setContentHeight","scrollBarWidth","rtlBorder","rtlPadding","isDateHeaderScroll","border","isInitial","scrollToWorkHour","leftPanelElement","workHours","highlight","firstWorkHourCell","scrollToHour","headerElement","getTopFromDateTime","columnLevels","generateResourceLevels","setCalendarDate","updateDateRange","resourceLevel","resStartHour","startHourField","resEndHour","endHourField","workStartHour","workEndHour","dateCol","renderDates_1","isWorkHourRange","headerRows","showTimeIndicator","getCurrentTimeIndicatorIndex","changeCurrentTimePosition","currentTimeIndicatorTimer","clearCurrentTimeIndicatorTimer","updateCurrentTimeIndicatorTimer","currentDateIndex","removeCurrentTimeIndicatorElements","timeIndicator_1","firstRow","topInPx","rowIndex","timeCellsWrap","timeTrs","curTimeWrap","currentDateIndex_1","currentTimeEle","getWorkCellHeight","getTdContent","cntEle","dateHeaderTemplate","dateHeaderTemplateName","getDateHeaderTemplate","majorSlotTemplate","getMajorSlotTemplate","minorSlotTemplate","getMinorSlotTemplate","cellTemplate","cellTemplateName","getCellTemplate","renderHeader","renderLayout","clsList","renderContent","dateTd","renderDatesHeader","indentTd","renderLeftIndent","workTd","scrollContainer","renderTimeCells","renderContentArea","timesTd","renderVirtualTrack","nth","tbl","trEle","rowCount","ntr_1","data_1","getWeekNumberContent","createTd","renderHeaderIndentTemplate","ntr","appointmentExpandCollapse","createAllDayRow","ntd","wireCellEvents","thead","tdEle","isMinMaxDate","wireMouseEvents","workCellAction","cellDblClick","getTimeSlotRows","renderContentTable","tBody","renderContentTableHeader","createContentTd","clsName","getContentTdClass","cellDate","args_1","getEndDateFromStartDate","msInterval","msMajorInterval","msStartHour","msEndHour","milliSeconds","timeOffset","majorTickDivider","timeSlots","contentScrollableEle","scheduleTouchModule","resetValues","Day","Week","hasChild","collapsible","image","iconWrapper","anchorWrap","navigable","getFieldValues","dataItem","fieldData","isHeader","dataField","compileTemplate","defaultMappedFields","isChecked","iconCss","hasChildren","tooltip","htmlAttributes","urlAttributes","imageAttributes","imageUrl","groupBy","defaultAriaAttributes","listRole","itemRole","groupItemRole","itemText","wrapperRole","defaultListBaseOptions","showCheckBox","showIcon","enableHtmlSanitizer","ariaAttributes","listClass","itemClass","processSubChild","sortOrder","groupTemplate","headerTemplate","expandIconClass","moduleName","expandIconPosition","itemNavigable","createListFromArray","isSingleLevel","componentInstance","generateUL","createListItemFromArray","subChild","curOpt","getModuleClass","generateId","itemCreating","generateSingleLevelLI","generateLI","itemCreated","createListItemFromJson","checkboxElement","anchorElement","typeofData","curItem","innerEle","tooltipText","imageElemnt","insertAdjacentElement","createListFromJson","elementArray","addSorting","getDataSource","typeof","elementAttributes","getAllAttributes","subDS","subLi","innerElements","grpLI","elementID","anchorTag","isFullNavigation","anchorWrapper","uID","compiledString","compiledElement","groupTemplateID","templateID","innerDiv","liElement","ulElement","createList","getSiblingLI","isPrevious","siblingLI","liIndex","liCollections","groupDataSource","curFields","cusQuery","itemObj","grpItem","newtext","_id","createJsonFromElement","curEle","jsonAr","childs","anchor","i_1","hasChildNodes","attributes_1","renderContentTemplate","liCollection","currentID","renderGroupTemplate","headerItems","category","headerItems_1","headerData","generateIcon","AgendaBase","createAgendaContentElement","listData","aTd","listElement","noEvents","templateEle","appWrapper","createAppointment","appSubjectWrap","appSubjectText","strDate","allDayStr","displayStr","processAgendaEvents","spanned","wireEventActions","eventElement_1","getEventDetails","dateHeaderElement_1","agendaModule","dayNavigationClick","calculateResourceTableElement","agendaDate","agendaLastDate","resColl","lastLevelInfo","tempLastLevelInfo","tempIndex","finalDate","agendaCollection","hideEmptyAgendaDays","resDataCollection","resDayCollection","rowSpan","topResources","tempGroupedData","totalRowSpan","createResourceTableRow","renderEmptyContent","tContent","tContentCollection","parentCollection","rowSpanCollection","createDateHeaderElement","eTr","createTableRowElement","eTd","dTd","Agenda","agendaDates","virtualScrollTop","eventLoad","renderInitialContent","refreshEvent","refreshDate","emptyTBody","contentArea","contentChild","emptyTBody_1","appointmentFiltering","updateHeaderText","updateHeaderItems","filterData","nTr","cTd","agendaScrolling","virtualScrolling","filterDate","totalHeight","topElement","getElementFromScrollerPosition","getDateFromElement","getPreviousNextDate","scrollToValue","filterElement","showHeaderBar","getStartDateFromEndDate","dateStart","dateEnd","onAgendaScrollUiUpdate","getEvents","changeDate","ActionBase","daysVariation","actionObj","slotInterval","actionIndex","originalElement","excludeSelectors","navigationInterval","scrollInterval","scrollArgs","resizeEdges","scrollEdges","getChangedData","multiData","getOriginalElement","indexCol_1","cloneIndex_1","getResourceData","saveChangedData","isMultiSelect","eventsCollection","selectedData","eventsCollection_1","isSameResource","eveId","enableRecurrenceValidation","editOccurrenceValidation","saveEvent","calculateIntervalTime","intervalTime","getContentAreaDimension","viewElement","trElement","enableAdaptiveUI","getResourceElements","leftOffset","rightOffset","contentElements","minIndex","maxIndex","groupElements","cellIndex","updateTimePosition","timeElement","timeIndicator","wrapperClass","offsetValue","rightValue","leftValue","createCloneElement","cloneClassLists","eventDragArea","removeCloneElementClasses","removeCloneElement","dynamicEle_1","getCursorElement","pages","autoScroll","yIsScrollable","xIsScrollable","yInBounds","xInBounds","tdCollections","scrollBy","autoScrollValidation","boundaryValidation","actionClass","updateScrollPosition","scrollEventArgs","updateDraggingDateTime","updateResizingDirection","timeDelay","updateOriginalElement","getUpdatedEvent","dynamicYearlyEventsRendering","isResize","yearEvent","renderDynamicElement","dynamicEventsRendering","monthEvent","eventWrappers_1","TimelineEvent","cellTops","eventContainers","dayLength","workCell","slotsPerDay","appointments_2","trimStartTime","trimEndTime","getSortComparerIndex","getOverlapSortComparerEvents","appointmentsCollection_1","isDayProcess","top_1","renderApp","conWidth","isWithoutScroll","getFirstChild","adjustAppointments","moreIndicator","appPos","position_1","renderTimelineMoreIndicator","position_2","isAlreadyAvail","startDateTime","slotStartTime","slotEndTime","getFilterEvents","appArea","renderedAppCount","resourceCell","monthHeader","currentPercentage","blockIndicator_1","getNextDay","getPreviousDay","isSameDay","getSameDayEventsWidth","getSpannedEventsWidth","endWidth","startWidth","spannedWidth","getAppointmentLeft","slotTd","gIndex","indicatorPos","wrapIndex","YearEvent","isResource","yearViewEvents","removeCellHeight","timelineResourceEvents","timelineYearViewEvents","getMonths","months_1","monthDate","monthStart","monthEnd","cellHeader","wrapperCollection","eventWrapper","isSpannedCollection","wrapper_1","rowTd","dayStart","dayEnd","dayEvents","updateSpannedEvents","overlapIndex","availedHeight","moreIndicatorCount","MoreIndicator","moreIndex","renderMoreIndicator","renderEvent","appContainer","tr_1","overlap","isLeftRightResize","contentTable","isVerticalScrollbarAvail","renderResourceEvent","removeProperty","conTable_1","tr_2","appWrap","right_1","eventDatas","state_1","createEventElement","locationEle","subjectEle","startTimeEle","endTimeEle","eventStart","eventEnd","yearStart","firstMonthOfYear","yearEnd","monthsCount","updateSpannedEventDetails","originalStartTime","originalEndTime","viewStart","viewEnd","appEnd","timeCondition","DragAndDrop","widthUptoCursorPoint","heightUptoCursorPoint","cursorPointIndex","isHeaderRows","isTimelineDayProcess","widthPerMinute","heightPerMinute","minDiff","isStepDragging","isMorePopupOpened","isAllDayDrag","updatedData","swagData","isAllDayTarget","targetTd","isCursorAhead","dragHelper","dragPosition","setDragActionDefaultValues","allowMultiDrag","cloneRight","contentWrapRight","cloneBottom","eventGuid","dragArgs","getSelectedData","dragEventArgs","dragObj","timelineEventModule","verticalEvent","appEle","calculateMinutesDiff","targetElement","updateNavigatingPosition","isAllowDrop","currentGroupIndex","currentDate_1","viewNavigation","morePopupEventDragging","calculateTimelineTime","calculateVerticalDate","calculateVerticalTime","navigationWrapper","outWrapper","tarWrapper_1","elementHeight","getAllDayEventHeight","outerWrapperCls","targetWrapper","eventDuration","dragEnd","appendCloneElement","swapDragging","colIndex","getEventWrapper","index_1","updateAllDayEvents","dynamicWrappers_1","targetCellTime_1","startTimeDiff","index_2","updateMultipleData","updateEventHeight","startReferenceDate","endReferenceDate","timeDifference","endTimeDiff","differInDays","datesCount","indexGroup","dynamicIndex","splitEvents","filterQuery","renderSpannedEvents","timeDiff","allDayDifference","allDayElement_1","updateMultipleVerticalDate","getOffsetValue","getColumnIndex","cursorDrag","leftVal","cloneIndex","cursorIndex","getCursorCurrentIndex","widthDiff","getWidthDiff","eventSrt","targetDate","dataIndex","events_2","calculateResourceGroupingPosition","viewEle","targetLeft","dateLength","trCollection","translateY","scrollY","cursorElement","dropSelectors_1","Resize","resizeElement_1","resizeStart","resizeHelper","allowGroupEdit","resizeTarget","resizeArgs","resizeEventArgs","hRows","tdCollections_1","trRect","resizing","resizeStop","resizeValidation","leftStyles","getLeftRightStyles","horizontalResizing","rightStyles","topStyles","getTopBottomStyles","verticalResizing","bottomStyles","monthResizing","resizeTime","isSameCell","yearEventsRendering","monthDiff","getMonthDiff","getEventCount","isDateHeader","isTimeViews","isTimelineMonth","isWithoutScale","isLastCell","pixelsPerMinute","tdCollections_2","cellOffsetWidth","resizeDate","spanMinutes","originalWidth","isNotHourSlot","resizeEnd","clnHeight","clnTop","pageWidth","targetWidth","cloneWidth","viewDimension","isTimeScale","defaulthtmlkeys","delayUpdate","ComponentBase","mountingState","attrKeys","cachedTimeOut","isAppendCalled","initRenderCalled","isReactForeceUpdate","isReact","isshouldComponentUpdateCalled","isCreated","refreshChild","canDelayUpdate","renderReactComponent","portals","updateProperties","reactElement","nextProps","silent","dProps","statelessTemplates","propkey","isClassName","htmlattributes","compareValues","propsClsName","dpropsClsName","refreshProperties","processComplexTemplate","compTemplate","complexTemplate","PropVal","getDefaultAttributes","propKeys","controlAttributes","reactUid","multiline","syntheticEvent","value1","value2","tempVal","tempVal2","compareObjects","oldProps","lenSimilarity","diffArray","templateProps","_j","checkInjectedModules","prevModule","curModule_1","getInjectedServices","directivekeys","changedProps","directiveValue","validateChildren","skipRefresh","prevProperties","dKeys","compareOutput","_c1","allColumns","propInstance","changedProps_1","propInstance_1","appendReactElement","portal","ReactDOM","templateNames","tempPortal","propIndexCount","childCache","childs_1","ifield","getChildType","childProps","getChildProps","isDirective","subChild_1","accessProp","cacheVal","cachedValue","childs_2","isService","services","classObj","ComplexBase","stringCompiler","cEle","actTemplate","actData","rele","elementRect","popupRect","parentDocument","ViewDirective","ViewsDirective","globalTimeOut","DEFT_MAT_WIDTH","DEFT_MAT3_WIDTH","DEFT_FAB_WIDTH","DEFT_FLUENT_WIDTH","DEFT_BOOT_WIDTH","DEFT_BOOT4_WIDTH","DEFT_BOOT5_WIDTH","CLS_SHOWSPIN","CLS_HIDESPIN","CLS_MATERIALSPIN","CLS_MATERIAL3SPIN","CLS_FABRICSPIN","CLS_FLUENTSPIN","CLS_TAILWINDSPIN","CLS_BOOTSPIN","CLS_BOOT4SPIN","CLS_BOOT5SPIN","CLS_HIGHCONTRASTSPIN","CLS_SPINWRAP","CLS_SPININWRAP","CLS_SPINCIRCLE","CLS_SPINARC","CLS_SPINLABEL","CLS_SPINTEMPLATE","spinTemplate","spinCSSClass","createSpinner","internalCreateElement","makeElement","spinnerContainer","spinnerInnerContainer","inner_wrap","create_spinner_container","getTheme","defaultSize","calculateRadius","setTheme","labelEle","createLabel","replaceContent","innerContainer","random_generator","timeOut","create_material_element","mat_calculate_attributes","createMaterialSpinner","createMaterial3Spinner","create_fabric_element","fb_calculate_attributes","createFabricSpinner","createFluentSinner","svgBoot","viewBoxValue","trans","defaultRadius","bootCircle","create_bootstrap_element","rad","startArc","defineArcPoints","circleEle","boot_calculate_attributes","createBootstrapSpinner","createHighContrastSpinner","createBootstrap4Spinner","createBootstrap5Spinner","createTailwindSpinner","generateSeries","series","increment","formSeries","innerCon","themeClass","svgFabric","fabricCirclePath","fabricCircleArc","svgMaterial","matCirclePath","animateMaterial","spinnerInfo","globalInfo","previousId","strokeSize","getStrokeSize","mat_animation","updatePath","getDashOffset","createCircle","easeAnimation","transformOrigin","drawArc","PI","timecount","innerConainer","trgClass","centerX","centerY","circle","defineCircle","endArc","defineArc","angle","radians","cos","sin","showSpinner","showHideSpinner","isHide","spinnerWrap","spinWrapCollection","inner","svgEle","isAnimate","globalObject","globalVariables","timeOutVar","startMatAnimate","rotation","boot_animate","animateBootstrap","hideSpinner","targetContainer","fixedParent","calculatePosition","currentElement","positionX","positionY","targetValues","posX","posY","setPosx","getElementHCenter","setPosy","getElementTop","getElementRight","getElementVCenter","getElementLeft","getElementBottom","updatePosition","getBodyScrollTop","getBodyScrollLeft","popupWidth","fit","viewPortElement","elemData","containerWidth","getTargetContainerWidth","getViewPortWidth","containerLeft","ContainerLeft","containerRight","ContainerRight","overLeft","overRight","containerHeight","getTargetContainerHeight","getViewPortHeight","containerTop","ContainerTop","containerBottom","ContainerBottom","overTop","overBottom","isCollide","elemOffset","yAxis","topCollideCheck","xAxis","leftCollideCheck","topSide","rightSide","leftSide","bottomSide","flip","tEdge","TL","TR","BL","BR","eEdge","oldVisibility","edge","updateElementData","leftFlip","topFlip","scaleX","scaleY","transformStyle","matrix","DOMMatrix","setPopup","eStatus","deepCheck","collideSide","getTargetContainerLeft","getTargetContainerTop","windowWidth","documentReact","PositionData","CLASSNAMES","Popup","setEnableRtl","refreshPosition","setContent","actionOnScroll","wireScrollEvents","unwireScrollEvents","resolveCollision","checkCollision","relateTo","orientationOnChange","getRelateToElement","scrollRefresh","parent_2","relateToElement","targetVisible","isElementOnViewport","targetInvisibleStatus","scrollElement","scrollParents","parent_3","isElementVisible","checkGetBoundingClientRect","windowView","scrollX","outerWidth","outerHeight","elementView","parent_4","reposition","relateToElem","collision","checkFixedParent","parentDisplay","getAnchorPosition","anchorEle","eleRect","anchorRect","anchorPos","fixedElement","tempAnchor","calculateRelativeBasedPosition","targetType","callFlip","callFit","viewPortRect","horz","vert","show","animationOptions","relativeElement","fmDialogContainer","zIndexElement","getZindexPartial","showAnimation","hideAnimation","overflowRegex","parentStyle","parentZindex","childrenZindex","isEqualNode","siblingsZindex","finalValue","currentZindexValue","wrapperInitialize","WRAPPER","ejInstance","getTextNode","childnode","rippleMouseHandler","rippleSpan","IconPosition","selectedHandler","minWidth","maxWidth","containerElement","resizeWestWidth","cssClassName","Button","removeRippleEffect","tempContent","setIconCss","controlStatus","iconPosition","isToggle","btnClickHandler","click","focusIn","CLS_RTL","CLS_DISABLE","CLS_NAVARROW","CLS_NAVRIGHTARROW","CLS_NAVLEFTARROW","CLS_HSCROLLNAV","CLS_HSCROLLNAVRIGHT","CLS_HSCROLLNAVLEFT","CLS_DEVICE","CLS_OVERLAY","CLS_RIGHTOVERLAY","CLS_LEFTOVERLAY","HScroll","browser","browserCheck","customStep","ieCheck","uniqueId","touchModule","touchHandler","swipe","swipeHandler","scrollEle","scrollHandler","createOverlay","createNavIcon","setScrollState","scrollStep","scrollDiv","innerEle_1","ele_1","scrollItems","disable","navEles","rightOverlayEle","clsRight","rightEle","navItem","leftEle","eventBinding","rightAttributes","clsLeft","leftAttributes","navEle","navLeftItem","onKeyPress","keyTimer","keyTimeout","eleScrolling","onKeyUp","tapHold","tabHoldHandler","repeatScroll","clickEventHandler","trgt","scrollDis","isContinuous","rootEle","frameScrollRequest","swipeEle","scrollUpdating","scrollVal","scrollValue","arrowDisabling","addDisable","removeDisable","arrowIcon","navLeftEle","navRightEle","leftOverlay","rightOverlay","disEle","CLS_NAVUPARROW","CLS_NAVDOWNARROW","CLS_VSCROLLNAV","CLS_VSCROLLNAVUP","CLS_VSCROLLNAVDOWN","CLS_UPOVERLAY","CLS_DOWNOVERLAY","VScroll","scrollEventHandler","createOverlayElement","wheelEventHandler","scrollCnt","buildTag","scrollBar","navs","overlays","downOverlayEle","clsDown","downEle","upEle","clsUp","navElement","navUpItem","swipeElement","addDisableCls","removeDisableCls","navUpEle","navDownEle","upOverlay","downOverlay","CLS_VERTICAL","CLS_ITEMS","CLS_ITEM","CLS_SEPARATOR","CLS_POPUPICON","CLS_POPUPDOWN","CLS_POPUPOPEN","CLS_TEMPLATE","CLS_POPUPTEXT","CLS_TBARTEXT","CLS_TBAROVERFLOW","CLS_POPOVERFLOW","CLS_TBARNAV","CLS_TBARSCRLNAV","CLS_TBARCENTER","CLS_TBARPOS","CLS_HSCROLLBAR","CLS_POPUPCLASS","CLS_POPUP","CLS_TBARNAVACT","CLS_TBARIGNORE","CLS_POPPRI","CLS_HIDDEN","CLS_MULTIROW","CLS_MULTIROWPOS","CLS_MULTIROW_SEPARATOR","CLS_EXTENDABLE_SEPARATOR","CLS_EXTEANDABLE_TOOLBAR","CLS_EXTENDABLECLASS","CLS_EXTENDEDPOPOPEN","Item","Toolbar","resizeContext","resize","orientationChangeContext","orientationChange","moveLeft","moveRight","moveUp","moveDown","tab","home","isAngular","btnItems","tempId","destroyItems","trgtEle","ctrlTem","popObj","tbarAlign","tbarItemsCol","attrb","enableCollision","scrollModule","isVertical","isExtendedOpen","popupPriCount","clickHandler","allowKeyboard","wireKeyboardEvent","keyModule","keyActionHandler","docKeyDown","updateTabIndex","tabIndex","dataTabIndex","unwireKeyboardEvent","popCheck","overflowMode","destroyScroll","docEvent","clearProperty","tbarEle","tbarAlgEle","lefts","centers","rights","popEle","tbarItems","destroyMode","tempEle","popupRefresh","elementFocus","fChild","activeEleSwitch","clstElement","tbrNavChk","keyHandling","clst","navChk","scrollChk","popAnimate","eleFocus","popupCheck","extendedPopup","focusFirstVisibleEle","focusLastVisibleEle","popFrstEle","activeEleRemove","tbarScrollChk","eleContains","sib","tbrItems","isPopupElement","popupNav","popupClickHandler","clickedArgs","getElementOffsetY","renderControl","refreshOverflow","setStyle","ariaAttr","renderItems","renderOverflowMode","itemPositioning","checkPopupRefresh","separator","itemsAlign","itemEleDom","innerItem","innerPos","renderSubComponent","tbarItemAlign","align","showAlwaysInPopup","changeOrientation","initScroll","innerItems","checkOverflow","itemWidthCal","getScrollCntEle","eleWidth","itemWidth","popNav","scrollNav","navEleWidth","toolbarAlign","priorityCheck","offsetWid","removePositioning","setOverflowAttributes","createPopupEle","eleItem","multiVar","extendVar","eleInlineItem","innerNav","vertical","createPopupIcon","innerNavDom","checkPriority","createPopup","pushingPoppedEle","tbarObj","popupPri","eleHeight","sepHeight","poppedEle","nodeIndex","nodePri","tbResize","tbarElement","sepItem","extendEle","popupEle","popupInit","eleStyles","popup","borderRightWidth","tbarPopupHandler","isOpen","toolEle","popupElePos","popIcon","overflowHeight","tbEleData","popupOffset","inEle","pre","eleOffset","popPriority","eleWid","sepCheck","itemCount","itemPopCount","checkClass","rVal","mrgn","compuStyle","fstEleCheck","tbarEleMrgn","eleWid_1","sepEle","popedEle","tbarPriRef","sepPri","des","elWid","wid","ignoreCount","priEleCnt","eleSep","ignoreCheck","eleSepWidth","prevSep","previousElementSibling","isVer","popupEleWidth","popupEleRefresh","ignoreEleFetch","ignoreEle","ignoreInx","tbarWidth","tbarItemsWid","elWidth","btnText","btn","eleSplice","inlineStyles","sepBeforePri_1","refreshPositioning","tbarWid","popWid","itemEle","alignDiv","alignEle","leftAlign_1","ctrlTemplate","setAttr","enableItems","isEnable","itemElement","getElementByIndex","addItems","extendedOpen","itemsDiv","itemsRerender","itemAgn","items_1","algIndex","removeItems","removeItemByIndex","eleIdx","indexAgn","clearToolbarTemplate","btnItem","templateRender","templateProp","isComponent","itemType","templateFn","regEx","templateCompiler","tempArray","getDataTabindex","buttonRendering","iconPos","textStr","btnTxt","prefixIcon","suffixIcon","btnObj","tempDom","itemClick","showTextOn","sTxt","multirowele","updateHideEleTabIndex","eleIndex","nextEle","registeredTemplate","registeredTemplates","closestItem","rootNodes","tEle","changedProb","newProperty","popupPriCheck","booleanCheck","itemCol","hideItem","OTHERMONTH","OTHERDECADE","DEVICE","YEAR","MONTH","DECADE","DISABLED","OVERLAY","WEEKNUMBER","SELECTED","FOCUSEDDATE","OTHERMONTHROW","TODAY","LINK","CELL","ZOOMIN","DAYHEADERLONG","dayMilliSeconds","CalendarBase","effect","isPopupClicked","isDateSelected","isTodayClicked","preventChange","previousDates","rangeValidation","calendarEleCopy","todayDisabled","todayDate","calendarElement","createHeader","createContent","getDefaultKeyConfig","defaultKeyConfigs","controlUp","controlDown","pageUp","pageDown","shiftPageUp","shiftPageDown","controlHome","controlEnd","altUpArrow","spacebar","altRightArrow","altLeftArrow","checkDateValue","checkValue","setOverlayIndex","popupWrapper","popupElement","modal","minMaxUpdate","iconContainer","previousIcon","nextIcon","headerTitleElement","adjustLongHeaderSize","contentElement","createContentHeader","createContentBody","showTodayButton","createContentFooter","getCultureValues","culShortNames","dayFormat","dayHeaderFormat","getCultureObjects","toCapitalize","tableHeadElement","weekNumber","shortNames","shiftArray","renderYears","renderDecades","renderMonths","updateFooter","todayElement","l10","minimum","maximum","footer","todayButtonClick","keyConfig","navigateTitle","keyboardModule","keyActionHandle","dateWireEvents","serverModuleName","isCustomDate","depth","getViewNumber","navigateTo","resetCalendar","tableBodyElement","renderDayCellArgs","multiSelection","focusedDate","depthValue","levelRestrict","keyboardNavigate","selectDate","contentClick","isMonthYearRange","addDay","isMinMaxRange","navigatePreviousHandler","navigatePrevious","navigateNextHandler","navigateNext","navigateHandler","triggerNavigate","minMaxDate","localDate","tdEles","numCells","renderDays","islamicModule","islamicRenderDays","renderTemplate","islamicRenderTemplate","isTodayDate","currentMonth","titleUpdate","setStartDate","weekEle","weekAnchor","numberOfDays","weekRule","getWeek","dateFormatOptions","dayCell","dayLink","isOutOfRange","renderDayCellEvent","argsDate","otherMnthBool","disabledCls","getDateVal","copyValues","formatOptions_1","updateFocus","otherMonth","tableElement","removeTableHeadElement","valueUtil","curDate","mon","yr","curYrs","minYr","minMonth","maxYr","maxMonth","localMonth","localYr","startYr","endYr","startFullYr","endFullYr","startHdrYr","endHdrYr","startYear","rowIterator","findLastDay","classNm","otherMonthCell","iconHandler","islamicIconHandler","setAriaActiveDescendant","clickEventEmitter","eve","getIdValue","islamicPreviousHeader","islamicDate","getIslamicDate","switchView","validateValues","checkView","skipIndex","tempValueString","minFormatOption","minString","maxFormatOption","maxString","setValueUpdate","dayFormatOptions","monthFormatOptions","setActiveDescendant","focusedEle","selectedEle","previousIconHandler","nextIconHandler","compareYear","compareDecade","todayButtonEvent","stringVal","islamicPrevious","islamicNext","gregorianFormat","islamicFormat","tzOffset","setDateDecade","setDateYear","checkPresentDate","tempElement","selectedElement","previousValue","checkPrevious","navigatedEvent","navigatedArgs","modifier","findNextTD","rangeValue","tmpDate","inValue","toUTCString","Calendar","isMultiSelection","tempValues","copyDate","previousValues","setEnable","setClass","formResetHandler","setTimeZone","newCssClass","oldCssClass","isDayLightSaving","secondOffset","firstOffset","changedArgs","generateTodayVal","changeHandler","triggerChange","previousDate","previousDateTime","tempDays","islamicRenderYears","islamicRenderDecade","storeView","addDate","tempDates","removeDate","setTodayDate","changeEvent","isInteracted","HeaderRenderer","l10n","closeHeaderPopup","closestEle","closestPop","popupObj","hideHeaderPopup","headerPopup","toolbarEle","renderToolbar","toolbarItems","getToolbarItems","getItems","toolbarObj","clicked","toolbarClickHandler","prevNavEle","nextNavEle","updateAddIcon","updateActiveView","updateItems","getPopUpRelativeElement","setDayOfWeek","headerCalendar","setCalendarMinMaxDate","getCalendarView","setCalendarView","calendarView","selEle","viewIndex","textEle","dateRangeTemplate","dateRangeTemplateName","getDateRangeTemplate","addEle","allowAdding","getItemModel","propItem","tbItem","views","getItemObject","isItemInsidePopup","renderHeaderPopup","headerPopupEle","headerCalendarEle","isDisplayDate","hasSelectedDate","calendarChange","setCalendarTimezone","calendarDate","calculateViewIndex","isSameTime","isSelectedDate","currentTime_1","toolbarPopUp","selectedTime","classType","dateRangeEle","getCurrentViewDates","isCustomMonth","setWidth","setHeight","setDimensions","ScheduleTouch","touchObj","tapHoldHandler","onTransitionEnd","touchLeftDirection","touchRightDirection","allowSwiping","timeStampStart","isScrollTriggered","nextPanel","prevWidth","previousPanel","swipeDate","offsetDist","swapPanels","transitionDuration","confirmSwipe","cancelSwipe","tapHoldEventPopup","nextPrevType","currentPanel","navArgs","translateX","refreshDataManager","KeyboardInteraction","selectedCells","downArrow","upArrow","rightArrow","leftArrow","shiftDownArrow","shiftUpArrow","shiftRightArrow","shiftLeftArrow","ctrlLeftArrow","ctrlRightArrow","altOne","altTwo","altThree","altFour","altFive","altSix","altSeven","altEight","altNine","backspace","shiftTab","ctrlShiftUpArrow","ctrlShiftDownArrow","ctrlShiftLeftArrow","ctrlShiftRightArrow","processDown","processUp","processLeft","processRight","processViewNavigation","processEnter","focusFirstCell","processTab","processDelete","processCtrlShiftNavigationArrows","processEscape","processFTwelve","getSelectedElements","onCellMouseDown","initialTarget","getClosestCell","onMouseSelection","onMoveUp","selectionEdges","isPreventAction","queryStr","cellData","convertToEventData","showQuickPopup","quickInfoOnSelectionEnd","cellArgs","resourceIcon","inlineCrudActions","cellDetails","getCells","isInverseTable","tableEle","isTimelineYear","maxRow","maxColumn","inverseCells","focusCell","getWorkCellElements","targetCell","initialId_1","views_1","allowMultipleRow","removeInlineAppointmentElement","allowMultiRowSelection","isGroupYear","resourceSelectedCells","selectedCells_1","allowMultiCellSelection","allDayCells","getAllDayCells","resourceAllDayCells","allDayCells_1","addSelectedClass","selectAppointment","getAppointmentElements","nextAppEle","targetIndex","selectAppointmentElementFromWorkCell","appointmentElements_1","getUniqueAppointmentElements","filteredElements_1","selectedDate_1","focusElements","getAppointmentElementsByGuid","startCell","endCell","appointmentElements","getWorkCellFromAppointmentElement","viewCollections","cancelUpDownAction","isVerticalYear","isGroup","selectedEventElements","moreEventWrapper","quickPopupWrapper","getQuickPopupElement","tableRows","getTableRows","curRowIndex","getVerticalUpDownCell","getHorizontalUpDownCell","getYearUpDownCell","isUp","dateAttr","processLeftRight","sectionRowIndex","columnIndex","isCancelLeftRightAction","prevent","isMonthEnd","calculateNextPrevDate","getTimelineYearTargetCell","changeTargetCell","getHorizontalLeftRightCell","curColIndex","maxColIndex","allDayRow_2","getVerticalLeftRightCell","initialId","nextPrevDate","getFocusableElements","processTabOnPopup","focusableElements","firstEle","footerEle","lastEle","appSelector","appElements","focusAppointment","virtual","averageRowHeight","setScrollPosition","resCellSelector","preventScroll","processTabOnResourceCells","allowDeleting","deleteClick","eventEle","onClosePopup","morePopup","tabElements","currentTabIndex","nextTabElement","resColWrap_1","initDataManager","generateQuery","enableLazyLoading","resIdCollection_1","resId","groupId","includeFiltersInQuery","dateQuery","recurrenceQuery","InlineEdit","inlineEdit","moreWrapper","cellEdit","eventEdit","saveObj","generateEventData","getEventDaysCount","createVerticalViewInline","createMonthViewInline","createTimelineViewInline","inlineSubject","subEle","subjectWrap","setSelectionRange","allDayElements","saveObject","monthCellSelector","monthModule","timelineView","inlineElement","setDefaultValueToObject","setResourceValues","eventTarget","eventDetails","inlineData","inlineAppointmentElement","inlineDetails","inlineAppointment","RESIZE_HANDLER","FOCUSED_HANDLER","DIALOG_RESIZABLE","RESTRICT_LEFT","RESIZE_WITHIN_VIEWPORT","dialogBorderResize","originalHeight","originalX","originalY","originalMouseX","originalMouseY","setLeft","previousWidth","setBorderResizeElm","calculateValues","borderBottom","getDOMElement","domElement","resizers","borderResizers","getEventType","targetEle","onMouseMove","dialogResizeElement","coordinates","resizeTowards","resizeSouth","resizeNorth","resizeWest","resizeEast","getClientRectValues","containerRectValues","documentHeight","calculateValue","currentpageY","targetRectValues","calculatedHeight","borderValue","topWithoutborder","targetTop","calculatedTop","boundaryRectValues","currentHeight","rectValues","documentWidth","calculatedWidth","left_1","removeResize","DialogUtility","ButtonProps","AnimationSettings","DLG_HEADER_CONTENT","DLG_HEADER","DLG_FOOTER_CONTENT","MODAL_DLG","DLG_CLOSE_ICON","DLG_TARGET","SCROLL_DISABLED","FULLSCREEN","DLG_CLOSE_ICON_BTN","DLG_SHOW","DLG_UTIL_DEFAULT_TITLE","DLG_UTIL_ROOT","DLG_UTIL_ALERT","DLG_UTIL_CONFIRM","DLG_RESIZABLE","DLG_RESTRICT_LEFT_VALUE","DLG_RESTRICT_WIDTH_VALUE","DLG_USER_ACTION_CLOSED","Dialog","initRender","enableResize","setResize","animationSettings","getMinHeight","initializeValue","dlgClosedBy","headerContent","allowMaxHeight","preventVisibility","clonedEle","closeIconClickEventHandler","dlgOverlayClickEventHandler","overlayClickEventArgs","focusContent","checkPositionData","prevOnChange","updatePersistData","isNumberValue","getEle","computedHeaderHeight","computedFooterHeight","minimumHeight","footerHeight","onResizeStart","dialogObj","onResizing","onResizeComplete","isBlazorServerRender","computedHeight","computedWidth","resizeHandles","directionValue","isModal","resizeBegin","resizeComplete","boundary","directions","proxy","createResize","wireWindowResizeEvent","unWireWindowResizeEvent","getFocusElement","keyDown","buttonObj","ftrTemplateContent","contentEle","isTagName","isContentEdit","primaryButtonEle","buttonIndex_1","firstPrimary","buttonModel","setCSSClass","setMaxHeight","initialRender","setzIndex","calculatezIndex","setTargetContent","renderCloseIcon","footerTemplate","setButton","setFooterTemplate","allowDragging","setAllowDragging","setIsModal","dlgContainer","dlgOverlay","parentEle","refElement","resetResizeIcon","openEventArgs","unBindEvent","closeArgs","blur","storeActiveElement","positionChange","setEnableRTL","setOverlayZindex","getTargetContainer","setPopupPosition","targetValue","dialogConHeight","resizeIcon","zIndexValue","handleContent","buttonContent","buttonType","footerBtn","buttonClickHandler","isFlat","innerContentElement","setTemplate","templateValue","sanitizeHelper","isVue","dialogItem","isContent","headerEle","createHeaderContent","showCloseIcon","closeIcon","closeIconBtnObj","closeIconTitle","oldCSSClass","getValidFocusNode","disableElement","getAutoFocusNode","validNode","elementMatch","msGetRegionContent","bindEvent","updateSanitizeContent","insertAdjacentHTML","updateIsModal","buttonCount","setTarget","setPopupZindex","currentzIndex","windowResizeHandler","classArray","getDimension","isFullScreen","fullScreen","eventArgs_1","beforeOpenArgs","openAnimation","dialogOpen","closedBy","beforeCloseArgs","closeAnimation","getButtons","createDialog","formOptions","isDraggable","formButtonModel","buttonPropModel","buttonProps","alert","alertDialogObj","dialogElement","alertButtonModel","okButton","setAlertButtonModel","alertOptions","confirmDialogObj","okButtonModel","cancelButtonModel","cancelButton","setConfirmButtonModel","confirmOptions","Input","floatType","isBindClearAction","bindInitialEvent","checkInputValue","floatLabelType","getParentNode","calculateWidth","inputElement","inputParent","grandParent","_focusFn","_blurFn","wireFloatingEvents","createFloatingInput","inputObject","createInputContainer","customTag","floatLinelement","floatLabelElement","encodePlaceHolder","inputWrap","updateLabelState","validateLabel","checkFloatLabelType","updateIconState","wireClearBtnEvents","readOnly","tagClass","spanEle","setCssClass","oldClass","elementWidth","setPlaceholder","setReadonly","setEnabled","inputContainer","disabledAttrs","considerWrapper","removeAttributes","setClearButton","isClear","initial","clearButton","createClearButton","createSpanElement","labelSpanElement","_internalRipple","isRipple","argsButton","_onMouseDownRipple","_onMouseUpRipple","createIconEle","prependSpan","appendSpan","validateInputType","createInput","bindClearAction","showClearButton","setPropertyValue","removeFloating","inputEle","addFloating","iconEle","inputObj","isPrependIcon","floatLine","floatText","setRipple","addIcon","icons","internalCreate","result_2","ErrorOption","EMAIL","DATE_ISO","DIGITS","PHONE","CREDITCARD","FormValidator","validated","errorRules","allowSubmit","infoElement","selectQuery","localyMessage","defaultMessages","dateIso","creditcard","rangeLength","equalTo","localeFunc","afterLocalization","inputElements","createHTML5Rules","FormValidator_1","addRules","removeRules","rules_1","name_1","clearForm","getInputElement","validClass","elements_2","getErrorElement","hideMessage","defRules","acceptedTypes","allRule","defRules_1","defRule","annotationRule","ruleCon","ruleName","ruleFirstName","ruleSecondName","minvalue","maxvalue","customMessage","annotationMessage","getErrorMessage","isCheckable","focusOutHandler","keyUpHandler","submitHandler","resetHandler","hiddenType","validateHiddenType","vhPos","hPos","rules_2","errorRule","inputName","removeErrorRules","showMessage","createErrorElement","optionalValidationStatus","refer","currentRule","formElement","checkValidator","ruleValue","errorOption","errorContainer","customPlacement","checkRequired","inputType","dateOptions","dateValue","uNum","compareTo","Label","FieldValidator","renderFormValidator","formObj","errorPlacement","validationComplete","focusout","focusOut","ignoreError","createTooltip","dlgContent","inputClient","div","arrow","destroyToolTip","QuickPopups","isMultipleEventSelect","fieldValidator","renderQuickPopup","renderMorePopup","renderQuickDialog","quickPopupOpen","quickPopupClose","moreEventPopup","morePopupOpen","morePopupClose","renderButton","closeClick","navigationClick","dialogButtonClick","editFollowingEvents","followingSeriesButton","quickDialog","beforeClose","beforeQuickDialogClose","iconName","clickEvent","quickDialogClass","followingEventButton","applyFormValidation","validation","editDeleteOnly","editFollowingEventsOnly","editDeleteSeries","showQuickDialog","openRecurrenceValidationAlert","dialogCancel","openDeleteAlert","openValidationError","popupType","popupArgs","createMoreEventList","moreEventContentEle","moreEventWrapperEle","eventText","eventTitle","editAction","allowEditing","deleteAction","editIcon","editClick","deleteIcon","beforeQuickPopupOpen","isCellBlocked","showQuickInfo","newEventClone","subjectElement_1","destroyPopupButtons","quickCellPopup","getPopupHeader","getPopupContent","getPopupFooter","moreButton","detailsClick","saveButton","saveClick","isSameEventClick","editButton","isQuickTemplate","quickInfoTemplates","templateType","eventTooltip","updateTapHoldEventPopup","isSameTarget","quickEventPopup","buttonClass","deleteButton","headerType","headerArgs","headerTemp","getQuickInfoTemplatesHeader","getFormattedString","replaceAll","templateWrapper","subjectText","contentTemplate","contentArgs","contentTemp","getQuickInfoTemplatesContent","getResourceText","getRecurrenceSummary","getTimezone","locationDetails","descriptionDetails","resourceDetails","footerType","footerData","footerArgs","footerTemp","getQuickInfoTemplatesFooter","resourceValue","resourceCollection_1","id_1","resourceData_1","lastResource_1","resNames_1","lastResourceData_1","startDateDetails","endDateDetails","startTimeDetail","endTimeDetail","spanLength","moreEventElements","dialogEvent","updateMoreEventContent","moreElement","selectCell","cancelBtn","deleteEvent","isIgnoreOccurrence","eventSave","titleContent","zoneDetails","recurrenceEditor","getRecurrenceEditorInstance","ruleSummary","getRuleSummary","skeletonString","getDataFromTarget","cellsData","popupCloseArgs","isEventPopup","isVirtualScroll","conTable","collide","targetRect","previousOffset","applyEventColor","colorField","colorEle","borderLeftColor","editElement","popupData","isCellPopup","formvalidator","getObjectFromFormData","popupWrap","tar","popupName","buttonCollections_1","refreshQuickDialog","destroyQuickDialog","refreshQuickPopup","destroyQuickPopup","refreshMorePopup","destroyMorePopup","CLOSE","TOOLTIP_WRAP","CONTENT","ARROW_TIP","ARROW_TIP_OUTER","ARROW_TIP_INNER","TIP_BOTTOM","TIP_TOP","TIP_LEFT","TIP_RIGHT","POPUP_ROOT","POPUP_CLOSE","POPUP_LIB","POPUP_CONTAINER","Tooltip","mouseMoveEvent","mouseMoveTarget","isBodyContainer","formatPosition","tooltipPositionY","tooltipPositionX","renderArrow","setTipClass","tip","tipClass","tooltipEle","renderPopup","elePos","mouseTrail","getTooltipPosition","openPopupHandler","closePopupHandler","getScalingFactor","scalingFactors","elementsWithTransform","matrixValues","parentWithZoomStyle","offsetPos","calculateTooltipOffset","collisionPosition","calculateElementPosition","collisionLeft","collisionTop","collisionFlipFit","windowResize","findTarget","needTemplateReposition","tooltipEventArgs","opensOn","xScalingFactor","yScalingFactor","tipWidth","tipHeight","tooltipEleWidth","tooltipEleHeight","arrowEle","tipAdjust","tipHeightAdjust","tipWidthAdjust","tooltipEleRect","arrowEleRect","showTipPointer","updateTipPosition","adjustArrow","tipPosExclude","tooltipWidth","tooltipHeight","arrowInnerELe","tipPointerPosition","POINTER_ADJUST","tooltipContent","enableHtmlParse","tempArr","tempFunction","templateFunction","isSticky","tipClose","onStickyClose","existingCloseIcon","addDescribedBy","describedby","removeDescribedBy","orgdescribedby","autoCloseTimer","targetHover","touchEndHandler","targetClick","hideTooltip","closeDelay","targetList_1","ctrlId","restoreElement","showTooltip","mouseMoveBeforeOpen","mouseMoveBeforeRemove","showTimer","hideTimer","openDelay","beforeRenderArgs","beforeRenderCallback","tooltipBeforeRender","tooltipAfterRender","PopupAnimation","appendContainer","ctrlObj","observedArgs","beforeOpenCallback","openAnimation_1","viewContainerRef","horizontal","affectedPos","checkCollideTarget","newpos","collidedPosition","elePosVertical","elePosHorizontal","getOffSetPosition","elePosition","windowCollision","arrowleft","positionString","newPos","offsetType","isTooltipOpen","tooltipHide","popupHide","unwireMouseEvents","tooltipHover","tooltipMouseOut","onMouseOut","enteredElement","checkForTooltipElement","tooltipElementMouseOut","eventPageX","eventPageY","colpos","touchEnd","triggerList_1","getTriggerList","wireFocusEvents","targetList","targetsList","targetList_2","triggerList_2","unwireFocusEvents","targetList_3","triggerList_3","currentTarget_1","EventTooltip","tooltipObj","getTargets","beforeRender","onBeforeRender","onTooltipClose","headerTooltipTemplate","enableTooltip","resCollection","contentContainer","getHeaderTooltipTemplate","tooltipTemplate","tooltipSubject","tooltipLocation","startMonthDate","startMonthYearDate","endMonthYearDate","content_1","getEventTooltipTemplate","resetTemplates","CHECK","FRAME","INDETERMINATE","LABEL","RIPPLE","RIPPLECHECK","RIPPLEINDETERMINATE","containerAttr","CheckBox","isMouseClick","clickTriggered","validCheck","changeState","isInitialize","frameSpan","getWrapper","indeterminate","changeEventArgs","updateVueArrayModel","focusHandler","getLabel","initialCheckedValue","setDisabled","initWrapper","setHiddenInput","labelPosition","labelMouseDownHandler","labelMouseLeaveHandler","labelMouseUpHandler","rippleElem","labelWrap","updateHtmlAttributeToWrapper","formElem","FieldSettings","dropDownBaseClasses","DropDownBase","isPreventChange","isDynamicDataChange","addedNewItem","isAddNewItemTemplate","isRequesting","isVirtualizationEnabled","isAllowFiltering","virtualizedItemsCount","totalItemCount","isRemoteDataUpdated","isIncrementalRequest","getPropObject","oldProperty","getValueByText","checkValueCase","isTextByValue","typeOfData","dataSource_1","checkingAccent","checkIgnoreCase","getItemValue","checkNonIgnoreCase","compareValue_1","itemValue","textItem","typedText","getFormattedValue","baseTemplate","checkTemplate","l10nUpdate","noRecordsTemplate","actionFailureTemplate","actionFailureTemplateId","noRecordsTemplateId","tempaltecheck","noDataElement","liElem","componentLocale","getLocaleName","getTextByValue","allowCustomValue","enableRtlElements","jsonElement","resetList","setListData","renderItemsBySelect","updateDataAttribute","invalidAttr","getJSONfromOption","optionGroup","updateFields","scrollTimer","isRequested","isDataFetched","itemTemplateId","displayTemplateId","spinnerTemplateId","valueTemplateId","groupTemplateId","headerTemplateId","footerTemplateId","virtualGroupDataSource","emptyDataRequest","dataSource_2","updatePopupState","listItems","onActionComplete","bindChildItems","onActionFailure","queryElements","localDataArgs","itemTemplate","updateDataList","updateRemoteData","remainingItems","sortedData","updateListValues","raiseDataBound","findListElement","findNode","listArr","dataBoundEventArgs","spliceData","listElements","templateListItem","listOption","fixedHeaderElement","postRender","focusItem","selectedItem","updateVirtualizationProperties","filtering","listEle","groupcheck","groupValue","tempHeaders","isGroupChecking","createListItems","getSortedDataSource","fieldValues","setFloatingHeader","setFixedHeader","scrollStop","isDownkey","liHeight","getValidLi","topIndex","virtualListCount","isCount","groupListLength","loadedGroupList","updateGroupHeader","getPageCount","returnExactCount","pageCount","updateGroupFixedHeader","oldUlElement","virtualUlElement","replaceChild","updateListElements","createVirtualContent","incrementalLiCollections","incrementalUlElement","incrementalListData","itemcheck","liWidth","firstLi","getIndexByValue","getIndexByValueFilter","selectData","setFields","updateSelectElementData","isFiltering","updateSelection","updateDataSource","setUpdateInitial","updateData","setZIndex","isEmptyData","rippleFun","removeScrollEvent","addItem","itemsCount","selectedItemValue","itemCheck","addItemTemplate","updateActionCompleteData","updateAddItemList","listGroupItem","tempLi","validationAttribute","hidden","getDataByValue","prevString","tempQueryString","prevElementId","incrementalSearch","selectedIndex","elementId","queryStringUpdated","currentValue","isVirtual","strLength","indexUpdated","Search","inputVal","searchType","itemData","itemsData","filterValue","checkField_1","fieldValue_1","FLOATLINE","FLOATTEXT","LABELTOP","LABELBOTTOM","createFloatLabel","overAllWrapper","searchWrapper","encodePlaceholder","updateFloatLabelState","setPlaceHolder","spanElement","SkeletonType","ShimmerEffect","FOCUS","HIDE_LIST","CHIP","CHIP_CLOSE","CHIP_SELECTED","DELIMITER_VIEW_WRAPPER","ZERO_SIZE","CLOSEICON_CLASS","DELIMITER_WRAPPER","RTL_CLASS","CLOSE_ICON_HIDE","DISABLE_ICON","SPINNER_CLASS","dropdownIcon","iconAnimation","TOTAL_COUNT_WRAPPER","CUSTOM_WIDTH","FILTERINPUT","MultiSelect","clearIconWidth","previousFilterText","isValidKey","selectAllEventData","selectAllEventEle","resetMainList","resetFilteredData","scrollFocusStatus","keyDownStatus","enableRTL","enableGroupCheckBox","enableSelectionOrder","hideSelectedItem","closePopupOnSelect","updateHTMLAttribute","htmlAttr","updatedClassValue","refreshPlaceHolder","hiddenElement","updateReadonly","updateClearButton","overAllClear","componentWrapper","updateCssClass","updatedCssClassValues","updateOldPropCssClass","onPopupShown","allowFiltering","proxy_1","onpopstate","hidePopup","focusAtFirstListItem","updateListItems","mainList","showDropDownIcon","refreshPopup","updateAriaActiveDescendant","isFirstClick","loadTemplate","showSelectAll","mainListItems","findGroupStart","deselectHeader","refreshListItems","removeFocus","valueEle","scrollBottom","addListFocus","focusAtLastListItem","getAriaAttributes","updateListARIA","disableStatus","ensureAriaDisabled","removelastSelection","chipCollectionWrapper","customValue","removeValue","removeChipSelection","updateDelimeter","delimiterChar","makeTextBoxEmpty","refreshSelection","checkPlaceholderSize","targetInputElement","getForQuery","valuecheck","isUpdated","presentItemValue","addNonPresentItems","updateActionList","mainData","mainListCollection","remoteCustomValue","inputFocus","checkForCustomValue","tempQuery","unwireListEvents","wireListEvents","setInitialValue","selectAllAction","setDynValue","initialTextUpdate","initialValueUpdate","initialUpdate","changeOnBlur","updateValueState","beforePopupOpen","nextElementSibling","hideGroupItem","checkSelectAll","checkMaxSelection","element1","temp1","groupItemLength","listItem","searchCount","searchActiveCount","maximumSelectionLength","openClick","openOnClick","showPopup","keyUp","expandTextbox","showOverAllClear","isFiltered","remoteFilterAction","dataUpdater","filterAction","filterType","backCommand","dataChecks","customData","getNgDirective","wrapperClick","onBlurHandler","isDocClickFromCheck","addTagOnBlur","listLiElement","updateListSelection","updateDelimView","focused","removeChipFocus","refreshInputHight","floatLabelBlur","paddingRight","downIconWidth","dropIcon","setPlaceholderSize","newVal","initStatus","updateTempValue","getPagingCount","pageUpSelection","steps","previousItem","pageDownSelection","focusInHandler","showDelimWrapper","viewWrapper","floatLabelFocus","delimiterWrapper","hideDelimWrapper","mobFilter","calcPopupWidth","checkTextLength","popupKeyActions","updateAriaAttribute","focusedItem","filterInput","homeNavigation","isHome","onKeyDown","activeIndex","arrowUp","arrowDown","selectByKey","spaceKeySelection","escapeAction","keyNavigation","checkBackCommand","moveByList","focuseElem","focusFirstListItem","selectAllParent","li_1","moveBy","removeSelectedChip","selectListByKey","hideOverAllClear","selectedLI","currentOffset","nextBottom","nextOffset","boxRange","isValidLI","selectAllItem","selectAllCheckBox","selectedElem","addChipSelection","moveByTop","filterInputClassName","updateCheck","chipClick","onChipRemove","customVal","setFloatLabelType","removeAllItems","isClearAll","mainElement","removeVal","invokeCheckboxSelection","updateMainList","updateChipStatus","isSelectAll","val_1","removeIndex","hideElement","removeChip","targetEle_1","clearAllCallback","element2","addValue","addListSelection","addChip","dispatchSelect","isNotTrigger","val_2","updateListSelectEventCallback","getChip","closeElements","onMobileChipInteraction","chipElem","chipClose","multiCompiler","multiselectTemplate","encodeHtmlEntities","chip","chipContent","valueTemplate","valueCompTemp","mouseIn","mouseOut","fieldProperty","listCurrentOptions","checkboxFilter","filterParent","overAllHeight","popupHeight","setHeaderTemplate","selectAllHeight","searchBoxHeight","checkboxFilterInput","targetExitViewport","headercheck","onListMouseDown","footercheck","clearAll","selectAllItems","selectedElementID","resetValueHandler","textVal","wireEvent","onInput","pasteHandler","preventDefaultAction","initializeData","delim","hiddenElementContent","valueItem","listValue","updateWrapperText","addValidInputClass","textArr","removeListSelection","indexItem","noDataEle","isDynamicGroupItemUpdate","isReactTemplateUpdate","isAngularTemplateUpdate","removeHover","temp_1","selectedItems","selectItems","hoveredItem","mainlist","addListHover","delimChar","onMouseClick","groupValues","findGroupAttrtibutes","updateCheckBox","unChecked","groupHeader","checkBoxElement","onMouseOver","currentLi","onDocumentClick","spinnerElement","filterClear","wrapperType","wrapperData","wrapperleng","overAllContainer","l10nLocale","overflowCountTemplate","totalCountTemplate","remainContent","totalContent","raminElement","remainCompildTemp","remainSize","checkClearIconWidth","getOverflowVal","totalWidth","updateRemainTemplate","updateRemainWidth","updateRemainingText","remainTemp","totalTemp","newTemp","unWireEvent","selectionLimit","focusedElement","textboxValueUpdate","updateValue","beforeSelectArgs","preventSelectEvent","count_1","updatedataValueItems","updateHiddenElement","hiddenValue","wrapperText","isRemoveAll","onLoadSelect","updateVal","filterBarPlaceholder","dropDownIcon","reInitializePoup","msProps","animModel","mainLiLength","liLength","SEARCHBOX_WRAPPER","DELIMITER_VIEW","spellcheck","autocomplete","tabindex","checkInitialValue","isData","optionsElement","valueCol","textCol","optionsLen","checkAutoFocus","placeholderText","placeholderElement","TEXTSHAPE","CIRCLESHAPE","SQUARESHAPE","RECTANGLESHAPE","WAVEEFFECT","PULSEEFFECT","FADEEFFECT","VISIBLENONE","TimePickerBase","Skeleton","updateDimension","updateShape","updateEffect","updateVisibility","shapeCss","removeCss","shimmerEffect","dropDownListClasses","hover","backIcon","filterBarClearIcon","mobileFilter","clearIcon","clearIconHide","popupFullScreen","disableIcon","virtualList","DropDownList","skeletonCount","isListSearched","virtualListHeight","isVirtualScrolling","isPreventScrollAction","scrollPreStartIndex","isScrollActionTriggered","previousStartIndex","isMouseScrollAction","isKeyBoardAction","isUpwardScrolling","currentPageNumber","isPreventKeyAction","generatedDataObject","incrementalQueryString","incrementalEndIndex","incrementalStartIndex","incrementalPreQueryString","isTouched","virtualListInfo","sentinelInfo","offsets","viewPortInfo","selectedValueInfo","IsScrollerAtEnd","valueTempElement","isDocumentClick","isFilterFocus","initRemoteRender","isNotSearchList","isTyped","isSelected","preventAutoFill","typedString","isEscapeKey","isPreventBlur","isTabKey","actionCompleteData","prevSelectPoints","isSelectCustom","isDropDownClick","preventAltUp","isCustomFilter","isSecondClick","keyConfigure","down","up","enableVirtualization","unWireListEvents","floatLabelChange","floatElement","inputWrapper","previousEndIndex","resetFocusElement","removeSelection","previousItemData","resetSelection","getItemData","onChangeEvent","checkAndResetCache","updateInitialData","setSelection","cloneElements","setHTMLAttributes","defaultAttr","preventTabIndex","getElementByText","getElementByValue","listItems_1","liItem","initValue","virtualItemStartIndex","virtualItemEndIndex","updateValues","setHiddenValue","isFilterLayout","focusOutAction","onFocusOut","onFocus","dropDownClick","bindCommonEvent","mobileKeyActionHandler","bindClearEvent","unBindCommonEvent","searchKeyEvent","onServerIncrementalSearch","keyboardEvent","back","closePopup","setHover","updateIncrementalInfo","updateVirtualItemIndex","updateIncrementalView","UpdateSkeleton","updateIncrementalItemIndex","updatingincrementalindex","getTransformValues","selectedLiOffsetTop","filterInputObj","preventAction","preventHomeEnd","isNavigation","isEditTextBox","isTabAction","updateUpDownAction","updateHomeEndAction","focusDropDown","selectCurrentItem","selectCurrentValueOnTab","isVirtualKeyAction","value_1","filterIndex","focusEle","isSelectFocusItem","virtualIndex","nextItem","value_2","value_3","handleVirtualKeyboardActions","value_4","findLi","PageUpDownSelection","checkSelector","activeStateChange","updateSelectedItem","preventSelect","isSelection","selectEventCallback","setSelectOptions","detachChanges","checkFieldValue","activeItem","setValueTemplate","clearElement","previousSelectedLI","dropdownCompiler","dropdownTemplate","dataValue","dataText","detachChangeEvent","preItems","onFilterUp","searchLists","getFilteringSkeletonCount","currentSkeletonCount","getSkeletonCount","skeletonUpdated","GetVirtualTrackHeight","retainSkeleton","listHeight","actualCount","listItemHeight","onFilterDown","getSelectionPoints","removeFillSelection","selection","takeValue","getTakeValue","alreadySkipAdded","filteringAction","baseEventArgs","isNoData","virualElement","focusIndexItem","setSearchBox","clearIconElement","clearText","searchKeyModule","isSkeletonCountChange","isContainSkeleton","isContainVirtualList","totalSkeletonCount","tempItemCount","checkVal","setInputValue","updateActionCompleteDataValues","allowCustom","isValueInList","addNewItem","valueToFind","checkField","newElement","value_5","actionCompleteDataUpdate","updateSelectionList","findEle","highlightedItem","heightDimension","searchBox","listitems","virtualItemCount","firstItem","isEmptyList","textIndent","borderLeftWidth","popupContentElement","setSearchBoxPosition","backIconElement","clickOnBackIcon","scrollParentElements_1","destroyPopup","popupStyles","borderTop","borderTopWidth","borderBottomWidth","actionList","lastItem","paddingBottom","isInitialSelection","lastElementValue","isScrollerCHanged","currentElementValue","liCount","firstElementValue","isPageUpKeyAction","isPopupButton","setEleWidth","isFilterValue","scrollableParentElements_1","dataSourceCount","fixedHeader","currentData","preselectedIndex","setReadOnly","getListHeight","selectElement","onselect","onchange","listParent","listParentHeight","footerCompTemp","headerCompTemp","setOldText","setOldValue","checkData","isChangeValue","isChangeText","checkCustomValue","updateInputFields","checkValidLi","setSelectionData","listLength_1","listLength_2","ddlProps","newClass","invokeRenderPopup","proxy_2","renderHightSearch","isSelectVal","attrArray","POPUPWRAPPER","INPUTFOCUS","ACTIVE","OVERFLOW","NONEDIT","DatePicker","isDateIconClicked","isAltKeyPressed","invalidValueString","checkPreviousValue","maskedDateValue","isIconClicked","isDynamicValueChanged","isBlur","isKeyAction","datepickerOptions","updateInput","setAllowEdit","allowEdit","checkInvalidValue","enableMask","updateInputValue","previousElementValue","inputValueCopy","ariaAttrs","fullScreenMode","INPUTWRAPPER","isDynamic","isCalendar","disabledDates","strictMode","minMaxUpdates","tempFormat","checkStringValue","returnDate","formatDateTime","valueDate","valueString","invalid","basicISOString","bindInputEvent","inputHandler","dateIconHandler","mouseUpHandler","inputFocusHandler","inputBlurHandler","keyupHandler","keydownHandler","inputChangeHandler","resetFormHandler","keyboardModules","inputKeyActionHandle","unBindEvents","restoreValue","clearedArgs","popupUpdate","keyupEvent","preventEventBubbling","interopAdaptor","invokeMethodAsync","updatedClassValues","updateHtmlAttributeToElement","calendarKeyActionHandle","focusArguments","openOnFocus","strictModeUpdate","changeTrigger","blurArguments","calendarKeyboardModules","documentHandler","clickedView","defaultAction","targetdate","createCalendar","modelHeader","CalendarSwipeHandler","TouchStartHandler","preventArgs","touchStart","setAriaDisabled","yearHeading","h2","daySpan","monthSpan","modelCloseIcon","modelCloseHandler","modelTodayButton","selectCalendar","prevent_1","outOfRange","mobilePopupWrapper","prevent_2","closeEventCallback","inputElementCopy","ensureInputAttribute","ngTag","checkHtmlAttributes","altDownArrow","nameAttribute","checkFormat","dynamic","valueCopy","previousValCopy","renderDayCell","dateIdString","isDisabledDate","dayOfTheWeek","POPUPDIMENSION","DAY","HOVER","NAVIGATION","LISTCLASS","EDITABLE","wrapperAttributes","createdEl","timeCollections","TimeMaskPlaceholder","TimePicker","disableItemCollection","timeOptions","angularTag","openPopupEventArgs","createInputElement","setTimeAllowEdit","validateInterval","validateDisable","checkErrorState","inputEleValue","clientTimeZoneDiff","clearIconState","setMinMax","initMin","initMax","popupCreation","valueIsDisable","resetState","checkTimeFormat","checkInValue","checkAttributes","localeText","isNavigate","isTextSelected","valueWithMinutes","prevDate","updatedCssClassesValue","isNullOrEmpty","inputStyle","getCldrDateTimeFormat","cldrFormat","isInvalid","valueExp","valueExpression","setCurrentDate","getCultureTimeObject","enableElement","rippleFn","listTag","propertyList","generateList","listWrapper","addSelection","getPopupHeight","containerStyle","setPopupWidth","modelTitleSpan","timePopupCloseHandler","createDateObj","updatedClassesValue","timeStyle","cssClassNew","cssClassOld","removeErrorClass","validateState","disableTimeIcon","selectInputText","setCursorToEnd","getMeridianText","meridian","getCursorSelection","getActiveElement","setScrollTo","findScrollTop","initialTime","scrollTime","getText","cldrTimeFormat","cldrDateFormat","getCultureDateObject","dateToNumeric","getExactDateTime","validateMinMax","compareFormatChange","updatePlaceHolder","popupHandler","mouseDownHandler","curPos","cursorDetails","focusSelection","isSeparator","keyHandler","objToString","createMask","previousState","documentClickHandler","mobileTimePopupWrap","disposeServerPopup","checkValueChange","valueProcess","minVal","maxVal","dateVal","strictOperation","minValue","inputEventHandler","clearHandler","inputEvent","timeValue","raiseClearedEvent","getTextFormat","strArray","validateValue","newval","findNextElement","timeVal","selectNextItem","validLiElement","elementValue","backward","elementIndex","isCheck","isUpdate","getHoverItem","setActiveClass","timeParse","listBaseOptions","popupAlignment","timePopupElement","formatValues","derivedClass","HOUR","MINUTE","SECOND","MILLISECOND","DATETIMEPOPUPWRAPPER","POPUP","ICONANIMATION","DateTimePicker","scrollInvoked","dateFormatString","dateTimeOptions","blurHandler","isTimePopupOpen","popupObject","dateTimeWrapper","keyboardHandler","unBindInputEvents","timeIcon","timekeyConfigure","cldrDateTimeFormat","bindInputEvents","validateMinMaxRange","isDateObject","disablePopupButton","checkValidState","isValidState","isDisable","renderTimeIcon","timeHandler","dateHandler","inputKeyAction","getCldrFormat","isDatePopupOpen","listCreation","TimePopupFormat","listDetails","wireTimeListEvents","addTimeSelection","setTimeScrollPosition","openPopup","timeModal","timeKeyActionHandle","unWireTimeListEvents","modelWrapper","dateTimeCloseHandler","timeContent","setDimension","setTimeHover","removeTimeHover","nextElement","getFullDateTime","combineDateTime","setTimeActiveClass","setTimeActiveDescendant","removeTimeSelection","getTimeHoverItem","calculateStartEnd","tempStartValue","tempMin","formatCount","formattext","tempEndValue","tempMax","dateTimeCloseEventCallback","maskedDateModule","getTimeActiveElement","status_1","findNextTimeElement","dateTimeVal","listCount","timeElementValue","setTimeValue","timeKeyHandler","nextItemValue","SPINICON","SPINUP","INCREMENT","DECREMENT","INTREGEXP","NUMERIC_FOCUS","selectionTimeOut","NumericTextBox","isDynamicChange","numericOptions","isPrevFocused","decimalSeparator","intRegExp","isCalled","angularTagName","formEle","incrementTitle","decrementTitle","cultureInfo","initCultureInfo","initCultureFunc","updateHTMLAttrToElement","validateStep","updatePlaceholder","createWrapper","showSpinButton","spinBtnCreation","setElementWidth","changeValue","trimValue","decimals","roundNumber","hiddenInput","elementPrevValue","setNumber","stepValue","updatedCssClassValue","getNumericValidClassList","updateHTMLAttrToWrapper","pro","numericClassName","numericStyle","spinDown","spinUp","wireSpinBtnEvents","MAX_VALUE","formattedValue","isInteract","performAction","raiseChangeEvent","checkErrorClass","setElementValue","setSpinButton","keyDownHandler","mouseDownOnSpinner","mouseUpOnSpinner","touchMoveOnSpinner","unwireSpinBtnEvents","parsedInput","isInteraction","beforeUpdate","preventHandler","iOS","currentPos","prevPos","valArray","ignoreKeyCode","prevVal","cursorPosChanged","validateDecimalOnType","parseValue","parsedValue","localChange","updatedValue","correctRounding","floatExp","floatValue","floatStep","valueCount","stepCount","roundValue","precision","divide","updateCurrency","propVal","numberOfDecimals","getNumberOfDecimals","modifyText","serverDecimalSeparator","EXPREGEXP","result1","result2","currentChar","isAlterNumPadDecimalChar","fractionRule","mouseWheel","rawEvent","focusEventArgs","formatValue_1","blurEventArgs","focusEvent","getElementData","mouseUpClick","touchEvent","floatLabelTypeUpdate","decrement","updateSpinButton","propValue","ATTRIBUTES","RadioButton","RadioButton_1","radioGrp","getRadioGroup","angularValue","radioWrap","getSelectedValue","updateHtmlAttribute","formControlName","textLabel","rippleLabel","INPUTWARAPPER","INPUTWARAPPERSIDE","REPEATELEMENT","REPEATINTERVAL","INTERVALCLASS","DAYWRAPPER","WEEKWRAPPER","YEAREXPANDERWRAPPER","YEAREXPANDERELEMENT","MONETHEXPANDERWRAPPER","MONTHEXPANDERELEMENT","MONTHEXPANDERCHECKBOXWRAPPER","FORMLEFT","FORMRIGHT","MONTHDAYWRAPPER","MONTHEXPANNDERELEM","MONTHPOS","MONTHWEEK","ENDON","ENDONELEMENT","ENDONDATE","UNTILDATE","ENDONCOUNTWRAPPER","ENDONCOUNT","HIDEWRAPPER","RTLCLASS","PRIMARY","RECURRENCETABLE","REPEATCONTENT","DAILY","WEEKLY","MONTHLY","YEARLY","NEVER","COUNT","TEXTFIELD","VALUEFIELD","REPEAT","RULEBYDAY","RULEDAILY","RULEWEEKLY","RULEMONTHLY","RULEYEARLY","RULESUNDAY","RULEMONDAY","RULETUESDAY","RULEWEDNESDAY","RULETHURSDAY","RULEFRIDAY","RULESATURDAY","EQUAL","SEMICOLON","none","daily","weekly","monthly","yearly","valueData","neverClassList","weekClassList","monthClassList","yearClassList","dailyClassList","noEndClassList","endOnCountClassList","endOnDateClassList","RecurrenceEditor","defaultLocale","never","third","fourth","repeatEvery","onDay","weeks","years","summaryTimes","summaryOn","summaryUntil","summaryRepeat","summaryDay","summaryWeek","summaryMonth","summaryYear","monthWeek","monthPosition","monthExpander","yearExpander","repeatInterval","renderStatus","dayButtons","monthButtons","startState","endOn","showFormElement","updateForm","freshOnEndForm","updateEndOnForm","selectMonthDay","updateUntilDate","onMonthDay","applyCustomClass","renderComponent","repeatType","endTypes","selectedType","getRecurrenceRule","setRecurrenceRule","triggerChangeEvent","resetDayButton","daySelection","rotateArray","rtlClass","untilDateObj","monthWeekDays","monthWeekPos","getDayPosition","endType","renderDropdowns","getRepeatData","frequencies","resetFormValues","getEndData","getPopupWidth","renderDropDownList","dropDownData","onWeekDay","getMonthPosData","getDayData","getMonthData","setDefaultValue","formelement_1","recurreneElement_1","renderDatePickers","getFormat","formatType","dayButtonRender","btns","btns_1","radioButtonRender","numericTextboxRender","recurrenceCount","positionCollection","textValue","monthposValue","weekday_1","fullDay","labelId","getSelectedDaysData","getSelectedMonthData","RULEBYMONTHDAY","getIntervalData","RULEINTERVAL","getEndOnCount","RULECOUNT","getYearMonthRuleData","RULEBYMONTH","updateWeekButton","updateMonthUI","updateUI","getUntilData","RULEUNTIL","destroyComponents","resetFields","updateRuleUntilDate","untilDate","newUntilDate","calendarType","cldrObj1","generateSummary","getRecurrenceDates","RULEFREQ","endon","detachInputs","inputElements_1","EVENT_FIELD","REPEAT_CONTAINER_CLASS","HIDE_STYLE_CLASS","EventWindow","eventWindowTime","renderEventWindow","dialogModel","getEventWindowContent","beforeOpen","onBeforeOpen","onBeforeClose","editorHeaderTemplate","editorFooterTemplate","renderDialogButtons","addEventHandlers","preventEventSave","dialogButton","eventDelete","dialogClose","saveIcon","refreshRecurrenceEditor","createRecurrenceEditor","setRecurrenceEditor","editorTemplate","isEventData","cellClickAction","createAdaptiveHeaderElement","getDialogHeader","getDialogFooter","renderFormElements","onCellDetailsUpdate","onEventDetailsUpdate","setDialogContent","setDialogHeader","setDialogFooter","headerBackIcon","headerSaveIcon","temHeaderDiv","getEditorHeaderTemplate","temFooterDiv","getEditorFooterTemplate","allowKeyboardInteraction","isEnterKey","getSlotDuration","deleteObj","callBackPromise","trimAllDay","refreshDateTimePicker","startObj","endObj","eventCrudData","processCrudActions","resetForm","onsubmit","getDefaultEventWindowContent","formElements_1","getEditorTemplate","showDetails","parentDiv","createDivElement","titleLocationDiv","renderTextBox","startEndDateTimeDiv","renderDateTimePicker","onTimeChange","allDayTimezoneDiv","renderCheckBox","timezoneParentDiv","renderDropDown","repeatParentDiv","repeatDiv","repeatEditContainer","REPEAT_BUTTON_ICON_CLASS","loadRecurrenceEditor","resourceParentDiv","renderResourceDetails","submit","renderRecurrenceEditor","updateMinMaxDateToEditor","dateTimeDiv","getFieldName","dateTimeInput","getFieldLabel","startEndElement_1","labelValue","resourceDiv","resourceInput","resourceTemplate","allowMultiple","onMultiselectResourceChange","onDropdownResourceChange","timezoneDiv","timezoneInput","onTimezoneChange","timezoneDataSource","byGroupID","getColumnName","resObject","datasource","resourceModel","filterRes","filterDatasource","resObj","resValue","startTimezoneObj","endTimezoneObj","checkBoxDiv","checkBoxInput","checkBox","repeatStatus","textBoxDiv","textBoxInput","labelText","editorTitles","onAllDayChange","timezoneChangeStyle","onRepeatChange","renderRepeatDialog","repeatDialogObject","repeatSaveDialog","repeatCancelDialog","repeatOpenDialog","repeatRule","repeatStartDate","updateRepeatLabel","closeRepeatDialog","repeatTempRule","disableButton","RecurrenceRule","getValidationRule","subjectRule","locationRule","startTimeRule","endTimeRule","descriptionRule","formElements","getFormElements","keyNames","formElements_2","curElement","columnName","setValueToElement","setDefaultValueToElement","timezoneObj","attrName","isDropDowns","fieldSelector","control","attrEle","allDayStatus","updateDateTime","timezoneValue","untilObj","resetFormFields","localTimezoneName","formElement_1","dataCollection","getEventDataFromEditor","processEventValidation","Repeat","alertType","recurrenceValidation","isShowAlert","isResourceEventExpand","getEventIdFromForm","resourceSaveEvent","eveId_1","editedData","formElement_2","getValueFromElement","alertMessage","recEditor","activeEvent","excludedEvents","seriesEvents","tempDiff","getRecurrenceIndex","recColl","recIndex","editData","recurColl","excludedDatas","recurColl_1","nextStartTime","nextEndTime","currentStartTime","currentEndTime","lastEndTime","previousEndTime","lastResourceData","eventList","addValues","lastResource","resCol","groupId_1","eventList_1","formElements_3","detachComponents","formElements_4","isIgnore","VirtualScroll","itemSize","bufferCount","renderedLength","setItemSize","containerSize","colCount","lastResourceIndex","updateVirtualTrackHeight","resourceCount","resWrap","eventWrap","setTranslate","lastRenderIndex","renderedResCount","setTabIndex","dynamicData","triggerScrollEvent","refreshProcessedData","horizontalScrolling","firstTDIndex","upScroll","downScroll","updateContent","leftScroll","rightScroll","updateHorizontalContent","prevSetCollection","getBufferCollection","nextSetResIndex","nextSetCollection","getCollection","getResCollection","getByDateCollection","getByIdCollection","setStartEndIndex","isResourceCell","resourceRows","contentRows","colGroupEle_1","dateCol_1","dateCol_2","resColWrap","resCells","focusResCell","Render","isDataRefresh","initializeLayout","dayModule","weekModule","workWeekModule","yearModule","monthAgendaModule","timelineViewsModule","timelineMonthModule","timelineYearModule","firstView","updateLabelText","enableCompactView","WorkHours","TimeScale","QuickInfoTemplates","HeaderRows","Crud","getTable","dataManagerSuccess","dataManagerFailure","resultData","isVirtualScrollAction","dynamicEvents","refreshData","actionArgs","editParams","crudData_1","offlineArgs","onlineArgs","isBlockEvent","addEvents","addArgs","crudArgs","updateEvents","processSave","processOccurrences","processFollowSeries","processEntireSeries","saveArgs","eventData_2","cloneEvent","deleteEvents","deleteArgs","occurrenceData","isDeletedRecords","eventData_3","occurrenceArgs","occurrenceEvents","childEvent","parentException","exceptionDate","excludeDateCheck","followData","eventData_4","followArgs","followEvents","followData_1","processRecurrenceRule","seriesData","eventData_5","event_7","seriesArgs","fields_2","_loop_4","eventCollections","deletedEvents","originalParent","deleteData","eventData_6","fields_3","_loop_5","isDelete","parentEvent_1","isEdited","editedDate","eventData_7","editArgs","exceptionString","exceptionDateList","followEvent","newRecurrenceRule","getUpdatedRecurrenceRule","updatedRule","splitRule_1","ruleKey","WorkCellInteraction","onHover","navigateEle","navigateView","sameView","viewOptions","isWorkCell_1","hoverTarget","hoverArgs","FieldOptions","Field","EventSettings","Group","Resources","CONTROL","COLLAPSIBLE","EXPANDABLE","LISTITEM","LISTTEXT","PARENTITEM","LOAD","PROCESS","TEXTWRAP","INPUT","INPUTGROUP","TREEINPUT","EDITING","INTERACTION","DROPPABLE","DRAGGING","SIBLING","DROPIN","DROPNEXT","DROPOUT","NODROP","FULLROW","EXPANDED","NODECOLLAPSED","DISABLE","CHECKBOXWRAP","CHECKBOXFRAME","IMAGE","ITEM_ANIMATION_ACTIVE","PREVENTSELECT","treeAriaAttr","treeRole","FieldsSettings","ActionSettings","NodeAnimationSettings","TreeView","isRefreshed","preventExpand","checkedElement","disableNode","validArr","validNodes","expandChildren","isFieldChange","changeDataSource","hasTemplate","isFirstRender","isNodeDropped","isRightClick","mouseDownStatus","TreeView_1","checkActionNodes","parentNodeCheck","dragStartAction","f2","ctrlDown","ctrlUp","ctrlEnter","ctrlHome","ctrlEnd","ctrlA","shiftDown","shiftUp","shiftEnter","shiftHome","shiftEnd","csDown","csUp","csEnter","csHome","csEnd","shiftSpace","ctrlSpace","listBaseOption","beforeNodeCreate","fullRowNavigable","updateListProp","aniObj","treeList","isLoaded","isInitalExpand","setTouchClass","selectedNodes","checkedNodes","expandedNodes","setDataBinding","setDisabledMode","setExpandOnType","wireEditingEvents","setDragAndDrop","allowDragAndDrop","setFullRow","fullRowSelect","setTextWrap","nodeTemplateFn","templateComplier","nodeTemplate","iconModel","rippleIconFn","isEnabled","setMultiSelect","isOffline","treeData","isNumberTypeId","getType","setRootData","finalize","rootData","parentID","getDataType","groupedData","getGroupedData","rootItems","getChildNodes","isSorted","getSortedData","loadOnDemand","renderChildNodes","finalizeNode","parentCheckData","updateCheckedStateFromDS","autoCheck","updateParentCheckState","childData","childId","mapper_1","checkState","getCheckedNodeDetails","checkIndeterminateState","checkedId","checkedData","fieldId","childItems","updateChildCheckState","checkNodes","preElement","childCheckedElement","nodeId","nodeCheck","checkedParent","checkedChild","subChildItems","checkboxEle","enableRipple","labelSpan","disableHtmlEncode","createCheckBox","touchClass","addCheck","frameMouseHandler","createFullRow","allowMultiSelection","addActionClass","dataId","renderNodeTemplate","nodeData","selectable","actionValue","iNodes","sNodes","selectNode","cNodes","disableExpandAttr","eNodes","updateList","updateCheckedProp","ensureIndeterminate","ensureParentCheckState","ensureChildCheckState","indeterminateNodes","checkBoxEle","parentUL","currentParent","childElement","checkBoxes","parentCheck","childCheck","checkedState","currentLoadData","isNodeChecked","doCheckBoxAction","doCheck","updateFieldChecked","liEle","setValidCheckedNode","dynamicCheckState","updateField","validateCheckNode","checkbox","currLi","getNodeData","updateIndeterminate","updateChildIndeterminate","indeterminateData","getTreeData","subId","childElementCheck","innerChild","isPrevent","isAdd","nodeCheckAction","getCheckEvent","ariaState","removeCheck","ensureStateChange","firstUl","firstNode","updateIdAttr","allowTextWrap","updateWrap","hasPid","doExpandAction","ulEle","liList","calculateWrap","eUids","expandGivenNodes","eNode","expandAction","afterFinalized","expandCallback","eUid","doSelectionAction","sUids","sNode","selectGivenNodes","preventContextMenu","rippleIcons","setFocusElement","checkWrapper","checkElement","triggerClickEvent","collapseNode","toggleSelect","nodeCheckedEvent","expandNode","start_1","end_1","ul_1","liEle_1","activeElement_1","animateHeight","expandedNode","addExpand","expandArgs","getExpandEvent","colArgs","nodeCollapseAction","collapsedNode","removeExpand","toRemove","parentLi","expandChild","eicon","parents","mapper_2","getChildFields","loadChild","setSelectionForChildNodes","ensureCheckNode","disableTreeNodes","renderSubChild","getNodeObject","doDisableAction","getFields","nodeLevel","dataLevel","getChildMapper","parentId","isRoot","getChildGroup","objlen","childIndex","cIcons","curLi","multiSelect","unselectNode","getSelectEvent","nodeSelectAction","removeSelectAll","startNode","currNode","addSelect","nodeUnselectAction","removeSelect","focusedNode","getFocusedNode","selectedLI_1","expandOnType","expandOn","expandHandler","expandCollapseAction","nodeExpandAction","liEles","icon_1","inpEle","oldText","checkNode","openNode","shiftKeySelect","navigateNode","navigateRootNode","createTextbox","navigateToFocus","parentPos","isVisibleInViewport","txtWrap","isTowards","nextNode","getNextNode","getPrevNode","checkWrap","nodeCheckingAction","allCheckNode","parentIndex","getChildItems","childStateChange","childIsCheck","newCheck","validateCheck","hierChildId","childId_1","toBeOpened","focusNextNode","setFocus","rootNode","getRootNode","getEndNode","fNode","prevNode","endNode","preNode","hoveredNode","fromDS","pNode","pid","destroyTemplate","reRenderNodes","editingHandler","oldInpEle","updateOldText","getEditEvent","style_1","innerHtml","wireInputEvents","editFields","inputFocusOut","newText","txtEle","crudOperation","appendNewText","isInput","updateText","getNode","getChildNodeObject","toBind","initializeDrag","destroyDrag","virtualEle","dragRoot","dragWrap","dragLi","isSameNode","cloneEle","DRAGITEM","nLen","cNode","getDragEvent","draggedNode","dragCancelAction","dragAction","removeVirtualEle","dropTarget","dropRoot","preventTargetExpand","dragParent","draggedParentNode","dropObj","dropAction","dropWrap","dropLi","isDescendant","templateTarget","appendIndicator","renderVirtualEle","dropIndicator","virEle","dragInstance","liArray","i_2","appendNode","i_3","dropAsChildNode","dropAsSiblingNode","dropUl","dragParentUl","dragParentLi","moveData","updateElement","updateAriaLevel","updateInstance","dropParentUl","expandParent","childLi","dropParentLi","removedData","updateChildField","refId","getDataPos","currPid","removeChildNodes","addChildData","dragIcon","updateChildAriaLevel","sibEle","dragNode","dropData","draggedNodeData","newParent","dragLiParent","targetParent","indexValue","dropTar","clonedNode","droppedNode","droppedNodeData","dropIndex","dropLevel","addFullRow","toAdd","rowDiv","addMultiSelect","liEles_1","liEles_2","collapseByLevel","excludeHiddenNodes","getVisibleNodes","collapseAllNodes","expandByLevel","expandAllNodes","eIcons","vNodes","removeNode","removeData","updateSelectedNodes","updateExpandedNodes","newId","currId","doGivenAction","toExpand","addGivenNodes","isRemote","dropEle","updateMapper","refNode","dropIcon1","navigateUrl","updated","validID","checkValidId","doEnableAction","strNodes","filterNestedChild","updatePersistProp","removeField","sleNodes","slelen","enodes","nodelen","cnodes","getMapperProp","touchEditObj","wireClickEvent","proxy_3","touchClickObj","wireExpandOnEvent","proxy_4","touchExpandObj","secondTap","firstTap","setCheckedNodes","uncheckAll","setIndeterminate","checkAll","setChildCheckState","isRefreshChild","childValue","updateChildPosition","currID","found","dynamicState","newNode","crud","matchedArr","nodesID","deleteSuccess","dmFailure","editSucess","addSuccess","updatePreviousText","getHierarchicalParentId","parentsID","collapseAll","onLoaded","addNodes","beginEdit","disableNodes","enableNodes","ensureVisible","parentsId","expandAll","getAllCheckedNodes","getDisabledNodes","moveNodes","sourceNodes","refreshNode","newNodeData","parentData","newliEle","newTextEle","newIcon","fullEle","removeNodes","updateNode","ResourceBase","leftPixel","renderResourceHeaderIndent","resColTd","resColDiv","headerIndentTemplate","ClassName","expandedField","resDiv","generateTreeData","countCalculation","setExpandedResources","setRenderedResources","isExpanded","rIndex","resRows","iconDiv","setMargin","wholeCollection","totalCount","eventElements_1","updateVirtualContent","refreshEvents","rowCollection","workCellCollection","headerRowCollection","clickedRes","clonedCollection","trElem","sIndex","virtualTrack","resTable","resourceWrapper","renderResourceHeaderText","menuClick","popupOverlay","treeWrapper","resourceTree","treeViewObj","nodeClicked","resourceClick","created","resourceTreeCreated","treePopup","isTimeLine","treeCollection","resTreeColl","treeHandler","treeLevel","levelId","treeArgs","resourceName","resourceChild","tree","resourceTreeLevel","headerCollection","levelIcon","headerWrapper","headerCollection_1","treeNodes","selectResourceByIndex","triggerEvents","renderModule","bindResourcesData","isSetModel","resourceObj","getResourceModel","refreshLayout","cssClassField","renderElements","setResourceCollection","requiredResources","colorIndex","requiredResources_1","resourceColorField","innerDates","resTreeGroup","lastColumnDates","prevResource","prevResourceData","prevOrder","resTree","resWorkDays","dateSlots","generateCustomHours","resCssClass","resourceLevelIndex","generateHeaderLevels","dateSlots_1","dateSlot","headerDates","headerLevels","currentLevelChilds_1","currentLevelChild","nextLevelChilds","nextLevelChilds_1","nextLevelChild","lastLevelResource","dateHeaderLevels","datesColumn","headerDate","this_3","currentDateLevels","resTd_1","filterDates","filteredResource","existedResource","filteredTd","headerDates_1","dateColSpan","_h","headerDates_2","resGroup","_k","_l","colorFieldIndex","resourceDates","groupEditIndex","groupEditIndex_1","length_4","addResource","_loop_6","addObj","removeResource","_loop_7","removeObj","resourceExpand","resourceScroll","offsetTarget","treeViewTemplates","resToolBarEle","ToolbarItem","Schedule","cssClass_1","cls_1","initializeDataModule","renderTableContainer","getActiveViewOptions","initializeResources","templates","destroyEditorWindow","isLayoutOnly","initializeView","destroyHeaderModule","destroyPopups","initializePopups","getViewIndex","setViewOptions","isModuleLoad","selectedView","prevIndex","isOptions","fieldViewName","cellHeaderTemplateName","cellHeaderTemplate","dayHeaderTemplateName","dayHeaderTemplate","monthHeaderTemplateName","monthHeaderTemplate","headerIndentTemplateName","scheduleOptions","internalTimeFormat","viewsData","setEditorTitles","initializeTemplates","cellHeaderTemplateFn","templateParser","dayHeaderTemplateFn","monthHeaderTemplateFn","cellTemplateFn","dateHeaderTemplateFn","dateRangeTemplateFn","majorSlotTemplateFn","minorSlotTemplateFn","appointmentTemplateFn","resourceHeaderTemplateFn","headerIndentTemplateFn","headerTooltipTemplateFn","eventTooltipTemplateFn","editorTemplateFn","editorHeaderTemplateFn","editorFooterTemplateFn","quickInfoTemplatesHeaderFn","quickInfoTemplatesContentFn","quickInfoTemplatesFooterFn","setCldrTimeFormat","getDateTime","setCalendarMode","previousView","navigationArgs","animateLayout","monthAgendaDate","getDefaultLocale","workWeek","agenda","weekAgenda","workWeekAgenda","monthAgenda","emptyContainer","allDay","more","noTitle","deleteMultipleEvent","deleteSeries","edit","editSeries","editEvent","addTitle","moreDetails","editContent","deleteContent","deleteMultipleContent","newEvent","recurrence","wrongPattern","seriesChangeAlert","createError","sameDayAlert","occurenceAlert","editRecurrence","recurringEvent","repeats","startEndError","invalidDateError","blockAlert","yes","timelineDay","timelineWeek","timelineWorkWeek","timelineMonth","timelineYear","editFollowingEvent","deleteTitle","editTitle","beginFrom","endAt","expandAllDaySection","collapseAllDaySection","searchTimezone","noRecords","onScheduleResize","isPreventScroll","cells_1","isAllDayCell","dateInMS","getTargetElement","getCellHeaderTemplate","getDayHeaderTemplate","getMonthHeaderTemplate","getHeaderIndentTemplate","eventClone","startEndTime","startEndDate","zoomPixelRatio","recordLocation","startDateText","endDateText","announcementString","viewBoundaries","weekNumberDate","weekFirstDate","weekLastDate","weekMidDate","isRefresh","isLayout","isDataManager","setRtlClass","extendedPropertyChange","propertyChangeAction","allDayRowScrollUpdate","onEventSettingsPropertyChanged","onGroupSettingsPropertyChanged","setWorkHours","getWorkHourCells","resetWorkHours","viewStartHour","viewEndHour","tempStartIndex","tempEndIndex","tds","tdCol","firstTd","lastTd","endDateFromColSpan","getResourceCollections","setResourceCollections","resourceCol","changeCurrentView","getCurrentViewIndex","getResourcesByIndex","expandResource","collapseResource","scrollToResource","groupName","exportToICalendar","iCalendarExportModule","initializeCalendarExport","importICalendar","fileContent","iCalendarImportModule","initializeCalendarImport","generateEventOccurrences","exportToExcel","excelExportOptions","excelExportModule","initializeExcelExport","print","printOptions","printModule","includeOccurrences","getBlockEvents","eventID","getCurrentViewEvents","isRemoteRefresh","refreshTemplates","isSlotAvailable","closeEditor","openQuickInfoPopup","selectEvent","occurence","closeQuickInfoPopup","closeTooltip","modules_1","ScheduleComponent","statelessTemplateProps","immediateRender","baseClass","ResourceDirective","ResourcesDirective","scheduleObj","_useLoaderData","providers","appointmentData","userTypeId","locationData","locations","patientName","employeeData","colors","groupColorMap","employee","GroupId","acc","Color","mapColorsToEmployeesByGroupId","fieldsData","saveAppointment","updateAppointment","getEmployeeDesignation","Designation","viewMode","readOnlyMode","Subject","StartTime","EndTime","Description","injectableServices","updatedEvent","deletedAppointment","locationId","bugsnagErr","isTokenExpired","authStore","_signup","userEmail","userPassword","userPhone","userToken","_login","_forgotPassword","_resetPassword","emailToken","signout","AuthProvider","routeDataLoadingWrapper","loadRouteData","apiFunction","RequireAuth","ToastContainer","ErrorPage","_loader","_loader2","UNSAFE_detectErrorBoundary","LoadingProvider"],"sourceRoot":""}